diff --git a/.gitattributes b/.gitattributes index a092c7d9cd9..29e0f4a4313 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2431,6 +2431,7 @@ src/mame/includes/namcos1.h svneol=native#text/plain src/mame/includes/namcos2.h svneol=native#text/plain src/mame/includes/namcos21.h svneol=native#text/plain src/mame/includes/namcos22.h svneol=native#text/plain +src/mame/includes/naomi.h svneol=native#text/plain src/mame/includes/naomibd.h svneol=native#text/plain src/mame/includes/nb1413m3.h svneol=native#text/plain src/mame/includes/nbmj8688.h svneol=native#text/plain @@ -2774,6 +2775,7 @@ src/mame/machine/namcoio.h svneol=native#text/plain src/mame/machine/namcond1.c svneol=native#text/plain src/mame/machine/namcos1.c svneol=native#text/plain src/mame/machine/namcos2.c svneol=native#text/plain +src/mame/machine/naomi.c svneol=native#text/plain src/mame/machine/naomibd.c svneol=native#text/plain src/mame/machine/nb1413m3.c svneol=native#text/plain src/mame/machine/neoboot.c svneol=native#text/plain diff --git a/src/mame/drivers/naomi.c b/src/mame/drivers/naomi.c index d2344ff8cee..4ff27a70ce5 100644 --- a/src/mame/drivers/naomi.c +++ b/src/mame/drivers/naomi.c @@ -581,6 +581,7 @@ Notes: #include "video/generic.h" #include "machine/eeprom.h" #include "naomibd.h" +#include "naomi.h" #include "cpu/sh4/sh4.h" #include "cpu/arm7/arm7core.h" #include "sound/aica.h" @@ -588,7 +589,7 @@ Notes: #define CPU_CLOCK (200000000) static UINT32 *dc_sound_ram; -static UINT64 *naomi_ram64; +extern UINT64 *naomi_ram64; /* MD2 MD1 MD0 MD6 MD4 MD3 MD5 MD7 MD8 */ static const struct sh4_config sh4cpu_config = { 1, 0, 1, 0, 0, 0, 1, 1, 0, CPU_CLOCK }; @@ -3123,23 +3124,6 @@ void naomi_write_keyfile(void) } #endif -static READ64_HANDLER( naomi_bios_idle_skip_r ) -{ - - if (cpu_get_pc(space->cpu)==0xc04173c) - cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(500)); - //cpu_spinuntil_int(space->cpu); -// else -// printf("%08x\n", cpu_get_pc(space->cpu)); - - return naomi_ram64[0x2ad238/8]; -} -static DRIVER_INIT(naomi) -{ - memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc2ad238, 0xc2ad23f, 0, 0, naomi_bios_idle_skip_r); // rev e bios -} - - /* All games have the regional titles at the start of the IC22 rom in the following order JAPAN @@ -3183,7 +3167,6 @@ GAME( 1998, naomi, 0, naomi, naomi, naomi, ROT0, "Sega", /* 841-xxxxx ("Licensed by Sega" games)*/ /* 0001C */ GAME( 1999, pstone, naomi, naomi, naomi, naomi, ROT0, "Capcom", "Power Stone (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) - /* 0002C */ GAME( 1999, suchie3, naomi, naomi, naomi, naomi, ROT0, "Jaleco", "Idol Janshi Suchie-Pai 3 (JPN)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) /* 0003C */ GAME( 1999, doa2, naomi, naomi, naomi, naomi, ROT0, "Tecmo", "Dead or Alive 2 (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) /* 0003C */ GAME( 2000, doa2m, doa2, naomi, naomi, naomi, ROT0, "Tecmo", "Dead or Alive 2 Millennium (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) @@ -4018,54 +4001,6 @@ ROM_START( puyofev ) ROM_END - -static READ64_HANDLER( naomigd_ggxxsla_idle_skip_r ) -{ - if (cpu_get_pc(space->cpu)==0x0c0c9adc) - cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(500)); - - return naomi_ram64[0x1aae18/8]; -} - -static DRIVER_INIT( ggxxsla ) -{ - memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc1aae18, 0xc1aae1f, 0, 0, naomigd_ggxxsla_idle_skip_r); - DRIVER_INIT_CALL(naomi); -} - -static READ64_HANDLER( naomigd_ggxx_idle_skip_r ) -{ - if (cpu_get_pc(space->cpu)==0xc0b5c3c) // or 0xc0bab0c - cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(500)); - - return naomi_ram64[0x1837b8/8]; -} - - -static DRIVER_INIT( ggxx ) -{ - memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc1837b8, 0xc1837bf, 0, 0, naomigd_ggxx_idle_skip_r); - DRIVER_INIT_CALL(naomi); -} - -static READ64_HANDLER( naomigd_ggxxrl_idle_skip_r ) -{ - if (cpu_get_pc(space->cpu)==0xc0b84bc) // or 0xc0bab0c - cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(500)); - - //printf("%08x\n", cpu_get_pc(space->cpu)); - - return naomi_ram64[0x18d6c8/8]; -} - - -static DRIVER_INIT( ggxxrl ) -{ - memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc18d6c8, 0xc18d6cf, 0, 0, naomigd_ggxxrl_idle_skip_r); - DRIVER_INIT_CALL(naomi); -} - - /* Naomi GD-Rom Sets */ GAME( 2001, naomigd, 0, naomi, naomi, naomi, ROT0, "Sega", "Naomi GD-ROM Bios", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT ) diff --git a/src/mame/includes/naomi.h b/src/mame/includes/naomi.h new file mode 100644 index 00000000000..a59ef5f8eac --- /dev/null +++ b/src/mame/includes/naomi.h @@ -0,0 +1,11 @@ +/* + +naomi.h -> NAOMI includes + +*/ + +extern DRIVER_INIT( naomi ); +extern DRIVER_INIT( ggxxsla ); +extern DRIVER_INIT( ggxxrl ); +extern DRIVER_INIT( ggxx ); +extern UINT64 *naomi_ram64; diff --git a/src/mame/machine/naomi.c b/src/mame/machine/naomi.c new file mode 100644 index 00000000000..046d7cbe2d6 --- /dev/null +++ b/src/mame/machine/naomi.c @@ -0,0 +1,72 @@ +/*************************************************************************** + +Per-game specific JVS settings / idle loop skips for the MAME Naomi driver. + +***************************************************************************/ + +#include "driver.h" +#include "includes/naomi.h" + +UINT64 *naomi_ram64; + +static READ64_HANDLER( naomi_bios_idle_skip_r ) +{ + if (cpu_get_pc(space->cpu)==0xc04173c) + cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(500)); + //cpu_spinuntil_int(space->cpu); +// else +// printf("%08x\n", cpu_get_pc(space->cpu)); + + return naomi_ram64[0x2ad238/8]; +} + +DRIVER_INIT(naomi) +{ + memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc2ad238, 0xc2ad23f, 0, 0, naomi_bios_idle_skip_r); // rev e bios +} + +static READ64_HANDLER( naomigd_ggxxsla_idle_skip_r ) +{ + if (cpu_get_pc(space->cpu)==0x0c0c9adc) + cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(500)); + + return naomi_ram64[0x1aae18/8]; +} + +DRIVER_INIT( ggxxsla ) +{ + memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc1aae18, 0xc1aae1f, 0, 0, naomigd_ggxxsla_idle_skip_r); + DRIVER_INIT_CALL(naomi); +} + +static READ64_HANDLER( naomigd_ggxx_idle_skip_r ) +{ + if (cpu_get_pc(space->cpu)==0xc0b5c3c) // or 0xc0bab0c + cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(500)); + + return naomi_ram64[0x1837b8/8]; +} + + +DRIVER_INIT( ggxx ) +{ + memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc1837b8, 0xc1837bf, 0, 0, naomigd_ggxx_idle_skip_r); + DRIVER_INIT_CALL(naomi); +} + +static READ64_HANDLER( naomigd_ggxxrl_idle_skip_r ) +{ + if (cpu_get_pc(space->cpu)==0xc0b84bc) // or 0xc0bab0c + cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(500)); + + //printf("%08x\n", cpu_get_pc(space->cpu)); + + return naomi_ram64[0x18d6c8/8]; +} + + +DRIVER_INIT( ggxxrl ) +{ + memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc18d6c8, 0xc18d6cf, 0, 0, naomigd_ggxxrl_idle_skip_r); + DRIVER_INIT_CALL(naomi); +} diff --git a/src/mame/mame.mak b/src/mame/mame.mak index 4c822bae0b0..370fd336b83 100644 --- a/src/mame/mame.mak +++ b/src/mame/mame.mak @@ -1101,7 +1101,7 @@ $(MAMEOBJ)/sega.a: \ $(DRIVERS)/model1.o $(MACHINE)/model1.o $(VIDEO)/model1.o \ $(DRIVERS)/model2.o $(VIDEO)/model2.o \ $(DRIVERS)/model3.o $(VIDEO)/model3.o $(MACHINE)/model3.o \ - $(DRIVERS)/naomi.o $(MACHINE)/dc.o $(VIDEO)/dc.o $(MACHINE)/gdcrypt.o $(MACHINE)/naomibd.o \ + $(DRIVERS)/naomi.o $(MACHINE)/dc.o $(VIDEO)/dc.o $(MACHINE)/gdcrypt.o $(MACHINE)/naomibd.o $(MACHINE)/naomi.o \ $(DRIVERS)/triforce.o $(DRIVERS)/chihiro.o \ $(DRIVERS)/puckpkmn.o \ $(DRIVERS)/segac2.o \