Iniciar sesión

Ver la versión completa : Como se podria mejorar mucho el emulador gngeo



antidark
30/01/2006, 06:31
Buenas , he estado estudiando un poco el emulador de pepone y tiene una compatibilidad muy alta, pero todos los kof casi se le atragantan, esto es debido a una proteccion llamada sram y que esta proteccion funciona en modo arcade.

Si se que direis que se puede poner en modo consola, pero la verdad es que no, no se puede porque aunque lo cambien en el ini salen los botones del segundo mando todos apretados.

He estado echando un vistazo a un driver y he visto que hay varios juegos que llevaban esta proteccion, la solucion : Muy facil cambiar por defecto a mvs el emulador en vez de arcade o que cambie a mvs en estos juegos. O emular la sram . Esperemos que pepone continue ya que este emulador es el mejor junto al de franxis aunque el de hermes es una maravilla ... XD....

Pero seria una lastima ...



/* hacks to make the games which do protection checks run in arcade mode */
/* we write protect a SRAM location so it cannot be set to 1 */
sram_protection_hack = ~0;
if ( !strcmp(Machine->gamedrv->name,"fatfury3") ||
!strcmp(Machine->gamedrv->name,"samsho3") ||
!strcmp(Machine->gamedrv->name,"samsho4") ||
!strcmp(Machine->gamedrv->name,"aof3") ||
!strcmp(Machine->gamedrv->name,"rbff1") ||
!strcmp(Machine->gamedrv->name,"rbffspec") ||
!strcmp(Machine->gamedrv->name,"kof95") ||
!strcmp(Machine->gamedrv->name,"kof96") ||
!strcmp(Machine->gamedrv->name,"kof97") ||
!strcmp(Machine->gamedrv->name,"kof97a") ||
!strcmp(Machine->gamedrv->name,"kof98") ||
!strcmp(Machine->gamedrv->name,"kof98a") ||
!strcmp(Machine->gamedrv->name,"kof99") ||
!strcmp(Machine->gamedrv->name,"kof99e") ||
!strcmp(Machine->gamedrv->name,"kof99n") ||
!strcmp(Machine->gamedrv->name,"kof99p") ||
!strcmp(Machine->gamedrv->name,"kof2000") ||
!strcmp(Machine->gamedrv->name,"kof2000n") ||
!strcmp(Machine->gamedrv->name,"kizuna") ||
!strcmp(Machine->gamedrv->name,"lastblad") ||
!strcmp(Machine->gamedrv->name,"lastblda") ||
!strcmp(Machine->gamedrv->name,"lastbld2") ||
!strcmp(Machine->gamedrv->name,"rbff2") ||
!strcmp(Machine->gamedrv->name,"rbff2a") ||
!strcmp(Machine->gamedrv->name,"mslug2") ||
!strcmp(Machine->gamedrv->name,"mslug3") ||
!strcmp(Machine->gamedrv->name,"garou") ||
!strcmp(Machine->gamedrv->name,"garouo") ||
!strcmp(Machine->gamedrv->name,"garoup"))
sram_protection_hack = 0x100/2;

if (!strcmp(Machine->gamedrv->name,"pulstar"))
sram_protection_hack = 0x35a/2;

if (!strcmp(Machine->gamedrv->name,"ssideki"))
{
/* patch out protection check */
/* the protection routines are at 0x25dcc and involve reading and writing */
/* addresses in the 0x2xxxxx range */
data16_t *mem16 = (data16_t *)memory_region(REGION_CPU1);
mem16[0x2240/2] = 0x4e71;
}

/* Hacks the program rom of Fatal Fury 2, needed either in arcade or console mode */
/* otherwise at level 2 you cannot hit the opponent and other problems */
if (!strcmp(Machine->gamedrv->name,"fatfury2"))
{
/* there seems to also be another protection check like the countless ones */
/* patched above by protecting a SRAM location, but that trick doesn't work */
/* here (or maybe the SRAM location to protect is different), so I patch out */
/* the routine which trashes memory. Without this, the game goes nuts after */
/* the first bonus stage. */
data16_t *mem16 = (data16_t *)memory_region(REGION_CPU1);
mem16[0xb820/2] = 0x4e71;
mem16[0xb822/2] = 0x4e71;

/* again, the protection involves reading and writing addresses in the */
/* 0x2xxxxx range. There are several checks all around the code. */
install_mem_read16_handler(0, 0x200000, 0x2fffff, fatfury2_protection_16_r);
install_mem_write16_handler(0, 0x200000, 0x2fffff, fatfury2_protection_16_w);
}

if (!strcmp(Machine->gamedrv->name,"fatfury3"))
{
/* patch the first word, it must be 0x0010 not 0x0000 (initial stack pointer) */
data16_t *mem16 = (data16_t *)memory_region(REGION_CPU1);
mem16[0x0000/2] = 0x0010;
}

if (!strcmp(Machine->gamedrv->name,"mslugx"))
{
/* patch out protection checks */
int i;
data16_t *mem16 = (data16_t *)memory_region(REGION_CPU1);

for (i = 0;i < (0x100000/2) - 4;i++)
{
if (mem16[i+0] == 0x0243 &&
mem16[i+1] == 0x0001 && /* andi.w #$1, D3 */
mem16[i+2] == 0x6600) /* bne xxxx */
{
mem16[i+2] = 0x4e71;
mem16[i+3] = 0x4e71;
}
}

mem16[0x3bdc/2] = 0x4e71;
mem16[0x3bde/2] = 0x4e71;
mem16[0x3be0/2] = 0x4e71;
mem16[0x3c0c/2] = 0x4e71;
mem16[0x3c0e/2] = 0x4e71;
mem16[0x3c10/2] = 0x4e71;

mem16[0x3c36/2] = 0x4e71;
mem16[0x3c38/2] = 0x4e71;
}

{

rinurr
01/02/2006, 00:19
Se puede poner en modo consola? y cómo? Porque para entrenar en los juegos de lucha vendría congojudo [wei5]

antidark
01/02/2006, 00:32
Si se puede poner en modo consola simplemente hay que editar un archivo que esta en la carpeta config del emu concretamente esta linea :

Dentro de gngeorc

Editas la siguiente linea con el wordpad :

# system type? arcade or home
system arcade

y la pones asi :

system console

Yveras como no te deja jugar, tengo que decir que ya comente este error con el autor del emulador y promete que lo mirara , espero haber resuelto tus dudas.

JC

rinurr
01/02/2006, 00:53
A ver, puse system console, y siguió cargando arcade, así que puse system home, y cuando cargaba la rom me decía que en la carpeta roms no estaba el fichero aes-bios.bin, que por lo visto es un fichero de la neogeo casera. Estoy buscandolo y probaré a ver. También aqui he puesto sound true, para activar el sonido, pero hasta que no encuentre el fichero no podré ver si suena o no.

c4rm4
01/02/2006, 01:27
El archivo en cuestión está en la burra, por si no quieres seguir buscando...

rinurr
01/02/2006, 14:33
Ya lo he probado con ese fichero y efectivamente no rula, se queda en una pantalla para probar la configuración de los mandos y no se puede pasar esa pantalla :( por otro lado la musica no funciona aunque haya puesto "true" en el config :confused: