summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Sergio G. <sergiopolog@gmail.com>2024-07-27 03:10:47 +0200
committer GitHub <noreply@github.com>2024-07-26 21:10:47 -0400
commitaaae6d69543f2718ee89f45b097af8d7cb76695d (patch)
tree6d40883fe621442b0caec216209cabd2893dfac4
parentcb354265c102fc949c537201fe4651f0aef0e085 (diff)
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`
-rw-r--r--src/mame/mame.lst16
-rw-r--r--src/mame/nmk/nmk16.cpp1655
-rw-r--r--src/mame/nmk/nmk16.h41
-rw-r--r--src/mame/nmk/nmk16_v.cpp62
-rw-r--r--src/mame/nmk/powerins.cpp1096
5 files changed, 1512 insertions, 1358 deletions
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<unsigned Chip>
+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<unsigned Chip>
-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<unsigned Chip> void tharrier_okibank_w(u8 data);
+ u8 powerins_bootleg_fake_ym2203_r();
required_device<cpu_device> m_maincpu;
optional_device<cpu_device> m_audiocpu;
@@ -120,6 +138,7 @@ protected:
optional_region_ptr<u16> 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<unsigned Chip> void tharrier_oki_bankswitch_w(u8 data);
u16 vandykeb_r();
u16 tdragonb_prot_r();
template<unsigned Layer> 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<unsigned Layer, unsigned Gfx> 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