Zona Arcade. Construye, Restaura y Decora tu Máquina Arcade y Pinball.

Tutorial: Cómo eliminar las pantallas de advertencia al entrar en un juego en Mame

« Older   Newer »
  Share  
view post Posted on 18/9/2007, 00:03     +1   -1
Avatar

Restless in Peace

Group:
Administrator
Posts:
42,780
Location:
Alcobendas (Madrid)

Status:


Tutorial: Como eliminar las pantallas de advertencia al entrar en un juego en Mame

- Introducción

El equipo Mame especifica en su licencia:

CODE
* Do not remove the startup screen that contains information about why
certain non-working games don't work. This only serves to generate a
bunch of useless email traffic to the developers asking why the games
don't work.


Mi deseo es que hagáis uso personal de vuestra propia versión compilada del emulador, y espero y deseo que el procedimiento explicado a continuación os resulte muy facil para que lo hagáis vosotros mismos en sucesivas versiones de Mame.


- Elmininar las molestas pantallas de Mame con avisos en los juegos que no son emulados al 100%

AVISO: Todos los links incluídos están sacados de las páginas oficiales de Mame, Mame32 y MamePlus y hacen referencia a la compilación de la versión 0.119. Otras versiones pueden diferir.


Compilar tu propia versión del Mame para evitar las famosas ventanitas del "Disclaimer" (descargo de responsabilidades) y de los "Warnings" (avisos de los distintos errores de emulación en los juegos que no estén 100% emulados) se puede realizar de dos formas: FÁCIL o BIEN.

Lo primero y más esencial es saber compilar tu propia versión del Mame, aunque ni siquiera hagas cambios en el código. Para ello necesitas el código fuente del Mame, así como el compilador necesario, en éste caso el MinGW y unos extras que este compilador necesita, que son unas librerías específicas para el uso de las DirectX 8


- Descomprime el código fuente en donde te de la gana, por ejemplo C:\mame_src\

- Descomprime el MinGW en donde te de la gana, por ejemplo C:\MinGW\

- Descomprime las librerías dx80_mgw en la misma carpeta que el MinGw (en este caso C:\MinGW\)

- En la carpeta en la que descomprimiste el código fuente del Mame, crea un archivo por lotes (crea un archivo de texto y luego cambia la extensión de .txt a .bat) con las siguientes líneas:

CODE
set path=C:\MinGW\bin;%­PATH%
mingw32-make
pause


El path (ruta) debe incluir la dirección donde descomprimisteis el "MinGW" (en este caso del ejemplo C:\MingW\) con su subdirectorio "\bin", que es en el que se encuentran los ejecutables.

La línea de pause, en principio, no hace falta, pero sirve para que no se cierre automáticamente el .bat al acabar, por lo que si la compilación nos arroja algún error, lo podremos leer y arreglar.

Doble click en el archivo .bat y se pondrá a compilar el Mame durante unos 20 minutos.

Si en lugar de compilar el Mame de línea de comandos, queréis compilar el Mame32, debéis bajar su código fuente, y tras descomprimirlo donde queráis, deberéis mover la carpeta "\winui adentro de la carpeta \src\osd\" del código fuente de Mame, quedando en este ejemplo: "C:\mame_src\src\osd\winui".

También tenéis que mover el "mame32.mak" a la raíz de dónde hayáis descomprimido el código fuente de Mame (donde se debe encontrar un archivo llamado "makefile"), y por último el archivo por lotes necesario para compilar este port difiere un poco del de Mame, quedando:

CODE
set path=C:\MinGW\bin;%­PATH%
mingw32-make -f mame32.mak
pause


Si en lugar de compilar el Mame de línea de comandos, queréis compilar el Mame32, debeis bajar su "código fuente", amén de unos cuantos extras que no precisan el Mame ni el Mame32, como sería el "módulo G++" que deberéis descomprimir en la misma carpeta que el "MinGw" y que tendréis que renombrar el archivo "g++-sjlj.exe", que se encontrará en la carpeta "\bin a g++.exe".

Otros "archivos extras" que también deberéis descomprimir en la misma carpeta del "MinGw". El archivo por lotes, en este caso sería igual que el del Mame de línea de comandos.

Si al compilar el MamePlus os da un error buscando algún archivo "png" en la dirección donde descompimisteis el código fuente de mame "\src\emu\font", éstos están: "aquí", y, obviamente, los tendréis que descomprimir en esa dirección ("C:\mame_src\src\emu\font\").


Todo lo anterior parece muy lioso, pero en realidad sólo se trata de bajar unos archivos y descomprimirlos.


Ahora vamos al lío y explicaré la forma fácil de evitar las ventanas del "Disclaimer" y de los "Warnings". Simplemente nos basta con buscar y eliminar la siguiente línea del archivo "src\emu\ui.c"

CODE
if (!first_time || (str > 0 && str < 60*5) || Machine->gamedrv == &driver_empty)


Ya que esta línea es una condición que se activa si no es la primera vez que se ejecuta un juego o si se usa el parámetro "seconds_to_run" con un valor menor que 5 minutos (60 segundos * 5), y nosotros queremos que la siguiente línea se ejecute siempre, y no sólo cuando dicta la condición. Ésta siguiente línea que hace que no se muestren los mensajes es:

CODE
show_gameinfo = show_warnings = show_disclaimer = FALSE;


La ventaja de esta forma fácil de evitar las ventanas es que es muy rápida, sólo borrar una línea, pero por contra nunca se mostrará ningún mensaje. Vamos, que no podremos escoger si queremos que los muestre o no, que sería la forma correcta.

La forma correcta por tanto sería añadiendo unos checkboxes que nos permita escoger si queremos que se muestren o no esas pantallas, al igual que se hace con la opción de "Skip game info" (en Options -> Default Game Options... -> Miscellaneous).

image


- Añadiendo "Checkboxes" u opciones que nos permitan activar o desactivar estas pantallas de aviso en Mame ( "Disclaimer"y "Warnings")

Como ya había comentado con anterioridad, evitar estas dichosas pantallas se poduede realizar de una forma fácil o correcta. La manera sencilla ya está explicada, ahora vamos a la correcta, que quedará mucho más elegante e integrada en el interface gráfico del Mame32 o MamePlus.

En este caso voy a explicar las modificaciones para el MamePlus, y aunque en el Mame32 los pasos son muy similares, alguno puede variar un poco. Vamos a retocar exactamente 8 archivos, a los que básicamente iremos añadiendo unas líneas muy sencillas.

- Comenzaremos con el "src\emu\emuopts.c". Buscaremos lo siguiente:

CODE
{ "cheat;c",                     "0",         OPTION_BOOLEAN,    "enable cheat subsystem" },
       { "skip_gameinfo",               "0",         OPTION_BOOLEAN,    "skip displaying the information screen at startup" },


y lo dejamos así:

CODE
{ "cheat;c",                     "0",         OPTION_BOOLEAN,    "enable cheat subsystem" },
       { "skip_disclaimer",             "1",         OPTION_BOOLEAN,    "skip displaying the disclaimer screen at startup" },
       { "skip_warnings",               "1",         OPTION_BOOLEAN,    "skip displaying the warnings screen at startup" },
       { "skip_gameinfo",               "1",         OPTION_BOOLEAN,    "skip displaying the information screen at startup" },


Cambiamos el "0" por el "1" en "skip_gameinfo", así como los de las líneas recién creadas. Es para que por defecto estas opciones estén activas.


- Vamos con la opción: "src\emu\emuopts.h". Buscaremos esto:

CODE
#define OPTION_CHEAT                        "cheat"
#define OPTION_SKIP_GAMEINFO                "skip_gameinfo"


y lo dejamos así:

CODE
#define OPTION_CHEAT                        "cheat"
#define OPTION_SKIP_DISCLAIMER                "skip_disclaimer"
#define OPTION_SKIP_WARNINGS                "skip_warnings"
#define OPTION_SKIP_GAMEINFO                "skip_gameinfo"


Esto sirve para definir las variables que usamos en el anterior archivo


- Opción: "src\emu\ui.c".

CODE
int str = options_get_int(mame_options(), OPTION_SECONDS_TO_RUN);
       int show_gameinfo = !options_get_bool(mame_options(), OPTION_SKIP_GAMEINFO);
       int show_warnings = TRUE;
       int state;

       /* disable everything if we are using -str */


Transformaremos esta expresión anterior dejándola así:

CODE
int str = options_get_int(mame_options(), OPTION_SECONDS_TO_RUN);
       int show_gameinfo = !options_get_bool(mame_options(), OPTION_SKIP_GAMEINFO);
       int show_warnings = !options_get_bool(mame_options(), OPTION_SKIP_WARNINGS);
       int skip_disclaimer = options_get_bool(mame_options(), OPTION_SKIP_DISCLAIMER);
       int state;

       if (skip_disclaimer)
               show_disclaimer = FALSE;

       /* disable everything if we are using -str */



Ya hemos logrado que lo mismo que hacía el programa si se usaba el "skip_gameinfo", lo haga ahora con las recién creadas "skip_disclaimer" y "skip_warnings".

Con estos tres archivos, ya estaría correcta la versión del Mame de línea de comandos, y por tanto, éstos cambios son iguales para cualquier port del Mame. Eso sí, como el Mame de línea de comandos no tiene interfaz gráfico, para mostrar u ocultar los mensajes, tendríamos que hacerlo por medio del mame.ini, que se crea de la siguiente forma: mame -createconfig

Tras lo cual editaríamos el archivo "mame.ini" buscando la opción "skip_lo_que_queramos" para ponerla a "0" (mostraría esa ventana) o a "1" (no la mostraría).


Seguimos con los archivos a cambiar en el MamePlus:

- Opción: "src\osd\ui\opdef.h". Buscaremos:

CODE
DEFINE_OPT(bool,                 cheat)
       DEFINE_OPT(bool,                 skip_gameinfo)


Y lo dejamos así:

CODE
DEFINE_OPT(bool,                 cheat)
       DEFINE_OPT(bool,                 skip_disclaimer)
       DEFINE_OPT(bool,                 skip_warnings)
       DEFINE_OPT(bool,                 skip_gameinfo)


Definición necesaria de variables vinculadas con los checkboxes que crearemos.


- Opción: "src\osd\ui\winuiopt.h"

CODE
BOOL        cheat;
       BOOL        skip_gameinfo;


Y lo dejamos así:

CODE
BOOL        cheat;
       BOOL        skip_disclaimer;
       BOOL        skip_warnings;
       BOOL        skip_gameinfo;


Más definiciones de variables.


- Opción: "src\osd\ui\properties.c". Buscaremos:

CODE
DataMapAdd(IDC_HIGH_PRIORITYTXT,DM_NONE,CT_NONE,    NULL,                      DM_INT,  &pGameOpts->priority,      0, 0, 0);
       DataMapAdd(IDC_SKIP_GAME_INFO,DM_BOOL,CT_BUTTON,    &pGameOpts->skip_gameinfo, DM_BOOL, &pGameOpts->skip_gameinfo, 0, 0, 0);


Y lo dejamos así:

CODE
DataMapAdd(IDC_HIGH_PRIORITYTXT,DM_NONE,CT_NONE,    NULL,                      DM_INT,  &pGameOpts->priority,      0, 0, 0);
       DataMapAdd(IDC_SKIP_DISCLAIMER,DM_BOOL,CT_BUTTON,    &pGameOpts->skip_disclaimer, DM_BOOL, &pGameOpts->skip_disclaimer, 0, 0, 0);
       DataMapAdd(IDC_SKIP_WARNINGS,DM_BOOL,CT_BUTTON,    &pGameOpts->skip_warnings, DM_BOOL, &pGameOpts->skip_warnings, 0, 0, 0);
       DataMapAdd(IDC_SKIP_GAME_INFO,DM_BOOL,CT_BUTTON,    &pGameOpts->skip_gameinfo, DM_BOOL, &pGameOpts->skip_gameinfo, 0, 0, 0);


Esta es la parte del código que vincula el hecho de marcar o desmarcar uno de los checkboxes que crearemos para evitar las ventanas con la variable dónde se guarda este dato.


- Opción: "src\osd\ui\resource.h". Buscaremos:

CODE
#define IDC_JSATTEXT                    1252

#define ID_CONTEXT_SHOW_FOLDER_START    39000


Y lo dejamos así:

CODE
#define IDC_JSATTEXT                    1252

#define IDC_SKIP_DISCLAIMER             1260
#define IDC_SKIP_WARNINGS               1261

#define ID_CONTEXT_SHOW_FOLDER_START    39000


Aquí están definidos todos los recursos (iconos, botones, checkboxes, diálogos...) que se muestran en el programa, y están asociados a un número propio: cada objeto que insertemos en un cuadro de dialogo debe estar vinculado a un único número, y evidentemente no puede haber números repetidos; así que debemos estar seguros al darle un valor a nuestros identificadores de controles (IDC_SKIP_DISCLAIMER e IDC_SKIP_WARNINGS) que éste valor no esté siendo usado por otro identificador. Por ejemplo, no podemos asignar a ninguno de ellos el valor 1177 porque éste está asignado a la checkbox de "Skip game info"


- Opción: "src\osd\ui\mame32.rc"

CODE
IDD_PROP_MISC DIALOGEX 0, 0, 260, 245
STYLE WS_CHILD | WS_CAPTION
CAPTION "Miscellaneous"
FONT 8, "MS Sans Serif"
BEGIN
   ICON            IDI_MAME32_ICON,IDC_STATIC,20,10,20,20
   LTEXT           "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,190,25,
                   SS_NOPREFIX
   CONTROL         "",IDC_STATIC,"Static",SS_ETCHEDHORZ,10,38,240,1
   CONTROL         "Enable game cheats",IDC_CHEAT,"Button",BS_AUTOCHECKBOX |
                   WS_TABSTOP,10,45,135,10,0,HIDC_CHEAT
   CONTROL         "Error log (for developers)",IDC_LOG,"Button",
                   BS_AUTOCHECKBOX | WS_TABSTOP,10,59,135,10,0,HIDC_LOG
   CONTROL         "Sleep when possible",IDC_SLEEP,"Button",BS_AUTOCHECKBOX |
                   WS_TABSTOP,10,73,135,10,0,HIDC_SLEEP
   CONTROL         "Skip game info",IDC_SKIP_GAME_INFO,"Button",
                   BS_AUTOCHECKBOX | WS_TABSTOP,10,87,135,10,0,HIDC_SKIP_GAME_INFO
   CONTROL         "Auto restore and save (only if available)",IDC_ENABLE_AUTOSAVE,"Button",
                   BS_AUTOCHECKBOX | WS_TABSTOP,10,101,135,10,0,HIDC_ENABLE_AUTOSAVE
   CONTROL         "Enable multi-threading",IDC_MULTITHREAD_RENDERING,
                   "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,115,135,10,0,
                   HIDC_MULTITHREAD_RENDERING
   CONTROL         "Quit game with confirmation",IDC_CONFIRM_QUIT,"Button",
                   BS_AUTOCHECKBOX | WS_TABSTOP,10,129,135,10
#ifdef AUTO_PAUSE_PLAYBACK
   CONTROL         "Auto pause when playback is finished",IDC_AUTO_PAUSE_PLAYBACK,"Button",
                   BS_AUTOCHECKBOX | WS_TABSTOP,10,143,135,10
#endif /* AUTO_PAUSE_PLAYBACK */
#ifdef TRANS_UI
   GROUPBOX        "",IDC_STATIC,4,157,140,31,WS_DISABLED
   CONTROL         "Transparent in-game UI",IDC_TRANSUI,"Button",
                   BS_AUTOCHECKBOX | WS_TABSTOP,10,157,120,10
   CONTROL         "IntensitySlider",IDC_TRANSPARENCY,"msctls_trackbar32",
                   TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,172,105,10
   CTEXT           "200",IDC_TRANSPARENCYDISP,120,172,20,10,NOT WS_GROUP
#endif /* TRANS_UI */
   GROUPBOX        "Thread priority",IDC_HIGH_PRIORITY_TEXT,4,190,140,30
   CONTROL         "Slider1",IDC_HIGH_PRIORITY,"msctls_trackbar32",TBS_BOTH |
                   TBS_NOTICKS | WS_TABSTOP,9,204,105,10,0,HIDC_HIGH_PRIORITY
   CTEXT           "-15",IDC_HIGH_PRIORITYTXT,120,204,20,10,NOT WS_GROUP
   GROUPBOX        "Artwork options",IDC_STATIC,147,45,108,74
   CONTROL         "Backdrops",IDC_BACKDROPS,"Button",BS_AUTOCHECKBOX |
                   WS_TABSTOP,153,59,100,10,0,HIDC_BACKDROPS
   CONTROL         "Bezels",IDC_BEZELS,"Button",BS_AUTOCHECKBOX |
                   WS_TABSTOP,153,73,100,10,0,HIDC_BEZELS
   CONTROL         "Overlays",IDC_OVERLAYS,"Button",BS_AUTOCHECKBOX |
                   WS_TABSTOP,153,87,100,10,0,HIDC_OVERLAYS
   CONTROL         "Crop artwork",IDC_ARTWORK_CROP,"Button",BS_AUTOCHECKBOX |
                   WS_TABSTOP,153,101,100,10,0,HIDC_ARTWORK_CROP
#if 1 // ks hcmame s switch m68k core
   GROUPBOX        "M68000 CPU Core",IDC_M68K_CORETEXT,147,122,108,32
   COMBOBOX        IDC_M68K_CORE,153,133,96,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
#endif // ks hcmame s switch m68k core
   GROUPBOX        "BIOS",IDC_BIOSTEXT,147,157,108,31
   COMBOBOX        IDC_BIOS,153,168,96,120,CBS_DROPDOWNLIST | WS_VSCROLL |
                   WS_TABSTOP,0,HIDC_BIOS
   PUSHBUTTON      "Reset",IDC_PROP_RESET,4,225,117,14,0,0,HIDC_PROP_RESET
   PUSHBUTTON      "Restore Default Settings",IDC_USE_DEFAULT,138,225,117,14,
                   0,0,HIDC_USE_DEFAULT
END


y lo dejamos así:

CODE
IDD_PROP_MISC DIALOGEX 0, 0, 260, 245
STYLE WS_CHILD | WS_CAPTION
CAPTION "Miscellaneous"
FONT 8, "MS Sans Serif"
BEGIN
   ICON            IDI_MAME32_ICON,IDC_STATIC,20,10,20,20
   LTEXT           "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,190,25,
                   SS_NOPREFIX
   CONTROL         "",IDC_STATIC,"Static",SS_ETCHEDHORZ,10,38,240,1
   CONTROL         "Enable game cheats",IDC_CHEAT,"Button",BS_AUTOCHECKBOX |
                   WS_TABSTOP,10,45,135,10,0,HIDC_CHEAT
   CONTROL         "Error log (for developers)",IDC_LOG,"Button",
                   BS_AUTOCHECKBOX | WS_TABSTOP,10,58,135,10,0,HIDC_LOG
   CONTROL         "Sleep when possible",IDC_SLEEP,"Button",BS_AUTOCHECKBOX |
                   WS_TABSTOP,10,71,135,10,0,HIDC_SLEEP
   CONTROL         "Skip disclaimer",IDC_SKIP_DISCLAIMER,"Button",
                   BS_AUTOCHECKBOX | WS_TABSTOP,10,84,135,10
   CONTROL         "Skip warnings",IDC_SKIP_WARNINGS,"Button",
                   BS_AUTOCHECKBOX | WS_TABSTOP,10,97,135,10
   CONTROL         "Skip game info",IDC_SKIP_GAME_INFO,"Button",
                   BS_AUTOCHECKBOX | WS_TABSTOP,10,110,135,10,0,HIDC_SKIP_GAME_INFO
   CONTROL         "Auto restore and save (only if available)",IDC_ENABLE_AUTOSAVE,"Button",
                   BS_AUTOCHECKBOX | WS_TABSTOP,10,123,135,10,0,HIDC_ENABLE_AUTOSAVE
   CONTROL         "Enable multi-threading",IDC_MULTITHREAD_RENDERING,
                   "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,136,135,10,0,
                   HIDC_MULTITHREAD_RENDERING
   CONTROL         "Quit game with confirmation",IDC_CONFIRM_QUIT,"Button",
                   BS_AUTOCHECKBOX | WS_TABSTOP,10,149,135,10
#ifdef AUTO_PAUSE_PLAYBACK
   CONTROL         "Auto pause when playback is finished",IDC_AUTO_PAUSE_PLAYBACK,"Button",
                   BS_AUTOCHECKBOX | WS_TABSTOP,10,162,135,10
#endif /* AUTO_PAUSE_PLAYBACK */
#ifdef TRANS_UI
   GROUPBOX        "",IDC_STATIC,4,175,140,28,WS_DISABLED
   CONTROL         "Transparent in-game UI",IDC_TRANSUI,"Button",
                   BS_AUTOCHECKBOX | WS_TABSTOP,10,175,120,10
   CONTROL         "IntensitySlider",IDC_TRANSPARENCY,"msctls_trackbar32",
                   TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,189,105,10
   CTEXT           "200",IDC_TRANSPARENCYDISP,120,189,20,10,NOT WS_GROUP
#endif /* TRANS_UI */
   GROUPBOX        "Artwork options",IDC_STATIC,147,45,108,68
   CONTROL         "Backdrops",IDC_BACKDROPS,"Button",BS_AUTOCHECKBOX |
                   WS_TABSTOP,153,58,100,10,0,HIDC_BACKDROPS
   CONTROL         "Bezels",IDC_BEZELS,"Button",BS_AUTOCHECKBOX |
                   WS_TABSTOP,153,71,100,10,0,HIDC_BEZELS
   CONTROL         "Overlays",IDC_OVERLAYS,"Button",BS_AUTOCHECKBOX |
                   WS_TABSTOP,153,84,100,10,0,HIDC_OVERLAYS
   CONTROL         "Crop artwork",IDC_ARTWORK_CROP,"Button",BS_AUTOCHECKBOX |
                   WS_TABSTOP,153,97,100,10,0,HIDC_ARTWORK_CROP
#if 1 // ks hcmame s switch m68k core
   GROUPBOX        "M68000 CPU Core",IDC_M68K_CORETEXT,147,115,108,29
   COMBOBOX        IDC_M68K_CORE,153,126,96,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
#endif // ks hcmame s switch m68k core
   GROUPBOX        "Thread priority",IDC_HIGH_PRIORITY_TEXT,147,146,108,29
   CONTROL         "Slider1",IDC_HIGH_PRIORITY,"msctls_trackbar32",TBS_BOTH |
                   TBS_NOTICKS | WS_TABSTOP,152,160,80,10,0,HIDC_HIGH_PRIORITY
   CTEXT           "-15",IDC_HIGH_PRIORITYTXT,232,160,20,10,NOT WS_GROUP
   GROUPBOX        "BIOS",IDC_BIOSTEXT,147,177,108,29
   COMBOBOX        IDC_BIOS,153,189,96,120,CBS_DROPDOWNLIST | WS_VSCROLL |
                   WS_TABSTOP,0,HIDC_BIOS
   PUSHBUTTON      "Reset",IDC_PROP_RESET,4,225,117,14,0,0,HIDC_PROP_RESET
   PUSHBUTTON      "Restore Default Settings",IDC_USE_DEFAULT,138,225,117,14,
                   0,0,HIDC_USE_DEFAULT
END


Este archivo es el que controla el diseño del programa, como están distribuídas las distintas ventanas, dónde se sitúa cada objeto, cuánto ocupa cada uno, etc. Como aquí es dónde realmente situamos los checkboxes a mayores que queremos dentro de la solapa Miscellaneous, debemos tener en cuenta que los pongamos sobre otros objetos existentes. En este caso, como los he puesto justo encima del checkbox "Skip game info", he tenido que bajar el resto de objetos, y alguno cambiarlos de sitio (los he desplazado a la columna de la derecha). Voy a explicar una de las líneas que hemos creado y que antes no estaba, para explicar su funcionamiento:

CODE
CONTROL         "Skip disclaimer",IDC_SKIP_DISCLAIMER,"Button",
                   BS_AUTOCHECKBOX | WS_TABSTOP,10,84,135,10


  • CONTROL - Le indica al programa que tipo de objeto es

  • "Skip disclaimer" - El texto que acompaña a la checkbox

  • IDC_SKIP_DISCLAIMER - El identificador que hemos declarado en el anterior archivo. Así nosotros sabemos lo que es, pero para el programa, esto será el número 1260)

  • "Button" - Le indica al programa la clase del objeto

  • BS_AUTOCHECKBOX - Le indica al programa que el objeto es exactamente una autocheckbox (variante de la checkbox que cambia a marcado o desmarcado cada vez que se le clickea)

  • WS_TABSTOP - Le indica al programa que si se usa la tecla tabulador para ir cambiando de objetos, en éste también se pare

  • 10 - distancia al borde izquierdo del cuadro de diálogo en el que se encuentra el objeto

  • 84 - distancia al borde superior del cuadro de diálogo en el que se encuentra el objeto

  • 135 - ancho del control

  • 10 - alto del control




  • Como véis, los últimos cuatro valores indican la posición exacta y el tamaño del objeto en la ventana, por ello debemos tener en cuenta que no se solapen con los de otro objeto, porque podría ser que uno solapase al otro. El que se vería sería el último que dibujase el programa, y siempre los dibuja en el orden que están definidos en este archivo mame32.rc


    - Anexo: Situar correctamente los Checkboxes para acomodarlos a los cambios de versión en Mame

    Aunque la disposicionesn de las opciones de Mame y Mameplus apenas se modifican de lugar (yo llevo usando estas modificaciones durante las anetriores 5 versiones), sí puede conveniros aprender a situar estos checkboxes por si acaso fuera necesario.

    Si no estáis acostumbrados a editar los archivos ".rc" desde el bloc de notas, podéis hacerlo con algún editor de este tipo de archivos, por ejemplo desde el Microsoft Visual C++, que viene incluído en el Microsoft Visual Studio. Podréis realizar los cambios de forma muy visual:

    image


    Pero tiene un par de pegas:

    - la primera es que no muestra los objetos que dependen de condiciones (es más, los borra) que son aquellos que se encuentran entre una instrucción #ifdef LO_QUE_SEA y un #endif.

    Una solución podría ser borrar estos condiciones (no los objetos) desde el block de notas, y tras situar todos los objetos como queremos con el editor, volver a incluír las condiciones.

    - la segunda pega es que el orden de tabulación en el programa, será a medida que creemos los objetos desde el editor, ya que éste incluírá estos objetos a continuación de los que ya estaban, lo que haría que luego en el MamePlus, cuando tabulemos entre los checkboxes, botones y combos de esa pestaña de "miscelánea" el "Skip disclaimer" y "Skip warnings" que acabamos de crear no fuesen a continuación del "Sleep when possible".

    La solución sería editar con el bloc de notas y cortar las líneas referentes a esos dos objetos y pegarlas a continuación del objeto detrás del que queramos que tabule (en éste caso del ejemplo a continuación del checkbox de "Sleep when possible).


    - PeterPunk -

    Edited by Mikonos - 15/11/2007, 19:21
     
    Web  Top
    view post Posted on 19/9/2007, 23:24     +1   -1
    Avatar


    Group:
    Member
    Posts:
    354
    Location:
    Benicarló(Castellón)

    Status:


    Hola!

    gracias por el tutorial,
    lo probaré,
    la verdad es que las pantallas esas son un fastidio

    gracias

    saludos
     
    Top
    Devaud
    view post Posted on 10/9/2008, 22:42     +1   -1




    AMIGOS, quiero hacer esto pero los links estan rotos, alguien los puede volver a subir??..........

    necesito sacarle las advertencias para armar mi arcade
    grax
     
    Top
    view post Posted on 10/9/2008, 22:47     +1   -1
    Avatar

    Restless in Peace

    Group:
    Administrator
    Posts:
    42,780
    Location:
    Alcobendas (Madrid)

    Status:


    Pues es verdad, es lo malo de no redireccionar a los sitos oficiales. En los próximos días lo arreglamos.


    Gracias, compa!
     
    Web  Top
    Devaud
    view post Posted on 30/9/2008, 18:18     +1   -1




    ESTAN LOS LINKS ROTOS!!!!!!!, porfavor alguien los puede re subir?¿?¿?¿
     
    Top
    view post Posted on 30/9/2008, 23:27     +1   -1
    Avatar

    Restless in Peace

    Group:
    Administrator
    Posts:
    42,780
    Location:
    Alcobendas (Madrid)

    Status:


    He escrito al autor del tutorial, a ver si es posible que me facilite los archivos para resubirlos a mi cuenta de Megaupload. Espero que esté disponible para leer esta consulta que le he mandado.



    Saludos
     
    Web  Top
    alvarotorn
    view post Posted on 12/4/2009, 19:40     +1   -1




    A ver si llega para olvidearme de los mensajitos de MAME

    Salu2
     
    Top
    view post Posted on 12/4/2009, 20:49     +1   -1
    Avatar

    Restless in Peace

    Group:
    Administrator
    Posts:
    42,780
    Location:
    Alcobendas (Madrid)

    Status:


    Aquí tienes otro tutorial menos complejo para lo mismo:

    https://zonaarcade.forumcommunity.net/?t=21039459


    Saludos
     
    Web  Top
    alvarotorn
    view post Posted on 12/4/2009, 23:39     +1   -1




    Hala adios a los mensajes de MAME

    Gracias Chicos

    Salu2
     
    Top
    hazfinger
    view post Posted on 2/7/2011, 00:42     +1   -1




    Esta genial este tutorial Mikonos!, gracias =D
    Me agradaria saber cuales son los pasos a seguir para la version mame0143s?

    Saludos.
     
    Top
    view post Posted on 29/12/2012, 21:05     +1   -1


    Group:
    Member
    Posts:
    125
    Location:
    Alicante

    Status:


    Jo... hay que ser medio hacker para quitar los p.... avisos
     
    Top
    10 replies since 18/9/2007, 00:03   9036 views
      Share