11-dic-2006, 19:15 | #1 |
Editor Marciano
|
MAME 0.111 - Hiscore support
Celebrando la reciente salida de la versión 0.111 del emulador MAME voy a describir cómo recompilarlo para que guarde los récords. Para eso necesitamos el código fuente de MAME y, en este caso, también de MAME32. También necesitaremos el compilador y los extras que éste no incluye. Evidentemente para que funcionen los récords también necesitaremos el consabido hiscore.dat que podremos descargar de http://www.mameworld.net/highscore/download.htm
Descomprimimos el compilador, que se trata de MinGW, y los extras (que son funciones para usar las rutinas gráficas de las DirectX 8) en la misma carpeta; y, por otro lado, los códigos fuentes de MAME y MAME32 en una misma carpeta, a poder ser distinta de la del compilador para no liarnos. Supongamos que descomprimimos el compilador en c:\MinGW y los códigos fuentes del emulador en c:\MAME110. Si tecleamos (sí, estamos en Símbolo del sistema) en esta última carpeta Code:
set path=c:\mingw\bin mingw32-make Code:
set path=c:\mingw\bin mingw32-make WINUI=1 NAME=MAME32 Ahora debemos realizar los cambios pertinentes para habilitar el uso del hiscore.dat. Lo primero será poner en la carpeta \src\ los archivos hiscore.c y hiscore.h. Estos archivos ya no están en el código fuente de MAME, y los pensaba dejar completos en un spoiler, pero como este foro parece no disponer de esa opción os los he subido a un par de servidores: hiscore.c y hiscore.h -> http://www.megaupload.com/?d=I0ANL9RQ hiscore.c y hiscore.h -> http://rapidshare.com/files/7043597/hiscore.zip.html Los archivos que debéis editar para que se habiliten los récords son: src\fileio.h Code:
(...) /********** CONSTANTS ***********/ (...) /* search paths */ #define SEARCHPATH_RAW NULL #define SEARCHPATH_CHEAT NULL #define SEARCHPATH_LANGUAGE NULL #define SEARCHPATH_DEBUGLOG NULL #define SEARCHPATH_HISCORE_DB NULL (...) #define SEARCHPATH_MOVIE OPTION_SNAPSHOT_DIRECTORY #define SEARCHPATH_COMMENT OPTION_COMMENT_DIRECTORY #define SEARCHPATH_HISCORE OPTION_HISCORE_DIRECTORY src\mame.c Code:
(...) #include "render.h" #include "ui.h" #include "hiscore.h" (...)/*------------------------------------------------- init_machine - initialize the emulated machine -------------------------------------------------*/(...) #ifdef MESS /* initialize the devices */ devices_init(machine); #endif hiscore_init(machine, machine->gamedrv->name); Code:
(...) /********** BUILT-IN (CORE) OPTIONS ***********/ static const options_entry core_options[] = {(...) { "diff_directory", "diff", 0, "directory to save hard drive image difference files" }, { "comment_directory", "comments", 0, "directory to save debugger comments" }, { "hiscore_directory", "hi", 0, "directory to save hiscores" }, Code:
(...) /********** CONSTANTS ***********/(...) /* core directory options */ #define OPTION_SNAPSHOT_DIRECTORY "snapshot_directory" #define OPTION_DIFF_DIRECTORY "diff_directory" #define OPTION_COMMENT_DIRECTORY "comment_directory" #define OPTION_HISCORE_DIRECTORY "hiscore_directory" Code:
(...) DIRECTORYINFO g_directoryInfo[] = { { "ROMs", GetRomDirs, SetRomDirs, TRUE, DIRDLG_ROMS }, { "Samples", GetSampleDirs, SetSampleDirs, TRUE, DIRDLG_SAMPLES }, { "Ini Files", GetIniDir, SetIniDir, FALSE, DIRDLG_INI }, { "Config", GetCfgDir, SetCfgDir, FALSE, DIRDLG_CFG }, { "High Scores", GetHiscoreDir, SetHiscoreDir, FALSE, DIRDLG_HI }, Code:
(...) // options in mame32.ini that we'll never override with with game-specific options static const REG_OPTION global_game_options[] = {(...) { "ctrlr_directory", RO_STRING, offsetof(settings_type, ctrlrdir), "ctrlr" }, { "comment_directory", RO_STRING, offsetof(settings_type, commentdir), "comment" }, { "hiscore_directory", RO_STRING, offsetof(settings_type, hiscoredir), "hi" }, { "" } (...) static const options_entry windows_opts[] = {(...) { "comment_directory", "comments", 0, "directory to save debugger comments" }, { "hiscore_directory", "hi", 0, "directory to save hiscores" }, { "cheat_file", "cheat.dat",0, "cheat filename" }, (...) void SetCfgDir(const char* path) { FreeIfAllocated(&settings.cfgdir); if (path != NULL) settings.cfgdir = mame_strdup(path); } const char* GetHiscoreDir(void) { return settings.hiscoredir; } void SetHiscoreDir(const char* path) { FreeIfAllocated(&settings.hiscoredir); if (path != NULL) settings.hiscoredir = mame_strdup(path); } src\ui\options.h Code:
(...) char* nvramdir; char* memcarddir; char* inpdir; char* hiscoredir; (...) const char* GetCfgDir(void); void SetCfgDir(const char* path); const char* GetHiscoreDir(void); void SetHiscoreDir(const char* path); src\core.mak Code:
(...)COREOBJS = \(...) $(OBJ)/harddisk.o \ $(OBJ)/hash.o \ $(OBJ)/hiscore.o \ $(OBJ)/info.o \ Espero que esto os pueda ayudar para obtener el MAME con hiscores en futuras versiones. Saludos |
20-dic-2006, 17:46 | #2 |
Marciano
|
Yo hasta ayer tenía mame .104
¿Ya no funcional el .dat de los hiscores? Acabo de probar el .111 en la recre y, efectivamente, tooooodos los récords y puntuaciones de mis 6 años de jugón de mame no están reflejados a pesar de estar en su carpetita correspondiente y el .dat de hiscores junto al mame.exe :-?????????? |
25-dic-2006, 07:46 | #3 |
Marciano
|
he estado viendo lo de el codigo de mame, pero hay un detalle que creo que hay que revisar...
son estos archivos: src\ui\layout.c src\ui\options.c src\ui\options.h porque en el codigo de mame, en la carpeta que se encuentra no estan estos archivos (de la v.111 ) saludos |
25-dic-2006, 15:45 | #4 | |
Editor Marciano
|
Quote:
Saludos |
|
21-ene-2007, 17:54 | #5 |
Marciano
|
Hola, yo esque tengo una duda con esto de gusradar los creditos, me lo quiero poner para que me gusrade los creditos, yo uso el Mame32 plus 0.111u1, y mi duda esque yo he leido en el tutorial http://www.marcianitos.org/tutoriales/emmame.htm#EM018 , que simplemente poniendo el archivo 'hiscore.dat' ya guarda los records.
Y mi duda es si para que guarde los records, si con simplemente ponerse ese archivo ya los guarda, pero si cambiamos de version de MAme ya no funcionaran por lo que ha dicho snopes, con lo que abria que hacer todo lo que pone en este post. Saludos. |
21-ene-2007, 19:31 | #6 |
Editor Marciano
|
Buenas Juanfgv, antes con poner en la misma carpeta del MAME ese archivo hiscore.dat era suficiente para guardar los récords, y aunque cambiaras de versión de MAME, los récords se mantenían. Lo que pasa es que el equipo MAME a partir de la versión 0.107u3 (creo) dejaron de lado el soporte de ese archivo, basándose en la fidelidad a los arcades, que la mayoría no los guarda. Algunos juegos, como el Tetris y muchos de NeoGeo, los guardan igual, en los famosos ficheros nvram (ram no volátil) ya que también las placas originales lo hacían.
Entonces tenemos un problema si queremos usar esos récords, que ya tenemos guardados, en una versión moderna del MAME o del MAME32, y es lo que explico en este minitutorial. Pero en el caso de MAMEPlus, la cosa es bastante más sencilla, ya que en su código sí que aparecen las referencias necesarias para usar el archivo hiscore.dat, lo que pasa es que luego lo compilan sin esa opción. Así que lo que debemos hacer es bajarnos su código fuente que se debe extraer sobre el código fuente de MAME, y el compilador y los extras que aparecen en la página de mameplus. Luego sólo debemos editar el archivo config.def, y borrar la almohadilla (#) que aparece delante de la línea: USE_HISCORE=1 Se guarda el cambio y se compila con el siguiente bat: MAKE_MAMPLUS.bat Code:
@echo off rem -------------------------------------- rem MinGW Compiler Configure rem -------------------------------------- set PATH=\MinGW\bin;\binutils\bin;extra\bin;%PATH% rem -------------------------------------- rem HtmlHelp Path Configure rem -------------------------------------- set C_INCLUDE_PATH=extra\include set LIBRARY_PATH=extra\lib make Saludos |
21-ene-2007, 19:37 | #7 |
Administrador
|
Una pregunta, el equipo MAME si que permite publicar esta modificación, no?
Es decir, que no hay problema para subir dichos MAMEs ya compilados a internet y poner aquí el enlace, no? |
21-ene-2007, 21:14 | #8 |
Moderador
|
Ufff, yo creo que los Mamedevs se pasan a veces con esto de la fidelidad. Al menos podría existir una opción para habilitar el salvado de las puntuaciones, aunque no vinera activado por defecto.
|
21-ene-2007, 21:39 | #9 |
Editor Marciano
|
Pues no sé Macarro, eso habrá que preguntárselo a Cananas, que me parece que es el único que se leyó la licencia y términos de uso del MAME.
|
22-ene-2007, 02:41 | #10 |
Marciano
|
Gracias PeterPunk, en definitiva que si se quiere tener el MAme con los records guardados hay que modificar-Compilar el original, vaya .
Pues haber si me pongo con lo que me has dicho y veo si me los guarda. Saludos. |