summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/psikyo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/psikyo.cpp')
-rw-r--r--src/mame/drivers/psikyo.cpp193
1 files changed, 101 insertions, 92 deletions
diff --git a/src/mame/drivers/psikyo.cpp b/src/mame/drivers/psikyo.cpp
index 5492b3ce37c..ca2e2365af8 100644
--- a/src/mame/drivers/psikyo.cpp
+++ b/src/mame/drivers/psikyo.cpp
@@ -97,7 +97,7 @@ CUSTOM_INPUT_MEMBER(psikyo_state::mcu_status_r)
01A550: andi.b #$4, D0
01A554: bne $1a54e
- Interestingly, s1945jn has the code that spins on this bit,
+ Interestingly, s1945nj has the code that spins on this bit,
but said code is never reached. Prototype? */
if (m_mcu_status)
ret = 0x01;
@@ -107,19 +107,19 @@ CUSTOM_INPUT_MEMBER(psikyo_state::mcu_status_r)
return ret;
}
-static const uint8_t s1945_table[256] = {
+static const u8 s1945_table[256] = {
0x00, 0x00, 0x64, 0xae, 0x00, 0x00, 0x26, 0x2c, 0x00, 0x00, 0x2c, 0xda, 0x00, 0x00, 0x2c, 0xbc,
0x00, 0x00, 0x2c, 0x9e, 0x00, 0x00, 0x2f, 0x0e, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0xc5, 0x1e,
0x00, 0x00, 0x32, 0x90, 0x00, 0x00, 0xac, 0x5c, 0x00, 0x00, 0x2b, 0xc0
};
-static const uint8_t s1945a_table[256] = {
+static const u8 s1945a_table[256] = {
0x00, 0x00, 0x64, 0xbe, 0x00, 0x00, 0x26, 0x2c, 0x00, 0x00, 0x2c, 0xda, 0x00, 0x00, 0x2c, 0xbc,
0x00, 0x00, 0x2c, 0x9e, 0x00, 0x00, 0x2f, 0x0e, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0xc7, 0x2a,
0x00, 0x00, 0x32, 0x90, 0x00, 0x00, 0xad, 0x4c, 0x00, 0x00, 0x2b, 0xc0
};
-static const uint8_t s1945j_table[256] = {
+static const u8 s1945j_table[256] = {
0x00, 0x00, 0x64, 0xb6, 0x00, 0x00, 0x26, 0x2c, 0x00, 0x00, 0x2c, 0xda, 0x00, 0x00, 0x2c, 0xbc,
0x00, 0x00, 0x2c, 0x9e, 0x00, 0x00, 0x2f, 0x0e, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0xc5, 0x92,
0x00, 0x00, 0x32, 0x90, 0x00, 0x00, 0xac, 0x64, 0x00, 0x00, 0x2b, 0xc0
@@ -148,8 +148,8 @@ WRITE32_MEMBER(psikyo_state::s1945_mcu_w)
m_s1945_mcu_direction = data;
break;
case 0x07:
- psikyo_switch_banks(1, (data >> 6) & 3);
- psikyo_switch_banks(0, (data >> 4) & 3);
+ switch_bgbanks(1, (data >> 6) & 3);
+ switch_bgbanks(0, (data >> 4) & 3);
m_s1945_mcu_bctrl = data;
break;
case 0x0b:
@@ -201,7 +201,7 @@ READ32_MEMBER(psikyo_state::s1945_mcu_r)
{
case 0:
{
- uint32_t res;
+ u32 res;
if (m_s1945_mcu_control & 16)
{
res = m_s1945_mcu_latching & 4 ? 0x0000ff00 : m_s1945_mcu_latch1 << 8;
@@ -250,16 +250,16 @@ WRITE32_MEMBER(psikyo_state::vram_w)
void psikyo_state::psikyo_map(address_map &map)
{
- map(0x000000, 0x0fffff).rom(); // ROM (not all used)
+ map(0x000000, 0x0fffff).rom(); // ROM (not all used)
map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites, buffered by two frames (list buffered + fb buffered)
map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // Palette
- map(0x800000, 0x801fff).ram().w(FUNC(psikyo_state::vram_w<0>)).share("vram_0"); // Layer 0
- map(0x802000, 0x803fff).ram().w(FUNC(psikyo_state::vram_w<1>)).share("vram_1"); // Layer 1
- map(0x804000, 0x807fff).ram().share("vregs"); // RAM + Vregs
-// AM_RANGE(0xc00000, 0xc0000b) AM_READ(psikyo_input_r) // Depends on board
-// AM_RANGE(0xc00004, 0xc0000b) AM_WRITE(s1945_mcu_w) // MCU on sh404
-// AM_RANGE(0xc00010, 0xc00013) AM_WRITE(psikyo_soundlatch_w) // Depends on board
- map(0xfe0000, 0xffffff).ram(); // RAM
+ map(0x800000, 0x801fff).ram().w(FUNC(psikyo_state::vram_w<0>)).share("vram_0"); // Layer 0
+ map(0x802000, 0x803fff).ram().w(FUNC(psikyo_state::vram_w<1>)).share("vram_1"); // Layer 1
+ map(0x804000, 0x807fff).ram().share("vregs"); // RAM + Vregs
+// map(0xc00000, 0xc0000b).r(FUNC(psikyo_state::input_r)); // Depends on board
+// map(0xc00004, 0xc0000b).w(FUNC(psikyo_state::s1945_mcu_w)); // MCU on sh404
+// map(0xc00010, 0xc00013).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // Depends on board
+ map(0xfe0000, 0xffffff).ram(); // RAM
}
template<int Shift>
@@ -268,32 +268,11 @@ WRITE8_MEMBER(psikyo_state::sound_bankswitch_w)
m_audiobank->set_entry((data >> Shift) & 0x03);
}
-READ32_MEMBER(psikyo_state::s1945bl_oki_r)
+WRITE8_MEMBER(psikyo_state::s1945bl_okibank_w)
{
- uint8_t dat = m_oki->read(space, 0);
- return dat << 24;
-}
-
-WRITE32_MEMBER(psikyo_state::s1945bl_oki_w)
-{
- if (ACCESSING_BITS_24_31)
- {
- m_oki->write(space, 0, data >> 24);
- }
-
- if (ACCESSING_BITS_16_23)
- {
- // not at all sure about this, it seems to write 0 too often
- uint8_t bank = (data & 0x00ff0000) >> 16;
- if (bank < 4)
- m_okibank->set_entry(bank);
- }
-
- if (ACCESSING_BITS_8_15)
- printf("ACCESSING_BITS_8_15 ?? %08x %08x\n", data & 0x0000ff00, mem_mask);
-
- if (ACCESSING_BITS_0_7)
- printf("ACCESSING_BITS_0_7 ?? %08x %08x\n", data & 0x000000ff, mem_mask);
+ // not at all sure about this, it seems to write 0 too often
+ if (data < 5)
+ m_okibank->set_entry(data);
}
void psikyo_state::s1945bl_oki_map(address_map &map)
@@ -304,19 +283,20 @@ void psikyo_state::s1945bl_oki_map(address_map &map)
void psikyo_state::psikyo_bootleg_map(address_map &map)
{
- map(0x000000, 0x0fffff).rom(); // ROM (not all used)
+ map(0x000000, 0x0fffff).rom(); // ROM (not all used)
map(0x200000, 0x200fff).ram().share("boot_spritebuf"); // RAM (it copies the spritelist here, the HW probably doesn't have automatic buffering like the originals?
map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites, buffered by two frames (list buffered + fb buffered)
map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // Palette
- map(0x800000, 0x801fff).ram().w(FUNC(psikyo_state::vram_w<0>)).share("vram_0"); // Layer 0
- map(0x802000, 0x803fff).ram().w(FUNC(psikyo_state::vram_w<1>)).share("vram_1"); // Layer 1
- map(0x804000, 0x807fff).ram().share("vregs"); // RAM + Vregs
- map(0xc00000, 0xc0000b).r(FUNC(psikyo_state::gunbird_input_r)); // input ports
+ map(0x800000, 0x801fff).ram().w(FUNC(psikyo_state::vram_w<0>)).share("vram_0"); // Layer 0
+ map(0x802000, 0x803fff).ram().w(FUNC(psikyo_state::vram_w<1>)).share("vram_1"); // Layer 1
+ map(0x804000, 0x807fff).ram().share("vregs"); // RAM + Vregs
+ map(0xc00000, 0xc0000b).r(FUNC(psikyo_state::gunbird_input_r)); // input ports
- map(0xc00018, 0xc0001b).rw(FUNC(psikyo_state::s1945bl_oki_r), FUNC(psikyo_state::s1945bl_oki_w));
+ map(0xc00018, 0xc00018).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc00019, 0xc00019).w(FUNC(psikyo_state::s1945bl_okibank_w));
- map(0xfe0000, 0xffffff).ram(); // RAM
+ map(0xfe0000, 0xffffff).ram(); // RAM
}
@@ -382,7 +362,7 @@ void psikyo_state::gunbird_map(address_map &map)
map(0xc00013, 0xc00013).w(m_soundlatch, FUNC(generic_latch_8_device::write));
}
-void psikyo_state::s1945jn_map(address_map &map)
+void psikyo_state::s1945n_map(address_map &map)
{
psikyo_map(map);
map(0xc00000, 0xc0000b).r(FUNC(psikyo_state::gunbird_input_r));
@@ -706,6 +686,31 @@ static INPUT_PORTS_START( btlkroad )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
INPUT_PORTS_END
+static INPUT_PORTS_START( btlkroadk )
+ PORT_INCLUDE( btlkroad )
+
+ PORT_MODIFY("DSW") /* c00004 -> c00007 */
+ /***********************************************
+
+ Bit 0 1 2 3
+ 1 1 1 1 Japan
+
+ 0 1 1 1 USA & Canada
+ 0 0 1 1 Korea
+ 0 1 0 1 Hong Kong
+ 0 1 1 0 Taiwan
+ Other World
+
+ ************************************************/
+ PORT_CONFNAME( 0x0000000f, 0x0000000c, DEF_STR( Region ) ) // Game code supports multi-region, but set default to Korea
+ PORT_CONFSETTING( 0x0000000f, DEF_STR( Japan ) )
+ PORT_CONFSETTING( 0x0000000e, "USA & Canada (Jaleco license)" )
+ PORT_CONFSETTING( 0x0000000c, DEF_STR( Korea ) )
+ PORT_CONFSETTING( 0x0000000a, DEF_STR( Hong_Kong ) )
+ PORT_CONFSETTING( 0x00000006, DEF_STR( Taiwan ) )
+ PORT_CONFSETTING( 0x00000000, DEF_STR( World ) )
+INPUT_PORTS_END
+
/***************************************************************************
Gun Bird
@@ -1040,13 +1045,14 @@ void psikyo_state::sngkace(machine_config &config)
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ // we're using PORT_VBLANK
m_screen->set_size(320, 256);
m_screen->set_visarea(0, 320-1, 0, 256-32-1);
- m_screen->set_screen_update(FUNC(psikyo_state::screen_update_psikyo));
- m_screen->screen_vblank().set(FUNC(psikyo_state::screen_vblank_psikyo));
+ m_screen->set_screen_update(FUNC(psikyo_state::screen_update));
+ m_screen->screen_vblank().set(FUNC(psikyo_state::screen_vblank));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_psikyo);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1000);
+ BUFFERED_SPRITERAM32(config, m_spriteram);
MCFG_VIDEO_START_OVERRIDE(psikyo_state,sngkace)
/* sound hardware */
@@ -1085,13 +1091,14 @@ void psikyo_state::gunbird(machine_config &config)
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ // we're using PORT_VBLANK
m_screen->set_size(320, 256);
m_screen->set_visarea(0, 320-1, 0, 256-32-1);
- m_screen->set_screen_update(FUNC(psikyo_state::screen_update_psikyo));
- m_screen->screen_vblank().set(FUNC(psikyo_state::screen_vblank_psikyo));
+ m_screen->set_screen_update(FUNC(psikyo_state::screen_update));
+ m_screen->screen_vblank().set(FUNC(psikyo_state::screen_vblank));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_psikyo);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1000);
+ BUFFERED_SPRITERAM32(config, m_spriteram);
MCFG_VIDEO_START_OVERRIDE(psikyo_state,psikyo)
/* sound hardware */
@@ -1106,10 +1113,10 @@ void psikyo_state::gunbird(machine_config &config)
m_soundlatch->set_separate_acknowledge(true);
}
-void psikyo_state::s1945jn(machine_config &config)
+void psikyo_state::s1945n(machine_config &config)
{
gunbird(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &psikyo_state::s1945jn_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &psikyo_state::s1945n_map);
}
void psikyo_state::s1945bl(machine_config &config) /* Bootleg hardware based on the unprotected Japanese Strikers 1945 set */
@@ -1125,13 +1132,14 @@ void psikyo_state::s1945bl(machine_config &config) /* Bootleg hardware based on
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ // we're using PORT_VBLANK
m_screen->set_size(320, 256);
m_screen->set_visarea(0, 320-1, 0, 256-32-1);
- m_screen->set_screen_update(FUNC(psikyo_state::screen_update_psikyo_bootleg));
- m_screen->screen_vblank().set(FUNC(psikyo_state::screen_vblank_psikyo));
+ m_screen->set_screen_update(FUNC(psikyo_state::screen_update_bootleg));
+ m_screen->screen_vblank().set(FUNC(psikyo_state::screen_vblank_bootleg));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_psikyo);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1000);
+ BUFFERED_SPRITERAM32(config, m_spriteram);
MCFG_VIDEO_START_OVERRIDE(psikyo_state,psikyo)
/* sound hardware */
@@ -1167,13 +1175,14 @@ void psikyo_state::s1945(machine_config &config)
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ // we're using PORT_VBLANK
m_screen->set_size(320, 256);
m_screen->set_visarea(0, 320-1, 0, 256-32-1);
- m_screen->set_screen_update(FUNC(psikyo_state::screen_update_psikyo));
- m_screen->screen_vblank().set(FUNC(psikyo_state::screen_vblank_psikyo));
+ m_screen->set_screen_update(FUNC(psikyo_state::screen_update));
+ m_screen->screen_vblank().set(FUNC(psikyo_state::screen_vblank));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_psikyo);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1000);
+ BUFFERED_SPRITERAM32(config, m_spriteram);
MCFG_VIDEO_START_OVERRIDE(psikyo_state,psikyo)
/* sound hardware */
@@ -1421,7 +1430,7 @@ ROM_END
ROM_START( btlkroadk )
ROM_REGION( 0x100000, "maincpu", 0 ) /* Main CPU Code */
ROM_LOAD32_WORD_SWAP( "4,dot.u46", 0x000000, 0x040000, CRC(e724d429) SHA1(8b5f80366fd22d6f7e7d8a9623de4fe231303267) ) // 1&0
- ROM_LOAD32_WORD_SWAP( "5,dot.u39", 0x000002, 0x040000, CRC(c0d65765) SHA1(a6a26e6b9693a2ef245e9aaa4c9daa888aebb360)) // 3&2
+ ROM_LOAD32_WORD_SWAP( "5,dot.u39", 0x000002, 0x040000, CRC(c0d65765) SHA1(a6a26e6b9693a2ef245e9aaa4c9daa888aebb360) ) // 3&2
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU Code */
ROM_LOAD( "3,k.u71", 0x00000, 0x20000, CRC(e0f0c597) SHA1(cc337633f1f579baf0f8ba1dd65c5d51122a7e97) )
@@ -1492,7 +1501,7 @@ ROM_START( s1945n )
ROM_LOAD( "u1.bin", 0x000000, 0x040000, CRC(dee22654) SHA1(5df05b0029ff7b1f7f04b41da7823d2aa8034bd2) )
ROM_END
-ROM_START( s1945jn )
+ROM_START( s1945nj )
ROM_REGION( 0x100000, "maincpu", 0 ) /* Main CPU Code */
ROM_LOAD32_WORD_SWAP( "1-u46.bin", 0x000000, 0x040000, CRC(95028132) SHA1(6ed8e53efb0511dca37c35a7da17217f5aa83734) ) // 1&0
ROM_LOAD32_WORD_SWAP( "2-u39.bin", 0x000002, 0x040000, CRC(3df79a16) SHA1(6184f27579d846a40313fd11b57c46ac0d02fc76) ) // 3&2
@@ -1519,8 +1528,7 @@ ROM_START( s1945jn )
ROM_LOAD( "u1.bin", 0x000000, 0x040000, CRC(dee22654) SHA1(5df05b0029ff7b1f7f04b41da7823d2aa8034bd2) )
ROM_END
-/* closely based on s1945jn set, unsurprising because it's unprotected */
-ROM_START( s1945bl )
+ROM_START( s1945bl ) /* closely based on s1945nj set, unsurprising because it's unprotected */
ROM_REGION( 0x100000, "maincpu", 0 ) /* Main CPU Code */
ROM_LOAD32_BYTE( "27c010-1", 0x000000, 0x020000, CRC(d3361536) SHA1(430df1c98645603c17333222834d344efd4fb584) ) // 1-u46.bin [odd 1/2] 99.797821%
ROM_LOAD32_BYTE( "27c010-2", 0x000001, 0x020000, CRC(1d1916b1) SHA1(4e200454c16d0bd45c4146ee41902a811a55c008) ) // 1-u46.bin [even 1/2] 99.793243%
@@ -1539,8 +1547,9 @@ ROM_START( s1945bl )
ROM_LOAD( "rv27c040.m6", 0x000000, 0x080000, CRC(c22e5b65) SHA1(d807bd7c136d6b51f54258b44ebf3eecbd5b35fa) )
ROM_REGION( 0x040000, "spritelut", 0 ) /* */
- ROM_LOAD16_BYTE( "27c010-b", 0x000000, 0x020000, CRC(e38d5ab7) SHA1(73a708ebc305cb6297efd3296da23c87898e805e) ) // u1.bin [even] IDENTICAL
- ROM_LOAD16_BYTE( "27c010-a", 0x000001, 0x020000, CRC(cb8c65ec) SHA1(a55c5c5067b50a1243e7ba60fa1f9569bfed5de8) ) // u1.bin [odd] 99.999237%
+ // in 27c010-a 0x460E:01 but should 0x00. Might be bit rot or error when bootleggers copied U1 as all other graphics data matches.
+ ROM_LOAD16_BYTE( "27c010-b", 0x000000, 0x020000, CRC(e38d5ab7) SHA1(73a708ebc305cb6297efd3296da23c87898e805e) ) // u1.bin [even] IDENTICAL
+ ROM_LOAD16_BYTE( "27c010-a", 0x000001, 0x020000, CRC(cb8c65ec) SHA1(a55c5c5067b50a1243e7ba60fa1f9569bfed5de8) ) // u1.bin [odd] 99.999237%
ROM_REGION( 0x080000, "unknown", 0 ) /* unknown - matches Semicom's Dream World */
ROM_LOAD( "27c512", 0x000000, 0x010000, CRC(0da8db45) SHA1(7d5bd71c5b0b28ff74c732edd7c662f46f2ab25b) )
@@ -1822,7 +1831,7 @@ ROM_END
void psikyo_state::init_sngkace()
{
{
- uint8_t *RAM = memregion("ymsnd")->base();
+ u8 *RAM = memregion("ymsnd")->base();
int len = memregion("ymsnd")->bytes();
/* Bit 6&7 of the samples are swapped. Naughty, naughty... */
@@ -1833,7 +1842,7 @@ void psikyo_state::init_sngkace()
}
}
- m_ka302c_banking = 0; // SH201B doesn't have any gfx banking
+ m_ka302c_banking = false; // SH201B doesn't have any gfx banking
/* setup audiocpu banks */
m_audiobank->configure_entries(0, 4, memregion("audiocpu")->base(), 0x8000);
@@ -1842,7 +1851,7 @@ void psikyo_state::init_sngkace()
#if 0
if (!strcmp(machine().system().name,"sngkace"))
{
- uint8_t *ROM = memregion("maincpu")->base();
+ u8 *ROM = memregion("maincpu")->base();
ROM[0x995] = 0x4e;
ROM[0x994] = 0x71;
ROM[0x997] = 0x4e;
@@ -1852,7 +1861,7 @@ void psikyo_state::init_sngkace()
#endif
}
-void psikyo_state::s1945_mcu_init( )
+void psikyo_state::s1945_mcu_init()
{
m_s1945_mcu_direction = 0x00;
m_s1945_mcu_inlatch = 0xff;
@@ -1880,7 +1889,7 @@ void psikyo_state::init_tengai()
s1945_mcu_init();
m_s1945_mcu_table = nullptr;
- m_ka302c_banking = 0; // Banking is controlled by mcu
+ m_ka302c_banking = false; // Banking is controlled by mcu
/* setup audiocpu banks */
/* The banked rom is seen at 8200-ffff, so the last 0x200 bytes of the rom not reachable. */
@@ -1889,7 +1898,7 @@ void psikyo_state::init_tengai()
void psikyo_state::init_gunbird()
{
- m_ka302c_banking = 1;
+ m_ka302c_banking = true;
/* setup audiocpu banks */
/* The banked rom is seen at 8200-ffff, so the last 0x200 bytes of the rom not reachable. */
@@ -1902,7 +1911,7 @@ void psikyo_state::init_s1945()
s1945_mcu_init();
m_s1945_mcu_table = s1945_table;
- m_ka302c_banking = 0; // Banking is controlled by mcu
+ m_ka302c_banking = false; // Banking is controlled by mcu
/* setup audiocpu banks */
/* The banked rom is seen at 8200-ffff, so the last 0x200 bytes of the rom not reachable. */
@@ -1914,7 +1923,7 @@ void psikyo_state::init_s1945a()
s1945_mcu_init();
m_s1945_mcu_table = s1945a_table;
- m_ka302c_banking = 0; // Banking is controlled by mcu
+ m_ka302c_banking = false; // Banking is controlled by mcu
/* setup audiocpu banks */
/* The banked rom is seen at 8200-ffff, so the last 0x200 bytes of the rom not reachable. */
@@ -1926,7 +1935,7 @@ void psikyo_state::init_s1945j()
s1945_mcu_init();
m_s1945_mcu_table = s1945j_table;
- m_ka302c_banking = 0; // Banking is controlled by mcu
+ m_ka302c_banking = false; // Banking is controlled by mcu
/* setup audiocpu banks */
/* The banked rom is seen at 8200-ffff, so the last 0x200 bytes of the rom not reachable. */
@@ -1935,9 +1944,9 @@ void psikyo_state::init_s1945j()
void psikyo_state::init_s1945bl()
{
- m_ka302c_banking = 1;
+ m_ka302c_banking = true;
- m_okibank->configure_entries(0, 4, memregion("oki")->base() + 0x30000, 0x10000);
+ m_okibank->configure_entries(0, 5, memregion("oki")->base() + 0x30000, 0x10000);
m_okibank->set_entry(0);
}
@@ -1950,24 +1959,24 @@ void psikyo_state::init_s1945bl()
***************************************************************************/
-GAME( 1993, samuraia, 0, sngkace, samuraia, psikyo_state, init_sngkace, ROT270, "Psikyo", "Samurai Aces (World)", MACHINE_SUPPORTS_SAVE ) // Banpresto?
-GAME( 1993, sngkace, samuraia, sngkace, sngkace, psikyo_state, init_sngkace, ROT270, "Psikyo", "Sengoku Ace (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) // Banpresto?
-GAME( 1993, sngkacea, samuraia, sngkace, sngkace, psikyo_state, init_sngkace, ROT270, "Psikyo", "Sengoku Ace (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) // Banpresto?
+GAME( 1993, samuraia, 0, sngkace, samuraia, psikyo_state, init_sngkace, ROT270, "Psikyo", "Samurai Aces (World)", MACHINE_SUPPORTS_SAVE ) // Banpresto?
+GAME( 1993, sngkace, samuraia, sngkace, sngkace, psikyo_state, init_sngkace, ROT270, "Psikyo", "Sengoku Ace (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) // Banpresto?
+GAME( 1993, sngkacea, samuraia, sngkace, sngkace, psikyo_state, init_sngkace, ROT270, "Psikyo", "Sengoku Ace (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) // Banpresto?
-GAME( 1994, gunbird, 0, gunbird, gunbird, psikyo_state, init_gunbird, ROT270, "Psikyo", "Gunbird (World)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, gunbirdk, gunbird, gunbird, gunbirdj, psikyo_state, init_gunbird, ROT270, "Psikyo", "Gunbird (Korea)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, gunbirdj, gunbird, gunbird, gunbirdj, psikyo_state, init_gunbird, ROT270, "Psikyo", "Gunbird (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, gunbird, 0, gunbird, gunbird, psikyo_state, init_gunbird, ROT270, "Psikyo", "Gunbird (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, gunbirdk, gunbird, gunbird, gunbirdj, psikyo_state, init_gunbird, ROT270, "Psikyo", "Gunbird (Korea)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, gunbirdj, gunbird, gunbird, gunbirdj, psikyo_state, init_gunbird, ROT270, "Psikyo", "Gunbird (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, btlkroad, 0, gunbird, btlkroad, psikyo_state, init_gunbird, ROT0, "Psikyo", "Battle K-Road", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, btlkroadk, btlkroad, gunbird, btlkroad, psikyo_state, init_gunbird, ROT0, "Psikyo", "Battle K-Road (Korean PCB)", MACHINE_SUPPORTS_SAVE ) // game code is still multi-region, but sound rom appears to be Korea specific at least
+GAME( 1994, btlkroad, 0, gunbird, btlkroad, psikyo_state, init_gunbird, ROT0, "Psikyo", "Battle K-Road", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, btlkroadk, btlkroad, gunbird, btlkroadk, psikyo_state, init_gunbird, ROT0, "Psikyo", "Battle K-Road (Korea)", MACHINE_SUPPORTS_SAVE ) // game code is still multi-region, but sound rom appears to be Korea specific at least
-GAME( 1995, s1945, 0, s1945, s1945, psikyo_state, init_s1945, ROT270, "Psikyo", "Strikers 1945 (World)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, s1945a, s1945, s1945, s1945a, psikyo_state, init_s1945a, ROT270, "Psikyo", "Strikers 1945 (Japan / World)", MACHINE_SUPPORTS_SAVE ) // Region dip - 0x0f=Japan, anything else=World
-GAME( 1995, s1945j, s1945, s1945, s1945j, psikyo_state, init_s1945j, ROT270, "Psikyo", "Strikers 1945 (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, s1945n, s1945, s1945jn, s1945, psikyo_state, init_gunbird, ROT270, "Psikyo", "Strikers 1945 (World, unprotected)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, s1945jn, s1945, s1945jn, s1945j, psikyo_state, init_gunbird, ROT270, "Psikyo", "Strikers 1945 (Japan, unprotected)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, s1945k, s1945, s1945, s1945j, psikyo_state, init_s1945, ROT270, "Psikyo", "Strikers 1945 (Korea)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, s1945bl, s1945, s1945bl, s1945bl, psikyo_state, init_s1945bl, ROT270, "bootleg", "Strikers 1945 (Hong Kong, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, s1945, 0, s1945, s1945, psikyo_state, init_s1945, ROT270, "Psikyo", "Strikers 1945 (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, s1945a, s1945, s1945, s1945a, psikyo_state, init_s1945a, ROT270, "Psikyo", "Strikers 1945 (Japan / World)", MACHINE_SUPPORTS_SAVE ) // Region dip - 0x0f=Japan, anything else=World
+GAME( 1995, s1945j, s1945, s1945, s1945j, psikyo_state, init_s1945j, ROT270, "Psikyo", "Strikers 1945 (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, s1945n, s1945, s1945n, s1945, psikyo_state, init_gunbird, ROT270, "Psikyo", "Strikers 1945 (World, unprotected)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, s1945nj, s1945, s1945n, s1945j, psikyo_state, init_gunbird, ROT270, "Psikyo", "Strikers 1945 (Japan, unprotected)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, s1945k, s1945, s1945, s1945j, psikyo_state, init_s1945, ROT270, "Psikyo", "Strikers 1945 (Korea)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, s1945bl, s1945, s1945bl, s1945bl, psikyo_state, init_s1945bl, ROT270, "bootleg", "Strikers 1945 (Hong Kong, bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, tengai, 0, s1945, tengai, psikyo_state, init_tengai, ROT0, "Psikyo", "Tengai (World)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, tengaij, tengai, s1945, tengaij, psikyo_state, init_tengai, ROT0, "Psikyo", "Sengoku Blade: Sengoku Ace Episode II / Tengai", MACHINE_SUPPORTS_SAVE ) // Region dip - 0x0f=Japan, anything else=World
+GAME( 1996, tengai, 0, s1945, tengai, psikyo_state, init_tengai, ROT0, "Psikyo", "Tengai (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, tengaij, tengai, s1945, tengaij, psikyo_state, init_tengai, ROT0, "Psikyo", "Sengoku Blade: Sengoku Ace Episode II / Tengai", MACHINE_SUPPORTS_SAVE ) // Region dip - 0x0f=Japan, anything else=World