From a18d91c43ec36dc01735783960968faaa256a656 Mon Sep 17 00:00:00 2001 From: angelosa Date: Sat, 21 Jan 2017 14:49:06 +0100 Subject: [PATCH] Moved atomiswave and naomi 2 specifics into own state machines (nw) --- src/mame/drivers/dccons.cpp | 43 +----- src/mame/drivers/naomi.cpp | 266 ++++++++++++++++++------------------ src/mame/includes/dc.h | 10 +- src/mame/includes/dccons.h | 1 - src/mame/includes/naomi.h | 73 ++++++---- src/mame/machine/dc.cpp | 40 ++++++ src/mame/machine/naomi.cpp | 2 +- 7 files changed, 236 insertions(+), 199 deletions(-) diff --git a/src/mame/drivers/dccons.cpp b/src/mame/drivers/dccons.cpp index 68f36b83194..cb96b4c7f88 100644 --- a/src/mame/drivers/dccons.cpp +++ b/src/mame/drivers/dccons.cpp @@ -347,16 +347,6 @@ WRITE64_MEMBER(dc_cons_state::dc_pdtra_w ) PDTRA = (data & 0xffff); } -READ64_MEMBER(dc_cons_state::dc_arm_r ) -{ - return *((uint64_t *)dc_sound_ram.target()+offset); -} - -WRITE64_MEMBER(dc_cons_state::dc_arm_w ) -{ - COMBINE_DATA((uint64_t *)dc_sound_ram.target() + offset); -} - #if 0 READ8_MEMBER(dc_cons_state::dc_flash_r) { @@ -383,7 +373,7 @@ static ADDRESS_MAP_START( dc_map, AS_PROGRAM, 64, dc_cons_state ) AM_RANGE(0x00600000, 0x006007ff) AM_READWRITE(dc_modem_r, dc_modem_w ) AM_RANGE(0x00700000, 0x00707fff) AM_READWRITE32(dc_aica_reg_r, dc_aica_reg_w, 0xffffffffffffffffU) AM_RANGE(0x00710000, 0x0071000f) AM_MIRROR(0x02000000) AM_DEVREADWRITE16("aicartc", aicartc_device, read, write, 0x0000ffff0000ffffU ) - AM_RANGE(0x00800000, 0x009fffff) AM_READWRITE(dc_arm_r, dc_arm_w ) + AM_RANGE(0x00800000, 0x009fffff) AM_READWRITE(sh4_soundram_r, sh4_soundram_w ) // AM_RANGE(0x01000000, 0x01ffffff) G2 Ext Device #1 // AM_RANGE(0x02700000, 0x02707fff) AICA reg mirror // AM_RANGE(0x02800000, 0x02ffffff) AICA wave mem mirror @@ -564,9 +554,9 @@ static INPUT_PORTS_START( dc ) //A4 - A5, second analog stick, unused on DC PORT_START("MAMEDEBUG") - PORT_DIPNAME( 0x01, 0x00, "Bilinear Filtering" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_CONFNAME( 0x01, 0x00, "Bilinear Filtering" ) + PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) + PORT_CONFSETTING( 0x01, DEF_STR( On ) ) PORT_START("SCREEN_TYPE") PORT_CONFNAME( 0x03, 0x03, "Screen Connection Type" ) @@ -575,27 +565,6 @@ static INPUT_PORTS_START( dc ) PORT_CONFSETTING( 0x03, "S-Video" ) INPUT_PORTS_END -MACHINE_RESET_MEMBER(dc_cons_state,dc_console) -{ - dc_state::machine_reset(); - m_aica->set_ram_base(dc_sound_ram, 2*1024*1024); -} - -WRITE_LINE_MEMBER(dc_cons_state::aica_irq) -{ - m_soundcpu->set_input_line(ARM7_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); -} - -WRITE_LINE_MEMBER(dc_cons_state::sh4_aica_irq) -{ - if(state) - dc_sysctrl_regs[SB_ISTEXT] |= IST_EXT_AICA; - else - dc_sysctrl_regs[SB_ISTEXT] &= ~IST_EXT_AICA; - - dc_update_interrupt_status(); -} - static MACHINE_CONFIG_FRAGMENT( gdrom_config ) MCFG_DEVICE_MODIFY("cdda") MCFG_SOUND_ROUTE(0, "^^^^lspeaker", 1.0) @@ -642,8 +611,8 @@ static MACHINE_CONFIG_START( dc, dc_cons_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SOUND_ADD("aica", AICA, 0) MCFG_AICA_MASTER - MCFG_AICA_IRQ_CB(WRITELINE(dc_cons_state, aica_irq)) - MCFG_AICA_MAIN_IRQ_CB(WRITELINE(dc_cons_state, sh4_aica_irq)) + MCFG_AICA_IRQ_CB(WRITELINE(dc_state, aica_irq)) + MCFG_AICA_MAIN_IRQ_CB(WRITELINE(dc_state, sh4_aica_irq)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(0, "rspeaker", 1.0) diff --git a/src/mame/drivers/naomi.cpp b/src/mame/drivers/naomi.cpp index 4c89edd992e..3752f167642 100644 --- a/src/mame/drivers/naomi.cpp +++ b/src/mame/drivers/naomi.cpp @@ -1580,16 +1580,6 @@ Premier Eleven #define CPU_CLOCK (200000000) -READ64_MEMBER(naomi_state::naomi_arm_r ) -{ - return *(reinterpret_cast(dc_sound_ram.target())+offset); -} - -WRITE64_MEMBER(naomi_state::naomi_arm_w ) -{ - COMBINE_DATA(reinterpret_cast(dc_sound_ram.target()) + offset); -} - READ64_MEMBER(naomi_state::naomi_unknown1_r ) { if ((offset * 8) == 0xc0) // trick so that it does not "wait for multiboard sync" @@ -1601,6 +1591,19 @@ WRITE64_MEMBER(naomi_state::naomi_unknown1_w ) { } +// TODO: was using same handler as Naomi, tbd +READ64_MEMBER(atomiswave_state::aw_unknown1_r ) +{ + if ((offset * 8) == 0xc0) // trick so that it does not "wait for multiboard sync" + return -1; + return 0; +} + +WRITE64_MEMBER(atomiswave_state::aw_unknown1_w ) +{ +} + + /* * Non-volatile memories */ @@ -1697,7 +1700,7 @@ static ADDRESS_MAP_START( naomi_map, AS_PROGRAM, 64, naomi_state ) AM_RANGE(0x00600000, 0x006007ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_modem_r, dc_modem_w ) AM_RANGE(0x00700000, 0x00707fff) AM_MIRROR(0x02000000) AM_READWRITE32(dc_aica_reg_r, dc_aica_reg_w, 0xffffffffffffffffU) AM_RANGE(0x00710000, 0x0071000f) AM_MIRROR(0x02000000) AM_DEVREADWRITE16("aicartc", aicartc_device, read, write, 0x0000ffff0000ffffU ) - AM_RANGE(0x00800000, 0x00ffffff) AM_MIRROR(0x02000000) AM_READWRITE(naomi_arm_r, naomi_arm_w ) // sound RAM (8 MB) + AM_RANGE(0x00800000, 0x00ffffff) AM_MIRROR(0x02000000) AM_READWRITE(sh4_soundram_r, sh4_soundram_w ) // sound RAM (8 MB) /* External Device */ AM_RANGE(0x01010098, 0x0101009f) AM_MIRROR(0x02000000) AM_RAM // Naomi 2 BIOS tests this, needs to read back as written @@ -1734,7 +1737,7 @@ ADDRESS_MAP_END * Naomi 2 address map */ -static ADDRESS_MAP_START( naomi2_map, AS_PROGRAM, 64, naomi_state ) +static ADDRESS_MAP_START( naomi2_map, AS_PROGRAM, 64, naomi2_state ) /* Area 0 */ AM_RANGE(0x00000000, 0x001fffff) AM_MIRROR(0xa2000000) AM_ROM AM_REGION("maincpu", 0) // BIOS @@ -1749,7 +1752,7 @@ static ADDRESS_MAP_START( naomi2_map, AS_PROGRAM, 64, naomi_state ) AM_RANGE(0x00600000, 0x006007ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_modem_r, dc_modem_w ) AM_RANGE(0x00700000, 0x00707fff) AM_MIRROR(0x02000000) AM_READWRITE32(dc_aica_reg_r, dc_aica_reg_w, 0xffffffffffffffffU) AM_RANGE(0x00710000, 0x0071000f) AM_MIRROR(0x02000000) AM_DEVREADWRITE16("aicartc", aicartc_device, read, write, 0x0000ffff0000ffffU ) - AM_RANGE(0x00800000, 0x00ffffff) AM_MIRROR(0x02000000) AM_READWRITE(naomi_arm_r, naomi_arm_w ) // sound RAM (8 MB) + AM_RANGE(0x00800000, 0x00ffffff) AM_MIRROR(0x02000000) AM_READWRITE(sh4_soundram_r, sh4_soundram_w ) // sound RAM (8 MB) /* External Device */ AM_RANGE(0x01010098, 0x0101009f) AM_MIRROR(0x02000000) AM_RAM // Naomi 2 BIOS tests this, needs to read back as written @@ -1801,13 +1804,13 @@ ADDRESS_MAP_END * Atomiswave address map, almost identical to Dreamcast */ -READ64_MEMBER(naomi_state::aw_flash_r ) +READ64_MEMBER(atomiswave_state::aw_flash_r ) { return (uint64_t)m_awflash->read(offset*8) | (uint64_t)m_awflash->read((offset*8)+1)<<8 | (uint64_t)m_awflash->read((offset*8)+2)<<16 | (uint64_t)m_awflash->read((offset*8)+3)<<24 | (uint64_t)m_awflash->read((offset*8)+4)<<32 | (uint64_t)m_awflash->read((offset*8)+5)<<40 | (uint64_t)m_awflash->read((offset*8)+6)<<48 | (uint64_t)m_awflash->read((offset*8)+7)<<56; } -WRITE64_MEMBER(naomi_state::aw_flash_w ) +WRITE64_MEMBER(atomiswave_state::aw_flash_w ) { int i; uint32_t addr = offset * 8; @@ -1826,7 +1829,8 @@ WRITE64_MEMBER(naomi_state::aw_flash_w ) m_awflash->write(addr, data); } -inline int naomi_state::decode_reg32_64(uint32_t offset, uint64_t mem_mask, uint64_t *shift) +// TODO: don't we have a common function for this? +inline int atomiswave_state::decode_reg32_64(uint32_t offset, uint64_t mem_mask, uint64_t *shift) { int reg = offset * 2; @@ -1848,7 +1852,7 @@ inline int naomi_state::decode_reg32_64(uint32_t offset, uint64_t mem_mask, uint return reg; } -READ64_MEMBER(naomi_state::aw_modem_r ) +READ64_MEMBER(atomiswave_state::aw_modem_r ) { int reg; uint64_t shift; @@ -1874,7 +1878,7 @@ READ64_MEMBER(naomi_state::aw_modem_r ) return 0; } -WRITE64_MEMBER(naomi_state::aw_modem_w ) +WRITE64_MEMBER(atomiswave_state::aw_modem_w ) { int reg; uint64_t shift; @@ -1906,7 +1910,7 @@ WRITE64_MEMBER(naomi_state::aw_modem_w ) osd_printf_verbose("%s",string_format("MODEM: [%08x=%x] write %I64x to %x, mask %I64x\n", 0x600000+reg*4, dat, data, offset, mem_mask).c_str()); } -static ADDRESS_MAP_START( aw_map, AS_PROGRAM, 64, naomi_state ) +static ADDRESS_MAP_START( aw_map, AS_PROGRAM, 64, atomiswave_state ) /* Area 0 */ AM_RANGE(0x00000000, 0x0001ffff) AM_READWRITE(aw_flash_r, aw_flash_w ) AM_REGION("awflash", 0) AM_RANGE(0xa0000000, 0xa001ffff) AM_READWRITE(aw_flash_r, aw_flash_w ) AM_REGION("awflash", 0) @@ -1922,10 +1926,10 @@ static ADDRESS_MAP_START( aw_map, AS_PROGRAM, 64, naomi_state ) AM_RANGE(0x00600000, 0x006007ff) AM_READWRITE(aw_modem_r, aw_modem_w ) AM_RANGE(0x00700000, 0x00707fff) AM_READWRITE32(dc_aica_reg_r, dc_aica_reg_w, 0xffffffffffffffffU) AM_RANGE(0x00710000, 0x0071000f) AM_MIRROR(0x02000000) AM_DEVREADWRITE16("aicartc", aicartc_device, read, write, 0x0000ffff0000ffffU ) - AM_RANGE(0x00800000, 0x00ffffff) AM_READWRITE(naomi_arm_r, naomi_arm_w ) // sound RAM (8 MB) + AM_RANGE(0x00800000, 0x00ffffff) AM_READWRITE(sh4_soundram_r, sh4_soundram_w ) // sound RAM (8 MB) - AM_RANGE(0x0103ff00, 0x0103ffff) AM_READWRITE(naomi_unknown1_r, naomi_unknown1_w ) // bios uses it, actual start and end addresses not known + AM_RANGE(0x0103ff00, 0x0103ffff) AM_READWRITE(aw_unknown1_r, aw_unknown1_w ) // ??? /* Area 1 - half the texture memory, like dreamcast, not naomi */ AM_RANGE(0x04000000, 0x047fffff) AM_RAM AM_MIRROR(0x00800000) AM_SHARE("dc_texture_ram") // texture memory 64 bit access @@ -1961,25 +1965,11 @@ static ADDRESS_MAP_START( aw_map, AS_PROGRAM, 64, naomi_state ) //AM_RANGE(0x1c000000, 0x1fffffff) AM_NOP // SH4 Internal ADDRESS_MAP_END -/* - * Aica - */ -WRITE_LINE_MEMBER(naomi_state::aica_irq) -{ - m_soundcpu->set_input_line(ARM7_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); -} +static ADDRESS_MAP_START( aw_port, AS_IO, 64, atomiswave_state ) +// ??? +ADDRESS_MAP_END -WRITE_LINE_MEMBER(naomi_state::sh4_aica_irq) -{ - if(state) - dc_sysctrl_regs[SB_ISTEXT] |= IST_EXT_AICA; - else - dc_sysctrl_regs[SB_ISTEXT] &= ~IST_EXT_AICA; - - dc_update_interrupt_status(); -} - -static ADDRESS_MAP_START( dc_audio_map, AS_PROGRAM, 32, naomi_state ) +static ADDRESS_MAP_START( dc_audio_map, AS_PROGRAM, 32, dc_state ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_SHARE("dc_sound_ram") /* shared with SH-4 */ AM_RANGE(0x00800000, 0x00807fff) AM_READWRITE(dc_arm_aica_r, dc_arm_aica_w) @@ -1989,13 +1979,6 @@ ADDRESS_MAP_END * Input ports */ -// crude cheat pending SH4 DRC, especially useful for inp playback -INPUT_CHANGED_MEMBER(naomi_state::naomi_mastercpu_cheat_r) -{ - const u32 timing_value[4] = { CPU_CLOCK, CPU_CLOCK/2, CPU_CLOCK/4, CPU_CLOCK/16 }; - m_maincpu->set_unscaled_clock(timing_value[newval]); -} - INPUT_PORTS_START( naomi_debug ) PORT_START("MAMEDEBUG") PORT_CONFNAME( 0x01, 0x00, "Bilinear Filtering" ) @@ -2004,7 +1987,7 @@ INPUT_PORTS_START( naomi_debug ) PORT_CONFNAME( 0x02, 0x00, "Disable Render Calls" ) PORT_CONFSETTING( 0x00, DEF_STR( No ) ) PORT_CONFSETTING( 0x02, DEF_STR( Yes ) ) - PORT_CONFNAME( 0x0c, 0x00, "Master CPU Clock Rate (Cheat)") PORT_CHANGED_MEMBER(DEVICE_SELF, naomi_state, naomi_mastercpu_cheat_r, nullptr) + PORT_CONFNAME( 0x0c, 0x00, "Master CPU Clock Rate (Cheat)") PORT_CHANGED_MEMBER(DEVICE_SELF, dc_state, mastercpu_cheat_r, nullptr) PORT_CONFSETTING( 0x00, "100%" ) PORT_CONFSETTING( 0x04, "50%" ) PORT_CONFSETTING( 0x08, "25%" ) @@ -2680,7 +2663,8 @@ MACHINE_RESET_MEMBER(naomi_state,naomi) * Common for Naomi 1, Naomi GD-Rom, Naomi 2, Atomiswave ... */ -MACHINE_CONFIG_START( naomi_aw_base, naomi_state ) + // TODO: merge with Dreamcast base machine + MACHINE_CONFIG_START( naomi_aw_base, dc_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SH4LE, CPU_CLOCK) // SH4!!! MCFG_SH4_MD0(1) @@ -2702,11 +2686,6 @@ MACHINE_CONFIG_START( naomi_aw_base, naomi_state ) MCFG_MAPLE_DC_ADD( "maple_dc", "maincpu", dc_maple_irq ) - MCFG_MACHINE_RESET_OVERRIDE(naomi_state,naomi) - - MCFG_EEPROM_SERIAL_93C46_ADD("main_eeprom") - MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(13458568*2, 820, 0, 640, 532, 0, 480) /* TODO: where pclk actually comes? */ @@ -2717,8 +2696,8 @@ MACHINE_CONFIG_START( naomi_aw_base, naomi_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SOUND_ADD("aica", AICA, 0) MCFG_AICA_MASTER - MCFG_AICA_IRQ_CB(WRITELINE(naomi_state, aica_irq)) - MCFG_AICA_MAIN_IRQ_CB(WRITELINE(naomi_state, sh4_aica_irq)) + MCFG_AICA_IRQ_CB(WRITELINE(dc_state, aica_irq)) + MCFG_AICA_MAIN_IRQ_CB(WRITELINE(dc_state, sh4_aica_irq)) MCFG_SOUND_ROUTE(0, "lspeaker", 2.0) MCFG_SOUND_ROUTE(1, "rspeaker", 2.0) @@ -2726,13 +2705,19 @@ MACHINE_CONFIG_START( naomi_aw_base, naomi_state ) MCFG_AICARTC_ADD("aicartc", XTAL_32_768kHz ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( naomi_base, naomi_aw_base ) +static MACHINE_CONFIG_START( naomi_base, naomi_state ) + MCFG_FRAGMENT_ADD( naomi_aw_base ) + + MCFG_EEPROM_SERIAL_93C46_ADD("main_eeprom") + MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0) + MCFG_MIE_ADD("mie", XTAL_32MHz/2, "maple_dc", 0, nullptr, nullptr, nullptr, ":MIE.3", nullptr, ":MIE.5", nullptr, nullptr) // Actual frequency unknown, most likely 1/2 of 32MHz XTAL or even 2/3 (yes, 21MHz Z80 core) MCFG_SEGA_837_13551_DEVICE_ADD("837_13551", "mie", ":TILT", ":P1", ":P2", ":A0", ":A1", ":A2", ":A3", ":A4", ":A5", ":A6", ":A7", ":OUTPUT") MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("mie_eeprom") MCFG_X76F100_ADD("naomibd_eeprom") MCFG_M3COMM_ADD("comm_board") + MCFG_MACHINE_RESET_OVERRIDE(naomi_state,naomi) MACHINE_CONFIG_END /* @@ -2788,7 +2773,9 @@ MACHINE_CONFIG_END * Naomi 2 GD-Rom */ -static MACHINE_CONFIG_DERIVED( naomi2gd, naomigd ) +static MACHINE_CONFIG_START( naomi2gd, naomi2_state ) + MCFG_FRAGMENT_ADD( naomigd ) + MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(naomi2_map) MACHINE_CONFIG_END @@ -2797,7 +2784,9 @@ MACHINE_CONFIG_END * Naomi 2, M1 sub-board */ -static MACHINE_CONFIG_DERIVED( naomi2m1, naomim1 ) +static MACHINE_CONFIG_START( naomi2m1, naomi2_state ) + MCFG_FRAGMENT_ADD( naomim1 ) + MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(naomi2_map) MACHINE_CONFIG_END @@ -2806,7 +2795,9 @@ MACHINE_CONFIG_END * Naomi 2, M2/3 sub-board */ -static MACHINE_CONFIG_DERIVED( naomi2m2, naomim2 ) +static MACHINE_CONFIG_START( naomi2m2, naomi2_state ) + MCFG_FRAGMENT_ADD( naomim2 ) + MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(naomi2_map) MACHINE_CONFIG_END @@ -2815,15 +2806,24 @@ MACHINE_CONFIG_END * Atomiswave */ -static MACHINE_CONFIG_DERIVED( aw_base, naomi_aw_base ) +static MACHINE_CONFIG_START( aw_base, atomiswave_state ) + MCFG_FRAGMENT_ADD( naomi_aw_base ) + MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(aw_map) + MCFG_CPU_IO_MAP(aw_port) MCFG_MACRONIX_29L001MC_ADD("awflash") MCFG_AW_ROM_BOARD_ADD("rom_board", "rom_key", WRITE8(dc_state, g1_irq)) + + //MCFG_CPU_MODIFY("soundcpu") + //MCFG_CPU_PROGRAM_MAP(aw_sound_map) + + MCFG_MACHINE_RESET_OVERRIDE(dc_state,dc_console) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( aw1c, aw_base ) MCFG_DC_CONTROLLER_ADD("dcctrl0", "maple_dc", 0, ":P1.0", ":P1.1", ":P1.A0", ":P1.A1", ":P1.A2", ":P1.A3", ":P1.A4", ":P1.A5") + // TODO: isn't it supposed to be just one controller? MCFG_DC_CONTROLLER_ADD("dcctrl1", "maple_dc", 1, ":P2.0", ":P2.1", ":P2.A0", ":P2.A1", ":P2.A2", ":P2.A3", ":P2.A4", ":P2.A5") MACHINE_CONFIG_END @@ -9046,7 +9046,7 @@ ROM_END // EN cartridges have this area empty (FF-filled), i.e. AW-NET features not used. // JP cartridges have it filled with unique ID, which also means dumps of several JP cartridges will differ by this few bytes. -DRIVER_INIT_MEMBER(naomi_state,atomiswave) +DRIVER_INIT_MEMBER(atomiswave_state,atomiswave) { uint64_t *ROM = (uint64_t *)memregion("awflash")->base(); @@ -9056,7 +9056,7 @@ DRIVER_INIT_MEMBER(naomi_state,atomiswave) aw_ctrl_type = 0; } -READ64_MEMBER(naomi_state::xtrmhnt2_hack_r) +READ64_MEMBER(atomiswave_state::xtrmhnt2_hack_r) { // disable ALL.Net board check if (space.device().safe_pc() == 0xc03cb30) @@ -9071,10 +9071,10 @@ READ64_MEMBER(naomi_state::xtrmhnt2_hack_r) return 0; } -DRIVER_INIT_MEMBER(naomi_state,xtrmhnt2) +DRIVER_INIT_MEMBER(atomiswave_state,xtrmhnt2) { DRIVER_INIT_CALL(atomiswave); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000000, 0x100011f, read64_delegate(FUNC(naomi_state::xtrmhnt2_hack_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000000, 0x100011f, read64_delegate(FUNC(atomiswave_state::xtrmhnt2_hack_r), this)); } ROM_START( fotns ) @@ -9747,20 +9747,20 @@ ROM_END /* ???? */ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Puyo Puyo Fever (prototype ver 0.01)", GAME_FLAGS ) /* 840-xxxxx (Sega Naomi 2 cart games) */ -/* 0046 */ GAME( 2001, wldrider, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Wild Riders", GAME_FLAGS ) -/* 0061 */ GAME( 2001, vstrik3co,vstrik3c,naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (World)", GAME_FLAGS ) // not for Japan -/* 0061 */ GAME( 2001, vstrik3c, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (World, Rev B)", GAME_FLAGS ) // not for Japan -/* 0062 */ GAME( 2001, clubkrto, clubkrt, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session", GAME_FLAGS ) -/* 0062 */ GAME( 2001, clubkrtc, clubkrt, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (Rev C)", GAME_FLAGS ) -/* 0062 */ GAME( 2001, clubkrt, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (Rev D)", GAME_FLAGS ) -/* 0080 */ GAME( 2002, vf4cart, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 (World)", GAME_FLAGS ) // not for Japan -/* 0087 */ GAME( 2002, kingrt66, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "The King of Route 66 (Rev A)", GAME_FLAGS ) -/* 0095 */ GAME( 2002, soulsurf, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Soul Surfer (Rev A)", GAME_FLAGS ) -/* 0106 */ GAME( 2002, vf4evoct, naomi2, naomi2m1, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Evolution (World)", GAME_FLAGS ) // not for Japan -/* 0129 */ GAME( 2003, clubkprz, naomi2, naomi2m1, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart Prize (Export, Japan)", GAME_FLAGS ) -/* 0137 */ GAME( 2004, clubkpzb, naomi2, naomi2m1, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart Prize Version B (Export, Japan)", GAME_FLAGS ) -/* 0139 */ GAME( 2003, clubk2k3, naomi2, naomi2m1, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (2003, Rev A)", GAME_FLAGS ) -/* none */ GAME( 2003, clubk2kp, clubk2k3,naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (2003, prototype)", GAME_FLAGS ) +/* 0046 */ GAME( 2001, wldrider, naomi2, naomi2m2, naomi, naomi2_state, naomi2, ROT0, "Sega", "Wild Riders", GAME_FLAGS ) +/* 0061 */ GAME( 2001, vstrik3co,vstrik3c,naomi2m2, naomi, naomi2_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (World)", GAME_FLAGS ) // not for Japan +/* 0061 */ GAME( 2001, vstrik3c, naomi2, naomi2m2, naomi, naomi2_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (World, Rev B)", GAME_FLAGS ) // not for Japan +/* 0062 */ GAME( 2001, clubkrto, clubkrt, naomi2m2, naomi, naomi2_state, naomi2, ROT0, "Sega", "Club Kart: European Session", GAME_FLAGS ) +/* 0062 */ GAME( 2001, clubkrtc, clubkrt, naomi2m2, naomi, naomi2_state, naomi2, ROT0, "Sega", "Club Kart: European Session (Rev C)", GAME_FLAGS ) +/* 0062 */ GAME( 2001, clubkrt, naomi2, naomi2m2, naomi, naomi2_state, naomi2, ROT0, "Sega", "Club Kart: European Session (Rev D)", GAME_FLAGS ) +/* 0080 */ GAME( 2002, vf4cart, naomi2, naomi2m2, naomi, naomi2_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 (World)", GAME_FLAGS ) // not for Japan +/* 0087 */ GAME( 2002, kingrt66, naomi2, naomi2m2, naomi, naomi2_state, naomi2, ROT0, "Sega", "The King of Route 66 (Rev A)", GAME_FLAGS ) +/* 0095 */ GAME( 2002, soulsurf, naomi2, naomi2m2, naomi, naomi2_state, naomi2, ROT0, "Sega", "Soul Surfer (Rev A)", GAME_FLAGS ) +/* 0106 */ GAME( 2002, vf4evoct, naomi2, naomi2m1, naomi, naomi2_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Evolution (World)", GAME_FLAGS ) // not for Japan +/* 0129 */ GAME( 2003, clubkprz, naomi2, naomi2m1, naomi, naomi2_state, naomi2, ROT0, "Sega", "Club Kart Prize (Export, Japan)", GAME_FLAGS ) +/* 0137 */ GAME( 2004, clubkpzb, naomi2, naomi2m1, naomi, naomi2_state, naomi2, ROT0, "Sega", "Club Kart Prize Version B (Export, Japan)", GAME_FLAGS ) +/* 0139 */ GAME( 2003, clubk2k3, naomi2, naomi2m1, naomi, naomi2_state, naomi2, ROT0, "Sega", "Club Kart: European Session (2003, Rev A)", GAME_FLAGS ) +/* none */ GAME( 2003, clubk2kp, clubk2k3,naomi2m2, naomi, naomi2_state, naomi2, ROT0, "Sega", "Club Kart: European Session (2003, prototype)", GAME_FLAGS ) /* 841-xxxxx ("Licensed by Sega" Naomi cart games)*/ /* 0001 */ GAME( 1999, pstone, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Capcom", "Power Stone", GAME_FLAGS ) @@ -9816,19 +9816,19 @@ ROM_END /* 0003 */ GAME( 2000, sprtjam, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Sports Jam (GDS-0003)", GAME_FLAGS ) /* 0004 */ GAME( 2000, slashout, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Slashout (GDS-0004)", GAME_FLAGS ) /* 0005 */ GAME( 2001, spkrbtl, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Spikers Battle (GDS-0005)", GAME_FLAGS ) -/* 0006 */ GAME( 2001, vstrik3, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (GDS-0006)", GAME_FLAGS ) +/* 0006 */ GAME( 2001, vstrik3, naomi2, naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (GDS-0006)", GAME_FLAGS ) // 0007 /* 0008 */ GAME( 2001, monkeyba, naomigd, naomigd, monkeyba,naomi_state, naomigd, ROT0, "Sega", "Monkey Ball (GDS-0008)", GAME_FLAGS ) // 0009 Dynamic Golf / Virtua Golf (GDS-0009) /* 0009A */ GAME( 2001, dygolf, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Virtua Golf / Dynamic Golf (Rev A) (GDS-0009A)", GAME_FLAGS ) /* 0010 */ GAME( 2001, wsbbgd, naomigd, naomigd, dybbnao, naomi_state, naomigd, ROT0, "Sega", "World Series Baseball / Super Major League (GDS-0010)", GAME_FLAGS ) /* 0011 */ GAME( 1999, vtennisg, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Virtua Tennis / Power Smash (GDS-0011)", GAME_FLAGS ) -/* 0012 */ GAME( 2001, vf4o, vf4, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 (GDS-0012)", GAME_FLAGS ) +/* 0012 */ GAME( 2001, vf4o, vf4, naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 (GDS-0012)", GAME_FLAGS ) // 0012A Virtua Fighter 4 (Rev A) (GDS-0012A) -/* 0012B */ GAME( 2001, vf4b, vf4, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 (Rev B) (GDS-0012B)", GAME_FLAGS ) -/* 0012C */ GAME( 2001, vf4, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Version C (GDS-0012C)", GAME_FLAGS ) +/* 0012B */ GAME( 2001, vf4b, vf4, naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 (Rev B) (GDS-0012B)", GAME_FLAGS ) +/* 0012C */ GAME( 2001, vf4, naomi2, naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Version C (GDS-0012C)", GAME_FLAGS ) /* 0013 */ GAME( 2001, shaktmsp, naomigd, naomigd, shaktamb, naomi_state, naomigd, ROT0, "Sega", "Shakatto Tambourine Motto Norinori Shinkyoku Tsuika (2K1 SPR) (GDS-0013)", GAME_FLAGS ) -/* 0014 */ GAME( 2001, beachspi, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Beach Spikers (GDS-0014)", GAME_FLAGS ) +/* 0014 */ GAME( 2001, beachspi, naomi2, naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Beach Spikers (GDS-0014)", GAME_FLAGS ) // 0015 Virtua Tennis 2 / Power Smash 2 (GDS-0015) /* 0015A */ GAME( 2001, vtennis2, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Virtua Tennis 2 / Power Smash 2 (Rev A) (GDS-0015A)", GAME_FLAGS ) /* 0016 */ GAME( 2001, shaktamb, naomigd, naomigd, shaktamb, naomi_state, naomigd, ROT0, "Sega", "Shakatto Tambourine Cho Powerup Chu (2K1 AUT) (GDS-0016)", GAME_FLAGS ) @@ -9836,9 +9836,9 @@ ROM_END /* 0018 */ GAME( 2001, lupinsho, naomigd, naomigd, hotd2, naomi_state, naomigd, ROT0, "Sega / Eighting", "Lupin The Third - The Shooting (GDS-0018)", GAME_FLAGS ) // 0018A Lupin The Third - The Shooting (Rev A) (GDS-0018A) /* 0019 */ GAME( 2002, vathlete, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Virtua Athletics / Virtua Athlete (GDS-0019)", GAME_FLAGS ) -/* 0020 */ GAME( 2002, initdo, initd, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage (Japan) (GDS-0020)", GAME_FLAGS ) +/* 0020 */ GAME( 2002, initdo, initd, naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage (Japan) (GDS-0020)", GAME_FLAGS ) // 0020A Initial D Arcade Stage (Rev A) (GDS-0020A) -/* 0020B */ GAME( 2002, initd, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage (Rev B) (Japan) (GDS-0020B)", GAME_FLAGS ) +/* 0020B */ GAME( 2002, initd, naomi2, naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage (Rev B) (Japan) (GDS-0020B)", GAME_FLAGS ) // 0021 Lupin The Third - The Typing (GDS-0021) /* 0021A */ GAME( 2002, luptype, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Lupin The Third - The Typing (Rev A) (GDS-0021A)", GAME_FLAGS ) /* 0022 */ GAME( 2002, mok, naomigd, naomigd, hotd2, naomi_state, naomigd, ROT0, "Sega", "The Maze of the Kings (GDS-0022)", GAME_FLAGS ) @@ -9849,39 +9849,39 @@ ROM_END // 0023D Naomi DIMM Firmware Updater (Rev D) (GDS-0023D) /* 0023E */ GAME( 2001, ngdup23e, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Naomi DIMM Firmware Updater (3.17) (GDS-0023E)", GAME_FLAGS ) // 0024 Virtua Fighter 4 Evolution (GDS-0024) -/* 0024A */ GAME( 2002, vf4evoa, vf4evo, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Evolution (Japan) (GDS-0024A)", GAME_FLAGS ) -/* 0024B */ GAME( 2002, vf4evo, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Evolution (Version B) (Japan) (GDS-0024B)", GAME_FLAGS ) -/* 0025 */ GAME( 2002, initdexpo,initdexp,naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage (Export) (GDS-0025)", GAME_FLAGS ) -/* 0025A */ GAME( 2002, initdexp, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage (Export) (Rev A) (GDS-0025A)", GAME_FLAGS ) -/* 0026 */ GAME( 2002, initdv2jo,initdv2j,naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 2 (Japan) (GDS-0026)", GAME_FLAGS ) +/* 0024A */ GAME( 2002, vf4evoa, vf4evo, naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Evolution (Japan) (GDS-0024A)", GAME_FLAGS ) +/* 0024B */ GAME( 2002, vf4evo, naomi2, naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Evolution (Version B) (Japan) (GDS-0024B)", GAME_FLAGS ) +/* 0025 */ GAME( 2002, initdexpo,initdexp,naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage (Export) (GDS-0025)", GAME_FLAGS ) +/* 0025A */ GAME( 2002, initdexp, naomi2, naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage (Export) (Rev A) (GDS-0025A)", GAME_FLAGS ) +/* 0026 */ GAME( 2002, initdv2jo,initdv2j,naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 2 (Japan) (GDS-0026)", GAME_FLAGS ) // 0026A Initial D Arcade Stage Ver. 2 (Japan) (Rev A) (GDS-0026A) -/* 0026B */ GAME( 2003, initdv2j, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 2 (Japan) (Rev B) (GDS-0026B)", GAME_FLAGS ) -/* 0027 */ GAME( 2003, initdv2e, initdv2j,naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 2 (Export) (GDS-0027)", GAME_FLAGS ) +/* 0026B */ GAME( 2003, initdv2j, naomi2, naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 2 (Japan) (Rev B) (GDS-0026B)", GAME_FLAGS ) +/* 0027 */ GAME( 2003, initdv2e, initdv2j,naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 2 (Export) (GDS-0027)", GAME_FLAGS ) // 0028 // 0029 Club Kart for Cycraft (GDS-0029) -/* 0029A */ GAME( 2003, clubkcyc, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart for Cycraft (Rev A) (GDS-0029A)", GAME_FLAGS ) +/* 0029A */ GAME( 2003, clubkcyc, naomi2, naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Club Kart for Cycraft (Rev A) (GDS-0029A)", GAME_FLAGS ) // 0030 /* 0031 */ GAME( 2003, puyofev, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Puyo Puyo Fever (Japan) (GDS-0031)", GAME_FLAGS ) // 0032 Initial D Arcade Stage Ver. 3 (Japan) (GDS-0032) // 0032A Initial D Arcade Stage Ver. 3 (Japan) (Rev A) (GDS-0032A) -/* 0032B */ GAME( 2004, initdv3jb,initdv3j,naomigd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 (Japan) (Rev B) (GDS-0032B)", GAME_FLAGS ) -/* 0032C */ GAME( 2004, initdv3j, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 (Japan) (Rev C) (GDS-0032C)", GAME_FLAGS ) -/* 0033 */ GAME( 2004, initdv3e, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 (Export) (GDS-0033)", GAME_FLAGS ) +/* 0032B */ GAME( 2004, initdv3jb,initdv3j,naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 (Japan) (Rev B) (GDS-0032B)", GAME_FLAGS ) +/* 0032C */ GAME( 2004, initdv3j, naomi2, naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 (Japan) (Rev C) (GDS-0032C)", GAME_FLAGS ) +/* 0033 */ GAME( 2004, initdv3e, naomi2, naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 (Export) (GDS-0033)", GAME_FLAGS ) // 0034 // 0035 // 0036 Virtua Fighter 4 Final Tuned (GDS-0036) -/* 0036A */ GAME( 2004, vf4tuneda,vf4tuned,naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Final Tuned (GDS-0036A)", GAME_FLAGS ) +/* 0036A */ GAME( 2004, vf4tuneda,vf4tuned,naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Final Tuned (GDS-0036A)", GAME_FLAGS ) // 0036B Virtua Fighter 4 Final Tuned (GDS-0036B) // 0036C Virtua Fighter 4 Final Tuned (GDS-0036C) -/* 0036D */ GAME( 2004, vf4tunedd,vf4tuned,naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Final Tuned (Ver. A) (GDS-0036D)", GAME_FLAGS ) +/* 0036D */ GAME( 2004, vf4tunedd,vf4tuned,naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Final Tuned (Ver. A) (GDS-0036D)", GAME_FLAGS ) // 0036E Virtua Fighter 4 Final Tuned (GDS-0036E) -/* 0036F */ GAME( 2004, vf4tuned, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Final Tuned (Ver. B) (GDS-0036F)", GAME_FLAGS ) +/* 0036F */ GAME( 2004, vf4tuned, naomi2, naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Final Tuned (Ver. B) (GDS-0036F)", GAME_FLAGS ) // 0037 Dragon Treasure 2 (GDS-0037) /* 0037A */ GAME( 2004, dragntr2, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Dragon Treasure 2 (Rev A) (GDS-0037A)", GAME_FLAGS ) // 0038 // 0039 Initial D Arcade Stage Ver. 3 Cycraft Edition (GDS-0039) -/* 0039A */ GAME( 2006, inidv3ca, inidv3cy,naomigd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 Cycraft Edition (Rev A) (GDS-0039A)", GAME_FLAGS ) -/* 0039B */ GAME( 2006, inidv3cy, naomi2, naomigd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 Cycraft Edition (Rev B) (GDS-0039B)", GAME_FLAGS ) +/* 0039A */ GAME( 2006, inidv3ca, inidv3cy,naomigd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 Cycraft Edition (Rev A) (GDS-0039A)", GAME_FLAGS ) +/* 0039B */ GAME( 2006, inidv3cy, naomi2, naomigd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 Cycraft Edition (Rev B) (GDS-0039B)", GAME_FLAGS ) // 0040 // 0041 Dragon Treasure 3 (GDS-0041) /* 0041A */ GAME( 2005, dragntr3, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Dragon Treasure 3 (Rev A) (GDS-0041A)", GAME_FLAGS ) @@ -9973,36 +9973,36 @@ ROM_END /* Atomiswave */ -GAME( 2001, awbios, 0, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Atomiswave Bios", GAME_FLAGS|MACHINE_IS_BIOS_ROOT ) +GAME( 2001, awbios, 0, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sammy", "Atomiswave Bios", GAME_FLAGS|MACHINE_IS_BIOS_ROOT ) -GAME( 2003, maxspeed, awbios, aw1c, aw1w, naomi_state, atomiswave, ROT0, "SIMS / Sammy", "Maximum Speed", GAME_FLAGS ) -GAME( 2003, sprtshot, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy USA", "Sports Shooting USA", GAME_FLAGS ) -GAME( 2003, ggx15, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Arc System Works / Sammy", "Guilty Gear X ver. 1.5", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING ) -GAME( 2003, demofist, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Polygon Magic / Dimps", "Demolish Fist", GAME_FLAGS ) -GAME( 2003, dolphin, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Dolphin Blue", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING ) -GAME( 2003, kov7sprt, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "IGS / Sammy", "Knights of Valour - The Seven Spirits", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING ) -GAME( 2003, ggisuka, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Arc System Works / Sammy", "Guilty Gear Isuka", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING ) -GAME( 2003, sushibar, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Sushi Bar", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND ) -GAME( 2004, dirtypig, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Dirty Pigskin Football", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING ) -GAME( 2004, rumblef, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / Dimps", "The Rumble Fish", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING ) -GAME( 2004, rumblefp, rumblef, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / Dimps", "The Rumble Fish (prototype)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING ) -GAME( 2004, rangrmsn, awbios, aw2c, aw1w, naomi_state, atomiswave, ROT0, "RIZ Inc./ Sammy", "Ranger Mission", GAME_FLAGS ) -GAME( 2004, salmankt, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Yuki Enterprise / Sammy", "Net Select: Salaryman Kintaro", GAME_FLAGS ) -GAME( 2004, ftspeed, awbios, aw1c, aw1w, naomi_state, atomiswave, ROT0, "Sammy", "Faster Than Speed", GAME_FLAGS ) -GAME( 2005, vfurlong, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Progress / Sammy", "Net Select Horse Racing: Victory Furlong", GAME_FLAGS ) -GAME( 2005, rumblef2, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / Dimps", "The Rumble Fish 2", GAME_FLAGS ) -GAME( 2005, rumblf2p, rumblef2, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / Dimps", "The Rumble Fish 2 (prototype)", GAME_FLAGS ) -GAME( 2005, anmlbskt, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT270, "MOSS / Sammy", "Animal Basket", GAME_FLAGS ) -GAME( 2005, ngbc, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / SNK Playmore", "NeoGeo Battle Coliseum", GAME_FLAGS ) -GAME( 2005, ngbcj, ngbc, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / SNK Playmore", "NeoGeo Battle Coliseum (Japan)", GAME_FLAGS ) -GAME( 2005, samsptk, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / SNK Playmore", "Samurai Spirits Tenkaichi Kenkakuden", GAME_FLAGS ) -GAME( 2005, kofxi, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / SNK Playmore", "The King of Fighters XI", GAME_FLAGS ) -GAME( 2005, fotns, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Arc System Works / Sega", "Fist Of The North Star", GAME_FLAGS ) -GAME( 2005, kofnw, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / SNK Playmore", "The King of Fighters Neowave", GAME_FLAGS ) -GAME( 2005, kofnwj, kofnw, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / SNK Playmore", "The King of Fighters Neowave (Japan)", GAME_FLAGS ) -GAME( 2005, xtrmhunt, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Extreme Hunting", GAME_FLAGS ) -GAME( 2006, mslug6, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sega / SNK Playmore", "Metal Slug 6", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING ) -GAME( 2006, xtrmhnt2, awbios, aw2c, aw2c, naomi_state, xtrmhnt2, ROT0, "Sega", "Extreme Hunting 2", GAME_FLAGS ) -GAME( 2008, claychal, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sega", "Sega Clay Challenge", GAME_FLAGS ) -GAME( 2009, basschalo, basschal, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sega", "Sega Bass Fishing Challenge", GAME_FLAGS ) -GAME( 2009, basschal, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sega", "Sega Bass Fishing Challenge Version A", GAME_FLAGS ) +GAME( 2003, maxspeed, awbios, aw1c, aw1w, atomiswave_state, atomiswave, ROT0, "SIMS / Sammy", "Maximum Speed", GAME_FLAGS ) +GAME( 2003, sprtshot, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sammy USA", "Sports Shooting USA", GAME_FLAGS ) +GAME( 2003, ggx15, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Arc System Works / Sammy", "Guilty Gear X ver. 1.5", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING ) +GAME( 2003, demofist, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Polygon Magic / Dimps", "Demolish Fist", GAME_FLAGS ) +GAME( 2003, dolphin, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sammy", "Dolphin Blue", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING ) +GAME( 2003, kov7sprt, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "IGS / Sammy", "Knights of Valour - The Seven Spirits", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING ) +GAME( 2003, ggisuka, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Arc System Works / Sammy", "Guilty Gear Isuka", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING ) +GAME( 2003, sushibar, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sammy", "Sushi Bar", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND ) +GAME( 2004, dirtypig, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sammy", "Dirty Pigskin Football", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING ) +GAME( 2004, rumblef, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sammy / Dimps", "The Rumble Fish", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING ) +GAME( 2004, rumblefp, rumblef, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sammy / Dimps", "The Rumble Fish (prototype)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING ) +GAME( 2004, rangrmsn, awbios, aw2c, aw1w, atomiswave_state, atomiswave, ROT0, "RIZ Inc./ Sammy", "Ranger Mission", GAME_FLAGS ) +GAME( 2004, salmankt, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Yuki Enterprise / Sammy", "Net Select: Salaryman Kintaro", GAME_FLAGS ) +GAME( 2004, ftspeed, awbios, aw1c, aw1w, atomiswave_state, atomiswave, ROT0, "Sammy", "Faster Than Speed", GAME_FLAGS ) +GAME( 2005, vfurlong, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Progress / Sammy", "Net Select Horse Racing: Victory Furlong", GAME_FLAGS ) +GAME( 2005, rumblef2, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sammy / Dimps", "The Rumble Fish 2", GAME_FLAGS ) +GAME( 2005, rumblf2p, rumblef2, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sammy / Dimps", "The Rumble Fish 2 (prototype)", GAME_FLAGS ) +GAME( 2005, anmlbskt, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT270, "MOSS / Sammy", "Animal Basket", GAME_FLAGS ) +GAME( 2005, ngbc, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sammy / SNK Playmore", "NeoGeo Battle Coliseum", GAME_FLAGS ) +GAME( 2005, ngbcj, ngbc, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sammy / SNK Playmore", "NeoGeo Battle Coliseum (Japan)", GAME_FLAGS ) +GAME( 2005, samsptk, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sammy / SNK Playmore", "Samurai Spirits Tenkaichi Kenkakuden", GAME_FLAGS ) +GAME( 2005, kofxi, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sammy / SNK Playmore", "The King of Fighters XI", GAME_FLAGS ) +GAME( 2005, fotns, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Arc System Works / Sega", "Fist Of The North Star", GAME_FLAGS ) +GAME( 2005, kofnw, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sammy / SNK Playmore", "The King of Fighters Neowave", GAME_FLAGS ) +GAME( 2005, kofnwj, kofnw, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sammy / SNK Playmore", "The King of Fighters Neowave (Japan)", GAME_FLAGS ) +GAME( 2005, xtrmhunt, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sammy", "Extreme Hunting", GAME_FLAGS ) +GAME( 2006, mslug6, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sega / SNK Playmore", "Metal Slug 6", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING ) +GAME( 2006, xtrmhnt2, awbios, aw2c, aw2c, atomiswave_state, xtrmhnt2, ROT0, "Sega", "Extreme Hunting 2", GAME_FLAGS ) +GAME( 2008, claychal, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sega", "Sega Clay Challenge", GAME_FLAGS ) +GAME( 2009, basschalo, basschal, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sega", "Sega Bass Fishing Challenge", GAME_FLAGS ) +GAME( 2009, basschal, awbios, aw2c, aw2c, atomiswave_state, atomiswave, ROT0, "Sega", "Sega Bass Fishing Challenge Version A", GAME_FLAGS ) diff --git a/src/mame/includes/dc.h b/src/mame/includes/dc.h index 0d4f86e300a..8ea4f134014 100644 --- a/src/mame/includes/dc.h +++ b/src/mame/includes/dc.h @@ -77,7 +77,12 @@ class dc_state : public driver_device DECLARE_WRITE64_MEMBER( dc_modem_w ); DECLARE_WRITE8_MEMBER( g1_irq ); DECLARE_WRITE8_MEMBER( pvr_irq ); - + DECLARE_READ64_MEMBER( sh4_soundram_r ); + DECLARE_WRITE64_MEMBER( sh4_soundram_w ); + DECLARE_WRITE_LINE_MEMBER(aica_irq); + DECLARE_WRITE_LINE_MEMBER(sh4_aica_irq); + + required_device m_maincpu; required_device m_soundcpu; required_device m_powervr2; @@ -87,6 +92,9 @@ class dc_state : public driver_device void generic_dma(uint32_t main_adr, void *dma_ptr, uint32_t length, uint32_t size, bool to_mainram); TIMER_DEVICE_CALLBACK_MEMBER(dc_scanline); + DECLARE_MACHINE_RESET(dc_console); + + DECLARE_INPUT_CHANGED_MEMBER(mastercpu_cheat_r); }; /*--------- Ch2-DMA Control Registers ----------*/ diff --git a/src/mame/includes/dccons.h b/src/mame/includes/dccons.h index 8c7d3ba7bb6..90767a3219b 100644 --- a/src/mame/includes/dccons.h +++ b/src/mame/includes/dccons.h @@ -24,7 +24,6 @@ public: DECLARE_READ64_MEMBER(dcus_idle_skip_r); DECLARE_READ64_MEMBER(dcjp_idle_skip_r); - DECLARE_MACHINE_RESET(dc_console); DECLARE_READ64_MEMBER(dc_pdtra_r); DECLARE_WRITE64_MEMBER(dc_pdtra_w); DECLARE_READ64_MEMBER(dc_arm_r); diff --git a/src/mame/includes/naomi.h b/src/mame/includes/naomi.h index 1f9c498f798..c200779d06a 100644 --- a/src/mame/includes/naomi.h +++ b/src/mame/includes/naomi.h @@ -35,34 +35,21 @@ enum { JVSBD_MAHJONG, JVSBD_KEYBOARD }; + class naomi_state : public dc_state { public: naomi_state(const machine_config &mconfig, device_type type, const char *tag) : dc_state(mconfig, type, tag), - pvr2_texture_ram(*this, "textureram2"), - pvr2_framebuffer_ram(*this, "frameram2"), - elan_ram(*this, "elan_ram"), - m_awflash(*this, "awflash"), m_eeprom(*this, "main_eeprom") { } - /* Naomi 2 specific (To be moved) */ - optional_shared_ptr pvr2_texture_ram; - optional_shared_ptr pvr2_framebuffer_ram; - optional_shared_ptr elan_ram; - optional_device m_awflash; - optional_device m_eeprom; + required_device m_eeprom; - DECLARE_WRITE_LINE_MEMBER(aica_irq); - DECLARE_WRITE_LINE_MEMBER(sh4_aica_irq); DECLARE_MACHINE_RESET(naomi); - DECLARE_DRIVER_INIT(atomiswave); - DECLARE_DRIVER_INIT(xtrmhnt2); DECLARE_DRIVER_INIT(naomigd); DECLARE_DRIVER_INIT(ggxx); DECLARE_DRIVER_INIT(ggxxrl); DECLARE_DRIVER_INIT(ggxxsla); - DECLARE_DRIVER_INIT(naomi2); DECLARE_DRIVER_INIT(naomi); DECLARE_DRIVER_INIT(naomigd_mp); DECLARE_DRIVER_INIT(sfz3ugd); @@ -75,20 +62,11 @@ class naomi_state : public dc_state DECLARE_WRITE64_MEMBER( naomi_unknown1_w ); DECLARE_READ64_MEMBER( eeprom_93c46a_r ); DECLARE_WRITE64_MEMBER( eeprom_93c46a_w ); - DECLARE_READ64_MEMBER( aw_flash_r ); - DECLARE_WRITE64_MEMBER( aw_flash_w ); - DECLARE_READ64_MEMBER( aw_modem_r ); - DECLARE_WRITE64_MEMBER( aw_modem_w ); uint8_t m_mp_mux; DECLARE_CUSTOM_INPUT_MEMBER(naomi_mp_r); - DECLARE_INPUT_CHANGED_MEMBER(naomi_mastercpu_cheat_r); DECLARE_INPUT_CHANGED_MEMBER(naomi_mp_w); - inline int decode_reg32_64(uint32_t offset, uint64_t mem_mask, uint64_t *shift); - - uint8_t aw_ctrl_type; - uint8_t asciihex_to_dec(uint8_t in); void create_pic_from_retdat(); @@ -100,8 +78,51 @@ class naomi_state : public dc_state DECLARE_READ64_MEMBER( naomigd_ggxxrl_idle_skip_r ); DECLARE_READ64_MEMBER( naomigd_sfz3ugd_idle_skip_r ); DECLARE_READ64_MEMBER( hotd2_idle_skip_r ); - DECLARE_READ64_MEMBER( xtrmhnt2_hack_r ); }; -MACHINE_CONFIG_EXTERN(naomi_aw_base); +class naomi2_state : public naomi_state +{ +public: + naomi2_state(const machine_config &mconfig, device_type type, const char *tag) + : naomi_state(mconfig, type, tag), + pvr2_texture_ram(*this, "textureram2"), + pvr2_framebuffer_ram(*this, "frameram2"), + elan_ram(*this, "elan_ram") { } + + /* Naomi 2 specific (To be moved) */ + required_shared_ptr pvr2_texture_ram; + required_shared_ptr pvr2_framebuffer_ram; + required_shared_ptr elan_ram; + + DECLARE_DRIVER_INIT(naomi2); +}; + +class atomiswave_state : public dc_state +{ +public: + atomiswave_state(const machine_config &mconfig, device_type type, const char *tag) + : dc_state(mconfig, type, tag), + m_awflash(*this, "awflash") + { } + + required_device m_awflash; + + DECLARE_READ64_MEMBER( aw_flash_r ); + DECLARE_WRITE64_MEMBER( aw_flash_w ); + DECLARE_READ64_MEMBER( aw_modem_r ); + DECLARE_WRITE64_MEMBER( aw_modem_w ); + DECLARE_READ64_MEMBER( aw_unknown1_r ); + DECLARE_WRITE64_MEMBER( aw_unknown1_w ); + + DECLARE_DRIVER_INIT(atomiswave); + DECLARE_DRIVER_INIT(xtrmhnt2); + + DECLARE_READ64_MEMBER( xtrmhnt2_hack_r ); + +protected: + uint8_t aw_ctrl_type; + inline int decode_reg32_64(uint32_t offset, uint64_t mem_mask, uint64_t *shift); +}; + +MACHINE_CONFIG_EXTERN( naomi_aw_base ); INPUT_PORTS_EXTERN( naomi_debug ); diff --git a/src/mame/machine/dc.cpp b/src/mame/machine/dc.cpp index 7b5d08dd79d..135f9e0d87a 100644 --- a/src/mame/machine/dc.cpp +++ b/src/mame/machine/dc.cpp @@ -10,6 +10,7 @@ #include "debugger.h" #include "includes/dc.h" #include "cpu/sh4/sh4.h" +#include "cpu/arm7/arm7core.h" #include "machine/mie.h" #include "machine/naomig1.h" #include "video/powervr2.h" @@ -718,7 +719,46 @@ WRITE32_MEMBER(dc_state::dc_arm_aica_w) m_aica->write(space, offset*2, data, mem_mask&0xffff); } +READ64_MEMBER(dc_state::sh4_soundram_r ) +{ + return *((uint64_t *)dc_sound_ram.target()+offset); +} + +WRITE64_MEMBER(dc_state::sh4_soundram_w ) +{ + COMBINE_DATA((uint64_t *)dc_sound_ram.target() + offset); +} + +WRITE_LINE_MEMBER(dc_state::aica_irq) +{ + m_soundcpu->set_input_line(ARM7_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); +} + +WRITE_LINE_MEMBER(dc_state::sh4_aica_irq) +{ + if(state) + dc_sysctrl_regs[SB_ISTEXT] |= IST_EXT_AICA; + else + dc_sysctrl_regs[SB_ISTEXT] &= ~IST_EXT_AICA; + + dc_update_interrupt_status(); +} + +MACHINE_RESET_MEMBER(dc_state,dc_console) +{ + dc_state::machine_reset(); + m_aica->set_ram_base(dc_sound_ram, 2*1024*1024); +} + TIMER_DEVICE_CALLBACK_MEMBER(dc_state::dc_scanline) { m_powervr2->pvr_scanline_timer(param); } + +// crude cheat pending SH4 DRC, especially useful for inp playback +INPUT_CHANGED_MEMBER(dc_state::mastercpu_cheat_r) +{ + const u32 CPU_CLOCK = (200000000); + const u32 timing_value[4] = { CPU_CLOCK, CPU_CLOCK/2, CPU_CLOCK/4, CPU_CLOCK/16 }; + m_maincpu->set_unscaled_clock(timing_value[newval]); +} diff --git a/src/mame/machine/naomi.cpp b/src/mame/machine/naomi.cpp index ce88e041838..c1a41b66be6 100644 --- a/src/mame/machine/naomi.cpp +++ b/src/mame/machine/naomi.cpp @@ -209,7 +209,7 @@ DRIVER_INIT_MEMBER(naomi_state,naomi) create_pic_from_retdat(); } -DRIVER_INIT_MEMBER(naomi_state,naomi2) +DRIVER_INIT_MEMBER(naomi2_state,naomi2) { m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2b0600, 0xc2b0607, read64_delegate(FUNC(naomi_state::naomi2_biose_idle_skip_r),this)); // rev e bios