Moved NAOMI DRIVER_INITs to specific machine/naomi.c & includes/naomi.h files, in preparation to add per-game JVS settings.

This commit is contained in:
Angelo Salese 2009-04-22 10:09:58 +00:00
parent 85582157a3
commit 176ec7a804
5 changed files with 88 additions and 68 deletions

2
.gitattributes vendored
View File

@ -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

View File

@ -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 )

11
src/mame/includes/naomi.h Normal file
View File

@ -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;

72
src/mame/machine/naomi.c Normal file
View File

@ -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);
}

View File

@ -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 \