From 3258eb60147808e5067e26f3bebcabe7b2bc658a Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Mon, 13 Aug 2012 06:01:28 +0000 Subject: [PATCH] More Sega updates: * Fully modernized X-board driver * Misc. cleanups New working games ----------------- AB Cop (Japan) [ShouTime] --- src/mame/drivers/segahang.c | 3 - src/mame/drivers/segaorun.c | 1283 ++++++++++--------- src/mame/drivers/segas16a.c | 16 +- src/mame/drivers/segas16b.c | 45 +- src/mame/drivers/segaxbd.c | 2318 +++++++++++++++++----------------- src/mame/includes/segaorun.h | 52 +- src/mame/includes/segaxbd.h | 95 +- src/mame/mame.lst | 5 +- src/mame/video/segaorun.c | 2 +- src/mame/video/segaxbd.c | 57 +- 10 files changed, 2002 insertions(+), 1874 deletions(-) diff --git a/src/mame/drivers/segahang.c b/src/mame/drivers/segahang.c index 83244070d82..418bb2a1116 100644 --- a/src/mame/drivers/segahang.c +++ b/src/mame/drivers/segahang.c @@ -1777,14 +1777,12 @@ DRIVER_INIT_MEMBER(segahang_state,sharrier) m_i8751_vblank_hook = i8751_sim_delegate(FUNC(segahang_state::sharrier_i8751_sim), this); } - DRIVER_INIT_MEMBER(segahang_state,enduror) { DRIVER_INIT_CALL(generic); m_sharrier_video = true; } - DRIVER_INIT_MEMBER(segahang_state,endurobl) { DRIVER_INIT_CALL(enduror); @@ -1797,7 +1795,6 @@ DRIVER_INIT_MEMBER(segahang_state,endurobl) m_maincpu->space(AS_PROGRAM)->set_decrypted_region(0x000000, 0x03ffff, decrypt); } - DRIVER_INIT_MEMBER(segahang_state,endurob2) { DRIVER_INIT_CALL(enduror); diff --git a/src/mame/drivers/segaorun.c b/src/mame/drivers/segaorun.c index 39ed1281f43..3fcf64a58e2 100644 --- a/src/mame/drivers/segaorun.c +++ b/src/mame/drivers/segaorun.c @@ -311,9 +311,13 @@ Notes: #include "outrun.lh" -#define MASTER_CLOCK (XTAL_40MHz) -#define SOUND_CLOCK (XTAL_16MHz) -#define MASTER_CLOCK_25MHz (XTAL_25_1748MHz) +//************************************************************************** +// CONSTANTS +//************************************************************************** + +const UINT32 MASTER_CLOCK = XTAL_40MHz; +const UINT32 SOUND_CLOCK = XTAL_16MHz; +const UINT32 MASTER_CLOCK_25MHz = XTAL_25_1748MHz; @@ -333,6 +337,72 @@ static I8255_INTERFACE(single_ppi_intf) +//************************************************************************** +// PPI READ/WRITE CALLBACKS +//************************************************************************** + +//------------------------------------------------- +// unknown_port*_r - loggers for reading +// unknown ports +//------------------------------------------------- + +READ8_MEMBER( segaorun_state::unknown_porta_r ) +{ + logerror("%06X:read from 8255 port A\n", m_maincpu->pc()); + return 0; +} + +READ8_MEMBER( segaorun_state::unknown_portb_r ) +{ + logerror("%06X:read from 8255 port B\n", m_maincpu->pc()); + return 0; +} + +READ8_MEMBER( segaorun_state::unknown_portc_r ) +{ + logerror("%06X:read from 8255 port C\n", m_maincpu->pc()); + return 0; +} + + +//------------------------------------------------- +// unknown_port*_w - loggers for writing +// unknown ports +//------------------------------------------------- + +WRITE8_MEMBER( segaorun_state::unknown_porta_w ) +{ + logerror("%06X:write %02X to 8255 port A\n", m_maincpu->pc(), data); +} + +WRITE8_MEMBER( segaorun_state::unknown_portb_w ) +{ + logerror("%06X:write %02X to 8255 port B\n", m_maincpu->pc(), data); +} + + +//------------------------------------------------- +// video_control_w - display enable, ADC select, +// sound interrupt control +//------------------------------------------------- + +WRITE8_MEMBER( segaorun_state::video_control_w ) +{ + // Output port: + // D7: SG1 -- connects to sprite chip + // D6: SG0 -- connects to mixing + // D5: Screen display (1= blanked, 0= displayed) + // D4-D2: (ADC2-0) + // D1: (CONT) - affects sprite hardware + // D0: Sound section reset (1= normal operation, 0= reset) + + segaic16_set_display_enable(machine(), data & 0x20); + m_adc_select = (data >> 2) & 7; + m_soundcpu->set_input_line(INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE); +} + + + //************************************************************************** // MEMORY MAPPING //************************************************************************** @@ -378,11 +448,6 @@ void segaorun_state::memory_mapper(sega_315_5195_mapper_device &mapper, UINT8 in } - -//************************************************************************** -// CONFIGURATION -//************************************************************************** - //------------------------------------------------- // mapper_sound_r - callback when the sound I/O // port on the memory mapper is read @@ -405,6 +470,53 @@ void segaorun_state::mapper_sound_w(UINT8 data) } + +//************************************************************************** +// MAIN CPU READ/WRITE HANDLERS +//************************************************************************** + +//------------------------------------------------- +// misc_io_r - miscellaneous I/O reads +//------------------------------------------------- + +READ16_MEMBER( segaorun_state::misc_io_r ) +{ + if (!m_custom_io_r.isnull()) + return m_custom_io_r(space, offset, mem_mask); + logerror("%06X:misc_io_r - unknown read access to address %04X\n", cpu_get_pc(&space.device()), offset * 2); + return segaic16_open_bus_r(&space, 0, mem_mask); +} + + +//------------------------------------------------- +// misc_io_w - miscellaneous I/O writes +//------------------------------------------------- + +WRITE16_MEMBER( segaorun_state::misc_io_w ) +{ + if (!m_custom_io_w.isnull()) + { + m_custom_io_w(space, offset, data, mem_mask); + return; + } + logerror("%06X:misc_io_w - unknown write access to address %04X = %04X & %04X\n", cpu_get_pc(&space.device()), offset * 2, data, mem_mask); +} + + +//------------------------------------------------- +// nop_w - no-op write when mapping ROMs as RAM +//------------------------------------------------- + +WRITE16_MEMBER( segaorun_state::nop_w ) +{ +} + + + +//************************************************************************** +// Z80 SOUND CPU READ/WRITE HANDLERS +//************************************************************************** + //------------------------------------------------- // sound_data_r - handle sound board reads from // the sound latch @@ -417,45 +529,33 @@ READ8_MEMBER( segaorun_state::sound_data_r ) } + +//************************************************************************** +// DRIVER OVERRIDES +//************************************************************************** + //------------------------------------------------- -// init_generic - common initialization +// machine_reset - reset the state of the machine //------------------------------------------------- -DRIVER_INIT_MEMBER(segaorun_state,generic) +void segaorun_state::machine_reset() { - // configure the NVRAM to point to our workram - if (m_nvram != NULL) - m_nvram->set_base(m_workram, m_workram.bytes()); + // reset misc components + if (m_custom_map != NULL) + m_mapper->configure_explicit(m_custom_map); + segaic16_tilemap_reset(machine(), 0); - // point globals to allocated memory regions - segaic16_spriteram_0 = reinterpret_cast(memshare("spriteram")->ptr()); - segaic16_paletteram = reinterpret_cast(memshare("paletteram")->ptr()); - segaic16_tileram_0 = reinterpret_cast(memshare("tileram")->ptr()); - segaic16_textram_0 = reinterpret_cast(memshare("textram")->ptr()); - segaic16_roadram_0 = reinterpret_cast(memshare("roadram")->ptr()); + // hook the RESET line, which resets CPU #1 + m68k_set_reset_callback(m_maincpu, m68k_reset_callback); - // save state - save_item(NAME(m_adc_select)); - save_item(NAME(m_vblank_irq_state)); - save_item(NAME(m_irq2_state)); + // start timers to track interrupts + m_scanline_timer->adjust(machine().primary_screen->time_until_pos(223), 223); } - -//************************************************************************** -// INITIALIZATION & INTERRUPTS -//************************************************************************** - -void segaorun_state::update_main_irqs() -{ - m_maincpu->set_input_line(2, m_irq2_state ? ASSERT_LINE : CLEAR_LINE); - m_maincpu->set_input_line(4, m_vblank_irq_state ? ASSERT_LINE : CLEAR_LINE); - m_maincpu->set_input_line(6, (m_vblank_irq_state && m_irq2_state) ? ASSERT_LINE : CLEAR_LINE); - - if (m_vblank_irq_state || m_irq2_state) - machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100)); -} - +//------------------------------------------------- +// device_timer - handle device timers +//------------------------------------------------- void segaorun_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { @@ -524,116 +624,13 @@ void segaorun_state::device_timer(emu_timer &timer, device_timer_id id, int para //************************************************************************** -// BASIC MACHINE SETUP +// CUSTOM I/O HANDLERS //************************************************************************** -void segaorun_state::m68k_reset_callback(device_t *device) -{ - segaorun_state *state = device->machine().driver_data(); - state->m_subcpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE); -} - - -void segaorun_state::machine_start() -{ - m_scanline_timer = timer_alloc(TID_SCANLINE); -} - - -void segaorun_state::machine_reset() -{ - // reset misc components - if (m_custom_map != NULL) - m_mapper->configure_explicit(m_custom_map); - segaic16_tilemap_reset(machine(), 0); - - // hook the RESET line, which resets CPU #1 - m68k_set_reset_callback(m_maincpu, m68k_reset_callback); - - // start timers to track interrupts - m_scanline_timer->adjust(machine().primary_screen->time_until_pos(223), 223); -} - - - -//************************************************************************** -// 8255 HANDLERS -//************************************************************************** - -READ8_MEMBER( segaorun_state::unknown_porta_r ) -{ - logerror("%06X:read from 8255 port A\n", cpu_get_pc(m_maincpu)); - return 0; -} - -READ8_MEMBER( segaorun_state::unknown_portb_r ) -{ - logerror("%06X:read from 8255 port B\n", cpu_get_pc(m_maincpu)); - return 0; -} - -READ8_MEMBER( segaorun_state::unknown_portc_r ) -{ - logerror("%06X:read from 8255 port C\n", cpu_get_pc(m_maincpu)); - return 0; -} - - -WRITE8_MEMBER( segaorun_state::unknown_porta_w ) -{ - logerror("%06X:write %02X to 8255 port A\n", cpu_get_pc(m_maincpu), data); -} - -WRITE8_MEMBER( segaorun_state::unknown_portb_w ) -{ - logerror("%06X:write %02X to 8255 port B\n", cpu_get_pc(m_maincpu), data); -} - -WRITE8_MEMBER( segaorun_state::video_control_w ) -{ - // Output port: - // D7: SG1 -- connects to sprite chip - // D6: SG0 -- connects to mixing - // D5: Screen display (1= blanked, 0= displayed) - // D4-D2: (ADC2-0) - // D1: (CONT) - affects sprite hardware - // D0: Sound section reset (1= normal operation, 0= reset) - - segaic16_set_display_enable(machine(), data & 0x20); - m_adc_select = (data >> 2) & 7; - m_soundcpu->set_input_line(INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE); -} - - - -//************************************************************************** -// I/O SPACE -//************************************************************************** - -READ16_MEMBER( segaorun_state::misc_io_r ) -{ - if (!m_custom_io_r.isnull()) - return m_custom_io_r(space, offset, mem_mask); - logerror("%06X:misc_io_r - unknown read access to address %04X\n", cpu_get_pc(&space.device()), offset * 2); - return segaic16_open_bus_r(&space, 0, mem_mask); -} - - -WRITE16_MEMBER( segaorun_state::nop_w ) -{ -} - - -WRITE16_MEMBER( segaorun_state::misc_io_w ) -{ - if (!m_custom_io_w.isnull()) - { - m_custom_io_w(space, offset, data, mem_mask); - return; - } - logerror("%06X:misc_io_w - unknown write access to address %04X = %04X & %04X\n", cpu_get_pc(&space.device()), offset * 2, data, mem_mask); -} - +//------------------------------------------------- +// outrun_custom_io_r - custom I/O read handler +// for Out Run +//------------------------------------------------- READ16_MEMBER( segaorun_state::outrun_custom_io_r ) { @@ -664,6 +661,11 @@ READ16_MEMBER( segaorun_state::outrun_custom_io_r ) } +//------------------------------------------------- +// outrun_custom_io_w - custom I/O write handler +// for Out Run +//------------------------------------------------- + WRITE16_MEMBER( segaorun_state::outrun_custom_io_w ) { offset &= 0x7f/2; @@ -680,7 +682,6 @@ WRITE16_MEMBER( segaorun_state::outrun_custom_io_w ) // Output port: // D7: /MUTE // D6-D0: unknown - machine().sound().system_enable(data & 0x80); } return; @@ -690,7 +691,7 @@ WRITE16_MEMBER( segaorun_state::outrun_custom_io_w ) return; case 0x60/2: - watchdog_reset_w(space,0,0); + machine().watchdog_reset(); return; case 0x70/2: @@ -701,6 +702,11 @@ WRITE16_MEMBER( segaorun_state::outrun_custom_io_w ) } +//------------------------------------------------- +// shangon_custom_io_r - custom I/O read handler +// for Super Hang-On +//------------------------------------------------- + READ16_MEMBER( segaorun_state::shangon_custom_io_r ) { offset &= 0x303f/2; @@ -726,6 +732,11 @@ READ16_MEMBER( segaorun_state::shangon_custom_io_r ) } +//------------------------------------------------- +// shangon_custom_io_w - custom I/O write handler +// for Super Hang-On +//------------------------------------------------- + WRITE16_MEMBER( segaorun_state::shangon_custom_io_w ) { offset &= 0x303f/2; @@ -735,7 +746,6 @@ WRITE16_MEMBER( segaorun_state::shangon_custom_io_w ) // Output port: // D7-D6: (ADC1-0) // D5: Screen display - m_adc_select = (data >> 6) & 3; segaic16_set_display_enable(machine(), (data >> 5) & 1); return; @@ -743,12 +753,11 @@ WRITE16_MEMBER( segaorun_state::shangon_custom_io_w ) case 0x0020/2: // Output port: // D0: Sound section reset (1= normal operation, 0= reset) - m_soundcpu->set_input_line(INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE); return; case 0x3000/2: - watchdog_reset_w(space, 0, 0); + machine().watchdog_reset(); return; case 0x3020/2: @@ -760,6 +769,41 @@ WRITE16_MEMBER( segaorun_state::shangon_custom_io_w ) +//************************************************************************** +// INTERNAL HELPERS +//************************************************************************** + +//------------------------------------------------- +// update_main_irqs - flush IRQ state to the +// CPU device +//------------------------------------------------- + +void segaorun_state::update_main_irqs() +{ + // update IRQ states on all IRQ lines + m_maincpu->set_input_line(2, m_irq2_state ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(4, m_vblank_irq_state ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(6, (m_vblank_irq_state && m_irq2_state) ? ASSERT_LINE : CLEAR_LINE); + + // boost interleave during VBLANK and IRQ2 signals + if (m_vblank_irq_state || m_irq2_state) + machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100)); +} + + +//------------------------------------------------- +// m68k_reset_callback - callback for when the +// main 68000 is reset +//------------------------------------------------- + +void segaorun_state::m68k_reset_callback(device_t *device) +{ + segaorun_state *state = device->machine().driver_data(); + state->m_subcpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE); +} + + + //************************************************************************** // MAIN CPU MEMORY MAP //************************************************************************** @@ -1011,20 +1055,8 @@ static const sega_pcm_interface segapcm_interface = // GRAPHICS DEFINITIONS //************************************************************************** -static const gfx_layout charlayout = -{ - 8,8, - RGN_FRAC(1,3), - 3, - { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) }, - { 0, 1, 2, 3, 4, 5, 6, 7 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 8*8 -}; - - static GFXDECODE_START( segaorun ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1024 ) + GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 1024 ) GFXDECODE_END @@ -1072,6 +1104,12 @@ static MACHINE_CONFIG_START( outrun_base, segaorun_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) MACHINE_CONFIG_END + + +//************************************************************************** +// GAME-SPECIFIC MACHINE DRIVERS +//************************************************************************** + static MACHINE_CONFIG_DERIVED( outrundx, outrun_base ) MCFG_SEGA16SP_ADD_OUTRUN("segaspr1") MACHINE_CONFIG_END @@ -1109,22 +1147,22 @@ MACHINE_CONFIG_END // ROM DEFINITIONS //************************************************************************** -/************************************************************************************************************************** - ************************************************************************************************************************** - ************************************************************************************************************************** - Outrun - CPU: 68000 - GAME BD 834-6065-02 (or 834-6065-04) - CPU BD 837-6063-02 (or 837-6095) - VIDEO BD 837-6064-02 (or 837-6096) -Note: GAME BD 834-6065-01 (or 834-6065-03) & CPU BD 837-6063-01 - Use EPR-10331 to EPR-10334 for the Main 68000 code, it's unknown if they are the same... they are not currently dumped - -Note: Manuals for Upright Standard and Sitdown Standard list the same Main & Sub CPU EPR codes. - Dipswitches are used to determine the machine type. - -*/ +//************************************************************************************************************************* +//************************************************************************************************************************* +//************************************************************************************************************************* +// Outrun +// CPU: 68000 +// GAME BD 834-6065-02 (or 834-6065-04) +// CPU BD 837-6063-02 (or 837-6095) +// VIDEO BD 837-6064-02 (or 837-6096) +// +// Note: GAME BD 834-6065-01 (or 834-6065-03) & CPU BD 837-6063-01 +// Use EPR-10331 to EPR-10334 for the Main 68000 code, it's unknown if they are the same... they are not currently dumped +// +// Note: Manuals for Upright Standard and Sitdown Standard list the same Main & Sub CPU EPR codes. +// Dipswitches are used to determine the machine type. +// ROM_START( outrun ) ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-10380b.133", 0x000000, 0x10000, CRC(1f6cadad) SHA1(31e870f307f44eb4f293b607123b623beee2bc3c) ) @@ -1179,13 +1217,13 @@ ROM_START( outrun ) ROM_RELOAD( 0x58000, 0x08000 ) ROM_END -/************************************************************************************************************************** - Outrun - CPU: 68000 - GAME BD 834-6065-02 (or 834-6065-04) - CPU BD 837-6063-02 - VIDEO BD 837-6064-02 -*/ +//************************************************************************************************************************* +// Outrun +// CPU: 68000 +// GAME BD 834-6065-02 (or 834-6065-04) +// CPU BD 837-6063-02 +// VIDEO BD 837-6064-02 +// ROM_START( outrunra ) ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-10380a.133", 0x000000, 0x10000, CRC(434fadbc) SHA1(83c861d331e69ef4f2452c313ae4b5ea9d8b7948) ) @@ -1240,14 +1278,13 @@ ROM_START( outrunra ) ROM_RELOAD( 0x58000, 0x08000 ) ROM_END -/************************************************************************************************************************** - Outrun - CPU: 68000 - GAME BD 834-6065-?? - CPU BD 837-6063-?? - VIDEO BD 837-6064-01 -*/ - +//************************************************************************************************************************* +// Outrun +// CPU: 68000 +// GAME BD 834-6065-?? +// CPU BD 837-6063-?? +// VIDEO BD 837-6064-01 +// ROM_START( outruno ) ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-10380.133", 0x000000, 0x10000, CRC(e339e87a) SHA1(ac319cdafb156adcf6be29ae1b82d46d3048022e) ) @@ -1326,14 +1363,13 @@ ROM_START( outruno ) ROM_RELOAD( 0x58000, 0x08000 ) ROM_END -/************************************************************************************************************************** - Outrun Deluxe - CPU: 68000 - GAME BD 834-6065 Rev A - CPU BD 837-6063 - VIDEO BD 837-6064-01 -*/ - +//************************************************************************************************************************* +// Outrun Deluxe +// CPU: 68000 +// GAME BD 834-6065 Rev A +// CPU BD 837-6063 +// VIDEO BD 837-6064-01 +// ROM_START( outrundx ) ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code // Earlier version of CPU BD?? uses half size eproms compared to the above sets @@ -1421,38 +1457,38 @@ ROM_START( outrundx ) ROM_RELOAD( 0x58000, 0x08000 ) ROM_END -/************************************************************************************************************************** - Outrun (bootleg) - - Outrun bootleg made by PHILKO - - It is composed of 3 boards. - - The upper board contains: - 2x 68000 cpus - 1x z80 cpu - 1x ym2151 - 1x 20mhz osc (near 68k) - 1x 16mhz osc (near z80) - 2x pots - 1x PHILKO custom chip quad package soldered (gfx chip?). it's marked "Philko PK8702 8717". - eproms from a-1 to a-14 - - Mid board contains: - many TTLs and rams - 1x NEC D8255AC-2 (I/O chip?) - 5x Philko custom chips dip package (little as a ttl). They are all marked "Philko PK8701 8720" - eproms a-15, a-16 and a-17 - - Lower board contains: - lots of rams - 1x custom Philko chip the size of a z80. it's marked "Philko PK8703" - 1x custom Philko chip the size of a z80. it's marked "Philko PK8704" - 1x custom Philko chip the size of a z80. it's marked "Philko PK8705" - eproms from a-18 to a-33 - - Dumped by Corrado Tomaselli -*/ +//************************************************************************************************************************* +// Outrun (bootleg) +// +// Outrun bootleg made by PHILKO +// +// It is composed of 3 boards. +// +// The upper board contains: +// 2x 68000 cpus +// 1x z80 cpu +// 1x ym2151 +// 1x 20mhz osc (near 68k) +// 1x 16mhz osc (near z80) +// 2x pots +// 1x PHILKO custom chip quad package soldered (gfx chip?). it's marked "Philko PK8702 8717". +// eproms from a-1 to a-14 +// +// Mid board contains: +// many TTLs and rams +// 1x NEC D8255AC-2 (I/O chip?) +// 5x Philko custom chips dip package (little as a ttl). They are all marked "Philko PK8701 8720" +// eproms a-15, a-16 and a-17 +// +// Lower board contains: +// lots of rams +// 1x custom Philko chip the size of a z80. it's marked "Philko PK8703" +// 1x custom Philko chip the size of a z80. it's marked "Philko PK8704" +// 1x custom Philko chip the size of a z80. it's marked "Philko PK8705" +// eproms from a-18 to a-33 +// +// Dumped by Corrado Tomaselli +// ROM_START( outrunb ) ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "a-10.bin", 0x000000, 0x10000, CRC(cddceea2) SHA1(34cb4ca61c941e96e585f3cd2aed79bdde67f8eb) ) @@ -1506,15 +1542,319 @@ ROM_START( outrunb ) ROM_END -/************************************************************************************************************************** - ************************************************************************************************************************** - ************************************************************************************************************************** - Turbo Outrun (Out Run upgrade set) - CPU: FD1094 (317-0118) - GAME BD 834-6919-12 - CPU BD 837-6905-12 - VIDEO BD 837-6906-02 -*/ +//************************************************************************************************************************* +//************************************************************************************************************************* +//************************************************************************************************************************* +// Super Hangon +// CPU: 68000 (317-????) +// GAME BD SUPER HANG-ON 834-6277-07 +// CPU BD SUPER HANG-ON 837-6278-01 (or 837-6278-03) +// VIDEO BD SUPER HANG-ON 837-6279-01 +// +ROM_START( shangon ) + ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code + ROM_LOAD16_BYTE( "epr-10886.133", 0x000000, 0x10000, CRC(8be3cd36) SHA1(de96481807e782ca441d51e99f1a221bdee7d170) ) + ROM_LOAD16_BYTE( "epr-10884.118", 0x000001, 0x10000, CRC(cb06150d) SHA1(840dada0cdeec444b554e6c1f2bdacc1047be567) ) + ROM_LOAD16_BYTE( "epr-10887.132", 0x020000, 0x10000, CRC(8d248bb0) SHA1(7d8ed61609fd0df203255e7d046d9d30983f1dcd) ) + ROM_LOAD16_BYTE( "epr-10885.117", 0x020001, 0x10000, CRC(70795f26) SHA1(332921b0a6534c4cbfe76ff957c721cc80d341b0) ) + + ROM_REGION( 0x60000, "subcpu", 0 ) // second 68000 CPU + ROM_LOAD16_BYTE( "epr-10792.76", 0x00000, 0x10000, CRC(16299d25) SHA1(b14d5feef3e6889320d51ffca36801f4c9c4d5f8) ) + ROM_LOAD16_BYTE( "epr-10790.58", 0x00001, 0x10000, CRC(2246cbc1) SHA1(c192b1ddf4c848adb564c7c87d5413d62ed650d7) ) + ROM_LOAD16_BYTE( "epr-10793.75", 0x20000, 0x10000, CRC(d9525427) SHA1(cdb24db9f7a293f20fd8becc4afe84fd6abd678a) ) + ROM_LOAD16_BYTE( "epr-10791.57", 0x20001, 0x10000, CRC(5faf4cbe) SHA1(41659a961e6469d9233849c3c587cd5a0a141344) ) + + ROM_REGION( 0x18000, "gfx1", 0 ) // tiles + ROM_LOAD( "epr-10652.54", 0x00000, 0x08000, CRC(260286f9) SHA1(dc7c8d2c6ef924a937328685eed19bda1c8b1819) ) + ROM_LOAD( "epr-10651.55", 0x08000, 0x08000, CRC(c609ee7b) SHA1(c6dacf81cbfe7e5df1f9a967cf571be1dcf1c429) ) + ROM_LOAD( "epr-10650.56", 0x10000, 0x08000, CRC(b236a403) SHA1(af02b8122794c083a66f2ab35d2c73b84b2df0be) ) + + ROM_REGION16_BE( 0x100000, "gfx2", 0 ) // sprites + // Super Hang-On Video board 837-6279-01 (mask rom type), same data but mask roms twice the size as "EPR" counterparts + ROM_LOAD16_BYTE( "mpr-10794.8", 0x000001, 0x020000, CRC(7c958e63) SHA1(ef79614e94280607a6cdf6e13db051accfd2add0) ) + ROM_LOAD16_BYTE( "mpr-10798.16", 0x000000, 0x020000, CRC(7d58f807) SHA1(783c9929d27a0270b3f7d5eb799cee6b2e5b7ae5) ) + ROM_LOAD16_BYTE( "mpr-10795.6", 0x040001, 0x020000, CRC(d9d31f8c) SHA1(3ce07b83e3aa2d8834c1a449fa31e003df5486a3) ) + ROM_LOAD16_BYTE( "mpr-10799.14", 0x040000, 0x020000, CRC(96d90d3d) SHA1(6572cbce8f98a1a7a8e59b0c502ab274f78d2819) ) + ROM_LOAD16_BYTE( "mpr-10796.4", 0x080001, 0x020000, CRC(fb48957c) SHA1(86a66bcf38686be5537a1361d390ecbbccdddc11) ) + ROM_LOAD16_BYTE( "mpr-10800.12", 0x080000, 0x020000, CRC(feaff98e) SHA1(20e38f9039079f64919d750a2e1382503d437463) ) + ROM_LOAD16_BYTE( "mpr-10797.2", 0x0c0001, 0x020000, CRC(27f2870d) SHA1(40a34e4555885bf3c6a42e472b80d11c3bd4dcba) ) + ROM_LOAD16_BYTE( "mpr-10801.10", 0x0c0000, 0x020000, CRC(12781795) SHA1(44bf6f657f32b9fab119557eb73c2fbf78700204) ) + + ROM_REGION( 0x10000, "gfx3", 0 ) // road gfx + ROM_LOAD( "epr-10642.47", 0x0000, 0x8000, CRC(7836bcc3) SHA1(26f308bf96224311ddf685799d7aa29aac42dd2f) ) + // socket IC11 not populated + + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU + ROM_LOAD( "epr-10649c.88", 0x0000, 0x08000, CRC(f6c1ce71) SHA1(12299f7e5378a56be3a31cce3b8b74e48744f33a) ) + + ROM_REGION( 0x40000, "pcm", ROMREGION_ERASEFF ) // sound PCM data + ROM_LOAD( "epr-10643.66", 0x00000, 0x08000, CRC(06f55364) SHA1(fd685795e12541e3d0059d383fab293b3980d247) ) + ROM_RELOAD( 0x08000, 0x08000 ) + ROM_LOAD( "epr-10644.67", 0x10000, 0x08000, CRC(b41d541d) SHA1(28bbfa5edaa4a5901c74074354ba6f14d8f42ff6) ) + ROM_RELOAD( 0x18000, 0x08000 ) + ROM_LOAD( "epr-10645.68", 0x20000, 0x08000, CRC(a60dabff) SHA1(bbef0fb0d7837cc7efc866226bfa2bd7fab06459) ) + ROM_RELOAD( 0x28000, 0x08000 ) + ROM_LOAD( "epr-10646.69", 0x30000, 0x08000, CRC(473cc411) SHA1(04ca2d047eb59581cd5d76e0ac6eca8b19eef497) ) + ROM_RELOAD( 0x38000, 0x08000 ) +ROM_END + +//************************************************************************************************************************* +// Super Hangon +// CPU: FD1089B (317-0034) +// GAME BD SUPER HANG-ON 834-6277-02 +// CPU BD SUPER HANG-ON 837-6278-01 (or 837-6278-03) +// VIDEO BD SUPER HANG-ON 837-6279 (or 837-6279-02, roms would be "OPR") +// +// Manual states for this set: +// 834-6277-01 (Object data (sprits) EPR type AKA EP-ROM type) +// 834-6277-03 (Object data (sprits) MPR type AKA Mask-ROM type) +// 834-6277-05 (Object data (sprits) OPR type AKA One Time ROM type) +// +ROM_START( shangon3 ) + ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code - protected + ROM_LOAD16_BYTE( "epr-10789.133", 0x000000, 0x10000, CRC(6092c5ce) SHA1(dc010ab6d4dbbcb2f38de9f4f80674e9e1502dea) ) + ROM_LOAD16_BYTE( "epr-10788.118", 0x000001, 0x10000, CRC(c3d8a1ea) SHA1(b7f5de5e9ab9e5fb59937c11acd960f8e4a9bc2f) ) + ROM_LOAD16_BYTE( "epr-10637a.132", 0x020000, 0x10000, CRC(ad6c1308) SHA1(ee63168205bcb8b2c3dcbc3d7ba8a7f8f8a85952) ) + ROM_LOAD16_BYTE( "epr-10635a.117", 0x020001, 0x10000, CRC(a2415595) SHA1(2a8b960ea70066bf43c7b3772a0ed53d7c737b2c) ) + + ROM_REGION( 0x60000, "subcpu", 0 ) // second 68000 CPU + ROM_LOAD16_BYTE( "epr-10792.76", 0x00000, 0x10000, CRC(16299d25) SHA1(b14d5feef3e6889320d51ffca36801f4c9c4d5f8) ) + ROM_LOAD16_BYTE( "epr-10790.58", 0x00001, 0x10000, CRC(2246cbc1) SHA1(c192b1ddf4c848adb564c7c87d5413d62ed650d7) ) + ROM_LOAD16_BYTE( "epr-10793.75", 0x20000, 0x10000, CRC(d9525427) SHA1(cdb24db9f7a293f20fd8becc4afe84fd6abd678a) ) + ROM_LOAD16_BYTE( "epr-10791.57", 0x20001, 0x10000, CRC(5faf4cbe) SHA1(41659a961e6469d9233849c3c587cd5a0a141344) ) + + ROM_REGION( 0x18000, "gfx1", 0 ) // tiles + ROM_LOAD( "epr-10652.54", 0x00000, 0x08000, CRC(260286f9) SHA1(dc7c8d2c6ef924a937328685eed19bda1c8b1819) ) + ROM_LOAD( "epr-10651.55", 0x08000, 0x08000, CRC(c609ee7b) SHA1(c6dacf81cbfe7e5df1f9a967cf571be1dcf1c429) ) + ROM_LOAD( "epr-10650.56", 0x10000, 0x08000, CRC(b236a403) SHA1(af02b8122794c083a66f2ab35d2c73b84b2df0be) ) + + ROM_REGION16_BE( 0x0e0000, "gfx2", 0 ) // sprites + ROM_LOAD16_BYTE( "epr-10675.8", 0x000001, 0x010000, CRC(d6ac012b) SHA1(305023b1a0a9d84cfc081ffc2ad7578b53d562f2) ) + ROM_LOAD16_BYTE( "epr-10682.16", 0x000000, 0x010000, CRC(d9d83250) SHA1(f8ca3197edcdf53643a5b335c3c044ddc1310cd4) ) + ROM_LOAD16_BYTE( "epr-10676.7", 0x020001, 0x010000, CRC(25ebf2c5) SHA1(abcf673ae4e280417dd9f46d18c0ec7c0e4802ae) ) + ROM_LOAD16_BYTE( "epr-10683.15", 0x020000, 0x010000, CRC(6365d2e9) SHA1(688e2ba194e859f86cd3486c2575ebae257e975a) ) + ROM_LOAD16_BYTE( "epr-10677.6", 0x040001, 0x010000, CRC(8a57b8d6) SHA1(df1a31559dd2d1e7c2c9d800bf97526bdf3e84e6) ) + ROM_LOAD16_BYTE( "epr-10684.14", 0x040000, 0x010000, CRC(3aff8910) SHA1(4b41a49a7f02363424e814b37edce9a7a44a112e) ) + ROM_LOAD16_BYTE( "epr-10678.5", 0x060001, 0x010000, CRC(af473098) SHA1(a2afaba1cbf672949dc50e407b46d7e9ae183774) ) + ROM_LOAD16_BYTE( "epr-10685.13", 0x060000, 0x010000, CRC(80bafeef) SHA1(f01bcf65485e60f34e533295a896fca0b92e5b14) ) + ROM_LOAD16_BYTE( "epr-10679.4", 0x080001, 0x010000, CRC(03bc4878) SHA1(548fc58bcc620204e30fa12fa4c4f0a3f6a1e4c0) ) + ROM_LOAD16_BYTE( "epr-10686.12", 0x080000, 0x010000, CRC(274b734e) SHA1(906fa528659bc17c9b4744cec52f7096711adce8) ) + ROM_LOAD16_BYTE( "epr-10680.3", 0x0a0001, 0x010000, CRC(9f0677ed) SHA1(5964642b70bfad418da44f2d91476f887b021f74) ) + ROM_LOAD16_BYTE( "epr-10687.11", 0x0a0000, 0x010000, CRC(508a4701) SHA1(d17aea2aadc2e2cd65d81bf91feb3ef6923d5c0b) ) + ROM_LOAD16_BYTE( "epr-10681.2", 0x0c0001, 0x010000, CRC(b176ea72) SHA1(7ec0eb0f13398d014c2e235773ded00351edb3e2) ) + ROM_LOAD16_BYTE( "epr-10688.10", 0x0c0000, 0x010000, CRC(42fcd51d) SHA1(0eacb3527dc21746e5b901fcac83f2764a0f9e2c) ) + + ROM_REGION( 0x10000, "gfx3", 0 ) // road gfx + ROM_LOAD( "epr-10642.47", 0x0000, 0x8000, CRC(7836bcc3) SHA1(26f308bf96224311ddf685799d7aa29aac42dd2f) ) + // socket IC11 not populated + + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU + ROM_LOAD( "epr-10649a.88", 0x0000, 0x08000, CRC(bf38330f) SHA1(3d825bb02ef5a9f5c4fcaa71b3735e7f8e47f178) ) + + ROM_REGION( 0x40000, "pcm", ROMREGION_ERASEFF ) // sound PCM data + ROM_LOAD( "epr-10643.66", 0x00000, 0x08000, CRC(06f55364) SHA1(fd685795e12541e3d0059d383fab293b3980d247) ) + ROM_RELOAD( 0x08000, 0x08000 ) + ROM_LOAD( "epr-10644.67", 0x10000, 0x08000, CRC(b41d541d) SHA1(28bbfa5edaa4a5901c74074354ba6f14d8f42ff6) ) + ROM_RELOAD( 0x18000, 0x08000 ) + ROM_LOAD( "epr-10645.68", 0x20000, 0x08000, CRC(a60dabff) SHA1(bbef0fb0d7837cc7efc866226bfa2bd7fab06459) ) + ROM_RELOAD( 0x28000, 0x08000 ) + ROM_LOAD( "epr-10646.69", 0x30000, 0x08000, CRC(473cc411) SHA1(04ca2d047eb59581cd5d76e0ac6eca8b19eef497) ) + ROM_RELOAD( 0x38000, 0x08000 ) + + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key + ROM_LOAD( "317-0034.key", 0x0000, 0x2000, CRC(263ca773) SHA1(8e80d69d61cf54fd02b0ca59dd397fa60c713f3d) ) +ROM_END + +//************************************************************************************************************************* +// Super Hangon +// CPU: FD1089B (317-0034) +// CPU BD SUPER HANG-ON 837-6278-01 (or 837-6278-03) +// VIDEO BD SUPER HANG-ON 837-6279 (or 837-6279-02, roms would be "OPR") +// +ROM_START( shangon2 ) + ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code - protected + ROM_LOAD16_BYTE( "epr-10636a.133", 0x000000, 0x10000, CRC(74a64f4f) SHA1(3266a9a3c68e147bc8626de7ec45b59fd28f9d1d) ) + ROM_LOAD16_BYTE( "epr-10634a.118", 0x000001, 0x10000, CRC(1608cb4a) SHA1(56b0a6a0a4951f15a269d94d18821809ac0d3d53) ) + ROM_LOAD16_BYTE( "epr-10637a.132", 0x020000, 0x10000, CRC(ad6c1308) SHA1(ee63168205bcb8b2c3dcbc3d7ba8a7f8f8a85952) ) + ROM_LOAD16_BYTE( "epr-10635a.117", 0x020001, 0x10000, CRC(a2415595) SHA1(2a8b960ea70066bf43c7b3772a0ed53d7c737b2c) ) + + ROM_REGION( 0x60000, "subcpu", 0 ) // second 68000 CPU + ROM_LOAD16_BYTE( "epr-10640.76", 0x00000, 0x10000, CRC(02be68db) SHA1(8c9f98ee49db54ee53b721ecf53f91737ae6cd73) ) + ROM_LOAD16_BYTE( "epr-10638.58", 0x00001, 0x10000, CRC(f13e8bee) SHA1(1c16c018f58f1fb49e240314a7e97a947087fad9) ) + ROM_LOAD16_BYTE( "epr-10641.75", 0x20000, 0x10000, CRC(38c3f808) SHA1(36fae99b56980ef33853170afe10b363cd41c053) ) + ROM_LOAD16_BYTE( "epr-10639.57", 0x20001, 0x10000, CRC(8cdbcde8) SHA1(0bcb4df96ee16db3dd4ce52fccd939f48a4bc1a0) ) + + ROM_REGION( 0x18000, "gfx1", 0 ) // tiles + ROM_LOAD( "epr-10652.54", 0x00000, 0x08000, CRC(260286f9) SHA1(dc7c8d2c6ef924a937328685eed19bda1c8b1819) ) + ROM_LOAD( "epr-10651.55", 0x08000, 0x08000, CRC(c609ee7b) SHA1(c6dacf81cbfe7e5df1f9a967cf571be1dcf1c429) ) + ROM_LOAD( "epr-10650.56", 0x10000, 0x08000, CRC(b236a403) SHA1(af02b8122794c083a66f2ab35d2c73b84b2df0be) ) + + ROM_REGION16_BE( 0x0e0000, "gfx2", 0 ) // sprites + ROM_LOAD16_BYTE( "epr-10675.8", 0x000001, 0x010000, CRC(d6ac012b) SHA1(305023b1a0a9d84cfc081ffc2ad7578b53d562f2) ) + ROM_LOAD16_BYTE( "epr-10682.16", 0x000000, 0x010000, CRC(d9d83250) SHA1(f8ca3197edcdf53643a5b335c3c044ddc1310cd4) ) + ROM_LOAD16_BYTE( "epr-10676.7", 0x020001, 0x010000, CRC(25ebf2c5) SHA1(abcf673ae4e280417dd9f46d18c0ec7c0e4802ae) ) + ROM_LOAD16_BYTE( "epr-10683.15", 0x020000, 0x010000, CRC(6365d2e9) SHA1(688e2ba194e859f86cd3486c2575ebae257e975a) ) + ROM_LOAD16_BYTE( "epr-10677.6", 0x040001, 0x010000, CRC(8a57b8d6) SHA1(df1a31559dd2d1e7c2c9d800bf97526bdf3e84e6) ) + ROM_LOAD16_BYTE( "epr-10684.14", 0x040000, 0x010000, CRC(3aff8910) SHA1(4b41a49a7f02363424e814b37edce9a7a44a112e) ) + ROM_LOAD16_BYTE( "epr-10678.5", 0x060001, 0x010000, CRC(af473098) SHA1(a2afaba1cbf672949dc50e407b46d7e9ae183774) ) + ROM_LOAD16_BYTE( "epr-10685.13", 0x060000, 0x010000, CRC(80bafeef) SHA1(f01bcf65485e60f34e533295a896fca0b92e5b14) ) + ROM_LOAD16_BYTE( "epr-10679.4", 0x080001, 0x010000, CRC(03bc4878) SHA1(548fc58bcc620204e30fa12fa4c4f0a3f6a1e4c0) ) + ROM_LOAD16_BYTE( "epr-10686.12", 0x080000, 0x010000, CRC(274b734e) SHA1(906fa528659bc17c9b4744cec52f7096711adce8) ) + ROM_LOAD16_BYTE( "epr-10680.3", 0x0a0001, 0x010000, CRC(9f0677ed) SHA1(5964642b70bfad418da44f2d91476f887b021f74) ) + ROM_LOAD16_BYTE( "epr-10687.11", 0x0a0000, 0x010000, CRC(508a4701) SHA1(d17aea2aadc2e2cd65d81bf91feb3ef6923d5c0b) ) + ROM_LOAD16_BYTE( "epr-10681.2", 0x0c0001, 0x010000, CRC(b176ea72) SHA1(7ec0eb0f13398d014c2e235773ded00351edb3e2) ) + ROM_LOAD16_BYTE( "epr-10688.10", 0x0c0000, 0x010000, CRC(42fcd51d) SHA1(0eacb3527dc21746e5b901fcac83f2764a0f9e2c) ) + + ROM_REGION( 0x10000, "gfx3", 0 ) // road gfx + ROM_LOAD( "epr-10642.47", 0x0000, 0x8000, CRC(7836bcc3) SHA1(26f308bf96224311ddf685799d7aa29aac42dd2f) ) + // socket IC11 not populated + + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU + ROM_LOAD( "ic88", 0x0000, 0x08000, CRC(1254efa6) SHA1(997770ccdd776de6e335a6d8b1e15d200cbd4410) ) // EPR-10649 or EPR-10649B ??? + + ROM_REGION( 0x40000, "pcm", ROMREGION_ERASEFF ) // sound PCM data + ROM_LOAD( "epr-10643.66", 0x00000, 0x08000, CRC(06f55364) SHA1(fd685795e12541e3d0059d383fab293b3980d247) ) + ROM_RELOAD( 0x08000, 0x08000 ) + ROM_LOAD( "epr-10644.67", 0x10000, 0x08000, CRC(b41d541d) SHA1(28bbfa5edaa4a5901c74074354ba6f14d8f42ff6) ) + ROM_RELOAD( 0x18000, 0x08000 ) + ROM_LOAD( "epr-10645.68", 0x20000, 0x08000, CRC(a60dabff) SHA1(bbef0fb0d7837cc7efc866226bfa2bd7fab06459) ) + ROM_RELOAD( 0x28000, 0x08000 ) + ROM_LOAD( "epr-10646.69", 0x30000, 0x08000, CRC(473cc411) SHA1(04ca2d047eb59581cd5d76e0ac6eca8b19eef497) ) + ROM_RELOAD( 0x38000, 0x08000 ) + + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key + ROM_LOAD( "317-0034.key", 0x0000, 0x2000, CRC(263ca773) SHA1(8e80d69d61cf54fd02b0ca59dd397fa60c713f3d) ) +ROM_END + +//************************************************************************************************************************* +// Super Hangon +// CPU: FD1089B (317-0034) +// CPU BD SUPER HANG-ON 837-6278-01 (or 837-6278-03) +// VIDEO BD SUPER HANG-ON 837-6279 (or 837-6279-02, roms would be "OPR") +// +ROM_START( shangon1 ) + ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code - protected + ROM_LOAD16_BYTE( "ic133", 0x000000, 0x10000, CRC(e52721fe) SHA1(21f0aa14d0cbda3d762bca86efe089646031aef5) ) // All EPR numbers for this main CPU version are unknown + ROM_LOAD16_BYTE( "ic118", 0x000001, 0x10000, BAD_DUMP CRC(5fee09f6) SHA1(b97a08ba75d8c617aceff2b03c1f2bfcb16181ef) ) + ROM_LOAD16_BYTE( "ic132", 0x020000, 0x10000, CRC(5d55d65f) SHA1(d02d76b98d74746b078b0f49f0320b8be48e4c47) ) + ROM_LOAD16_BYTE( "ic117", 0x020001, 0x10000, CRC(b967e8c3) SHA1(00224b337b162daff03bbfabdcf8541025220d46) ) + + ROM_REGION( 0x60000, "subcpu", 0 ) // second 68000 CPU + ROM_LOAD16_BYTE( "epr-10640.76", 0x00000, 0x10000, CRC(02be68db) SHA1(8c9f98ee49db54ee53b721ecf53f91737ae6cd73) ) + ROM_LOAD16_BYTE( "epr-10638.58", 0x00001, 0x10000, CRC(f13e8bee) SHA1(1c16c018f58f1fb49e240314a7e97a947087fad9) ) + ROM_LOAD16_BYTE( "epr-10641.75", 0x20000, 0x10000, CRC(38c3f808) SHA1(36fae99b56980ef33853170afe10b363cd41c053) ) + ROM_LOAD16_BYTE( "epr-10639.57", 0x20001, 0x10000, CRC(8cdbcde8) SHA1(0bcb4df96ee16db3dd4ce52fccd939f48a4bc1a0) ) + + ROM_REGION( 0x18000, "gfx1", 0 ) // tiles + ROM_LOAD( "epr-10652.54", 0x00000, 0x08000, CRC(260286f9) SHA1(dc7c8d2c6ef924a937328685eed19bda1c8b1819) ) + ROM_LOAD( "epr-10651.55", 0x08000, 0x08000, CRC(c609ee7b) SHA1(c6dacf81cbfe7e5df1f9a967cf571be1dcf1c429) ) + ROM_LOAD( "epr-10650.56", 0x10000, 0x08000, CRC(b236a403) SHA1(af02b8122794c083a66f2ab35d2c73b84b2df0be) ) + + ROM_REGION16_BE( 0x0e0000, "gfx2", 0 ) // sprites + ROM_LOAD16_BYTE( "epr-10675.8", 0x000001, 0x010000, CRC(d6ac012b) SHA1(305023b1a0a9d84cfc081ffc2ad7578b53d562f2) ) + ROM_LOAD16_BYTE( "epr-10682.16", 0x000000, 0x010000, CRC(d9d83250) SHA1(f8ca3197edcdf53643a5b335c3c044ddc1310cd4) ) + ROM_LOAD16_BYTE( "epr-10676.7", 0x020001, 0x010000, CRC(25ebf2c5) SHA1(abcf673ae4e280417dd9f46d18c0ec7c0e4802ae) ) + ROM_LOAD16_BYTE( "epr-10683.15", 0x020000, 0x010000, CRC(6365d2e9) SHA1(688e2ba194e859f86cd3486c2575ebae257e975a) ) + ROM_LOAD16_BYTE( "epr-10677.6", 0x040001, 0x010000, CRC(8a57b8d6) SHA1(df1a31559dd2d1e7c2c9d800bf97526bdf3e84e6) ) + ROM_LOAD16_BYTE( "epr-10684.14", 0x040000, 0x010000, CRC(3aff8910) SHA1(4b41a49a7f02363424e814b37edce9a7a44a112e) ) + ROM_LOAD16_BYTE( "epr-10678.5", 0x060001, 0x010000, CRC(af473098) SHA1(a2afaba1cbf672949dc50e407b46d7e9ae183774) ) + ROM_LOAD16_BYTE( "epr-10685.13", 0x060000, 0x010000, CRC(80bafeef) SHA1(f01bcf65485e60f34e533295a896fca0b92e5b14) ) + ROM_LOAD16_BYTE( "epr-10679.4", 0x080001, 0x010000, CRC(03bc4878) SHA1(548fc58bcc620204e30fa12fa4c4f0a3f6a1e4c0) ) + ROM_LOAD16_BYTE( "epr-10686.12", 0x080000, 0x010000, CRC(274b734e) SHA1(906fa528659bc17c9b4744cec52f7096711adce8) ) + ROM_LOAD16_BYTE( "epr-10680.3", 0x0a0001, 0x010000, CRC(9f0677ed) SHA1(5964642b70bfad418da44f2d91476f887b021f74) ) + ROM_LOAD16_BYTE( "epr-10687.11", 0x0a0000, 0x010000, CRC(508a4701) SHA1(d17aea2aadc2e2cd65d81bf91feb3ef6923d5c0b) ) + ROM_LOAD16_BYTE( "epr-10681.2", 0x0c0001, 0x010000, CRC(b176ea72) SHA1(7ec0eb0f13398d014c2e235773ded00351edb3e2) ) + ROM_LOAD16_BYTE( "epr-10688.10", 0x0c0000, 0x010000, CRC(42fcd51d) SHA1(0eacb3527dc21746e5b901fcac83f2764a0f9e2c) ) + + ROM_REGION( 0x10000, "gfx3", 0 ) // road gfx + ROM_LOAD( "epr-10642.47", 0x0000, 0x8000, CRC(7836bcc3) SHA1(26f308bf96224311ddf685799d7aa29aac42dd2f) ) + // socket IC11 not populated + + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU + ROM_LOAD( "ic88", 0x0000, 0x08000, CRC(1254efa6) SHA1(997770ccdd776de6e335a6d8b1e15d200cbd4410) ) // EPR-10649 or EPR-10649B ??? + + ROM_REGION( 0x40000, "pcm", ROMREGION_ERASEFF ) // sound PCM data + ROM_LOAD( "epr-10643.66", 0x00000, 0x08000, CRC(06f55364) SHA1(fd685795e12541e3d0059d383fab293b3980d247) ) + ROM_RELOAD( 0x08000, 0x08000 ) + ROM_LOAD( "epr-10644.67", 0x10000, 0x08000, CRC(b41d541d) SHA1(28bbfa5edaa4a5901c74074354ba6f14d8f42ff6) ) + ROM_RELOAD( 0x18000, 0x08000 ) + ROM_LOAD( "epr-10645.68", 0x20000, 0x08000, CRC(a60dabff) SHA1(bbef0fb0d7837cc7efc866226bfa2bd7fab06459) ) + ROM_RELOAD( 0x28000, 0x08000 ) + ROM_LOAD( "epr-10646.69", 0x30000, 0x08000, CRC(473cc411) SHA1(04ca2d047eb59581cd5d76e0ac6eca8b19eef497) ) + ROM_RELOAD( 0x38000, 0x08000 ) + + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key + ROM_LOAD( "317-0034.key", 0x0000, 0x2000, CRC(263ca773) SHA1(8e80d69d61cf54fd02b0ca59dd397fa60c713f3d) ) +ROM_END + +//************************************************************************************************************************* +// Limited Edition Hangon +// CPU: 68000 (317-????) +// CPU BD SUPER HANG-ON 837-6278-01 (or 837-6278-03) +// VIDEO BD SUPER HANG-ON 837-6279 (or 837-6279-02, rom would be "OPR") +// +ROM_START( shangonle ) + ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code + ROM_LOAD16_BYTE( "epr-13944.133", 0x000000, 0x10000, CRC(989a80db) SHA1(5026e5cf52d4fd85a0bab6c4ea7a34cf266b2a3b) ) + ROM_LOAD16_BYTE( "epr-13943.118", 0x000001, 0x10000, CRC(426e3050) SHA1(f332ea76285b4e1361d818cbe5aab0640b4185c3) ) + ROM_LOAD16_BYTE( "epr-10899.132", 0x020000, 0x10000, CRC(bb3faa37) SHA1(ccf3352255503fd6619e6e116d187a8cd1ff75e6) ) + ROM_LOAD16_BYTE( "epr-10897.117", 0x020001, 0x10000, CRC(5f087eb1) SHA1(bdfcc39e92087057acc4e91741a03e7ba57824c1) ) + + ROM_REGION( 0x60000, "subcpu", 0 ) // second 68000 CPU + ROM_LOAD16_BYTE( "epr-10640.76", 0x00000, 0x10000, CRC(02be68db) SHA1(8c9f98ee49db54ee53b721ecf53f91737ae6cd73) ) + ROM_LOAD16_BYTE( "epr-10638.58", 0x00001, 0x10000, CRC(f13e8bee) SHA1(1c16c018f58f1fb49e240314a7e97a947087fad9) ) + ROM_LOAD16_BYTE( "epr-10641.75", 0x20000, 0x10000, CRC(38c3f808) SHA1(36fae99b56980ef33853170afe10b363cd41c053) ) + ROM_LOAD16_BYTE( "epr-10639.57", 0x20001, 0x10000, CRC(8cdbcde8) SHA1(0bcb4df96ee16db3dd4ce52fccd939f48a4bc1a0) ) + + ROM_REGION( 0x18000, "gfx1", 0 ) // tiles + ROM_LOAD( "epr-10652.54", 0x00000, 0x08000, CRC(260286f9) SHA1(dc7c8d2c6ef924a937328685eed19bda1c8b1819) ) + ROM_LOAD( "epr-10651.55", 0x08000, 0x08000, CRC(c609ee7b) SHA1(c6dacf81cbfe7e5df1f9a967cf571be1dcf1c429) ) + ROM_LOAD( "epr-10650.56", 0x10000, 0x08000, CRC(b236a403) SHA1(af02b8122794c083a66f2ab35d2c73b84b2df0be) ) + + ROM_REGION16_BE( 0x0e0000, "gfx2", 0 ) // sprites + ROM_LOAD16_BYTE( "epr-10675.8", 0x000001, 0x010000, CRC(d6ac012b) SHA1(305023b1a0a9d84cfc081ffc2ad7578b53d562f2) ) + ROM_LOAD16_BYTE( "epr-10682.16", 0x000000, 0x010000, CRC(d9d83250) SHA1(f8ca3197edcdf53643a5b335c3c044ddc1310cd4) ) + ROM_LOAD16_BYTE( "epr-13945.7", 0x020001, 0x010000, CRC(fbb1eef9) SHA1(2798df2f25706e0d3be01d945274f478d7e5a2ae) ) + ROM_LOAD16_BYTE( "epr-13946.15", 0x020000, 0x010000, CRC(03144930) SHA1(c20f4883ee2de35cd0b67949de0e41464f2c5fae) ) + ROM_LOAD16_BYTE( "epr-10677.6", 0x040001, 0x010000, CRC(8a57b8d6) SHA1(df1a31559dd2d1e7c2c9d800bf97526bdf3e84e6) ) + ROM_LOAD16_BYTE( "epr-10684.14", 0x040000, 0x010000, CRC(3aff8910) SHA1(4b41a49a7f02363424e814b37edce9a7a44a112e) ) + ROM_LOAD16_BYTE( "epr-10678.5", 0x060001, 0x010000, CRC(af473098) SHA1(a2afaba1cbf672949dc50e407b46d7e9ae183774) ) + ROM_LOAD16_BYTE( "epr-10685.13", 0x060000, 0x010000, CRC(80bafeef) SHA1(f01bcf65485e60f34e533295a896fca0b92e5b14) ) + ROM_LOAD16_BYTE( "epr-10679.4", 0x080001, 0x010000, CRC(03bc4878) SHA1(548fc58bcc620204e30fa12fa4c4f0a3f6a1e4c0) ) + ROM_LOAD16_BYTE( "epr-10686.12", 0x080000, 0x010000, CRC(274b734e) SHA1(906fa528659bc17c9b4744cec52f7096711adce8) ) + ROM_LOAD16_BYTE( "epr-10680.3", 0x0a0001, 0x010000, CRC(9f0677ed) SHA1(5964642b70bfad418da44f2d91476f887b021f74) ) + ROM_LOAD16_BYTE( "epr-10687.11", 0x0a0000, 0x010000, CRC(508a4701) SHA1(d17aea2aadc2e2cd65d81bf91feb3ef6923d5c0b) ) + ROM_LOAD16_BYTE( "epr-10681.2", 0x0c0001, 0x010000, CRC(b176ea72) SHA1(7ec0eb0f13398d014c2e235773ded00351edb3e2) ) + ROM_LOAD16_BYTE( "epr-10688.10", 0x0c0000, 0x010000, CRC(42fcd51d) SHA1(0eacb3527dc21746e5b901fcac83f2764a0f9e2c) ) + + ROM_REGION( 0x10000, "gfx3", 0 ) // Road Graphics + ROM_LOAD( "epr-10642.47", 0x0000, 0x8000, CRC(7836bcc3) SHA1(26f308bf96224311ddf685799d7aa29aac42dd2f) ) + // socket IC11 not populated + + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU + ROM_LOAD( "epr-10649c.88", 0x0000, 0x08000, CRC(f6c1ce71) SHA1(12299f7e5378a56be3a31cce3b8b74e48744f33a) ) + + ROM_REGION( 0x40000, "pcm", ROMREGION_ERASEFF ) // sound PCM data + ROM_LOAD( "epr-10643.66", 0x00000, 0x08000, CRC(06f55364) SHA1(fd685795e12541e3d0059d383fab293b3980d247) ) + ROM_RELOAD( 0x08000, 0x08000 ) + ROM_LOAD( "epr-10644.67", 0x10000, 0x08000, CRC(b41d541d) SHA1(28bbfa5edaa4a5901c74074354ba6f14d8f42ff6) ) + ROM_RELOAD( 0x18000, 0x08000 ) + ROM_LOAD( "epr-10645.68", 0x20000, 0x08000, CRC(a60dabff) SHA1(bbef0fb0d7837cc7efc866226bfa2bd7fab06459) ) + ROM_RELOAD( 0x28000, 0x08000 ) + ROM_LOAD( "epr-10646.69", 0x30000, 0x08000, CRC(473cc411) SHA1(04ca2d047eb59581cd5d76e0ac6eca8b19eef497) ) + ROM_RELOAD( 0x38000, 0x08000 ) +ROM_END + + +//************************************************************************************************************************* +//************************************************************************************************************************* +//************************************************************************************************************************* +// Turbo Outrun (Out Run upgrade set) +// CPU: FD1094 (317-0118) +// GAME BD 834-6919-12 +// CPU BD 837-6905-12 +// VIDEO BD 837-6906-02 +// ROM_START( toutrun ) ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-12513.133", 0x000000, 0x10000, CRC(ae8835a5) SHA1(09573964d4f42ac0f08be3682b73e3420df27c6d) ) @@ -1565,16 +1905,16 @@ ROM_START( toutrun ) ROM_LOAD( "opr-12306.71", 0x50000, 0x10000, CRC(e49249fd) SHA1(ff36e4dba4e9d3d354e3dd528edeb50ad9c18ee4) ) ROM_END -/************************************************************************************************************************** - Turbo Outrun (Upright version?? According to service mode dipswitch screen it's a Cockpit) - CPU: FD1094 (317-0107) - GAME BD 834-6919-02 - CPU BD 837-6905 - VIDEO BD 837-6906 - - Must set Cabinet Type dipswitch (DSW-B 1&2 to both ON) to Cockpit - Must set Turbo Switch dipswitch (DSW-B 4 to OFF) to Use Turbo Shifter -*/ +//************************************************************************************************************************* +// Turbo Outrun (Upright version?? According to service mode dipswitch screen it's a Cockpit) +// CPU: FD1094 (317-0107) +// GAME BD 834-6919-02 +// CPU BD 837-6905 +// VIDEO BD 837-6906 +// +// Must set Cabinet Type dipswitch (DSW-B 1&2 to both ON) to Cockpit +// Must set Turbo Switch dipswitch (DSW-B 4 to OFF) to Use Turbo Shifter +// ROM_START( toutrun3 ) ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-12410.133", 0x000000, 0x10000, CRC(aa74f3e9) SHA1(2daf6b17317542063c0a40beea5b45c797192591) ) @@ -1632,16 +1972,16 @@ ROM_START( toutrun3 ) ROM_LOAD( "opr-12306.71", 0x50000, 0x10000, CRC(e49249fd) SHA1(ff36e4dba4e9d3d354e3dd528edeb50ad9c18ee4) ) ROM_END -/************************************************************************************************************************** - Turbo Outrun (Cockpit version) - CPU: FD1094 (317-????) - Manual doesn't state the FD1094 317 number?? - GAME BD 834-6919 - CPU BD 837-6905 - VIDEO BD 837-6906 - - Must set Cabinet Type dipswitch (DSW-B 1&2 to both ON) to Cockpit - Must set Turbo Switch dipswitch (DSW-B 4 to OFF) to Use Turbo Shifter -*/ +//************************************************************************************************************************* +// Turbo Outrun (Cockpit version) +// CPU: FD1094 (317-????) - Manual doesn't state the FD1094 317 number?? +// GAME BD 834-6919 +// CPU BD 837-6905 +// VIDEO BD 837-6906 +// +// Must set Cabinet Type dipswitch (DSW-B 1&2 to both ON) to Cockpit +// Must set Turbo Switch dipswitch (DSW-B 4 to OFF) to Use Turbo Shifter +// ROM_START( toutrun2 ) ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-12397.133", 0x000000, 0x10000, CRC(e4b57d7d) SHA1(62be55356c82b38ebebcc87a5458e23300019339) ) @@ -1699,10 +2039,10 @@ ROM_START( toutrun2 ) ROM_LOAD( "opr-12306.71", 0x50000, 0x10000, CRC(e49249fd) SHA1(ff36e4dba4e9d3d354e3dd528edeb50ad9c18ee4) ) ROM_END -/************************************************************************************************************************** - Turbo Outrun (White cockpit/sitdown Deluxe version) - CPU: FD1094 (317-0109) -*/ +//************************************************************************************************************************* +// Turbo Outrun (White cockpit/sitdown Deluxe version) +// CPU: FD1094 (317-0109) +// ROM_START( toutrun1 ) ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-12289.133", 0x000000, 0x10000, CRC(812fd035) SHA1(7bea9ba611333dfb86cfc2e2be8cff5f700b6f71) ) @@ -1761,354 +2101,75 @@ ROM_START( toutrun1 ) ROM_END -/************************************************************************************************************************** - ************************************************************************************************************************** - ************************************************************************************************************************** - Super Hangon - CPU: 68000 (317-????) - GAME BD SUPER HANG-ON 834-6277-07 - CPU BD SUPER HANG-ON 837-6278-01 (or 837-6278-03) - VIDEO BD SUPER HANG-ON 837-6279-01 -*/ -ROM_START( shangon ) - ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code - ROM_LOAD16_BYTE( "epr-10886.133", 0x000000, 0x10000, CRC(8be3cd36) SHA1(de96481807e782ca441d51e99f1a221bdee7d170) ) - ROM_LOAD16_BYTE( "epr-10884.118", 0x000001, 0x10000, CRC(cb06150d) SHA1(840dada0cdeec444b554e6c1f2bdacc1047be567) ) - ROM_LOAD16_BYTE( "epr-10887.132", 0x020000, 0x10000, CRC(8d248bb0) SHA1(7d8ed61609fd0df203255e7d046d9d30983f1dcd) ) - ROM_LOAD16_BYTE( "epr-10885.117", 0x020001, 0x10000, CRC(70795f26) SHA1(332921b0a6534c4cbfe76ff957c721cc80d341b0) ) - - ROM_REGION( 0x60000, "subcpu", 0 ) // second 68000 CPU - ROM_LOAD16_BYTE( "epr-10792.76", 0x00000, 0x10000, CRC(16299d25) SHA1(b14d5feef3e6889320d51ffca36801f4c9c4d5f8) ) - ROM_LOAD16_BYTE( "epr-10790.58", 0x00001, 0x10000, CRC(2246cbc1) SHA1(c192b1ddf4c848adb564c7c87d5413d62ed650d7) ) - ROM_LOAD16_BYTE( "epr-10793.75", 0x20000, 0x10000, CRC(d9525427) SHA1(cdb24db9f7a293f20fd8becc4afe84fd6abd678a) ) - ROM_LOAD16_BYTE( "epr-10791.57", 0x20001, 0x10000, CRC(5faf4cbe) SHA1(41659a961e6469d9233849c3c587cd5a0a141344) ) - - ROM_REGION( 0x18000, "gfx1", 0 ) // tiles - ROM_LOAD( "epr-10652.54", 0x00000, 0x08000, CRC(260286f9) SHA1(dc7c8d2c6ef924a937328685eed19bda1c8b1819) ) - ROM_LOAD( "epr-10651.55", 0x08000, 0x08000, CRC(c609ee7b) SHA1(c6dacf81cbfe7e5df1f9a967cf571be1dcf1c429) ) - ROM_LOAD( "epr-10650.56", 0x10000, 0x08000, CRC(b236a403) SHA1(af02b8122794c083a66f2ab35d2c73b84b2df0be) ) - - ROM_REGION16_BE( 0x100000, "gfx2", 0 ) // sprites - // Super Hang-On Video board 837-6279-01 (mask rom type), same data but mask roms twice the size as "EPR" counterparts - ROM_LOAD16_BYTE( "mpr-10794.8", 0x000001, 0x020000, CRC(7c958e63) SHA1(ef79614e94280607a6cdf6e13db051accfd2add0) ) - ROM_LOAD16_BYTE( "mpr-10798.16", 0x000000, 0x020000, CRC(7d58f807) SHA1(783c9929d27a0270b3f7d5eb799cee6b2e5b7ae5) ) - ROM_LOAD16_BYTE( "mpr-10795.6", 0x040001, 0x020000, CRC(d9d31f8c) SHA1(3ce07b83e3aa2d8834c1a449fa31e003df5486a3) ) - ROM_LOAD16_BYTE( "mpr-10799.14", 0x040000, 0x020000, CRC(96d90d3d) SHA1(6572cbce8f98a1a7a8e59b0c502ab274f78d2819) ) - ROM_LOAD16_BYTE( "mpr-10796.4", 0x080001, 0x020000, CRC(fb48957c) SHA1(86a66bcf38686be5537a1361d390ecbbccdddc11) ) - ROM_LOAD16_BYTE( "mpr-10800.12", 0x080000, 0x020000, CRC(feaff98e) SHA1(20e38f9039079f64919d750a2e1382503d437463) ) - ROM_LOAD16_BYTE( "mpr-10797.2", 0x0c0001, 0x020000, CRC(27f2870d) SHA1(40a34e4555885bf3c6a42e472b80d11c3bd4dcba) ) - ROM_LOAD16_BYTE( "mpr-10801.10", 0x0c0000, 0x020000, CRC(12781795) SHA1(44bf6f657f32b9fab119557eb73c2fbf78700204) ) - - ROM_REGION( 0x10000, "gfx3", 0 ) // road gfx - ROM_LOAD( "epr-10642.47", 0x0000, 0x8000, CRC(7836bcc3) SHA1(26f308bf96224311ddf685799d7aa29aac42dd2f) ) - // socket IC11 not populated - - ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU - ROM_LOAD( "epr-10649c.88", 0x0000, 0x08000, CRC(f6c1ce71) SHA1(12299f7e5378a56be3a31cce3b8b74e48744f33a) ) - - ROM_REGION( 0x40000, "pcm", ROMREGION_ERASEFF ) // sound PCM data - ROM_LOAD( "epr-10643.66", 0x00000, 0x08000, CRC(06f55364) SHA1(fd685795e12541e3d0059d383fab293b3980d247) ) - ROM_RELOAD( 0x08000, 0x08000 ) - ROM_LOAD( "epr-10644.67", 0x10000, 0x08000, CRC(b41d541d) SHA1(28bbfa5edaa4a5901c74074354ba6f14d8f42ff6) ) - ROM_RELOAD( 0x18000, 0x08000 ) - ROM_LOAD( "epr-10645.68", 0x20000, 0x08000, CRC(a60dabff) SHA1(bbef0fb0d7837cc7efc866226bfa2bd7fab06459) ) - ROM_RELOAD( 0x28000, 0x08000 ) - ROM_LOAD( "epr-10646.69", 0x30000, 0x08000, CRC(473cc411) SHA1(04ca2d047eb59581cd5d76e0ac6eca8b19eef497) ) - ROM_RELOAD( 0x38000, 0x08000 ) -ROM_END - -/************************************************************************************************************************** - Super Hangon - CPU: FD1089B (317-0034) - GAME BD SUPER HANG-ON 834-6277-02 - CPU BD SUPER HANG-ON 837-6278-01 (or 837-6278-03) - VIDEO BD SUPER HANG-ON 837-6279 (or 837-6279-02, roms would be "OPR") - -Manual states for this set: - 834-6277-01 (Object data (sprits) EPR type AKA EP-ROM type) - 834-6277-03 (Object data (sprits) MPR type AKA Mask-ROM type) - 834-6277-05 (Object data (sprits) OPR type AKA One Time ROM type) - -*/ -ROM_START( shangon3 ) - ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code - protected - ROM_LOAD16_BYTE( "epr-10789.133", 0x000000, 0x10000, CRC(6092c5ce) SHA1(dc010ab6d4dbbcb2f38de9f4f80674e9e1502dea) ) - ROM_LOAD16_BYTE( "epr-10788.118", 0x000001, 0x10000, CRC(c3d8a1ea) SHA1(b7f5de5e9ab9e5fb59937c11acd960f8e4a9bc2f) ) - ROM_LOAD16_BYTE( "epr-10637a.132", 0x020000, 0x10000, CRC(ad6c1308) SHA1(ee63168205bcb8b2c3dcbc3d7ba8a7f8f8a85952) ) - ROM_LOAD16_BYTE( "epr-10635a.117", 0x020001, 0x10000, CRC(a2415595) SHA1(2a8b960ea70066bf43c7b3772a0ed53d7c737b2c) ) - - ROM_REGION( 0x60000, "subcpu", 0 ) // second 68000 CPU - ROM_LOAD16_BYTE( "epr-10792.76", 0x00000, 0x10000, CRC(16299d25) SHA1(b14d5feef3e6889320d51ffca36801f4c9c4d5f8) ) - ROM_LOAD16_BYTE( "epr-10790.58", 0x00001, 0x10000, CRC(2246cbc1) SHA1(c192b1ddf4c848adb564c7c87d5413d62ed650d7) ) - ROM_LOAD16_BYTE( "epr-10793.75", 0x20000, 0x10000, CRC(d9525427) SHA1(cdb24db9f7a293f20fd8becc4afe84fd6abd678a) ) - ROM_LOAD16_BYTE( "epr-10791.57", 0x20001, 0x10000, CRC(5faf4cbe) SHA1(41659a961e6469d9233849c3c587cd5a0a141344) ) - - ROM_REGION( 0x18000, "gfx1", 0 ) // tiles - ROM_LOAD( "epr-10652.54", 0x00000, 0x08000, CRC(260286f9) SHA1(dc7c8d2c6ef924a937328685eed19bda1c8b1819) ) - ROM_LOAD( "epr-10651.55", 0x08000, 0x08000, CRC(c609ee7b) SHA1(c6dacf81cbfe7e5df1f9a967cf571be1dcf1c429) ) - ROM_LOAD( "epr-10650.56", 0x10000, 0x08000, CRC(b236a403) SHA1(af02b8122794c083a66f2ab35d2c73b84b2df0be) ) - - ROM_REGION16_BE( 0x0e0000, "gfx2", 0 ) // sprites - ROM_LOAD16_BYTE( "epr-10675.8", 0x000001, 0x010000, CRC(d6ac012b) SHA1(305023b1a0a9d84cfc081ffc2ad7578b53d562f2) ) - ROM_LOAD16_BYTE( "epr-10682.16", 0x000000, 0x010000, CRC(d9d83250) SHA1(f8ca3197edcdf53643a5b335c3c044ddc1310cd4) ) - ROM_LOAD16_BYTE( "epr-10676.7", 0x020001, 0x010000, CRC(25ebf2c5) SHA1(abcf673ae4e280417dd9f46d18c0ec7c0e4802ae) ) - ROM_LOAD16_BYTE( "epr-10683.15", 0x020000, 0x010000, CRC(6365d2e9) SHA1(688e2ba194e859f86cd3486c2575ebae257e975a) ) - ROM_LOAD16_BYTE( "epr-10677.6", 0x040001, 0x010000, CRC(8a57b8d6) SHA1(df1a31559dd2d1e7c2c9d800bf97526bdf3e84e6) ) - ROM_LOAD16_BYTE( "epr-10684.14", 0x040000, 0x010000, CRC(3aff8910) SHA1(4b41a49a7f02363424e814b37edce9a7a44a112e) ) - ROM_LOAD16_BYTE( "epr-10678.5", 0x060001, 0x010000, CRC(af473098) SHA1(a2afaba1cbf672949dc50e407b46d7e9ae183774) ) - ROM_LOAD16_BYTE( "epr-10685.13", 0x060000, 0x010000, CRC(80bafeef) SHA1(f01bcf65485e60f34e533295a896fca0b92e5b14) ) - ROM_LOAD16_BYTE( "epr-10679.4", 0x080001, 0x010000, CRC(03bc4878) SHA1(548fc58bcc620204e30fa12fa4c4f0a3f6a1e4c0) ) - ROM_LOAD16_BYTE( "epr-10686.12", 0x080000, 0x010000, CRC(274b734e) SHA1(906fa528659bc17c9b4744cec52f7096711adce8) ) - ROM_LOAD16_BYTE( "epr-10680.3", 0x0a0001, 0x010000, CRC(9f0677ed) SHA1(5964642b70bfad418da44f2d91476f887b021f74) ) - ROM_LOAD16_BYTE( "epr-10687.11", 0x0a0000, 0x010000, CRC(508a4701) SHA1(d17aea2aadc2e2cd65d81bf91feb3ef6923d5c0b) ) - ROM_LOAD16_BYTE( "epr-10681.2", 0x0c0001, 0x010000, CRC(b176ea72) SHA1(7ec0eb0f13398d014c2e235773ded00351edb3e2) ) - ROM_LOAD16_BYTE( "epr-10688.10", 0x0c0000, 0x010000, CRC(42fcd51d) SHA1(0eacb3527dc21746e5b901fcac83f2764a0f9e2c) ) - - ROM_REGION( 0x10000, "gfx3", 0 ) // road gfx - ROM_LOAD( "epr-10642.47", 0x0000, 0x8000, CRC(7836bcc3) SHA1(26f308bf96224311ddf685799d7aa29aac42dd2f) ) - // socket IC11 not populated - - ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU - ROM_LOAD( "epr-10649a.88", 0x0000, 0x08000, CRC(bf38330f) SHA1(3d825bb02ef5a9f5c4fcaa71b3735e7f8e47f178) ) - - ROM_REGION( 0x40000, "pcm", ROMREGION_ERASEFF ) // sound PCM data - ROM_LOAD( "epr-10643.66", 0x00000, 0x08000, CRC(06f55364) SHA1(fd685795e12541e3d0059d383fab293b3980d247) ) - ROM_RELOAD( 0x08000, 0x08000 ) - ROM_LOAD( "epr-10644.67", 0x10000, 0x08000, CRC(b41d541d) SHA1(28bbfa5edaa4a5901c74074354ba6f14d8f42ff6) ) - ROM_RELOAD( 0x18000, 0x08000 ) - ROM_LOAD( "epr-10645.68", 0x20000, 0x08000, CRC(a60dabff) SHA1(bbef0fb0d7837cc7efc866226bfa2bd7fab06459) ) - ROM_RELOAD( 0x28000, 0x08000 ) - ROM_LOAD( "epr-10646.69", 0x30000, 0x08000, CRC(473cc411) SHA1(04ca2d047eb59581cd5d76e0ac6eca8b19eef497) ) - ROM_RELOAD( 0x38000, 0x08000 ) - - ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key - ROM_LOAD( "317-0034.key", 0x0000, 0x2000, CRC(263ca773) SHA1(8e80d69d61cf54fd02b0ca59dd397fa60c713f3d) ) -ROM_END - -/************************************************************************************************************************** - Super Hangon - CPU: FD1089B (317-0034) - CPU BD SUPER HANG-ON 837-6278-01 (or 837-6278-03) - VIDEO BD SUPER HANG-ON 837-6279 (or 837-6279-02, roms would be "OPR") -*/ -ROM_START( shangon2 ) - ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code - protected - ROM_LOAD16_BYTE( "epr-10636a.133", 0x000000, 0x10000, CRC(74a64f4f) SHA1(3266a9a3c68e147bc8626de7ec45b59fd28f9d1d) ) - ROM_LOAD16_BYTE( "epr-10634a.118", 0x000001, 0x10000, CRC(1608cb4a) SHA1(56b0a6a0a4951f15a269d94d18821809ac0d3d53) ) - ROM_LOAD16_BYTE( "epr-10637a.132", 0x020000, 0x10000, CRC(ad6c1308) SHA1(ee63168205bcb8b2c3dcbc3d7ba8a7f8f8a85952) ) - ROM_LOAD16_BYTE( "epr-10635a.117", 0x020001, 0x10000, CRC(a2415595) SHA1(2a8b960ea70066bf43c7b3772a0ed53d7c737b2c) ) - - ROM_REGION( 0x60000, "subcpu", 0 ) // second 68000 CPU - ROM_LOAD16_BYTE( "epr-10640.76", 0x00000, 0x10000, CRC(02be68db) SHA1(8c9f98ee49db54ee53b721ecf53f91737ae6cd73) ) - ROM_LOAD16_BYTE( "epr-10638.58", 0x00001, 0x10000, CRC(f13e8bee) SHA1(1c16c018f58f1fb49e240314a7e97a947087fad9) ) - ROM_LOAD16_BYTE( "epr-10641.75", 0x20000, 0x10000, CRC(38c3f808) SHA1(36fae99b56980ef33853170afe10b363cd41c053) ) - ROM_LOAD16_BYTE( "epr-10639.57", 0x20001, 0x10000, CRC(8cdbcde8) SHA1(0bcb4df96ee16db3dd4ce52fccd939f48a4bc1a0) ) - - ROM_REGION( 0x18000, "gfx1", 0 ) // tiles - ROM_LOAD( "epr-10652.54", 0x00000, 0x08000, CRC(260286f9) SHA1(dc7c8d2c6ef924a937328685eed19bda1c8b1819) ) - ROM_LOAD( "epr-10651.55", 0x08000, 0x08000, CRC(c609ee7b) SHA1(c6dacf81cbfe7e5df1f9a967cf571be1dcf1c429) ) - ROM_LOAD( "epr-10650.56", 0x10000, 0x08000, CRC(b236a403) SHA1(af02b8122794c083a66f2ab35d2c73b84b2df0be) ) - - ROM_REGION16_BE( 0x0e0000, "gfx2", 0 ) // sprites - ROM_LOAD16_BYTE( "epr-10675.8", 0x000001, 0x010000, CRC(d6ac012b) SHA1(305023b1a0a9d84cfc081ffc2ad7578b53d562f2) ) - ROM_LOAD16_BYTE( "epr-10682.16", 0x000000, 0x010000, CRC(d9d83250) SHA1(f8ca3197edcdf53643a5b335c3c044ddc1310cd4) ) - ROM_LOAD16_BYTE( "epr-10676.7", 0x020001, 0x010000, CRC(25ebf2c5) SHA1(abcf673ae4e280417dd9f46d18c0ec7c0e4802ae) ) - ROM_LOAD16_BYTE( "epr-10683.15", 0x020000, 0x010000, CRC(6365d2e9) SHA1(688e2ba194e859f86cd3486c2575ebae257e975a) ) - ROM_LOAD16_BYTE( "epr-10677.6", 0x040001, 0x010000, CRC(8a57b8d6) SHA1(df1a31559dd2d1e7c2c9d800bf97526bdf3e84e6) ) - ROM_LOAD16_BYTE( "epr-10684.14", 0x040000, 0x010000, CRC(3aff8910) SHA1(4b41a49a7f02363424e814b37edce9a7a44a112e) ) - ROM_LOAD16_BYTE( "epr-10678.5", 0x060001, 0x010000, CRC(af473098) SHA1(a2afaba1cbf672949dc50e407b46d7e9ae183774) ) - ROM_LOAD16_BYTE( "epr-10685.13", 0x060000, 0x010000, CRC(80bafeef) SHA1(f01bcf65485e60f34e533295a896fca0b92e5b14) ) - ROM_LOAD16_BYTE( "epr-10679.4", 0x080001, 0x010000, CRC(03bc4878) SHA1(548fc58bcc620204e30fa12fa4c4f0a3f6a1e4c0) ) - ROM_LOAD16_BYTE( "epr-10686.12", 0x080000, 0x010000, CRC(274b734e) SHA1(906fa528659bc17c9b4744cec52f7096711adce8) ) - ROM_LOAD16_BYTE( "epr-10680.3", 0x0a0001, 0x010000, CRC(9f0677ed) SHA1(5964642b70bfad418da44f2d91476f887b021f74) ) - ROM_LOAD16_BYTE( "epr-10687.11", 0x0a0000, 0x010000, CRC(508a4701) SHA1(d17aea2aadc2e2cd65d81bf91feb3ef6923d5c0b) ) - ROM_LOAD16_BYTE( "epr-10681.2", 0x0c0001, 0x010000, CRC(b176ea72) SHA1(7ec0eb0f13398d014c2e235773ded00351edb3e2) ) - ROM_LOAD16_BYTE( "epr-10688.10", 0x0c0000, 0x010000, CRC(42fcd51d) SHA1(0eacb3527dc21746e5b901fcac83f2764a0f9e2c) ) - - ROM_REGION( 0x10000, "gfx3", 0 ) // road gfx - ROM_LOAD( "epr-10642.47", 0x0000, 0x8000, CRC(7836bcc3) SHA1(26f308bf96224311ddf685799d7aa29aac42dd2f) ) - // socket IC11 not populated - - ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU - ROM_LOAD( "ic88", 0x0000, 0x08000, CRC(1254efa6) SHA1(997770ccdd776de6e335a6d8b1e15d200cbd4410) ) // EPR-10649 or EPR-10649B ??? - - ROM_REGION( 0x40000, "pcm", ROMREGION_ERASEFF ) // sound PCM data - ROM_LOAD( "epr-10643.66", 0x00000, 0x08000, CRC(06f55364) SHA1(fd685795e12541e3d0059d383fab293b3980d247) ) - ROM_RELOAD( 0x08000, 0x08000 ) - ROM_LOAD( "epr-10644.67", 0x10000, 0x08000, CRC(b41d541d) SHA1(28bbfa5edaa4a5901c74074354ba6f14d8f42ff6) ) - ROM_RELOAD( 0x18000, 0x08000 ) - ROM_LOAD( "epr-10645.68", 0x20000, 0x08000, CRC(a60dabff) SHA1(bbef0fb0d7837cc7efc866226bfa2bd7fab06459) ) - ROM_RELOAD( 0x28000, 0x08000 ) - ROM_LOAD( "epr-10646.69", 0x30000, 0x08000, CRC(473cc411) SHA1(04ca2d047eb59581cd5d76e0ac6eca8b19eef497) ) - ROM_RELOAD( 0x38000, 0x08000 ) - - ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key - ROM_LOAD( "317-0034.key", 0x0000, 0x2000, CRC(263ca773) SHA1(8e80d69d61cf54fd02b0ca59dd397fa60c713f3d) ) -ROM_END - -/************************************************************************************************************************** - Super Hangon - CPU: FD1089B (317-0034) - CPU BD SUPER HANG-ON 837-6278-01 (or 837-6278-03) - VIDEO BD SUPER HANG-ON 837-6279 (or 837-6279-02, roms would be "OPR") -*/ -ROM_START( shangon1 ) - ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code - protected - ROM_LOAD16_BYTE( "ic133", 0x000000, 0x10000, CRC(e52721fe) SHA1(21f0aa14d0cbda3d762bca86efe089646031aef5) ) // All EPR numbers for this main CPU version are unknown - ROM_LOAD16_BYTE( "ic118", 0x000001, 0x10000, BAD_DUMP CRC(5fee09f6) SHA1(b97a08ba75d8c617aceff2b03c1f2bfcb16181ef) ) - ROM_LOAD16_BYTE( "ic132", 0x020000, 0x10000, CRC(5d55d65f) SHA1(d02d76b98d74746b078b0f49f0320b8be48e4c47) ) - ROM_LOAD16_BYTE( "ic117", 0x020001, 0x10000, CRC(b967e8c3) SHA1(00224b337b162daff03bbfabdcf8541025220d46) ) - - ROM_REGION( 0x60000, "subcpu", 0 ) // second 68000 CPU - ROM_LOAD16_BYTE( "epr-10640.76", 0x00000, 0x10000, CRC(02be68db) SHA1(8c9f98ee49db54ee53b721ecf53f91737ae6cd73) ) - ROM_LOAD16_BYTE( "epr-10638.58", 0x00001, 0x10000, CRC(f13e8bee) SHA1(1c16c018f58f1fb49e240314a7e97a947087fad9) ) - ROM_LOAD16_BYTE( "epr-10641.75", 0x20000, 0x10000, CRC(38c3f808) SHA1(36fae99b56980ef33853170afe10b363cd41c053) ) - ROM_LOAD16_BYTE( "epr-10639.57", 0x20001, 0x10000, CRC(8cdbcde8) SHA1(0bcb4df96ee16db3dd4ce52fccd939f48a4bc1a0) ) - - ROM_REGION( 0x18000, "gfx1", 0 ) // tiles - ROM_LOAD( "epr-10652.54", 0x00000, 0x08000, CRC(260286f9) SHA1(dc7c8d2c6ef924a937328685eed19bda1c8b1819) ) - ROM_LOAD( "epr-10651.55", 0x08000, 0x08000, CRC(c609ee7b) SHA1(c6dacf81cbfe7e5df1f9a967cf571be1dcf1c429) ) - ROM_LOAD( "epr-10650.56", 0x10000, 0x08000, CRC(b236a403) SHA1(af02b8122794c083a66f2ab35d2c73b84b2df0be) ) - - ROM_REGION16_BE( 0x0e0000, "gfx2", 0 ) // sprites - ROM_LOAD16_BYTE( "epr-10675.8", 0x000001, 0x010000, CRC(d6ac012b) SHA1(305023b1a0a9d84cfc081ffc2ad7578b53d562f2) ) - ROM_LOAD16_BYTE( "epr-10682.16", 0x000000, 0x010000, CRC(d9d83250) SHA1(f8ca3197edcdf53643a5b335c3c044ddc1310cd4) ) - ROM_LOAD16_BYTE( "epr-10676.7", 0x020001, 0x010000, CRC(25ebf2c5) SHA1(abcf673ae4e280417dd9f46d18c0ec7c0e4802ae) ) - ROM_LOAD16_BYTE( "epr-10683.15", 0x020000, 0x010000, CRC(6365d2e9) SHA1(688e2ba194e859f86cd3486c2575ebae257e975a) ) - ROM_LOAD16_BYTE( "epr-10677.6", 0x040001, 0x010000, CRC(8a57b8d6) SHA1(df1a31559dd2d1e7c2c9d800bf97526bdf3e84e6) ) - ROM_LOAD16_BYTE( "epr-10684.14", 0x040000, 0x010000, CRC(3aff8910) SHA1(4b41a49a7f02363424e814b37edce9a7a44a112e) ) - ROM_LOAD16_BYTE( "epr-10678.5", 0x060001, 0x010000, CRC(af473098) SHA1(a2afaba1cbf672949dc50e407b46d7e9ae183774) ) - ROM_LOAD16_BYTE( "epr-10685.13", 0x060000, 0x010000, CRC(80bafeef) SHA1(f01bcf65485e60f34e533295a896fca0b92e5b14) ) - ROM_LOAD16_BYTE( "epr-10679.4", 0x080001, 0x010000, CRC(03bc4878) SHA1(548fc58bcc620204e30fa12fa4c4f0a3f6a1e4c0) ) - ROM_LOAD16_BYTE( "epr-10686.12", 0x080000, 0x010000, CRC(274b734e) SHA1(906fa528659bc17c9b4744cec52f7096711adce8) ) - ROM_LOAD16_BYTE( "epr-10680.3", 0x0a0001, 0x010000, CRC(9f0677ed) SHA1(5964642b70bfad418da44f2d91476f887b021f74) ) - ROM_LOAD16_BYTE( "epr-10687.11", 0x0a0000, 0x010000, CRC(508a4701) SHA1(d17aea2aadc2e2cd65d81bf91feb3ef6923d5c0b) ) - ROM_LOAD16_BYTE( "epr-10681.2", 0x0c0001, 0x010000, CRC(b176ea72) SHA1(7ec0eb0f13398d014c2e235773ded00351edb3e2) ) - ROM_LOAD16_BYTE( "epr-10688.10", 0x0c0000, 0x010000, CRC(42fcd51d) SHA1(0eacb3527dc21746e5b901fcac83f2764a0f9e2c) ) - - ROM_REGION( 0x10000, "gfx3", 0 ) // road gfx - ROM_LOAD( "epr-10642.47", 0x0000, 0x8000, CRC(7836bcc3) SHA1(26f308bf96224311ddf685799d7aa29aac42dd2f) ) - // socket IC11 not populated - - ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU - ROM_LOAD( "ic88", 0x0000, 0x08000, CRC(1254efa6) SHA1(997770ccdd776de6e335a6d8b1e15d200cbd4410) ) // EPR-10649 or EPR-10649B ??? - - ROM_REGION( 0x40000, "pcm", ROMREGION_ERASEFF ) // sound PCM data - ROM_LOAD( "epr-10643.66", 0x00000, 0x08000, CRC(06f55364) SHA1(fd685795e12541e3d0059d383fab293b3980d247) ) - ROM_RELOAD( 0x08000, 0x08000 ) - ROM_LOAD( "epr-10644.67", 0x10000, 0x08000, CRC(b41d541d) SHA1(28bbfa5edaa4a5901c74074354ba6f14d8f42ff6) ) - ROM_RELOAD( 0x18000, 0x08000 ) - ROM_LOAD( "epr-10645.68", 0x20000, 0x08000, CRC(a60dabff) SHA1(bbef0fb0d7837cc7efc866226bfa2bd7fab06459) ) - ROM_RELOAD( 0x28000, 0x08000 ) - ROM_LOAD( "epr-10646.69", 0x30000, 0x08000, CRC(473cc411) SHA1(04ca2d047eb59581cd5d76e0ac6eca8b19eef497) ) - ROM_RELOAD( 0x38000, 0x08000 ) - - ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key - ROM_LOAD( "317-0034.key", 0x0000, 0x2000, CRC(263ca773) SHA1(8e80d69d61cf54fd02b0ca59dd397fa60c713f3d) ) -ROM_END - -/************************************************************************************************************************** - Limited Edition Hangon - CPU: 68000 (317-????) - CPU BD SUPER HANG-ON 837-6278-01 (or 837-6278-03) - VIDEO BD SUPER HANG-ON 837-6279 (or 837-6279-02, rom would be "OPR") -*/ -ROM_START( shangonle ) - ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code - ROM_LOAD16_BYTE( "epr-13944.133", 0x000000, 0x10000, CRC(989a80db) SHA1(5026e5cf52d4fd85a0bab6c4ea7a34cf266b2a3b) ) - ROM_LOAD16_BYTE( "epr-13943.118", 0x000001, 0x10000, CRC(426e3050) SHA1(f332ea76285b4e1361d818cbe5aab0640b4185c3) ) - ROM_LOAD16_BYTE( "epr-10899.132", 0x020000, 0x10000, CRC(bb3faa37) SHA1(ccf3352255503fd6619e6e116d187a8cd1ff75e6) ) - ROM_LOAD16_BYTE( "epr-10897.117", 0x020001, 0x10000, CRC(5f087eb1) SHA1(bdfcc39e92087057acc4e91741a03e7ba57824c1) ) - - ROM_REGION( 0x60000, "subcpu", 0 ) // second 68000 CPU - ROM_LOAD16_BYTE( "epr-10640.76", 0x00000, 0x10000, CRC(02be68db) SHA1(8c9f98ee49db54ee53b721ecf53f91737ae6cd73) ) - ROM_LOAD16_BYTE( "epr-10638.58", 0x00001, 0x10000, CRC(f13e8bee) SHA1(1c16c018f58f1fb49e240314a7e97a947087fad9) ) - ROM_LOAD16_BYTE( "epr-10641.75", 0x20000, 0x10000, CRC(38c3f808) SHA1(36fae99b56980ef33853170afe10b363cd41c053) ) - ROM_LOAD16_BYTE( "epr-10639.57", 0x20001, 0x10000, CRC(8cdbcde8) SHA1(0bcb4df96ee16db3dd4ce52fccd939f48a4bc1a0) ) - - ROM_REGION( 0x18000, "gfx1", 0 ) // tiles - ROM_LOAD( "epr-10652.54", 0x00000, 0x08000, CRC(260286f9) SHA1(dc7c8d2c6ef924a937328685eed19bda1c8b1819) ) - ROM_LOAD( "epr-10651.55", 0x08000, 0x08000, CRC(c609ee7b) SHA1(c6dacf81cbfe7e5df1f9a967cf571be1dcf1c429) ) - ROM_LOAD( "epr-10650.56", 0x10000, 0x08000, CRC(b236a403) SHA1(af02b8122794c083a66f2ab35d2c73b84b2df0be) ) - - ROM_REGION16_BE( 0x0e0000, "gfx2", 0 ) // sprites - ROM_LOAD16_BYTE( "epr-10675.8", 0x000001, 0x010000, CRC(d6ac012b) SHA1(305023b1a0a9d84cfc081ffc2ad7578b53d562f2) ) - ROM_LOAD16_BYTE( "epr-10682.16", 0x000000, 0x010000, CRC(d9d83250) SHA1(f8ca3197edcdf53643a5b335c3c044ddc1310cd4) ) - ROM_LOAD16_BYTE( "epr-13945.7", 0x020001, 0x010000, CRC(fbb1eef9) SHA1(2798df2f25706e0d3be01d945274f478d7e5a2ae) ) - ROM_LOAD16_BYTE( "epr-13946.15", 0x020000, 0x010000, CRC(03144930) SHA1(c20f4883ee2de35cd0b67949de0e41464f2c5fae) ) - ROM_LOAD16_BYTE( "epr-10677.6", 0x040001, 0x010000, CRC(8a57b8d6) SHA1(df1a31559dd2d1e7c2c9d800bf97526bdf3e84e6) ) - ROM_LOAD16_BYTE( "epr-10684.14", 0x040000, 0x010000, CRC(3aff8910) SHA1(4b41a49a7f02363424e814b37edce9a7a44a112e) ) - ROM_LOAD16_BYTE( "epr-10678.5", 0x060001, 0x010000, CRC(af473098) SHA1(a2afaba1cbf672949dc50e407b46d7e9ae183774) ) - ROM_LOAD16_BYTE( "epr-10685.13", 0x060000, 0x010000, CRC(80bafeef) SHA1(f01bcf65485e60f34e533295a896fca0b92e5b14) ) - ROM_LOAD16_BYTE( "epr-10679.4", 0x080001, 0x010000, CRC(03bc4878) SHA1(548fc58bcc620204e30fa12fa4c4f0a3f6a1e4c0) ) - ROM_LOAD16_BYTE( "epr-10686.12", 0x080000, 0x010000, CRC(274b734e) SHA1(906fa528659bc17c9b4744cec52f7096711adce8) ) - ROM_LOAD16_BYTE( "epr-10680.3", 0x0a0001, 0x010000, CRC(9f0677ed) SHA1(5964642b70bfad418da44f2d91476f887b021f74) ) - ROM_LOAD16_BYTE( "epr-10687.11", 0x0a0000, 0x010000, CRC(508a4701) SHA1(d17aea2aadc2e2cd65d81bf91feb3ef6923d5c0b) ) - ROM_LOAD16_BYTE( "epr-10681.2", 0x0c0001, 0x010000, CRC(b176ea72) SHA1(7ec0eb0f13398d014c2e235773ded00351edb3e2) ) - ROM_LOAD16_BYTE( "epr-10688.10", 0x0c0000, 0x010000, CRC(42fcd51d) SHA1(0eacb3527dc21746e5b901fcac83f2764a0f9e2c) ) - - ROM_REGION( 0x10000, "gfx3", 0 ) // Road Graphics - ROM_LOAD( "epr-10642.47", 0x0000, 0x8000, CRC(7836bcc3) SHA1(26f308bf96224311ddf685799d7aa29aac42dd2f) ) - // socket IC11 not populated - - ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU - ROM_LOAD( "epr-10649c.88", 0x0000, 0x08000, CRC(f6c1ce71) SHA1(12299f7e5378a56be3a31cce3b8b74e48744f33a) ) - - ROM_REGION( 0x40000, "pcm", ROMREGION_ERASEFF ) // sound PCM data - ROM_LOAD( "epr-10643.66", 0x00000, 0x08000, CRC(06f55364) SHA1(fd685795e12541e3d0059d383fab293b3980d247) ) - ROM_RELOAD( 0x08000, 0x08000 ) - ROM_LOAD( "epr-10644.67", 0x10000, 0x08000, CRC(b41d541d) SHA1(28bbfa5edaa4a5901c74074354ba6f14d8f42ff6) ) - ROM_RELOAD( 0x18000, 0x08000 ) - ROM_LOAD( "epr-10645.68", 0x20000, 0x08000, CRC(a60dabff) SHA1(bbef0fb0d7837cc7efc866226bfa2bd7fab06459) ) - ROM_RELOAD( 0x28000, 0x08000 ) - ROM_LOAD( "epr-10646.69", 0x30000, 0x08000, CRC(473cc411) SHA1(04ca2d047eb59581cd5d76e0ac6eca8b19eef497) ) - ROM_RELOAD( 0x38000, 0x08000 ) -ROM_END - - //************************************************************************** -// GENERIC DRIVER INITIALIZATION +// CONFIGURATION //************************************************************************** +//------------------------------------------------- +// init_generic - common initialization +//------------------------------------------------- + +DRIVER_INIT_MEMBER(segaorun_state,generic) +{ + // allocate a scanline timer + m_scanline_timer = timer_alloc(TID_SCANLINE); + + // configure the NVRAM to point to our workram + if (m_nvram != NULL) + m_nvram->set_base(m_workram, m_workram.bytes()); + + // point globals to allocated memory regions + segaic16_spriteram_0 = reinterpret_cast(memshare("spriteram")->ptr()); + segaic16_paletteram = reinterpret_cast(memshare("paletteram")->ptr()); + segaic16_tileram_0 = reinterpret_cast(memshare("tileram")->ptr()); + segaic16_textram_0 = reinterpret_cast(memshare("textram")->ptr()); + segaic16_roadram_0 = reinterpret_cast(memshare("roadram")->ptr()); + + // save state + save_item(NAME(m_adc_select)); + save_item(NAME(m_vblank_irq_state)); + save_item(NAME(m_irq2_state)); +} + + +//------------------------------------------------- +// init_* - game-specific initialization +//------------------------------------------------- + DRIVER_INIT_MEMBER(segaorun_state,outrun) { - init_generic(); + DRIVER_INIT_CALL(generic); m_custom_io_r = read16_delegate(FUNC(segaorun_state::outrun_custom_io_r), this); m_custom_io_w = write16_delegate(FUNC(segaorun_state::outrun_custom_io_w), this); } - DRIVER_INIT_MEMBER(segaorun_state,outrunb) { - static const UINT8 memory_map[] = { 0x02,0x00,0x0d,0x10,0x00,0x12,0x0c,0x13,0x08,0x14,0x0f,0x20,0x00,0x00,0x00,0x00 }; - UINT16 *word; - UINT8 *byte; - int i, length; + DRIVER_INIT_CALL(outrun); - init_generic(); + // hard code a memory map + static const UINT8 memory_map[] = { 0x02,0x00,0x0d,0x10,0x00,0x12,0x0c,0x13,0x08,0x14,0x0f,0x20,0x00,0x00,0x00,0x00 }; m_custom_map = memory_map; - m_custom_io_r = read16_delegate(FUNC(segaorun_state::outrun_custom_io_r), this); - m_custom_io_w = write16_delegate(FUNC(segaorun_state::outrun_custom_io_w), this); // main CPU: swap bits 11,12 and 6,7 - word = (UINT16 *)memregion("maincpu")->base(); - length = memregion("maincpu")->bytes() / 2; - for (i = 0; i < length; i++) + UINT16 *word = (UINT16 *)memregion("maincpu")->base(); + UINT32 length = memregion("maincpu")->bytes() / 2; + for (UINT32 i = 0; i < length; i++) word[i] = BITSWAP16(word[i], 15,14,11,12,13,10,9,8,6,7,5,4,3,2,1,0); // sub CPU: swap bits 14,15 and 2,3 word = (UINT16 *)memregion("subcpu")->base(); length = memregion("subcpu")->bytes() / 2; - for (i = 0; i < length; i++) + for (UINT32 i = 0; i < length; i++) word[i] = BITSWAP16(word[i], 14,15,13,12,11,10,9,8,7,6,5,4,2,3,1,0); // road gfx // rom a-2.bin: swap bits 6,7 // rom a-3.bin: swap bits 5,6 - byte = memregion("gfx3")->base(); + UINT8 *byte = memregion("gfx3")->base(); length = memregion("gfx3")->bytes() / 2; - for (i = 0; i < length; i++) + for (UINT32 i = 0; i < length; i++) { byte[i] = BITSWAP8(byte[i], 6,7,5,4,3,2,1,0); byte[i+length] = BITSWAP8(byte[i+length], 7,5,6,4,3,2,1,0); @@ -2117,24 +2178,14 @@ DRIVER_INIT_MEMBER(segaorun_state,outrunb) // Z80 code: swap bits 5,6 byte = memregion("soundcpu")->base(); length = memregion("soundcpu")->bytes(); - for (i = 0; i < length; i++) + for (UINT32 i = 0; i < length; i++) byte[i] = BITSWAP8(byte[i], 7,5,6,4,3,2,1,0); } - DRIVER_INIT_MEMBER(segaorun_state,shangon) { - init_generic(); - m_is_shangon = true; - m_custom_io_r = read16_delegate(FUNC(segaorun_state::shangon_custom_io_r), this); - m_custom_io_w = write16_delegate(FUNC(segaorun_state::shangon_custom_io_w), this); -} - - -DRIVER_INIT_MEMBER(segaorun_state,shangon3) -{ - init_generic(); - m_is_shangon = true; + DRIVER_INIT_CALL(generic); + m_shangon_video = true; m_custom_io_r = read16_delegate(FUNC(segaorun_state::shangon_custom_io_r), this); m_custom_io_w = write16_delegate(FUNC(segaorun_state::shangon_custom_io_w), this); } @@ -2145,18 +2196,18 @@ DRIVER_INIT_MEMBER(segaorun_state,shangon3) // GAME DRIVERS //************************************************************************** -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS, LAYOUT -GAMEL(1986, outrun, 0, outrun, outrun, segaorun_state,outrun, ROT0, "Sega", "Out Run (sitdown/upright, Rev B)", 0, layout_outrun ) // Upright/Sitdown determined by dipswitch settings -GAMEL(1986, outrunra, outrun, outrun, outrun, segaorun_state,outrun, ROT0, "Sega", "Out Run (sitdown/upright, Rev A)", 0, layout_outrun ) // Upright/Sitdown determined by dipswitch settings -GAMEL(1986, outruno, outrun, outrun, outrun, segaorun_state,outrun, ROT0, "Sega", "Out Run (sitdown/upright)", 0, layout_outrun ) // Upright/Sitdown determined by dipswitch settings -GAMEL(1986, outrundx, outrun, outrundx, outrundx, segaorun_state,outrun, ROT0, "Sega", "Out Run (deluxe sitdown)", 0, layout_outrun ) -GAMEL(1986, outrunb, outrun, outrun, outrun, segaorun_state,outrunb, ROT0, "bootleg", "Out Run (bootleg)", 0, layout_outrun ) -GAME( 1987, shangon, 0, shangon, shangon, segaorun_state,shangon, ROT0, "Sega", "Super Hang-On (sitdown/upright, unprotected)", 0 ) -GAME( 1987, shangon3, shangon, shangon_fd1089b, shangon, segaorun_state,shangon3, ROT0, "Sega", "Super Hang-On (sitdown/upright, FD1089B 317-0034)", 0 ) -GAME( 1987, shangon2, shangon, shangon_fd1089b, shangon, segaorun_state,shangon3, ROT0, "Sega", "Super Hang-On (mini ride-on, Rev A, FD1089B 317-0034)", 0 ) -GAME( 1987, shangon1, shangon, shangon_fd1089b, shangon, segaorun_state,shangon3, ROT0, "Sega", "Super Hang-On (mini ride-on?, FD1089B 317-0034)", GAME_NOT_WORKING ) // bad program rom -GAME( 1991, shangonle,shangon, shangon, shangon, segaorun_state,shangon, ROT0, "Sega", "Limited Edition Hang-On", 0 ) -GAMEL(1989, toutrun, 0, outrun_fd1094, toutrun, segaorun_state,outrun, ROT0, "Sega", "Turbo Out Run (Out Run upgrade, FD1094 317-0118)", 0, layout_outrun ) // Cabinet determined by dipswitch settings -GAMEL(1989, toutrun3, toutrun, outrun_fd1094, toutrunc, segaorun_state,outrun, ROT0, "Sega", "Turbo Out Run (upright, FD1094 317-0107)", 0, layout_outrun ) -GAMEL(1989, toutrun2, toutrun, outrun_fd1094, toutrun, segaorun_state,outrun, ROT0, "Sega", "Turbo Out Run (cockpit, FD1094 317-unknown)", GAME_NOT_WORKING, layout_outrun ) // FD1094 CPU not decrypted -GAMEL(1989, toutrun1, toutrun, outrun_fd1094, toutrunm, segaorun_state,outrun, ROT0, "Sega", "Turbo Out Run (deluxe cockpit, FD1094 317-0109)", 0, layout_outrun ) +// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS, LAYOUT +GAMEL(1986, outrun, 0, outrun, outrun, segaorun_state,outrun, ROT0, "Sega", "Out Run (sitdown/upright, Rev B)", 0, layout_outrun ) // Upright/Sitdown determined by dipswitch settings +GAMEL(1986, outrunra, outrun, outrun, outrun, segaorun_state,outrun, ROT0, "Sega", "Out Run (sitdown/upright, Rev A)", 0, layout_outrun ) // Upright/Sitdown determined by dipswitch settings +GAMEL(1986, outruno, outrun, outrun, outrun, segaorun_state,outrun, ROT0, "Sega", "Out Run (sitdown/upright)", 0, layout_outrun ) // Upright/Sitdown determined by dipswitch settings +GAMEL(1986, outrundx, outrun, outrundx, outrundx, segaorun_state,outrun, ROT0, "Sega", "Out Run (deluxe sitdown)", 0, layout_outrun ) +GAMEL(1986, outrunb, outrun, outrun, outrun, segaorun_state,outrunb, ROT0, "bootleg", "Out Run (bootleg)", 0, layout_outrun ) +GAME( 1987, shangon, 0, shangon, shangon, segaorun_state,shangon, ROT0, "Sega", "Super Hang-On (sitdown/upright, unprotected)", 0 ) +GAME( 1987, shangon3, shangon, shangon_fd1089b, shangon, segaorun_state,shangon, ROT0, "Sega", "Super Hang-On (sitdown/upright, FD1089B 317-0034)", 0 ) +GAME( 1987, shangon2, shangon, shangon_fd1089b, shangon, segaorun_state,shangon, ROT0, "Sega", "Super Hang-On (mini ride-on, Rev A, FD1089B 317-0034)", 0 ) +GAME( 1987, shangon1, shangon, shangon_fd1089b, shangon, segaorun_state,shangon, ROT0, "Sega", "Super Hang-On (mini ride-on?, FD1089B 317-0034)", GAME_NOT_WORKING ) // bad program rom +GAME( 1991, shangonle,shangon, shangon, shangon, segaorun_state,shangon, ROT0, "Sega", "Limited Edition Hang-On", 0 ) +GAMEL(1989, toutrun, 0, outrun_fd1094, toutrun, segaorun_state,outrun, ROT0, "Sega", "Turbo Out Run (Out Run upgrade, FD1094 317-0118)", 0, layout_outrun ) // Cabinet determined by dipswitch settings +GAMEL(1989, toutrun3, toutrun, outrun_fd1094, toutrunc, segaorun_state,outrun, ROT0, "Sega", "Turbo Out Run (upright, FD1094 317-0107)", 0, layout_outrun ) +GAMEL(1989, toutrun2, toutrun, outrun_fd1094, toutrun, segaorun_state,outrun, ROT0, "Sega", "Turbo Out Run (cockpit, FD1094 317-unknown)", GAME_NOT_WORKING, layout_outrun ) // FD1094 CPU not decrypted +GAMEL(1989, toutrun1, toutrun, outrun_fd1094, toutrunm, segaorun_state,outrun, ROT0, "Sega", "Turbo Out Run (deluxe cockpit, FD1094 317-0109)", 0, layout_outrun ) diff --git a/src/mame/drivers/segas16a.c b/src/mame/drivers/segas16a.c index 76108d4f942..3962051c17e 100644 --- a/src/mame/drivers/segas16a.c +++ b/src/mame/drivers/segas16a.c @@ -3483,49 +3483,49 @@ DRIVER_INIT_MEMBER(segas16a_state,generic) DRIVER_INIT_MEMBER(segas16a_state,aceattaa) { - init_generic(); + DRIVER_INIT_CALL(generic); m_custom_io_r = read16_delegate(FUNC(segas16a_state::aceattaa_custom_io_r), this); } DRIVER_INIT_MEMBER(segas16a_state,dumpmtmt) { - init_generic(); + DRIVER_INIT_CALL(generic); m_i8751_vblank_hook = i8751_sim_delegate(FUNC(segas16a_state::dumpmtmt_i8751_sim), this); } DRIVER_INIT_MEMBER(segas16a_state,mjleague) { - init_generic(); + DRIVER_INIT_CALL(generic); m_custom_io_r = read16_delegate(FUNC(segas16a_state::mjleague_custom_io_r), this); } DRIVER_INIT_MEMBER(segas16a_state,passsht16a) { - init_generic(); + DRIVER_INIT_CALL(generic); m_custom_io_r = read16_delegate(FUNC(segas16a_state::passsht16a_custom_io_r), this); } DRIVER_INIT_MEMBER(segas16a_state,quartet) { - init_generic(); + DRIVER_INIT_CALL(generic); m_i8751_vblank_hook = i8751_sim_delegate(FUNC(segas16a_state::quartet_i8751_sim), this); } DRIVER_INIT_MEMBER(segas16a_state,fantzonep) { - init_generic(); + DRIVER_INIT_CALL(generic); sega_315_5177_decode(machine(), "soundcpu"); } DRIVER_INIT_MEMBER(segas16a_state,sdi) { - init_generic(); + DRIVER_INIT_CALL(generic); m_custom_io_r = read16_delegate(FUNC(segas16a_state::sdi_custom_io_r), this); } DRIVER_INIT_MEMBER(segas16a_state,sjryukoa) { - init_generic(); + DRIVER_INIT_CALL(generic); m_custom_io_r = read16_delegate(FUNC(segas16a_state::sjryuko_custom_io_r), this); m_lamp_changed_w = lamp_changed_delegate(FUNC(segas16a_state::sjryuko_lamp_changed_w), this); } diff --git a/src/mame/drivers/segas16b.c b/src/mame/drivers/segas16b.c index 64e51949e39..1cc316afbc1 100644 --- a/src/mame/drivers/segas16b.c +++ b/src/mame/drivers/segas16b.c @@ -6433,56 +6433,56 @@ DRIVER_INIT_MEMBER(segas16b_state,generic_korean) DRIVER_INIT_MEMBER(segas16b_state,aceattac_5358) { - init_generic_5358(); + DRIVER_INIT_CALL(generic_5358); m_custom_io_r = read16_delegate(FUNC(segas16b_state::aceattac_custom_io_r), this); } DRIVER_INIT_MEMBER(segas16b_state,altbeast_5521) { - init_generic_5521(); + DRIVER_INIT_CALL(generic_5521); m_i8751_vblank_hook = i8751_sim_delegate(FUNC(segas16b_state::altbeast_i8751_sim), this); } DRIVER_INIT_MEMBER(segas16b_state,altbeasj_5521) { - init_generic_5521(); + DRIVER_INIT_CALL(generic_5521); m_i8751_vblank_hook = i8751_sim_delegate(FUNC(segas16b_state::altbeasj_i8751_sim), this); } DRIVER_INIT_MEMBER(segas16b_state,altbeas5_5521) { - init_generic_5521(); + DRIVER_INIT_CALL(generic_5521); m_i8751_vblank_hook = i8751_sim_delegate(FUNC(segas16b_state::altbeas5_i8751_sim), this); } DRIVER_INIT_MEMBER(segas16b_state,altbeas4_5521) { - init_generic_5521(); + DRIVER_INIT_CALL(generic_5521); mc8123_decrypt_rom(machine(), "soundcpu", "mcu", NULL, 0); } DRIVER_INIT_MEMBER(segas16b_state,ddux_5704) { - init_generic_5704(); + DRIVER_INIT_CALL(generic_5704); m_i8751_vblank_hook = i8751_sim_delegate(FUNC(segas16b_state::ddux_i8751_sim), this); } DRIVER_INIT_MEMBER(segas16b_state,dunkshot_5358_small) { - init_generic_5358_small(); + DRIVER_INIT_CALL(generic_5358_small); m_custom_io_r = read16_delegate(FUNC(segas16b_state::dunkshot_custom_io_r), this); m_tilemap_type = SEGAIC16_TILEMAP_16B_ALT; } DRIVER_INIT_MEMBER(segas16b_state,exctleag_5358) { - init_generic_5358(); + DRIVER_INIT_CALL(generic_5358); m_custom_io_r = read16_delegate(FUNC(segas16b_state::sdi_custom_io_r), this); } DRIVER_INIT_MEMBER(segas16b_state,goldnaxe_5704) { - init_generic_5704(); + DRIVER_INIT_CALL(generic_5704); m_i8751_vblank_hook = i8751_sim_delegate(FUNC(segas16b_state::goldnaxe_i8751_sim), this); static const UINT8 memory_control_5704[0x10] = @@ -6492,7 +6492,7 @@ DRIVER_INIT_MEMBER(segas16b_state,goldnaxe_5704) DRIVER_INIT_MEMBER(segas16b_state,goldnaxe_5797) { - init_generic_5797(); + DRIVER_INIT_CALL(generic_5797); m_i8751_vblank_hook = i8751_sim_delegate(FUNC(segas16b_state::goldnaxe_i8751_sim), this); static const UINT8 memory_control_5797[0x10] = @@ -6502,44 +6502,44 @@ DRIVER_INIT_MEMBER(segas16b_state,goldnaxe_5797) DRIVER_INIT_MEMBER(segas16b_state,hwchamp_5521) { - init_generic_5521(); + DRIVER_INIT_CALL(generic_5521); m_custom_io_r = read16_delegate(FUNC(segas16b_state::hwchamp_custom_io_r), this); m_custom_io_w = write16_delegate(FUNC(segas16b_state::hwchamp_custom_io_w), this); } DRIVER_INIT_MEMBER(segas16b_state,passshtj_5358) { - init_generic_5358(); + DRIVER_INIT_CALL(generic_5358); m_custom_io_r = read16_delegate(FUNC(segas16b_state::passshtj_custom_io_r), this); } DRIVER_INIT_MEMBER(segas16b_state,sdi_5358_small) { - init_generic_5358_small(); + DRIVER_INIT_CALL(generic_5358_small); m_custom_io_r = read16_delegate(FUNC(segas16b_state::sdi_custom_io_r), this); } DRIVER_INIT_MEMBER(segas16b_state,defense_5358_small) { - init_generic_5358_small(); + DRIVER_INIT_CALL(generic_5358_small); m_custom_io_r = read16_delegate(FUNC(segas16b_state::sdi_custom_io_r), this); } DRIVER_INIT_MEMBER(segas16b_state,shinobi4_5521) { - init_generic_5521(); + DRIVER_INIT_CALL(generic_5521); mc8123_decrypt_rom(machine(), "soundcpu", "mcu", NULL, 0); } DRIVER_INIT_MEMBER(segas16b_state,shinobi3_5358) { - init_generic_5358(); + DRIVER_INIT_CALL(generic_5358); mc8123_decrypt_rom(machine(), "soundcpu", "mcu", NULL, 0); } DRIVER_INIT_MEMBER(segas16b_state,sjryuko_5358_small) { - init_generic_5358_small(); + DRIVER_INIT_CALL(generic_5358_small); m_custom_io_r = read16_delegate(FUNC(segas16b_state::sjryuko_custom_io_r), this); m_custom_io_w = write16_delegate(FUNC(segas16b_state::sjryuko_custom_io_w), this); m_tilemap_type = SEGAIC16_TILEMAP_16B_ALT; @@ -6547,24 +6547,25 @@ DRIVER_INIT_MEMBER(segas16b_state,sjryuko_5358_small) DRIVER_INIT_MEMBER(segas16b_state,timescan_5358_small) { - init_generic_5358_small(); + DRIVER_INIT_CALL(generic_5358_small); m_tilemap_type = SEGAIC16_TILEMAP_16B_ALT; } + DRIVER_INIT_MEMBER(segas16b_state,tturf_5704) { - init_generic_5704(); + DRIVER_INIT_CALL(generic_5704); m_i8751_vblank_hook = i8751_sim_delegate(FUNC(segas16b_state::tturf_i8751_sim), this); } DRIVER_INIT_MEMBER(segas16b_state,wb3_5704) { - init_generic_5704(); + DRIVER_INIT_CALL(generic_5704); m_i8751_vblank_hook = i8751_sim_delegate(FUNC(segas16b_state::wb3_i8751_sim), this); } DRIVER_INIT_MEMBER(segas16b_state,snapper) { - init_generic_korean(); + DRIVER_INIT_CALL(generic_korean); m_atomicp_sound_divisor = 4; } @@ -7127,7 +7128,7 @@ MACHINE_CONFIG_END DRIVER_INIT_MEMBER(isgsm_state,isgsm) { - init_generic_5521(); + DRIVER_INIT_CALL(generic_5521); // decrypt the bios... dynamic_array temp(0x20000/2); diff --git a/src/mame/drivers/segaxbd.c b/src/mame/drivers/segaxbd.c index 5dab9ba0e50..8a7ac7d08db 100644 --- a/src/mame/drivers/segaxbd.c +++ b/src/mame/drivers/segaxbd.c @@ -301,194 +301,123 @@ ROMs: #include "includes/segaipt.h" -#define MASTER_CLOCK XTAL_50MHz -#define SOUND_CLOCK XTAL_16MHz +//************************************************************************** +// CONSTANTS +//************************************************************************** + +const UINT32 MASTER_CLOCK = XTAL_50MHz; +const UINT32 SOUND_CLOCK = XTAL_16MHz; -/************************************* - * - * Interrupts - * - *************************************/ - -static void update_main_irqs(running_machine &machine) -{ - segaxbd_state *state = machine.driver_data(); - int irq = 0; - - if (state->m_timer_irq_state) - irq |= 2; - else - device_set_input_line(state->m_maincpu, 2, CLEAR_LINE); - - if (state->m_vblank_irq_state) - irq |= 4; - else - device_set_input_line(state->m_maincpu, 4, CLEAR_LINE); - - if (state->m_gprider_hack && irq > 4) - irq = 4; - - if (!(irq==6)) - device_set_input_line(state->m_maincpu, 6, CLEAR_LINE); - - if (irq) - { - device_set_input_line(state->m_maincpu, irq, ASSERT_LINE); - machine.scheduler().boost_interleave(attotime::zero, attotime::from_usec(100)); - } -} - - -static TIMER_CALLBACK( scanline_callback ) -{ - segaxbd_state *state = machine.driver_data(); - - int scanline = param; - int next_scanline = (scanline + 2) % 262; - int update = 0; - - /* clock the timer and set the IRQ if something happened */ - if ((scanline % 2) != 0 && state->m_cmptimer_1->clock()) - state->m_timer_irq_state = update = 1; - - /* set VBLANK on scanline 223 */ - if (scanline == 223) - { - state->m_vblank_irq_state = update = 1; - device_set_input_line(state->m_subcpu, 4, ASSERT_LINE); - next_scanline = scanline + 1; - } - - /* clear VBLANK on scanline 224 */ - else if (scanline == 224) - { - state->m_vblank_irq_state = 0; - update = 1; - device_set_input_line(state->m_subcpu, 4, CLEAR_LINE); - next_scanline = scanline + 1; - } - - /* update IRQs on the main CPU */ - if (update) - update_main_irqs(machine); - - /* come back in 2 scanlines */ - state->m_scanline_timer->adjust(machine.primary_screen->time_until_pos(next_scanline), next_scanline); -} +//************************************************************************** +// COMPARE/TIMER CHIP CALLBACKS +//************************************************************************** +//------------------------------------------------- +// timer_ack_callback - acknowledge a timer chip +// interrupt signal +//------------------------------------------------- void segaxbd_state::timer_ack_callback() { - /* clear the timer IRQ */ + // clear the timer IRQ m_timer_irq_state = 0; - update_main_irqs(machine()); + update_main_irqs(); } - -/************************************* - * - * Sound communication - * - *************************************/ - -static TIMER_CALLBACK( delayed_sound_data_w ) -{ - segaxbd_state *state = machine.driver_data(); - address_space *space = state->m_maincpu->memory().space(AS_PROGRAM); - - state->soundlatch_byte_w(*space, 0, param); - device_set_input_line(state->m_soundcpu, INPUT_LINE_NMI, ASSERT_LINE); - - // if an extra sound board is attached, do an nmi there as well - if (state->m_soundcpu2 != NULL) - device_set_input_line(state->m_soundcpu2, INPUT_LINE_NMI, ASSERT_LINE); -} - +//------------------------------------------------- +// sound_data_w - write data to the sound CPU +//------------------------------------------------- void segaxbd_state::sound_data_w(UINT8 data) { - machine().scheduler().synchronize(FUNC(delayed_sound_data_w), data); -} - - -static void sound_cpu_irq(device_t *device, int state) -{ - segaxbd_state *driver = device->machine().driver_data(); - - device_set_input_line(driver->m_soundcpu, 0, state); -} - - -static READ8_HANDLER( sound_data_r ) -{ - segaxbd_state *state = space->machine().driver_data(); - - device_set_input_line(&space->device(), INPUT_LINE_NMI, CLEAR_LINE); - return state->soundlatch_byte_r(*space, offset); + synchronize(TID_SOUND_WRITE, data); } -/************************************* - * - * Input handlers - * - *************************************/ +//************************************************************************** +// YM2151 CHIP CALLBACKS +//************************************************************************** -static READ16_HANDLER( adc_r ) +//------------------------------------------------- +// sound_cpu_irq - signal an IRQ to the sound CPU +//------------------------------------------------- + +WRITE_LINE_MEMBER( segaxbd_state::sound_cpu_irq ) +{ + m_soundcpu->set_input_line(0, state); +} + + + +//************************************************************************** +// MAIN CPU READ/WRITE CALLBACKS +//************************************************************************** + +//------------------------------------------------- +// adc_w - handle reads from the ADC +//------------------------------------------------- + +READ16_MEMBER( segaxbd_state::adc_r ) { - segaxbd_state *state = space->machine().driver_data(); static const char *const ports[] = { "ADC0", "ADC1", "ADC2", "ADC3", "ADC4", "ADC5", "ADC6", "ADC7" }; - int which = (state->m_iochip_regs[0][2] >> 2) & 7; - /* on the write, latch the selected input port and stash the value */ - int value = state->ioport(ports[which])->read_safe(0x0010); + // on the write, latch the selected input port and stash the value + int which = (m_iochip_regs[0][2] >> 2) & 7; + int value = ioport(ports[which])->read_safe(0x0010); - /* reverse some port values */ - if (state->m_adc_reverse[which]) + // reverse some port values + if (m_adc_reverse[which]) value = 255 - value; - /* return the previously latched value */ + // return the previously latched value return value; } -static WRITE16_HANDLER( adc_w ) +//------------------------------------------------- +// adc_w - handle writes to the ADC +//------------------------------------------------- + +WRITE16_MEMBER( segaxbd_state::adc_w ) { } -INLINE UINT16 iochip_r(running_machine &machine, int which, int port, int inputval) +//------------------------------------------------- +// iochip_r - helper to handle I/O chip reads +//------------------------------------------------- + +inline UINT16 segaxbd_state::iochip_r(int which, int port, int inputval) { - segaxbd_state *state = machine.driver_data(); - UINT16 result = state->m_iochip_regs[which][port]; + UINT16 result = m_iochip_regs[which][port]; - /* if there's custom I/O, do that to get the input value */ - if (state->m_iochip_custom_io_r[which][port]) - inputval = (*state->m_iochip_custom_io_r[which][port])(machine, inputval); + // if there's custom I/O, do that to get the input value + if (!m_iochip_custom_io_r[which][port].isnull()) + inputval = m_iochip_custom_io_r[which][port](inputval); - /* for ports 0-3, the direction is controlled 4 bits at a time by register 6 */ + // for ports 0-3, the direction is controlled 4 bits at a time by register 6 if (port <= 3) { - if ((state->m_iochip_regs[which][6] >> (2 * port + 0)) & 1) + if ((m_iochip_regs[which][6] >> (2 * port + 0)) & 1) result = (result & ~0x0f) | (inputval & 0x0f); - if ((state->m_iochip_regs[which][6] >> (2 * port + 1)) & 1) + if ((m_iochip_regs[which][6] >> (2 * port + 1)) & 1) result = (result & ~0xf0) | (inputval & 0xf0); } - /* for port 4, the direction is controlled 1 bit at a time by register 7 */ + // for port 4, the direction is controlled 1 bit at a time by register 7 else { - if ((state->m_iochip_regs[which][7] >> 0) & 1) + if ((m_iochip_regs[which][7] >> 0) & 1) result = (result & ~0x01) | (inputval & 0x01); - if ((state->m_iochip_regs[which][7] >> 1) & 1) + if ((m_iochip_regs[which][7] >> 1) & 1) result = (result & ~0x02) | (inputval & 0x02); - if ((state->m_iochip_regs[which][7] >> 2) & 1) + if ((m_iochip_regs[which][7] >> 2) & 1) result = (result & ~0x04) | (inputval & 0x04); - if ((state->m_iochip_regs[which][7] >> 3) & 1) + if ((m_iochip_regs[which][7] >> 3) & 1) result = (result & ~0x08) | (inputval & 0x08); result &= 0x0f; } @@ -496,181 +425,360 @@ INLINE UINT16 iochip_r(running_machine &machine, int which, int port, int inputv } -static READ16_HANDLER( iochip_0_r ) +//------------------------------------------------- +// iochip_0_r - handle reads from the first I/O +// chip +//------------------------------------------------- + +READ16_MEMBER( segaxbd_state::iochip_0_r ) { switch (offset) { case 0: - /* Input port: - D7: (Not connected) - D6: /INTR of ADC0804 - D5-D0: CN C pin 24-19 (switch state 0= open, 1= closed) - */ - return iochip_r(space->machine(), 0, 0, space->machine().root_device().ioport("IO0PORTA")->read()); + // Input port: + // D7: (Not connected) + // D6: /INTR of ADC0804 + // D5-D0: CN C pin 24-19 (switch state 0= open, 1= closed) + return iochip_r(0, 0, ioport("IO0PORTA")->read()); case 1: - /* I/O port: CN C pins 17,15,13,11,9,7,5,3 */ - return iochip_r(space->machine(), 0, 1, space->machine().root_device().ioport("IO0PORTB")->read()); + // I/O port: CN C pins 17,15,13,11,9,7,5,3 + return iochip_r(0, 1, ioport("IO0PORTB")->read()); case 2: - /* Output port */ - return iochip_r(space->machine(), 0, 2, 0); + // Output port + return iochip_r(0, 2, 0); case 3: - /* Output port */ - return iochip_r(space->machine(), 0, 3, 0); + // Output port + return iochip_r(0, 3, 0); case 4: - /* Unused */ - return iochip_r(space->machine(), 0, 4, 0); + // Unused + return iochip_r(0, 4, 0); } - /* everything else returns 0 */ + // everything else returns 0 return 0; } -static WRITE16_HANDLER( iochip_0_w ) -{ - segaxbd_state *state = space->machine().driver_data(); - UINT8 oldval; +//------------------------------------------------- +// iochip_0_w - handle writes to the first I/O +// chip +//------------------------------------------------- - /* access is via the low 8 bits */ +WRITE16_MEMBER( segaxbd_state::iochip_0_w ) +{ + // access is via the low 8 bits if (!ACCESSING_BITS_0_7) return; data &= 0xff; - /* swap in the new value and remember the previous value */ - oldval = state->m_iochip_regs[0][offset]; - state->m_iochip_regs[0][offset] = data; + // swap in the new value and remember the previous value + UINT8 oldval = m_iochip_regs[0][offset]; + m_iochip_regs[0][offset] = data; - /* certain offsets have common effects */ + // certain offsets have common effects switch (offset) { case 2: - /* Output port: - D7: (Not connected) - D6: (/WDC) - watchdog reset - D5: Screen display (1= blanked, 0= displayed) - D4-D2: (ADC2-0) - D1: (CONT) - affects sprite hardware - D0: Sound section reset (1= normal operation, 0= reset) - */ + // Output port: + // D7: (Not connected) + // D6: (/WDC) - watchdog reset + // D5: Screen display (1= blanked, 0= displayed) + // D4-D2: (ADC2-0) + // D1: (CONT) - affects sprite hardware + // D0: Sound section reset (1= normal operation, 0= reset) if (((oldval ^ data) & 0x40) && !(data & 0x40)) - state->watchdog_reset_w(*space, 0, 0); + machine().watchdog_reset(); - segaic16_set_display_enable(space->machine(), data & 0x20); + segaic16_set_display_enable(machine(), data & 0x20); - device_set_input_line(state->m_soundcpu, INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE); - if (state->m_soundcpu2 != NULL) - device_set_input_line(state->m_soundcpu2, INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE); + m_soundcpu->set_input_line(INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE); + if (m_soundcpu2 != NULL) + m_soundcpu2->set_input_line(INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE); break; case 3: - /* Output port: - D7: Amplifier mute control (1= sounding, 0= muted) - D6-D0: CN D pin A17-A23 (output level 1= high, 0= low) - usually set up as lamps and coincounter - */ - space->machine().sound().system_enable(data & 0x80); + // Output port: + // D7: Amplifier mute control (1= sounding, 0= muted) + // D6-D0: CN D pin A17-A23 (output level 1= high, 0= low) - usually set up as lamps and coincounter + machine().sound().system_enable(data & 0x80); break; - default: break; + default: + break; } - /* if there's custom I/O, handle that as well */ - if (state->m_iochip_custom_io_w[0][offset]) - (*state->m_iochip_custom_io_w[0][offset])(space->machine(), data); + // if there's custom I/O, handle that as well + if (!m_iochip_custom_io_w[0][offset].isnull()) + m_iochip_custom_io_w[0][offset](data); else if (offset <= 4) logerror("I/O chip 0, port %c write = %02X\n", 'A' + offset, data); } -static READ16_HANDLER( iochip_1_r ) +//------------------------------------------------- +// iochip_1_r - handle reads from the second I/O +// chip +//------------------------------------------------- + +READ16_MEMBER( segaxbd_state::iochip_1_r ) { switch (offset) { case 0: - /* Input port: switches, CN D pin A1-8 (switch state 1= open, 0= closed) */ - return iochip_r(space->machine(), 1, 0, space->machine().root_device().ioport("IO1PORTA")->read()); + // Input port: switches, CN D pin A1-8 (switch state 1= open, 0= closed) + return iochip_r(1, 0, ioport("IO1PORTA")->read()); case 1: - /* Input port: switches, CN D pin A9-16 (switch state 1= open, 0= closed) */ - return iochip_r(space->machine(), 1, 1, space->machine().root_device().ioport("IO1PORTB")->read()); + // Input port: switches, CN D pin A9-16 (switch state 1= open, 0= closed) + return iochip_r(1, 1, ioport("IO1PORTB")->read()); case 2: - /* Input port: DIP switches (1= off, 0= on) */ - return iochip_r(space->machine(), 1, 2, space->machine().root_device().ioport("IO1PORTC")->read()); + // Input port: DIP switches (1= off, 0= on) + return iochip_r(1, 2, ioport("IO1PORTC")->read()); case 3: - /* Input port: DIP switches (1= off, 0= on) */ - return iochip_r(space->machine(), 1, 3, space->machine().root_device().ioport("IO1PORTD")->read()); + // Input port: DIP switches (1= off, 0= on) + return iochip_r(1, 3, ioport("IO1PORTD")->read()); case 4: - /* Unused */ - return iochip_r(space->machine(), 1, 4, 0); + // Unused + return iochip_r(1, 4, 0); } - /* everything else returns 0 */ + // everything else returns 0 return 0; } -static WRITE16_HANDLER( iochip_1_w ) -{ - segaxbd_state *state = space->machine().driver_data(); +//------------------------------------------------- +// iochip_1_w - handle writes to the second I/O +// chip +//------------------------------------------------- - /* access is via the low 8 bits */ +WRITE16_MEMBER( segaxbd_state::iochip_1_w ) +{ + // access is via the low 8 bits if (!ACCESSING_BITS_0_7) return; data &= 0xff; - state->m_iochip_regs[1][offset] = data; + m_iochip_regs[1][offset] = data; - /* if there's custom I/O, handle that as well */ - if (state->m_iochip_custom_io_w[1][offset]) - (*state->m_iochip_custom_io_w[1][offset])(space->machine(), data); + // if there's custom I/O, handle that as well + if (!m_iochip_custom_io_w[1][offset].isnull()) + m_iochip_custom_io_w[1][offset](data); else if (offset <= 4) logerror("I/O chip 1, port %c write = %02X\n", 'A' + offset, data); } -static WRITE16_HANDLER( iocontrol_w ) +//------------------------------------------------- +// iocontrol_w - handle writes to the I/O control +// port +//------------------------------------------------- + +WRITE16_MEMBER( segaxbd_state::iocontrol_w ) { if (ACCESSING_BITS_0_7) { logerror("I/O chip force input = %d\n", data & 1); - /* Racing Hero and ABCop set this and fouls up their output ports */ - /*iochip_force_input = data & 1;*/ + // Racing Hero and ABCop set this and fouls up their output ports + //iochip_force_input = data & 1; } } -/************************************* - * - * Custom I/O Handlers - * - *************************************/ +//************************************************************************** +// GAME-SPECIFIC MAIN CPU READ/WRITE HANDLERS +//************************************************************************** -static void generic_iochip0_lamps_w(running_machine &machine, UINT8 data) +//------------------------------------------------- +// loffire_sync0_w - force synchronization on +// writes to this address for Line of Fire +//------------------------------------------------- + +WRITE16_MEMBER( segaxbd_state::loffire_sync0_w ) +{ + COMBINE_DATA(&m_loffire_sync[offset]); + machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(10)); +} + + +//------------------------------------------------- +// rascot_excs_r - /EXCS region reads for Rascot +//------------------------------------------------- + +READ16_MEMBER( segaxbd_state::rascot_excs_r ) +{ + logerror("%06X:rascot_excs_r(%04X)\n", m_maincpu->pc(), offset*2); + + // probably receives commands from the server here + //return space->machine().rand() & 0xff; + + return 0xff; +} + + +//------------------------------------------------- +// rascot_excs_w - /EXCS region writes for Rascot +//------------------------------------------------- + +WRITE16_MEMBER( segaxbd_state::rascot_excs_w ) +{ + logerror("%06X:rascot_excs_w(%04X) = %04X & %04X\n", m_maincpu->pc(), offset*2, data, mem_mask); +} + + +//------------------------------------------------- +// smgp_excs_r - /EXCS region reads for +// Super Monaco GP +//------------------------------------------------- + +READ16_MEMBER( segaxbd_state::smgp_excs_r ) +{ + logerror("%06X:smgp_excs_r(%04X)\n", m_maincpu->pc(), offset*2); + return 0xffff; +} + + +//------------------------------------------------- +// smgp_excs_w - /EXCS region writes for +// Super Monaco GP +//------------------------------------------------- + +WRITE16_MEMBER( segaxbd_state::smgp_excs_w ) +{ + logerror("%06X:smgp_excs_w(%04X) = %04X & %04X\n", m_maincpu->pc(), offset*2, data, mem_mask); +} + + + +//************************************************************************** +// SOUND Z80 CPU READ/WRITE CALLBACKS +//************************************************************************** + +//------------------------------------------------- +// sound_data_r - read latched sound data +//------------------------------------------------- + +READ8_MEMBER( segaxbd_state::sound_data_r ) +{ + m_soundcpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); + return soundlatch_read(); +} + + + +//************************************************************************** +// DRIVER OVERRIDES +//************************************************************************** + +//------------------------------------------------- +// machine_reset - reset the state of the machine +//------------------------------------------------- + +void segaxbd_state::machine_reset() +{ + segaic16_tilemap_reset(machine(), 0); + + // hook the RESET line, which resets CPU #1 + m68k_set_reset_callback(m_maincpu, &segaxbd_state::m68k_reset_callback); + + // start timers to track interrupts + m_scanline_timer->adjust(machine().primary_screen->time_until_pos(1), 1); +} + + +//------------------------------------------------- +// device_timer - handle device timers +//------------------------------------------------- + +void segaxbd_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +{ + switch (id) + { + case TID_SOUND_WRITE: + soundlatch_write(param); + m_soundcpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); + + // if an extra sound board is attached, do an nmi there as well + if (m_soundcpu2 != NULL) + m_soundcpu2->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); + break; + + case TID_SCANLINE: + { + int scanline = param; + int next_scanline = (scanline + 2) % 262; + bool update = false; + + // clock the timer and set the IRQ if something happened + if ((scanline % 2) != 0 && m_cmptimer_1->clock()) + m_timer_irq_state = 1, update = true; + + // set VBLANK on scanline 223 + if (scanline == 223) + { + m_vblank_irq_state = 1; + update = true; + m_subcpu->set_input_line(4, ASSERT_LINE); + next_scanline = scanline + 1; + } + + // clear VBLANK on scanline 224 + else if (scanline == 224) + { + m_vblank_irq_state = 0; + update = true; + m_subcpu->set_input_line(4, CLEAR_LINE); + next_scanline = scanline + 1; + } + + // update IRQs on the main CPU + if (update) + update_main_irqs(); + + // come back in 2 scanlines + m_scanline_timer->adjust(machine().primary_screen->time_until_pos(next_scanline), next_scanline); + break; + } + } +} + + + +//************************************************************************** +// CUSTOM I/O HANDLERS +//************************************************************************** + +//------------------------------------------------- +// generic_iochip0_lamps_w - shared handler for +// coin counters and lamps +//------------------------------------------------- + +void segaxbd_state::generic_iochip0_lamps_w(UINT8 data) { // d0: ? // d3: always 0? // d4: coin counter // d7: mute audio (always handled above) // other bits: lamps - coin_counter_w(machine, 0, (data >> 4) & 0x01); + coin_counter_w(machine(), 0, (data >> 4) & 0x01); - /* - aburner2: - d1: altitude warning lamp - d2: start lamp - d5: lock on lamp - d6: danger lamp - in clone aburner, lamps work only in testmode? + // + // aburner2: + // d1: altitude warning lamp + // d2: start lamp + // d5: lock on lamp + // d6: danger lamp + // in clone aburner, lamps work only in testmode? - */ output_set_lamp_value(0, (data >> 5) & 0x01); output_set_lamp_value(1, (data >> 6) & 0x01); output_set_lamp_value(2, (data >> 1) & 0x01); @@ -678,8 +786,12 @@ static void generic_iochip0_lamps_w(running_machine &machine, UINT8 data) } -// After Burner II -static UINT8 aburner2_iochip0_motor_r(running_machine &machine, UINT8 data) +//------------------------------------------------- +// aburner2_iochip0_motor_r - motor I/O reads +// for Afterburner II +//------------------------------------------------- + +UINT8 segaxbd_state::aburner2_iochip0_motor_r(UINT8 data) { data &= 0xc0; @@ -687,14 +799,24 @@ static UINT8 aburner2_iochip0_motor_r(running_machine &machine, UINT8 data) return data | 0x3f; } -static void aburner2_iochip0_motor_w(running_machine &machine, UINT8 data) + +//------------------------------------------------- +// aburner2_iochip0_motor_w - motor I/O writes +// for Afterburner II +//------------------------------------------------- + +void segaxbd_state::aburner2_iochip0_motor_w(UINT8 data) { // TODO } -// SMGP -static UINT8 smgp_iochip0_motor_r(running_machine &machine, UINT8 data) +//------------------------------------------------- +// smgp_iochip0_motor_r - motor I/O reads +// for Super Monaco GP +//------------------------------------------------- + +UINT8 segaxbd_state::smgp_iochip0_motor_r(UINT8 data) { data &= 0xc0; @@ -702,34 +824,97 @@ static UINT8 smgp_iochip0_motor_r(running_machine &machine, UINT8 data) return data | 0x0; } -static void smgp_iochip0_motor_w(running_machine &machine, UINT8 data) + +//------------------------------------------------- +// smgp_iochip0_motor_w - motor I/O reads +// for Super Monaco GP +//------------------------------------------------- + +void segaxbd_state::smgp_iochip0_motor_w(UINT8 data) { // TODO } -// Last Survivor -static UINT8 lastsurv_iochip1_port_r(running_machine &machine, UINT8 data) +//------------------------------------------------- +// lastsurv_iochip1_port_r - muxed I/O reads +// for Last Survivor +//------------------------------------------------- + +UINT8 segaxbd_state::lastsurv_iochip1_port_r(UINT8 data) { static const char * const port_names[] = { "MUX0", "MUX1", "MUX2", "MUX3" }; - segaxbd_state *state = machine.driver_data(); - return state->ioport(port_names[state->m_lastsurv_mux])->read_safe(0xff); + return ioport(port_names[m_lastsurv_mux])->read_safe(0xff); } -static void lastsurv_iochip0_muxer_w(running_machine &machine, UINT8 data) + +//------------------------------------------------- +// lastsurv_iochip0_muxer_w - muxed I/O writes +// for Last Survivor +//------------------------------------------------- + +void segaxbd_state::lastsurv_iochip0_muxer_w(UINT8 data) { - segaxbd_state *state = machine.driver_data(); - state->m_lastsurv_mux = (data >> 5) & 3; - generic_iochip0_lamps_w(machine, data & 0x9f); + m_lastsurv_mux = (data >> 5) & 3; + generic_iochip0_lamps_w(data & 0x9f); } -/************************************* - * - * Main CPU memory handlers - * - *************************************/ +//************************************************************************** +// INTERNAL HELPERS +//************************************************************************** + +//------------------------------------------------- +// update_main_irqs - flush IRQ state to the +// CPU device +//------------------------------------------------- + +void segaxbd_state::update_main_irqs() +{ + UINT8 irq = 0; + + if (m_timer_irq_state) + irq |= 2; + else + m_maincpu->set_input_line(2, CLEAR_LINE); + + if (m_vblank_irq_state) + irq |= 4; + else + m_maincpu->set_input_line(4, CLEAR_LINE); + + if (m_gprider_hack && irq > 4) + irq = 4; + + if (irq != 6) + m_maincpu->set_input_line(6, CLEAR_LINE); + + if (irq) + { + m_maincpu->set_input_line(irq, ASSERT_LINE); + machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100)); + } +} + + +//------------------------------------------------- +// m68k_reset_callback - callback for when the +// main 68000 is reset +//------------------------------------------------- + +void segaxbd_state::m68k_reset_callback(device_t *device) +{ + segaxbd_state *state = device->machine().driver_data(); + state->m_subcpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE); + device->machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100)); +} + + + +//************************************************************************** +// MAIN CPU ADDRESS MAPS +//************************************************************************** static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, segaxbd_state ) ADDRESS_MAP_UNMAP_HIGH @@ -737,60 +922,56 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, segaxbd_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x080000, 0x083fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("backup1") AM_RANGE(0x0a0000, 0x0a3fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("backup2") - AM_RANGE(0x0c0000, 0x0cffff) AM_RAM_WRITE_LEGACY(segaic16_tileram_0_w) AM_BASE_LEGACY(&segaic16_tileram_0) - AM_RANGE(0x0d0000, 0x0d0fff) AM_MIRROR(0x00f000) AM_RAM_WRITE_LEGACY(segaic16_textram_0_w) AM_BASE_LEGACY(&segaic16_textram_0) + AM_RANGE(0x0c0000, 0x0cffff) AM_RAM_WRITE_LEGACY(segaic16_tileram_0_w) AM_SHARE("tileram") + AM_RANGE(0x0d0000, 0x0d0fff) AM_MIRROR(0x00f000) AM_RAM_WRITE_LEGACY(segaic16_textram_0_w) AM_SHARE("textram") AM_RANGE(0x0e0000, 0x0e0007) AM_MIRROR(0x003ff8) AM_DEVREADWRITE("multiplier_main", sega_315_5248_multiplier_device, read, write) AM_RANGE(0x0e4000, 0x0e401f) AM_MIRROR(0x003fe0) AM_DEVREADWRITE("divider_main", sega_315_5249_divider_device, read, write) AM_RANGE(0x0e8000, 0x0e801f) AM_MIRROR(0x003fe0) AM_DEVREADWRITE("cmptimer_main", sega_315_5250_compare_timer_device, read, write) - AM_RANGE(0x100000, 0x100fff) AM_MIRROR(0x00f000) AM_RAM AM_BASE_LEGACY(&segaic16_spriteram_0) + AM_RANGE(0x100000, 0x100fff) AM_MIRROR(0x00f000) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x110000, 0x11ffff) AM_WRITE_LEGACY(segaic16_sprites_draw_0_w) - AM_RANGE(0x120000, 0x123fff) AM_MIRROR(0x00c000) AM_RAM_WRITE_LEGACY(segaic16_paletteram_w) AM_BASE_LEGACY(&segaic16_paletteram) - AM_RANGE(0x130000, 0x13ffff) AM_READWRITE_LEGACY(adc_r, adc_w) - AM_RANGE(0x140000, 0x14000f) AM_MIRROR(0x00fff0) AM_READWRITE_LEGACY(iochip_0_r, iochip_0_w) - AM_RANGE(0x150000, 0x15000f) AM_MIRROR(0x00fff0) AM_READWRITE_LEGACY(iochip_1_r, iochip_1_w) - AM_RANGE(0x160000, 0x16ffff) AM_WRITE_LEGACY(iocontrol_w) + AM_RANGE(0x120000, 0x123fff) AM_MIRROR(0x00c000) AM_RAM_WRITE_LEGACY(segaic16_paletteram_w) AM_SHARE("paletteram") + AM_RANGE(0x130000, 0x13ffff) AM_READWRITE(adc_r, adc_w) + AM_RANGE(0x140000, 0x14000f) AM_MIRROR(0x00fff0) AM_READWRITE(iochip_0_r, iochip_0_w) + AM_RANGE(0x150000, 0x15000f) AM_MIRROR(0x00fff0) AM_READWRITE(iochip_1_r, iochip_1_w) + AM_RANGE(0x160000, 0x16ffff) AM_WRITE(iocontrol_w) AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("subcpu", 0x00000) - AM_RANGE(0x280000, 0x283fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("share3") - AM_RANGE(0x2a0000, 0x2a3fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("share4") + AM_RANGE(0x280000, 0x283fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("subram0") + AM_RANGE(0x2a0000, 0x2a3fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("subram1") AM_RANGE(0x2e0000, 0x2e0007) AM_MIRROR(0x003ff8) AM_DEVREADWRITE("multiplier_subx", sega_315_5248_multiplier_device, read, write) AM_RANGE(0x2e4000, 0x2e401f) AM_MIRROR(0x003fe0) AM_DEVREADWRITE("divider_subx", sega_315_5249_divider_device, read, write) AM_RANGE(0x2e8000, 0x2e800f) AM_MIRROR(0x003ff0) AM_DEVREADWRITE("cmptimer_subx", sega_315_5250_compare_timer_device, read, write) - AM_RANGE(0x2ec000, 0x2ecfff) AM_MIRROR(0x001000) AM_RAM AM_SHARE("share5") AM_BASE_LEGACY(&segaic16_roadram_0) + AM_RANGE(0x2ec000, 0x2ecfff) AM_MIRROR(0x001000) AM_RAM AM_SHARE("roadram") AM_RANGE(0x2ee000, 0x2effff) AM_READWRITE_LEGACY(segaic16_road_control_0_r, segaic16_road_control_0_w) -// AM_RANGE(0x2f0000, 0x2f3fff) AM_READWRITE_LEGACY(excs_r, excs_w) +// AM_RANGE(0x2f0000, 0x2f3fff) AM_READWRITE(excs_r, excs_w) AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_SHARE("backup1") AM_RANGE(0x3fc000, 0x3fffff) AM_RAM AM_SHARE("backup2") ADDRESS_MAP_END -/************************************* - * - * Sub CPU memory handlers - * - *************************************/ +//************************************************************************** +// SUB CPU ADDRESS MAPS +//************************************************************************** static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 16, segaxbd_state ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xfffff) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("share3") - AM_RANGE(0x0a0000, 0x0a3fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("share4") + AM_RANGE(0x080000, 0x083fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("subram0") + AM_RANGE(0x0a0000, 0x0a3fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("subram1") AM_RANGE(0x0e0000, 0x0e0007) AM_MIRROR(0x003ff8) AM_DEVREADWRITE("multiplier_subx", sega_315_5248_multiplier_device, read, write) AM_RANGE(0x0e4000, 0x0e401f) AM_MIRROR(0x003fe0) AM_DEVREADWRITE("divider_subx", sega_315_5249_divider_device, read, write) AM_RANGE(0x0e8000, 0x0e800f) AM_MIRROR(0x003ff0) AM_DEVREADWRITE("cmptimer_subx", sega_315_5250_compare_timer_device, read, write) - AM_RANGE(0x0ec000, 0x0ecfff) AM_MIRROR(0x001000) AM_RAM AM_SHARE("share5") + AM_RANGE(0x0ec000, 0x0ecfff) AM_MIRROR(0x001000) AM_RAM AM_SHARE("roadram") AM_RANGE(0x0ee000, 0x0effff) AM_READWRITE_LEGACY(segaic16_road_control_0_r, segaic16_road_control_0_w) -// AM_RANGE(0x0f0000, 0x0f3fff) AM_READWRITE_LEGACY(excs_r, excs_w) +// AM_RANGE(0x0f0000, 0x0f3fff) AM_READWRITE(excs_r, excs_w) ADDRESS_MAP_END -/************************************* - * - * Sound CPU memory handlers - * - *************************************/ +//************************************************************************** +// Z80 SOUND CPU ADDRESS MAPS +//************************************************************************** static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, segaxbd_state ) ADDRESS_MAP_UNMAP_HIGH @@ -803,27 +984,14 @@ static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segaxbd_state ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ_LEGACY(sound_data_r) + AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r) ADDRESS_MAP_END -/************************************* - * - * SMGP extra hardware - * - *************************************/ - -static READ16_HANDLER( smgp_excs_r ) -{ - logerror("%06X:smgp_excs_r(%04X)\n", cpu_get_pc(&space->device()), offset*2); - return 0xffff; -} - -static WRITE16_HANDLER( smgp_excs_w ) -{ - logerror("%06X:smgp_excs_w(%04X) = %04X & %04X\n", cpu_get_pc(&space->device()), offset*2, data, mem_mask); -} +//************************************************************************** +// SUPER MONACO GP 2ND SOUND CPU ADDRESS MAPS +//************************************************************************** // Sound Board // The extra sound is used when the cabinet is Deluxe(Air Drive), or Cockpit. The soundlatch is @@ -838,9 +1006,15 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( smgp_sound2_portmap, AS_IO, 8, segaxbd_state ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ_LEGACY(sound_data_r) + AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r) ADDRESS_MAP_END + + +//************************************************************************** +// SUPER MONACO GP MOTOR BOARD CPU ADDRESS MAPS +//************************************************************************** + // Motor Board, not yet emulated static ADDRESS_MAP_START( smgp_airdrive_map, AS_PROGRAM, 8, segaxbd_state ) ADDRESS_MAP_UNMAP_HIGH @@ -855,6 +1029,12 @@ static ADDRESS_MAP_START( smgp_airdrive_portmap, AS_IO, 8, segaxbd_state ) AM_RANGE(0x02, 0x03) AM_NOP ADDRESS_MAP_END + + +//************************************************************************** +// SUPER MONACO GP LINK BOARD CPU ADDRESS MAPS +//************************************************************************** + // Link Board, not yet emulated static ADDRESS_MAP_START( smgp_comm_map, AS_PROGRAM, 8, segaxbd_state ) ADDRESS_MAP_UNMAP_HIGH @@ -870,26 +1050,9 @@ ADDRESS_MAP_END -/************************************* - * - * Royal Ascot extra hardware - * - *************************************/ - -static READ16_HANDLER( rascot_excs_r ) -{ - logerror("%06X:rascot_excs_r(%04X)\n", cpu_get_pc(&space->device()), offset*2); - - // probably receives commands from the server here - //return space->machine().rand() & 0xff; - - return 0xff; -} - -static WRITE16_HANDLER( rascot_excs_w ) -{ - logerror("%06X:rascot_excs_w(%04X) = %04X & %04X\n", cpu_get_pc(&space->device()), offset*2, data, mem_mask); -} +//************************************************************************** +// RASCOT UNKNOWN Z80 CPU ADDRESS MAPS +//************************************************************************** // Z80, unknown function static ADDRESS_MAP_START( rascot_z80_map, AS_PROGRAM, 8, segaxbd_state ) @@ -914,19 +1077,19 @@ ADDRESS_MAP_END static INPUT_PORTS_START( xboard_generic ) PORT_START("IO0PORTA") PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /INTR of ADC0804 */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) // /INTR of ADC0804 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IO0PORTB") PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IO1PORTA") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* button? not used by any game we have */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // button? not used by any game we have PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* cannon trigger or shift down */ - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* missile button or shift up */ + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // cannon trigger or shift down + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // missile button or shift up PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 ) @@ -987,19 +1150,19 @@ static INPUT_PORTS_START( aburner ) PORT_DIPSETTING( 0x40, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_START("ADC0") /* stick X */ + PORT_START("ADC0") // stick X PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX(0x20,0xe0) PORT_SENSITIVITY(100) PORT_KEYDELTA(4) - PORT_START("ADC1") /* stick Y */ + PORT_START("ADC1") // stick Y PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX(0x40,0xc0) PORT_SENSITIVITY(100) PORT_KEYDELTA(4) PORT_REVERSE - PORT_START("ADC2") /* throttle */ + PORT_START("ADC2") // throttle PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Z ) PORT_SENSITIVITY(100) PORT_KEYDELTA(79) - PORT_START("ADC3") /* motor Y */ + PORT_START("ADC3") // motor Y PORT_BIT( 0xff, (0xb0+0x50)/2, IPT_SPECIAL ) - PORT_START("ADC4") /* motor X */ + PORT_START("ADC4") // motor X PORT_BIT( 0xff, (0xb0+0x50)/2, IPT_SPECIAL ) INPUT_PORTS_END @@ -1063,17 +1226,17 @@ static INPUT_PORTS_START( thndrbld ) PORT_DIPSETTING( 0x80, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - /* These inputs are valid for the "Econ Upright" and "Deluxe" cabinets. - On the "Standing" cabinet, the joystick Y axis is reversed. - On the "Mini Upright" cabinet, the inputs conform to After Burner II: - the X axis is (un-)reversed, and the throttle and Y axis switch places */ - PORT_START("ADC0") /* stick X */ + // These inputs are valid for the "Econ Upright" and "Deluxe" cabinets. + // On the "Standing" cabinet, the joystick Y axis is reversed. + // On the "Mini Upright" cabinet, the inputs conform to After Burner II: + // the X axis is (un-)reversed, and the throttle and Y axis switch places + PORT_START("ADC0") // stick X PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX(0x01,0xff) PORT_SENSITIVITY(100) PORT_KEYDELTA(4) PORT_REVERSE - PORT_START("ADC1") /* "slottle" */ + PORT_START("ADC1") // "slottle" PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Z ) PORT_SENSITIVITY(100) PORT_KEYDELTA(79) - PORT_START("ADC2") /* stick Y */ + PORT_START("ADC2") // stick Y PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX(0x01,0xff) PORT_SENSITIVITY(100) PORT_KEYDELTA(4) INPUT_PORTS_END @@ -1256,13 +1419,13 @@ static INPUT_PORTS_START( rachero ) PORT_DIPSETTING( 0x80, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Very_Hard ) ) - PORT_START("ADC0") /* steering */ + PORT_START("ADC0") // steering PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x20,0xe0) PORT_SENSITIVITY(100) PORT_KEYDELTA(4) PORT_REVERSE - PORT_START("ADC1") /* gas pedal */ + PORT_START("ADC1") // gas pedal PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(20) - PORT_START("ADC2") /* brake */ + PORT_START("ADC2") // brake PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(100) PORT_KEYDELTA(40) INPUT_PORTS_END @@ -1299,13 +1462,13 @@ static INPUT_PORTS_START( smgp ) PORT_DIPSETTING( 0x40, DEF_STR( Upright ) ) // PORT_DIPSETTING( 0x00, "Deluxe" ) - PORT_START("ADC0") /* steering */ + PORT_START("ADC0") // steering PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x38,0xc8) PORT_SENSITIVITY(100) PORT_KEYDELTA(4) - PORT_START("ADC1") /* gas pedal */ + PORT_START("ADC1") // gas pedal PORT_BIT( 0xff, 0x38, IPT_PEDAL ) PORT_MINMAX(0x38,0xb8) PORT_SENSITIVITY(100) PORT_KEYDELTA(20) - PORT_START("ADC2") /* brake */ + PORT_START("ADC2") // brake PORT_BIT( 0xff, 0x28, IPT_PEDAL2 ) PORT_MINMAX(0x28,0xa8) PORT_SENSITIVITY(100) PORT_KEYDELTA(40) INPUT_PORTS_END @@ -1337,10 +1500,10 @@ static INPUT_PORTS_START( abcop ) PORT_DIPSETTING( 0x80, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_START("ADC0") /* steering */ + PORT_START("ADC0") // steering PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x20,0xe0) PORT_SENSITIVITY(100) PORT_KEYDELTA(4) PORT_REVERSE - PORT_START("ADC1") /* accelerator */ + PORT_START("ADC1") // accelerator PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(20) INPUT_PORTS_END @@ -1370,13 +1533,13 @@ static INPUT_PORTS_START( gprider ) PORT_DIPSETTING( 0x40, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_START("ADC0") /* steering */ + PORT_START("ADC0") // steering PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x01,0xff) PORT_SENSITIVITY(100) PORT_KEYDELTA(4) - PORT_START("ADC1") /* gas pedal */ + PORT_START("ADC1") // gas pedal PORT_BIT( 0xff, 0x10, IPT_PEDAL ) PORT_MINMAX(0x10,0xef) PORT_SENSITIVITY(100) PORT_KEYDELTA(20) PORT_REVERSE - PORT_START("ADC2") /* brake */ + PORT_START("ADC2") // brake PORT_BIT( 0xff, 0x10, IPT_PEDAL2 ) PORT_MINMAX(0x10,0xef) PORT_SENSITIVITY(100) PORT_KEYDELTA(40) PORT_REVERSE INPUT_PORTS_END @@ -1388,18 +1551,15 @@ INPUT_PORTS_END -/************************************* - * - * Sound definitions - * - *************************************/ +//************************************************************************** +// SOUND DEFINITIONS +//************************************************************************** static const ym2151_interface ym2151_config = { - DEVCB_LINE(sound_cpu_irq) + DEVCB_DRIVER_LINE_MEMBER(segaxbd_state, sound_cpu_irq) }; - static const sega_pcm_interface segapcm_interface = { BANK_512 @@ -1407,66 +1567,23 @@ static const sega_pcm_interface segapcm_interface = -/************************************* - * - * Graphics definitions - * - *************************************/ - -static const gfx_layout charlayout = -{ - 8,8, - RGN_FRAC(1,3), - 3, - { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) }, - { 0, 1, 2, 3, 4, 5, 6, 7 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 8*8 -}; - +//************************************************************************** +// GRAPHICS DEFINITIONS +//************************************************************************** static GFXDECODE_START( segaxbd ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1024 ) + GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 1024 ) GFXDECODE_END -/************************************* - * - * Generic machine drivers - * - *************************************/ - -static void xboard_reset(device_t *device) -{ - segaxbd_state *state = device->machine().driver_data(); - - device_set_input_line(state->m_subcpu, INPUT_LINE_RESET, PULSE_LINE); - device->machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100)); -} - -static MACHINE_START( xboard ) -{ - segaxbd_state *state = machine.driver_data(); - state->m_scanline_timer = machine.scheduler().timer_alloc(FUNC(scanline_callback)); -} - -static MACHINE_RESET( xboard ) -{ - segaxbd_state *state = machine.driver_data(); - segaic16_tilemap_reset(machine, 0); - - /* hook the RESET line, which resets CPU #1 */ - m68k_set_reset_callback(machine.device("maincpu"), xboard_reset); - - /* start timers to track interrupts */ - state->m_scanline_timer->adjust(machine.primary_screen->time_until_pos(1), 1); -} - +//************************************************************************** +// GENERIC MACHINE DRIVERS +//************************************************************************** static MACHINE_CONFIG_START( xboard, segaxbd_state ) - /* basic machine hardware */ + // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK/4) MCFG_CPU_PROGRAM_MAP(main_map) @@ -1477,8 +1594,6 @@ static MACHINE_CONFIG_START( xboard, segaxbd_state ) MCFG_CPU_PROGRAM_MAP(sound_map) MCFG_CPU_IO_MAP(sound_portmap) - MCFG_MACHINE_START(xboard) - MCFG_MACHINE_RESET(xboard) MCFG_NVRAM_ADD_0FILL("backup1") MCFG_NVRAM_ADD_0FILL("backup2") MCFG_QUANTUM_TIME(attotime::from_hz(6000)) @@ -1494,19 +1609,17 @@ static MACHINE_CONFIG_START( xboard, segaxbd_state ) MCFG_SEGA_315_5250_COMPARE_TIMER_ADD("cmptimer_subx") - /* video hardware */ + // video hardware MCFG_GFXDECODE(segaxbd) MCFG_PALETTE_LENGTH(8192*3) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/8, 400, 0, 320, 262, 0, 224) - MCFG_SCREEN_UPDATE_STATIC(xboard) - - MCFG_VIDEO_START(xboard) + MCFG_SCREEN_UPDATE_DRIVER(segaxbd_state, screen_update) MCFG_SEGA16SP_ADD_XBOARD("segaspr1") - /* sound hardware */ + // sound hardware MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/4) @@ -1526,22 +1639,26 @@ static MACHINE_CONFIG_DERIVED( xboard_fd1094, xboard ) MACHINE_CONFIG_END + +//************************************************************************** +// GAME-SPECIFIC MACHINE DRIVERS +//************************************************************************** + static MACHINE_CONFIG_DERIVED( lastsurv_fd1094, xboard_fd1094 ) - /* basic machine hardware */ + // basic machine hardware // TODO: network board - /* sound hardware - ym2151 stereo is reversed */ + // sound hardware - ym2151 stereo is reversed MCFG_SOUND_MODIFY("ymsnd") MCFG_SOUND_ROUTES_RESET() MCFG_SOUND_ROUTE(0, "rspeaker", 0.43) MCFG_SOUND_ROUTE(1, "lspeaker", 0.43) MACHINE_CONFIG_END - static MACHINE_CONFIG_DERIVED( smgp_fd1094, xboard_fd1094 ) - /* basic machine hardware */ + // basic machine hardware MCFG_CPU_ADD("soundcpu2", Z80, SOUND_CLOCK/4) MCFG_CPU_PROGRAM_MAP(smgp_sound2_map) MCFG_CPU_IO_MAP(smgp_sound2_portmap) @@ -1554,7 +1671,7 @@ static MACHINE_CONFIG_DERIVED( smgp_fd1094, xboard_fd1094 ) MCFG_CPU_PROGRAM_MAP(smgp_airdrive_map) MCFG_CPU_IO_MAP(smgp_airdrive_portmap) - /* sound hardware */ + // sound hardware MCFG_SPEAKER_STANDARD_STEREO("rearleft", "rearright") MCFG_SOUND_ADD("pcm2", SEGAPCM, SOUND_CLOCK/4) @@ -1563,10 +1680,9 @@ static MACHINE_CONFIG_DERIVED( smgp_fd1094, xboard_fd1094 ) MCFG_SOUND_ROUTE(1, "rearright", 1.0) MACHINE_CONFIG_END - static MACHINE_CONFIG_DERIVED( rascot, xboard ) - /* basic machine hardware */ + // basic machine hardware MCFG_CPU_MODIFY("soundcpu") MCFG_CPU_PROGRAM_MAP(rascot_z80_map) MCFG_CPU_IO_MAP(rascot_z80_portmap) @@ -1574,60 +1690,58 @@ MACHINE_CONFIG_END -/************************************* - * - * ROM definition(s) - * - *************************************/ +//************************************************************************** +// ROM DEFINITIONS +//************************************************************************** -/************************************************************************************************************************** - ************************************************************************************************************************** - ************************************************************************************************************************** - Afterburner, Sega X-board - CPU: 68000 (317-????) - Missing the Deluxe/Upright English (US?) version rom set - Program roms: - EPR-11092.58 - EPR-11093.63 - EPR-10950.57 - EPR-10951.62 - Sub-Program - EPR-11090.30 - EPR-11091.20 - Fix Scroll Character - EPR-11089.154 - EPR-11088.153 - EPR-11087.152 - Object (Character & Scene Scenery) - EPR-11098.93 - EPR-11099.97 - EPR-11100.101 - EPR-11101.105 - EPR-11094.92 - EPR-11095.96 - EPR-11096.100 - EPR-11097.104 - Sound Data - EPR-10929.13 - -*/ +//************************************************************************************************************************* +//************************************************************************************************************************* +//************************************************************************************************************************* +// Afterburner, Sega X-board +// CPU: 68000 (317-????) +// +// Missing the Deluxe/Upright English (US?) version rom set +// Program roms: +// EPR-11092.58 +// EPR-11093.63 +// EPR-10950.57 +// EPR-10951.62 +// Sub-Program +// EPR-11090.30 +// EPR-11091.20 +// Fix Scroll Character +// EPR-11089.154 +// EPR-11088.153 +// EPR-11087.152 +// Object (Character & Scene Scenery) +// EPR-11098.93 +// EPR-11099.97 +// EPR-11100.101 +// EPR-11101.105 +// EPR-11094.92 +// EPR-11095.96 +// EPR-11096.100 +// EPR-11097.104 +// Sound Data +// EPR-10929.13 +// ROM_START( aburner ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-10940.58", 0x00000, 0x20000, CRC(4d132c4e) SHA1(007af52167c369177b86fc0f8b007ebceba2a30c) ) ROM_LOAD16_BYTE( "epr-10941.63", 0x00001, 0x20000, CRC(136ea264) SHA1(606ac67db53a6002ed1bd71287aed2e3e720cdf4) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-10927.20", 0x00000, 0x20000, CRC(66d36757) SHA1(c7f6d653fb6bfd629bb62057010d41f3ccfccc4d) ) ROM_LOAD16_BYTE( "epr-10928.29", 0x00001, 0x20000, CRC(7c01d40b) SHA1(d95b4702a9c813db8bc24c8cd7e0933cbe54a573) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-10926.154", 0x00000, 0x10000, CRC(ed8bd632) SHA1(d5bbd5e257ebef8cfb3baf5fa530b189d9cddb57) ) ROM_LOAD( "epr-10925.153", 0x10000, 0x10000, CRC(4ef048cc) SHA1(3b386b3bfa600f114dbc19796bb6864a88ff4562) ) ROM_LOAD( "epr-10924.152", 0x20000, 0x10000, CRC(50c15a6d) SHA1(fc202cc583fc6804647abc884fdf332e72ea3100) ) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ - ROM_LOAD32_BYTE( "mpr-10932.90", 0x000000, 0x20000, CRC(cc0821d6) SHA1(22e84419a585209bbda1466d2180504c316a9b7f) ) /* First 8 roms are MPR, the rest are EPR */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites + ROM_LOAD32_BYTE( "mpr-10932.90", 0x000000, 0x20000, CRC(cc0821d6) SHA1(22e84419a585209bbda1466d2180504c316a9b7f) ) // First 8 roms are MPR, the rest are EPR ROM_LOAD32_BYTE( "mpr-10934.94", 0x000001, 0x20000, CRC(4a51b1fa) SHA1(2eed018a5a1e935bb72b6f440a794466a1397dc5) ) ROM_LOAD32_BYTE( "mpr-10936.98", 0x000002, 0x20000, CRC(ada70d64) SHA1(ba6203b0fdb4c4998b7be5b446eb8354751d553a) ) ROM_LOAD32_BYTE( "mpr-10938.102", 0x000003, 0x20000, CRC(e7675baf) SHA1(aa979319a44c0b18c462afb5ca9cdeed2292c76a) ) @@ -1644,41 +1758,41 @@ ROM_START( aburner ) ROM_LOAD32_BYTE( "epr-10948.101", 0x180002, 0x20000, CRC(64284761) SHA1(9594c671900f7f49d8fb965bc17b4380ce2c68d5) ) ROM_LOAD32_BYTE( "epr-10949.105", 0x180003, 0x20000, CRC(d8437d92) SHA1(480291358c3d197645d7bd149bdfe5d41071d52d) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx ROM_LOAD( "epr-10922.40", 0x000000, 0x10000, CRC(b49183d4) SHA1(71d87bfbce858049ccde9597ab15575b3cdba892) ) - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-10923.17", 0x00000, 0x10000, CRC(6888eb8f) SHA1(8f8fffb214842a5d356e33f5a97099bc6407384f) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "mpr-10931.11", 0x00000, 0x20000, CRC(9209068f) SHA1(01f3dda1c066d00080c55f2c86c506b6b2407f98) ) ROM_LOAD( "mpr-10930.12", 0x20000, 0x20000, CRC(6493368b) SHA1(328aff19ff1d1344e9115f519d3962390c4e5ba4) ) - ROM_LOAD( "epr-11102.13", 0x40000, 0x20000, CRC(6c07c78d) SHA1(3868b1824f43e4f2b4fbcd9274bfb3000c889d12) ) /* This really should be EPR-10929 at IC13 */ + ROM_LOAD( "epr-11102.13", 0x40000, 0x20000, CRC(6c07c78d) SHA1(3868b1824f43e4f2b4fbcd9274bfb3000c889d12) ) // This really should be EPR-10929 at IC13 ROM_END -/************************************************************************************************************************** - ************************************************************************************************************************** - ************************************************************************************************************************** - Afterburner II, Sega X-board - CPU: 68000 (317-????) -*/ +//************************************************************************************************************************* +//************************************************************************************************************************* +//************************************************************************************************************************* +// Afterburner II, Sega X-board +// CPU: 68000 (317-????) +// ROM_START( aburner2 ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-11107.58", 0x00000, 0x20000, CRC(6d87bab7) SHA1(ab34fe78f1f216037b3e3dca3e61f1b31c05cedf) ) ROM_LOAD16_BYTE( "epr-11108.63", 0x00001, 0x20000, CRC(202a3e1d) SHA1(cf2018bbad366de4b222eae35942636ca68aa581) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-11109.20", 0x00000, 0x20000, CRC(85a0fe07) SHA1(5a3a8fda6cb4898cfece4ec865b81b9b60f9ad55) ) ROM_LOAD16_BYTE( "epr-11110.29", 0x00001, 0x20000, CRC(f3d6797c) SHA1(17487b89ddbfbcc32a0b52268259f1c8d10fd0b2) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-11115.154", 0x00000, 0x10000, CRC(e8e32921) SHA1(30a96e6b514a475c778296228ba5b6fb96b211b0) ) ROM_LOAD( "epr-11114.153", 0x10000, 0x10000, CRC(2e97f633) SHA1(074125c106dd00785903b2e10cd7e28d5036eb60) ) ROM_LOAD( "epr-11113.152", 0x20000, 0x10000, CRC(36058c8c) SHA1(52befe6c6c53f10b6fd4971098abc8f8d3eef9d4) ) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ - ROM_LOAD32_BYTE( "mpr-10932.90", 0x000000, 0x20000, CRC(cc0821d6) SHA1(22e84419a585209bbda1466d2180504c316a9b7f) ) /* First 8 roms are MPR, the rest are EPR */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites + ROM_LOAD32_BYTE( "mpr-10932.90", 0x000000, 0x20000, CRC(cc0821d6) SHA1(22e84419a585209bbda1466d2180504c316a9b7f) ) // First 8 roms are MPR, the rest are EPR ROM_LOAD32_BYTE( "mpr-10934.94", 0x000001, 0x20000, CRC(4a51b1fa) SHA1(2eed018a5a1e935bb72b6f440a794466a1397dc5) ) ROM_LOAD32_BYTE( "mpr-10936.98", 0x000002, 0x20000, CRC(ada70d64) SHA1(ba6203b0fdb4c4998b7be5b446eb8354751d553a) ) ROM_LOAD32_BYTE( "mpr-10938.102", 0x000003, 0x20000, CRC(e7675baf) SHA1(aa979319a44c0b18c462afb5ca9cdeed2292c76a) ) @@ -1695,56 +1809,56 @@ ROM_START( aburner2 ) ROM_LOAD32_BYTE( "epr-11118.101", 0x180002, 0x20000, CRC(8f38540b) SHA1(1fdfb157d1aca96cb635bd3d64f94545eb88c133) ) ROM_LOAD32_BYTE( "epr-11119.105", 0x180003, 0x20000, CRC(d0343a8e) SHA1(8c0c0addb6dfd0ea04c3900a9f7f7c731ca6e9ea) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx ROM_LOAD( "epr-10922.40", 0x000000, 0x10000, CRC(b49183d4) SHA1(71d87bfbce858049ccde9597ab15575b3cdba892) ) - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-11112.17", 0x00000, 0x10000, CRC(d777fc6d) SHA1(46ce1c3875437044c0a172960d560d6acd6eaa92) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "mpr-10931.11", 0x00000, 0x20000, CRC(9209068f) SHA1(01f3dda1c066d00080c55f2c86c506b6b2407f98) ) ROM_LOAD( "mpr-10930.12", 0x20000, 0x20000, CRC(6493368b) SHA1(328aff19ff1d1344e9115f519d3962390c4e5ba4) ) ROM_LOAD( "epr-11102.13", 0x40000, 0x20000, CRC(6c07c78d) SHA1(3868b1824f43e4f2b4fbcd9274bfb3000c889d12) ) ROM_END -/************************************************************************************************************************** - ************************************************************************************************************************** - ************************************************************************************************************************** - Line of Fire, Sega X-board - CPU: FD1094 (317-0136) - Sega game ID# 834-7218-02 -*/ +//************************************************************************************************************************* +//************************************************************************************************************************* +//************************************************************************************************************************* +// Line of Fire, Sega X-board +// CPU: FD1094 (317-0136) +// Sega game ID# 834-7218-02 +// ROM_START( loffire ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-12849.58", 0x000000, 0x20000, CRC(61cfd2fe) SHA1(b47ae9cdf741574ab9128dd3556b1ef35e81a149) ) ROM_LOAD16_BYTE( "epr-12850.63", 0x000001, 0x20000, CRC(14598f2a) SHA1(13a51529ed32acefd733d9f638621c3e023dbd6d) ) - /* - It's not possible to determine the original value with just the available - ROM data. The choice was between 47, 56 and 57, which decrypt correctly all - the code at the affected addresses (2638, 6638 and so on). - I chose 57 because it's the only one that has only 1 bit different from the - bad value in the old dump (77). + // + // It's not possible to determine the original value with just the available + // ROM data. The choice was between 47, 56 and 57, which decrypt correctly all + // the code at the affected addresses (2638, 6638 and so on). + // I chose 57 because it's the only one that has only 1 bit different from the + // bad value in the old dump (77). + // + // Nicola Salmoria + // - Nicola Salmoria - */ - - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0136.key", 0x0000, 0x2000, BAD_DUMP CRC(344bfe0c) SHA1(f6bb8045b46f90f8abadf1dc2e1ae1d7cef9c810) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-12804.20", 0x000000, 0x20000, CRC(b853480e) SHA1(de0889e99251da7ea50316282ebf6f434cc2db11) ) ROM_LOAD16_BYTE( "epr-12805.29", 0x000001, 0x20000, CRC(4a7200c3) SHA1(3e6febed36a55438e0d24441b68f2b7952791584) ) ROM_LOAD16_BYTE( "epr-12802.21", 0x040000, 0x20000, CRC(d746bb39) SHA1(08dc8cf565997c7e52329961bf7a229a15900cff) ) ROM_LOAD16_BYTE( "epr-12803.30", 0x040001, 0x20000, CRC(c1d9e751) SHA1(98b3d0b3b31702f6234b5fea2b82d512fc5d3ad2) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "opr-12791.154", 0x00000, 0x10000, CRC(acfa69ba) SHA1(353c43dda6c2282a785646b0a58c90cfd173cd7b) ) ROM_LOAD( "opr-12792.153", 0x10000, 0x10000, CRC(e506723c) SHA1(d04dc29686fe348f8f715d14c027de0e508c770f) ) ROM_LOAD( "opr-12793.152", 0x20000, 0x10000, CRC(0ce8cce3) SHA1(1a6b1af2b0b9e8240e681f7b15e9d08595753fe6) ) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "epr-12787.90", 0x000000, 0x20000, CRC(6431a3a6) SHA1(63a732b7dfd2b83fe7684d47fea26063c4ece099) ) ROM_LOAD32_BYTE( "epr-12788.94", 0x000001, 0x20000, CRC(1982a0ce) SHA1(e4756f31b0094e0e9ddb2df53a5c938ac5559230) ) ROM_LOAD32_BYTE( "epr-12789.98", 0x000002, 0x20000, CRC(97d03274) SHA1(b4b9921db53949bc8e91f8a2992e89c172fe8893) ) @@ -1762,43 +1876,43 @@ ROM_START( loffire ) ROM_LOAD32_BYTE( "epr-12777.101", 0x180002, 0x20000, CRC(29d5b953) SHA1(0c932a67e2aecffa7a1dbaa587c96214e1a2cc7f) ) ROM_LOAD32_BYTE( "epr-12778.105", 0x180003, 0x20000, CRC(2fb68e07) SHA1(8685e72aed115cbc9c6c7511217996a573b30d16) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ - /* none */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx + // none - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-12798.17", 0x00000, 0x10000, CRC(0587738d) SHA1(24c79b0c73616d5532a49a2c9121dfabe3a80c7d) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "epr-12799.11", 0x00000, 0x20000, CRC(bc60181c) SHA1(3c89161348db7cafb5636ab4eaba91fbd3541f90) ) ROM_LOAD( "epr-12800.12", 0x20000, 0x20000, CRC(1158c1a3) SHA1(e1d664a203eed5a0130b39ced7bea8328f06f107) ) ROM_LOAD( "epr-12801.13", 0x40000, 0x20000, CRC(2d6567c4) SHA1(542be9d8e91cf2df18d95f4e259cfda0560697cb) ) ROM_END -/************************************************************************************************************************** - Line of Fire, Sega X-board - CPU: FD1094 (317-0135) - Sega game ID# 834-7218-01 -*/ +//************************************************************************************************************************* +// Line of Fire, Sega X-board +// CPU: FD1094 (317-0135) +// Sega game ID# 834-7218-01 +// ROM_START( loffireu ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-12847a.58", 0x000000, 0x20000, CRC(c50eb4ed) SHA1(18a46c97aec2fefd160338c1760b6ee367dcb57f) ) ROM_LOAD16_BYTE( "epr-12848a.63", 0x000001, 0x20000, CRC(f8ff8640) SHA1(193bb8f42f3c5011ad1fbf87215f012de5e950fb) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0135.key", 0x0000, 0x2000, CRC(c53ad019) SHA1(7e6dc2b35ebfeefb507d4d03f5a59574944177d1) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-12804.20", 0x000000, 0x20000, CRC(b853480e) SHA1(de0889e99251da7ea50316282ebf6f434cc2db11) ) ROM_LOAD16_BYTE( "epr-12805.29", 0x000001, 0x20000, CRC(4a7200c3) SHA1(3e6febed36a55438e0d24441b68f2b7952791584) ) ROM_LOAD16_BYTE( "epr-12802.21", 0x040000, 0x20000, CRC(d746bb39) SHA1(08dc8cf565997c7e52329961bf7a229a15900cff) ) ROM_LOAD16_BYTE( "epr-12803.30", 0x040001, 0x20000, CRC(c1d9e751) SHA1(98b3d0b3b31702f6234b5fea2b82d512fc5d3ad2) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "opr-12791.154", 0x00000, 0x10000, CRC(acfa69ba) SHA1(353c43dda6c2282a785646b0a58c90cfd173cd7b) ) ROM_LOAD( "opr-12792.153", 0x10000, 0x10000, CRC(e506723c) SHA1(d04dc29686fe348f8f715d14c027de0e508c770f) ) ROM_LOAD( "opr-12793.152", 0x20000, 0x10000, CRC(0ce8cce3) SHA1(1a6b1af2b0b9e8240e681f7b15e9d08595753fe6) ) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "epr-12787.90", 0x000000, 0x20000, CRC(6431a3a6) SHA1(63a732b7dfd2b83fe7684d47fea26063c4ece099) ) ROM_LOAD32_BYTE( "epr-12788.94", 0x000001, 0x20000, CRC(1982a0ce) SHA1(e4756f31b0094e0e9ddb2df53a5c938ac5559230) ) ROM_LOAD32_BYTE( "epr-12789.98", 0x000002, 0x20000, CRC(97d03274) SHA1(b4b9921db53949bc8e91f8a2992e89c172fe8893) ) @@ -1816,46 +1930,46 @@ ROM_START( loffireu ) ROM_LOAD32_BYTE( "epr-12777.101", 0x180002, 0x20000, CRC(29d5b953) SHA1(0c932a67e2aecffa7a1dbaa587c96214e1a2cc7f) ) ROM_LOAD32_BYTE( "epr-12778.105", 0x180003, 0x20000, CRC(2fb68e07) SHA1(8685e72aed115cbc9c6c7511217996a573b30d16) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ - /* none */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx + // none - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-12798.17", 0x00000, 0x10000, CRC(0587738d) SHA1(24c79b0c73616d5532a49a2c9121dfabe3a80c7d) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "epr-12799.11", 0x00000, 0x20000, CRC(bc60181c) SHA1(3c89161348db7cafb5636ab4eaba91fbd3541f90) ) ROM_LOAD( "epr-12800.12", 0x20000, 0x20000, CRC(1158c1a3) SHA1(e1d664a203eed5a0130b39ced7bea8328f06f107) ) ROM_LOAD( "epr-12801.13", 0x40000, 0x20000, CRC(2d6567c4) SHA1(542be9d8e91cf2df18d95f4e259cfda0560697cb) ) ROM_END -/************************************************************************************************************************** - Line of Fire, Sega X-board - CPU: FD1094 (317-0134) - Sega game ID# 834-7218 -*/ +//************************************************************************************************************************* +// Line of Fire, Sega X-board +// CPU: FD1094 (317-0134) +// Sega game ID# 834-7218 +// ROM_START( loffirej ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ - /* repaired using data from the loffire set since they are mostly identical - when decrypted, they pass the rom check so are assumed to be ok but double - checking them when possible never hurts */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code + // repaired using data from the loffire set since they are mostly identical + // when decrypted, they pass the rom check so are assumed to be ok but double + // checking them when possible never hurts ROM_LOAD16_BYTE( "epr-12794.58", 0x000000, 0x20000, CRC(1e588992) SHA1(fe7107e83c12643e7d22fd4b4cd0c7bcff0d84c3) ) ROM_LOAD16_BYTE( "epr-12795.63", 0x000001, 0x20000, CRC(d43d7427) SHA1(ecbd425bab6aa65ffbd441d6a0936ac055d5f06d) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0134.key", 0x0000, 0x2000, CRC(732626d4) SHA1(75ed7ca417758dd62afb4edbb9daee754932c392) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-12804.20", 0x000000, 0x20000, CRC(b853480e) SHA1(de0889e99251da7ea50316282ebf6f434cc2db11) ) ROM_LOAD16_BYTE( "epr-12805.29", 0x000001, 0x20000, CRC(4a7200c3) SHA1(3e6febed36a55438e0d24441b68f2b7952791584) ) ROM_LOAD16_BYTE( "epr-12802.21", 0x040000, 0x20000, CRC(d746bb39) SHA1(08dc8cf565997c7e52329961bf7a229a15900cff) ) ROM_LOAD16_BYTE( "epr-12803.30", 0x040001, 0x20000, CRC(c1d9e751) SHA1(98b3d0b3b31702f6234b5fea2b82d512fc5d3ad2) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "opr-12791.154", 0x00000, 0x10000, CRC(acfa69ba) SHA1(353c43dda6c2282a785646b0a58c90cfd173cd7b) ) ROM_LOAD( "opr-12792.153", 0x10000, 0x10000, CRC(e506723c) SHA1(d04dc29686fe348f8f715d14c027de0e508c770f) ) ROM_LOAD( "opr-12793.152", 0x20000, 0x10000, CRC(0ce8cce3) SHA1(1a6b1af2b0b9e8240e681f7b15e9d08595753fe6) ) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "epr-12787.90", 0x000000, 0x20000, CRC(6431a3a6) SHA1(63a732b7dfd2b83fe7684d47fea26063c4ece099) ) ROM_LOAD32_BYTE( "epr-12788.94", 0x000001, 0x20000, CRC(1982a0ce) SHA1(e4756f31b0094e0e9ddb2df53a5c938ac5559230) ) ROM_LOAD32_BYTE( "epr-12789.98", 0x000002, 0x20000, CRC(97d03274) SHA1(b4b9921db53949bc8e91f8a2992e89c172fe8893) ) @@ -1873,49 +1987,49 @@ ROM_START( loffirej ) ROM_LOAD32_BYTE( "epr-12777.101", 0x180002, 0x20000, CRC(29d5b953) SHA1(0c932a67e2aecffa7a1dbaa587c96214e1a2cc7f) ) ROM_LOAD32_BYTE( "epr-12778.105", 0x180003, 0x20000, CRC(2fb68e07) SHA1(8685e72aed115cbc9c6c7511217996a573b30d16) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ - /* none */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx + // none - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-12798.17", 0x00000, 0x10000, CRC(0587738d) SHA1(24c79b0c73616d5532a49a2c9121dfabe3a80c7d) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "epr-12799.11", 0x00000, 0x20000, CRC(bc60181c) SHA1(3c89161348db7cafb5636ab4eaba91fbd3541f90) ) ROM_LOAD( "epr-12800.12", 0x20000, 0x20000, CRC(1158c1a3) SHA1(e1d664a203eed5a0130b39ced7bea8328f06f107) ) ROM_LOAD( "epr-12801.13", 0x40000, 0x20000, CRC(2d6567c4) SHA1(542be9d8e91cf2df18d95f4e259cfda0560697cb) ) ROM_END -/************************************************************************************************************************** - ************************************************************************************************************************** - ************************************************************************************************************************** - Thunder Blade, Sega X-board - CPU: FD1094 (317-0056) - - GAME BD NO. 834-6493-03 (Uses "MPR" mask roms) or 834-6493-05 (Uses "EPR" eproms) -*/ +//************************************************************************************************************************* +//************************************************************************************************************************* +//************************************************************************************************************************* +// Thunder Blade, Sega X-board +// CPU: FD1094 (317-0056) +// +// GAME BD NO. 834-6493-03 (Uses "MPR" mask roms) or 834-6493-05 (Uses "EPR" eproms) +// ROM_START( thndrbld ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-11405.ic58", 0x000000, 0x20000, CRC(e057dd5a) SHA1(4c032db4752dfb44dba3def5ee5377fffd94b79c) ) ROM_LOAD16_BYTE( "epr-11406.ic63", 0x000001, 0x20000, CRC(c6b994b8) SHA1(098b2ae30c4aafea35222369d60f8e89f87639eb) ) ROM_LOAD16_BYTE( "epr-11306.ic57", 0x040000, 0x20000, CRC(4b95f2b4) SHA1(9e0ff898a2af05c35db3551e52c7485748698c28) ) ROM_LOAD16_BYTE( "epr-11307.ic62", 0x040001, 0x20000, CRC(2d6833e4) SHA1(b39a744370014237121f0010d18897e63f7058cf) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0056.key", 0x0000, 0x2000, CRC(b40cd2c5) SHA1(865e70bce4f55f6702960d6eaa780b7b1f880e41) ) - ROM_REGION( 0x100000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x100000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-11390.ic20", 0x000000, 0x20000, CRC(ed988fdb) SHA1(b809b0b7dabd5cb29f5387522c6dfb993d1d0271) ) ROM_LOAD16_BYTE( "epr-11391.ic29", 0x000001, 0x20000, CRC(12523bc1) SHA1(54635d6c4cc97cf4148dcac3bb2056fc414252f7) ) ROM_LOAD16_BYTE( "epr-11310.ic21", 0x040000, 0x20000, CRC(5d9fa02c) SHA1(0ca71e35cf9740e38a52960f7d1ef96e7e1dda94) ) ROM_LOAD16_BYTE( "epr-11311.ic30", 0x040001, 0x20000, CRC(483de21b) SHA1(871f0e856dcc81dcef1d9846261b3c011fa26dde) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-11314.ic154", 0x00000, 0x10000, CRC(d4f954a9) SHA1(93ee8cf8fcf4e1d0dd58329bba9b594431193449) ) ROM_LOAD( "epr-11315.ic153", 0x10000, 0x10000, CRC(35813088) SHA1(ea1ec982d1509efb26e7b6a150825a6a905efed9) ) ROM_LOAD( "epr-11316.ic152", 0x20000, 0x10000, CRC(84290dff) SHA1(c13fb6ef12a991f79a95072f953a02b5c992aa2d) ) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "epr-11323.ic90", 0x000000, 0x20000, CRC(27e40735) SHA1(284ddb88efe741fb78199ea619c9b230ee689803) ) ROM_LOAD32_BYTE( "epr-11322.ic94", 0x000001, 0x20000, CRC(10364d74) SHA1(393b19a972b5d8817ffd438f13ded73cd58ebe56) ) ROM_LOAD32_BYTE( "epr-11321.ic98", 0x000002, 0x20000, CRC(8e738f58) SHA1(9f2dceebf01e582cf60f072ae411000d8503894b) ) @@ -1933,43 +2047,43 @@ ROM_START( thndrbld ) ROM_LOAD32_BYTE( "epr-11393.ic101", 0x180002, 0x20000, CRC(525e2e1d) SHA1(6fd09f775e7e6cad8078513d1af0a8ff40fb1360) ) // replaced from original rev? ROM_LOAD32_BYTE( "epr-11392.ic105", 0x180003, 0x20000, CRC(b4a382f7) SHA1(c03a05ba521f654db1a9c5f5717b7a15e5a29d4e) ) // - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* Road Data */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // Road Data ROM_LOAD( "epr-11313.ic29", 0x00000, 0x10000, CRC(6a56c4c3) SHA1(c1b8023cb2ba4e96be052031c24b6ae424225c71) ) - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-11396.ic17", 0x00000, 0x10000, CRC(d37b54a4) SHA1(c230fe7241a1f13ca13506d1492f348f506c40a7) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "epr-11317.ic11", 0x00000, 0x20000, CRC(d4e7ac1f) SHA1(ec5d6e4949938adf56e5613801ae56ff2c3dede5) ) ROM_LOAD( "epr-11318.ic12", 0x20000, 0x20000, CRC(70d3f02c) SHA1(391aac2bc5673e06150de27e19c7c6359da8ca82) ) ROM_LOAD( "epr-11319.ic13", 0x40000, 0x20000, CRC(50d9242e) SHA1(a106371bf680c3088ec61f07fc5c4ce467973c15) ) ROM_END -/************************************************************************************************************************** - Thunder Blade (Japan), Sega X-board - CPU: MC68000 - - GAME BD NO. 834-6493-03 (Uses "MPR" mask roms) or 834-6493-05 (Uses "EPR" eproms) -*/ +//************************************************************************************************************************* +// Thunder Blade (Japan), Sega X-board +// CPU: MC68000 +// +// GAME BD NO. 834-6493-03 (Uses "MPR" mask roms) or 834-6493-05 (Uses "EPR" eproms) +// ROM_START( thndrbld1 ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-11304.ic58", 0x000000, 0x20000, CRC(a90630ef) SHA1(8f29e020119b2243b1c95e15546af1773327ae85) ) // patched? ROM_LOAD16_BYTE( "epr-11305.ic63", 0x000001, 0x20000, CRC(9ba3ef61) SHA1(f75748b37ce35b0ef881804f73417643068dfbb2) ) // patched? ROM_LOAD16_BYTE( "epr-11306.ic57", 0x040000, 0x20000, CRC(4b95f2b4) SHA1(9e0ff898a2af05c35db3551e52c7485748698c28) ) ROM_LOAD16_BYTE( "epr-11307.ic62", 0x040001, 0x20000, CRC(2d6833e4) SHA1(b39a744370014237121f0010d18897e63f7058cf) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-11308.ic20", 0x00000, 0x20000, CRC(7956c238) SHA1(4608225cfd6ea3d38317cbe970f26a5fc2f8e320) ) ROM_LOAD16_BYTE( "epr-11309.ic29", 0x00001, 0x20000, CRC(c887f620) SHA1(644c47cc2cf75cbe489ea084c13c59d94631e83f) ) ROM_LOAD16_BYTE( "epr-11310.ic21", 0x040000, 0x20000, CRC(5d9fa02c) SHA1(0ca71e35cf9740e38a52960f7d1ef96e7e1dda94) ) ROM_LOAD16_BYTE( "epr-11311.ic30", 0x040001, 0x20000, CRC(483de21b) SHA1(871f0e856dcc81dcef1d9846261b3c011fa26dde) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-11314.ic154", 0x00000, 0x10000, CRC(d4f954a9) SHA1(93ee8cf8fcf4e1d0dd58329bba9b594431193449) ) ROM_LOAD( "epr-11315.ic153", 0x10000, 0x10000, CRC(35813088) SHA1(ea1ec982d1509efb26e7b6a150825a6a905efed9) ) ROM_LOAD( "epr-11316.ic152", 0x20000, 0x10000, CRC(84290dff) SHA1(c13fb6ef12a991f79a95072f953a02b5c992aa2d) ) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "epr-11323.ic90", 0x000000, 0x20000, CRC(27e40735) SHA1(284ddb88efe741fb78199ea619c9b230ee689803) ) ROM_LOAD32_BYTE( "epr-11322.ic94", 0x000001, 0x20000, CRC(10364d74) SHA1(393b19a972b5d8817ffd438f13ded73cd58ebe56) ) ROM_LOAD32_BYTE( "epr-11321.ic98", 0x000002, 0x20000, CRC(8e738f58) SHA1(9f2dceebf01e582cf60f072ae411000d8503894b) ) @@ -1987,49 +2101,47 @@ ROM_START( thndrbld1 ) ROM_LOAD32_BYTE( "epr-11333.ic101", 0x180002, 0x20000, CRC(05a2333f) SHA1(70f213945fa7fe056fe17a02558638e87f2c001e) ) ROM_LOAD32_BYTE( "epr-11332.ic105", 0x180003, 0x20000, CRC(dc089ec6) SHA1(d72390c45138a507e79af112addbc015560fc248) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* Road Data */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // Road Data ROM_LOAD( "epr-11313.ic29", 0x00000, 0x10000, CRC(6a56c4c3) SHA1(c1b8023cb2ba4e96be052031c24b6ae424225c71) ) - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-11312.ic17", 0x00000, 0x10000, CRC(3b974ed2) SHA1(cf18a2d0f01643c747a884bf00e5b7037ba2e64a) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "epr-11317.ic11", 0x00000, 0x20000, CRC(d4e7ac1f) SHA1(ec5d6e4949938adf56e5613801ae56ff2c3dede5) ) ROM_LOAD( "epr-11318.ic12", 0x20000, 0x20000, CRC(70d3f02c) SHA1(391aac2bc5673e06150de27e19c7c6359da8ca82) ) ROM_LOAD( "epr-11319.ic13", 0x40000, 0x20000, CRC(50d9242e) SHA1(a106371bf680c3088ec61f07fc5c4ce467973c15) ) ROM_END -/************************************************************************************************************************** - ************************************************************************************************************************** - ************************************************************************************************************************** - Last Survivor, Sega X-board - CPU: FD1094 (317-0083) - - GAME BD NO. 834-6493-03 (Uses "MPR" mask roms) or 834-6493-05 (Uses "EPR" eproms) -*/ +//************************************************************************************************************************* +//************************************************************************************************************************* +//************************************************************************************************************************* +// Last Survivor, Sega X-board +// CPU: FD1094 (317-0083) +// ROM_START( lastsurv ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-12046.ic58", 0x000000, 0x20000, CRC(f94f3a1a) SHA1(f509cbccb1f36ce52ed3e44d4d7b31a047050700) ) ROM_LOAD16_BYTE( "epr-12047.ic63", 0x000001, 0x20000, CRC(1b45c116) SHA1(c46ad622a145baea52d918537fa43a2009ed0cca) ) ROM_LOAD16_BYTE( "epr-12048.ic57", 0x040000, 0x20000, CRC(648e38ca) SHA1(e5f7fd42f49dbbddd1a812a04d8b95c1a73e640b) ) ROM_LOAD16_BYTE( "epr-12049.ic62", 0x040001, 0x20000, CRC(6c5c4753) SHA1(6834542005bc8cad7918ae17d3764306d7f9a959) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0083.key", 0x0000, 0x2000, CRC(dca0b9cc) SHA1(77510804d36d486ffa1e0bb5b0a36d43adc63415) ) - ROM_REGION( 0x100000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x100000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-12050.ic20", 0x000000, 0x20000, CRC(985a0f36) SHA1(bd0a93aa16565c8338db0c67b031bfa409bce5a9) ) ROM_LOAD16_BYTE( "epr-12051.ic29", 0x000001, 0x20000, CRC(f967d5a8) SHA1(16d742da755b5b7c3c3a9f6b4baaf242e5e54441) ) ROM_LOAD16_BYTE( "epr-12052.ic21", 0x040000, 0x20000, CRC(9f7a424d) SHA1(b8c2d3aa08ba71f08f2c1f403edac16bf4334184) ) ROM_LOAD16_BYTE( "epr-12053.ic30", 0x040001, 0x20000, CRC(efcf30f6) SHA1(55cd42c78f117995a89844529386ae3d11c718c1) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-12055.ic154", 0x00000, 0x10000, CRC(150014a4) SHA1(9fbab916ee903c541f61014e137ccecd071b5c3a) ) ROM_LOAD( "epr-12056.ic153", 0x10000, 0x10000, CRC(3cd4c306) SHA1(b0f178688870c67936a15383024c392072e3bc66) ) ROM_LOAD( "epr-12057.ic152", 0x20000, 0x10000, CRC(37e91770) SHA1(69e26f4d3c4ebfaf0225a9b1c60038595929ef05) ) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "mpr-12064.ic90", 0x000000, 0x20000, CRC(84562a69) SHA1(815189a65065def213ef171fe40a44a455dfe75a) ) ROM_LOAD32_BYTE( "mpr-12063.ic94", 0x000001, 0x20000, CRC(d163727c) SHA1(50ed2b401e107a359874dad5d86eec788f5504eb) ) ROM_LOAD32_BYTE( "mpr-12062.ic98", 0x000002, 0x20000, CRC(6b57833b) SHA1(1d70894c81a4cd39f43067701a598d2c4fbffa58) ) @@ -2047,45 +2159,45 @@ ROM_START( lastsurv ) ROM_LOAD32_BYTE( "epr-12074.ic101", 0x180002, 0x20000, CRC(ee6cbb73) SHA1(c68d825ded83dd06ba7b816622db3d57631b4fcc) ) ROM_LOAD32_BYTE( "epr-12073.ic105", 0x180003, 0x20000, CRC(167e6342) SHA1(2f87074d6821a974cbb137ca2bec28fafc0df46f) ) - ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASE00 ) /* Road Data */ - /* none */ + ROM_REGION( 0x20000, "gfx3", ROMREGION_ERASE00 ) // Road Data + // none - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-12054.ic17", 0x00000, 0x10000, CRC(e9b39216) SHA1(142764b40b4db69ff08d28338d1b12b1dd1ed0a0) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "epr-12058.ic11", 0x00000, 0x20000, CRC(4671cb46) SHA1(03ecaa4409a5b86a558313d4ccfb2334f79cff17) ) ROM_LOAD( "epr-12059.ic12", 0x20000, 0x20000, CRC(8c99aff4) SHA1(818418e4e92f601b09fcaa0979802a2c2c85b435) ) ROM_LOAD( "epr-12060.ic13", 0x40000, 0x20000, CRC(7ed382b3) SHA1(c87306d1b9edb8b4b97aee4af1317526750e2da2) ) ROM_END -/************************************************************************************************************************** - ************************************************************************************************************************** - ************************************************************************************************************************** - Racing Hero, Sega X-board - CPU: FD1094 (317-0144) -*/ +//************************************************************************************************************************* +//************************************************************************************************************************* +//************************************************************************************************************************* +// Racing Hero, Sega X-board +// CPU: FD1094 (317-0144) +// ROM_START( rachero ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-13129.ic58", 0x00000, 0x20000,CRC(ad9f32e7) SHA1(dbcb3436782bee88dcac05d4f59c97f170a7387d) ) ROM_LOAD16_BYTE( "epr-13130.ic63", 0x00001, 0x20000,CRC(6022777b) SHA1(965c76565d740be3355c4b403a1629cffb9fcd78) ) ROM_LOAD16_BYTE( "epr-12855.ic57", 0x40000, 0x20000,CRC(cecf1e73) SHA1(3f8631379f32dbfda7720ef345276f9be23ada06) ) ROM_LOAD16_BYTE( "epr-12856.ic62", 0x40001, 0x20000,CRC(da900ebb) SHA1(595ed65248185ddf8666b3f30ad6329162116448) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0144.key", 0x0000, 0x2000, CRC(8740bbff) SHA1(de96e606c04a09258b966532fb01a6b4d4db86a6) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-12857.ic20", 0x00000, 0x20000, CRC(8a2328cc) SHA1(c34498428ddfb3eeb986f4153a6165a685d8fc8a) ) ROM_LOAD16_BYTE( "epr-12858.ic29", 0x00001, 0x20000, CRC(38a248b7) SHA1(a17672123665403c1c56fedab6c8abf44b1131f9) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-12879.ic154", 0x00000, 0x10000, CRC(c1a9de7a) SHA1(2425456a9d4ba92e1f2da6c2f164a6d5a5dee7c7) ) ROM_LOAD( "epr-12880.ic153", 0x10000, 0x10000, CRC(27ff04a5) SHA1(b554a6e060f4803100be8efa52977b503eb0f31d) ) ROM_LOAD( "epr-12881.ic152", 0x20000, 0x10000, CRC(72f14491) SHA1(b7a6cbd08470a5edda77cdd0337abd502c4905fd) ) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "epr-12872.ic90", 0x000000, 0x20000, CRC(68d56139) SHA1(b5f32edbda10c31d52f90defea2bae226676069f) ) ROM_LOAD32_BYTE( "epr-12873.ic94", 0x000001, 0x20000, CRC(3d3ec450) SHA1(ac96ad8c7b365478bd1e5826a073e242f1208247) ) ROM_LOAD32_BYTE( "epr-12874.ic98", 0x000002, 0x20000, CRC(7d6bde23) SHA1(88b12ec6386cdad60b0028b72033a0037a0cdbdb) ) @@ -2103,86 +2215,85 @@ ROM_START( rachero ) ROM_LOAD32_BYTE( "epr-12862.ic101", 0x180002, 0x20000, CRC(7d4c3b05) SHA1(4e25a077b403549c681c5047912d0e28f4c07720) ) ROM_LOAD32_BYTE( "epr-12863.ic105", 0x180003, 0x20000, CRC(85095053) SHA1(f93194ecc0300956280cc0515b3e3ba2c9f71364) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* ground data */ - /* none */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // ground data + // none - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-12859.ic17", 0x00000, 0x10000, CRC(d57881da) SHA1(75b7f331ea8c2e33d6236e0c8fc8dabe5eef8160) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "epr-12876.ic11", 0x00000, 0x20000, CRC(f72a34a0) SHA1(28f7d077c24352557da3a91a7e49b0c5b79f2a2e) ) ROM_LOAD( "epr-12877.ic12", 0x20000, 0x20000, CRC(18c1b6d2) SHA1(860cbb96999ab76c40ce96996bba70c42d845abc) ) ROM_LOAD( "epr-12878.ic13", 0x40000, 0x20000, CRC(7c212c15) SHA1(360b332d2fb32d88949ff8b357a863ffaaca39c2) ) ROM_END -/************************************************************************************************************************** - ************************************************************************************************************************** - ************************************************************************************************************************** - Super Monaco GP, Sega X-board - CPU: FD1094 (317-0126a) - This set is coming from a twin. - - This set has an extra link board (834-7112) or 171-5729-01 under the main board with a Z80 - - Xtal is 16.000 Mhz. - - It has also one eprom (Epr 12587.14) two pal 16L8 (315-5336 and 315-5337) and two - fujitsu IC MB89372P and MB8421-12LP - - Main Board : (834-8180-02) - - epr-12576A.20 (68000) - epr-12577A.29 (68000) - epr-12563B.58 FD1094 317-0126A - epr-12564B.63 FD1094 317-0126A - epr-12609.93 - epr-12610.97 - epr-12611.101 - epr-12612.105 - mpr-12417.92 - mpr-12418.96 - mpr-12419.100 - mpr-12420.104 - mpr-12421.91 - mpr-12422.95 - mpr-12423.99 - mpr-12424.103 - mpr-12425.90 - mpr-12426.94 - mpr-12427.98 - mpr-12428.102 - epr-12429.154 - epr-12430.153 - epr-12431.152 - epr-12436.17 - mpr-12437.11 - mpr-12438.12 - mpr-12439.13 - - Link Board : - - Ep12587.14 -*/ - +//************************************************************************************************************************* +//************************************************************************************************************************* +//************************************************************************************************************************* +// Super Monaco GP, Sega X-board +// CPU: FD1094 (317-0126a) +// This set is coming from a twin. +// +// This set has an extra link board (834-7112) or 171-5729-01 under the main board with a Z80 +// +// Xtal is 16.000 Mhz. +// +// It has also one eprom (Epr 12587.14) two pal 16L8 (315-5336 and 315-5337) and two +// fujitsu IC MB89372P and MB8421-12LP +// +// Main Board : (834-8180-02) +// +// epr-12576A.20 (68000) +// epr-12577A.29 (68000) +// epr-12563B.58 FD1094 317-0126A +// epr-12564B.63 FD1094 317-0126A +// epr-12609.93 +// epr-12610.97 +// epr-12611.101 +// epr-12612.105 +// mpr-12417.92 +// mpr-12418.96 +// mpr-12419.100 +// mpr-12420.104 +// mpr-12421.91 +// mpr-12422.95 +// mpr-12423.99 +// mpr-12424.103 +// mpr-12425.90 +// mpr-12426.94 +// mpr-12427.98 +// mpr-12428.102 +// epr-12429.154 +// epr-12430.153 +// epr-12431.152 +// epr-12436.17 +// mpr-12437.11 +// mpr-12438.12 +// mpr-12439.13 +// +// Link Board : +// +// Ep12587.14 +// ROM_START( smgp ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-12563b.58", 0x00000, 0x20000, CRC(baf1f333) SHA1(f91a7a311237b9940a44b815716d4226a7ae1e8b) ) ROM_LOAD16_BYTE( "epr-12564b.63", 0x00001, 0x20000, CRC(b5191af0) SHA1(d6fb19552e4816eefe751907ec55a2e07ad24879) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0126a.key", 0x0000, 0x2000, CRC(2abc1982) SHA1(cc4c36e6ba52431df17c6e36ba08d3a89be7b7e7) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-12576a.20", 0x00000, 0x20000, CRC(2c9599c1) SHA1(79206f38c2976bd9299ed37bf62ac26dd3fba801) ) ROM_LOAD16_BYTE( "epr-12577a.29", 0x00001, 0x20000, CRC(abf9a50b) SHA1(e367b305cd45900aae4849af4904543f05456dc6) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-12429.154", 0x00000, 0x10000, CRC(5851e614) SHA1(3dc97237ede2c6125e92ea6efc68a748d0ec69be) ) ROM_LOAD( "epr-12430.153", 0x10000, 0x10000, CRC(05e00134) SHA1(8baaa80815d5dabd38dc8600e357975b96d23b95) ) ROM_LOAD( "epr-12431.152", 0x20000, 0x10000, CRC(35572f4a) SHA1(d66456ecf7b59f81736fb873c553926b56bb3977)) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "mpr-12425.90", 0x000000, 0x20000, CRC(14bf2a15) SHA1(84db3ac09e4a8fe470ac051d8d5de1814b48bc72) ) ROM_LOAD32_BYTE( "mpr-12426.94", 0x000001, 0x20000, CRC(28b60dc0) SHA1(ad69d449434853445a076319a55a29014217a100) ) ROM_LOAD32_BYTE( "mpr-12427.98", 0x000002, 0x20000, CRC(0a367928) SHA1(bcb558b7c23906397e66a7f046b09eb5036c0888) ) @@ -2200,55 +2311,55 @@ ROM_START( smgp ) ROM_LOAD32_BYTE( "epr-12611.101", 0x180002, 0x20000, CRC(bd5c6ab0) SHA1(7632dc4daa8eabe74769369856a8ba451e5bd420) ) // these differ from japan set ROM_LOAD32_BYTE( "epr-12612.105", 0x180003, 0x20000, CRC(ac86e890) SHA1(7720c1c8df6de5de50254e97772c15161b796031) ) // - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ - /* none?? */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx + // none?? - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-12436.17", 0x00000, 0x10000, CRC(16ec5f0a) SHA1(307b7388b5c36fd4bc2a61f7941db44858e03c5c) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "mpr-12437.11", 0x00000, 0x20000, CRC(a1c7e712) SHA1(fa7fa8c39690ae5dab8b28af5aeed5ffae2cd6de) ) ROM_LOAD( "mpr-12438.12", 0x20000, 0x20000, CRC(6573d46b) SHA1(c4a4a0ea35250eff28a5bfd5e9cd372f52fd1308) ) ROM_LOAD( "mpr-12439.13", 0x40000, 0x20000, CRC(13bf6de5) SHA1(92228a05ec33d606491a1da98c4989f69cddbb49) ) // not used in deluxe - ROM_REGION( 0x10000, "soundcpu2", 0 ) /* z80 on extra sound board */ + ROM_REGION( 0x10000, "soundcpu2", 0 ) // z80 on extra sound board ROM_LOAD( "epr-12535.8", 0x00000, 0x10000, CRC(80453597) SHA1(d3fee7bb4a8964f5cf1cdae80fc3dde06c947839) ) // taken from deluxe cabinet dump - ROM_REGION( 0x80000, "pcm2", ROMREGION_ERASEFF ) /* Sega PCM sound data on extra sound board (same as on main board..) */ + ROM_REGION( 0x80000, "pcm2", ROMREGION_ERASEFF ) // Sega PCM sound data on extra sound board (same as on main board..) ROM_LOAD( "mpr-12437.20", 0x00000, 0x20000, CRC(a1c7e712) SHA1(fa7fa8c39690ae5dab8b28af5aeed5ffae2cd6de) ) // taken from deluxe cabinet dump ROM_LOAD( "mpr-12438.21", 0x20000, 0x20000, CRC(6573d46b) SHA1(c4a4a0ea35250eff28a5bfd5e9cd372f52fd1308) ) // " ROM_LOAD( "mpr-12439.22", 0x40000, 0x20000, CRC(13bf6de5) SHA1(92228a05ec33d606491a1da98c4989f69cddbb49) ) // " - ROM_REGION( 0x10000, "commcpu", 0 ) /* z80 on network board */ + ROM_REGION( 0x10000, "commcpu", 0 ) // z80 on network board ROM_LOAD( "epr-12587.14", 0x00000, 0x08000, CRC(2afe648b) SHA1(b5bf86f3acbcc23c136185110acecf2c971294fa) ) - ROM_REGION( 0x10000, "motorcpu", 0 ) /* z80 on air board */ + ROM_REGION( 0x10000, "motorcpu", 0 ) // z80 on air board ROM_LOAD( "epr-12505.8", 0x00000, 0x08000, CRC(5020788a) SHA1(ed6d1dfb8b6a62d17469e3d09a5b5b864c6b486c) ) // taken from deluxe cabinet dump ROM_END -/************************************************************************************************************************** - Super Monaco GP, Sega X-board - CPU: FD1094 (317-0126a) -*/ -/* this set contained only prg roms */ +//************************************************************************************************************************* +// Super Monaco GP, Sega X-board +// CPU: FD1094 (317-0126a) +// +// this set contained only prg roms ROM_START( smgp6 ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-12563a.58", 0x00000, 0x20000, CRC(2e64b10e) SHA1(2be1ffb3120e4af6a61880e2a2602db07a73f373) ) ROM_LOAD16_BYTE( "epr-12564a.63", 0x00001, 0x20000, CRC(5baba3e7) SHA1(37194d5a4d3ee48a276f6aeb35b2f20a7661caa2) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0126a.key", 0x0000, 0x2000, CRC(2abc1982) SHA1(cc4c36e6ba52431df17c6e36ba08d3a89be7b7e7) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-12576a.20", 0x00000, 0x20000, CRC(2c9599c1) SHA1(79206f38c2976bd9299ed37bf62ac26dd3fba801) ) ROM_LOAD16_BYTE( "epr-12577a.29", 0x00001, 0x20000, CRC(abf9a50b) SHA1(e367b305cd45900aae4849af4904543f05456dc6) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-12429.154", 0x00000, 0x10000, CRC(5851e614) SHA1(3dc97237ede2c6125e92ea6efc68a748d0ec69be) ) ROM_LOAD( "epr-12430.153", 0x10000, 0x10000, CRC(05e00134) SHA1(8baaa80815d5dabd38dc8600e357975b96d23b95) ) ROM_LOAD( "epr-12431.152", 0x20000, 0x10000, CRC(35572f4a) SHA1(d66456ecf7b59f81736fb873c553926b56bb3977)) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "mpr-12425.90", 0x000000, 0x20000, CRC(14bf2a15) SHA1(84db3ac09e4a8fe470ac051d8d5de1814b48bc72) ) ROM_LOAD32_BYTE( "mpr-12426.94", 0x000001, 0x20000, CRC(28b60dc0) SHA1(ad69d449434853445a076319a55a29014217a100) ) ROM_LOAD32_BYTE( "mpr-12427.98", 0x000002, 0x20000, CRC(0a367928) SHA1(bcb558b7c23906397e66a7f046b09eb5036c0888) ) @@ -2266,105 +2377,105 @@ ROM_START( smgp6 ) ROM_LOAD32_BYTE( "epr-12611.101", 0x180002, 0x20000, CRC(bd5c6ab0) SHA1(7632dc4daa8eabe74769369856a8ba451e5bd420) ) // these differ from japan set ROM_LOAD32_BYTE( "epr-12612.105", 0x180003, 0x20000, CRC(ac86e890) SHA1(7720c1c8df6de5de50254e97772c15161b796031) ) // - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ - /* none?? */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx + // none?? - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-12436.17", 0x00000, 0x10000, CRC(16ec5f0a) SHA1(307b7388b5c36fd4bc2a61f7941db44858e03c5c) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "mpr-12437.11", 0x00000, 0x20000, CRC(a1c7e712) SHA1(fa7fa8c39690ae5dab8b28af5aeed5ffae2cd6de) ) ROM_LOAD( "mpr-12438.12", 0x20000, 0x20000, CRC(6573d46b) SHA1(c4a4a0ea35250eff28a5bfd5e9cd372f52fd1308) ) ROM_LOAD( "mpr-12439.13", 0x40000, 0x20000, CRC(13bf6de5) SHA1(92228a05ec33d606491a1da98c4989f69cddbb49) ) // not used in deluxe - ROM_REGION( 0x10000, "soundcpu2", 0 ) /* z80 on extra sound board */ + ROM_REGION( 0x10000, "soundcpu2", 0 ) // z80 on extra sound board ROM_LOAD( "epr-12535.8", 0x00000, 0x10000, CRC(80453597) SHA1(d3fee7bb4a8964f5cf1cdae80fc3dde06c947839) ) // taken from deluxe cabinet dump - ROM_REGION( 0x80000, "pcm2", ROMREGION_ERASEFF ) /* Sega PCM sound data on extra sound board (same as on main board..) */ + ROM_REGION( 0x80000, "pcm2", ROMREGION_ERASEFF ) // Sega PCM sound data on extra sound board (same as on main board..) ROM_LOAD( "mpr-12437.20", 0x00000, 0x20000, CRC(a1c7e712) SHA1(fa7fa8c39690ae5dab8b28af5aeed5ffae2cd6de) ) // taken from deluxe cabinet dump ROM_LOAD( "mpr-12438.21", 0x20000, 0x20000, CRC(6573d46b) SHA1(c4a4a0ea35250eff28a5bfd5e9cd372f52fd1308) ) // " ROM_LOAD( "mpr-12439.22", 0x40000, 0x20000, CRC(13bf6de5) SHA1(92228a05ec33d606491a1da98c4989f69cddbb49) ) // " - ROM_REGION( 0x10000, "commcpu", 0 ) /* z80 on network board */ + ROM_REGION( 0x10000, "commcpu", 0 ) // z80 on network board ROM_LOAD( "epr-12587.14", 0x00000, 0x08000, CRC(2afe648b) SHA1(b5bf86f3acbcc23c136185110acecf2c971294fa) ) // taken from twin cabinet dump - ROM_REGION( 0x10000, "motorcpu", 0 ) /* z80 on air board */ + ROM_REGION( 0x10000, "motorcpu", 0 ) // z80 on air board ROM_LOAD( "epr-12505.8", 0x00000, 0x08000, CRC(5020788a) SHA1(ed6d1dfb8b6a62d17469e3d09a5b5b864c6b486c) ) // taken from deluxe cabinet dump ROM_END -/************************************************************************************************************************** - Super Monaco GP, Sega X-board - CPU: FD1094 (317-0126) - This set is coming from a deluxe. - - SEGA Monaco G.P. by SEGA 1989 - - This set is coming from a sitdown "air drive" version. - - This set has an extra sound board (837-7000) under the main board with a Z80 - and a few eproms, some of those eproms are already on the main board ! - - It has also an "air drive" board with a Z80 and one eprom. - - Main Board : (834-7016-05) - - epr-12576.20 (68000) - epr-12577.29 (68000) - epr-12563.58 FD1094 317-0126 - epr-12564.63 FD1094 317-0126 - epr-12413.93 - epr-12414.97 - epr-12415.101 - epr-12416.105 - mpr-12417.92 - mpr-12418.96 - mpr-12419.100 - mpr-12420.104 - mpr-12421.91 - mpr-12422.95 - mpr-12423.99 - mpr-12424.103 - mpr-12425.90 - mpr-12426.94 - mpr-12427.98 - mpr-12428.102 - epr-12429.154 - epr-12430.153 - epr-12431.152 - epr-12436.17 - mpr-12437.11 - mpr-12438.12 - IC 13 is not used ! - - Sound Board : - - epr-12535.8 - mpr-12437.20 - mpr-12438.21 - mpr-12439.22 - - Air Drive Board : - - Ep12505.8 -*/ +//************************************************************************************************************************* +// Super Monaco GP, Sega X-board +// CPU: FD1094 (317-0126) +// This set is coming from a deluxe. +// +// SEGA Monaco G.P. by SEGA 1989 +// +// This set is coming from a sitdown "air drive" version. +// +// This set has an extra sound board (837-7000) under the main board with a Z80 +// and a few eproms, some of those eproms are already on the main board ! +// +// It has also an "air drive" board with a Z80 and one eprom. +// +// Main Board : (834-7016-05) +// +// epr-12576.20 (68000) +// epr-12577.29 (68000) +// epr-12563.58 FD1094 317-0126 +// epr-12564.63 FD1094 317-0126 +// epr-12413.93 +// epr-12414.97 +// epr-12415.101 +// epr-12416.105 +// mpr-12417.92 +// mpr-12418.96 +// mpr-12419.100 +// mpr-12420.104 +// mpr-12421.91 +// mpr-12422.95 +// mpr-12423.99 +// mpr-12424.103 +// mpr-12425.90 +// mpr-12426.94 +// mpr-12427.98 +// mpr-12428.102 +// epr-12429.154 +// epr-12430.153 +// epr-12431.152 +// epr-12436.17 +// mpr-12437.11 +// mpr-12438.12 +// IC 13 is not used ! +// +// Sound Board : +// +// epr-12535.8 +// mpr-12437.20 +// mpr-12438.21 +// mpr-12439.22 +// +// Air Drive Board : +// +// Ep12505.8 +// ROM_START( smgp5 ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-12563.58", 0x00000, 0x20000, CRC(6d7325ae) SHA1(bf88ceddc49dab5b439080d5bf0e7e084a79546c) ) ROM_LOAD16_BYTE( "epr-12564.63", 0x00001, 0x20000, CRC(adfbf921) SHA1(f3321e03dc37b14db065b85d63e321810e4ea797) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0126.key", 0x0000, 0x2000, CRC(4d917996) SHA1(17232c0e35d439a12db3d966064cf00104088903) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-12576.20", 0x00000, 0x20000, CRC(23266b26) SHA1(240b9bf198fd2975851e769766566ec4e8379f87) ) ROM_LOAD16_BYTE( "epr-12577.29", 0x00001, 0x20000, CRC(d5b53211) SHA1(b11f5c5094eb7ea9578f15489b00d8bbac1edee6) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-12429.154", 0x00000, 0x10000, CRC(5851e614) SHA1(3dc97237ede2c6125e92ea6efc68a748d0ec69be) ) ROM_LOAD( "epr-12430.153", 0x10000, 0x10000, CRC(05e00134) SHA1(8baaa80815d5dabd38dc8600e357975b96d23b95) ) ROM_LOAD( "epr-12431.152", 0x20000, 0x10000, CRC(35572f4a) SHA1(d66456ecf7b59f81736fb873c553926b56bb3977)) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "mpr-12425.90", 0x000000, 0x20000, CRC(14bf2a15) SHA1(84db3ac09e4a8fe470ac051d8d5de1814b48bc72) ) ROM_LOAD32_BYTE( "mpr-12426.94", 0x000001, 0x20000, CRC(28b60dc0) SHA1(ad69d449434853445a076319a55a29014217a100) ) ROM_LOAD32_BYTE( "mpr-12427.98", 0x000002, 0x20000, CRC(0a367928) SHA1(bcb558b7c23906397e66a7f046b09eb5036c0888) ) @@ -2382,54 +2493,54 @@ ROM_START( smgp5 ) ROM_LOAD32_BYTE( "epr-12415.101", 0x180002, 0x20000, CRC(6080e9ed) SHA1(eb1b871453f76e6a65d20fa9d4bddc1c9f940b4d) ) ROM_LOAD32_BYTE( "epr-12416.105", 0x180003, 0x20000, CRC(6f1f2769) SHA1(d00d26cd1052d4b46c432b6b69cb2d83179d52a6) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ - /* none?? */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx + // none?? - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-12436.17", 0x00000, 0x10000, CRC(16ec5f0a) SHA1(307b7388b5c36fd4bc2a61f7941db44858e03c5c) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "mpr-12437.11", 0x00000, 0x20000, CRC(a1c7e712) SHA1(fa7fa8c39690ae5dab8b28af5aeed5ffae2cd6de) ) ROM_LOAD( "mpr-12438.12", 0x20000, 0x20000, CRC(6573d46b) SHA1(c4a4a0ea35250eff28a5bfd5e9cd372f52fd1308) ) ROM_LOAD( "mpr-12439.13", 0x40000, 0x20000, CRC(13bf6de5) SHA1(92228a05ec33d606491a1da98c4989f69cddbb49) ) // not used in deluxe - ROM_REGION( 0x10000, "soundcpu2", 0 ) /* z80 on extra sound board */ + ROM_REGION( 0x10000, "soundcpu2", 0 ) // z80 on extra sound board ROM_LOAD( "epr-12535.8", 0x00000, 0x10000, CRC(80453597) SHA1(d3fee7bb4a8964f5cf1cdae80fc3dde06c947839) ) - ROM_REGION( 0x80000, "pcm2", ROMREGION_ERASEFF ) /* Sega PCM sound data on extra sound board (same as on main board..) */ + ROM_REGION( 0x80000, "pcm2", ROMREGION_ERASEFF ) // Sega PCM sound data on extra sound board (same as on main board..) ROM_LOAD( "mpr-12437.20", 0x00000, 0x20000, CRC(a1c7e712) SHA1(fa7fa8c39690ae5dab8b28af5aeed5ffae2cd6de) ) ROM_LOAD( "mpr-12438.21", 0x20000, 0x20000, CRC(6573d46b) SHA1(c4a4a0ea35250eff28a5bfd5e9cd372f52fd1308) ) ROM_LOAD( "mpr-12439.22", 0x40000, 0x20000, CRC(13bf6de5) SHA1(92228a05ec33d606491a1da98c4989f69cddbb49) ) - ROM_REGION( 0x10000, "commcpu", 0 ) /* z80 on network board */ + ROM_REGION( 0x10000, "commcpu", 0 ) // z80 on network board ROM_LOAD( "epr-12587.14", 0x00000, 0x08000, CRC(2afe648b) SHA1(b5bf86f3acbcc23c136185110acecf2c971294fa) ) // taken from twin cabinet dump - ROM_REGION( 0x10000, "motorcpu", 0 ) /* z80 on air board */ + ROM_REGION( 0x10000, "motorcpu", 0 ) // z80 on air board ROM_LOAD( "epr-12505.8", 0x00000, 0x08000, CRC(5020788a) SHA1(ed6d1dfb8b6a62d17469e3d09a5b5b864c6b486c) ) ROM_END -/************************************************************************************************************************** - Super Monaco GP, Sega X-board - CPU: FD1094 (317-0125a) -*/ +//************************************************************************************************************************* +// Super Monaco GP, Sega X-board +// CPU: FD1094 (317-0125a) +// ROM_START( smgpu ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-12561c.58", 0x00000, 0x20000, CRC(a5b0f3fe) SHA1(17103e56f822fdb52e72f597c01415ed375aa102) ) ROM_LOAD16_BYTE( "epr-12562c.63", 0x00001, 0x20000, CRC(799e55f4) SHA1(2e02cdc63bda47b087c81021018287cfa961c083) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0125a.key", 0x0000, 0x2000, CRC(3ecdb120) SHA1(c484198e4509d79214e78d4a47e9a7e339f7a2ed) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-12574a.20", 0x00000, 0x20000, CRC(f8b5c38b) SHA1(0184d5a1b71fb42d33dbaaad99d2c0fbc5750e7e) ) ROM_LOAD16_BYTE( "epr-12575a.29", 0x00001, 0x20000, CRC(248b1d17) SHA1(22f1e0d0d698abdf0cb1954f1f6382432a12c186) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-12429.154", 0x00000, 0x10000, CRC(5851e614) SHA1(3dc97237ede2c6125e92ea6efc68a748d0ec69be) ) ROM_LOAD( "epr-12430.153", 0x10000, 0x10000, CRC(05e00134) SHA1(8baaa80815d5dabd38dc8600e357975b96d23b95) ) ROM_LOAD( "epr-12431.152", 0x20000, 0x10000, CRC(35572f4a) SHA1(d66456ecf7b59f81736fb873c553926b56bb3977)) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "mpr-12425.90", 0x000000, 0x20000, CRC(14bf2a15) SHA1(84db3ac09e4a8fe470ac051d8d5de1814b48bc72) ) ROM_LOAD32_BYTE( "mpr-12426.94", 0x000001, 0x20000, CRC(28b60dc0) SHA1(ad69d449434853445a076319a55a29014217a100) ) ROM_LOAD32_BYTE( "mpr-12427.98", 0x000002, 0x20000, CRC(0a367928) SHA1(bcb558b7c23906397e66a7f046b09eb5036c0888) ) @@ -2447,55 +2558,55 @@ ROM_START( smgpu ) ROM_LOAD32_BYTE( "epr-12611.101", 0x180002, 0x20000, CRC(bd5c6ab0) SHA1(7632dc4daa8eabe74769369856a8ba451e5bd420) ) // these differ from japan set ROM_LOAD32_BYTE( "epr-12612.105", 0x180003, 0x20000, CRC(ac86e890) SHA1(7720c1c8df6de5de50254e97772c15161b796031) ) // - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ - /* none?? */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx + // none?? - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-12436.17", 0x00000, 0x10000, CRC(16ec5f0a) SHA1(307b7388b5c36fd4bc2a61f7941db44858e03c5c) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "mpr-12437.11", 0x00000, 0x20000, CRC(a1c7e712) SHA1(fa7fa8c39690ae5dab8b28af5aeed5ffae2cd6de) ) ROM_LOAD( "mpr-12438.12", 0x20000, 0x20000, CRC(6573d46b) SHA1(c4a4a0ea35250eff28a5bfd5e9cd372f52fd1308) ) ROM_LOAD( "mpr-12439.13", 0x40000, 0x20000, CRC(13bf6de5) SHA1(92228a05ec33d606491a1da98c4989f69cddbb49) ) // not used in deluxe - ROM_REGION( 0x10000, "soundcpu2", 0 ) /* z80 on extra sound board */ + ROM_REGION( 0x10000, "soundcpu2", 0 ) // z80 on extra sound board ROM_LOAD( "epr-12535.8", 0x00000, 0x10000, CRC(80453597) SHA1(d3fee7bb4a8964f5cf1cdae80fc3dde06c947839) ) // taken from deluxe cabinet dump - ROM_REGION( 0x80000, "pcm2", ROMREGION_ERASEFF ) /* Sega PCM sound data on extra sound board (same as on main board..) */ + ROM_REGION( 0x80000, "pcm2", ROMREGION_ERASEFF ) // Sega PCM sound data on extra sound board (same as on main board..) ROM_LOAD( "mpr-12437.20", 0x00000, 0x20000, CRC(a1c7e712) SHA1(fa7fa8c39690ae5dab8b28af5aeed5ffae2cd6de) ) // taken from deluxe cabinet dump ROM_LOAD( "mpr-12438.21", 0x20000, 0x20000, CRC(6573d46b) SHA1(c4a4a0ea35250eff28a5bfd5e9cd372f52fd1308) ) // " ROM_LOAD( "mpr-12439.22", 0x40000, 0x20000, CRC(13bf6de5) SHA1(92228a05ec33d606491a1da98c4989f69cddbb49) ) // " - ROM_REGION( 0x10000, "commcpu", 0 ) /* z80 on network board */ + ROM_REGION( 0x10000, "commcpu", 0 ) // z80 on network board ROM_LOAD( "epr-12587.14", 0x00000, 0x08000, CRC(2afe648b) SHA1(b5bf86f3acbcc23c136185110acecf2c971294fa) ) // taken from twin cabinet dump - ROM_REGION( 0x10000, "motorcpu", 0 ) /* z80 on air board */ + ROM_REGION( 0x10000, "motorcpu", 0 ) // z80 on air board ROM_LOAD( "epr-12505.8", 0x00000, 0x08000, CRC(5020788a) SHA1(ed6d1dfb8b6a62d17469e3d09a5b5b864c6b486c) ) // taken from deluxe cabinet dump ROM_END -/************************************************************************************************************************** - Super Monaco GP, Sega X-board - CPU: FD1094 (317-0125a) -*/ -/* very first US version with demo sound on by default */ +//************************************************************************************************************************* +// Super Monaco GP, Sega X-board +// CPU: FD1094 (317-0125a) +// +// very first US version with demo sound on by default ROM_START( smgpu1 ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-12561b.58", 0x00000, 0x20000, CRC(80a32655) SHA1(fe1ffa8af9f1ca175ba90b24a0853329b08d19af) ) ROM_LOAD16_BYTE( "epr-12562b.63", 0x00001, 0x20000, CRC(d525f2a8) SHA1(f3241e11485c7428cd9f081ec6768fda39ae3250) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0125a.key", 0x0000, 0x2000, CRC(3ecdb120) SHA1(c484198e4509d79214e78d4a47e9a7e339f7a2ed) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-12574a.20", 0x00000, 0x20000, CRC(f8b5c38b) SHA1(0184d5a1b71fb42d33dbaaad99d2c0fbc5750e7e) ) ROM_LOAD16_BYTE( "epr-12575a.29", 0x00001, 0x20000, CRC(248b1d17) SHA1(22f1e0d0d698abdf0cb1954f1f6382432a12c186) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-12429.154", 0x00000, 0x10000, CRC(5851e614) SHA1(3dc97237ede2c6125e92ea6efc68a748d0ec69be) ) ROM_LOAD( "epr-12430.153", 0x10000, 0x10000, CRC(05e00134) SHA1(8baaa80815d5dabd38dc8600e357975b96d23b95) ) ROM_LOAD( "epr-12431.152", 0x20000, 0x10000, CRC(35572f4a) SHA1(d66456ecf7b59f81736fb873c553926b56bb3977)) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "mpr-12425.90", 0x000000, 0x20000, CRC(14bf2a15) SHA1(84db3ac09e4a8fe470ac051d8d5de1814b48bc72) ) ROM_LOAD32_BYTE( "mpr-12426.94", 0x000001, 0x20000, CRC(28b60dc0) SHA1(ad69d449434853445a076319a55a29014217a100) ) ROM_LOAD32_BYTE( "mpr-12427.98", 0x000002, 0x20000, CRC(0a367928) SHA1(bcb558b7c23906397e66a7f046b09eb5036c0888) ) @@ -2513,226 +2624,97 @@ ROM_START( smgpu1 ) ROM_LOAD32_BYTE( "epr-12611.101", 0x180002, 0x20000, CRC(bd5c6ab0) SHA1(7632dc4daa8eabe74769369856a8ba451e5bd420) ) // these differ from japan set ROM_LOAD32_BYTE( "epr-12612.105", 0x180003, 0x20000, CRC(ac86e890) SHA1(7720c1c8df6de5de50254e97772c15161b796031) ) // - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ - /* none?? */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx + // none?? - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-12436.17", 0x00000, 0x10000, CRC(16ec5f0a) SHA1(307b7388b5c36fd4bc2a61f7941db44858e03c5c) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "mpr-12437.11", 0x00000, 0x20000, CRC(a1c7e712) SHA1(fa7fa8c39690ae5dab8b28af5aeed5ffae2cd6de) ) ROM_LOAD( "mpr-12438.12", 0x20000, 0x20000, CRC(6573d46b) SHA1(c4a4a0ea35250eff28a5bfd5e9cd372f52fd1308) ) ROM_LOAD( "mpr-12439.13", 0x40000, 0x20000, CRC(13bf6de5) SHA1(92228a05ec33d606491a1da98c4989f69cddbb49) ) // not used in deluxe - ROM_REGION( 0x10000, "soundcpu2", 0 ) /* z80 on extra sound board */ + ROM_REGION( 0x10000, "soundcpu2", 0 ) // z80 on extra sound board ROM_LOAD( "epr-12535.8", 0x00000, 0x10000, CRC(80453597) SHA1(d3fee7bb4a8964f5cf1cdae80fc3dde06c947839) ) // taken from deluxe cabinet dump - ROM_REGION( 0x80000, "pcm2", ROMREGION_ERASEFF ) /* Sega PCM sound data on extra sound board (same as on main board..) */ + ROM_REGION( 0x80000, "pcm2", ROMREGION_ERASEFF ) // Sega PCM sound data on extra sound board (same as on main board..) ROM_LOAD( "mpr-12437.20", 0x00000, 0x20000, CRC(a1c7e712) SHA1(fa7fa8c39690ae5dab8b28af5aeed5ffae2cd6de) ) // taken from deluxe cabinet dump ROM_LOAD( "mpr-12438.21", 0x20000, 0x20000, CRC(6573d46b) SHA1(c4a4a0ea35250eff28a5bfd5e9cd372f52fd1308) ) // " ROM_LOAD( "mpr-12439.22", 0x40000, 0x20000, CRC(13bf6de5) SHA1(92228a05ec33d606491a1da98c4989f69cddbb49) ) // " - ROM_REGION( 0x10000, "commcpu", 0 ) /* z80 on network board */ + ROM_REGION( 0x10000, "commcpu", 0 ) // z80 on network board ROM_LOAD( "epr-12587.14", 0x00000, 0x08000, CRC(2afe648b) SHA1(b5bf86f3acbcc23c136185110acecf2c971294fa) ) // taken from twin cabinet dump - ROM_REGION( 0x10000, "motorcpu", 0 ) /* z80 on air board */ + ROM_REGION( 0x10000, "motorcpu", 0 ) // z80 on air board ROM_LOAD( "epr-12505.8", 0x00000, 0x08000, CRC(5020788a) SHA1(ed6d1dfb8b6a62d17469e3d09a5b5b864c6b486c) ) // taken from deluxe cabinet dump ROM_END -/************************************************************************************************************************** - Super Monaco GP, Sega X-board - CPU: FD1094 (317-0125a) - This set is coming from a twin. - -PCB Layouts ------------ - -Main Board - -Top : 834-6335 -Bottom : 171-5494 -Sticker: 834-7088-01 REV. B SUPER MONACO GP -|-----------------------------------------------------------------------------| -|IC67 IC66 IC65 IC64 IC58 IC57 IC56 IC55 16MHz | -|IC71 IC70 IC69 IC68 IC107 IC15 IC11 IC8 | -|IC75 IC74 IC73 IC72 IC16 IC12 | -|IC79 IC78 IC77 IC76 IC63 IC62 IC61 IC60 IC108 IC17 IC13 IC10 IC9 IC3 | -| IC18 IC14 | -| | -| | -| IC84 IC81 | -| IC23 | -| IC22 | -| IC109 IC21 IC20| -| IC125 IC118 IC28 IC30 IC29| -|IC93 IC92 IC91 IC90 IC126 IC31 | -| IC53 IC32 | -| IC32 IC40 IC38 | -| IC33 IC39 | -|IC97 IC96 IC95 IC94 IC127 IC117 | -| IC134 | -| IC135 50MHz | -| IC37 | -|IC101 IC100 IC99 IC98 IC148 | -| IC165 | -| IC42 | -| IC150 IC41 | -|IC105 IC104 IC103 IC102 | -| IC154 IC152 IC160 IC159 DSWB DSWA| -| IC153 IC151 IC149 | -|-----------------------------------------------------------------------------| -Notes: - ROMs: - IC58 : epr-12561A.58 (27C010 EPROM) - IC57 : not populated - IC63 : epr-12562A.63 (27C010 EPROM) - IC62 : not populated - - IC11 : mpr-12437.11 (831000 MASKROM) - IC12 : mpr-12438.12 (831000 MASKROM) - IC13 : mpr-12439.13 (831000 MASKROM) - IC17 : epr-12436.17 (27C512 EPROM) - - IC21 : not populated - IC20 : epr-12574A.20 (27C010 EPROM) - IC30 : not populated - IC29 : epr-12575A.29 (27C010 EPROM) - - IC40 : not populated - - IC90 : mpr-12425.90 (831000 MASKROM) - IC91 : mpr-12421.91 (831000 MASKROM) - IC92 : mpr-12417.92 (831000 MASKROM) - IC93 : epr-12609.93 (27C010 EPROM) - - IC94 : mpr-12426.94 (831000 MASKROM) - IC95 : mpr-12422.95 (831000 MASKROM) - IC96 : mpr-12418.96 (831000 MASKROM) - IC97 : epr-12610.97 (27C010 EPROM) - - IC98 : mpr-12427.98 (831000 MASKROM) - IC99 : mpr-12423.99 (831000 MASKROM) - IC100: mpr-12419.100 (831000 MASKROM) - IC101: epr-12611.101 (27C010 EPROM) - - IC102: mpr-12428.102 (831000 MASKROM) - IC103: mpr-12424.103 (831000 MASKROM) - IC104: mpr-12420.104 (831000 MASKROM) - IC105: epr-12612.105 (27C010 EPROM) - - IC154: epr-12429.154 (27C512 EPROM) - IC153: epr-12430.153 (27C512 EPROM) - IC152: epr-12431.152 (27C512 EPROM) - - PALs: - IC18 : 315-5280 - IC84 : 315-5278 - IC109: 315-5290 - IC117: 315-5291 - IC127: 315-5304 - - RAM: - IC9 : 6116 (2K x8 SRAM) - IC10 : 6116 (2K x8 SRAM) - IC16 : 6116 (2K x8 SRAM) - IC22 : 6264 (8K x8 SRAM) - IC23 : 6264 (8K x8 SRAM) - IC31 : 6264 (8K x8 SRAM) - IC32 : 6116 (2K x8 SRAM) - IC32 : 6264 (8K x8 SRAM) - IC33 : 6116 (2K x8 SRAM) - IC38 : 6264 (8K x8 SRAM) - IC39 : 6264 (8K x8 SRAM) - IC55 : 6264 (8K x8 SRAM) - IC56 : 6264 (8K x8 SRAM) - IC60 : 6264 (8K x8 SRAM) - IC61 : 6264 (8K x8 SRAM) - IC64 : TC51832 (32K x8 SRAM) - IC65 : TC51832 (32K x8 SRAM) - IC66 : TC51832 (32K x8 SRAM) - IC67 : TC51832 (32K x8 SRAM) - IC68 : TC51832 (32K x8 SRAM) - IC69 : TC51832 (32K x8 SRAM) - IC70 : TC51832 (32K x8 SRAM) - IC71 : TC51832 (32K x8 SRAM) - IC72 : TC51832 (32K x8 SRAM) - IC73 : TC51832 (32K x8 SRAM) - IC74 : TC51832 (32K x8 SRAM) - IC75 : TC51832 (32K x8 SRAM) - IC76 : TC51832 (32K x8 SRAM) - IC77 : TC51832 (32K x8 SRAM) - IC78 : TC51832 (32K x8 SRAM) - IC79 : TC51832 (32K x8 SRAM) - IC125: MB81C78 (8K x8 SRAM ?) - IC126: MB81C78 (8K x8 SRAM ?) - IC134: 62256 (32K x8 SRAM) - IC135: 62256 (32K x8 SRAM) - IC150: 6264 (8K x8 SRAM) - IC151: 6264 (8K x8 SRAM) - - SEGA Customs: - IC8 : 315-5218 (QFP100) - IC37 : 315-5248 (QFP100) - IC41 : 315-5249 (QFP120) - IC42 : 315-5275 (QFP100, located underneath the PCB) - IC53 : 315-5250 (QFP120) - IC81 : 315-5211A (PGA179) - IC107: 315-5248 (QFP100) - IC108: 315-5249 (QFP120) - IC148: 315-5197 (PGA135) - IC149: 315-5242 (Custom ceramic DIP package. contains a QFP44 and some smt resistors/caps etc) - - OTHER: - IC14 : Z80 CPU (DIP40) - IC15 : YM2151 (DIP24) - IC28 : 68000 CPU (DIP64) - IC118: Hitachi FD1094 Encrypted 68000 CPU - IC159: SONY CXD1095 (QFP64) - IC160: SONY CXD1095 (QFP64) - IC165: ADC0804 (DIP20) - - -Network Board - -Top : 834-6780 -Bottom : 171-5729-01 -Sticker: 834-7112 - -|---------| |--| |----------------------| -| RX TX 315-5336 | -| 315-5337 | -| | -| 16MHz 6264 | -| epr-12587.14 | -| MB89372P-SH Z80E MB8421 | -|---------------------------------------| -Notes: - PALs : 315-5337, 315-5336 - Z80 clock: 8.000MHz - 6264 : 8K x8 SRAM - MB8421 : Manufactured by Fujitsu, SDIP52 - MB89372 : Manufactured by Fujitsu, SDIP64 - epr-12587 : 27C256 EEPROM - -*/ +//************************************************************************************************************************* +// Super Monaco GP, Sega X-board +// CPU: FD1094 (317-0125a) +// This set is coming from a twin. +// +// ROMs: +// IC58 : epr-12561A.58 (27C010 EPROM) +// IC57 : not populated +// IC63 : epr-12562A.63 (27C010 EPROM) +// IC62 : not populated +// +// IC11 : mpr-12437.11 (831000 MASKROM) +// IC12 : mpr-12438.12 (831000 MASKROM) +// IC13 : mpr-12439.13 (831000 MASKROM) +// IC17 : epr-12436.17 (27C512 EPROM) +// +// IC21 : not populated +// IC20 : epr-12574A.20 (27C010 EPROM) +// IC30 : not populated +// IC29 : epr-12575A.29 (27C010 EPROM) +// +// IC40 : not populated +// +// IC90 : mpr-12425.90 (831000 MASKROM) +// IC91 : mpr-12421.91 (831000 MASKROM) +// IC92 : mpr-12417.92 (831000 MASKROM) +// IC93 : epr-12609.93 (27C010 EPROM) +// +// IC94 : mpr-12426.94 (831000 MASKROM) +// IC95 : mpr-12422.95 (831000 MASKROM) +// IC96 : mpr-12418.96 (831000 MASKROM) +// IC97 : epr-12610.97 (27C010 EPROM) +// +// IC98 : mpr-12427.98 (831000 MASKROM) +// IC99 : mpr-12423.99 (831000 MASKROM) +// IC100: mpr-12419.100 (831000 MASKROM) +// IC101: epr-12611.101 (27C010 EPROM) +// +// IC102: mpr-12428.102 (831000 MASKROM) +// IC103: mpr-12424.103 (831000 MASKROM) +// IC104: mpr-12420.104 (831000 MASKROM) +// IC105: epr-12612.105 (27C010 EPROM) +// +// IC154: epr-12429.154 (27C512 EPROM) +// IC153: epr-12430.153 (27C512 EPROM) +// IC152: epr-12431.152 (27C512 EPROM) +// ROM_START( smgpu2 ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-12561a.58", 0x00000, 0x20000, CRC(e505eb89) SHA1(bfb9a7a8b13ae454a92349e57215562477cd2cd2) ) ROM_LOAD16_BYTE( "epr-12562a.63", 0x00001, 0x20000, CRC(c3af4215) SHA1(c46829e08d5492515de5d3269b0e899705d0b108) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0125a.key", 0x0000, 0x2000, CRC(3ecdb120) SHA1(c484198e4509d79214e78d4a47e9a7e339f7a2ed) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-12574a.20", 0x00000, 0x20000, CRC(f8b5c38b) SHA1(0184d5a1b71fb42d33dbaaad99d2c0fbc5750e7e) ) ROM_LOAD16_BYTE( "epr-12575a.29", 0x00001, 0x20000, CRC(248b1d17) SHA1(22f1e0d0d698abdf0cb1954f1f6382432a12c186) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-12429.154", 0x00000, 0x10000, CRC(5851e614) SHA1(3dc97237ede2c6125e92ea6efc68a748d0ec69be) ) ROM_LOAD( "epr-12430.153", 0x10000, 0x10000, CRC(05e00134) SHA1(8baaa80815d5dabd38dc8600e357975b96d23b95) ) ROM_LOAD( "epr-12431.152", 0x20000, 0x10000, CRC(35572f4a) SHA1(d66456ecf7b59f81736fb873c553926b56bb3977)) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "mpr-12425.90", 0x000000, 0x20000, CRC(14bf2a15) SHA1(84db3ac09e4a8fe470ac051d8d5de1814b48bc72) ) ROM_LOAD32_BYTE( "mpr-12426.94", 0x000001, 0x20000, CRC(28b60dc0) SHA1(ad69d449434853445a076319a55a29014217a100) ) ROM_LOAD32_BYTE( "mpr-12427.98", 0x000002, 0x20000, CRC(0a367928) SHA1(bcb558b7c23906397e66a7f046b09eb5036c0888) ) @@ -2750,54 +2732,54 @@ ROM_START( smgpu2 ) ROM_LOAD32_BYTE( "epr-12611.101", 0x180002, 0x20000, CRC(bd5c6ab0) SHA1(7632dc4daa8eabe74769369856a8ba451e5bd420) ) // these differ from japan set ROM_LOAD32_BYTE( "epr-12612.105", 0x180003, 0x20000, CRC(ac86e890) SHA1(7720c1c8df6de5de50254e97772c15161b796031) ) // - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ - /* none?? */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx + // none?? - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-12436.17", 0x00000, 0x10000, CRC(16ec5f0a) SHA1(307b7388b5c36fd4bc2a61f7941db44858e03c5c) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "mpr-12437.11", 0x00000, 0x20000, CRC(a1c7e712) SHA1(fa7fa8c39690ae5dab8b28af5aeed5ffae2cd6de) ) ROM_LOAD( "mpr-12438.12", 0x20000, 0x20000, CRC(6573d46b) SHA1(c4a4a0ea35250eff28a5bfd5e9cd372f52fd1308) ) ROM_LOAD( "mpr-12439.13", 0x40000, 0x20000, CRC(13bf6de5) SHA1(92228a05ec33d606491a1da98c4989f69cddbb49) ) // not used in deluxe - ROM_REGION( 0x10000, "soundcpu2", 0 ) /* z80 on extra sound board */ + ROM_REGION( 0x10000, "soundcpu2", 0 ) // z80 on extra sound board ROM_LOAD( "epr-12535.8", 0x00000, 0x10000, CRC(80453597) SHA1(d3fee7bb4a8964f5cf1cdae80fc3dde06c947839) ) // taken from deluxe cabinet dump - ROM_REGION( 0x80000, "pcm2", ROMREGION_ERASEFF ) /* Sega PCM sound data on extra sound board (same as on main board..) */ + ROM_REGION( 0x80000, "pcm2", ROMREGION_ERASEFF ) // Sega PCM sound data on extra sound board (same as on main board..) ROM_LOAD( "mpr-12437.20", 0x00000, 0x20000, CRC(a1c7e712) SHA1(fa7fa8c39690ae5dab8b28af5aeed5ffae2cd6de) ) // taken from deluxe cabinet dump ROM_LOAD( "mpr-12438.21", 0x20000, 0x20000, CRC(6573d46b) SHA1(c4a4a0ea35250eff28a5bfd5e9cd372f52fd1308) ) // " ROM_LOAD( "mpr-12439.22", 0x40000, 0x20000, CRC(13bf6de5) SHA1(92228a05ec33d606491a1da98c4989f69cddbb49) ) // " - ROM_REGION( 0x10000, "commcpu", 0 ) /* z80 on network board */ + ROM_REGION( 0x10000, "commcpu", 0 ) // z80 on network board ROM_LOAD( "epr-12587.14", 0x00000, 0x08000, CRC(2afe648b) SHA1(b5bf86f3acbcc23c136185110acecf2c971294fa) ) - ROM_REGION( 0x10000, "motorcpu", 0 ) /* z80 on air board */ + ROM_REGION( 0x10000, "motorcpu", 0 ) // z80 on air board ROM_LOAD( "epr-12505.8", 0x00000, 0x08000, CRC(5020788a) SHA1(ed6d1dfb8b6a62d17469e3d09a5b5b864c6b486c) ) // taken from deluxe cabinet dump ROM_END -/************************************************************************************************************************** - Super Monaco GP, Sega X-board - CPU: FD1094 (317-0124a) -*/ +//************************************************************************************************************************* +// Super Monaco GP, Sega X-board +// CPU: FD1094 (317-0124a) +// ROM_START( smgpj ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-12432b.58", 0x00000, 0x20000, CRC(c1a29db1) SHA1(0122d366899f98f7a60b0c9bddeece7995cebf83) ) ROM_LOAD16_BYTE( "epr-12433b.63", 0x00001, 0x20000, CRC(97199eb1) SHA1(3baccf8159821d4b4d5caedf5eb691f07372be93) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0124a.key", 0x0000, 0x2000, CRC(022a8a16) SHA1(4fd80105cb85ccba77cf1e76a21d6e245d5d2e7d) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-12441a.20", 0x00000, 0x20000, CRC(2c9599c1) SHA1(79206f38c2976bd9299ed37bf62ac26dd3fba801) ) ROM_LOAD16_BYTE( "epr-12442a.29", 0x00001, 0x20000, CRC(77a5ec16) SHA1(b8cf6a3f12689d89bbdd9fb39d1cb7d1a3c10602) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-12429.154", 0x00000, 0x10000, CRC(5851e614) SHA1(3dc97237ede2c6125e92ea6efc68a748d0ec69be) ) ROM_LOAD( "epr-12430.153", 0x10000, 0x10000, CRC(05e00134) SHA1(8baaa80815d5dabd38dc8600e357975b96d23b95) ) ROM_LOAD( "epr-12431.152", 0x20000, 0x10000, CRC(35572f4a) SHA1(d66456ecf7b59f81736fb873c553926b56bb3977)) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "mpr-12425.90", 0x000000, 0x20000, CRC(14bf2a15) SHA1(84db3ac09e4a8fe470ac051d8d5de1814b48bc72) ) ROM_LOAD32_BYTE( "mpr-12426.94", 0x000001, 0x20000, CRC(28b60dc0) SHA1(ad69d449434853445a076319a55a29014217a100) ) ROM_LOAD32_BYTE( "mpr-12427.98", 0x000002, 0x20000, CRC(0a367928) SHA1(bcb558b7c23906397e66a7f046b09eb5036c0888) ) @@ -2815,54 +2797,54 @@ ROM_START( smgpj ) ROM_LOAD32_BYTE( "epr-12415.101", 0x180002, 0x20000, CRC(6080e9ed) SHA1(eb1b871453f76e6a65d20fa9d4bddc1c9f940b4d) ) ROM_LOAD32_BYTE( "epr-12416.105", 0x180003, 0x20000, CRC(6f1f2769) SHA1(d00d26cd1052d4b46c432b6b69cb2d83179d52a6) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ - /* none?? */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx + // none?? - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-12436.17", 0x00000, 0x10000, CRC(16ec5f0a) SHA1(307b7388b5c36fd4bc2a61f7941db44858e03c5c) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "mpr-12437.11", 0x00000, 0x20000, CRC(a1c7e712) SHA1(fa7fa8c39690ae5dab8b28af5aeed5ffae2cd6de) ) ROM_LOAD( "mpr-12438.12", 0x20000, 0x20000, CRC(6573d46b) SHA1(c4a4a0ea35250eff28a5bfd5e9cd372f52fd1308) ) ROM_LOAD( "mpr-12439.13", 0x40000, 0x20000, CRC(13bf6de5) SHA1(92228a05ec33d606491a1da98c4989f69cddbb49) ) // not used in deluxe - ROM_REGION( 0x10000, "soundcpu2", 0 ) /* z80 on extra sound board */ + ROM_REGION( 0x10000, "soundcpu2", 0 ) // z80 on extra sound board ROM_LOAD( "epr-12535.8", 0x00000, 0x10000, CRC(80453597) SHA1(d3fee7bb4a8964f5cf1cdae80fc3dde06c947839) ) // taken from deluxe cabinet dump - ROM_REGION( 0x80000, "pcm2", ROMREGION_ERASEFF ) /* Sega PCM sound data on extra sound board (same as on main board..) */ + ROM_REGION( 0x80000, "pcm2", ROMREGION_ERASEFF ) // Sega PCM sound data on extra sound board (same as on main board..) ROM_LOAD( "mpr-12437.20", 0x00000, 0x20000, CRC(a1c7e712) SHA1(fa7fa8c39690ae5dab8b28af5aeed5ffae2cd6de) ) // taken from deluxe cabinet dump ROM_LOAD( "mpr-12438.21", 0x20000, 0x20000, CRC(6573d46b) SHA1(c4a4a0ea35250eff28a5bfd5e9cd372f52fd1308) ) // " ROM_LOAD( "mpr-12439.22", 0x40000, 0x20000, CRC(13bf6de5) SHA1(92228a05ec33d606491a1da98c4989f69cddbb49) ) // " - ROM_REGION( 0x10000, "commcpu", 0 ) /* z80 on network board */ + ROM_REGION( 0x10000, "commcpu", 0 ) // z80 on network board ROM_LOAD( "epr-12587.14", 0x00000, 0x08000, CRC(2afe648b) SHA1(b5bf86f3acbcc23c136185110acecf2c971294fa) ) // taken from twin cabinet dump - ROM_REGION( 0x10000, "motorcpu", 0 ) /* z80 on air board */ + ROM_REGION( 0x10000, "motorcpu", 0 ) // z80 on air board ROM_LOAD( "epr-12505.8", 0x00000, 0x08000, CRC(5020788a) SHA1(ed6d1dfb8b6a62d17469e3d09a5b5b864c6b486c) ) // taken from deluxe cabinet dump ROM_END -/************************************************************************************************************************** - Super Monaco GP, Sega X-board - CPU: FD1094 (317-0124a) -*/ +//************************************************************************************************************************* +// Super Monaco GP, Sega X-board +// CPU: FD1094 (317-0124a) +// ROM_START( smgpja ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-12432a.58", 0x00000, 0x20000, CRC(22517672) SHA1(db9ac40e83e9786bc9dad70f62c2080d3df694ee) ) ROM_LOAD16_BYTE( "epr-12433a.63", 0x00001, 0x20000, CRC(a46b5d13) SHA1(3a7de5cb6f3e6d726f0ea886a87125dedc6f849f) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0124a.key", 0x0000, 0x2000, CRC(022a8a16) SHA1(4fd80105cb85ccba77cf1e76a21d6e245d5d2e7d) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-12441a.20", 0x00000, 0x20000, CRC(2c9599c1) SHA1(79206f38c2976bd9299ed37bf62ac26dd3fba801) ) ROM_LOAD16_BYTE( "epr-12442a.29", 0x00001, 0x20000, CRC(77a5ec16) SHA1(b8cf6a3f12689d89bbdd9fb39d1cb7d1a3c10602) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-12429.154", 0x00000, 0x10000, CRC(5851e614) SHA1(3dc97237ede2c6125e92ea6efc68a748d0ec69be) ) ROM_LOAD( "epr-12430.153", 0x10000, 0x10000, CRC(05e00134) SHA1(8baaa80815d5dabd38dc8600e357975b96d23b95) ) ROM_LOAD( "epr-12431.152", 0x20000, 0x10000, CRC(35572f4a) SHA1(d66456ecf7b59f81736fb873c553926b56bb3977)) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "mpr-12425.90", 0x000000, 0x20000, CRC(14bf2a15) SHA1(84db3ac09e4a8fe470ac051d8d5de1814b48bc72) ) ROM_LOAD32_BYTE( "mpr-12426.94", 0x000001, 0x20000, CRC(28b60dc0) SHA1(ad69d449434853445a076319a55a29014217a100) ) ROM_LOAD32_BYTE( "mpr-12427.98", 0x000002, 0x20000, CRC(0a367928) SHA1(bcb558b7c23906397e66a7f046b09eb5036c0888) ) @@ -2880,59 +2862,59 @@ ROM_START( smgpja ) ROM_LOAD32_BYTE( "epr-12415.101", 0x180002, 0x20000, CRC(6080e9ed) SHA1(eb1b871453f76e6a65d20fa9d4bddc1c9f940b4d) ) ROM_LOAD32_BYTE( "epr-12416.105", 0x180003, 0x20000, CRC(6f1f2769) SHA1(d00d26cd1052d4b46c432b6b69cb2d83179d52a6) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ - /* none?? */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx + // none?? - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-12436.17", 0x00000, 0x10000, CRC(16ec5f0a) SHA1(307b7388b5c36fd4bc2a61f7941db44858e03c5c) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "mpr-12437.11", 0x00000, 0x20000, CRC(a1c7e712) SHA1(fa7fa8c39690ae5dab8b28af5aeed5ffae2cd6de) ) ROM_LOAD( "mpr-12438.12", 0x20000, 0x20000, CRC(6573d46b) SHA1(c4a4a0ea35250eff28a5bfd5e9cd372f52fd1308) ) ROM_LOAD( "mpr-12439.13", 0x40000, 0x20000, CRC(13bf6de5) SHA1(92228a05ec33d606491a1da98c4989f69cddbb49) ) // not used in deluxe - ROM_REGION( 0x10000, "soundcpu2", 0 ) /* z80 on extra sound board */ + ROM_REGION( 0x10000, "soundcpu2", 0 ) // z80 on extra sound board ROM_LOAD( "epr-12535.8", 0x00000, 0x10000, CRC(80453597) SHA1(d3fee7bb4a8964f5cf1cdae80fc3dde06c947839) ) // taken from deluxe cabinet dump - ROM_REGION( 0x80000, "pcm2", ROMREGION_ERASEFF ) /* Sega PCM sound data on extra sound board (same as on main board..) */ + ROM_REGION( 0x80000, "pcm2", ROMREGION_ERASEFF ) // Sega PCM sound data on extra sound board (same as on main board..) ROM_LOAD( "mpr-12437.20", 0x00000, 0x20000, CRC(a1c7e712) SHA1(fa7fa8c39690ae5dab8b28af5aeed5ffae2cd6de) ) // taken from deluxe cabinet dump ROM_LOAD( "mpr-12438.21", 0x20000, 0x20000, CRC(6573d46b) SHA1(c4a4a0ea35250eff28a5bfd5e9cd372f52fd1308) ) // " ROM_LOAD( "mpr-12439.22", 0x40000, 0x20000, CRC(13bf6de5) SHA1(92228a05ec33d606491a1da98c4989f69cddbb49) ) // " - ROM_REGION( 0x10000, "commcpu", 0 ) /* z80 on network board */ + ROM_REGION( 0x10000, "commcpu", 0 ) // z80 on network board ROM_LOAD( "epr-12587.14", 0x00000, 0x08000, CRC(2afe648b) SHA1(b5bf86f3acbcc23c136185110acecf2c971294fa) ) // taken from twin cabinet dump - ROM_REGION( 0x10000, "motorcpu", 0 ) /* z80 on air board */ + ROM_REGION( 0x10000, "motorcpu", 0 ) // z80 on air board ROM_LOAD( "epr-12505.8", 0x00000, 0x08000, CRC(5020788a) SHA1(ed6d1dfb8b6a62d17469e3d09a5b5b864c6b486c) ) // taken from deluxe cabinet dump ROM_END -/************************************************************************************************************************** - ************************************************************************************************************************** - ************************************************************************************************************************** - AB Cop, Sega X-board - CPU: FD1094 (317-0169b) -*/ +//************************************************************************************************************************* +//************************************************************************************************************************* +//************************************************************************************************************************* +// AB Cop (World), Sega X-board +// CPU: FD1094 (317-0169b) +// ROM_START( abcop ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-13568b.ic58", 0x00000, 0x20000, CRC(f88db35b) SHA1(7d85c1194a2aa08427333d2ffc2a8d4f7e1beff0) ) ROM_LOAD16_BYTE( "epr-13556b.ic63", 0x00001, 0x20000, CRC(337bf32e) SHA1(dafb9d9b3baf79ca76355278e8a14294f186790a) ) ROM_LOAD16_BYTE( "epr-13559.ic57", 0x40000, 0x20000, CRC(4588bf19) SHA1(6a8b3d4450ac0bc41b46e6a4e1b44d82112fcd64) ) ROM_LOAD16_BYTE( "epr-13558.ic62", 0x40001, 0x20000, CRC(11259ed4) SHA1(e7de174a0bdb1d1111e5e419f1d501ab5be1d32d) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0169b.key", 0x0000, 0x2000, CRC(058da36e) SHA1(ab3f68a90725063c68fc5d0f8dbece1f8940dc7d) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-13566.ic20", 0x00000, 0x20000, CRC(22e52f32) SHA1(c67a4ccb88becc58dddcbfea0a1ac2017f7b2929) ) ROM_LOAD16_BYTE( "epr-13565.ic29", 0x00001, 0x20000, CRC(a21784bd) SHA1(b40ba0ef65bbfe514625253f6aeec14bf4bcf08c) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "opr-13553.ic154", 0x00000, 0x10000, CRC(8c418837) SHA1(e325db39fae768865e20d2cd1ee2b91a9b0165f5) ) ROM_LOAD( "opr-13554.ic153", 0x10000, 0x10000, CRC(4e3df9f0) SHA1(8b481c2cd25c58612ac8ac3ffb7eeae9ca247d2e) ) ROM_LOAD( "opr-13555.ic152", 0x20000, 0x10000, CRC(6c4a1d42) SHA1(6c37b045b21173f1e2f7bd19d01c00979b8107fb) ) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "opr-13552.ic90", 0x000000, 0x20000, CRC(cc2cf706) SHA1(ad39c22e652ebcd90ffb5e17ae35985645f93c71) ) ROM_LOAD32_BYTE( "opr-13551.ic94", 0x000001, 0x20000, CRC(d6f276c1) SHA1(9ec68157ea460e09ef4b69aa8ea17687dc47ea59) ) ROM_LOAD32_BYTE( "opr-13550.ic98", 0x000002, 0x20000, CRC(f16518dd) SHA1(a5f1785cd28f03069cb238ac92c6afb5a26cbd37) ) @@ -2950,47 +2932,100 @@ ROM_START( abcop ) ROM_LOAD32_BYTE( "opr-13538.ic101", 0x180002, 0x20000, CRC(bf9a4586) SHA1(6013dee83375d72d262c8c04c2e668afea2e216c) ) ROM_LOAD32_BYTE( "opr-13537.ic105", 0x180003, 0x20000, CRC(fa14ed3e) SHA1(d684496ade2517696a56c1423dd4686d283c133f) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* ground data */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // ground data ROM_LOAD( "opr-13564.ic40", 0x00000, 0x10000, CRC(e70ba138) SHA1(85eb6618f408642227056d278f10dec8dcc5a80d) ) - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-13560.ic17", 0x00000, 0x10000, CRC(83050925) SHA1(118710e5789c7999bb7326df4d7bd207cbffdfd4) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data + ROM_LOAD( "opr-13563.ic11", 0x00000, 0x20000, CRC(4083e74f) SHA1(e48c7ce0aa3406af0bbf79c169a8157693c97041) ) + ROM_LOAD( "opr-13562.ic12", 0x20000, 0x20000, CRC(3cc3968f) SHA1(d25647f6a3fa939ba30e03e7334362ef0749b23a) ) + ROM_LOAD( "opr-13561.ic13", 0x40000, 0x20000, CRC(80a7c02a) SHA1(7e8c1b9ba270d8657dbe90ed8be2e4b6463e5928) ) +ROM_END + +//************************************************************************************************************************* +// AB Cop (Japan), Sega X-board +// CPU: FD1094 (317-0169b) +// +ROM_START( abcopj ) + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code + ROM_LOAD16_BYTE( "epr-13557b.ic58", 0x00000, 0x20000, CRC(554e106a) SHA1(3166957ded67c82d4710bdd20eb88006e14c6a3e) ) + ROM_LOAD16_BYTE( "epr-13556b.ic63", 0x00001, 0x20000, CRC(337bf32e) SHA1(dafb9d9b3baf79ca76355278e8a14294f186790a) ) + ROM_LOAD16_BYTE( "epr-13559.ic57", 0x40000, 0x20000, CRC(4588bf19) SHA1(6a8b3d4450ac0bc41b46e6a4e1b44d82112fcd64) ) + ROM_LOAD16_BYTE( "epr-13558.ic62", 0x40001, 0x20000, CRC(11259ed4) SHA1(e7de174a0bdb1d1111e5e419f1d501ab5be1d32d) ) + + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key + ROM_LOAD( "317-0169b.key", 0x0000, 0x2000, CRC(058da36e) SHA1(ab3f68a90725063c68fc5d0f8dbece1f8940dc7d) ) + + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code + ROM_LOAD16_BYTE( "epr-13566.ic20", 0x00000, 0x20000, CRC(22e52f32) SHA1(c67a4ccb88becc58dddcbfea0a1ac2017f7b2929) ) + ROM_LOAD16_BYTE( "epr-13565.ic29", 0x00001, 0x20000, CRC(a21784bd) SHA1(b40ba0ef65bbfe514625253f6aeec14bf4bcf08c) ) + + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles + ROM_LOAD( "opr-13553.ic154", 0x00000, 0x10000, CRC(8c418837) SHA1(e325db39fae768865e20d2cd1ee2b91a9b0165f5) ) + ROM_LOAD( "opr-13554.ic153", 0x10000, 0x10000, CRC(4e3df9f0) SHA1(8b481c2cd25c58612ac8ac3ffb7eeae9ca247d2e) ) + ROM_LOAD( "opr-13555.ic152", 0x20000, 0x10000, CRC(6c4a1d42) SHA1(6c37b045b21173f1e2f7bd19d01c00979b8107fb) ) + + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites + ROM_LOAD32_BYTE( "opr-13552.ic90", 0x000000, 0x20000, CRC(cc2cf706) SHA1(ad39c22e652ebcd90ffb5e17ae35985645f93c71) ) + ROM_LOAD32_BYTE( "opr-13551.ic94", 0x000001, 0x20000, CRC(d6f276c1) SHA1(9ec68157ea460e09ef4b69aa8ea17687dc47ea59) ) + ROM_LOAD32_BYTE( "opr-13550.ic98", 0x000002, 0x20000, CRC(f16518dd) SHA1(a5f1785cd28f03069cb238ac92c6afb5a26cbd37) ) + ROM_LOAD32_BYTE( "opr-13549.ic102", 0x000003, 0x20000, CRC(cba407a7) SHA1(e7684d3b40baa6d832b887fd85ad67fbad8aa7de) ) + ROM_LOAD32_BYTE( "opr-13548.ic91", 0x080000, 0x20000, CRC(080fd805) SHA1(e729565815a3a37462cfee460b7392d2f08e96e5) ) + ROM_LOAD32_BYTE( "opr-13547.ic95", 0x080001, 0x20000, CRC(42d4dd68) SHA1(6ae1f3585ebb20fd2908456d6fa41a893261277e) ) + ROM_LOAD32_BYTE( "opr-13546.ic99", 0x080002, 0x20000, CRC(ca6fbf3d) SHA1(49c3516d87f1546fa7efe785fc5c064d90b1cb8e) ) + ROM_LOAD32_BYTE( "opr-13545.ic103", 0x080003, 0x20000, CRC(c9e58dd2) SHA1(ace2e1630d8df2454183ffdbe26d8cb6d199e940) ) + ROM_LOAD32_BYTE( "opr-13544.ic92", 0x100000, 0x20000, CRC(9c1436d9) SHA1(5156e1b5c7461f6dc0d449b86b6b72153b290a4c) ) + ROM_LOAD32_BYTE( "opr-13543.ic96", 0x100001, 0x20000, CRC(2c1c8f0e) SHA1(19c9fd4272a3db18381f435ed6cd01f994c655e7) ) + ROM_LOAD32_BYTE( "opr-13542.ic100", 0x100002, 0x20000, CRC(01fd52b8) SHA1(b4ab13c7b2b2ffcfdab37d8e4855d5ef8823f1cc) ) + ROM_LOAD32_BYTE( "opr-13541.ic104", 0x100003, 0x20000, CRC(a45c547b) SHA1(d93aaa850d14a7699a1b0411e823088a9bce7553) ) + ROM_LOAD32_BYTE( "opr-13540.ic93", 0x180000, 0x20000, CRC(84b42ab0) SHA1(d24ba7fe23463fc5813ef26e0395951559d6d162) ) + ROM_LOAD32_BYTE( "opr-13539.ic97", 0x180001, 0x20000, CRC(cd6e524f) SHA1(e6df2552a84b2da95301486379c78679b0297634) ) + ROM_LOAD32_BYTE( "opr-13538.ic101", 0x180002, 0x20000, CRC(bf9a4586) SHA1(6013dee83375d72d262c8c04c2e668afea2e216c) ) + ROM_LOAD32_BYTE( "opr-13537.ic105", 0x180003, 0x20000, CRC(fa14ed3e) SHA1(d684496ade2517696a56c1423dd4686d283c133f) ) + + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // ground data + ROM_LOAD( "opr-13564.ic40", 0x00000, 0x10000, CRC(e70ba138) SHA1(85eb6618f408642227056d278f10dec8dcc5a80d) ) + + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU + ROM_LOAD( "epr-13560.ic17", 0x00000, 0x10000, CRC(83050925) SHA1(118710e5789c7999bb7326df4d7bd207cbffdfd4) ) + + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "opr-13563.ic11", 0x00000, 0x20000, CRC(4083e74f) SHA1(e48c7ce0aa3406af0bbf79c169a8157693c97041) ) ROM_LOAD( "opr-13562.ic12", 0x20000, 0x20000, CRC(3cc3968f) SHA1(d25647f6a3fa939ba30e03e7334362ef0749b23a) ) ROM_LOAD( "opr-13561.ic13", 0x40000, 0x20000, CRC(80a7c02a) SHA1(7e8c1b9ba270d8657dbe90ed8be2e4b6463e5928) ) ROM_END -/************************************************************************************************************************** - ************************************************************************************************************************** - ************************************************************************************************************************** - GP Rider (World), Sega X-board - CPU: FD1094 (317-0163) - Custom Chip 315-5304 (IC 127) - IC BD Number: 834-7626-03 (roms are "MPR") / 834-7626-05 (roms are "EPR") -*/ +//************************************************************************************************************************* +//************************************************************************************************************************* +//************************************************************************************************************************* +// GP Rider (World), Sega X-board +// CPU: FD1094 (317-0163) +// Custom Chip 315-5304 (IC 127) +// IC BD Number: 834-7626-03 (roms are "MPR") / 834-7626-05 (roms are "EPR") +// ROM_START( gprider ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-13409.ic58", 0x00000, 0x20000, CRC(9abb81b6) SHA1(f6308f3ec99ee66677e86f6a915e4dff8557d25f) ) ROM_LOAD16_BYTE( "epr-13408.ic63", 0x00001, 0x20000, CRC(8e410e97) SHA1(2021d738064e57d175b59ba053d9ee35ed4516c8) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0163.key", 0x0000, 0x2000, CRC(c1d4d207) SHA1(c35b0a49fb6a1e0e9a1c087f0ccd190ad5c2bb2c) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-13395.ic20", 0x00000, 0x20000,CRC(d6ccfac7) SHA1(9287ab08600163a0d9bd33618c629f99391316bd) ) ROM_LOAD16_BYTE( "epr-13394.ic29", 0x00001, 0x20000,CRC(914a55ec) SHA1(84fe1df12478990418b46b6800425e5599e9eff9) ) ROM_LOAD16_BYTE( "epr-13393.ic21", 0x40000, 0x20000,CRC(08d023cc) SHA1(d008d57e494f484a1a84896065d53fb9b1d8d60e) ) ROM_LOAD16_BYTE( "epr-13392.ic30", 0x40001, 0x20000,CRC(f927cd42) SHA1(67eab328c1fb878fe3d086d0639f5051b135a037) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-13383.ic154", 0x00000, 0x10000, CRC(24f897a7) SHA1(68ba17067d90f07bb5a549017be4773b33ae81d0) ) ROM_LOAD( "epr-13384.ic153", 0x10000, 0x10000, CRC(fe8238bd) SHA1(601910bd86536e6b08f5308b298c8f01fa60f233) ) ROM_LOAD( "epr-13385.ic152", 0x20000, 0x10000, CRC(6df1b995) SHA1(5aab19b87a9ef162c30ccf5974cb795e37dba91f) ) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "epr-13382.ic90", 0x000000, 0x20000, CRC(01dac209) SHA1(4c6b03308193c472f6cdbcede306f8ce6db0cc4b) ) ROM_LOAD32_BYTE( "epr-13381.ic94", 0x000001, 0x20000, CRC(3a50d931) SHA1(9d9cb1793f3b8f562ce0ea49f2afeef099f20859) ) ROM_LOAD32_BYTE( "epr-13380.ic98", 0x000002, 0x20000, CRC(ad1024c8) SHA1(86e941424b2e2e00940886e5daed640a78ed7403) ) @@ -3008,44 +3043,44 @@ ROM_START( gprider ) ROM_LOAD32_BYTE( "epr-13368.ic101", 0x180002, 0x20000, CRC(0f50716c) SHA1(eb4c7f47e11c58fe0d58f67e6dafabc6291eabb8) ) ROM_LOAD32_BYTE( "epr-13367.ic105", 0x180003, 0x20000, CRC(4b1bb51f) SHA1(17fd5ac9e18dd6097a015e9d7b6815826f9c53f1) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ - /* none?? */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx + // none?? - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-13388.ic17", 0x00000, 0x10000, CRC(706581e4) SHA1(51c9dbf2bf0d6b8826de24cd33596f5c95136870) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "epr-13391.ic11", 0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) ) ROM_LOAD( "epr-13390.ic12", 0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) ) ROM_LOAD( "epr-13389.ic13", 0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) ) ROM_END -/************************************************************************************************************************** - GP Rider (US), Sega X-board - CPU: FD1094 (317-0162) - Custom Chip 315-5304 (IC 127) - IC BD Number: 834-7626-01 (roms are "MPR") / 834-7626-04 (roms are "EPR") -*/ +//************************************************************************************************************************* +// GP Rider (US), Sega X-board +// CPU: FD1094 (317-0162) +// Custom Chip 315-5304 (IC 127) +// IC BD Number: 834-7626-01 (roms are "MPR") / 834-7626-04 (roms are "EPR") +// ROM_START( gprideru ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-13407.ic58", 0x00000, 0x20000, CRC(03553ebd) SHA1(041a71a2dce2ad56360f500cb11e29a629020160) ) ROM_LOAD16_BYTE( "epr-13406.ic63", 0x00001, 0x20000, CRC(122c711f) SHA1(2bcc51347e771a7e7f770e68b24d82497d24aa2e) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0162.key", 0x0000, 0x2000, CRC(8067de53) SHA1(e8cd1dfbad94856c6bd51569557667e72f0a5dd4) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-13395.ic20", 0x00000, 0x20000,CRC(d6ccfac7) SHA1(9287ab08600163a0d9bd33618c629f99391316bd) ) ROM_LOAD16_BYTE( "epr-13394.ic29", 0x00001, 0x20000,CRC(914a55ec) SHA1(84fe1df12478990418b46b6800425e5599e9eff9) ) ROM_LOAD16_BYTE( "epr-13393.ic21", 0x40000, 0x20000,CRC(08d023cc) SHA1(d008d57e494f484a1a84896065d53fb9b1d8d60e) ) ROM_LOAD16_BYTE( "epr-13392.ic30", 0x40001, 0x20000,CRC(f927cd42) SHA1(67eab328c1fb878fe3d086d0639f5051b135a037) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-13383.ic154", 0x00000, 0x10000, CRC(24f897a7) SHA1(68ba17067d90f07bb5a549017be4773b33ae81d0) ) ROM_LOAD( "epr-13384.ic153", 0x10000, 0x10000, CRC(fe8238bd) SHA1(601910bd86536e6b08f5308b298c8f01fa60f233) ) ROM_LOAD( "epr-13385.ic152", 0x20000, 0x10000, CRC(6df1b995) SHA1(5aab19b87a9ef162c30ccf5974cb795e37dba91f) ) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "epr-13382.ic90", 0x000000, 0x20000, CRC(01dac209) SHA1(4c6b03308193c472f6cdbcede306f8ce6db0cc4b) ) ROM_LOAD32_BYTE( "epr-13381.ic94", 0x000001, 0x20000, CRC(3a50d931) SHA1(9d9cb1793f3b8f562ce0ea49f2afeef099f20859) ) ROM_LOAD32_BYTE( "epr-13380.ic98", 0x000002, 0x20000, CRC(ad1024c8) SHA1(86e941424b2e2e00940886e5daed640a78ed7403) ) @@ -3063,44 +3098,44 @@ ROM_START( gprideru ) ROM_LOAD32_BYTE( "epr-13368.ic101", 0x180002, 0x20000, CRC(0f50716c) SHA1(eb4c7f47e11c58fe0d58f67e6dafabc6291eabb8) ) ROM_LOAD32_BYTE( "epr-13367.ic105", 0x180003, 0x20000, CRC(4b1bb51f) SHA1(17fd5ac9e18dd6097a015e9d7b6815826f9c53f1) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ - /* none?? */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx + // none?? - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-13388.ic17", 0x00000, 0x10000, CRC(706581e4) SHA1(51c9dbf2bf0d6b8826de24cd33596f5c95136870) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "epr-13391.ic11", 0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) ) ROM_LOAD( "epr-13390.ic12", 0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) ) ROM_LOAD( "epr-13389.ic13", 0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) ) ROM_END -/************************************************************************************************************************** - GP Rider (Japan), Sega X-board - CPU: FD1094 (317-0161) - Custom Chip 315-5304 (IC 127) - IC BD Number: 834-7626-01 (roms are "MPR") / 834-7626-04 (roms are "EPR") -*/ +//************************************************************************************************************************* +// GP Rider (Japan), Sega X-board +// CPU: FD1094 (317-0161) +// Custom Chip 315-5304 (IC 127) +// IC BD Number: 834-7626-01 (roms are "MPR") / 834-7626-04 (roms are "EPR") +// ROM_START( gpriderj ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-13387.ic58", 0x00000, 0x20000, CRC(a1e8b2c5) SHA1(22b70a9074263af808bb9dffee29cbcff7e304e3) ) ROM_LOAD16_BYTE( "epr-13386.ic63", 0x00001, 0x20000, CRC(d8be9e66) SHA1(d81c03b08fd6b971554b94e0adac131a1dcf3248) ) - ROM_REGION( 0x2000, "maincpu:key", 0 ) /* decryption key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key ROM_LOAD( "317-0161.key", 0x0000, 0x2000, CRC(e38ddc16) SHA1(d1f7f261320cbc605b4f7e5a9c28f49af5471d87) ) - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-13395.ic20", 0x00000, 0x20000,CRC(d6ccfac7) SHA1(9287ab08600163a0d9bd33618c629f99391316bd) ) ROM_LOAD16_BYTE( "epr-13394.ic29", 0x00001, 0x20000,CRC(914a55ec) SHA1(84fe1df12478990418b46b6800425e5599e9eff9) ) ROM_LOAD16_BYTE( "epr-13393.ic21", 0x40000, 0x20000,CRC(08d023cc) SHA1(d008d57e494f484a1a84896065d53fb9b1d8d60e) ) ROM_LOAD16_BYTE( "epr-13392.ic30", 0x40001, 0x20000,CRC(f927cd42) SHA1(67eab328c1fb878fe3d086d0639f5051b135a037) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-13383.ic154", 0x00000, 0x10000, CRC(24f897a7) SHA1(68ba17067d90f07bb5a549017be4773b33ae81d0) ) ROM_LOAD( "epr-13384.ic153", 0x10000, 0x10000, CRC(fe8238bd) SHA1(601910bd86536e6b08f5308b298c8f01fa60f233) ) ROM_LOAD( "epr-13385.ic152", 0x20000, 0x10000, CRC(6df1b995) SHA1(5aab19b87a9ef162c30ccf5974cb795e37dba91f) ) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "epr-13382.ic90", 0x000000, 0x20000, CRC(01dac209) SHA1(4c6b03308193c472f6cdbcede306f8ce6db0cc4b) ) ROM_LOAD32_BYTE( "epr-13381.ic94", 0x000001, 0x20000, CRC(3a50d931) SHA1(9d9cb1793f3b8f562ce0ea49f2afeef099f20859) ) ROM_LOAD32_BYTE( "epr-13380.ic98", 0x000002, 0x20000, CRC(ad1024c8) SHA1(86e941424b2e2e00940886e5daed640a78ed7403) ) @@ -3118,179 +3153,176 @@ ROM_START( gpriderj ) ROM_LOAD32_BYTE( "epr-13368.ic101", 0x180002, 0x20000, CRC(0f50716c) SHA1(eb4c7f47e11c58fe0d58f67e6dafabc6291eabb8) ) ROM_LOAD32_BYTE( "epr-13367.ic105", 0x180003, 0x20000, CRC(4b1bb51f) SHA1(17fd5ac9e18dd6097a015e9d7b6815826f9c53f1) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ - /* none?? */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx + // none?? - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU ROM_LOAD( "epr-13388.ic17", 0x00000, 0x10000, CRC(706581e4) SHA1(51c9dbf2bf0d6b8826de24cd33596f5c95136870) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data ROM_LOAD( "epr-13391.ic11", 0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) ) ROM_LOAD( "epr-13390.ic12", 0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) ) ROM_LOAD( "epr-13389.ic13", 0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) ) ROM_END -/* Royal Ascot - should be X-Board, or closely related, although it's a main display / terminal setup, and we only have the ROMs for one of those parts.. */ + +//************************************************************************************************************************* +//************************************************************************************************************************* +//************************************************************************************************************************* +// Royal Ascot - should be X-Board, or closely related, although it's a main display / terminal setup, +// and we only have the ROMs for one of those parts.. +// ROM_START( rascot ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-13965a.ic58", 0x00000, 0x20000, CRC(7eacdfb3) SHA1(fad23352d9c5e266ad9f7fe3ccbd29b5b912b90b) ) ROM_LOAD16_BYTE( "epr-13694a.ic63", 0x00001, 0x20000, CRC(15b86498) SHA1(ccb57063ca53347b5f771b0d7ceaeb9cd50d246a) ) // 13964a? - ROM_REGION( 0x80000, "subcpu", 0 ) /* 2nd 68000 code */ + ROM_REGION( 0x80000, "subcpu", 0 ) // 2nd 68000 code ROM_LOAD16_BYTE( "epr-13967.ic20", 0x00000, 0x20000, CRC(3b92e2b8) SHA1(5d456d7d6fa540709facda1fd8813707ebfd99d8) ) ROM_LOAD16_BYTE( "epr-13966.ic29", 0x00001, 0x20000, CRC(eaa644e1) SHA1(b9cc171523995f5120ea7b9748af2f8de697b933) ) - ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */ + ROM_REGION( 0x30000, "gfx1", 0 ) // tiles ROM_LOAD( "epr-13961", 0x00000, 0x10000, CRC(68038629) SHA1(fbe8605840331096c5156d695772e5f36b2e131a) ) ROM_LOAD( "epr-13962", 0x10000, 0x10000, CRC(7d7605bc) SHA1(20d3a7116807db7c831e285233d8c67317980e4a) ) ROM_LOAD( "epr-13963", 0x20000, 0x10000, CRC(f3376b65) SHA1(36b9292518a112409d03b97ea048b7ab22734841) ) - ROM_REGION32_LE( 0x200000, "gfx2", 0 ) /* sprites */ + ROM_REGION32_LE( 0x200000, "gfx2", 0 ) // sprites ROM_LOAD32_BYTE( "epr-13960", 0x000000, 0x20000, CRC(b974128d) SHA1(14450615b3a10b1de6d098a282f80f80c98c34b8) ) ROM_LOAD32_BYTE( "epr-13959", 0x000001, 0x20000, CRC(db245b22) SHA1(301b7caea7a3b42ab1ab21894ad61b8b14ef1e7c) ) ROM_LOAD32_BYTE( "epr-13958", 0x000002, 0x20000, CRC(7803a027) SHA1(ff659da334e4440a6de9be43dde9dfa21dae5f14) ) ROM_LOAD32_BYTE( "epr-13957", 0x000003, 0x20000, CRC(6d50fb54) SHA1(d21462c30a5555980b964930ddef4dc1963e1d8e) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) /* road gfx */ - /* none?? */ + ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASE00 ) // road gfx + // none?? - ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU */ + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU // is this really a sound rom, or a terminal / link rom? accesses unexpected addresses ROM_LOAD( "epr-14221a", 0x00000, 0x10000, CRC(0d429ac4) SHA1(9cd4c7e858874f372eb3e409ba37964f1ebf07d5) ) - ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) /* Sega PCM sound data */ - /* none?? */ + ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF ) // Sega PCM sound data + // none?? ROM_END +//************************************************************************** +// CONFIGURATION +//************************************************************************** -/************************************* - * - * Driver initialization - * - *************************************/ +//------------------------------------------------- +// init_generic - common initialization +//------------------------------------------------- -DRIVER_INIT_MEMBER(segaxbd_state,generic_xboard) +DRIVER_INIT_MEMBER(segaxbd_state,generic) { + // allocate a scanline timer + m_scanline_timer = timer_alloc(TID_SCANLINE); - /* set the default road priority */ - m_road_priority = 1; + // reset the custom handlers and other pointers + m_iochip_custom_io_w[0][3] = iowrite_delegate(FUNC(segaxbd_state::generic_iochip0_lamps_w), this); - /* reset the custom handlers and other pointers */ - memset(m_adc_reverse, 0, sizeof(m_adc_reverse)); - memset(m_iochip_custom_io_r, 0, sizeof(m_iochip_custom_io_r)); - memset(m_iochip_custom_io_w, 0, sizeof(m_iochip_custom_io_w)); - m_iochip_custom_io_w[0][3] = generic_iochip0_lamps_w; + // point globals to allocated memory regions + segaic16_spriteram_0 = reinterpret_cast(memshare("spriteram")->ptr()); + segaic16_paletteram = reinterpret_cast(memshare("paletteram")->ptr()); + segaic16_tileram_0 = reinterpret_cast(memshare("tileram")->ptr()); + segaic16_textram_0 = reinterpret_cast(memshare("textram")->ptr()); + segaic16_roadram_0 = reinterpret_cast(memshare("roadram")->ptr()); - m_gprider_hack = 0; - - save_item(NAME(m_vblank_irq_state)); + // save state save_item(NAME(m_timer_irq_state)); + save_item(NAME(m_vblank_irq_state)); save_item(NAME(m_iochip_regs[0])); save_item(NAME(m_iochip_regs[1])); + save_item(NAME(m_lastsurv_mux)); } +//------------------------------------------------- +// init_* - game-specific initialization +//------------------------------------------------- + DRIVER_INIT_MEMBER(segaxbd_state,aburner2) { - - DRIVER_INIT_CALL(generic_xboard); + DRIVER_INIT_CALL(generic); m_road_priority = 0; - m_iochip_custom_io_r[0][0] = aburner2_iochip0_motor_r; - m_iochip_custom_io_w[0][1] = aburner2_iochip0_motor_w; + m_iochip_custom_io_r[0][0] = ioread_delegate(FUNC(segaxbd_state::aburner2_iochip0_motor_r), this); + m_iochip_custom_io_w[0][1] = iowrite_delegate(FUNC(segaxbd_state::aburner2_iochip0_motor_w), this); } - DRIVER_INIT_MEMBER(segaxbd_state,lastsurv) { - - DRIVER_INIT_CALL(generic_xboard); - m_iochip_custom_io_r[1][1] = lastsurv_iochip1_port_r; - m_iochip_custom_io_w[0][3] = lastsurv_iochip0_muxer_w; -} - - -static WRITE16_HANDLER( loffire_sync0_w ) -{ - segaxbd_state *state = space->machine().driver_data(); - - COMBINE_DATA(&state->m_loffire_sync[offset]); - space->machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(10)); + DRIVER_INIT_CALL(generic); + m_iochip_custom_io_r[1][1] = ioread_delegate(FUNC(segaxbd_state::lastsurv_iochip1_port_r), this); + m_iochip_custom_io_w[0][3] = iowrite_delegate(FUNC(segaxbd_state::lastsurv_iochip0_muxer_w), this); } DRIVER_INIT_MEMBER(segaxbd_state,loffire) { + DRIVER_INIT_CALL(generic); + m_adc_reverse[1] = m_adc_reverse[3] = true; - DRIVER_INIT_CALL(generic_xboard); - m_adc_reverse[1] = m_adc_reverse[3] = 1; - - /* install sync hack on core shared memory */ - m_loffire_sync = machine().device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_write_handler(0x29c000, 0x29c011, FUNC(loffire_sync0_w)); + // install sync hack on core shared memory + m_loffire_sync = m_maincpu->space(AS_PROGRAM)->install_write_handler(0x29c000, 0x29c011, write16_delegate(FUNC(segaxbd_state::loffire_sync0_w), this)); } - DRIVER_INIT_MEMBER(segaxbd_state,smgp) { + DRIVER_INIT_CALL(generic); + m_iochip_custom_io_r[0][0] = ioread_delegate(FUNC(segaxbd_state::smgp_iochip0_motor_r), this); + m_iochip_custom_io_w[0][1] = iowrite_delegate(FUNC(segaxbd_state::smgp_iochip0_motor_w), this); - DRIVER_INIT_CALL(generic_xboard); - m_iochip_custom_io_r[0][0] = smgp_iochip0_motor_r; - m_iochip_custom_io_w[0][1] = smgp_iochip0_motor_w; - - machine().device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_readwrite_handler(0x2f0000, 0x2f3fff, FUNC(smgp_excs_r), FUNC(smgp_excs_w)); + // map /EXCS space + m_maincpu->space(AS_PROGRAM)->install_readwrite_handler(0x2f0000, 0x2f3fff, read16_delegate(FUNC(segaxbd_state::smgp_excs_r), this), write16_delegate(FUNC(segaxbd_state::smgp_excs_w), this)); } - DRIVER_INIT_MEMBER(segaxbd_state,rascot) { + DRIVER_INIT_CALL(generic); + // patch out bootup link test - UINT16 *rom = (UINT16 *)machine().root_device().memregion("subcpu")->base(); + UINT16 *rom = reinterpret_cast(memregion("subcpu")->base()); rom[0xb78/2] = 0x601e; // subrom checksum test rom[0x57e/2] = 0x4e71; rom[0x5d0/2] = 0x6008; rom[0x606/2] = 0x4e71; - DRIVER_INIT_CALL(generic_xboard); - - machine().device("subcpu")->memory().space(AS_PROGRAM)->install_legacy_readwrite_handler(0x0f0000, 0x0f3fff, FUNC(rascot_excs_r), FUNC(rascot_excs_w)); + // map /EXCS space + m_maincpu->space(AS_PROGRAM)->install_readwrite_handler(0x0f0000, 0x0f3fff, read16_delegate(FUNC(segaxbd_state::rascot_excs_r), this), write16_delegate(FUNC(segaxbd_state::rascot_excs_w), this)); } - DRIVER_INIT_MEMBER(segaxbd_state,gprider) { - - DRIVER_INIT_CALL(generic_xboard); - m_gprider_hack = 1; + DRIVER_INIT_CALL(generic); + m_gprider_hack = true; } -/************************************* - * - * Game driver(s) - * - *************************************/ +//************************************************************************** +// GAME DRIVERS +//************************************************************************** -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS -GAME( 1987, aburner2, 0, xboard, aburner2, segaxbd_state, aburner2, ROT0, "Sega", "After Burner II", 0 ) -GAME( 1987, aburner, aburner2, xboard, aburner, segaxbd_state, aburner2, ROT0, "Sega", "After Burner (Japan)", 0 ) -GAME( 1987, thndrbld, 0, xboard_fd1094, thndrbld, segaxbd_state, generic_xboard, ROT0, "Sega", "Thunder Blade (upright, FD1094 317-0056)", 0 ) -GAME( 1987, thndrbld1,thndrbld, xboard, thndrbd1, segaxbd_state, generic_xboard, ROT0, "Sega", "Thunder Blade (deluxe/standing, unprotected)", 0 ) -GAME( 1989, lastsurv, 0, lastsurv_fd1094, lastsurv, segaxbd_state, lastsurv, ROT0, "Sega", "Last Survivor (Japan, FD1094 317-0083)", 0 ) -GAME( 1989, loffire, 0, xboard_fd1094, loffire, segaxbd_state, loffire, ROT0, "Sega", "Line of Fire / Bakudan Yarou (World, FD1094 317-0136)", 0 ) -GAME( 1989, loffireu, loffire, xboard_fd1094, loffire, segaxbd_state, loffire, ROT0, "Sega", "Line of Fire / Bakudan Yarou (US, FD1094 317-0135)", 0 ) -GAME( 1989, loffirej, loffire, xboard_fd1094, loffire, segaxbd_state, loffire, ROT0, "Sega", "Line of Fire / Bakudan Yarou (Japan, FD1094 317-0134)", 0 ) -GAME( 1989, rachero, 0, xboard_fd1094, rachero, segaxbd_state, generic_xboard, ROT0, "Sega", "Racing Hero (FD1094 317-0144)", 0 ) -GAME( 1989, smgp, 0, smgp_fd1094, smgp, segaxbd_state, smgp, ROT0, "Sega", "Super Monaco GP (World, Rev B, FD1094 317-0126a)", 0 ) -GAME( 1989, smgp6, smgp, smgp_fd1094, smgp, segaxbd_state, smgp, ROT0, "Sega", "Super Monaco GP (World, Rev A, FD1094 317-0126a)", 0 ) -GAME( 1989, smgp5, smgp, smgp_fd1094, smgp, segaxbd_state, smgp, ROT0, "Sega", "Super Monaco GP (World, FD1094 317-0126)", 0 ) -GAME( 1989, smgpu, smgp, smgp_fd1094, smgp, segaxbd_state, smgp, ROT0, "Sega", "Super Monaco GP (US, Rev C, FD1094 317-0125a)", 0 ) -GAME( 1989, smgpu1, smgp, smgp_fd1094, smgp, segaxbd_state, smgp, ROT0, "Sega", "Super Monaco GP (US, Rev B, FD1094 317-0125a)", 0 ) -GAME( 1989, smgpu2, smgp, smgp_fd1094, smgp, segaxbd_state, smgp, ROT0, "Sega", "Super Monaco GP (US, Rev A, FD1094 317-0125a)", 0 ) -GAME( 1989, smgpj, smgp, smgp_fd1094, smgp, segaxbd_state, smgp, ROT0, "Sega", "Super Monaco GP (Japan, Rev B, FD1094 317-0124a)", 0 ) -GAME( 1989, smgpja, smgp, smgp_fd1094, smgp, segaxbd_state, smgp, ROT0, "Sega", "Super Monaco GP (Japan, Rev A, FD1094 317-0124a)", 0 ) -GAME( 1990, abcop, 0, xboard_fd1094, abcop, segaxbd_state, generic_xboard, ROT0, "Sega", "A.B. Cop (FD1094 317-0169b)", 0 ) -GAME( 1990, gprider, 0, xboard_fd1094, gprider, segaxbd_state, gprider, ROT0, "Sega", "GP Rider (World, FD1094 317-0163)", 0 ) -GAME( 1990, gprideru, gprider, xboard_fd1094, gprider, segaxbd_state, gprider, ROT0, "Sega", "GP Rider (US, FD1094 317-0162)", 0 ) -GAME( 1990, gpriderj, gprider, xboard_fd1094, gprider, segaxbd_state, gprider, ROT0, "Sega", "GP Rider (Japan, FD1094 317-0161)", 0 ) -GAME( 1991, rascot, 0, rascot, rascot, segaxbd_state, rascot, ROT0, "Sega", "Royal Ascot (Japan, terminal?)", GAME_NOT_WORKING | GAME_NO_SOUND ) +// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS +GAME( 1987, aburner2, 0, xboard, aburner2, segaxbd_state, aburner2, ROT0, "Sega", "After Burner II", 0 ) +GAME( 1987, aburner, aburner2, xboard, aburner, segaxbd_state, aburner2, ROT0, "Sega", "After Burner (Japan)", 0 ) +GAME( 1987, thndrbld, 0, xboard_fd1094, thndrbld, segaxbd_state, generic, ROT0, "Sega", "Thunder Blade (upright, FD1094 317-0056)", 0 ) +GAME( 1987, thndrbld1,thndrbld, xboard, thndrbd1, segaxbd_state, generic, ROT0, "Sega", "Thunder Blade (deluxe/standing, unprotected)", 0 ) +GAME( 1989, lastsurv, 0, lastsurv_fd1094,lastsurv, segaxbd_state, lastsurv, ROT0, "Sega", "Last Survivor (Japan, FD1094 317-0083)", 0 ) +GAME( 1989, loffire, 0, xboard_fd1094, loffire, segaxbd_state, loffire, ROT0, "Sega", "Line of Fire / Bakudan Yarou (World, FD1094 317-0136)", 0 ) +GAME( 1989, loffireu, loffire, xboard_fd1094, loffire, segaxbd_state, loffire, ROT0, "Sega", "Line of Fire / Bakudan Yarou (US, FD1094 317-0135)", 0 ) +GAME( 1989, loffirej, loffire, xboard_fd1094, loffire, segaxbd_state, loffire, ROT0, "Sega", "Line of Fire / Bakudan Yarou (Japan, FD1094 317-0134)", 0 ) +GAME( 1989, rachero, 0, xboard_fd1094, rachero, segaxbd_state, generic, ROT0, "Sega", "Racing Hero (FD1094 317-0144)", 0 ) +GAME( 1989, smgp, 0, smgp_fd1094, smgp, segaxbd_state, smgp, ROT0, "Sega", "Super Monaco GP (World, Rev B, FD1094 317-0126a)", 0 ) +GAME( 1989, smgp6, smgp, smgp_fd1094, smgp, segaxbd_state, smgp, ROT0, "Sega", "Super Monaco GP (World, Rev A, FD1094 317-0126a)", 0 ) +GAME( 1989, smgp5, smgp, smgp_fd1094, smgp, segaxbd_state, smgp, ROT0, "Sega", "Super Monaco GP (World, FD1094 317-0126)", 0 ) +GAME( 1989, smgpu, smgp, smgp_fd1094, smgp, segaxbd_state, smgp, ROT0, "Sega", "Super Monaco GP (US, Rev C, FD1094 317-0125a)", 0 ) +GAME( 1989, smgpu1, smgp, smgp_fd1094, smgp, segaxbd_state, smgp, ROT0, "Sega", "Super Monaco GP (US, Rev B, FD1094 317-0125a)", 0 ) +GAME( 1989, smgpu2, smgp, smgp_fd1094, smgp, segaxbd_state, smgp, ROT0, "Sega", "Super Monaco GP (US, Rev A, FD1094 317-0125a)", 0 ) +GAME( 1989, smgpj, smgp, smgp_fd1094, smgp, segaxbd_state, smgp, ROT0, "Sega", "Super Monaco GP (Japan, Rev B, FD1094 317-0124a)", 0 ) +GAME( 1989, smgpja, smgp, smgp_fd1094, smgp, segaxbd_state, smgp, ROT0, "Sega", "Super Monaco GP (Japan, Rev A, FD1094 317-0124a)", 0 ) +GAME( 1990, abcop, 0, xboard_fd1094, abcop, segaxbd_state, generic, ROT0, "Sega", "A.B. Cop (World, FD1094 317-0169b)", 0 ) +GAME( 1990, abcopj, abcop, xboard_fd1094, abcop, segaxbd_state, generic, ROT0, "Sega", "A.B. Cop (Japan, FD1094 317-0169b)", 0 ) +GAME( 1990, gprider, 0, xboard_fd1094, gprider, segaxbd_state, gprider, ROT0, "Sega", "GP Rider (World, FD1094 317-0163)", 0 ) +GAME( 1990, gprideru, gprider, xboard_fd1094, gprider, segaxbd_state, gprider, ROT0, "Sega", "GP Rider (US, FD1094 317-0162)", 0 ) +GAME( 1990, gpriderj, gprider, xboard_fd1094, gprider, segaxbd_state, gprider, ROT0, "Sega", "GP Rider (Japan, FD1094 317-0161)", 0 ) +GAME( 1991, rascot, 0, rascot, rascot, segaxbd_state, rascot, ROT0, "Sega", "Royal Ascot (Japan, terminal?)", GAME_NOT_WORKING | GAME_NO_SOUND ) diff --git a/src/mame/includes/segaorun.h b/src/mame/includes/segaorun.h index f5c930f626d..e8e8de3ee3f 100644 --- a/src/mame/includes/segaorun.h +++ b/src/mame/includes/segaorun.h @@ -59,43 +59,41 @@ public: m_nvram(*this, "nvram"), m_workram(*this, "workram"), m_custom_map(NULL), - m_is_shangon(false), + m_shangon_video(false), m_scanline_timer(NULL), m_irq2_state(0), m_adc_select(0), m_vblank_irq_state(0) { } - // driver init - DECLARE_DRIVER_INIT(outrunb); - DECLARE_DRIVER_INIT(shangon); - DECLARE_DRIVER_INIT(outrun); - DECLARE_DRIVER_INIT(shangon3); - - // memory mapping - void memory_mapper(sega_315_5195_mapper_device &mapper, UINT8 index); - UINT8 mapper_sound_r(); - void mapper_sound_w(UINT8 data); - - // read/write handlers - DECLARE_READ16_MEMBER( misc_io_r ); - DECLARE_WRITE16_MEMBER( misc_io_w ); - DECLARE_WRITE16_MEMBER( nop_w ); + // PPI read/write handlers DECLARE_READ8_MEMBER( unknown_porta_r ); DECLARE_READ8_MEMBER( unknown_portb_r ); DECLARE_READ8_MEMBER( unknown_portc_r ); DECLARE_WRITE8_MEMBER( unknown_porta_w ); DECLARE_WRITE8_MEMBER( unknown_portb_w ); DECLARE_WRITE8_MEMBER( video_control_w ); + + // memory mapping + void memory_mapper(sega_315_5195_mapper_device &mapper, UINT8 index); + UINT8 mapper_sound_r(); + void mapper_sound_w(UINT8 data); + + // main CPU read/write handlers + DECLARE_READ16_MEMBER( misc_io_r ); + DECLARE_WRITE16_MEMBER( misc_io_w ); + DECLARE_WRITE16_MEMBER( nop_w ); + + // Z80 sound CPU read/write handlers DECLARE_READ8_MEMBER( sound_data_r ); - // custom I/O - DECLARE_READ16_MEMBER( outrun_custom_io_r ); - DECLARE_WRITE16_MEMBER( outrun_custom_io_w ); - DECLARE_READ16_MEMBER( shangon_custom_io_r ); - DECLARE_WRITE16_MEMBER( shangon_custom_io_w ); + // game-specific driver init + DECLARE_DRIVER_INIT(generic); + DECLARE_DRIVER_INIT(outrun); + DECLARE_DRIVER_INIT(outrunb); + DECLARE_DRIVER_INIT(shangon); - // video rendering + // video updates UINT32 screen_update_outrun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_shangon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -115,15 +113,19 @@ protected: }; // device overrides - virtual void machine_start(); virtual void machine_reset(); virtual void video_start(); virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); // internal helpers - void init_generic(); void update_main_irqs(); static void m68k_reset_callback(device_t *device); + + // custom I/O + DECLARE_READ16_MEMBER( outrun_custom_io_r ); + DECLARE_WRITE16_MEMBER( outrun_custom_io_w ); + DECLARE_READ16_MEMBER( shangon_custom_io_r ); + DECLARE_WRITE16_MEMBER( shangon_custom_io_w ); // devices required_device m_mapper; @@ -140,7 +142,7 @@ protected: read16_delegate m_custom_io_r; write16_delegate m_custom_io_w; const UINT8 * m_custom_map; - bool m_is_shangon; + bool m_shangon_video; // internal state emu_timer * m_scanline_timer; diff --git a/src/mame/includes/segaxbd.h b/src/mame/includes/segaxbd.h index f1ce3802d9b..4198d5928ee 100644 --- a/src/mame/includes/segaxbd.h +++ b/src/mame/includes/segaxbd.h @@ -57,22 +57,86 @@ public: m_mcu(*this, "mcu"), m_cmptimer_1(*this, "cmptimer_main"), m_gprider_hack(false), + m_road_priority(1), + m_scanline_timer(NULL), m_timer_irq_state(0), m_vblank_irq_state(0), - m_road_priority(0), m_loffire_sync(NULL), m_lastsurv_mux(0) { memset(m_adc_reverse, 0, sizeof(m_adc_reverse)); - memset(m_iochip_custom_io_r, 0, sizeof(m_iochip_custom_io_r)); - memset(m_iochip_custom_io_w, 0, sizeof(m_iochip_custom_io_w)); memset(m_iochip_regs, 0, sizeof(m_iochip_regs)); } -//protected: - // internal helpers - void sound_data_w(UINT8 data); + // compare/timer chip callbacks void timer_ack_callback(); + void sound_data_w(UINT8 data); + + // YM2151 chip callbacks + WRITE_LINE_MEMBER( sound_cpu_irq ); + + // main CPU read/write handlers + READ16_MEMBER( adc_r ); + WRITE16_MEMBER( adc_w ); + UINT16 iochip_r(int which, int port, int inputval); + READ16_MEMBER( iochip_0_r ); + WRITE16_MEMBER( iochip_0_w ); + READ16_MEMBER( iochip_1_r ); + WRITE16_MEMBER( iochip_1_w ); + WRITE16_MEMBER( iocontrol_w ); + + // game-specific main CPU read/write handlers + WRITE16_MEMBER( loffire_sync0_w ); + READ16_MEMBER( rascot_excs_r ); + WRITE16_MEMBER( rascot_excs_w ); + READ16_MEMBER( smgp_excs_r ); + WRITE16_MEMBER( smgp_excs_w ); + + // sound Z80 CPU read/write handlers + READ8_MEMBER( sound_data_r ); + + // game-specific driver init + DECLARE_DRIVER_INIT(generic); + DECLARE_DRIVER_INIT(aburner2); + DECLARE_DRIVER_INIT(lastsurv); + DECLARE_DRIVER_INIT(loffire); + DECLARE_DRIVER_INIT(smgp); + DECLARE_DRIVER_INIT(rascot); + DECLARE_DRIVER_INIT(gprider); + + // video updates + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + +protected: + // internal types + typedef delegate ioread_delegate; + typedef delegate iowrite_delegate; + + // timer IDs + enum + { + TID_SCANLINE, + TID_IRQ2_GEN, + TID_SOUND_WRITE + }; + + // device overrides + virtual void machine_reset(); + virtual void video_start(); + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + + // internal helpers + void update_main_irqs(); + static void m68k_reset_callback(device_t *device); + + // custom I/O + void generic_iochip0_lamps_w(UINT8 data); + UINT8 aburner2_iochip0_motor_r(UINT8 data); + void aburner2_iochip0_motor_w(UINT8 data); + UINT8 smgp_iochip0_motor_r(UINT8 data); + void smgp_iochip0_motor_w(UINT8 data); + UINT8 lastsurv_iochip1_port_r(UINT8 data); + void lastsurv_iochip0_muxer_w(UINT8 data); // devices required_device m_maincpu; @@ -85,30 +149,17 @@ public: // configuration bool m_gprider_hack; bool m_adc_reverse[8]; - UINT8 (*m_iochip_custom_io_r[2][8])(running_machine &machine, UINT8 data); - void (*m_iochip_custom_io_w[2][8])(running_machine &machine, UINT8 data); + ioread_delegate m_iochip_custom_io_r[2][8]; + iowrite_delegate m_iochip_custom_io_w[2][8]; + UINT8 m_road_priority; // internal state emu_timer * m_scanline_timer; UINT8 m_timer_irq_state; UINT8 m_vblank_irq_state; UINT8 m_iochip_regs[2][8]; - UINT8 m_road_priority; // game-specific state UINT16 * m_loffire_sync; UINT8 m_lastsurv_mux; - DECLARE_DRIVER_INIT(generic_xboard); - DECLARE_DRIVER_INIT(loffire); - DECLARE_DRIVER_INIT(smgp); - DECLARE_DRIVER_INIT(aburner2); - DECLARE_DRIVER_INIT(gprider); - DECLARE_DRIVER_INIT(rascot); - DECLARE_DRIVER_INIT(lastsurv); }; - - -/*----------- defined in video/segaxbd.c -----------*/ - -VIDEO_START( xboard ); -SCREEN_UPDATE_IND16( xboard ); diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 87b3e264c1a..e860143a7d6 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -4356,11 +4356,10 @@ loffireu // 1990.04 Line of Fire (US, FD1094, decrypted) // 1990.03 Racing Hero (Japan) rachero // 1990.?? Racing Hero (World, FD1094, decrypted) abcop // 1990.?? A.B.Cop (World, FD1094, decrypted) - // 1991.01 A.B.Cop (Japan) - // 1990.10 GP Rider (Japan) +abcopj // 1991.01 A.B.Cop (Japan, FD1094, decrypted) +gpriderj // 1990.10 GP Rider (Japan, FD1094, decrypted) gprider // 1990.?? GP Rider (World, FD1094, decrypted) gprideru // 1990.12 GP Rider (US, FD1094, decrypted) -gpriderj // 1990.12 GP Rider (Japan, FD1094, decrypted) rascot // 1991.?? Royal Ascot (Japan) diff --git a/src/mame/video/segaorun.c b/src/mame/video/segaorun.c index d6441923897..1913d2239b6 100644 --- a/src/mame/video/segaorun.c +++ b/src/mame/video/segaorun.c @@ -49,7 +49,7 @@ void segaorun_state::video_start() // compute palette info segaic16_palette_init(0x1000); - if (m_is_shangon) + if (m_shangon_video) { // initialize the tile/text layers segaic16_tilemap_init(machine(), 0, SEGAIC16_TILEMAP_16B_ALT, 0x000, 0, 2); diff --git a/src/mame/video/segaxbd.c b/src/mame/video/segaxbd.c index d6a9afefbcf..a28ea0ef1ab 100644 --- a/src/mame/video/segaxbd.c +++ b/src/mame/video/segaxbd.c @@ -39,67 +39,62 @@ #include "includes/segaxbd.h" -/************************************* - * - * Video startup - * - *************************************/ +//************************************************************************** +// VIDEO STARTUP +//************************************************************************** -VIDEO_START( xboard ) +void segaxbd_state::video_start() { - /* compute palette info */ + // compute palette info segaic16_palette_init(0x2000); - /* initialize the tile/text layers */ - segaic16_tilemap_init(machine, 0, SEGAIC16_TILEMAP_16B, 0x1c00, 0, 2); + // initialize the tile/text layers + segaic16_tilemap_init(machine(), 0, SEGAIC16_TILEMAP_16B, 0x1c00, 0, 2); - /* initialize the road */ - segaic16_road_init(machine, 0, SEGAIC16_ROAD_XBOARD, 0x1700, 0x1720, 0x1780, -166); + // initialize the road + segaic16_road_init(machine(), 0, SEGAIC16_ROAD_XBOARD, 0x1700, 0x1720, 0x1780, -166); } -/************************************* - * - * Video update - * - *************************************/ -SCREEN_UPDATE_IND16( xboard ) +//************************************************************************** +// VIDEO STARTUP +//************************************************************************** + +UINT32 segaxbd_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - segaxbd_state *state = screen.machine().driver_data(); - - /* if no drawing is happening, fill with black and get out */ + // if no drawing is happening, fill with black and get out if (!segaic16_display_enable) { - bitmap.fill(get_black_pen(screen.machine()), cliprect); + bitmap.fill(get_black_pen(machine()), cliprect); return 0; } - /* reset priorities */ - screen.machine().priority_bitmap.fill(0, cliprect); + // reset priorities + machine().priority_bitmap.fill(0, cliprect); - /* draw the low priority road layer */ + // draw the low priority road layer segaic16_road_draw(0, bitmap, cliprect, SEGAIC16_ROAD_BACKGROUND); - if (state->m_road_priority == 0) + if (m_road_priority == 0) segaic16_road_draw(0, bitmap, cliprect, SEGAIC16_ROAD_FOREGROUND); - /* draw background */ + // draw background segaic16_tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 0, 0x01); segaic16_tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 1, 0x02); - /* draw foreground */ + // draw foreground segaic16_tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_FOREGROUND, 0, 0x02); segaic16_tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_FOREGROUND, 1, 0x04); - /* draw the high priority road */ - if (state->m_road_priority == 1) + // draw the high priority road + if (m_road_priority == 1) segaic16_road_draw(0, bitmap, cliprect, SEGAIC16_ROAD_FOREGROUND); - /* text layer */ + // text layer segaic16_tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 0, 0x04); segaic16_tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 1, 0x08); - /* draw the sprites */ + // draw the sprites segaic16_sprites_draw(screen, bitmap, cliprect, 0); return 0; }