summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/yunsun16.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/yunsun16.c')
-rw-r--r--src/mame/drivers/yunsun16.c73
1 files changed, 40 insertions, 33 deletions
diff --git a/src/mame/drivers/yunsun16.c b/src/mame/drivers/yunsun16.c
index f4cf6cd16e0..3ba6d62f969 100644
--- a/src/mame/drivers/yunsun16.c
+++ b/src/mame/drivers/yunsun16.c
@@ -101,15 +101,9 @@ Stephh's notes (based on the games M68000 code and some tests) :
***************************************************************************/
-WRITE16_MEMBER(yunsun16_state::yunsun16_sound_bank_w)
+WRITE8_MEMBER(yunsun16_state::sound_bank_w)
{
- if (ACCESSING_BITS_0_7)
- {
- int bank = data & 3;
- UINT8 *dst = memregion("oki")->base();
- UINT8 *src = dst + 0x80000 + 0x20000 * bank;
- memcpy(dst + 0x20000, src, 0x20000);
- }
+ membank("okibank")->set_entry(data & 3);
}
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, yunsun16_state )
@@ -126,12 +120,12 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, yunsun16_state )
AM_RANGE(0x80010c, 0x80010f) AM_RAM AM_SHARE("scrollram_1") // Scrolling
AM_RANGE(0x800114, 0x800117) AM_RAM AM_SHARE("scrollram_0") // Scrolling
AM_RANGE(0x800154, 0x800155) AM_RAM AM_SHARE("priorityram") // Priority
- AM_RANGE(0x800180, 0x800181) AM_WRITE(yunsun16_sound_bank_w) // Sound
+ AM_RANGE(0x800180, 0x800181) AM_WRITE8(sound_bank_w, 0x00ff) // Sound
AM_RANGE(0x800188, 0x800189) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound
AM_RANGE(0x8001fe, 0x8001ff) AM_WRITENOP // ? 0 (during int)
AM_RANGE(0x900000, 0x903fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
- AM_RANGE(0x908000, 0x90bfff) AM_RAM_WRITE(yunsun16_vram_1_w) AM_SHARE("vram_1") // Layer 1
- AM_RANGE(0x90c000, 0x90ffff) AM_RAM_WRITE(yunsun16_vram_0_w) AM_SHARE("vram_0") // Layer 0
+ AM_RANGE(0x908000, 0x90bfff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") // Layer 1
+ AM_RANGE(0x90c000, 0x90ffff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") // Layer 0
AM_RANGE(0x910000, 0x910fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0xff0000, 0xffffff) AM_RAM
ADDRESS_MAP_END
@@ -155,8 +149,8 @@ number 0 on each voice. That sample is 00000-00000.
DRIVER_INIT_MEMBER(yunsun16_state,magicbub)
{
-// remove_mem_write16_handler (0, 0x800180, 0x800181 );
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x800188, 0x800189, write16_delegate(FUNC(yunsun16_state::magicbub_sound_command_w),this));
+ m_maincpu->space(AS_PROGRAM).unmap_write(0x800180, 0x800181);
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x800188, 0x800189, write16_delegate(FUNC(yunsun16_state::magicbub_sound_command_w), this));
}
/***************************************************************************
@@ -179,6 +173,11 @@ static ADDRESS_MAP_START( sound_port_map, AS_IO, 8, yunsun16_state )
AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("oki", okim6295_device, read, write) // M6295
ADDRESS_MAP_END
+static ADDRESS_MAP_START( oki_map, AS_0, 8, yunsun16_state )
+ AM_RANGE(0x00000, 0x1ffff) AM_ROM
+ AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
+ ADDRESS_MAP_END
+
/***************************************************************************
@@ -566,6 +565,19 @@ void yunsun16_state::machine_reset()
m_sprites_scrolldy = -0x0f;
}
+MACHINE_START_MEMBER(yunsun16_state, shocking)
+{
+ machine_start();
+ membank("okibank")->configure_entries(0, 0x80000 / 0x20000, memregion("oki")->base(), 0x20000);
+ membank("okibank")->set_entry(0);
+}
+
+MACHINE_RESET_MEMBER(yunsun16_state, shocking)
+{
+ machine_reset();
+ membank("okibank")->set_entry(0);
+}
+
/***************************************************************************
Magic Bubble
***************************************************************************/
@@ -622,7 +634,9 @@ static MACHINE_CONFIG_START( shocking, yunsun16_state )
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", yunsun16_state, irq2_line_hold)
-
+
+ MCFG_MACHINE_START_OVERRIDE(yunsun16_state, shocking)
+ MCFG_MACHINE_RESET_OVERRIDE(yunsun16_state, shocking)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -640,6 +654,7 @@ static MACHINE_CONFIG_START( shocking, yunsun16_state )
MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map)
MACHINE_CONFIG_END
@@ -786,11 +801,8 @@ ROM_START( magicbubb ) /* Found on a YS-0211 PCB like below */
ROM_LOAD( "u22.bin", 0x040000, 0x020000, CRC(7c68df7a) SHA1(88acf9dd43892a790415b418f77d88c747aa84f5) )
ROM_LOAD( "u23.bin", 0x060000, 0x020000, CRC(c7763fc1) SHA1(ed68b3c3c5155073afb7b55d6d92d3057e40df6c) )
- ROM_REGION( 0x080000 * 2, "oki", 0 ) /* Samples */
+ ROM_REGION( 0x080000, "oki", 0 ) /* Samples */
ROM_LOAD( "u131", 0x000000, 0x040000, CRC(9bdb08e4) SHA1(4d8bdeb9b503b0959a6ae3f3fb3574350b01b1a1) )
- ROM_RELOAD( 0x040000, 0x040000 )
- ROM_RELOAD( 0x080000, 0x040000 )
- ROM_RELOAD( 0x0c0000, 0x040000 )
ROM_END
@@ -862,10 +874,9 @@ ROM_START( paprazzi )
ROM_LOAD( "u22.bin", 0x080000, 0x040000, CRC(436499c7) SHA1(ec1390b6d5656c99d91cf6425d319f4796bcb28a) )
ROM_LOAD( "u23.bin", 0x0c0000, 0x040000, CRC(358280fe) SHA1(eac3cb65fe75bc2da14896734f4a339480b54a2c) )
- ROM_REGION( 0x080000 * 2, "oki", 0 ) /* Samples */
+ ROM_REGION( 0x080000, "oki", 0 ) /* Samples */
ROM_LOAD( "u131.bin", 0x000000, 0x080000, CRC(bcf7aa12) SHA1(f7bf5258396ed0eb7e85eccf250c6d0a333a4d61) )
- ROM_RELOAD( 0x080000, 0x080000 )
-
+
ROM_END
/***************************************************************************
@@ -892,10 +903,9 @@ ROM_START( shocking )
ROM_LOAD( "yunsun16.u22", 0x080000, 0x040000, CRC(d6db0388) SHA1(f5d8f7740b602c402a8dd6c4ebd357cf15a0dfac) )
ROM_LOAD( "yunsun16.u23", 0x0c0000, 0x040000, CRC(1fa33b2e) SHA1(4aa0dee8d34aac19cf6b7ba3f79ca022ad8d7760) )
- ROM_REGION( 0x080000 * 2, "oki", 0 ) /* Samples */
+ ROM_REGION( 0x080000, "oki", 0 ) /* Samples */
ROM_LOAD( "yunsun16.131", 0x000000, 0x080000, CRC(d0a1bb8c) SHA1(10f33521bd6031ed73ee5c7be1382165925aa8f8) )
- ROM_RELOAD( 0x080000, 0x080000 )
-
+
ROM_END
ROM_START( shockingk )
@@ -916,10 +926,9 @@ ROM_START( shockingk )
ROM_LOAD( "u22.bin", 0x080000, 0x040000, CRC(59260de1) SHA1(2dd2d7ab93fa751cb9142400a3ff91391477d555) )
ROM_LOAD( "u23.bin", 0x0c0000, 0x040000, CRC(00e4af23) SHA1(a4d23f16748385dd8c87cae3e16593e5a0195c24) )
- ROM_REGION( 0x080000 * 2, "oki", 0 ) /* Samples */
+ ROM_REGION( 0x080000, "oki", 0 ) /* Samples */
ROM_LOAD( "yunsun16.131", 0x000000, 0x080000, CRC(d0a1bb8c) SHA1(10f33521bd6031ed73ee5c7be1382165925aa8f8) )
- ROM_RELOAD( 0x080000, 0x080000 )
-
+
ROM_END
@@ -949,10 +958,9 @@ ROM_START( bombkick )
ROM_LOAD( "bk_u22", 0x080000, 0x040000, CRC(9538c46c) SHA1(d7d0e167d5abc2ee81eae6fde152b2f5cc716c0e) )
ROM_LOAD( "bk_u23", 0x0c0000, 0x040000, CRC(e3831f3d) SHA1(096658ee5a7b83d774b671c0a38113533c8751d1) )
- ROM_REGION( 0x080000 * 2, "oki", 0 ) /* Samples */
+ ROM_REGION( 0x080000, "oki", 0 ) /* Samples */
ROM_LOAD( "bk_u131", 0x000000, 0x080000, CRC(22cc5732) SHA1(38aefa4e543ea54e004eee428ee087121eb20905) )
- ROM_RELOAD( 0x080000, 0x080000 )
-
+
ROM_END
ROM_START( bombkicka ) // marked 'Bomb Kick 98'
@@ -973,10 +981,9 @@ ROM_START( bombkicka ) // marked 'Bomb Kick 98'
ROM_LOAD( "bk_u22", 0x080000, 0x040000, CRC(9538c46c) SHA1(d7d0e167d5abc2ee81eae6fde152b2f5cc716c0e) )
ROM_LOAD( "bk_u23", 0x0c0000, 0x040000, CRC(e3831f3d) SHA1(096658ee5a7b83d774b671c0a38113533c8751d1) )
- ROM_REGION( 0x080000 * 2, "oki", 0 ) /* Samples */
+ ROM_REGION( 0x080000, "oki", 0 ) /* Samples */
ROM_LOAD( "bk_u131", 0x000000, 0x080000, CRC(22cc5732) SHA1(38aefa4e543ea54e004eee428ee087121eb20905) )
- ROM_RELOAD( 0x080000, 0x080000 )
-
+
ROM_END
/***************************************************************************