From aaae6d69543f2718ee89f45b097af8d7cb76695d Mon Sep 17 00:00:00 2001 From: "Sergio G." Date: Sat, 27 Jul 2024 03:10:47 +0200 Subject: nmk/nmk16.cpp: upgraded interrupts trigger system based on PROM contents (#12562) * nmk/nmk16.cpp: upgraded interrupts trigger system based on PROM contents * added info about screen resolutions and timings * merged powerins.cpp into nmk16.cpp driver to make use the new interrupt system * nmk16 prom timing fixes * fixed interrupts config for `powerinsb` and `powerinsc` --- src/mame/mame.lst | 16 +- src/mame/nmk/nmk16.cpp | 1655 ++++++++++++++++++++++++++++++++++++++------- src/mame/nmk/nmk16.h | 41 +- src/mame/nmk/nmk16_v.cpp | 62 ++ src/mame/nmk/powerins.cpp | 1096 ------------------------------ 5 files changed, 1512 insertions(+), 1358 deletions(-) delete mode 100644 src/mame/nmk/powerins.cpp diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 240ea210bb7..37b9ae54fc4 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -34916,6 +34916,13 @@ mustangs // UPL-90058 (c) 1990 UPL + Seoul Trading nouryoku // (c) 1995 Tecmo nouryokup // (c) 1995 Tecmo popspops // (c) 1999 +powerins // (c) 1993 Atlus (USA) +powerinsa // (c) 1993 Atlus (bootleg of USA version) +powerinsb // (c) 1993 Atlus (bootleg of USA version) +powerinsc // (c) 1993 Atlus (bootleg of USA version) +powerinsj // (c) 1993 Atlus (Japan) +powerinspj // prototype (Japan) +powerinspu // prototype (USA) raphero // (c) 1994 NMK rapheroa // (c) 1994 Media Trading Corp redfoxwp2 // (c) 1998 (China) @@ -34968,15 +34975,6 @@ sluster2 // NMK sweethrt // NMK trocana // NTC / NMK -@source:nmk/powerins.cpp -powerins // (c) 1993 Atlus (USA) -powerinsa // (c) 1993 Atlus (bootleg of USA version) -powerinsb // (c) 1993 Atlus (bootleg of USA version) -powerinsc // (c) 1993 Atlus (bootleg of USA version) -powerinsj // (c) 1993 Atlus (Japan) -powerinspj // prototype (Japan) -powerinspu // prototype (USA) - @source:nmk/quizdna.cpp gakupara // (c) 1991 NMK gekiretu // (c) 1992 Face diff --git a/src/mame/nmk/nmk16.cpp b/src/mame/nmk/nmk16.cpp index b61825e59c5..491cc89689f 100644 --- a/src/mame/nmk/nmk16.cpp +++ b/src/mame/nmk/nmk16.cpp @@ -3,35 +3,36 @@ // thanks-to:Richard Bush /******************************************************************** -Task Force Harrier 1989 UPL 68000 Z80 YM2203 2xOKIM6295 -Many Block 1991 Bee-Oh 68000 Z80 YM2203 2xOKIM6295 (hack of "Slot Gal" by UPL) -Mustang 1990 UPL 68000 NMK004 YM2203 2xOKIM6295 -Bio-ship Paladin 1990 UPL 68000 NMK004 YM2203 2xOKIM6295 -Vandyke 1990 UPL 68000 NMK004 YM2203 2xOKIM6295 -Black Heart 1991 UPL 68000 NMK004 YM2203 2xOKIM6295 -Acrobat Mission 1991 UPL 68000 NMK004 YM2203 2xOKIM6295 -Strahl 1992 UPL 68000 NMK004 YM2203 2xOKIM6295 -Thunder Dragon 1991 NMK/Tecmo 68000 NMK004 YM2203 2xOKIM6295 -Hacha Mecha Fighter proto 1991 NMK 68000 NMK004 YM2203 2xOKIM6295 -Hacha Mecha Fighter 1991 NMK 68000 NMK004 YM2203 2xOKIM6295 -Macross 1992 Banpresto 68000 NMK004 YM2203 2xOKIM6295 -GunNail 1993 NMK/Tecmo 68000 NMK004 YM2203 2xOKIM6295 -Macross II 1993 Banpresto 68000 Z80 YM2203 2xOKIM6295 -Thunder Dragon 2 1993 NMK 68000 Z80 YM2203 2xOKIM6295 -Arcadia / Rapid Hero 1994 NMK 68000 tmp90c841 YM2203 2xOKIM6295 - -S.S. Mission 1992 Comad 68000 Z80 OKIM6295 (hack of Thunder Dragon) -Air Attack 1996 Comad 68000 Z80 OKIM6295 (hack of Thunder Dragon) - -Acrobat Mission (bootleg) 68000 Z80 YM3812 OKIM6295 -Mustang (bootleg) 68000 Z80 YM3812 OKIM6295 -Thunder Dragon (bootleg) 68000 Z80 YM3812 OKIM6295 - -Thunder Dragon 3 (bootleg) 1996 Conny 68000 Z80 (Unknown, Single OKIM6295 identified) - -Saboten Bombers 1992 NMK/Tecmo 68000 2xOKIM6295 -Bombjack Twin 1993 NMK 68000 2xOKIM6295 -Nouryoku Koujou Iinkai 1995 Tecmo 68000 2xOKIM6295 +Task Force Harrier 1989 UPL 68000 Z80 YM2203 2xOKIM6295 Low-Res +Many Block 1991 Bee-Oh 68000 Z80 YM2203 2xOKIM6295 Low-Res (hack of "Slot Gal" by UPL) +Mustang 1990 UPL 68000 NMK004 YM2203 2xOKIM6295 Low-Res +Bio-ship Paladin 1990 UPL 68000 NMK004 YM2203 2xOKIM6295 Low-Res +Vandyke 1990 UPL 68000 NMK004 YM2203 2xOKIM6295 Low-Res +Black Heart 1991 UPL 68000 NMK004 YM2203 2xOKIM6295 Low-Res +Acrobat Mission 1991 UPL 68000 NMK004 YM2203 2xOKIM6295 Low-Res +Strahl 1992 UPL 68000 NMK004 YM2203 2xOKIM6295 Low-Res +Thunder Dragon 1991 NMK/Tecmo 68000 NMK004 YM2203 2xOKIM6295 Low-Res +Hacha Mecha Fighter proto 1991 NMK 68000 NMK004 YM2203 2xOKIM6295 Low-Res +Hacha Mecha Fighter 1991 NMK 68000 NMK004 YM2203 2xOKIM6295 Low-Res +Macross 1992 Banpresto 68000 NMK004 YM2203 2xOKIM6295 Low-Res +GunNail 1993 NMK/Tecmo 68000 NMK004 YM2203 2xOKIM6295 Hi-Res +Macross II 1993 Banpresto 68000 Z80 YM2203 2xOKIM6295 Hi-Res +Thunder Dragon 2 1993 NMK 68000 Z80 YM2203 2xOKIM6295 Hi-Res +Power Instinct 1993 Atlus 68000 Z80 YM2203 2xOKIM6295 Mid-Res +Arcadia / Rapid Hero 1994 NMK 68000 tmp90c841 YM2203 2xOKIM6295 Hi-Res + +S.S. Mission 1992 Comad 68000 Z80 OKIM6295 Low-Res (hack of Thunder Dragon) +Air Attack 1996 Comad 68000 Z80 OKIM6295 Low-Res (hack of Thunder Dragon) + +Acrobat Mission (bootleg) 68000 Z80 YM3812 OKIM6295 Low-Res +Mustang (bootleg) 68000 Z80 YM3812 OKIM6295 Low-Res +Thunder Dragon (bootleg) 68000 Z80 YM3812 OKIM6295 Low-Res + +Thunder Dragon 3 (bootleg) 1996 Conny 68000 Z80 Hi-Res (Unknown, Single OKIM6295 identified) + +Saboten Bombers 1992 NMK/Tecmo 68000 2xOKIM6295 Hi-Res +Bombjack Twin 1993 NMK 68000 2xOKIM6295 Hi-Res +Nouryoku Koujou Iinkai 1995 Tecmo 68000 2xOKIM6295 Hi-Res driver by Mirko Buffoni, Richard Bush, Nicola Salmoria, Bryan McPhail, David Haywood, R. Belmont, Alex Marshal and Luca Elia. @@ -282,12 +283,51 @@ void nmk16_state::mainram_swapped_w(offs_t offset, u16 data, u16 mem_mask) COMBINE_DATA(&m_mainram[bitswap<16>(offset, 15, 14, 13, 12, 11, 7, 9, 8, 10, 6, 5, 4, 3, 2, 1, 0)]); } -void nmk16_state::ssmissin_soundbank_w(u8 data) +/*************************************************************************** + + Sound Handlers + +***************************************************************************/ +void nmk16_state::macross2_sound_reset_w(u16 data) +{ + /* PCB behaviour verified by Corrado Tomaselli at MAME Italia Forum: + every time music changes Z80 is reset */ + m_audiocpu->set_input_line(INPUT_LINE_RESET, data ? CLEAR_LINE : ASSERT_LINE); +} + +void nmk16_state::macross2_audiobank_w(u8 data) +{ + m_audiobank->set_entry(data & 0x7); +} + +void nmk16_state::ssmissin_okibank_w(u8 data) { m_okibank[0]->set_entry(data & 0x3); } +void nmk16_state::powerinsa_okibank_w(u8 data) +{ + m_okibank[0]->set_entry(data & 0x7); +} + +template +void nmk16_state::tharrier_okibank_w(u8 data) +{ + data &= 0x3; + if (data != 0x3) + m_okibank[Chip]->set_entry(data); +} + +u8 nmk16_state::powerins_bootleg_fake_ym2203_r() +{ + return 0x01; +} + +/*************************************************************************** + tharrier MCU handlers + +***************************************************************************/ void nmk16_state::tharrier_mcu_control_w(u16 data) { // LOG("%04x: mcu_control_w %02x\n",m_maincpu->pc(),data); @@ -326,26 +366,6 @@ u16 nmk16_state::tharrier_mcu_r(offs_t offset, u16 mem_mask) } } -void nmk16_state::macross2_sound_reset_w(u16 data) -{ - /* PCB behaviour verified by Corrado Tomaselli at MAME Italia Forum: - every time music changes Z80 is reset */ - m_audiocpu->set_input_line(INPUT_LINE_RESET, data ? CLEAR_LINE : ASSERT_LINE); -} - -void nmk16_state::macross2_sound_bank_w(u8 data) -{ - m_audiobank->set_entry(data & 0x07); -} - -template -void nmk16_state::tharrier_oki_bankswitch_w(u8 data) -{ - data &= 3; - if (data != 3) - m_okibank[Chip]->set_entry(data); -} - /*************************************************************************** VRAM handlers @@ -484,7 +504,7 @@ void nmk16_tomagic_state::tomagic_sound_map(address_map &map) void nmk16_tomagic_state::tomagic_sound_io_map(address_map &map) { map.global_mask(0xff); - map(0x00, 0x00).w(FUNC(nmk16_tomagic_state::macross2_sound_bank_w)); + map(0x00, 0x00).w(FUNC(nmk16_tomagic_state::macross2_audiobank_w)); map(0x02, 0x03).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read)); } @@ -517,8 +537,8 @@ void nmk16_state::tharrier_sound_map(address_map &map) map(0xf000, 0xf000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); map(0xf400, 0xf400).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); map(0xf500, 0xf500).rw(m_oki[1], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - map(0xf600, 0xf600).w(FUNC(nmk16_state::tharrier_oki_bankswitch_w<0>)); - map(0xf700, 0xf700).w(FUNC(nmk16_state::tharrier_oki_bankswitch_w<1>)); + map(0xf600, 0xf600).w(FUNC(nmk16_state::tharrier_okibank_w<0>)); + map(0xf700, 0xf700).w(FUNC(nmk16_state::tharrier_okibank_w<1>)); } void nmk16_state::tharrier_sound_io_map(address_map &map) @@ -791,7 +811,7 @@ void nmk16_state::ssmissin_sound_map(address_map &map) { map(0x0000, 0x7fff).rom(); map(0x8000, 0x87ff).ram(); - map(0x9000, 0x9000).w(FUNC(nmk16_state::ssmissin_soundbank_w)); + map(0x9000, 0x9000).w(FUNC(nmk16_state::ssmissin_okibank_w)); map(0x9800, 0x9800).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); } @@ -918,7 +938,7 @@ void nmk16_state::gunnailb_sound_map(address_map &map) void nmk16_state::gunnailb_sound_io_map(address_map &map) { map.global_mask(0xff); - map(0x00, 0x00).w(FUNC(nmk16_state::macross2_sound_bank_w)); + map(0x00, 0x00).w(FUNC(nmk16_state::macross2_audiobank_w)); map(0x02, 0x03).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); map(0x04, 0x04).noprw(); // since the bootleggers used the same audio CPU ROM as airbustr but a different Oki ROM, they connected the Oki to the main CPU map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); @@ -985,7 +1005,7 @@ void nmk16_state::raphero_sound_mem_map(address_map &map) map(0xc800, 0xc800).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); map(0xc808, 0xc808).rw(m_oki[1], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); map(0xc810, 0xc817).w("nmk112", FUNC(nmk112_device::okibank_w)); - map(0xd000, 0xd000).w(FUNC(nmk16_state::macross2_sound_bank_w)); + map(0xd000, 0xd000).w(FUNC(nmk16_state::macross2_audiobank_w)); map(0xd800, 0xd800).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); // main cpu map(0xe000, 0xffff).ram(); } @@ -996,7 +1016,7 @@ void nmk16_state::macross2_sound_map(address_map &map) map(0x8000, 0xbfff).bankr("audiobank"); // banked ROM map(0xa000, 0xa000).nopr(); // IRQ ack? watchdog? map(0xc000, 0xdfff).ram(); - map(0xe001, 0xe001).w(FUNC(nmk16_state::macross2_sound_bank_w)); + map(0xe001, 0xe001).w(FUNC(nmk16_state::macross2_audiobank_w)); map(0xf000, 0xf000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); // from 68000 } @@ -1036,6 +1056,57 @@ void nmk16_state::bjtwin_map(address_map &map) map(0x0f0000, 0x0fffff).ram().share("mainram"); } +void nmk16_state::powerins_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x100001).portr("SYSTEM"); + map(0x100002, 0x100003).portr("P1_P2"); + map(0x100008, 0x100009).portr("DSW1"); + map(0x10000a, 0x10000b).portr("DSW2"); + map(0x100015, 0x100015).w(FUNC(nmk16_state::flipscreen_w)); + map(0x100016, 0x100017).nopw(); // IRQ enable or Z80 sound reset like in Macross 2? + map(0x100019, 0x100019).w(FUNC(nmk16_state::tilebank_w)); + map(0x10001f, 0x10001f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x120000, 0x120fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x130000, 0x130007).ram().w(FUNC(nmk16_state::scroll_w<0>)).umask16(0x00ff); + map(0x140000, 0x143fff).ram().w(FUNC(nmk16_state::bgvideoram_w<0>)).share(m_bgvideoram[0]); + map(0x170000, 0x170fff).mirror(0x1000).ram().w(FUNC(nmk16_state::txvideoram_w)).share(m_txvideoram); + map(0x180000, 0x18ffff).ram().share("mainram"); +} + +// powerinsa: same as the original one but without the sound CPU (and inferior sound HW) +void nmk16_state::powerinsa_map(address_map &map) +{ + powerins_map(map); + map(0x100031, 0x100031).w(FUNC(nmk16_state::powerinsa_okibank_w)); + map(0x10003f, 0x10003f).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} + +void nmk16_state::powerins_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +// map(0xe000, 0xe000).nopw(); // ? written only once ? +// map(0xe001, 0xe001).nopw(); // ? +} + +void nmk16_state::powerins_bootleg_audio_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(FUNC(nmk16_state::powerins_bootleg_fake_ym2203_r)).nopw(); + map(0x01, 0x01).noprw(); + map(0x80, 0x80).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x88, 0x88).rw(m_oki[1], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x90, 0x97).w("nmk112", FUNC(nmk112_device::okibank_w)); +} + +void nmk16_state::powerinsa_oki_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom().region("oki1", 0); + map(0x30000, 0x3ffff).bankr(m_okibank[0]); +} + static INPUT_PORTS_START( vandyke ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) @@ -3046,6 +3117,106 @@ static INPUT_PORTS_START( nouryoku ) PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:1" ) INPUT_PORTS_END +static INPUT_PORTS_START( powerins ) + PORT_START("SYSTEM") // $100000 + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START2 ) + PORT_SERVICE_NO_TOGGLE( 0x0020, IP_ACTIVE_LOW ) + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("P1_P2") // $100002 + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) + + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) + + PORT_START("DSW1") // $100008 + PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW1:8") + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x000e, 0x000e, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:7,6,5") + PORT_DIPSETTING( 0x0008, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x000c, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0000, "2 Coins/1 Credit (1 to continue)" ) + PORT_DIPSETTING( 0x000e, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x0006, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x000a, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x0002, DEF_STR( 1C_4C ) ) + PORT_DIPNAME( 0x0070, 0x0070, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:4,3,2") + PORT_DIPSETTING( 0x0040, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x0060, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0000, "2 Coins/1 Credit (1 to continue)" ) + PORT_DIPSETTING( 0x0070, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x0030, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x0050, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( 1C_4C ) ) + PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1") + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + + PORT_START("DSW2") // $10000a + PORT_DIPNAME( 0x0001, 0x0001, "Coin Chutes" ) PORT_DIPLOCATION("SW2:8") + PORT_DIPSETTING( 0x0001, "1 Chute" ) + PORT_DIPSETTING( 0x0000, "2 Chutes" ) + PORT_DIPNAME( 0x0002, 0x0002, "Join In Mode" ) PORT_DIPLOCATION("SW2:7") + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) +/* + In "Join In" mode, a second player can join even if one player has already + begun to play. Please refer to chart below: + + Join In Mode Credit Join In Game Over + ----------------------------------------------------------------------------------------------- + Join In OFF 1C per Player Anytime Winner of VS Plays Computer + Join In ON 1C = VS Mode 2 players Cannot After win VS Game Over for both players + +*/ + PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:6") + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:5") + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( On ) ) + PORT_DIPNAME( 0x0010, 0x0010, "Blood Color" ) PORT_DIPLOCATION("SW2:4") + PORT_DIPSETTING( 0x0010, "Red" ) + PORT_DIPSETTING( 0x0000, "Blue" ) + PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Game_Time ) ) PORT_DIPLOCATION("SW2:3") + PORT_DIPSETTING( 0x0020, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x0000, "Short" ) + PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:2,1") + PORT_DIPSETTING( 0x0040, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x00c0, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) ) +INPUT_PORTS_END + +static INPUT_PORTS_START( powerinj ) + PORT_INCLUDE(powerins) + + PORT_MODIFY("DSW2") + PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:8") + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) +INPUT_PORTS_END @@ -3791,6 +3962,266 @@ static GFXDECODE_START( gfx_strahl ) GFXDECODE_ENTRY( "gfx4", 0, gfx_8x8x4_col_2x2_group_packed_msb, 0x200, 16 ) // color 0x200-0x2ff GFXDECODE_END +static GFXDECODE_START( gfx_powerins ) + GFXDECODE_ENTRY( "fgtile", 0, gfx_8x8x4_packed_msb, 0x200, 0x10 ) // TODO: confirm values (is it same that macross2 one?) + GFXDECODE_ENTRY( "bgtile", 0, gfx_8x8x4_col_2x2_group_packed_msb, 0x000, 0x20 ) + GFXDECODE_ENTRY( "sprites", 0, gfx_8x8x4_col_2x2_group_packed_msb, 0x400, 0x40 ) +GFXDECODE_END + +static GFXDECODE_START( gfx_powerinsc ) + GFXDECODE_ENTRY( "bgtile", 0x280000, gfx_8x8x4_packed_lsb, 0x200, 0x10 ) + GFXDECODE_ENTRY( "bgtile", 0, gfx_8x8x4_col_2x2_group_packed_lsb, 0x000, 0x20 ) + GFXDECODE_ENTRY( "sprites", 0, gfx_8x8x4_col_2x2_group_packed_lsb, 0x400, 0x40 ) // TODO: wrong decode and ROM loading +GFXDECODE_END + + +void nmk16_state::machine_start() +{ + save_item(NAME(m_interrupt_trigger)); +} + +void nmk16_state::machine_reset() +{ + m_interrupt_trigger = 0x01; +} + +/*************************************************************************** + + Screen Configurations + +***************************************************************************/ +/* + This hardware relies on two counters and the contents of two PROMs for the timing signals generation. + The counters are implemented inside NMK902 custom chip (except tharrier) for all "low-res" games and are used to + address the entries on each PROM in a sequential way. On "mid-res" and "hi-res" games, one of the counters is + implemented outside the custom chip, due to they decided to boost up the horizontal resolution, and the initial + configuration is hardwired inside the chip. + + - "Horizontal" signals, such as HBlank, HSync... are generated using one of the counters and a 256x4bit PROM, and + each step on the counter takes 2 pixel clock cycles: + - For "low-res" games the counter starts on 0x40 and goes to 0xFF having 192 steps. As each step is 2 px, the total + H-size is 384px wide. PROM entries from 0x00 to 0x39 address are never used. + - For "mid-res" games the counter starts on 0x20 and goes to 0xFF having 224 steps. As each step is 2 px, the total + H-size is 448px wide. PROM entries from 0x00 to 0x19 address are never used. + - For "hi-res" games the counter starts on 0x00 and goes to 0xFF having 256 steps. As each step is 2 px, the total + H-size is 512px wide. All PROM entries are used. + + - "Vertical" signals, such as VBlank, Interrupt requests... are generated using the other counter and a 256x8bit PROM, + and each step on the counter takes 2 scanlines. + - In this case, for all games the counter starts on 0x75 and goes to 0xFF having 139 steps. As each step is 2 lines, + the total V-size is 278 lines high. PROM entries from 0x00 address to 0x74 are never used. + + Going into more detail: + + The H-timing PROMs is a 82S129 (256x4bit) (first 64 entries are not used in "low-res", and first 32 entries are not + used in "mid-res"). The format is: + + Offset Bits Description + 3210 + 0 ---x Line counter trigger (active low) + 1 --x- HSYNC (active low) + 2 -x-- HBLANK (active low) + 3 x--- unused on almost all games (only used in gunnail and raphero, purpose unknown) + + Considering that and looking at the contents of the PROMs, the horizontal timings are below: + + - For "low-res" (6MHz pixel clock): + 0.....31.........91.....................................................................348.....366.....383 + /LINE-END (2 px): ----------------------------------------------------------------------------------------------------------X + HSYNC (32 px): XXXXXXXX--------------------------------------------------------------------------------------------------- + HBLANK (92 + 36 px): XXXXXXXXXXXXXXXXXXX------------------------------256-wide-------------------------------XXXXXXXXXXXXXXXXXXX // HBlank ends 92 pixels after 'start of line' + ^ + | + 'start of line' (pixel 0) + Each line: ( 6MHz / 384 pixels per line ) = 15625Hz = 64 usec + + + - For "mid-res" (7MHz pixel clock): + 0........59..........................................................................380...400...416....447 + /LINE-END (2 px): ----------------------------------------------------------------------------------------------------------X + HSYNC (32 px): -------------------------------------------------------------------------------------------------XXXXXXXXXX + HBLANK (60 + 68 px): XXXXXXXXXXX--------------------------------------320-wide----------------------------XXXXXXXXXXXXXXXXXXXXXX // HBlank ends 60 pixels after 'start of line' + ^ + | + 'start of line' (pixel 0) + Each line: ( 7MHz / 448 pixels per line ) = 15625Hz = 64 usec + + + - For "hi-res" (8MHz pixel clock): + 0...27............................................................................412...432...448.479...511 + /LINE-END (2 px): ----------------------------------------------------------------------------------------------------------X + HSYNC (32 px): ----------------------------------------------------------------------------------------------XXXXXXX------ + HBLANK (28 + 100 px): XXXXXX-------------------------------------------384-wide-------------------------XXXXXXXXXXXXXXXXXXXXXXXXX // HBlank ends 28 pixels after 'start of line' + ^ + | + 'start of line' (pixel 0) + Each line: ( 8MHz / 512 pixels per line ) = 15625Hz = 64 usec + + + For V-timing PROM, it's tipically a 82S135 (256x8bit) (first 117 entries are not used). Some games (such as Comad + ones) use a 82S147 (512x8bit) with A5 tied to GND, using only half of the total space. TODO: currently unsupported + The format is: + + Offset Bits Description + 76543210 + 0 -------x Sprite DMA trigger (active low) + 1 ------x- VSYNC (active low) + 2 -----x-- VBLANK (active low) + 3 ----x--- unused + 4 ---x---- IPL0 (active high) + 5 --x----- IPL1 (active high) + 6 -x------ IPL2 (active high) + 7 x------- Interrupt Trigger (active low and effective on the very next PROM entry (2 scanlines), the interrupt is triggered on 0 to 1 transition) + + Considering that and looking at the content of the PROM, the vertical timings are below: + + 0.8.13..22.37.....................................................................................262...277 + /SPR-DMA-START (2 lines):--------------------------------------------------------------------------------------------------X-------- + VSYNC (6 lines): --XXXX----------------------------------------------------------------------------------------------------- + VBLANK (38 + 16 lines): XXXXXXXXXXXXX------------------------------------224-high-----------------------------------------XXXXXXXXX // VBlank ends 16 lines after 'start of frame' + + (Showing timings for tdragon and other games. Some others has the IRQs a bit shifted or not all of them actually used): + 0.9...21.....38..53......90..103..................................................218.231.........262...277 + IPL0 (15 + 15 lines): -------------------------XXXXXXX-----------------128-gap--------------------------XXXXXXX------------------ // some games like bioship and vandyke have this interrupt a bit shifted, will be fixed in the next PR + IPL1 (16 lines): -------------XXXXXX---------------------------------------------------------------------------------------- // sometimes not present, i.e. tdragon2, macross2... + IPL2 (26 lines): XXX-----------------------------------------------------------------------------------------------XXXXXXXXX + /FRAME-END (22 lines): XXXXXXXX--------------------------------------------------------------------------------------------------- // This signal is low on last 22 lines of each frame and goes high on the first line of the next one + ^ + | + 'start of frame' (line 22) + + VBLANK time: ( 6MHz / 384 pixels per line ) / 54 lines per VBlank = 289.35185185Hz = 3456 usec + Active video time: ( 6MHz / 384 pixels per line ) / 224 lines per Active = 69.75446428Hz = 14336 usec + Time between IPL0: ( 6MHz / 384 pixels per line ) / 128 lines between IPL0s = 122.0703125Hz = 8192 usec + +*/ +void nmk16_state::set_screen_lowres(machine_config &config) +{ + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(12'000'000)/2, 384, 92, 348, 278, 16, 240); // confirmed + m_screen->set_palette(m_palette); + + NMK_16BIT_SPRITE(config, m_spritegen, XTAL(12'000'000)/2); + m_spritegen->set_screen_size(92+348, 16+240); + m_spritegen->set_max_sprite_clock(384 * 263); // from hardware manual + m_spritegen->set_videoshift(92); +} + +// only used for powerins and (original) clones +void nmk16_state::set_screen_midres(machine_config &config) +{ + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(14'000'000)/2, 448, 60, 380, 278, 16, 240); // confirmed + m_screen->set_palette(m_palette); + + NMK_16BIT_SPRITE(config, m_spritegen, XTAL(14'000'000)/2); + m_spritegen->set_mask(0x3ff, 0x3ff); + m_spritegen->set_screen_size(60+380, 16+240); + m_spritegen->set_max_sprite_clock(448 * 263); // not verified? + m_spritegen->set_videoshift(60+32); +} + +void nmk16_state::set_screen_hires(machine_config &config) +{ + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(16'000'000)/2, 512, 28, 412, 278, 16, 240); // confirmed + m_screen->set_palette(m_palette); + + NMK_16BIT_SPRITE(config, m_spritegen, XTAL(16'000'000)/2); + m_spritegen->set_screen_size(28+412, 16+240); + m_spritegen->set_max_sprite_clock(512 * 263); // not verified? + m_spritegen->set_videoshift(28+64); +} + +/*************************************************************************** + + Interrupt Handlers + +***************************************************************************/ +/* + While there are only 3 different H-timing PROMs (one for each screen resolution and ignoring the 4th bit used in + some games), multiple V-timings PROMs exists on games using this hardware. + + The differences in these V-PROMs exists mainly because each game is configured to have own interrupt timing. + VSYNC, VBLANK, SPRITE-DMA timings are the same for all variants, though. + + Summary of triggered IRQs on different games: + + - IRQ1: + - At 68 and 196 scanlines on most games + - 'tharrier' only at 146 scanline + - 'vandyke', 'bioship' and 'blkheart' only at 102 scanline (also 'ddealer' outside this driver). + 'vandyke' permanently inhibits it by software. + - 'powerins' only at 16 scanline (looks like it's always inhibited by software) + + - IRQ2: + - At 16 scanline on most games (VBIN = end of VBLANK = start of active video) + - 'tdragon', 'macross2', 'tdragon2' and 'raphero' lack it + - 'tharrier' at 54 scanline + - 'powerins' at 128 scanline (looks like it's always inhibited by software) + + - IRQ3: + - Only triggered by 'powerins' at 90 and 166 scanlines (looks like it's always inhibited by software) + + - IRQ4: (VBOUT) + - At 240 scanline for all games (VBOUT = start of VBLANK = end of active video) +*/ +TIMER_DEVICE_CALLBACK_MEMBER(nmk16_state::nmk16_scanline) +{ +// constexpr int SPRDMA_INDEX = 0; // not used in emulation TODO: check if it could be used to trigger the sprite DMA instead of setting it 4 lines after VBOUT +// constexpr int VSYNC_INDEX = 1; // not used in emulation +// constexpr int VBLANK_INDEX = 2; // not used in emulation +// constexpr int NOT_USED = 3; // not used in emulation + constexpr int IPL0_INDEX = 4; + constexpr int IPL1_INDEX = 5; + constexpr int IPL2_INDEX = 6; + constexpr int TRIGG_INDEX = 7; + + constexpr int PROM_START_OFFSET = 0x75; // previous entries are never addressed + constexpr int PROM_FRAME_OFFSET = 0x0b; // first 11 "used" entries (from 0x75 to 0x7f: 0xb entries) are prior to start of frame, which occurs on 0x80 address (128 entry) + + u8 *prom = m_vtiming_prom->base(); + int len = m_vtiming_prom->bytes(); + + int scanline = param; + + // every PROM entry is addressed each 2 scanlines, so only even lines are actually addressing it: + if ((scanline & 0x1) == 0x0) + { + + int promAddress = (((scanline / 2) + PROM_FRAME_OFFSET) % (len - PROM_START_OFFSET)) + PROM_START_OFFSET; + + LOG("nmk16_scanline: Scanline: %03d - Current PROM entry: %03d\n", scanline, promAddress); + + u8 val = prom[promAddress]; + + // Interrupt requests are triggered at raising edge of bit 7: + u8 trigger = BIT(val, TRIGG_INDEX); + if (m_interrupt_trigger == 0 && trigger == 1) + { + + u8 int_level = bitswap<3>(val, IPL2_INDEX, IPL1_INDEX, IPL0_INDEX); + if (int_level > 0) + { + LOG("nmk16_scanline: Triggered interrupt: IRQ%d at scanline: %03d\n", int_level, scanline); + m_maincpu->set_input_line(int_level, HOLD_LINE); + } + + // Triggered at VBOUT. TODO: check if this could be triggered using SPRDMA_INDEX instead + if (int_level == 4) + { + m_dma_timer->adjust(m_screen->time_until_pos(scanline + 4)); // as per UPL docs, 256 usec after VBOUT = 4 lines, but index on the PROM says otherwise. + } + } + + m_interrupt_trigger = trigger; + } +} + +void nmk16_state::set_interrupt_timing(machine_config &config) +{ + TIMER(config, "scantimer").configure_scanline(FUNC(nmk16_state::nmk16_scanline), "screen", 0, 1); +} /* ---- @@ -3821,9 +4252,11 @@ LV4 LV2 LV1 LV1 - VBlank = 54 lines * 64 usec = 3456 usec - Active = 224 lines * 64 usec = 14336 usec - IRQ1 gap = 128 lines * 64 usec = 8192 usec + + The following code is used for bootleg, Afega, Comad and NMK games that PROMs are still undumped, on which the + interrupt triggering cannot be relied on the PROMs contents. */ - -TIMER_DEVICE_CALLBACK_MEMBER(nmk16_state::nmk16_scanline) +TIMER_DEVICE_CALLBACK_MEMBER(nmk16_state::nmk16_hacky_scanline) { const int VBIN_SCANLINE = 16; const int VBOUT_SCANLINE = VBIN_SCANLINE + 224; // VBIN + 224 lines high of active video @@ -3853,6 +4286,11 @@ TIMER_DEVICE_CALLBACK_MEMBER(nmk16_state::nmk16_scanline) m_maincpu->set_input_line(1, HOLD_LINE); } +void nmk16_state::set_hacky_interrupt_timing(machine_config &config) +{ + TIMER(config, "scantimer").configure_scanline(FUNC(nmk16_state::nmk16_hacky_scanline), "screen", 0, 1); +} + TIMER_CALLBACK_MEMBER(nmk16_state::dma_callback) { // 2 buffers confirmed on PCB, 1 on sabotenb @@ -3861,49 +4299,20 @@ TIMER_CALLBACK_MEMBER(nmk16_state::dma_callback) //m_maincpu->spin_until_time(attotime::from_usec(694)); // stop cpu during DMA? } -void nmk16_state::set_hacky_interrupt_timing(machine_config &config) -{ - TIMER(config, "scantimer").configure_scanline(FUNC(nmk16_state::nmk16_scanline), "screen", 0, 1); -} - -void nmk16_state::set_hacky_screen_lowres(machine_config &config) -{ - SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_raw(XTAL(12'000'000)/2, 384, 92, 348, 278, 16, 240); // confirmed - m_screen->set_palette(m_palette); - - NMK_16BIT_SPRITE(config, m_spritegen, XTAL(12'000'000)/2); - m_spritegen->set_screen_size(92+348, 16+240); - m_spritegen->set_max_sprite_clock(384 * 263); // from hardware manual - m_spritegen->set_videoshift(92); -} - -void nmk16_state::set_hacky_screen_hires(machine_config &config) -{ - SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_raw(XTAL(16'000'000)/2, 512, 28, 412, 278, 16, 240); // confirmed - m_screen->set_palette(m_palette); - - NMK_16BIT_SPRITE(config, m_spritegen, XTAL(16'000'000)/2); - m_spritegen->set_screen_size(28+412, 16+240); - m_spritegen->set_max_sprite_clock(512 * 263); // not verified? - m_spritegen->set_videoshift(28+64); -} - // OSC : 10MHz, 12MHz, 4MHz, 4.9152MHz void nmk16_state::tharrier(machine_config &config) { // basic machine hardware M68000(config, m_maincpu, XTAL(10'000'000)); // TMP68000P-12, 10 MHz m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::tharrier_map); - set_hacky_interrupt_timing(config); + set_interrupt_timing(config); Z80(config, m_audiocpu, XTAL(4'915'200)); // Z0840006PSC, 4.9152 MHz m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::tharrier_sound_map); m_audiocpu->set_addrmap(AS_IO, &nmk16_state::tharrier_sound_io_map); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_spritegen->set_ext_callback(FUNC(nmk16_state::get_sprite_flip)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_tharrier)); @@ -3939,10 +4348,10 @@ void nmk16_state::mustang(machine_config &config) // basic machine hardware M68000(config, m_maincpu, XTAL(8'000'000)); // verified on PCB m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::mustang_map); - set_hacky_interrupt_timing(config); + set_interrupt_timing(config); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -3984,7 +4393,7 @@ void nmk16_state::mustangb(machine_config &config) m_audiocpu->set_irq_acknowledge_callback("seibu_sound", FUNC(seibu_sound_device::im0_vector_cb)); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4021,7 +4430,7 @@ void nmk16_state::mustangb3(machine_config &config) m_audiocpu->set_addrmap(AS_IO, &nmk16_state::tharrier_sound_io_map); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4054,10 +4463,10 @@ void nmk16_state::bioship(machine_config &config) // basic machine hardware M68000(config, m_maincpu, XTAL(10'000'000)); // 10.0 MHz (verified) m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::bioship_map); - set_hacky_interrupt_timing(config); + set_interrupt_timing(config); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_strahl)); @@ -4092,10 +4501,10 @@ void nmk16_state::vandyke(machine_config &config) // basic machine hardware M68000(config, m_maincpu, XTAL(10'000'000)); // 68000p12 running at 10Mhz, verified on PCB m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::vandyke_map); - set_hacky_interrupt_timing(config); + set_interrupt_timing(config); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4135,7 +4544,7 @@ void nmk16_state::vandykeb(machine_config &config) PIC16C57(config, "mcu", 12000000).set_disable(); // 3MHz // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4156,10 +4565,10 @@ void nmk16_state::acrobatm(machine_config &config) // basic machine hardware M68000(config, m_maincpu, XTAL(10'000'000)); // 10 MHz (verified on PCB) m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::acrobatm_map); - set_hacky_interrupt_timing(config); + set_interrupt_timing(config); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4203,7 +4612,7 @@ void nmk16_state::acrobatmbl(machine_config &config) PIC16C57(config, "mcu", 8_MHz_XTAL / 2).set_disable(); // divider not verified // video hardware - set_hacky_screen_lowres(config); // TODO: video XTAL is 12 MHz + set_screen_lowres(config); // TODO: video XTAL is 12 MHz m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4240,7 +4649,7 @@ void nmk16_state::tdragonb(machine_config &config) // bootleg using Raiden so m_audiocpu->set_irq_acknowledge_callback("seibu_sound", FUNC(seibu_sound_device::im0_vector_cb)); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4280,7 +4689,7 @@ void nmk16_state::tdragonb2(machine_config &config) set_hacky_interrupt_timing(config); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4299,10 +4708,10 @@ void nmk16_state::tdragon(machine_config &config) // basic machine hardware M68000(config, m_maincpu, XTAL(8'000'000)); // verified on PCB m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::tdragon_map); - set_hacky_interrupt_timing(config); + set_interrupt_timing(config); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4447,7 +4856,7 @@ void nmk16_state::ssmissin(machine_config &config) m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::ssmissin_sound_map); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4474,7 +4883,7 @@ void nmk16_state::strahl(machine_config &config) set_hacky_interrupt_timing(config); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_strahl)); @@ -4514,7 +4923,7 @@ void nmk16_state::strahljbl(machine_config &config) m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::seibu_sound_map); m_audiocpu->set_irq_acknowledge_callback("seibu_sound", FUNC(seibu_sound_device::im0_vector_cb)); - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_strahl)); @@ -4543,10 +4952,10 @@ void nmk16_state::hachamf(machine_config &config) // basic machine hardware M68000(config, m_maincpu, 10000000); // 10 MHz ? m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::hachamf_map); - set_hacky_interrupt_timing(config); + set_interrupt_timing(config); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4625,10 +5034,10 @@ void nmk16_state::macross(machine_config &config) // basic machine hardware M68000(config, m_maincpu, XTAL(10'000'000)); // verified on PCB m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::macross_map); - set_hacky_interrupt_timing(config); + set_interrupt_timing(config); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4663,10 +5072,10 @@ void nmk16_state::blkheart(machine_config &config) // basic machine hardware M68000(config, m_maincpu, XTAL(8'000'000)); // verified on PCB m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::macross_map); - set_hacky_interrupt_timing(config); + set_interrupt_timing(config); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4701,10 +5110,9 @@ void nmk16_state::gunnail(machine_config &config) // basic machine hardware M68000(config, m_maincpu, XTAL(10'000'000)); // verified on PCB m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::gunnail_map); - set_hacky_interrupt_timing(config); // video hardware - set_hacky_screen_hires(config); + set_screen_hires(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4739,6 +5147,7 @@ void nmk16_state::gunnailb(machine_config &config) gunnail(config); m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::gunnailb_map); + set_hacky_interrupt_timing(config); Z80(config, m_audiocpu, 6000000); // 6 MHz ? m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::gunnailb_sound_map); @@ -4763,14 +5172,14 @@ void nmk16_state::macross2(machine_config &config) // basic machine hardware M68000(config, m_maincpu, XTAL(10'000'000)); // MC68000P12 10 MHz m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::macross2_map); - set_hacky_interrupt_timing(config); + set_interrupt_timing(config); Z80(config, m_audiocpu, 4000000); // Z8400B PS 4 MHz ? m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::macross2_sound_map); m_audiocpu->set_addrmap(AS_IO, &nmk16_state::macross2_sound_io_map); // video hardware - set_hacky_screen_hires(config); + set_screen_hires(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_5bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4807,14 +5216,14 @@ void nmk16_state::tdragon2(machine_config &config) // basic machine hardware M68000(config, m_maincpu, XTAL(10'000'000)); // TMP68000P-12 10 MHz m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::tdragon2_map); - set_hacky_interrupt_timing(config); + set_interrupt_timing(config); Z80(config, m_audiocpu, 4000000); // Z0840006PSC 4? MHz m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::macross2_sound_map); m_audiocpu->set_addrmap(AS_IO, &nmk16_state::macross2_sound_io_map); // video hardware - set_hacky_screen_hires(config); + set_screen_hires(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_5bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4869,13 +5278,13 @@ void nmk16_state::raphero(machine_config &config) // basic machine hardware M68000(config, m_maincpu, XTAL(14'000'000)); // MC68HC000P12 or MC68000P12F or TMP68HC000P-16 14 MHz m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::raphero_map); - set_hacky_interrupt_timing(config); + set_interrupt_timing(config); TMP90841(config, m_audiocpu, XTAL(16'000'000) / 2); // TMP90C841AN 8 MHz m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::raphero_sound_mem_map); // video hardware - set_hacky_screen_hires(config); + set_screen_hires(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_5bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -4912,10 +5321,10 @@ void nmk16_state::bjtwin(machine_config &config) // basic machine hardware M68000(config, m_maincpu, XTAL(10'000'000)); // verified on PCB m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::bjtwin_map); - set_hacky_interrupt_timing(config); + set_interrupt_timing(config); // video hardware - set_hacky_screen_hires(config); + set_screen_hires(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_bjtwin)); @@ -5018,6 +5427,8 @@ void macross_prot_state::gunnail_prot(machine_config &config) { gunnail(config); + set_interrupt_timing(config); + base_nmk214_215(config); config.set_maximum_quantum(attotime::from_hz(6000)); @@ -5032,6 +5443,137 @@ void macross_prot_state::bjtwin_prot(machine_config &config) config.set_maximum_quantum(attotime::from_hz(6000)); } +void nmk16_state::powerins(machine_config &config) +{ + // basic machine hardware + M68000(config, m_maincpu, XTAL(12'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::powerins_map); + set_interrupt_timing(config); + + Z80(config, m_audiocpu, XTAL(12'000'000) / 2); + m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::powerins_sound_map); + m_audiocpu->set_addrmap(AS_IO, &nmk16_state::macross2_sound_io_map); + + // video hardware + set_screen_midres(config); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_6bit)); + m_spritegen->set_ext_callback(FUNC(nmk16_state::get_flip_extcode_powerins)); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_powerins); + PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 2048); + MCFG_VIDEO_START_OVERRIDE(nmk16_state,powerins) + + // sound hardware + SPEAKER(config, "mono").front_center(); + + GENERIC_LATCH_8(config, m_soundlatch); + + ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(12'000'000) / 8)); + ymsnd.irq_handler().set_inputline(m_audiocpu, 0); + ymsnd.add_route(ALL_OUTPUTS, "mono", 2.0); + + OKIM6295(config, m_oki[0], XTAL(16'000'000) / 4, okim6295_device::PIN7_LOW); // verified on PCB + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.15); + + OKIM6295(config, m_oki[1], XTAL(16'000'000) / 4, okim6295_device::PIN7_LOW); // verified on PCB + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.15); + + nmk112_device &nmk112(NMK112(config, "nmk112", 0)); + nmk112.set_rom0_tag("oki1"); + nmk112.set_rom1_tag("oki2"); +} + +void nmk16_state::powerinsa(machine_config &config) +{ + // basic machine hardware + M68000(config, m_maincpu, XTAL(12'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::powerinsa_map); + + // video hardware + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(14'318'181) / 2, 456, 60, 380, 262, 16, 240); // ~60hz, XTAL verified, correct params? + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); + m_screen->screen_vblank().set(FUNC(nmk16_state::screen_vblank_powerins_bootleg)); + m_screen->set_palette(m_palette); + + NMK_16BIT_SPRITE(config, m_spritegen, XTAL(14'000'000) / 2); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_6bit)); + m_spritegen->set_ext_callback(FUNC(nmk16_state::get_flip_extcode_powerins)); + m_spritegen->set_mask(0x3ff, 0x3ff); + m_spritegen->set_screen_size(60+380, 16+240); + m_spritegen->set_max_sprite_clock(448 * 263); // not verified? + m_spritegen->set_videoshift(60+32); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_powerins); + PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 2048); + MCFG_VIDEO_START_OVERRIDE(nmk16_state,powerins) + + // sound hardware + SPEAKER(config, "mono").front_center(); + + GENERIC_LATCH_8(config, m_soundlatch); + + OKIM6295(config, m_oki[0], 990'000, okim6295_device::PIN7_LOW); // pin7 not verified + m_oki[0]->set_addrmap(0, &nmk16_state::powerinsa_oki_map); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.15); +} + +void nmk16_state::powerinsb(machine_config &config) +{ + // basic machine hardware + M68000(config, m_maincpu, XTAL(12'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::powerins_map); + + Z80(config, m_audiocpu, XTAL(12'000'000) / 2); + m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::powerins_sound_map); + m_audiocpu->set_addrmap(AS_IO, &nmk16_state::powerins_bootleg_audio_io_map); + m_audiocpu->set_periodic_int(FUNC(nmk16_state::irq0_line_hold), attotime::from_hz(120)); // YM2203 rate is at 150?? + + // video hardware + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(14'318'181) / 2, 456, 60, 380, 262, 16, 240); // ~60hz, XTAL verified, correct params? + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); + m_screen->screen_vblank().set(FUNC(nmk16_state::screen_vblank_powerins_bootleg)); + m_screen->set_palette(m_palette); + + NMK_16BIT_SPRITE(config, m_spritegen, XTAL(14'000'000) / 2); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_6bit)); + m_spritegen->set_ext_callback(FUNC(nmk16_state::get_flip_extcode_powerins)); + m_spritegen->set_mask(0x3ff, 0x3ff); + m_spritegen->set_screen_size(60+380, 16+240); + m_spritegen->set_max_sprite_clock(448 * 263); // not verified? + m_spritegen->set_videoshift(60+32); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_powerins); + PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 2048); + MCFG_VIDEO_START_OVERRIDE(nmk16_state,powerins) + + // sound hardware + SPEAKER(config, "mono").front_center(); + + GENERIC_LATCH_8(config, m_soundlatch); + + OKIM6295(config, m_oki[0], XTAL(16'000'000) / 4, okim6295_device::PIN7_LOW); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.15); + + OKIM6295(config, m_oki[1], XTAL(16'000'000) / 4, okim6295_device::PIN7_LOW); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.15); + + nmk112_device &nmk112(NMK112(config, "nmk112", 0)); + nmk112.set_rom0_tag("oki1"); + nmk112.set_rom1_tag("oki2"); + + // Sound code talks to one YM2203, but it's not fitted on the board +} + +void nmk16_state::powerinsc(machine_config &config) +{ + powerinsb(config); + + m_gfxdecode->set_info(gfx_powerinsc); +} + TIMER_DEVICE_CALLBACK_MEMBER(nmk16_state::manybloc_scanline) { int scanline = param; @@ -5116,7 +5658,7 @@ void nmk16_tomagic_state::tomagic(machine_config &config) m_audiocpu->set_addrmap(AS_IO, &nmk16_tomagic_state::tomagic_sound_io_map); // video hardware - set_hacky_screen_hires(config); + set_screen_hires(config); m_spritegen->set_colpri_callback(FUNC(nmk16_tomagic_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_tomagic_state::screen_update_macross)); @@ -5354,6 +5896,11 @@ void nmk16_state::init_twinactn() m_okibank[0]->configure_entries(0, 4, memregion("oki1")->base(), 0x20000); } +void nmk16_state::init_powerinsa() +{ + m_okibank[0]->configure_entries(0, 5, memregion("oki1")->base() + 0x30000, 0x10000); +} + void nmk16_state::init_bjtwin() { // Patch ROM to enable test mode @@ -5589,7 +6136,7 @@ void afega_state::stagger1(machine_config &config) m_audiocpu->set_addrmap(AS_PROGRAM, &afega_state::afega_sound_cpu); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(afega_state::get_colour_4bit)); m_spritegen->set_ext_callback(FUNC(afega_state::get_sprite_flip)); m_screen->set_screen_update(FUNC(afega_state::screen_update_afega)); @@ -5672,7 +6219,7 @@ void afega_state::firehawk(machine_config &config) m_audiocpu->set_addrmap(AS_PROGRAM, &afega_state::firehawk_sound_cpu); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(afega_state::get_colour_4bit)); m_spritegen->set_ext_callback(FUNC(afega_state::get_sprite_flip)); m_screen->set_screen_update(FUNC(afega_state::screen_update_firehawk)); @@ -5712,7 +6259,7 @@ void nmk16_state::twinactn(machine_config &config) m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::ssmissin_sound_map); // video hardware - set_hacky_screen_lowres(config); + set_screen_lowres(config); m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); @@ -5785,9 +6332,11 @@ ROM_START( vandyke ) ROM_REGION( 0x080000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "vdk-03.165", 0x000000, 0x080000, CRC(631776d3) SHA1(ffd76e5b03130252c55eaa6ae7edfee5632dae73) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "ic100.bpr", 0x0000, 0x0100, CRC(98ed1c97) SHA1(f125ad05c3cbd1b1ab356161f9b1d814781d4c3b) ) // V-sync hw (unused) - ROM_LOAD( "ic101.bpr", 0x0100, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // H-sync hw (unused) + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "ic101.bpr", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "ic100.bpr", 0x0000, 0x0100, CRC(98ed1c97) SHA1(f125ad05c3cbd1b1ab356161f9b1d814781d4c3b) ) // 82S135 ROM_END ROM_START( vandykejal ) @@ -5816,9 +6365,11 @@ ROM_START( vandykejal ) ROM_REGION( 0x080000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "vdk-03.165", 0x000000, 0x080000, CRC(631776d3) SHA1(ffd76e5b03130252c55eaa6ae7edfee5632dae73) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "ic100.bpr", 0x0000, 0x0100, CRC(98ed1c97) SHA1(f125ad05c3cbd1b1ab356161f9b1d814781d4c3b) ) // V-sync hw (unused) - ROM_LOAD( "ic101.bpr", 0x0100, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // H-sync hw (unused) + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "ic101.bpr", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "ic100.bpr", 0x0000, 0x0100, CRC(98ed1c97) SHA1(f125ad05c3cbd1b1ab356161f9b1d814781d4c3b) ) // 82S135 ROM_END ROM_START( vandykejal2 ) @@ -5847,9 +6398,11 @@ ROM_START( vandykejal2 ) ROM_REGION( 0x080000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "vdk-03.165", 0x000000, 0x080000, CRC(631776d3) SHA1(ffd76e5b03130252c55eaa6ae7edfee5632dae73) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "ic100.bpr", 0x0000, 0x0100, CRC(98ed1c97) SHA1(f125ad05c3cbd1b1ab356161f9b1d814781d4c3b) ) // V-sync hw (unused) - ROM_LOAD( "ic101.bpr", 0x0100, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // H-sync hw (unused) + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "ic101.bpr", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "ic100.bpr", 0x0000, 0x0100, CRC(98ed1c97) SHA1(f125ad05c3cbd1b1ab356161f9b1d814781d4c3b) ) // 82S135 ROM_END ROM_START( vandykeb ) @@ -5911,13 +6464,17 @@ ROM_START( tharrier ) ROM_REGION(0x80000, "oki2", 0 ) // Oki sample data ROM_LOAD( "89050-10.14j", 0x00000, 0x80000, CRC(893552ab) SHA1(b0a34291f4e482858ed295203ae031b17c2dbabc) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x140, "proms", 0 ) - ROM_LOAD( "21.bpr", 0x00000, 0x100, CRC(fcd5efea) SHA1(cbda6b14127dabd1788cc256743cf62efaa5e8c4) ) - ROM_LOAD( "22.bpr", 0x00000, 0x100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) - ROM_LOAD( "23.bpr", 0x00000, 0x020, CRC(fc3569f4) SHA1(e1c498085e4ae9d0a995c94530544b0a5b760fbf) ) - ROM_LOAD( "24.bpr", 0x00000, 0x100, CRC(e0a009fe) SHA1(a66a27bb405d4ff8e4c0062273ee9b11e76ee520) ) - ROM_LOAD( "25.bpr", 0x00000, 0x100, CRC(e0a009fe) SHA1(a66a27bb405d4ff8e4c0062273ee9b11e76ee520) ) // same as 24.bin - ROM_LOAD( "26.bpr", 0x00120, 0x020, CRC(0cbfb33e) SHA1(5dfee031a0a14bcd667fe2af2fa9cdfac3941d22) ) + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "22.bpr", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "21.bpr", 0x0000, 0x0100, CRC(fcd5efea) SHA1(cbda6b14127dabd1788cc256743cf62efaa5e8c4) ) // 82S135 + + ROM_REGION( 0x0240, "proms", 0 ) + ROM_LOAD( "23.bpr", 0x00000, 0x020, CRC(fc3569f4) SHA1(e1c498085e4ae9d0a995c94530544b0a5b760fbf) ) // ??? + ROM_LOAD( "24.bpr", 0x00020, 0x100, CRC(e0a009fe) SHA1(a66a27bb405d4ff8e4c0062273ee9b11e76ee520) ) // ??? + ROM_LOAD( "25.bpr", 0x00120, 0x100, CRC(e0a009fe) SHA1(a66a27bb405d4ff8e4c0062273ee9b11e76ee520) ) // ???, same as 24.bin + ROM_LOAD( "26.bpr", 0x00220, 0x020, CRC(0cbfb33e) SHA1(5dfee031a0a14bcd667fe2af2fa9cdfac3941d22) ) // ??? ROM_END ROM_START( tharrieru ) @@ -5947,13 +6504,17 @@ ROM_START( tharrieru ) ROM_REGION(0x80000, "oki2", 0 ) // Oki sample data ROM_LOAD( "89050-10.14j", 0x00000, 0x80000, CRC(893552ab) SHA1(b0a34291f4e482858ed295203ae031b17c2dbabc) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x140, "proms", 0 ) - ROM_LOAD( "21.bpr", 0x00000, 0x100, CRC(fcd5efea) SHA1(cbda6b14127dabd1788cc256743cf62efaa5e8c4) ) - ROM_LOAD( "22.bpr", 0x00000, 0x100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) - ROM_LOAD( "23.bpr", 0x00000, 0x020, CRC(fc3569f4) SHA1(e1c498085e4ae9d0a995c94530544b0a5b760fbf) ) - ROM_LOAD( "24.bpr", 0x00000, 0x100, CRC(e0a009fe) SHA1(a66a27bb405d4ff8e4c0062273ee9b11e76ee520) ) - ROM_LOAD( "25.bpr", 0x00000, 0x100, CRC(e0a009fe) SHA1(a66a27bb405d4ff8e4c0062273ee9b11e76ee520) ) // same as 24.bin - ROM_LOAD( "26.bpr", 0x00120, 0x020, CRC(0cbfb33e) SHA1(5dfee031a0a14bcd667fe2af2fa9cdfac3941d22) ) + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "22.bpr", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "21.bpr", 0x0000, 0x0100, CRC(fcd5efea) SHA1(cbda6b14127dabd1788cc256743cf62efaa5e8c4) ) // 82S135 + + ROM_REGION( 0x0240, "proms", 0 ) + ROM_LOAD( "23.bpr", 0x00000, 0x020, CRC(fc3569f4) SHA1(e1c498085e4ae9d0a995c94530544b0a5b760fbf) ) // ??? + ROM_LOAD( "24.bpr", 0x00020, 0x100, CRC(e0a009fe) SHA1(a66a27bb405d4ff8e4c0062273ee9b11e76ee520) ) // ??? + ROM_LOAD( "25.bpr", 0x00120, 0x100, CRC(e0a009fe) SHA1(a66a27bb405d4ff8e4c0062273ee9b11e76ee520) ) // ???, same as 24.bin + ROM_LOAD( "26.bpr", 0x00220, 0x020, CRC(0cbfb33e) SHA1(5dfee031a0a14bcd667fe2af2fa9cdfac3941d22) ) // ??? ROM_END ROM_START( tharrierb ) @@ -6112,9 +6673,11 @@ ROM_START( mustang ) ROM_REGION( 0x080000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "90058-6", 0x00000, 0x80000, CRC(233c1776) SHA1(7010a2f914611698a65bf4f22bc1753a9ed26277) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x200, "proms", 0 ) - ROM_LOAD( "10.bpr", 0x00000, 0x100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // unknown - ROM_LOAD( "90058-11", 0x00100, 0x100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "90058-11", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "10.bpr", 0x0000, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 ROM_END ROM_START( mustangs ) @@ -6141,9 +6704,11 @@ ROM_START( mustangs ) ROM_REGION( 0x080000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "90058-6", 0x00000, 0x80000, CRC(233c1776) SHA1(7010a2f914611698a65bf4f22bc1753a9ed26277) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x200, "proms", 0 ) - ROM_LOAD( "90058-10", 0x00000, 0x100, CRC(de156d99) SHA1(07b70deca74e23bab7c13e5e9aee32d0dbb06509) ) // unknown - ROM_LOAD( "90058-11", 0x00100, 0x100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "90058-11", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "90058-10", 0x0000, 0x0100, CRC(de156d99) SHA1(07b70deca74e23bab7c13e5e9aee32d0dbb06509) ) // 82S135 ROM_END ROM_START( mustangb ) @@ -6331,9 +6896,11 @@ ROM_START( acrobatm ) ROM_REGION( 0x80000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "am-04.ic53", 0x00000, 0x80000, CRC(c1517cd4) SHA1(5a91ddc608c7a6fbdd9f93e503d39eac02ef04a4) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "10.ic81", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129, unknown purpose - ROM_LOAD( "11.ic80", 0x0100, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135, unknown purpose + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "10.ic81", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "11.ic80", 0x0000, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 ROM_END ROM_START( acrobatmbl ) // this bootleg has a PIC performing simple protection checks and Raiden sounds @@ -6441,10 +7008,14 @@ ROM_START( bioship ) ROM_REGION(0x80000, "oki2", 0 ) // Oki sample data ROM_LOAD( "sbs-g_05.ic160", 0x00000, 0x80000, CRC(f0a782e3) SHA1(d572226b8e597f1c34d246cb284e047a6e2d9290) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x0220, "proms", 0 ) - ROM_LOAD( "82s135.ic94", 0x0000, 0x0100, CRC(98ed1c97) SHA1(f125ad05c3cbd1b1ab356161f9b1d814781d4c3b) ) // V-sync hw (unused) - ROM_LOAD( "82s129.ic69", 0x0100, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // H-sync hw (unused) - ROM_LOAD( "82s123.ic154",0x0200, 0x0020, CRC(0f789fc7) SHA1(31936c21720802da20e39b4cb030e448353e7f19) ) // ?? + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "82s129.ic69", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "82s135.ic94", 0x0000, 0x0100, CRC(98ed1c97) SHA1(f125ad05c3cbd1b1ab356161f9b1d814781d4c3b) ) // 82S135 + + ROM_REGION( 0x0020, "color", 0 ) + ROM_LOAD( "82s123.ic154", 0x0000, 0x0020, CRC(0f789fc7) SHA1(31936c21720802da20e39b4cb030e448353e7f19) ) // 82S123 ROM_END ROM_START( sbsgomo ) @@ -6477,10 +7048,14 @@ ROM_START( sbsgomo ) ROM_REGION(0x80000, "oki2", 0 ) // Oki sample data ROM_LOAD( "sbs-g_05.ic160", 0x00000, 0x80000, CRC(f0a782e3) SHA1(d572226b8e597f1c34d246cb284e047a6e2d9290) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x0220, "proms", 0 ) - ROM_LOAD( "82s135.ic94", 0x0000, 0x0100, CRC(98ed1c97) SHA1(f125ad05c3cbd1b1ab356161f9b1d814781d4c3b) ) // V-sync hw (unused) - ROM_LOAD( "82s129.ic69", 0x0100, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // H-sync hw (unused) - ROM_LOAD( "82s123.ic154",0x0200, 0x0020, CRC(0f789fc7) SHA1(31936c21720802da20e39b4cb030e448353e7f19) ) // ?? + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "82s129.ic69", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "82s135.ic94", 0x0000, 0x0100, CRC(98ed1c97) SHA1(f125ad05c3cbd1b1ab356161f9b1d814781d4c3b) ) // 82S135 + + ROM_REGION( 0x0020, "color", 0 ) + ROM_LOAD( "82s123.ic154", 0x0000, 0x0020, CRC(0f789fc7) SHA1(31936c21720802da20e39b4cb030e448353e7f19) ) // 82S123 ROM_END ROM_START( blkheart ) @@ -6506,9 +7081,11 @@ ROM_START( blkheart ) ROM_REGION( 0x080000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "90068-1.bin", 0x00000, 0x80000, CRC(e7af69d2) SHA1(da050880e186954bcf0e0adf00750dd5a371551b) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "9.bpr", 0x0000, 0x0100, CRC(98ed1c97) SHA1(f125ad05c3cbd1b1ab356161f9b1d814781d4c3b) ) // unknown - ROM_LOAD( "10.bpr", 0x0100, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "10.bpr", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "9.bpr", 0x0000, 0x0100, CRC(98ed1c97) SHA1(f125ad05c3cbd1b1ab356161f9b1d814781d4c3b) ) // 82S135 ROM_END ROM_START( blkheartj ) @@ -6534,9 +7111,11 @@ ROM_START( blkheartj ) ROM_REGION( 0x080000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "90068-1.bin", 0x00000, 0x80000, CRC(e7af69d2) SHA1(da050880e186954bcf0e0adf00750dd5a371551b) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "9.bpr", 0x0000, 0x0100, CRC(98ed1c97) SHA1(f125ad05c3cbd1b1ab356161f9b1d814781d4c3b) ) // unknown - ROM_LOAD( "10.bpr", 0x0100, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "10.bpr", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "9.bpr", 0x0000, 0x0100, CRC(98ed1c97) SHA1(f125ad05c3cbd1b1ab356161f9b1d814781d4c3b) ) // 82S135 ROM_END ROM_START( tdragon ) @@ -6562,9 +7141,11 @@ ROM_START( tdragon ) ROM_REGION( 0x080000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "91070.2", 0x00000, 0x80000, CRC(ecfea43e) SHA1(d664dfa6698fec8e602523bdae16068f1ff6547b) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "91070.9", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // unknown - ROM_LOAD( "91070.10", 0x0100, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "91070.9", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "91070.10", 0x0000, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // 82S135 ROM_END ROM_START( tdragon1 ) @@ -6593,9 +7174,11 @@ ROM_START( tdragon1 ) ROM_REGION( 0x080000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "91070.2", 0x00000, 0x80000, CRC(ecfea43e) SHA1(d664dfa6698fec8e602523bdae16068f1ff6547b) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "91070.9", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // unknown - ROM_LOAD( "91070.10", 0x0100, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "91070.9", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "91070.10", 0x0000, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // 82S135 ROM_END ROM_START( tdragonb ) @@ -6696,9 +7279,11 @@ ROM_START( ssmissin ) ROM_LOAD( "ssm13.190", 0x00000, 0x20000, CRC(618f66f0) SHA1(97637a03d9fd82305e872e9bfa489862c974bb6c) ) ROM_LOAD( "ssm12.189", 0x80000, 0x80000, CRC(e8219c83) SHA1(68673d071a58ca2bfd2de344a830417d10bc5757) ) // banked - ROM_REGION( 0x0300, "proms", 0 ) - ROM_LOAD( "ssm-pr2.113", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // unknown - ROM_LOAD( "ssm-pr1.114", 0x0100, 0x0200, CRC(ed0bd072) SHA1(66a6d435d8587c82ae96dd09c39ed5749fe00e24) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "ssm-pr2.113", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0200, "vtiming", 0 ) + ROM_LOAD( "ssm-pr1.114", 0x0000, 0x0200, CRC(ed0bd072) SHA1(66a6d435d8587c82ae96dd09c39ed5749fe00e24) ) // 82S147 - only half space used. A5 tied to GND ROM_END /* @@ -6746,9 +7331,11 @@ ROM_START( airattck ) ROM_LOAD( "2.su12", 0x000000, 0x20000, CRC(93ab615b) SHA1(f670ac60f5f88148e55200e5e3591aa18b81c325) ) ROM_LOAD( "1.su13", 0x080000, 0x80000, CRC(09a836bb) SHA1(43fbd35c2ef3d201a4c82b0d3b7d7b971b385a14) ) - ROM_REGION( 0x0300, "proms", 0 ) - ROM_LOAD( "82s129.ug6", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // unknown - ROM_LOAD( "82s147.uh6", 0x0100, 0x0200, CRC(ed0bd072) SHA1(66a6d435d8587c82ae96dd09c39ed5749fe00e24) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "82s129.ug6", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0200, "vtiming", 0 ) + ROM_LOAD( "82s147.uh6", 0x0000, 0x0200, CRC(ed0bd072) SHA1(66a6d435d8587c82ae96dd09c39ed5749fe00e24) ) // 82S147 - only half space used. A5 tied to GND ROM_END ROM_START( airattcka ) @@ -6774,9 +7361,11 @@ ROM_START( airattcka ) ROM_LOAD( "2.su12", 0x000000, 0x20000, CRC(93ab615b) SHA1(f670ac60f5f88148e55200e5e3591aa18b81c325) ) ROM_LOAD( "1.su13", 0x080000, 0x80000, CRC(09a836bb) SHA1(43fbd35c2ef3d201a4c82b0d3b7d7b971b385a14) ) - ROM_REGION( 0x0300, "proms", 0 ) - ROM_LOAD( "82s129.ug6", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // unknown - ROM_LOAD( "82s147.uh6", 0x0100, 0x0200, CRC(ed0bd072) SHA1(66a6d435d8587c82ae96dd09c39ed5749fe00e24) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "82s129.ug6", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0200, "vtiming", 0 ) + ROM_LOAD( "82s147.uh6", 0x0000, 0x0200, CRC(ed0bd072) SHA1(66a6d435d8587c82ae96dd09c39ed5749fe00e24) ) // 82S147 - only half space used. A5 tied to GND ROM_END ROM_START( strahl ) @@ -6948,6 +7537,12 @@ ROM_START( hachamf ) ROM_REGION( 0x080000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "91076-3.45", 0x00000, 0x80000, CRC(b25ed93b) SHA1(d7bc686bbccf982f40420a11158aa8e5dd4207c5) ) // 1st & 2nd half identical, needs verifying // 0x20000 - 0x80000 banked + + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "82s129.ic51", 0x0000, 0x0100, BAD_DUMP CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 - Used the dump from hachamfp + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "82s135.ic50", 0x0000, 0x0100, BAD_DUMP CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 - Used the dump from hachamfp ROM_END ROM_START( hachamfa) // reportedly a Korean PCB / version @@ -6978,6 +7573,12 @@ ROM_START( hachamfa) // reportedly a Korean PCB / version ROM_REGION( 0x080000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "91076-3.45", 0x00000, 0x80000, CRC(b25ed93b) SHA1(d7bc686bbccf982f40420a11158aa8e5dd4207c5) ) // 1st & 2nd half identical, needs verifying // 0x20000 - 0x80000 banked + + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "82s129.ic51", 0x0000, 0x0100, BAD_DUMP CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 - Used the dump from hachamfp + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "82s135.ic50", 0x0000, 0x0100, BAD_DUMP CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 - Used the dump from hachamfp ROM_END ROM_START( hachamfb ) // Thunder Dragon conversion - unprotected prototype or bootleg? @@ -7004,6 +7605,12 @@ ROM_START( hachamfb ) // Thunder Dragon conversion - unprotected prototype or bo ROM_REGION( 0x080000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "91076-3.45", 0x00000, 0x80000, CRC(b25ed93b) SHA1(d7bc686bbccf982f40420a11158aa8e5dd4207c5) ) // 1st & 2nd half identical, needs verifying // 0x20000 - 0x80000 banked + + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "82s129.ic51", 0x0000, 0x0100, BAD_DUMP CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 - Used the dump from hachamfp + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "82s135.ic50", 0x0000, 0x0100, BAD_DUMP CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 - Used the dump from hachamfp ROM_END ROM_START( hachamfp ) // Protoype Location Test Release; Hand-written labels with various dates. 68K program ROM has 19th Sep. 1991 string. @@ -7031,9 +7638,11 @@ ROM_START( hachamfp ) // Protoype Location Test Release; Hand-written labels wit ROM_REGION( 0x080000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "kf-a1.ic1", 0x00000, 0x80000, CRC(d945aabb) SHA1(3c73bc47b79a8498f68a4b25d9c0f3d21eb0a432) ) // Label says "KF ??? A1"; corner is ripped off containing date - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "82s135.ic50", 0x0000, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // On main board near NMK 902 - ROM_LOAD( "82s129.ic51", 0x0100, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // On main board near NMK 902 + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "82s129.ic51", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "82s135.ic50", 0x0000, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 ROM_END ROM_START( macross ) @@ -7062,10 +7671,14 @@ ROM_START( macross ) ROM_REGION( 0x80000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "921a06", 0x00000, 0x80000, CRC(89461d0f) SHA1(b7d27d0ee0b7ab44c20ab710b567f64fc3afb90c) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x0220, "proms", 0 ) - ROM_LOAD( "921a08", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // unknown - ROM_LOAD( "921a09", 0x0100, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // unknown - ROM_LOAD( "921a10", 0x0200, 0x0020, CRC(8371e42d) SHA1(6cfd70dfa00e85ec1df8832d41df331cc3e3733a) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "921a08", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "921a09", 0x0000, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 + + ROM_REGION( 0x0020, "color", 0 ) + ROM_LOAD( "921a10", 0x0000, 0x0020, CRC(8371e42d) SHA1(6cfd70dfa00e85ec1df8832d41df331cc3e3733a) ) // 82S123 ROM_END @@ -7163,10 +7776,15 @@ ROM_START( gunnail ) ROM_REGION( 0x080000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "92077-6.u57", 0x00000, 0x80000, CRC(6d133f0d) SHA1(8a5e6e27a297196f20e4de0d060f1188115809bb) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x0220, "proms", 0 ) - ROM_LOAD( "8_82s129.u35", 0x0000, 0x0100, CRC(4299776e) SHA1(683d14d2ace14965f0fcfe0f0540c1b77d2cece5) ) // unknown - ROM_LOAD( "9_82s135.u72", 0x0100, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // unknown - ROM_LOAD( "10_82s123.u96", 0x0200, 0x0020, CRC(c60103c8) SHA1(dfb05b704bb5e1f75f5aaa4fa36e8ddcc905f8b6) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "8_82s129.u35", 0x0000, 0x0100, CRC(4299776e) SHA1(683d14d2ace14965f0fcfe0f0540c1b77d2cece5) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "9_82s135.u72", 0x0000, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 + + ROM_REGION( 0x0020, "color", 0 ) + ROM_LOAD( "10_82s123.u96", 0x0000, 0x0020, CRC(c60103c8) SHA1(dfb05b704bb5e1f75f5aaa4fa36e8ddcc905f8b6) ) // 82S123 + ROM_END ROM_START( gunnailp ) @@ -7195,10 +7813,14 @@ ROM_START( gunnailp ) ROM_REGION( 0x080000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "92077-6.u57", 0x00000, 0x80000, CRC(6d133f0d) SHA1(8a5e6e27a297196f20e4de0d060f1188115809bb) ) // 0x20000 - 0x80000 banked - ROM_REGION( 0x0220, "proms", 0 ) - ROM_LOAD( "8_82s129.u35", 0x0000, 0x0100, CRC(4299776e) SHA1(683d14d2ace14965f0fcfe0f0540c1b77d2cece5) ) // unknown - ROM_LOAD( "9_82s135.u72", 0x0100, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // unknown - ROM_LOAD( "10_82s123.u96", 0x0200, 0x0020, CRC(c60103c8) SHA1(dfb05b704bb5e1f75f5aaa4fa36e8ddcc905f8b6) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "8_82s129.u35", 0x0000, 0x0100, CRC(4299776e) SHA1(683d14d2ace14965f0fcfe0f0540c1b77d2cece5) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "9_82s135.u72", 0x0000, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 + + ROM_REGION( 0x0020, "color", 0 ) + ROM_LOAD( "10_82s123.u96", 0x0000, 0x0020, CRC(c60103c8) SHA1(dfb05b704bb5e1f75f5aaa4fa36e8ddcc905f8b6) ) // 82S123 ROM_END // bootleg board labeled 'GT ELEKTRONIK 16.04.93' with only 1 OKI and no NMK custom chips. Only sprites and bgtile ROMs are identical to the original. @@ -7246,9 +7868,11 @@ ROM_START( macross2 ) // Title screen shows Kanji characters & Macross II ROM_REGION( 0x140000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "bp932an.a05", 0x040000, 0x100000, CRC(b5335abb) SHA1(f4eaf4e465eeca31741d432ee46ed39ffcd92cca) ) // all banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "mcrs2bpr.9", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // unknown - ROM_LOAD( "mcrs2bpr.10", 0x0100, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "mcrs2bpr.9", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "mcrs2bpr.10", 0x0000, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // 82S135 ROM_END ROM_START( macross2k ) // Title screen only shows Macross II, no Kanji. Suspected Korean version - Language dip still used for Stage info screens @@ -7274,9 +7898,11 @@ ROM_START( macross2k ) // Title screen only shows Macross II, no Kanji. Suspect ROM_REGION( 0x140000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "bp932an.a05", 0x040000, 0x100000, CRC(b5335abb) SHA1(f4eaf4e465eeca31741d432ee46ed39ffcd92cca) ) // all banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "mcrs2bpr.9", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // unknown - ROM_LOAD( "mcrs2bpr.10", 0x0100, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "mcrs2bpr.9", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "mcrs2bpr.10", 0x0000, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // 82S135 ROM_END ROM_START( macross2g ) @@ -7302,9 +7928,11 @@ ROM_START( macross2g ) ROM_REGION( 0x140000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "bp932an.a05", 0x040000, 0x100000, CRC(b5335abb) SHA1(f4eaf4e465eeca31741d432ee46ed39ffcd92cca) ) // all banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "mcrs2bpr.9", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // unknown - ROM_LOAD( "mcrs2bpr.10", 0x0100, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "mcrs2bpr.9", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "mcrs2bpr.10", 0x0000, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // 82S135 ROM_END ROM_START( tdragon2 ) @@ -7330,9 +7958,11 @@ ROM_START( tdragon2 ) ROM_REGION( 0x240000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "ww930915.3", 0x040000, 0x200000, CRC(82025bab) SHA1(ac6053700326ea730d00ec08193e2c8a2a019f0b) ) // all banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "9.bpr", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // unknown - ROM_LOAD( "10.bpr", 0x0100, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "9.bpr", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "10.bpr", 0x0000, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // 82S135 ROM_END ROM_START( tdragon3h ) @@ -7361,9 +7991,11 @@ ROM_START( tdragon3h ) ROM_LOAD( "conny.6", 0x040000, 0x100000, CRC(564f87ed) SHA1(010dd001fda28d9c15ca09a0d12cac438a46cd54) ) // all banked ROM_LOAD( "conny.7", 0x140000, 0x100000, CRC(2e767f6f) SHA1(34e3f747716eb7a585340791c2cfbfde57681d69) ) - ROM_REGION( 0x0200, "proms", 0 ) // not dumped for this set - ROM_LOAD( "9.bpr", 0x0000, 0x0100, BAD_DUMP CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // unknown - ROM_LOAD( "10.bpr", 0x0100, 0x0100, BAD_DUMP CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) // not dumped for this set + ROM_LOAD( "9.bpr", 0x0000, 0x0100, BAD_DUMP CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) // not dumped for this set + ROM_LOAD( "10.bpr", 0x0000, 0x0100, BAD_DUMP CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // 82S135 ROM_END ROM_START( tdragon2a ) @@ -7389,9 +8021,11 @@ ROM_START( tdragon2a ) ROM_REGION( 0x240000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "ww930915.3", 0x040000, 0x200000, CRC(82025bab) SHA1(ac6053700326ea730d00ec08193e2c8a2a019f0b) ) // all banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "9.bpr", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // unknown - ROM_LOAD( "10.bpr", 0x0100, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "9.bpr", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "10.bpr", 0x0000, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // 82S135 ROM_END ROM_START( bigbang ) @@ -7417,9 +8051,11 @@ ROM_START( bigbang ) ROM_REGION( 0x240000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "ww930915.3", 0x040000, 0x200000, CRC(82025bab) SHA1(ac6053700326ea730d00ec08193e2c8a2a019f0b) ) // all banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "9.bpr", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // unknown - ROM_LOAD( "10.bpr", 0x0100, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "9.bpr", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "10.bpr", 0x0000, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // 82S135 ROM_END ROM_START( bigbanga ) @@ -7445,9 +8081,11 @@ ROM_START( bigbanga ) ROM_REGION( 0x240000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "ww930915.3", 0x040000, 0x200000, CRC(82025bab) SHA1(ac6053700326ea730d00ec08193e2c8a2a019f0b) ) // all banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "9.bpr", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // unknown - ROM_LOAD( "10.bpr", 0x0100, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "9.bpr", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "10.bpr", 0x0000, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // 82S135 ROM_END /* @@ -7542,6 +8180,15 @@ ROM_START( arcadian ) ROM_LOAD( "prom1.u19", 0x0000, 0x0100, CRC(4299776e) SHA1(683d14d2ace14965f0fcfe0f0540c1b77d2cece5) ) // unknown ROM_LOAD( "prom2.u53", 0x0100, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // unknown ROM_LOAD( "prom3.u60", 0x0200, 0x0100, CRC(304f98c6) SHA1(8dfd9bf719087ec30c83efe95c4561666c7d1801) ) // unknown + + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "prom1.u19", 0x0000, 0x0100, CRC(4299776e) SHA1(683d14d2ace14965f0fcfe0f0540c1b77d2cece5) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "prom2.u53", 0x0000, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // 82S135 + + ROM_REGION( 0x0100, "color", 0 ) + ROM_LOAD( "prom3.u60", 0x0000, 0x0100, CRC(304f98c6) SHA1(8dfd9bf719087ec30c83efe95c4561666c7d1801) ) // 82S135 ROM_END ROM_START( raphero ) @@ -7570,10 +8217,14 @@ ROM_START( raphero ) ROM_LOAD( "rhp94099.5", 0x040000, 0x200000, CRC(515eba93) SHA1(c35cb5f31f4bc7327be5777624af168f9fb364a5) ) // all banked ROM_LOAD( "rhp94099.6", 0x240000, 0x200000, CRC(f1a80e5a) SHA1(218bd7b0c3d8b283bf96b95bf888228810699370) ) // all banked - ROM_REGION( 0x0300, "proms", 0 ) - ROM_LOAD( "prom1.u19", 0x0000, 0x0100, CRC(4299776e) SHA1(683d14d2ace14965f0fcfe0f0540c1b77d2cece5) ) // unknown - ROM_LOAD( "prom2.u53", 0x0100, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // unknown - ROM_LOAD( "prom3.u60", 0x0200, 0x0100, CRC(304f98c6) SHA1(8dfd9bf719087ec30c83efe95c4561666c7d1801) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "prom1.u19", 0x0000, 0x0100, CRC(4299776e) SHA1(683d14d2ace14965f0fcfe0f0540c1b77d2cece5) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "prom2.u53", 0x0000, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // 82S135 + + ROM_REGION( 0x0100, "color", 0 ) + ROM_LOAD( "prom3.u60", 0x0000, 0x0100, CRC(304f98c6) SHA1(8dfd9bf719087ec30c83efe95c4561666c7d1801) ) // 82S135 ROM_END ROM_START( rapheroa ) @@ -7602,10 +8253,14 @@ ROM_START( rapheroa ) ROM_LOAD( "rhp94099.5", 0x040000, 0x200000, CRC(515eba93) SHA1(c35cb5f31f4bc7327be5777624af168f9fb364a5) ) // all banked ROM_LOAD( "rhp94099.6", 0x240000, 0x200000, CRC(f1a80e5a) SHA1(218bd7b0c3d8b283bf96b95bf888228810699370) ) // all banked - ROM_REGION( 0x0300, "proms", 0 ) - ROM_LOAD( "prom1.u19", 0x0000, 0x0100, CRC(4299776e) SHA1(683d14d2ace14965f0fcfe0f0540c1b77d2cece5) ) // unknown - ROM_LOAD( "prom2.u53", 0x0100, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // unknown - ROM_LOAD( "prom3.u60", 0x0200, 0x0100, CRC(304f98c6) SHA1(8dfd9bf719087ec30c83efe95c4561666c7d1801) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "prom1.u19", 0x0000, 0x0100, CRC(4299776e) SHA1(683d14d2ace14965f0fcfe0f0540c1b77d2cece5) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "prom2.u53", 0x0000, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) // 82S135 + + ROM_REGION( 0x0100, "color", 0 ) + ROM_LOAD( "prom3.u60", 0x0000, 0x0100, CRC(304f98c6) SHA1(8dfd9bf719087ec30c83efe95c4561666c7d1801) ) // 82S135 ROM_END ROM_START( sabotenb ) @@ -7632,9 +8287,12 @@ ROM_START( sabotenb ) ROM_REGION( 0x140000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "ic27.sb7", 0x040000, 0x100000, CRC(43e33a7e) SHA1(51068b63f4415712eaa25dcf1ee6b0cc2850974e) ) // all banked - ROM_REGION( 0x0200, "proms", 0 ) + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "9.ic51", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) ROM_LOAD( "8.ic37", 0x0000, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 - ROM_LOAD( "9.ic51", 0x0100, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 + ROM_END ROM_START( sabotenba ) @@ -7661,9 +8319,11 @@ ROM_START( sabotenba ) ROM_REGION( 0x140000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "ic27.sb7", 0x040000, 0x100000, CRC(43e33a7e) SHA1(51068b63f4415712eaa25dcf1ee6b0cc2850974e) ) // all banked - ROM_REGION( 0x0200, "proms", 0 ) + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "9.ic51", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) ROM_LOAD( "8.ic37", 0x0000, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 - ROM_LOAD( "9.ic51", 0x0100, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 ROM_END ROM_START( cactus ) @@ -7713,9 +8373,11 @@ ROM_START( bjtwin ) ROM_REGION( 0x140000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "93087-7.bin", 0x040000, 0x100000, CRC(8da67808) SHA1(f042574c097f5a8c2684fcc23f2c817c168254ef) ) // all banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "8.bpr", 0x0000, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // unknown - ROM_LOAD( "9.bpr", 0x0100, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "9.ic51", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "8.ic37", 0x0000, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 ROM_END ROM_START( bjtwina ) @@ -7742,9 +8404,11 @@ ROM_START( bjtwina ) ROM_REGION( 0x140000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "93087-7.bin", 0x040000, 0x100000, CRC(8da67808) SHA1(f042574c097f5a8c2684fcc23f2c817c168254ef) ) // all banked - ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "8.bpr", 0x0000, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // unknown - ROM_LOAD( "9.bpr", 0x0100, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // unknown + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "9.ic51", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "8.ic37", 0x0000, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 ROM_END @@ -7772,6 +8436,12 @@ ROM_START( bjtwinp ) ROM_REGION( 0x140000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "top.ic27", 0x040000, 0x80000, CRC(adb2f256) SHA1(ab7bb6683799203d0f46705f2fd241c6de914e77) ) // all banked ROM_LOAD( "bottom.ic27", 0x0c0000, 0x80000, CRC(6ebeb9e4) SHA1(b547b2fbcc0a35d6183dd4f19684b04839690a2b) ) + + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "9.ic51", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "8.ic37", 0x0000, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 ROM_END @@ -7803,6 +8473,12 @@ ROM_START( bjtwinpa ) ROM_REGION( 0x140000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "top.ic27", 0x040000, 0x80000, CRC(adb2f256) SHA1(ab7bb6683799203d0f46705f2fd241c6de914e77) ) // all banked ROM_LOAD( "bottom.ic27", 0x0c0000, 0x80000, CRC(6ebeb9e4) SHA1(b547b2fbcc0a35d6183dd4f19684b04839690a2b) ) + + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "9.ic51", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "8.ic37", 0x0000, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 ROM_END ROM_START( nouryoku ) @@ -7828,6 +8504,12 @@ ROM_START( nouryoku ) ROM_REGION( 0x140000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD( "ic27.7", 0x040000, 0x100000, CRC(8a69fded) SHA1(ee73f1789bcc672232606a4b3b28087fea1c5c69) ) // all banked + + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "9.ic51", 0x0000, 0x0100, BAD_DUMP CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 - taken from bjtwin + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "8.ic37", 0x0000, 0x0100, BAD_DUMP CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 - taken from bjtwin ROM_END ROM_START( nouryokup ) @@ -7858,6 +8540,476 @@ ROM_START( nouryokup ) ROM_REGION( 0x140000, "oki2", 0 ) // OKIM6295 samples ROM_LOAD("soundpcm2.top.ic27", 0x040000, 0x080000, CRC(29d0a15d) SHA1(a235eec225dd5006dd1f4e21d78fd647335f45dc) ) ROM_LOAD("soundpcm3.bottom.ic27", 0x0c0000, 0x080000, CRC(c764e749) SHA1(8399d3b6807bd263eee607c5625618d19688b394) ) + + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "9.ic51", 0x0000, 0x0100, BAD_DUMP CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) // 82S129 - taken from bjtwin + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "8.ic37", 0x0000, 0x0100, BAD_DUMP CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) ) // 82S135 - taken from bjtwin +ROM_END + +/* + +Gouketsuji Ichizoku (Power Instinct Japan) +Atlus, 1993 + +PCB Layout +---------- + +OS93095 (C) ATLUS 1993 MADE IN JAPAN +|---------------------------------------------------------------| +|LA4460 VOL YM2203 Z80 93095-2 12MHz AAA64K1P-35(x8) | +|4558 YM3014 M6295 6264 | +| 93095-11 |------| CXK58258BP-35L(x8)| +| M6295 93095-10 |NMK112| | +| 93095-9 | | | +| 16MHz 93095-8 |------| |------||------| | +| DSW1 DSW2 |------| 22 |NMK009||NMK009| | +|J |NMK005| | || | | +|A | | |------||------| | +|M |------| |------| | +|M 6116 |NMK008| 93095-19 | +|A |------|6116 6116 | | | +| |NMK111|6116 |------| 93095-18 | +| | | |------| | +| |------| |NMK901| 62256 93095-4 93095-17 | +| 6264 | | 62256 93095-3J | +| 6264 93095-7 |------| |------------| 93095-16 | +||------| 20 | 68000 | | +||NMK111| 93095-6 |---| |---| |------------| 93095-15 | +|| | |NMK| |NMK| | +||------| 93095-5 |903| |903| 93095-14 | +||------| |---| |---||---| 21 | +||NMK111| 93095-1 |NMK| 93095-13 | +|| | 6116 |902| 14MHz | +||------| 6116 |---| 93095-12 | +|---------------------------------------------------------------| +Notes: + 68000 clock - 12.000MHz + Z80 clock - 6.000MHz [12/2] + 6295 clocks - 4.000MHz [16/4], sample rate = 4000000 / 165 + YM2203 clock- 1.500MHz [12/8] + VSync - 56Hz + HSync - 15.35kHz + + ROMs - + -1, -2 : 27C1001 EPROM + -3, -4 : 27C4096 EPROM + -5, -6 : 8M 42 pin mask ROM (578200) + -7 : 4M 40 pin mask ROM (574200) + -8 to -19: 8M 42 pin mask ROM (578200) + 20 : 82S129 PROM + 21 : 82S135 PROM + 22 : 82S123 PROM + +*/ + +ROM_START( powerins ) + ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code + ROM_LOAD16_WORD_SWAP( "93095-3a.u108", 0x00000, 0x80000, CRC(9825ea3d) SHA1(567fd8e3d866a58a68608ea20c5d3fc16cf9f444) ) + ROM_LOAD16_WORD_SWAP( "93095-4.u109", 0x80000, 0x80000, CRC(d3d7a782) SHA1(7846de0ebb09bd9b2534cd451ff9aa5175e60647) ) + + ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code + ROM_LOAD( "93095-2.u90", 0x00000, 0x20000, CRC(4b123cc6) SHA1(ed61d3a2ab20c86b91fd7bafa717be3ce26159be) ) + + ROM_REGION( 0x280000, "bgtile", 0 ) + ROM_LOAD( "93095-5.u16", 0x000000, 0x100000, CRC(b1371808) SHA1(15fca313314ff2e0caff35841a2fdda97f6235a8) ) + ROM_LOAD( "93095-6.u17", 0x100000, 0x100000, CRC(29c85d80) SHA1(abd54f9c8bade21ea918a426627199da04193165) ) + ROM_LOAD( "93095-7.u18", 0x200000, 0x080000, CRC(2dd76149) SHA1(975e4d371fdfbbd9a568da4d4c91ffd3f0ae636e) ) + + ROM_REGION( 0x100000, "fgtile", 0 ) + ROM_LOAD( "93095-1.u15", 0x000000, 0x020000, CRC(6a579ee0) SHA1(438e87b930e068e0cf7352e614a14049ebde6b8a) ) + + ROM_REGION( 0x800000, "sprites", 0 ) + ROM_LOAD16_WORD_SWAP( "93095-12.u116", 0x000000, 0x100000, CRC(35f3c2a3) SHA1(70efebfe248401ba3d766dc0e4bcc2846cd0d9a0) ) + ROM_LOAD16_WORD_SWAP( "93095-13.u117", 0x100000, 0x100000, CRC(1ebd45da) SHA1(99b0ac734890673064b2a4b4b57ff2694e338dea) ) + ROM_LOAD16_WORD_SWAP( "93095-14.u118", 0x200000, 0x100000, CRC(760d871b) SHA1(4887122ad0518c90f08c11a7a6b694f3fd218498) ) + ROM_LOAD16_WORD_SWAP( "93095-15.u119", 0x300000, 0x100000, CRC(d011be88) SHA1(837409a2584abdf22e022b0f06181a600a974cbe) ) + ROM_LOAD16_WORD_SWAP( "93095-16.u120", 0x400000, 0x100000, CRC(a9c16c9c) SHA1(a34e81324c875c2a57f778d1dbdda8da81850a29) ) + ROM_LOAD16_WORD_SWAP( "93095-17.u121", 0x500000, 0x100000, CRC(51b57288) SHA1(821473d51565bc0a8b9a979723ce1307b97e517e) ) + ROM_LOAD16_WORD_SWAP( "93095-18.u122", 0x600000, 0x100000, CRC(b135e3f2) SHA1(339fb4007ca0f379b7554a1c4f711f494a371fb2) ) + ROM_LOAD16_WORD_SWAP( "93095-19.u123", 0x700000, 0x100000, CRC(67695537) SHA1(4c78ce3e36f27d2a6a9e50e8bf896335d4d0958a) ) + + ROM_REGION( 0x240000, "oki1", 0 ) // 8 bit ADPCM (banked) + ROM_LOAD( "93095-10.u48", 0x040000, 0x100000, CRC(329ac6c5) SHA1(e809b94e2623141f5a48995cfa97fe1ead7ab40b) ) + ROM_LOAD( "93095-11.u49", 0x140000, 0x100000, CRC(75d6097c) SHA1(3c89a7c9b12087e2d969b822419d3e5f98f5cb1d) ) + + ROM_REGION( 0x240000, "oki2", 0 ) // 8 bit ADPCM (banked) + ROM_LOAD( "93095-8.u46", 0x040000, 0x100000, CRC(f019bedb) SHA1(4b6e10f85671c75b666e547887d403d6e607cec8) ) + ROM_LOAD( "93095-9.u47", 0x140000, 0x100000, CRC(adc83765) SHA1(9e760443f9de21c1bb7e33eaa1541023fcdc60ab) ) + + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "20.u54", 0x0000, 0x0100, CRC(38bd0e2f) SHA1(20d311869642cd96bb831fdf4a458e0d872f03eb) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "21.u71", 0x0000, 0x0100, CRC(182cd81f) SHA1(3a76bea81b34ea7ccf56044206721058aa5b03e6) ) // 82S135 + + ROM_REGION( 0x0020, "color", 0 ) + ROM_LOAD( "22.u81", 0x0000, 0x0020, CRC(67d5ec4b) SHA1(87d32948a0c88277dcdd0eaa035bde40fc7db5fe) ) // 82S123 +ROM_END + +ROM_START( powerinsj ) + ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code + ROM_LOAD16_WORD_SWAP( "93095-3j.u108", 0x00000, 0x80000, CRC(3050a3fb) SHA1(e7e729bf62266e2e78ccd84cf937abb99de18ad5) ) + ROM_LOAD16_WORD_SWAP( "93095-4.u109", 0x80000, 0x80000, CRC(d3d7a782) SHA1(7846de0ebb09bd9b2534cd451ff9aa5175e60647) ) + + ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code + ROM_LOAD( "93095-2.u90", 0x00000, 0x20000, CRC(4b123cc6) SHA1(ed61d3a2ab20c86b91fd7bafa717be3ce26159be) ) + + ROM_REGION( 0x280000, "bgtile", 0 ) + ROM_LOAD( "93095-5.u16", 0x000000, 0x100000, CRC(b1371808) SHA1(15fca313314ff2e0caff35841a2fdda97f6235a8) ) + ROM_LOAD( "93095-6.u17", 0x100000, 0x100000, CRC(29c85d80) SHA1(abd54f9c8bade21ea918a426627199da04193165) ) + ROM_LOAD( "93095-7.u18", 0x200000, 0x080000, CRC(2dd76149) SHA1(975e4d371fdfbbd9a568da4d4c91ffd3f0ae636e) ) + + ROM_REGION( 0x100000, "fgtile", 0 ) + ROM_LOAD( "93095-1.u15", 0x000000, 0x020000, CRC(6a579ee0) SHA1(438e87b930e068e0cf7352e614a14049ebde6b8a) ) + + ROM_REGION( 0x800000, "sprites", 0 ) + ROM_LOAD16_WORD_SWAP( "93095-12.u116", 0x000000, 0x100000, CRC(35f3c2a3) SHA1(70efebfe248401ba3d766dc0e4bcc2846cd0d9a0) ) + ROM_LOAD16_WORD_SWAP( "93095-13.u117", 0x100000, 0x100000, CRC(1ebd45da) SHA1(99b0ac734890673064b2a4b4b57ff2694e338dea) ) + ROM_LOAD16_WORD_SWAP( "93095-14.u118", 0x200000, 0x100000, CRC(760d871b) SHA1(4887122ad0518c90f08c11a7a6b694f3fd218498) ) + ROM_LOAD16_WORD_SWAP( "93095-15.u119", 0x300000, 0x100000, CRC(d011be88) SHA1(837409a2584abdf22e022b0f06181a600a974cbe) ) + ROM_LOAD16_WORD_SWAP( "93095-16.u120", 0x400000, 0x100000, CRC(a9c16c9c) SHA1(a34e81324c875c2a57f778d1dbdda8da81850a29) ) + ROM_LOAD16_WORD_SWAP( "93095-17.u121", 0x500000, 0x100000, CRC(51b57288) SHA1(821473d51565bc0a8b9a979723ce1307b97e517e) ) + ROM_LOAD16_WORD_SWAP( "93095-18.u122", 0x600000, 0x100000, CRC(b135e3f2) SHA1(339fb4007ca0f379b7554a1c4f711f494a371fb2) ) + ROM_LOAD16_WORD_SWAP( "93095-19.u123", 0x700000, 0x100000, CRC(67695537) SHA1(4c78ce3e36f27d2a6a9e50e8bf896335d4d0958a) ) + + ROM_REGION( 0x240000, "oki1", 0 ) // 8 bit ADPCM (banked) + ROM_LOAD( "93095-10.u48", 0x040000, 0x100000, CRC(329ac6c5) SHA1(e809b94e2623141f5a48995cfa97fe1ead7ab40b) ) + ROM_LOAD( "93095-11.u49", 0x140000, 0x100000, CRC(75d6097c) SHA1(3c89a7c9b12087e2d969b822419d3e5f98f5cb1d) ) + + ROM_REGION( 0x240000, "oki2", 0 ) // 8 bit ADPCM (banked) + ROM_LOAD( "93095-8.u46", 0x040000, 0x100000, CRC(f019bedb) SHA1(4b6e10f85671c75b666e547887d403d6e607cec8) ) + ROM_LOAD( "93095-9.u47", 0x140000, 0x100000, CRC(adc83765) SHA1(9e760443f9de21c1bb7e33eaa1541023fcdc60ab) ) + + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "20.u54", 0x0000, 0x0100, CRC(38bd0e2f) SHA1(20d311869642cd96bb831fdf4a458e0d872f03eb) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "21.u71", 0x0000, 0x0100, CRC(182cd81f) SHA1(3a76bea81b34ea7ccf56044206721058aa5b03e6) ) // 82S135 + + ROM_REGION( 0x0020, "color", 0 ) + ROM_LOAD( "22.u81", 0x0000, 0x0020, CRC(67d5ec4b) SHA1(87d32948a0c88277dcdd0eaa035bde40fc7db5fe) ) // 82S123 +ROM_END + +ROM_START( powerinspu ) + ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code + ROM_LOAD16_WORD_SWAP( "3.p000.v4.0a.u116.27c240", 0x000000, 0x80000, CRC(d1dd5a3f) SHA1(b2a52a2bbdf63eddc04bae2b4322d6d320f35e89) ) + ROM_LOAD16_WORD_SWAP( "4.p000.v3.8.u117.27c4096", 0x080000, 0x80000, CRC(9c0f23cf) SHA1(9ac78939a743c340aa51ff1b05817866124acd34) ) + + ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code + ROM_LOAD( "2.sound 9.20.u74.27c1001", 0x000000, 0x20000, CRC(4b123cc6) SHA1(ed61d3a2ab20c86b91fd7bafa717be3ce26159be) ) + + ROM_REGION( 0x280000, "bgtile", 0 ) + ROM_LOAD( "ba0.s0.27c040", 0x000000, 0x80000, CRC(1975b4b8) SHA1(cb400967744fa602df1bd2d88950dfdbdc77073f) ) // located on OS93089 SUB daughterboard + ROM_LOAD( "ba1.s1.27c040", 0x080000, 0x80000, CRC(376e4919) SHA1(12baa17382c176838df1b5ef86f1fa6dbcb978dd) ) + ROM_LOAD( "ba2.s2.27c040", 0x100000, 0x80000, CRC(0d5ff532) SHA1(4febdb9cdacd85903a4a28e8df945dee0ce85558) ) + ROM_LOAD( "ba3.s3.27c040", 0x180000, 0x80000, CRC(99b25791) SHA1(82f4bb5780826773d2e5f7143afb3ba209f57652) ) + ROM_LOAD( "ba4.s4.27c040", 0x200000, 0x80000, CRC(2dd76149) SHA1(975e4d371fdfbbd9a568da4d4c91ffd3f0ae636e) ) + + ROM_REGION( 0x100000, "fgtile", 0 ) + ROM_LOAD( "1.text 1080.u16.27c010", 0x000000, 0x20000, CRC(6a579ee0) SHA1(438e87b930e068e0cf7352e614a14049ebde6b8a) ) + + ROM_REGION( 0x800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "fo0.mo0.27c040", 0x000001, 0x80000, CRC(8b9b89c9) SHA1(f1d39d1a62e40a14642d8f22fc38b764465a8daa) ) // located on OS93089 SUB daughterboard + ROM_LOAD16_BYTE( "fe0.me0.27c040", 0x000000, 0x80000, CRC(4d127bdf) SHA1(26a7c277e7660a7c7c0c11cacadf815d2487ba8a) ) + ROM_LOAD16_BYTE( "fo1.mo1.27c040", 0x100001, 0x80000, CRC(298eb50e) SHA1(2b922c1473bb559a1e8bd6221619141658179bb9) ) + ROM_LOAD16_BYTE( "fe1.me1.27c040", 0x100000, 0x80000, CRC(57e6d283) SHA1(4701576c8663ba47f388a02e61ef078a9dbbd212) ) + ROM_LOAD16_BYTE( "fo2.mo2.27c040", 0x200001, 0x80000, CRC(fb184167) SHA1(20924d3f35509f2f6af61f565b852ea72326d02c) ) + ROM_LOAD16_BYTE( "fe2.me2.27c040", 0x200000, 0x80000, CRC(1b752a4d) SHA1(1b13f28af208542bee9da298d6e9db676cbc0845) ) + ROM_LOAD16_BYTE( "fo3.mo3.27c040", 0x300001, 0x80000, CRC(2f26ba7b) SHA1(026f960fa4de09ed940dd83a3db467c3676c5024) ) + ROM_LOAD16_BYTE( "fe3.me3.27c040", 0x300000, 0x80000, CRC(0263d89b) SHA1(526b8ed05dffcbe98a44372bd55ad7b0ba91fc0f) ) + ROM_LOAD16_BYTE( "fo4.mo4.27c040", 0x400001, 0x80000, CRC(c4633294) SHA1(9578f516eaf09e743ee0262ce227f811bea1be8f) ) + ROM_LOAD16_BYTE( "fe4.me4.27c040", 0x400000, 0x80000, CRC(5e4b5655) SHA1(f86509e75ec0c68f728715a5a325f6d1a30cfd93) ) + ROM_LOAD16_BYTE( "fo5.mo5.27c040", 0x500001, 0x80000, CRC(4d4b0e4e) SHA1(782c5edc533f10757cb18d2411046e44aa075ba1) ) + ROM_LOAD16_BYTE( "fe5.me5.27c040", 0x500000, 0x80000, CRC(7e9f2d2b) SHA1(cfee03c38a6c781ad370638748244a164b83d588) ) + ROM_LOAD16_BYTE( "fo6.mo6.27c040", 0x600001, 0x80000, CRC(0e7671f2) SHA1(301af5c4229451cba9fdf40285dd7243626ffed4) ) + ROM_LOAD16_BYTE( "fe6.me6.27c040", 0x600000, 0x80000, CRC(ee59b1ec) SHA1(437bc50c3b32c2edee549f5021345f1c924896b4) ) + ROM_LOAD16_BYTE( "fo7.mo7.27c040", 0x700001, 0x80000, CRC(9ab1998c) SHA1(fadaa4a46cefe0093ee1ebeddbae63143fa7bb5a) ) + ROM_LOAD16_BYTE( "fe7.me7.27c040", 0x700000, 0x80000, CRC(1ab0c88a) SHA1(8bc72732f5911e0d4e0cf12fd2fb12d67e03299e) ) + + ROM_REGION( 0x240000, "oki1", 0 ) // 8 bit ADPCM (banked) + ROM_LOAD( "ao0.ad00.27c040", 0x040000, 0x80000, CRC(8cd6824e) SHA1(aa6d8917558de4f2aa8d80527209b9fe91122eb3) ) // located on OS93089 SUB daughterboard + ROM_LOAD( "ao1.ad01.27c040", 0x0c0000, 0x80000, CRC(e31ae04d) SHA1(c08d58a4250d8bdb68b8e5012624f345936520e1) ) + ROM_LOAD( "ao2.ad02.27c040", 0x140000, 0x80000, CRC(c4c9f599) SHA1(1d74acd626406052bec533a918ca24e14a2578f2) ) + ROM_LOAD( "ao3.ad03.27c040", 0x1c0000, 0x80000, CRC(f0a9f0e1) SHA1(4221e0824cdc8bcd6ea1c3811f4e3b7cd99478f2) ) + + ROM_REGION( 0x240000, "oki2", 0 ) // 8 bit ADPCM (banked) + ROM_LOAD( "ad10.ad10.27c040", 0x040000, 0x80000, CRC(62557502) SHA1(d72abdaec1c6f55f9b0099b7a8a297e0e14f920c) ) // located on OS93089 SUB daughterboard + ROM_LOAD( "ad11.ad11.27c040", 0x0c0000, 0x80000, CRC(dbc86bd7) SHA1(6f1bc3c7e6976fdcd4b2341cea07002fb0cefb14) ) + ROM_LOAD( "ad12.ad12.27c040", 0x140000, 0x80000, CRC(5839a2bd) SHA1(53988086ef97b2671044f6da9d97b1886900b64d) ) + ROM_LOAD( "ad13.ad13.27c040", 0x1c0000, 0x80000, CRC(446f9dc3) SHA1(5c81eb9a7cbea995db9a10d3b6460d02e104825f) ) + + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "20.u54", 0x0000, 0x0100, CRC(38bd0e2f) SHA1(20d311869642cd96bb831fdf4a458e0d872f03eb) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "21.u71", 0x0000, 0x0100, CRC(182cd81f) SHA1(3a76bea81b34ea7ccf56044206721058aa5b03e6) ) // 82S135 + + ROM_REGION( 0x0020, "color", 0 ) + ROM_LOAD( "22.u81", 0x0000, 0x0020, CRC(67d5ec4b) SHA1(87d32948a0c88277dcdd0eaa035bde40fc7db5fe) ) // 82S123 +ROM_END + +ROM_START( powerinspj ) + ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code + ROM_LOAD16_WORD_SWAP( "3.p000.pc_j_12-1_155e.u116", 0x000000, 0x80000, CRC(4ea18490) SHA1(6b933b7ee11c65adf15430c8b185feaddb1c0bb0) ) // labeled: PC J 12/1 155E + ROM_LOAD16_WORD_SWAP( "4.p000.f_p4.u117", 0x080000, 0x80000, CRC(9c0f23cf) SHA1(9ac78939a743c340aa51ff1b05817866124acd34) ) // labeled: F P4 + + ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code + ROM_LOAD( "2.sound 9.20.u74.27c1001", 0x000000, 0x20000, CRC(4b123cc6) SHA1(ed61d3a2ab20c86b91fd7bafa717be3ce26159be) ) + + ROM_REGION( 0x280000, "bgtile", 0 ) + ROM_LOAD( "ba0.s0.27c040", 0x000000, 0x80000, CRC(1975b4b8) SHA1(cb400967744fa602df1bd2d88950dfdbdc77073f) ) // located on OS93089 SUB daughterboard + ROM_LOAD( "ba1.s1.27c040", 0x080000, 0x80000, CRC(376e4919) SHA1(12baa17382c176838df1b5ef86f1fa6dbcb978dd) ) + ROM_LOAD( "ba2.s2.27c040", 0x100000, 0x80000, CRC(0d5ff532) SHA1(4febdb9cdacd85903a4a28e8df945dee0ce85558) ) + ROM_LOAD( "ba3.s3.27c040", 0x180000, 0x80000, CRC(99b25791) SHA1(82f4bb5780826773d2e5f7143afb3ba209f57652) ) + ROM_LOAD( "ba4.s4.27c040", 0x200000, 0x80000, CRC(2dd76149) SHA1(975e4d371fdfbbd9a568da4d4c91ffd3f0ae636e) ) + + ROM_REGION( 0x100000, "fgtile", 0 ) + ROM_LOAD( "1.text 1080.u16.27c010", 0x000000, 0x20000, CRC(6a579ee0) SHA1(438e87b930e068e0cf7352e614a14049ebde6b8a) ) + + ROM_REGION( 0x800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "fo0.mo0.27c040", 0x000001, 0x80000, CRC(8b9b89c9) SHA1(f1d39d1a62e40a14642d8f22fc38b764465a8daa) ) // located on OS93089 SUB daughterboard + ROM_LOAD16_BYTE( "fe0.me0.27c040", 0x000000, 0x80000, CRC(4d127bdf) SHA1(26a7c277e7660a7c7c0c11cacadf815d2487ba8a) ) + ROM_LOAD16_BYTE( "fo1.mo1.27c040", 0x100001, 0x80000, CRC(298eb50e) SHA1(2b922c1473bb559a1e8bd6221619141658179bb9) ) + ROM_LOAD16_BYTE( "fe1.me1.27c040", 0x100000, 0x80000, CRC(57e6d283) SHA1(4701576c8663ba47f388a02e61ef078a9dbbd212) ) + ROM_LOAD16_BYTE( "fo2.mo2.27c040", 0x200001, 0x80000, CRC(fb184167) SHA1(20924d3f35509f2f6af61f565b852ea72326d02c) ) + ROM_LOAD16_BYTE( "fe2.me2.27c040", 0x200000, 0x80000, CRC(1b752a4d) SHA1(1b13f28af208542bee9da298d6e9db676cbc0845) ) + ROM_LOAD16_BYTE( "fo3.mo3.27c040", 0x300001, 0x80000, CRC(2f26ba7b) SHA1(026f960fa4de09ed940dd83a3db467c3676c5024) ) + ROM_LOAD16_BYTE( "fe3.me3.27c040", 0x300000, 0x80000, CRC(0263d89b) SHA1(526b8ed05dffcbe98a44372bd55ad7b0ba91fc0f) ) + ROM_LOAD16_BYTE( "fo4.mo4.27c040", 0x400001, 0x80000, CRC(c4633294) SHA1(9578f516eaf09e743ee0262ce227f811bea1be8f) ) + ROM_LOAD16_BYTE( "fe4.me4.27c040", 0x400000, 0x80000, CRC(5e4b5655) SHA1(f86509e75ec0c68f728715a5a325f6d1a30cfd93) ) + ROM_LOAD16_BYTE( "fo5.mo5.27c040", 0x500001, 0x80000, CRC(4d4b0e4e) SHA1(782c5edc533f10757cb18d2411046e44aa075ba1) ) + ROM_LOAD16_BYTE( "fe5.me5.27c040", 0x500000, 0x80000, CRC(7e9f2d2b) SHA1(cfee03c38a6c781ad370638748244a164b83d588) ) + ROM_LOAD16_BYTE( "fo6.mo6.27c040", 0x600001, 0x80000, CRC(0e7671f2) SHA1(301af5c4229451cba9fdf40285dd7243626ffed4) ) + ROM_LOAD16_BYTE( "fe6.me6.27c040", 0x600000, 0x80000, CRC(ee59b1ec) SHA1(437bc50c3b32c2edee549f5021345f1c924896b4) ) + ROM_LOAD16_BYTE( "fo7.mo7.27c040", 0x700001, 0x80000, CRC(9ab1998c) SHA1(fadaa4a46cefe0093ee1ebeddbae63143fa7bb5a) ) + ROM_LOAD16_BYTE( "fe7.me7.27c040", 0x700000, 0x80000, CRC(1ab0c88a) SHA1(8bc72732f5911e0d4e0cf12fd2fb12d67e03299e) ) + + ROM_REGION( 0x240000, "oki1", 0 ) // 8 bit ADPCM (banked) + ROM_LOAD( "ao0.ad00.27c040", 0x040000, 0x80000, CRC(8cd6824e) SHA1(aa6d8917558de4f2aa8d80527209b9fe91122eb3) ) // located on OS93089 SUB daughterboard + ROM_LOAD( "ao1.ad01.27c040", 0x0c0000, 0x80000, CRC(e31ae04d) SHA1(c08d58a4250d8bdb68b8e5012624f345936520e1) ) + ROM_LOAD( "ao2.ad02.27c040", 0x140000, 0x80000, CRC(c4c9f599) SHA1(1d74acd626406052bec533a918ca24e14a2578f2) ) + ROM_LOAD( "ao3.ad03.27c040", 0x1c0000, 0x80000, CRC(f0a9f0e1) SHA1(4221e0824cdc8bcd6ea1c3811f4e3b7cd99478f2) ) + + ROM_REGION( 0x240000, "oki2", 0 ) // 8 bit ADPCM (banked) + ROM_LOAD( "ad10.ad10.27c040", 0x040000, 0x80000, CRC(62557502) SHA1(d72abdaec1c6f55f9b0099b7a8a297e0e14f920c) ) // located on OS93089 SUB daughterboard + ROM_LOAD( "ad11.ad11.27c040", 0x0c0000, 0x80000, CRC(dbc86bd7) SHA1(6f1bc3c7e6976fdcd4b2341cea07002fb0cefb14) ) + ROM_LOAD( "ad12.ad12.27c040", 0x140000, 0x80000, CRC(5839a2bd) SHA1(53988086ef97b2671044f6da9d97b1886900b64d) ) + ROM_LOAD( "ad13.ad13.27c040", 0x1c0000, 0x80000, CRC(446f9dc3) SHA1(5c81eb9a7cbea995db9a10d3b6460d02e104825f) ) + + ROM_REGION( 0x0100, "htiming", 0 ) + ROM_LOAD( "20.u54", 0x0000, 0x0100, CRC(38bd0e2f) SHA1(20d311869642cd96bb831fdf4a458e0d872f03eb) ) // 82S129 + + ROM_REGION( 0x0100, "vtiming", 0 ) + ROM_LOAD( "21.u71", 0x0000, 0x0100, CRC(182cd81f) SHA1(3a76bea81b34ea7ccf56044206721058aa5b03e6) ) // 82S135 + + ROM_REGION( 0x0020, "color", 0 ) + ROM_LOAD( "22.u81", 0x0000, 0x0020, CRC(67d5ec4b) SHA1(87d32948a0c88277dcdd0eaa035bde40fc7db5fe) ) // 82S123 +ROM_END + +/*************************************************************************** + + Power Instinct + +Location Device File ID Checksum +---------------------------------------------- + 27C240 ROM1 4EA1 [ MAIN PROGRAM ] + 27C240 ROM2 FE60 [ PROGRAM DATA ] + 27C010 ROM3 B9F7 [ CHARACTER ] + 27C040 ROM4 2780 [ BACKGROUND ] + 27C040 ROM5 98E0 [ PCM DATA ] + 23C1600 ROM6 D9E9 [ BACKGROUND ] + 23C1600 ROM7 8B04 [ MOTION OBJ ] + 23C1600 ROM8 54B2 [ MOTION OBJ ] + 23C1600 ROM9 C7C8 [ MOTION OBJ ] + 23C1600 ROM10 852A [ MOTION OBJ ] + +Notes: This archive is of a bootleg version + +Brief hardware overview +----------------------- + +Main processor - 68000 + - TPC1020AFN-084C (CPLD) + +Sound processor - Main processor + - K-665-9249 (M6295) + +***************************************************************************/ + +ROM_START( powerinsa ) + ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code + ROM_LOAD16_WORD_SWAP( "rom1", 0x000000, 0x080000, CRC(b86c84d6) SHA1(2ec0933130925dfae859ea6abe62a8c92385aee8) ) + ROM_LOAD16_WORD_SWAP( "rom2", 0x080000, 0x080000, CRC(d3d7a782) SHA1(7846de0ebb09bd9b2534cd451ff9aa5175e60647) ) + + ROM_REGION( 0x280000, "bgtile", 0 ) + ROM_LOAD( "rom6", 0x000000, 0x200000, CRC(b6c10f80) SHA1(feece0aeaa01a455d0c4885a3699f8bda14fe00f) ) + ROM_LOAD( "rom4", 0x200000, 0x080000, CRC(2dd76149) SHA1(975e4d371fdfbbd9a568da4d4c91ffd3f0ae636e) ) + + ROM_REGION( 0x100000, "fgtile", 0 ) + ROM_LOAD( "rom3", 0x000000, 0x020000, CRC(6a579ee0) SHA1(438e87b930e068e0cf7352e614a14049ebde6b8a) ) + + ROM_REGION( 0x800000, "sprites", 0 ) + ROM_LOAD16_WORD_SWAP( "rom10", 0x000000, 0x200000, CRC(efad50e8) SHA1(89e8c307b927e987a32d22ab4ab7f3be037cca03) ) + ROM_LOAD16_WORD_SWAP( "rom9", 0x200000, 0x200000, CRC(08229592) SHA1(759679e89832b475adfdc783630d9ee2c105b0f3) ) + ROM_LOAD16_WORD_SWAP( "rom8", 0x400000, 0x200000, CRC(b02fdd6d) SHA1(1e2c52b4e9999f0b564fcf13ff41b097ad7d0c39) ) + ROM_LOAD16_WORD_SWAP( "rom7", 0x600000, 0x200000, CRC(92ab9996) SHA1(915ec8f383cc3652c3816a9b56ee54e22e104a5c) ) + + ROM_REGION( 0x080000, "oki1", 0 ) // 8 bit ADPCM (banked) + ROM_LOAD( "rom5", 0x000000, 0x080000, CRC(88579c8f) SHA1(13083934ab294c9b08d3e36f55c00a6a2e5a0507) ) +ROM_END + +/*************************************************************************** + +Power Instinct +Atlus, 1993 + +This is a bootleg US version with different sound hardware to the existing bootleg set. +The PCB is very large and has 2 plug-in daughterboards and many mask ROMs. +The addition of the contents of the mask ROMs would probably equal the contents of presumably +larger mask ROMs found on the original PCB.... + +PCB Layout + +|-------------------------------------------------------------| +| M6295 4A 5A 62256 62256 | +| M6295 4B 5B 62256 62256 | +| 4C 5C 62256 62256 | +| 4D 5D 62256 62256 | +| Z80 16MHz 62256 62256 | +| 1F 62256 62256 | +| 6264 6116 62256 62256 | +| 6116 62256 62256 | +|J | +|A | +|M | +|M | +|A 82S123 11G 12G 13G 14G| +| 11I | +| TPC1020 6116 11J | +|DSW1 6116 6N 6116 11K 13K | +|DSW2 6116 6264 11L 13L 14M| +| 82S147 6264 11O 13O 14N| +| 11P 12P 13P 14P| +| 2Q 62256 11Q 13Q | +| 2R 62256 13R | +| 68000 | +| 12MHz 14.31818MHz | +|-------------------------------------------------------------| + +Notes: + 68000 clock: 12.000MHz + Z80 clock : 6.000MHz + M6295 clock: 4.000MHz (both); sample rate = 4000000/165 (both) + VSync : 60Hz + + ROMs 1F and 6N are 1M mask (MX27C1000), all other ROMs are 4M mask (MX27C4000). + ROMS at 5* are located on a plug-in daughterboard. + ROMS at 11*, 12*, 13G, 13P and 14* are located on a plug-in daughterboard. + 82S123 and 82S147 are PROMs. + +***************************************************************************/ + +ROM_START( powerinsb ) + ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code + ROM_LOAD16_BYTE( "2q.bin", 0x000000, 0x80000, CRC(11bf3f2a) SHA1(c840add78da9b19839c667f9bbd77e0a7c560ed7) ) + ROM_LOAD16_BYTE( "2r.bin", 0x000001, 0x80000, CRC(d8d621be) SHA1(91d501ac661c1ff52c85eee96c455c008a7dad1c) ) + + ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code + ROM_LOAD( "1f.bin", 0x000000, 0x20000, CRC(4b123cc6) SHA1(ed61d3a2ab20c86b91fd7bafa717be3ce26159be) ) + + ROM_REGION( 0x280000, "bgtile", 0 ) + ROM_LOAD( "13k.bin", 0x000000, 0x80000, CRC(1975b4b8) SHA1(cb400967744fa602df1bd2d88950dfdbdc77073f) ) + ROM_LOAD( "13l.bin", 0x080000, 0x80000, CRC(376e4919) SHA1(12baa17382c176838df1b5ef86f1fa6dbcb978dd) ) + ROM_LOAD( "13o.bin", 0x100000, 0x80000, CRC(0d5ff532) SHA1(4febdb9cdacd85903a4a28e8df945dee0ce85558) ) + ROM_LOAD( "13q.bin", 0x180000, 0x80000, CRC(99b25791) SHA1(82f4bb5780826773d2e5f7143afb3ba209f57652) ) + ROM_LOAD( "13r.bin", 0x200000, 0x80000, CRC(2dd76149) SHA1(975e4d371fdfbbd9a568da4d4c91ffd3f0ae636e) ) + + ROM_REGION( 0x100000, "fgtile", 0 ) + ROM_LOAD( "6n.bin", 0x000000, 0x20000, CRC(6a579ee0) SHA1(438e87b930e068e0cf7352e614a14049ebde6b8a) ) + + ROM_REGION( 0x800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "14g.bin", 0x000001, 0x80000, CRC(8b9b89c9) SHA1(f1d39d1a62e40a14642d8f22fc38b764465a8daa) ) + ROM_LOAD16_BYTE( "11g.bin", 0x000000, 0x80000, CRC(4d127bdf) SHA1(26a7c277e7660a7c7c0c11cacadf815d2487ba8a) ) + ROM_LOAD16_BYTE( "13g.bin", 0x100001, 0x80000, CRC(298eb50e) SHA1(2b922c1473bb559a1e8bd6221619141658179bb9) ) + ROM_LOAD16_BYTE( "11i.bin", 0x100000, 0x80000, CRC(57e6d283) SHA1(4701576c8663ba47f388a02e61ef078a9dbbd212) ) + ROM_LOAD16_BYTE( "12g.bin", 0x200001, 0x80000, CRC(fb184167) SHA1(20924d3f35509f2f6af61f565b852ea72326d02c) ) + ROM_LOAD16_BYTE( "11j.bin", 0x200000, 0x80000, CRC(1b752a4d) SHA1(1b13f28af208542bee9da298d6e9db676cbc0845) ) + ROM_LOAD16_BYTE( "14m.bin", 0x300001, 0x80000, CRC(2f26ba7b) SHA1(026f960fa4de09ed940dd83a3db467c3676c5024) ) + ROM_LOAD16_BYTE( "11k.bin", 0x300000, 0x80000, CRC(0263d89b) SHA1(526b8ed05dffcbe98a44372bd55ad7b0ba91fc0f) ) + ROM_LOAD16_BYTE( "14n.bin", 0x400001, 0x80000, CRC(c4633294) SHA1(9578f516eaf09e743ee0262ce227f811bea1be8f) ) + ROM_LOAD16_BYTE( "11l.bin", 0x400000, 0x80000, CRC(5e4b5655) SHA1(f86509e75ec0c68f728715a5a325f6d1a30cfd93) ) + ROM_LOAD16_BYTE( "14p.bin", 0x500001, 0x80000, CRC(4d4b0e4e) SHA1(782c5edc533f10757cb18d2411046e44aa075ba1) ) + ROM_LOAD16_BYTE( "11o.bin", 0x500000, 0x80000, CRC(7e9f2d2b) SHA1(cfee03c38a6c781ad370638748244a164b83d588) ) + ROM_LOAD16_BYTE( "13p.bin", 0x600001, 0x80000, CRC(0e7671f2) SHA1(301af5c4229451cba9fdf40285dd7243626ffed4) ) + ROM_LOAD16_BYTE( "11p.bin", 0x600000, 0x80000, CRC(ee59b1ec) SHA1(437bc50c3b32c2edee549f5021345f1c924896b4) ) + ROM_LOAD16_BYTE( "12p.bin", 0x700001, 0x80000, CRC(9ab1998c) SHA1(fadaa4a46cefe0093ee1ebeddbae63143fa7bb5a) ) + ROM_LOAD16_BYTE( "11q.bin", 0x700000, 0x80000, CRC(1ab0c88a) SHA1(8bc72732f5911e0d4e0cf12fd2fb12d67e03299e) ) + + ROM_REGION( 0x240000, "oki1", 0 ) // 8 bit ADPCM (banked) + ROM_LOAD( "4a.bin", 0x040000, 0x80000, CRC(8cd6824e) SHA1(aa6d8917558de4f2aa8d80527209b9fe91122eb3) ) + ROM_LOAD( "4b.bin", 0x0c0000, 0x80000, CRC(e31ae04d) SHA1(c08d58a4250d8bdb68b8e5012624f345936520e1) ) + ROM_LOAD( "4c.bin", 0x140000, 0x80000, CRC(c4c9f599) SHA1(1d74acd626406052bec533a918ca24e14a2578f2) ) + ROM_LOAD( "4d.bin", 0x1c0000, 0x80000, CRC(f0a9f0e1) SHA1(4221e0824cdc8bcd6ea1c3811f4e3b7cd99478f2) ) + + ROM_REGION( 0x240000, "oki2", 0 ) // 8 bit ADPCM (banked) + ROM_LOAD( "5a.bin", 0x040000, 0x80000, CRC(62557502) SHA1(d72abdaec1c6f55f9b0099b7a8a297e0e14f920c) ) + ROM_LOAD( "5b.bin", 0x0c0000, 0x80000, CRC(dbc86bd7) SHA1(6f1bc3c7e6976fdcd4b2341cea07002fb0cefb14) ) + ROM_LOAD( "5c.bin", 0x140000, 0x80000, CRC(5839a2bd) SHA1(53988086ef97b2671044f6da9d97b1886900b64d) ) + ROM_LOAD( "5d.bin", 0x1c0000, 0x80000, CRC(446f9dc3) SHA1(5c81eb9a7cbea995db9a10d3b6460d02e104825f) ) + + ROM_REGION( 0x0220, "proms", 0 ) // unknown + ROM_LOAD( "82s123.bin", 0x0000, 0x0020, CRC(67d5ec4b) SHA1(87d32948a0c88277dcdd0eaa035bde40fc7db5fe) ) + ROM_LOAD( "82s147.bin", 0x0020, 0x0200, CRC(d7818542) SHA1(e94f8004c804f260874a117d59dfa0637c5d3d73) ) +ROM_END + +ROM_START( powerinsc ) + ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code + ROM_LOAD16_BYTE( "10.040.u41", 0x000000, 0x80000, CRC(88e1244b) SHA1(595a560b807eab9576ed057a7e532c83860e9c40) ) + ROM_LOAD16_BYTE( "11.040.u39", 0x000001, 0x80000, CRC(46cd506f) SHA1(4585824f65e2b7da9f815fee92bb5f6d250a286d) ) + + ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code + ROM_LOAD( "1.010.u2", 0x000000, 0x20000, CRC(4b123cc6) SHA1(ed61d3a2ab20c86b91fd7bafa717be3ce26159be) ) + + ROM_REGION( 0x300000, "bgtile", 0 ) + ROM_LOAD16_BYTE( "33.040.u99", 0x000000, 0x80000, CRC(9b56a394) SHA1(f9451d8d5a911f4daa0f57af496dae08d320b3b2) ) + ROM_LOAD16_BYTE( "22.040.u97", 0x000001, 0x80000, CRC(1e693f05) SHA1(049eeabd9b4f55f2f314f4f6871b1a0e1ec39517) ) + ROM_LOAD16_BYTE( "32.040.u100", 0x100000, 0x80000, CRC(7749bc80) SHA1(ceee996e694865dfbc48b5365731f4903ca674f1) ) + ROM_LOAD16_BYTE( "21.040.u98", 0x100001, 0x80000, CRC(e1586a71) SHA1(29df13a35a0c679bad0955961e7e0e70f93482c9) ) + ROM_LOAD16_BYTE( "31.040.u102", 0x200000, 0x80000, CRC(ac5a2952) SHA1(1b15873045cd65aa823c81b293b20ef6c20c6aef) ) + ROM_LOAD16_BYTE( "20.040.u101", 0x200001, 0x80000, CRC(e4b2823c) SHA1(1ef41ff625ad82dcc85994f87e1d82fc11e26dd8) ) + + // TODO: check sprites' ROM loading + ROM_REGION( 0x800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "30.040.u82", 0x000000, 0x80000, CRC(6668d29d) SHA1(41b7ab49b72a1ffc7618c3fc45a1c1bbe1d84d21) ) + ROM_LOAD16_BYTE( "19.040.u91", 0x000001, 0x80000, CRC(17659d0c) SHA1(394b5dbb4461d0c05599d1ecd9fe92de999970fa) ) + ROM_LOAD16_BYTE( "29.040.u85", 0x100000, 0x80000, CRC(c349e556) SHA1(a89d4292a6f3b3cfd5b85f8db6de207831e779e6) ) + ROM_LOAD16_BYTE( "18.040.u84", 0x100001, 0x80000, CRC(8716f8d3) SHA1(469a967784b5ab44d91839ff0dd2b361f664ad7e) ) + ROM_LOAD16_BYTE( "28.040.u88", 0x200000, 0x80000, CRC(f93f10ce) SHA1(de254d7c904de95d676cd283276ef8a5cafde588) ) + ROM_LOAD16_BYTE( "17.040.u87", 0x200001, 0x80000, CRC(fa1ef844) SHA1(be11c84186f5e0a7990c005ed27b5f71e50bc450) ) + ROM_LOAD16_BYTE( "27.040.u91", 0x300000, 0x80000, CRC(962f3455) SHA1(3637cd6047f94bc4fc8dd8d7fbc1a48b99993b0b) ) + ROM_LOAD16_BYTE( "16.040.u90", 0x300001, 0x80000, CRC(e1a37b42) SHA1(37aa82ba166ff6549c9428e42bbad10f252d14f8) ) + ROM_LOAD16_BYTE( "26.040.u93", 0x400000, 0x80000, CRC(6e65099c) SHA1(5c261367f086d52ec5680a0a9c0f85992c4473b9) ) + ROM_LOAD16_BYTE( "15.040.u81", 0x400001, 0x80000, CRC(035316d3) SHA1(c1c6f243213f05a53f0fc4f3df530895c34355a9) ) + ROM_LOAD16_BYTE( "25.040.u94", 0x500000, 0x80000, CRC(a250dea8) SHA1(6b4c5ad35f4f4cdab516118a21c58617044c3208) ) + ROM_LOAD16_BYTE( "14.040.u96", 0x500001, 0x80000, CRC(dd976689) SHA1(ba7e80a94e6c6bb7a5b569fb5440e774cd89b79d) ) + ROM_LOAD16_BYTE( "24.040.u95", 0x600000, 0x80000, CRC(851008f4) SHA1(cd6e5d8e6807fc3224022ca53f02f390e1232b06) ) + ROM_LOAD16_BYTE( "13.040.u89", 0x600001, 0x80000, CRC(867262d6) SHA1(bf0b13a5bb818741150d09be44968779c55c5b96) ) + ROM_LOAD16_BYTE( "23.040.u96", 0x700000, 0x80000, CRC(625c5b7b) SHA1(ddac164cd92459bdce5905b31eccded9b1c06086) ) + ROM_LOAD16_BYTE( "12.040.u92", 0x700001, 0x80000, CRC(08c4e478) SHA1(172dd9532a9240014afb4817b61a3e8122be8f0c) ) + + ROM_REGION( 0x240000, "oki1", 0 ) // 8 bit ADPCM (banked) + ROM_LOAD( "9.040.u32", 0x040000, 0x80000, CRC(8cd6824e) SHA1(aa6d8917558de4f2aa8d80527209b9fe91122eb3) ) + ROM_LOAD( "8.040.u30", 0x0c0000, 0x80000, CRC(e31ae04d) SHA1(c08d58a4250d8bdb68b8e5012624f345936520e1) ) + ROM_LOAD( "7.040.u33", 0x140000, 0x80000, CRC(c4c9f599) SHA1(1d74acd626406052bec533a918ca24e14a2578f2) ) + ROM_LOAD( "6.040.u31", 0x1c0000, 0x80000, CRC(f0a9f0e1) SHA1(4221e0824cdc8bcd6ea1c3811f4e3b7cd99478f2) ) + + ROM_REGION( 0x240000, "oki2", 0 ) // 8 bit ADPCM (banked) + ROM_LOAD( "5.040.u36", 0x040000, 0x80000, CRC(62557502) SHA1(d72abdaec1c6f55f9b0099b7a8a297e0e14f920c) ) + ROM_LOAD( "4.040.u34", 0x0c0000, 0x80000, CRC(dbc86bd7) SHA1(6f1bc3c7e6976fdcd4b2341cea07002fb0cefb14) ) + ROM_LOAD( "3.040.u37", 0x140000, 0x80000, CRC(5839a2bd) SHA1(53988086ef97b2671044f6da9d97b1886900b64d) ) + ROM_LOAD( "2.040.u35", 0x1c0000, 0x80000, CRC(446f9dc3) SHA1(5c81eb9a7cbea995db9a10d3b6460d02e104825f) ) ROM_END ROM_START( manybloc ) @@ -9174,6 +10326,15 @@ GAME( 1993, bjtwinpa, bjtwin, bjtwin_prot, bjtwin, macross_prot_state GAME( 1995, nouryoku, 0, bjtwin_prot, nouryoku, macross_prot_state, empty_init, ROT0, "Tecmo", "Nouryoku Koujou Iinkai", 0 ) GAME( 1995, nouryokup, nouryoku, bjtwin, nouryoku, nmk16_state, empty_init, ROT0, "Tecmo", "Nouryoku Koujou Iinkai (prototype)", 0 ) // GFX aren't encrypted +// all supported sets give a 93.10.20 date +GAME( 1993, powerins, 0, powerins, powerins, nmk16_state, empty_init, ROT0, "Atlus", "Power Instinct (USA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, powerinsj, powerins, powerins, powerinj, nmk16_state, empty_init, ROT0, "Atlus", "Gouketsuji Ichizoku (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, powerinspu, powerins, powerins, powerinj, nmk16_state, empty_init, ROT0, "Atlus", "Power Instinct (USA, prototype)", MACHINE_SUPPORTS_SAVE ) // boots as 93.10.20 just like the other sets, but code is different +GAME( 1993, powerinspj, powerins, powerins, powerinj, nmk16_state, empty_init, ROT0, "Atlus", "Gouketsuji Ichizoku (Japan, prototype)", MACHINE_SUPPORTS_SAVE ) // boots as 93.10.20 just like the other sets, but code is different +GAME( 1993, powerinsa, powerins, powerinsa, powerins, nmk16_state, init_powerinsa, ROT0, "bootleg", "Power Instinct (USA, bootleg set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, powerinsb, powerins, powerinsb, powerins, nmk16_state, empty_init, ROT0, "bootleg", "Power Instinct (USA, bootleg set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, powerinsc, powerins, powerinsc, powerins, nmk16_state, empty_init, ROT0, "bootleg", "Power Instinct (USA, bootleg set 3)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // different sprites' format not implemented + // Non NMK boards // bee-oh board - different display / interrupt timing to others? diff --git a/src/mame/nmk/nmk16.h b/src/mame/nmk/nmk16.h index 72183e630fb..716635fabda 100644 --- a/src/mame/nmk/nmk16.h +++ b/src/mame/nmk/nmk16.h @@ -44,6 +44,7 @@ public: m_tilemap_rom(*this, "tilerom"), m_audiobank(*this, "audiobank"), m_okibank(*this, "okibank%u", 1U), + m_vtiming_prom(*this, "vtiming"), m_dsw_io(*this, "DSW%u", 1U), m_in_io(*this, "IN%u", 0U), m_sprdma_base(0x8000) @@ -77,6 +78,13 @@ public: void mustangb3(machine_config &config); void twinactn(machine_config &config); void vandykeb(machine_config &config); + void powerins(machine_config &config); + void powerinsj(machine_config &config); + void powerinspu(machine_config &config); + void powerinspj(machine_config &config); + void powerinsa(machine_config &config); + void powerinsb(machine_config &config); + void powerinsc(machine_config &config); void init_nmk(); void init_tharrier(); @@ -87,10 +95,15 @@ public: void init_banked_audiocpu(); void init_gunnailb(); void init_bjtwin(); + void init_powerinsa(); void init_acrobatmbl(); protected: + virtual void machine_start() override; + virtual void machine_reset() override; + TIMER_DEVICE_CALLBACK_MEMBER(nmk16_scanline); + TIMER_DEVICE_CALLBACK_MEMBER(nmk16_hacky_scanline); u32 screen_update_macross(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void txvideoram_w(offs_t offset, u16 data, u16 mem_mask = ~0); @@ -98,7 +111,12 @@ protected: void vandyke_flipscreen_w(u8 data); void tilebank_w(u8 data); - void macross2_sound_bank_w(u8 data); + void macross2_sound_reset_w(u16 data); + void macross2_audiobank_w(u8 data); + void ssmissin_okibank_w(u8 data); + void powerinsa_okibank_w(u8 data); + template void tharrier_okibank_w(u8 data); + u8 powerins_bootleg_fake_ym2203_r(); required_device m_maincpu; optional_device m_audiocpu; @@ -120,6 +138,7 @@ protected: optional_region_ptr m_tilemap_rom; optional_memory_bank m_audiobank; optional_memory_bank_array<2> m_okibank; + optional_memory_region m_vtiming_prom; optional_ioport_array<2> m_dsw_io; optional_ioport_array<3> m_in_io; @@ -138,15 +157,13 @@ protected: u8 m_scroll[2][4]{}; u16 m_vscroll[4]{}; int m_prot_count = 0; + u8 m_interrupt_trigger; void mainram_strange_w(offs_t offset, u16 data/*, u16 mem_mask = ~0*/); u16 mainram_swapped_r(offs_t offset); void mainram_swapped_w(offs_t offset, u16 data, u16 mem_mask = ~0); - void ssmissin_soundbank_w(u8 data); void tharrier_mcu_control_w(u16 data); u16 tharrier_mcu_r(offs_t offset, u16 mem_mask = ~0); - void macross2_sound_reset_w(u16 data); - template void tharrier_oki_bankswitch_w(u8 data); u16 vandykeb_r(); u16 tdragonb_prot_r(); template void bgvideoram_w(offs_t offset, u16 data, u16 mem_mask = ~0); @@ -161,27 +178,34 @@ protected: void nmk004_x0016_w(u16 data); void nmk004_bioship_x0016_w(u16 data); + void set_interrupt_timing(machine_config &config); void set_hacky_interrupt_timing(machine_config &config); - void set_hacky_screen_lowres(machine_config &config); - void set_hacky_screen_hires(machine_config &config); + void set_screen_lowres(machine_config &config); + void set_screen_midres(machine_config &config); + void set_screen_hires(machine_config &config); TILEMAP_MAPPER_MEMBER(tilemap_scan_pages); template TILE_GET_INFO_MEMBER(common_get_bg_tile_info); TILE_GET_INFO_MEMBER(common_get_tx_tile_info); TILE_GET_INFO_MEMBER(bioship_get_bg_tile_info); TILE_GET_INFO_MEMBER(bjtwin_get_bg_tile_info); + TILE_GET_INFO_MEMBER(powerins_get_bg_tile_info); DECLARE_VIDEO_START(macross); DECLARE_VIDEO_START(bioship); DECLARE_VIDEO_START(strahl); DECLARE_VIDEO_START(macross2); DECLARE_VIDEO_START(gunnail); DECLARE_VIDEO_START(bjtwin); + DECLARE_VIDEO_START(powerins); void get_colour_4bit(u32 &colour, u32 &pri_mask); void get_colour_5bit(u32 &colour, u32 &pri_mask); + void get_colour_6bit(u32 &colour, u32 &pri_mask); void get_sprite_flip(u16 attr, int &flipx, int &flipy, int &code); + void get_flip_extcode_powerins(u16 attr, int &flipx, int &flipy, int &code); u32 screen_update_tharrier(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); u32 screen_update_strahl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); u32 screen_update_bjtwin(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void screen_vblank_powerins_bootleg(int state); TIMER_CALLBACK_MEMBER(dma_callback); TIMER_DEVICE_CALLBACK_MEMBER(manybloc_scanline); void video_init(); @@ -216,6 +240,11 @@ protected: void mustangb3_sound_map(address_map &map); void oki1_map(address_map &map); void oki2_map(address_map &map); + void powerins_map(address_map &map); + void powerins_sound_map(address_map &map); + void powerins_bootleg_audio_io_map(address_map &map); + void powerinsa_map(address_map &map); + void powerinsa_oki_map(address_map &map); void raphero_map(address_map &map); void raphero_sound_mem_map(address_map &map); void ssmissin_map(address_map &map); diff --git a/src/mame/nmk/nmk16_v.cpp b/src/mame/nmk/nmk16_v.cpp index 2112495f8ff..28201073ec8 100644 --- a/src/mame/nmk/nmk16_v.cpp +++ b/src/mame/nmk/nmk16_v.cpp @@ -65,6 +65,15 @@ TILE_GET_INFO_MEMBER(nmk16_state::bjtwin_get_bg_tile_info) 0); } +TILE_GET_INFO_MEMBER(nmk16_state::powerins_get_bg_tile_info) +{ + const u16 code = m_bgvideoram[0][tile_index]; + tileinfo.set(1, + (code & 0x07ff) | (m_bgbank << 11), + ((code & 0xf000) >> 12) | ((code & 0x0800) >> 7), + 0); +} + /*************************************************************************** @@ -164,6 +173,36 @@ VIDEO_START_MEMBER(nmk16_state, bjtwin) m_bg_tilemap[0]->set_scrolldx(28+64, 28+64); } +/*************************************************************************** + [ Tiles Format VRAM 0] +Offset: + +0.w fedc ---- ---- ---- Color Low Bits + ---- b--- ---- ---- Color High Bit + ---- -a98 7654 3210 Code (Banked) + + [ Tiles Format VRAM 1] +Offset: + +0.w fedc ---- ---- ---- Color + ---- ba98 7654 3210 Code + +***************************************************************************/ + +VIDEO_START_MEMBER(nmk16_state, powerins) +{ + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nmk16_state::powerins_get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(nmk16_state::tilemap_scan_pages)), 16, 16, 256, 32); + m_bg_tilemap[1] = nullptr; + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nmk16_state::common_get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); + + m_tx_tilemap->set_transparent_pen(15); + + video_init(); + // 320x224 screen, leftmost 32 pixels have to be retrieved from the other side of the tilemap (!) + m_bg_tilemap[0]->set_scrolldx(60+32, 60+32); + m_tx_tilemap->set_scrolldx(60+32, 60+32); +} + void nmk16_state::mustang_scroll_w(u16 data) { // osd_printf_debug("mustang %04x %04x %04x\n",offset,data,mem_mask); @@ -295,6 +334,12 @@ void nmk16_state::get_colour_5bit(u32 &colour, u32 &pri_mask) pri_mask |= GFX_PMASK_2; // under foreground } +void nmk16_state::get_colour_6bit(u32 &colour, u32 &pri_mask) +{ + colour &= 0x3f; + pri_mask |= GFX_PMASK_2; // under foreground +} + // manybloc uses extra flip bits on the sprites, but these break other games void nmk16_state::get_sprite_flip(u16 attr, int &flipx, int &flipy, int &code) @@ -303,6 +348,12 @@ void nmk16_state::get_sprite_flip(u16 attr, int &flipx, int &flipy, int &code) flipx = (attr & 0x100) >> 8; } +void nmk16_state::get_flip_extcode_powerins(u16 attr, int &flipx, int &flipy, int &code) +{ + flipx = (attr & 0x1000) >> 12; + code = (code & 0x7fff) | ((attr & 0x100) << 7); +} + void nmk16_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, u16 *src) { m_spritegen->draw_sprites(screen, bitmap, cliprect, m_gfxdecode->gfx(2), src, 0x1000 / 2); @@ -403,6 +454,17 @@ u32 nmk16_state::screen_update_bjtwin(screen_device &screen, bitmap_ind16 &bitma return 0; } +void nmk16_state::screen_vblank_powerins_bootleg(int state) +{ + if (state) + { + m_maincpu->set_input_line(4, HOLD_LINE); + // bootlegs don't have DMA? + memcpy(m_spriteram_old2.get(),m_spriteram_old.get(), 0x1000); + memcpy(m_spriteram_old.get(), m_mainram + m_sprdma_base / 2, 0x1000); + } +} + /*************************************************************************** diff --git a/src/mame/nmk/powerins.cpp b/src/mame/nmk/powerins.cpp deleted file mode 100644 index 8450169da16..00000000000 --- a/src/mame/nmk/powerins.cpp +++ /dev/null @@ -1,1096 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders: Luca Elia - -/*************************************************************************** - - -= Power Instinct =- - (C) 1993 Atlus - - driver by Luca Elia (l.elia@tin.it) - -Set 1 - CPU: MC68000, Z80 (for sound) - Sound: 2x OKI6295 + 1x YM2203 -Bootleg Set 1 - CPU: MC68000 - Sound: OKIM6295 -Bootleg Set 2 - CPU: MC68000, Z80 (for sound) - Sound: 2x OKI6295 (Sound code supports an additional YM2203, but it's not fitted) - -Note: -- To enter test mode press F2 (Test) - Use 9 (Service Coin) to change page. -- In powerinsa there is a hidden test mode screen because it's a bootleg - without a sound CPU. Set 18ff08 to 4 during test mode that calls the - data written to $10001e "sound code". - -TODO: -- sprites flip y (not used by the game) -- graphic system and PCB design is similar as macross2 era hardwares in nmk16.cpp; - is it mergeable? - -***************************************************************************/ - -#include "emu.h" - -#include "nmk16.h" -#include "nmk16spr.h" - -#include "cpu/m68000/m68000.h" -#include "cpu/z80/z80.h" -#include "machine/gen_latch.h" -#include "machine/nmk112.h" -#include "sound/okim6295.h" -#include "sound/ymopn.h" - -#include "emupal.h" -#include "screen.h" -#include "speaker.h" -#include "tilemap.h" - - -namespace { - -class powerins_state : public nmk16_state -{ -public: - powerins_state(const machine_config &mconfig, device_type type, const char *tag) : - nmk16_state(mconfig, type, tag) - { } - - void powerins(machine_config &config); - void powerinsa(machine_config &config); - void powerinsb(machine_config &config); - void powerinsc(machine_config &config); - -protected: - virtual void video_start() override; - - void base(machine_config &config); - - void screen_vblank_bootleg(int state); - - void main_program_map(address_map &map); - -private: - u8 bootleg_fake_ym2203_r(); - - TILE_GET_INFO_MEMBER(get_bg_tile_info); - - void screen_vblank(int state); - - void get_colour_6bit(u32 &colour, u32 &pri_mask); - void get_flip_extcode(u16 attr, int &flipx, int &flipy, int &code); - u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void audio_program_map(address_map &map); - void bootleg_audio_io_map(address_map &map); -}; - -class powerinsa_state : public powerins_state -{ -public: - using powerins_state::powerins_state; - - void powerinsa(machine_config &config); - -protected: - virtual void machine_start() override; - -private: - void okibank_w(u8 data); - - void program_map(address_map &map); - void oki_map(address_map &map); -}; - -/*************************************************************************** - - -= Power Instinct =- - (C) 1993 Atlus - - driver by Luca Elia (l.elia@tin.it) - - -Note: if MAME_DEBUG is defined, pressing Z with: - - Q shows layer 1 - W shows layer 2 - A shows the sprites - - Keys can be used together! - - [ 2 Scrolling Layers ] - - Each Layer is made of various pages of 256x256 pixels. - - [Layer 0] - Pages: 16x2 - Tiles: 16x16x4 - Scroll: X,Y - - [Layer 1] - Pages: 2x1 - Tiles: 8x8x4 - Scroll: No - - [ 256 Sprites ] - - Each sprite is made of a variable amount of 16x16 tiles. - Size can therefore vary from 16x16 (1 tile) to 256x256 - (16x16 tiles) - - -**************************************************************************/ - -/*************************************************************************** - [ Tiles Format VRAM 0] - -Offset: - -0.w fedc ---- ---- ---- Color Low Bits - ---- b--- ---- ---- Color High Bit - ---- -a98 7654 3210 Code (Banked) - - -***************************************************************************/ - -// Layers are made of 256x256 pixel pages -/* -#define TILES_PER_PAGE_X (0x10) -#define TILES_PER_PAGE_Y (0x10) -#define TILES_PER_PAGE (TILES_PER_PAGE_X * TILES_PER_PAGE_Y) - -#define DIM_NX_0 (0x100) -#define DIM_NY_0 (0x20) -*/ - -TILE_GET_INFO_MEMBER(powerins_state::get_bg_tile_info) -{ - uint16_t code = m_bgvideoram[0][tile_index]; - tileinfo.set(1, - (code & 0x07ff) | (m_bgbank << 11), - ((code & 0xf000) >> 12) | ((code & 0x0800) >> 7), - 0); -} - - -/*************************************************************************** - [ Tiles Format VRAM 1] - -Offset: - -0.w fedc ---- ---- ---- Color - ---- ba98 7654 3210 Code - - -***************************************************************************/ - -/* -#define DIM_NX_1 (0x40) -#define DIM_NY_1 (0x20) -*/ - -/*************************************************************************** - - - video_start - - -***************************************************************************/ - -void powerins_state::video_start() -{ - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(powerins_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(powerins_state::tilemap_scan_pages)), 16, 16, 256, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(powerins_state::common_get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); - m_bg_tilemap[1] = nullptr; - - m_tx_tilemap->set_transparent_pen(15); - - video_init(); - // fixed offset - m_bg_tilemap[0]->set_scrolldx(32, 32); - m_tx_tilemap->set_scrolldx(32, 32); -} - - -/*************************************************************************** - - - Sprites Drawing - - -***************************************************************************/ - - - -/* --------------------------[ Sprites Format ]---------------------------- - -Offset: Format: Value: - - 00 fedc ba98 7654 321- - - ---- ---- ---- ---0 Display this sprite - - 02 fed- ---- ---- ---- - - ---c ---- ---- ---- Flip X - ---- ba9- ---- ---- - - ---- ---8 ---- ---- Code High Bit - ---- ---- 7654 ---- Number of tiles along Y, minus 1 (1-16) - ---- ---- ---- 3210 Number of tiles along X, minus 1 (1-16) - - 04 Unused? - - 06 f--- ---- ---- ---- - - -edc ba98 7654 3210 Code Low Bits - - 08 X - - 0A Unused? - - 0C Y - - 0E fedc ba98 76-- ---- - - ---- ---- --54 3210 Color - - ------------------------------------------------------------------------- */ - - -void powerins_state::get_colour_6bit(u32 &colour, u32 &pri_mask) -{ - colour &= 0x3f; - pri_mask |= GFX_PMASK_2; // under foreground -} - -void powerins_state::get_flip_extcode(u16 attr, int &flipx, int &flipy, int &code) -{ - flipx = (attr & 0x1000) >> 12; - code = (code & 0x7fff) | ((attr & 0x100) << 7); -} - - -/*************************************************************************** - - - Screen Drawing - - -***************************************************************************/ - - -u32 powerins_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - int layers_ctrl = -1; - -#ifdef MAME_DEBUG -if (machine().input().code_pressed(KEYCODE_Z)) -{ - int msk = 0; - - if (machine().input().code_pressed(KEYCODE_Q)) msk |= 1; - if (machine().input().code_pressed(KEYCODE_W)) msk |= 2; -// if (machine().input().code_pressed(KEYCODE_E)) msk |= 4; - if (machine().input().code_pressed(KEYCODE_A)) msk |= 8; - if (msk != 0) layers_ctrl &= msk; -} -#endif - - screen.priority().fill(0, cliprect); - if (layers_ctrl&1) bg_update(screen, bitmap, cliprect, 0); - else bitmap.fill(0, cliprect); - if (layers_ctrl&2) tx_update(screen, bitmap, cliprect); - if (layers_ctrl&8) draw_sprites(screen, bitmap, cliprect, m_spriteram_old2.get()); - return 0; -} - -void powerins_state::screen_vblank(int state) -{ - if (state) - { - m_maincpu->set_input_line(4, HOLD_LINE); - m_dma_timer->adjust(attotime::from_usec(256)); // 256 USEC after VBOUT, same as nmk16.cpp? - } -} - -void powerins_state::screen_vblank_bootleg(int state) -{ - if (state) - { - m_maincpu->set_input_line(4, HOLD_LINE); - // bootlegs don't have DMA? - memcpy(m_spriteram_old2.get(),m_spriteram_old.get(), 0x1000); - memcpy(m_spriteram_old.get(), m_mainram + m_sprdma_base / 2, 0x1000); - } -} - - -/*************************************************************************** - - Memory Maps - -***************************************************************************/ - - -void powerinsa_state::okibank_w(u8 data) -{ - m_okibank[0]->set_entry(data & 7); -} - -u8 powerins_state::bootleg_fake_ym2203_r() -{ - return 0x01; -} - -void powerins_state::main_program_map(address_map &map) -{ - map(0x000000, 0x0fffff).rom(); - map(0x100000, 0x100001).portr("SYSTEM"); - map(0x100002, 0x100003).portr("P1_P2"); - map(0x100008, 0x100009).portr("DSW1"); - map(0x10000a, 0x10000b).portr("DSW2"); - map(0x100015, 0x100015).w(FUNC(powerins_state::flipscreen_w)); - map(0x100016, 0x100017).nopw(); // IRQ enable or Z80 sound reset like in Macross 2? - map(0x100019, 0x100019).w(FUNC(powerins_state::tilebank_w)); - map(0x10001f, 0x10001f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); - map(0x120000, 0x120fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - map(0x130000, 0x130007).ram().w(FUNC(powerins_state::scroll_w<0>)).umask16(0x00ff); - map(0x140000, 0x143fff).ram().w(FUNC(powerins_state::bgvideoram_w<0>)).share(m_bgvideoram[0]); - map(0x170000, 0x170fff).mirror(0x1000).ram().w(FUNC(powerins_state::txvideoram_w)).share(m_txvideoram); - map(0x180000, 0x18ffff).ram().share(m_mainram); -} - -// powerinsa: same as the original one but without the sound CPU (and inferior sound HW) -void powerinsa_state::program_map(address_map &map) -{ - main_program_map(map); - map(0x100031, 0x100031).w(FUNC(powerinsa_state::okibank_w)); - map(0x10003f, 0x10003f).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); -} - -void powerins_state::audio_program_map(address_map &map) -{ - map(0x0000, 0xbfff).rom(); - map(0xc000, 0xdfff).ram(); - map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); -// map(0xe000, 0xe000).nopw(); // ? written only once ? -// map(0xe001, 0xe001).nopw(); // ? -} - -void powerins_state::bootleg_audio_io_map(address_map &map) -{ - map.global_mask(0xff); - map(0x00, 0x00).r(FUNC(powerins_state::bootleg_fake_ym2203_r)).nopw(); - map(0x01, 0x01).noprw(); - map(0x80, 0x80).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - map(0x88, 0x88).rw(m_oki[1], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - map(0x90, 0x97).w("nmk112", FUNC(nmk112_device::okibank_w)); -} - -void powerinsa_state::oki_map(address_map &map) -{ - map(0x00000, 0x2ffff).rom().region("oki1", 0); - map(0x30000, 0x3ffff).bankr(m_okibank[0]); -} - - -/*************************************************************************** - - Input Ports - -***************************************************************************/ - -static INPUT_PORTS_START( powerins ) - PORT_START("SYSTEM") // $100000 - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START2 ) - PORT_SERVICE_NO_TOGGLE( 0x0020, IP_ACTIVE_LOW ) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("P1_P2") // $100002 - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) - - PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) - PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) - PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) - PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) - PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) - - PORT_START("DSW1") // $100008 - PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW1:8") - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x000e, 0x000e, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:7,6,5") - PORT_DIPSETTING( 0x0008, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x000c, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0000, "2 Coins/1 Credit (1 to continue)" ) - PORT_DIPSETTING( 0x000e, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0006, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x000a, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( 1C_4C ) ) - PORT_DIPNAME( 0x0070, 0x0070, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:4,3,2") - PORT_DIPSETTING( 0x0040, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x0060, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0000, "2 Coins/1 Credit (1 to continue)" ) - PORT_DIPSETTING( 0x0070, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0030, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0050, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( 1C_4C ) ) - PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1") - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - - PORT_START("DSW2") // $10000a - PORT_DIPNAME( 0x0001, 0x0001, "Coin Chutes" ) PORT_DIPLOCATION("SW2:8") - PORT_DIPSETTING( 0x0001, "1 Chute" ) - PORT_DIPSETTING( 0x0000, "2 Chutes" ) - PORT_DIPNAME( 0x0002, 0x0002, "Join In Mode" ) PORT_DIPLOCATION("SW2:7") - PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) -/* - In "Join In" mode, a second player can join even if one player has already - begun to play. Please refer to chart below: - - Join In Mode Credit Join In Game Over - ----------------------------------------------------------------------------------------------- - Join In OFF 1C per Player Anytime Winner of VS Plays Computer - Join In ON 1C = VS Mode 2 players Cannot After win VS Game Over for both players - -*/ - PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:6") - PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:5") - PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( On ) ) - PORT_DIPNAME( 0x0010, 0x0010, "Blood Color" ) PORT_DIPLOCATION("SW2:4") - PORT_DIPSETTING( 0x0010, "Red" ) - PORT_DIPSETTING( 0x0000, "Blue" ) - PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Game_Time ) ) PORT_DIPLOCATION("SW2:3") - PORT_DIPSETTING( 0x0020, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x0000, "Short" ) - PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:2,1") - PORT_DIPSETTING( 0x0040, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x00c0, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x0080, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) ) -INPUT_PORTS_END - -static INPUT_PORTS_START( powerinj ) - PORT_INCLUDE(powerins) - - PORT_MODIFY("DSW2") - PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:8") - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) -INPUT_PORTS_END - - - -/*************************************************************************** - - Graphics Layouts - -***************************************************************************/ - -static GFXDECODE_START( gfx_powerins ) - GFXDECODE_ENTRY( "fgtile", 0, gfx_8x8x4_packed_msb, 0x200, 0x10 ) - GFXDECODE_ENTRY( "bgtile", 0, gfx_8x8x4_col_2x2_group_packed_msb, 0x000, 0x20 ) - GFXDECODE_ENTRY( "sprites", 0, gfx_8x8x4_col_2x2_group_packed_msb, 0x400, 0x40 ) -GFXDECODE_END - -static GFXDECODE_START( gfx_powerinsc ) - GFXDECODE_ENTRY( "bgtile", 0x280000, gfx_8x8x4_packed_lsb, 0x200, 0x10 ) - GFXDECODE_ENTRY( "bgtile", 0, gfx_8x8x4_col_2x2_group_packed_lsb, 0x000, 0x20 ) - GFXDECODE_ENTRY( "sprites", 0, gfx_8x8x4_col_2x2_group_packed_lsb, 0x400, 0x40 ) // TODO: wrong decode and ROM loading -GFXDECODE_END - -/*************************************************************************** - - Machine Drivers - -***************************************************************************/ - -void powerinsa_state::machine_start() -{ - m_okibank[0]->configure_entries(0, 5, memregion("oki1")->base() + 0x30000, 0x10000); -} - -void powerins_state::base(machine_config &config) -{ - // basic machine hardware - M68000(config, m_maincpu, XTAL(12'000'000)); - m_maincpu->set_addrmap(AS_PROGRAM, &powerins_state::main_program_map); - - // video hardware - SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_raw(XTAL(14'000'000) / 2, 448, 0, 320, 278, 16, 240); // confirmed - m_screen->set_screen_update(FUNC(powerins_state::screen_update)); - m_screen->screen_vblank().set(FUNC(powerins_state::screen_vblank)); - m_screen->set_palette(m_palette); - - NMK_16BIT_SPRITE(config, m_spritegen, XTAL(14'000'000) / 2); - m_spritegen->set_colpri_callback(FUNC(powerins_state::get_colour_6bit)); - m_spritegen->set_ext_callback(FUNC(powerins_state::get_flip_extcode)); - m_spritegen->set_mask(0x3ff, 0x3ff); - m_spritegen->set_screen_size(320, 256); - m_spritegen->set_max_sprite_clock(448 * 263); // not verified? - m_spritegen->set_videoshift(32); - - GFXDECODE(config, m_gfxdecode, m_palette, gfx_powerins); - PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 2048); - - // sound hardware - SPEAKER(config, "mono").front_center(); - - GENERIC_LATCH_8(config, m_soundlatch); -} - -void powerins_state::powerins(machine_config &config) -{ - base(config); - - Z80(config, m_audiocpu, XTAL(12'000'000) / 2); - m_audiocpu->set_addrmap(AS_PROGRAM, &powerins_state::audio_program_map); - m_audiocpu->set_addrmap(AS_IO, &powerins_state::macross2_sound_io_map); - - ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(12'000'000) / 8)); - ymsnd.irq_handler().set_inputline(m_audiocpu, 0); - ymsnd.add_route(ALL_OUTPUTS, "mono", 2.0); - - OKIM6295(config, m_oki[0], XTAL(16'000'000) / 4, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 0.15); - - OKIM6295(config, m_oki[1], XTAL(16'000'000) / 4, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 0.15); - - nmk112_device &nmk112(NMK112(config, "nmk112", 0)); - nmk112.set_rom0_tag("oki1"); - nmk112.set_rom1_tag("oki2"); -} - -void powerinsa_state::powerinsa(machine_config &config) -{ - base(config); - - m_maincpu->set_addrmap(AS_PROGRAM, &powerinsa_state::program_map); - - m_screen->set_raw(XTAL(14'318'181) / 2, 456, 0, 320, 262, 16, 240); // ~60hz, XTAL verified, correct params? - m_screen->screen_vblank().set(FUNC(powerinsa_state::screen_vblank_bootleg)); - - OKIM6295(config, m_oki[0], 990'000, okim6295_device::PIN7_LOW); // pin7 not verified - m_oki[0]->set_addrmap(0, &powerinsa_state::oki_map); - m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.15); -} - -void powerins_state::powerinsb(machine_config &config) -{ - base(config); - - // basic machine hardware - Z80(config, m_audiocpu, XTAL(12'000'000) / 2); - m_audiocpu->set_addrmap(AS_PROGRAM, &powerins_state::audio_program_map); - m_audiocpu->set_addrmap(AS_IO, &powerins_state::macross2_sound_io_map); - - m_screen->set_raw(XTAL(14'318'181) / 2, 456, 0, 320, 262, 16, 240); // ~60hz, XTAL verified, correct params? - m_screen->screen_vblank().set(FUNC(powerins_state::screen_vblank_bootleg)); - - m_audiocpu->set_addrmap(AS_IO, &powerins_state::bootleg_audio_io_map); - m_audiocpu->set_periodic_int(FUNC(powerins_state::irq0_line_hold), attotime::from_hz(120)); // YM2203 rate is at 150?? - - OKIM6295(config, m_oki[0], XTAL(16'000'000) / 4, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 0.15); - - OKIM6295(config, m_oki[1], XTAL(16'000'000) / 4, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 0.15); - - nmk112_device &nmk112(NMK112(config, "nmk112", 0)); - nmk112.set_rom0_tag("oki1"); - nmk112.set_rom1_tag("oki2"); - - // Sound code talks to one YM2203, but it's not fitted on the board -} - -void powerins_state::powerinsc(machine_config &config) -{ - powerinsb(config); - - m_gfxdecode->set_info(gfx_powerinsc); -} - -/*************************************************************************** - - ROMs Loading - -***************************************************************************/ - -/* - -Gouketsuji Ichizoku (Power Instinct Japan) -Atlus, 1993 - -PCB Layout ----------- - -OS93095 (C) ATLUS 1993 MADE IN JAPAN -|---------------------------------------------------------------| -|LA4460 VOL YM2203 Z80 93095-2 12MHz AAA64K1P-35(x8) | -|4558 YM3014 M6295 6264 | -| 93095-11 |------| CXK58258BP-35L(x8)| -| M6295 93095-10 |NMK112| | -| 93095-9 | | | -| 16MHz 93095-8 |------| |------||------| | -| DSW1 DSW2 |------| 22 |NMK009||NMK009| | -|J |NMK005| | || | | -|A | | |------||------| | -|M |------| |------| | -|M 6116 |NMK008| 93095-19 | -|A |------|6116 6116 | | | -| |NMK111|6116 |------| 93095-18 | -| | | |------| | -| |------| |NMK901| 62256 93095-4 93095-17 | -| 6264 | | 62256 93095-3J | -| 6264 93095-7 |------| |------------| 93095-16 | -||------| 20 | 68000 | | -||NMK111| 93095-6 |---| |---| |------------| 93095-15 | -|| | |NMK| |NMK| | -||------| 93095-5 |903| |903| 93095-14 | -||------| |---| |---||---| 21 | -||NMK111| 93095-1 |NMK| 93095-13 | -|| | 6116 |902| 14MHz | -||------| 6116 |---| 93095-12 | -|---------------------------------------------------------------| -Notes: - 68000 clock - 12.000MHz - Z80 clock - 6.000MHz [12/2] - 6295 clocks - 4.000MHz [16/4], sample rate = 4000000 / 165 - YM2203 clock- 1.500MHz [12/8] - VSync - 56Hz - HSync - 15.35kHz - - ROMs - - -1, -2 : 27C1001 EPROM - -3, -4 : 27C4096 EPROM - -5, -6 : 8M 42 pin mask ROM (578200) - -7 : 4M 40 pin mask ROM (574200) - -8 to -19: 8M 42 pin mask ROM (578200) - 20 : 82S129 PROM - 21 : 82S135 PROM - 22 : 82S123 PROM - -*/ - -ROM_START( powerins ) - ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code - ROM_LOAD16_WORD_SWAP( "93095-3a.u108", 0x00000, 0x80000, CRC(9825ea3d) SHA1(567fd8e3d866a58a68608ea20c5d3fc16cf9f444) ) - ROM_LOAD16_WORD_SWAP( "93095-4.u109", 0x80000, 0x80000, CRC(d3d7a782) SHA1(7846de0ebb09bd9b2534cd451ff9aa5175e60647) ) - - ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code - ROM_LOAD( "93095-2.u90", 0x00000, 0x20000, CRC(4b123cc6) SHA1(ed61d3a2ab20c86b91fd7bafa717be3ce26159be) ) - - ROM_REGION( 0x280000, "bgtile", 0 ) - ROM_LOAD( "93095-5.u16", 0x000000, 0x100000, CRC(b1371808) SHA1(15fca313314ff2e0caff35841a2fdda97f6235a8) ) - ROM_LOAD( "93095-6.u17", 0x100000, 0x100000, CRC(29c85d80) SHA1(abd54f9c8bade21ea918a426627199da04193165) ) - ROM_LOAD( "93095-7.u18", 0x200000, 0x080000, CRC(2dd76149) SHA1(975e4d371fdfbbd9a568da4d4c91ffd3f0ae636e) ) - - ROM_REGION( 0x100000, "fgtile", 0 ) - ROM_LOAD( "93095-1.u15", 0x000000, 0x020000, CRC(6a579ee0) SHA1(438e87b930e068e0cf7352e614a14049ebde6b8a) ) - - ROM_REGION( 0x800000, "sprites", 0 ) - ROM_LOAD16_WORD_SWAP( "93095-12.u116", 0x000000, 0x100000, CRC(35f3c2a3) SHA1(70efebfe248401ba3d766dc0e4bcc2846cd0d9a0) ) - ROM_LOAD16_WORD_SWAP( "93095-13.u117", 0x100000, 0x100000, CRC(1ebd45da) SHA1(99b0ac734890673064b2a4b4b57ff2694e338dea) ) - ROM_LOAD16_WORD_SWAP( "93095-14.u118", 0x200000, 0x100000, CRC(760d871b) SHA1(4887122ad0518c90f08c11a7a6b694f3fd218498) ) - ROM_LOAD16_WORD_SWAP( "93095-15.u119", 0x300000, 0x100000, CRC(d011be88) SHA1(837409a2584abdf22e022b0f06181a600a974cbe) ) - ROM_LOAD16_WORD_SWAP( "93095-16.u120", 0x400000, 0x100000, CRC(a9c16c9c) SHA1(a34e81324c875c2a57f778d1dbdda8da81850a29) ) - ROM_LOAD16_WORD_SWAP( "93095-17.u121", 0x500000, 0x100000, CRC(51b57288) SHA1(821473d51565bc0a8b9a979723ce1307b97e517e) ) - ROM_LOAD16_WORD_SWAP( "93095-18.u122", 0x600000, 0x100000, CRC(b135e3f2) SHA1(339fb4007ca0f379b7554a1c4f711f494a371fb2) ) - ROM_LOAD16_WORD_SWAP( "93095-19.u123", 0x700000, 0x100000, CRC(67695537) SHA1(4c78ce3e36f27d2a6a9e50e8bf896335d4d0958a) ) - - ROM_REGION( 0x240000, "oki1", 0 ) // 8 bit ADPCM (banked) - ROM_LOAD( "93095-10.u48", 0x040000, 0x100000, CRC(329ac6c5) SHA1(e809b94e2623141f5a48995cfa97fe1ead7ab40b) ) - ROM_LOAD( "93095-11.u49", 0x140000, 0x100000, CRC(75d6097c) SHA1(3c89a7c9b12087e2d969b822419d3e5f98f5cb1d) ) - - ROM_REGION( 0x240000, "oki2", 0 ) // 8 bit ADPCM (banked) - ROM_LOAD( "93095-8.u46", 0x040000, 0x100000, CRC(f019bedb) SHA1(4b6e10f85671c75b666e547887d403d6e607cec8) ) - ROM_LOAD( "93095-9.u47", 0x140000, 0x100000, CRC(adc83765) SHA1(9e760443f9de21c1bb7e33eaa1541023fcdc60ab) ) - - ROM_REGION( 0x0220, "proms", 0 ) // unknown - ROM_LOAD( "22.u81", 0x000000, 0x0020, CRC(67d5ec4b) SHA1(87d32948a0c88277dcdd0eaa035bde40fc7db5fe) ) - ROM_LOAD( "21.u71", 0x000020, 0x0100, CRC(182cd81f) SHA1(3a76bea81b34ea7ccf56044206721058aa5b03e6) ) - ROM_LOAD( "20.u54", 0x000100, 0x0100, CRC(38bd0e2f) SHA1(20d311869642cd96bb831fdf4a458e0d872f03eb) ) -ROM_END - -ROM_START( powerinsj ) - ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code - ROM_LOAD16_WORD_SWAP( "93095-3j.u108", 0x00000, 0x80000, CRC(3050a3fb) SHA1(e7e729bf62266e2e78ccd84cf937abb99de18ad5) ) - ROM_LOAD16_WORD_SWAP( "93095-4.u109", 0x80000, 0x80000, CRC(d3d7a782) SHA1(7846de0ebb09bd9b2534cd451ff9aa5175e60647) ) - - ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code - ROM_LOAD( "93095-2.u90", 0x00000, 0x20000, CRC(4b123cc6) SHA1(ed61d3a2ab20c86b91fd7bafa717be3ce26159be) ) - - ROM_REGION( 0x280000, "bgtile", 0 ) - ROM_LOAD( "93095-5.u16", 0x000000, 0x100000, CRC(b1371808) SHA1(15fca313314ff2e0caff35841a2fdda97f6235a8) ) - ROM_LOAD( "93095-6.u17", 0x100000, 0x100000, CRC(29c85d80) SHA1(abd54f9c8bade21ea918a426627199da04193165) ) - ROM_LOAD( "93095-7.u18", 0x200000, 0x080000, CRC(2dd76149) SHA1(975e4d371fdfbbd9a568da4d4c91ffd3f0ae636e) ) - - ROM_REGION( 0x100000, "fgtile", 0 ) - ROM_LOAD( "93095-1.u15", 0x000000, 0x020000, CRC(6a579ee0) SHA1(438e87b930e068e0cf7352e614a14049ebde6b8a) ) - - ROM_REGION( 0x800000, "sprites", 0 ) - ROM_LOAD16_WORD_SWAP( "93095-12.u116", 0x000000, 0x100000, CRC(35f3c2a3) SHA1(70efebfe248401ba3d766dc0e4bcc2846cd0d9a0) ) - ROM_LOAD16_WORD_SWAP( "93095-13.u117", 0x100000, 0x100000, CRC(1ebd45da) SHA1(99b0ac734890673064b2a4b4b57ff2694e338dea) ) - ROM_LOAD16_WORD_SWAP( "93095-14.u118", 0x200000, 0x100000, CRC(760d871b) SHA1(4887122ad0518c90f08c11a7a6b694f3fd218498) ) - ROM_LOAD16_WORD_SWAP( "93095-15.u119", 0x300000, 0x100000, CRC(d011be88) SHA1(837409a2584abdf22e022b0f06181a600a974cbe) ) - ROM_LOAD16_WORD_SWAP( "93095-16.u120", 0x400000, 0x100000, CRC(a9c16c9c) SHA1(a34e81324c875c2a57f778d1dbdda8da81850a29) ) - ROM_LOAD16_WORD_SWAP( "93095-17.u121", 0x500000, 0x100000, CRC(51b57288) SHA1(821473d51565bc0a8b9a979723ce1307b97e517e) ) - ROM_LOAD16_WORD_SWAP( "93095-18.u122", 0x600000, 0x100000, CRC(b135e3f2) SHA1(339fb4007ca0f379b7554a1c4f711f494a371fb2) ) - ROM_LOAD16_WORD_SWAP( "93095-19.u123", 0x700000, 0x100000, CRC(67695537) SHA1(4c78ce3e36f27d2a6a9e50e8bf896335d4d0958a) ) - - ROM_REGION( 0x240000, "oki1", 0 ) // 8 bit ADPCM (banked) - ROM_LOAD( "93095-10.u48", 0x040000, 0x100000, CRC(329ac6c5) SHA1(e809b94e2623141f5a48995cfa97fe1ead7ab40b) ) - ROM_LOAD( "93095-11.u49", 0x140000, 0x100000, CRC(75d6097c) SHA1(3c89a7c9b12087e2d969b822419d3e5f98f5cb1d) ) - - ROM_REGION( 0x240000, "oki2", 0 ) // 8 bit ADPCM (banked) - ROM_LOAD( "93095-8.u46", 0x040000, 0x100000, CRC(f019bedb) SHA1(4b6e10f85671c75b666e547887d403d6e607cec8) ) - ROM_LOAD( "93095-9.u47", 0x140000, 0x100000, CRC(adc83765) SHA1(9e760443f9de21c1bb7e33eaa1541023fcdc60ab) ) - - ROM_REGION( 0x0220, "proms", 0 ) // unknown - ROM_LOAD( "22.u81", 0x000000, 0x0020, CRC(67d5ec4b) SHA1(87d32948a0c88277dcdd0eaa035bde40fc7db5fe) ) - ROM_LOAD( "21.u71", 0x000020, 0x0100, CRC(182cd81f) SHA1(3a76bea81b34ea7ccf56044206721058aa5b03e6) ) - ROM_LOAD( "20.u54", 0x000100, 0x0100, CRC(38bd0e2f) SHA1(20d311869642cd96bb831fdf4a458e0d872f03eb) ) -ROM_END - -ROM_START( powerinspu ) - ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code - ROM_LOAD16_WORD_SWAP( "3.p000.v4.0a.u116.27c240", 0x000000, 0x80000, CRC(d1dd5a3f) SHA1(b2a52a2bbdf63eddc04bae2b4322d6d320f35e89) ) - ROM_LOAD16_WORD_SWAP( "4.p000.v3.8.u117.27c4096", 0x080000, 0x80000, CRC(9c0f23cf) SHA1(9ac78939a743c340aa51ff1b05817866124acd34) ) - - ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code - ROM_LOAD( "2.sound 9.20.u74.27c1001", 0x000000, 0x20000, CRC(4b123cc6) SHA1(ed61d3a2ab20c86b91fd7bafa717be3ce26159be) ) - - ROM_REGION( 0x280000, "bgtile", 0 ) - ROM_LOAD( "ba0.s0.27c040", 0x000000, 0x80000, CRC(1975b4b8) SHA1(cb400967744fa602df1bd2d88950dfdbdc77073f) ) // located on OS93089 SUB daughterboard - ROM_LOAD( "ba1.s1.27c040", 0x080000, 0x80000, CRC(376e4919) SHA1(12baa17382c176838df1b5ef86f1fa6dbcb978dd) ) - ROM_LOAD( "ba2.s2.27c040", 0x100000, 0x80000, CRC(0d5ff532) SHA1(4febdb9cdacd85903a4a28e8df945dee0ce85558) ) - ROM_LOAD( "ba3.s3.27c040", 0x180000, 0x80000, CRC(99b25791) SHA1(82f4bb5780826773d2e5f7143afb3ba209f57652) ) - ROM_LOAD( "ba4.s4.27c040", 0x200000, 0x80000, CRC(2dd76149) SHA1(975e4d371fdfbbd9a568da4d4c91ffd3f0ae636e) ) - - ROM_REGION( 0x100000, "fgtile", 0 ) - ROM_LOAD( "1.text 1080.u16.27c010", 0x000000, 0x20000, CRC(6a579ee0) SHA1(438e87b930e068e0cf7352e614a14049ebde6b8a) ) - - ROM_REGION( 0x800000, "sprites", 0 ) - ROM_LOAD16_BYTE( "fo0.mo0.27c040", 0x000001, 0x80000, CRC(8b9b89c9) SHA1(f1d39d1a62e40a14642d8f22fc38b764465a8daa) ) // located on OS93089 SUB daughterboard - ROM_LOAD16_BYTE( "fe0.me0.27c040", 0x000000, 0x80000, CRC(4d127bdf) SHA1(26a7c277e7660a7c7c0c11cacadf815d2487ba8a) ) - ROM_LOAD16_BYTE( "fo1.mo1.27c040", 0x100001, 0x80000, CRC(298eb50e) SHA1(2b922c1473bb559a1e8bd6221619141658179bb9) ) - ROM_LOAD16_BYTE( "fe1.me1.27c040", 0x100000, 0x80000, CRC(57e6d283) SHA1(4701576c8663ba47f388a02e61ef078a9dbbd212) ) - ROM_LOAD16_BYTE( "fo2.mo2.27c040", 0x200001, 0x80000, CRC(fb184167) SHA1(20924d3f35509f2f6af61f565b852ea72326d02c) ) - ROM_LOAD16_BYTE( "fe2.me2.27c040", 0x200000, 0x80000, CRC(1b752a4d) SHA1(1b13f28af208542bee9da298d6e9db676cbc0845) ) - ROM_LOAD16_BYTE( "fo3.mo3.27c040", 0x300001, 0x80000, CRC(2f26ba7b) SHA1(026f960fa4de09ed940dd83a3db467c3676c5024) ) - ROM_LOAD16_BYTE( "fe3.me3.27c040", 0x300000, 0x80000, CRC(0263d89b) SHA1(526b8ed05dffcbe98a44372bd55ad7b0ba91fc0f) ) - ROM_LOAD16_BYTE( "fo4.mo4.27c040", 0x400001, 0x80000, CRC(c4633294) SHA1(9578f516eaf09e743ee0262ce227f811bea1be8f) ) - ROM_LOAD16_BYTE( "fe4.me4.27c040", 0x400000, 0x80000, CRC(5e4b5655) SHA1(f86509e75ec0c68f728715a5a325f6d1a30cfd93) ) - ROM_LOAD16_BYTE( "fo5.mo5.27c040", 0x500001, 0x80000, CRC(4d4b0e4e) SHA1(782c5edc533f10757cb18d2411046e44aa075ba1) ) - ROM_LOAD16_BYTE( "fe5.me5.27c040", 0x500000, 0x80000, CRC(7e9f2d2b) SHA1(cfee03c38a6c781ad370638748244a164b83d588) ) - ROM_LOAD16_BYTE( "fo6.mo6.27c040", 0x600001, 0x80000, CRC(0e7671f2) SHA1(301af5c4229451cba9fdf40285dd7243626ffed4) ) - ROM_LOAD16_BYTE( "fe6.me6.27c040", 0x600000, 0x80000, CRC(ee59b1ec) SHA1(437bc50c3b32c2edee549f5021345f1c924896b4) ) - ROM_LOAD16_BYTE( "fo7.mo7.27c040", 0x700001, 0x80000, CRC(9ab1998c) SHA1(fadaa4a46cefe0093ee1ebeddbae63143fa7bb5a) ) - ROM_LOAD16_BYTE( "fe7.me7.27c040", 0x700000, 0x80000, CRC(1ab0c88a) SHA1(8bc72732f5911e0d4e0cf12fd2fb12d67e03299e) ) - - ROM_REGION( 0x240000, "oki1", 0 ) // 8 bit ADPCM (banked) - ROM_LOAD( "ao0.ad00.27c040", 0x040000, 0x80000, CRC(8cd6824e) SHA1(aa6d8917558de4f2aa8d80527209b9fe91122eb3) ) // located on OS93089 SUB daughterboard - ROM_LOAD( "ao1.ad01.27c040", 0x0c0000, 0x80000, CRC(e31ae04d) SHA1(c08d58a4250d8bdb68b8e5012624f345936520e1) ) - ROM_LOAD( "ao2.ad02.27c040", 0x140000, 0x80000, CRC(c4c9f599) SHA1(1d74acd626406052bec533a918ca24e14a2578f2) ) - ROM_LOAD( "ao3.ad03.27c040", 0x1c0000, 0x80000, CRC(f0a9f0e1) SHA1(4221e0824cdc8bcd6ea1c3811f4e3b7cd99478f2) ) - - ROM_REGION( 0x240000, "oki2", 0 ) // 8 bit ADPCM (banked) - ROM_LOAD( "ad10.ad10.27c040", 0x040000, 0x80000, CRC(62557502) SHA1(d72abdaec1c6f55f9b0099b7a8a297e0e14f920c) ) // located on OS93089 SUB daughterboard - ROM_LOAD( "ad11.ad11.27c040", 0x0c0000, 0x80000, CRC(dbc86bd7) SHA1(6f1bc3c7e6976fdcd4b2341cea07002fb0cefb14) ) - ROM_LOAD( "ad12.ad12.27c040", 0x140000, 0x80000, CRC(5839a2bd) SHA1(53988086ef97b2671044f6da9d97b1886900b64d) ) - ROM_LOAD( "ad13.ad13.27c040", 0x1c0000, 0x80000, CRC(446f9dc3) SHA1(5c81eb9a7cbea995db9a10d3b6460d02e104825f) ) - - ROM_REGION( 0x0220, "proms", 0 ) // unknown - ROM_LOAD( "22.u81", 0x000000, 0x0020, CRC(67d5ec4b) SHA1(87d32948a0c88277dcdd0eaa035bde40fc7db5fe) ) - ROM_LOAD( "21.u71", 0x000020, 0x0100, CRC(182cd81f) SHA1(3a76bea81b34ea7ccf56044206721058aa5b03e6) ) - ROM_LOAD( "20.u54", 0x000100, 0x0100, CRC(38bd0e2f) SHA1(20d311869642cd96bb831fdf4a458e0d872f03eb) ) -ROM_END - -ROM_START( powerinspj ) - ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code - ROM_LOAD16_WORD_SWAP( "3.p000.pc_j_12-1_155e.u116", 0x000000, 0x80000, CRC(4ea18490) SHA1(6b933b7ee11c65adf15430c8b185feaddb1c0bb0) ) // labeled: PC J 12/1 155E - ROM_LOAD16_WORD_SWAP( "4.p000.f_p4.u117", 0x080000, 0x80000, CRC(9c0f23cf) SHA1(9ac78939a743c340aa51ff1b05817866124acd34) ) // labeled: F P4 - - ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code - ROM_LOAD( "2.sound 9.20.u74.27c1001", 0x000000, 0x20000, CRC(4b123cc6) SHA1(ed61d3a2ab20c86b91fd7bafa717be3ce26159be) ) - - ROM_REGION( 0x280000, "bgtile", 0 ) - ROM_LOAD( "ba0.s0.27c040", 0x000000, 0x80000, CRC(1975b4b8) SHA1(cb400967744fa602df1bd2d88950dfdbdc77073f) ) // located on OS93089 SUB daughterboard - ROM_LOAD( "ba1.s1.27c040", 0x080000, 0x80000, CRC(376e4919) SHA1(12baa17382c176838df1b5ef86f1fa6dbcb978dd) ) - ROM_LOAD( "ba2.s2.27c040", 0x100000, 0x80000, CRC(0d5ff532) SHA1(4febdb9cdacd85903a4a28e8df945dee0ce85558) ) - ROM_LOAD( "ba3.s3.27c040", 0x180000, 0x80000, CRC(99b25791) SHA1(82f4bb5780826773d2e5f7143afb3ba209f57652) ) - ROM_LOAD( "ba4.s4.27c040", 0x200000, 0x80000, CRC(2dd76149) SHA1(975e4d371fdfbbd9a568da4d4c91ffd3f0ae636e) ) - - ROM_REGION( 0x100000, "fgtile", 0 ) - ROM_LOAD( "1.text 1080.u16.27c010", 0x000000, 0x20000, CRC(6a579ee0) SHA1(438e87b930e068e0cf7352e614a14049ebde6b8a) ) - - ROM_REGION( 0x800000, "sprites", 0 ) - ROM_LOAD16_BYTE( "fo0.mo0.27c040", 0x000001, 0x80000, CRC(8b9b89c9) SHA1(f1d39d1a62e40a14642d8f22fc38b764465a8daa) ) // located on OS93089 SUB daughterboard - ROM_LOAD16_BYTE( "fe0.me0.27c040", 0x000000, 0x80000, CRC(4d127bdf) SHA1(26a7c277e7660a7c7c0c11cacadf815d2487ba8a) ) - ROM_LOAD16_BYTE( "fo1.mo1.27c040", 0x100001, 0x80000, CRC(298eb50e) SHA1(2b922c1473bb559a1e8bd6221619141658179bb9) ) - ROM_LOAD16_BYTE( "fe1.me1.27c040", 0x100000, 0x80000, CRC(57e6d283) SHA1(4701576c8663ba47f388a02e61ef078a9dbbd212) ) - ROM_LOAD16_BYTE( "fo2.mo2.27c040", 0x200001, 0x80000, CRC(fb184167) SHA1(20924d3f35509f2f6af61f565b852ea72326d02c) ) - ROM_LOAD16_BYTE( "fe2.me2.27c040", 0x200000, 0x80000, CRC(1b752a4d) SHA1(1b13f28af208542bee9da298d6e9db676cbc0845) ) - ROM_LOAD16_BYTE( "fo3.mo3.27c040", 0x300001, 0x80000, CRC(2f26ba7b) SHA1(026f960fa4de09ed940dd83a3db467c3676c5024) ) - ROM_LOAD16_BYTE( "fe3.me3.27c040", 0x300000, 0x80000, CRC(0263d89b) SHA1(526b8ed05dffcbe98a44372bd55ad7b0ba91fc0f) ) - ROM_LOAD16_BYTE( "fo4.mo4.27c040", 0x400001, 0x80000, CRC(c4633294) SHA1(9578f516eaf09e743ee0262ce227f811bea1be8f) ) - ROM_LOAD16_BYTE( "fe4.me4.27c040", 0x400000, 0x80000, CRC(5e4b5655) SHA1(f86509e75ec0c68f728715a5a325f6d1a30cfd93) ) - ROM_LOAD16_BYTE( "fo5.mo5.27c040", 0x500001, 0x80000, CRC(4d4b0e4e) SHA1(782c5edc533f10757cb18d2411046e44aa075ba1) ) - ROM_LOAD16_BYTE( "fe5.me5.27c040", 0x500000, 0x80000, CRC(7e9f2d2b) SHA1(cfee03c38a6c781ad370638748244a164b83d588) ) - ROM_LOAD16_BYTE( "fo6.mo6.27c040", 0x600001, 0x80000, CRC(0e7671f2) SHA1(301af5c4229451cba9fdf40285dd7243626ffed4) ) - ROM_LOAD16_BYTE( "fe6.me6.27c040", 0x600000, 0x80000, CRC(ee59b1ec) SHA1(437bc50c3b32c2edee549f5021345f1c924896b4) ) - ROM_LOAD16_BYTE( "fo7.mo7.27c040", 0x700001, 0x80000, CRC(9ab1998c) SHA1(fadaa4a46cefe0093ee1ebeddbae63143fa7bb5a) ) - ROM_LOAD16_BYTE( "fe7.me7.27c040", 0x700000, 0x80000, CRC(1ab0c88a) SHA1(8bc72732f5911e0d4e0cf12fd2fb12d67e03299e) ) - - ROM_REGION( 0x240000, "oki1", 0 ) // 8 bit ADPCM (banked) - ROM_LOAD( "ao0.ad00.27c040", 0x040000, 0x80000, CRC(8cd6824e) SHA1(aa6d8917558de4f2aa8d80527209b9fe91122eb3) ) // located on OS93089 SUB daughterboard - ROM_LOAD( "ao1.ad01.27c040", 0x0c0000, 0x80000, CRC(e31ae04d) SHA1(c08d58a4250d8bdb68b8e5012624f345936520e1) ) - ROM_LOAD( "ao2.ad02.27c040", 0x140000, 0x80000, CRC(c4c9f599) SHA1(1d74acd626406052bec533a918ca24e14a2578f2) ) - ROM_LOAD( "ao3.ad03.27c040", 0x1c0000, 0x80000, CRC(f0a9f0e1) SHA1(4221e0824cdc8bcd6ea1c3811f4e3b7cd99478f2) ) - - ROM_REGION( 0x240000, "oki2", 0 ) // 8 bit ADPCM (banked) - ROM_LOAD( "ad10.ad10.27c040", 0x040000, 0x80000, CRC(62557502) SHA1(d72abdaec1c6f55f9b0099b7a8a297e0e14f920c) ) // located on OS93089 SUB daughterboard - ROM_LOAD( "ad11.ad11.27c040", 0x0c0000, 0x80000, CRC(dbc86bd7) SHA1(6f1bc3c7e6976fdcd4b2341cea07002fb0cefb14) ) - ROM_LOAD( "ad12.ad12.27c040", 0x140000, 0x80000, CRC(5839a2bd) SHA1(53988086ef97b2671044f6da9d97b1886900b64d) ) - ROM_LOAD( "ad13.ad13.27c040", 0x1c0000, 0x80000, CRC(446f9dc3) SHA1(5c81eb9a7cbea995db9a10d3b6460d02e104825f) ) - - ROM_REGION( 0x0220, "proms", 0 ) // unknown - ROM_LOAD( "22.u81", 0x000000, 0x0020, CRC(67d5ec4b) SHA1(87d32948a0c88277dcdd0eaa035bde40fc7db5fe) ) - ROM_LOAD( "21.u71", 0x000020, 0x0100, CRC(182cd81f) SHA1(3a76bea81b34ea7ccf56044206721058aa5b03e6) ) - ROM_LOAD( "20.u54", 0x000100, 0x0100, CRC(38bd0e2f) SHA1(20d311869642cd96bb831fdf4a458e0d872f03eb) ) -ROM_END - -/*************************************************************************** - - Power Instinct - -Location Device File ID Checksum ----------------------------------------------- - 27C240 ROM1 4EA1 [ MAIN PROGRAM ] - 27C240 ROM2 FE60 [ PROGRAM DATA ] - 27C010 ROM3 B9F7 [ CHARACTER ] - 27C040 ROM4 2780 [ BACKGROUND ] - 27C040 ROM5 98E0 [ PCM DATA ] - 23C1600 ROM6 D9E9 [ BACKGROUND ] - 23C1600 ROM7 8B04 [ MOTION OBJ ] - 23C1600 ROM8 54B2 [ MOTION OBJ ] - 23C1600 ROM9 C7C8 [ MOTION OBJ ] - 23C1600 ROM10 852A [ MOTION OBJ ] - -Notes: This archive is of a bootleg version - -Brief hardware overview ------------------------ - -Main processor - 68000 - - TPC1020AFN-084C (CPLD) - -Sound processor - Main processor - - K-665-9249 (M6295) - -***************************************************************************/ - -ROM_START( powerinsa ) - ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code - ROM_LOAD16_WORD_SWAP( "rom1", 0x000000, 0x080000, CRC(b86c84d6) SHA1(2ec0933130925dfae859ea6abe62a8c92385aee8) ) - ROM_LOAD16_WORD_SWAP( "rom2", 0x080000, 0x080000, CRC(d3d7a782) SHA1(7846de0ebb09bd9b2534cd451ff9aa5175e60647) ) - - ROM_REGION( 0x280000, "bgtile", 0 ) - ROM_LOAD( "rom6", 0x000000, 0x200000, CRC(b6c10f80) SHA1(feece0aeaa01a455d0c4885a3699f8bda14fe00f) ) - ROM_LOAD( "rom4", 0x200000, 0x080000, CRC(2dd76149) SHA1(975e4d371fdfbbd9a568da4d4c91ffd3f0ae636e) ) - - ROM_REGION( 0x100000, "fgtile", 0 ) - ROM_LOAD( "rom3", 0x000000, 0x020000, CRC(6a579ee0) SHA1(438e87b930e068e0cf7352e614a14049ebde6b8a) ) - - ROM_REGION( 0x800000, "sprites", 0 ) - ROM_LOAD16_WORD_SWAP( "rom10", 0x000000, 0x200000, CRC(efad50e8) SHA1(89e8c307b927e987a32d22ab4ab7f3be037cca03) ) - ROM_LOAD16_WORD_SWAP( "rom9", 0x200000, 0x200000, CRC(08229592) SHA1(759679e89832b475adfdc783630d9ee2c105b0f3) ) - ROM_LOAD16_WORD_SWAP( "rom8", 0x400000, 0x200000, CRC(b02fdd6d) SHA1(1e2c52b4e9999f0b564fcf13ff41b097ad7d0c39) ) - ROM_LOAD16_WORD_SWAP( "rom7", 0x600000, 0x200000, CRC(92ab9996) SHA1(915ec8f383cc3652c3816a9b56ee54e22e104a5c) ) - - ROM_REGION( 0x080000, "oki1", 0 ) // 8 bit ADPCM (banked) - ROM_LOAD( "rom5", 0x000000, 0x080000, CRC(88579c8f) SHA1(13083934ab294c9b08d3e36f55c00a6a2e5a0507) ) -ROM_END - -/*************************************************************************** - -Power Instinct -Atlus, 1993 - -This is a bootleg US version with different sound hardware to the existing bootleg set. -The PCB is very large and has 2 plug-in daughterboards and many mask ROMs. -The addition of the contents of the mask ROMs would probably equal the contents of presumably -larger mask ROMs found on the original PCB.... - -PCB Layout - -|-------------------------------------------------------------| -| M6295 4A 5A 62256 62256 | -| M6295 4B 5B 62256 62256 | -| 4C 5C 62256 62256 | -| 4D 5D 62256 62256 | -| Z80 16MHz 62256 62256 | -| 1F 62256 62256 | -| 6264 6116 62256 62256 | -| 6116 62256 62256 | -|J | -|A | -|M | -|M | -|A 82S123 11G 12G 13G 14G| -| 11I | -| TPC1020 6116 11J | -|DSW1 6116 6N 6116 11K 13K | -|DSW2 6116 6264 11L 13L 14M| -| 82S147 6264 11O 13O 14N| -| 11P 12P 13P 14P| -| 2Q 62256 11Q 13Q | -| 2R 62256 13R | -| 68000 | -| 12MHz 14.31818MHz | -|-------------------------------------------------------------| - -Notes: - 68000 clock: 12.000MHz - Z80 clock : 6.000MHz - M6295 clock: 4.000MHz (both); sample rate = 4000000/165 (both) - VSync : 60Hz - - ROMs 1F and 6N are 1M mask (MX27C1000), all other ROMs are 4M mask (MX27C4000). - ROMS at 5* are located on a plug-in daughterboard. - ROMS at 11*, 12*, 13G, 13P and 14* are located on a plug-in daughterboard. - 82S123 and 82S147 are PROMs. - -***************************************************************************/ - -ROM_START( powerinsb ) - ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code - ROM_LOAD16_BYTE( "2q.bin", 0x000000, 0x80000, CRC(11bf3f2a) SHA1(c840add78da9b19839c667f9bbd77e0a7c560ed7) ) - ROM_LOAD16_BYTE( "2r.bin", 0x000001, 0x80000, CRC(d8d621be) SHA1(91d501ac661c1ff52c85eee96c455c008a7dad1c) ) - - ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code - ROM_LOAD( "1f.bin", 0x000000, 0x20000, CRC(4b123cc6) SHA1(ed61d3a2ab20c86b91fd7bafa717be3ce26159be) ) - - ROM_REGION( 0x280000, "bgtile", 0 ) - ROM_LOAD( "13k.bin", 0x000000, 0x80000, CRC(1975b4b8) SHA1(cb400967744fa602df1bd2d88950dfdbdc77073f) ) - ROM_LOAD( "13l.bin", 0x080000, 0x80000, CRC(376e4919) SHA1(12baa17382c176838df1b5ef86f1fa6dbcb978dd) ) - ROM_LOAD( "13o.bin", 0x100000, 0x80000, CRC(0d5ff532) SHA1(4febdb9cdacd85903a4a28e8df945dee0ce85558) ) - ROM_LOAD( "13q.bin", 0x180000, 0x80000, CRC(99b25791) SHA1(82f4bb5780826773d2e5f7143afb3ba209f57652) ) - ROM_LOAD( "13r.bin", 0x200000, 0x80000, CRC(2dd76149) SHA1(975e4d371fdfbbd9a568da4d4c91ffd3f0ae636e) ) - - ROM_REGION( 0x100000, "fgtile", 0 ) - ROM_LOAD( "6n.bin", 0x000000, 0x20000, CRC(6a579ee0) SHA1(438e87b930e068e0cf7352e614a14049ebde6b8a) ) - - ROM_REGION( 0x800000, "sprites", 0 ) - ROM_LOAD16_BYTE( "14g.bin", 0x000001, 0x80000, CRC(8b9b89c9) SHA1(f1d39d1a62e40a14642d8f22fc38b764465a8daa) ) - ROM_LOAD16_BYTE( "11g.bin", 0x000000, 0x80000, CRC(4d127bdf) SHA1(26a7c277e7660a7c7c0c11cacadf815d2487ba8a) ) - ROM_LOAD16_BYTE( "13g.bin", 0x100001, 0x80000, CRC(298eb50e) SHA1(2b922c1473bb559a1e8bd6221619141658179bb9) ) - ROM_LOAD16_BYTE( "11i.bin", 0x100000, 0x80000, CRC(57e6d283) SHA1(4701576c8663ba47f388a02e61ef078a9dbbd212) ) - ROM_LOAD16_BYTE( "12g.bin", 0x200001, 0x80000, CRC(fb184167) SHA1(20924d3f35509f2f6af61f565b852ea72326d02c) ) - ROM_LOAD16_BYTE( "11j.bin", 0x200000, 0x80000, CRC(1b752a4d) SHA1(1b13f28af208542bee9da298d6e9db676cbc0845) ) - ROM_LOAD16_BYTE( "14m.bin", 0x300001, 0x80000, CRC(2f26ba7b) SHA1(026f960fa4de09ed940dd83a3db467c3676c5024) ) - ROM_LOAD16_BYTE( "11k.bin", 0x300000, 0x80000, CRC(0263d89b) SHA1(526b8ed05dffcbe98a44372bd55ad7b0ba91fc0f) ) - ROM_LOAD16_BYTE( "14n.bin", 0x400001, 0x80000, CRC(c4633294) SHA1(9578f516eaf09e743ee0262ce227f811bea1be8f) ) - ROM_LOAD16_BYTE( "11l.bin", 0x400000, 0x80000, CRC(5e4b5655) SHA1(f86509e75ec0c68f728715a5a325f6d1a30cfd93) ) - ROM_LOAD16_BYTE( "14p.bin", 0x500001, 0x80000, CRC(4d4b0e4e) SHA1(782c5edc533f10757cb18d2411046e44aa075ba1) ) - ROM_LOAD16_BYTE( "11o.bin", 0x500000, 0x80000, CRC(7e9f2d2b) SHA1(cfee03c38a6c781ad370638748244a164b83d588) ) - ROM_LOAD16_BYTE( "13p.bin", 0x600001, 0x80000, CRC(0e7671f2) SHA1(301af5c4229451cba9fdf40285dd7243626ffed4) ) - ROM_LOAD16_BYTE( "11p.bin", 0x600000, 0x80000, CRC(ee59b1ec) SHA1(437bc50c3b32c2edee549f5021345f1c924896b4) ) - ROM_LOAD16_BYTE( "12p.bin", 0x700001, 0x80000, CRC(9ab1998c) SHA1(fadaa4a46cefe0093ee1ebeddbae63143fa7bb5a) ) - ROM_LOAD16_BYTE( "11q.bin", 0x700000, 0x80000, CRC(1ab0c88a) SHA1(8bc72732f5911e0d4e0cf12fd2fb12d67e03299e) ) - - ROM_REGION( 0x240000, "oki1", 0 ) // 8 bit ADPCM (banked) - ROM_LOAD( "4a.bin", 0x040000, 0x80000, CRC(8cd6824e) SHA1(aa6d8917558de4f2aa8d80527209b9fe91122eb3) ) - ROM_LOAD( "4b.bin", 0x0c0000, 0x80000, CRC(e31ae04d) SHA1(c08d58a4250d8bdb68b8e5012624f345936520e1) ) - ROM_LOAD( "4c.bin", 0x140000, 0x80000, CRC(c4c9f599) SHA1(1d74acd626406052bec533a918ca24e14a2578f2) ) - ROM_LOAD( "4d.bin", 0x1c0000, 0x80000, CRC(f0a9f0e1) SHA1(4221e0824cdc8bcd6ea1c3811f4e3b7cd99478f2) ) - - ROM_REGION( 0x240000, "oki2", 0 ) // 8 bit ADPCM (banked) - ROM_LOAD( "5a.bin", 0x040000, 0x80000, CRC(62557502) SHA1(d72abdaec1c6f55f9b0099b7a8a297e0e14f920c) ) - ROM_LOAD( "5b.bin", 0x0c0000, 0x80000, CRC(dbc86bd7) SHA1(6f1bc3c7e6976fdcd4b2341cea07002fb0cefb14) ) - ROM_LOAD( "5c.bin", 0x140000, 0x80000, CRC(5839a2bd) SHA1(53988086ef97b2671044f6da9d97b1886900b64d) ) - ROM_LOAD( "5d.bin", 0x1c0000, 0x80000, CRC(446f9dc3) SHA1(5c81eb9a7cbea995db9a10d3b6460d02e104825f) ) - - ROM_REGION( 0x0220, "proms", 0 ) // unknown - ROM_LOAD( "82s123.bin", 0x0000, 0x0020, CRC(67d5ec4b) SHA1(87d32948a0c88277dcdd0eaa035bde40fc7db5fe) ) - ROM_LOAD( "82s147.bin", 0x0020, 0x0200, CRC(d7818542) SHA1(e94f8004c804f260874a117d59dfa0637c5d3d73) ) -ROM_END - -ROM_START( powerinsc ) - ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code - ROM_LOAD16_BYTE( "10.040.u41", 0x000000, 0x80000, CRC(88e1244b) SHA1(595a560b807eab9576ed057a7e532c83860e9c40) ) - ROM_LOAD16_BYTE( "11.040.u39", 0x000001, 0x80000, CRC(46cd506f) SHA1(4585824f65e2b7da9f815fee92bb5f6d250a286d) ) - - ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code - ROM_LOAD( "1.010.u2", 0x000000, 0x20000, CRC(4b123cc6) SHA1(ed61d3a2ab20c86b91fd7bafa717be3ce26159be) ) - - ROM_REGION( 0x300000, "bgtile", 0 ) - ROM_LOAD16_BYTE( "33.040.u99", 0x000000, 0x80000, CRC(9b56a394) SHA1(f9451d8d5a911f4daa0f57af496dae08d320b3b2) ) - ROM_LOAD16_BYTE( "22.040.u97", 0x000001, 0x80000, CRC(1e693f05) SHA1(049eeabd9b4f55f2f314f4f6871b1a0e1ec39517) ) - ROM_LOAD16_BYTE( "32.040.u100", 0x100000, 0x80000, CRC(7749bc80) SHA1(ceee996e694865dfbc48b5365731f4903ca674f1) ) - ROM_LOAD16_BYTE( "21.040.u98", 0x100001, 0x80000, CRC(e1586a71) SHA1(29df13a35a0c679bad0955961e7e0e70f93482c9) ) - ROM_LOAD16_BYTE( "31.040.u102", 0x200000, 0x80000, CRC(ac5a2952) SHA1(1b15873045cd65aa823c81b293b20ef6c20c6aef) ) - ROM_LOAD16_BYTE( "20.040.u101", 0x200001, 0x80000, CRC(e4b2823c) SHA1(1ef41ff625ad82dcc85994f87e1d82fc11e26dd8) ) - - // TODO: check sprites' ROM loading - ROM_REGION( 0x800000, "sprites", 0 ) - ROM_LOAD16_BYTE( "30.040.u82", 0x000000, 0x80000, CRC(6668d29d) SHA1(41b7ab49b72a1ffc7618c3fc45a1c1bbe1d84d21) ) - ROM_LOAD16_BYTE( "19.040.u91", 0x000001, 0x80000, CRC(17659d0c) SHA1(394b5dbb4461d0c05599d1ecd9fe92de999970fa) ) - ROM_LOAD16_BYTE( "29.040.u85", 0x100000, 0x80000, CRC(c349e556) SHA1(a89d4292a6f3b3cfd5b85f8db6de207831e779e6) ) - ROM_LOAD16_BYTE( "18.040.u84", 0x100001, 0x80000, CRC(8716f8d3) SHA1(469a967784b5ab44d91839ff0dd2b361f664ad7e) ) - ROM_LOAD16_BYTE( "28.040.u88", 0x200000, 0x80000, CRC(f93f10ce) SHA1(de254d7c904de95d676cd283276ef8a5cafde588) ) - ROM_LOAD16_BYTE( "17.040.u87", 0x200001, 0x80000, CRC(fa1ef844) SHA1(be11c84186f5e0a7990c005ed27b5f71e50bc450) ) - ROM_LOAD16_BYTE( "27.040.u91", 0x300000, 0x80000, CRC(962f3455) SHA1(3637cd6047f94bc4fc8dd8d7fbc1a48b99993b0b) ) - ROM_LOAD16_BYTE( "16.040.u90", 0x300001, 0x80000, CRC(e1a37b42) SHA1(37aa82ba166ff6549c9428e42bbad10f252d14f8) ) - ROM_LOAD16_BYTE( "26.040.u93", 0x400000, 0x80000, CRC(6e65099c) SHA1(5c261367f086d52ec5680a0a9c0f85992c4473b9) ) - ROM_LOAD16_BYTE( "15.040.u81", 0x400001, 0x80000, CRC(035316d3) SHA1(c1c6f243213f05a53f0fc4f3df530895c34355a9) ) - ROM_LOAD16_BYTE( "25.040.u94", 0x500000, 0x80000, CRC(a250dea8) SHA1(6b4c5ad35f4f4cdab516118a21c58617044c3208) ) - ROM_LOAD16_BYTE( "14.040.u96", 0x500001, 0x80000, CRC(dd976689) SHA1(ba7e80a94e6c6bb7a5b569fb5440e774cd89b79d) ) - ROM_LOAD16_BYTE( "24.040.u95", 0x600000, 0x80000, CRC(851008f4) SHA1(cd6e5d8e6807fc3224022ca53f02f390e1232b06) ) - ROM_LOAD16_BYTE( "13.040.u89", 0x600001, 0x80000, CRC(867262d6) SHA1(bf0b13a5bb818741150d09be44968779c55c5b96) ) - ROM_LOAD16_BYTE( "23.040.u96", 0x700000, 0x80000, CRC(625c5b7b) SHA1(ddac164cd92459bdce5905b31eccded9b1c06086) ) - ROM_LOAD16_BYTE( "12.040.u92", 0x700001, 0x80000, CRC(08c4e478) SHA1(172dd9532a9240014afb4817b61a3e8122be8f0c) ) - - ROM_REGION( 0x240000, "oki1", 0 ) // 8 bit ADPCM (banked) - ROM_LOAD( "9.040.u32", 0x040000, 0x80000, CRC(8cd6824e) SHA1(aa6d8917558de4f2aa8d80527209b9fe91122eb3) ) - ROM_LOAD( "8.040.u30", 0x0c0000, 0x80000, CRC(e31ae04d) SHA1(c08d58a4250d8bdb68b8e5012624f345936520e1) ) - ROM_LOAD( "7.040.u33", 0x140000, 0x80000, CRC(c4c9f599) SHA1(1d74acd626406052bec533a918ca24e14a2578f2) ) - ROM_LOAD( "6.040.u31", 0x1c0000, 0x80000, CRC(f0a9f0e1) SHA1(4221e0824cdc8bcd6ea1c3811f4e3b7cd99478f2) ) - - ROM_REGION( 0x240000, "oki2", 0 ) // 8 bit ADPCM (banked) - ROM_LOAD( "5.040.u36", 0x040000, 0x80000, CRC(62557502) SHA1(d72abdaec1c6f55f9b0099b7a8a297e0e14f920c) ) - ROM_LOAD( "4.040.u34", 0x0c0000, 0x80000, CRC(dbc86bd7) SHA1(6f1bc3c7e6976fdcd4b2341cea07002fb0cefb14) ) - ROM_LOAD( "3.040.u37", 0x140000, 0x80000, CRC(5839a2bd) SHA1(53988086ef97b2671044f6da9d97b1886900b64d) ) - ROM_LOAD( "2.040.u35", 0x1c0000, 0x80000, CRC(446f9dc3) SHA1(5c81eb9a7cbea995db9a10d3b6460d02e104825f) ) -ROM_END - -} // anonymous namespace - - -// all supported sets give a 93.10.20 date -GAME( 1993, powerins, 0, powerins, powerins, powerins_state, empty_init, ROT0, "Atlus", "Power Instinct (USA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, powerinsj, powerins, powerins, powerinj, powerins_state, empty_init, ROT0, "Atlus", "Gouketsuji Ichizoku (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, powerinspu, powerins, powerins, powerinj, powerins_state, empty_init, ROT0, "Atlus", "Power Instinct (USA, prototype)", MACHINE_SUPPORTS_SAVE ) // boots as 93.10.20 just like the other sets, but code is different -GAME( 1993, powerinspj, powerins, powerins, powerinj, powerins_state, empty_init, ROT0, "Atlus", "Gouketsuji Ichizoku (Japan, prototype)", MACHINE_SUPPORTS_SAVE ) // boots as 93.10.20 just like the other sets, but code is different -GAME( 1993, powerinsa, powerins, powerinsa, powerins, powerinsa_state, empty_init, ROT0, "bootleg", "Power Instinct (USA, bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, powerinsb, powerins, powerinsb, powerins, powerins_state, empty_init, ROT0, "bootleg", "Power Instinct (USA, bootleg set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, powerinsc, powerins, powerinsc, powerins, powerins_state, empty_init, ROT0, "bootleg", "Power Instinct (USA, bootleg set 3)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // different sprites' format not implemented -- cgit v1.2.3