From 2667ca65f1bf115f95b490e35cc74c96dd6f4101 Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Sun, 14 Dec 2008 01:31:12 +0000 Subject: [PATCH] 02718: zigzag, zigzag2: Don't boot correctly. The screen just flashes over and over. --- src/mame/drivers/galaxian.c | 161 +++++++++++++++++++++++------------- 1 file changed, 105 insertions(+), 56 deletions(-) diff --git a/src/mame/drivers/galaxian.c b/src/mame/drivers/galaxian.c index b257d621ad5..1c42ddc9663 100644 --- a/src/mame/drivers/galaxian.c +++ b/src/mame/drivers/galaxian.c @@ -2305,9 +2305,11 @@ static void common_init( static void unmap_galaxian_sound(running_machine *machine, offs_t base) { - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), base + 0x0004, base + 0x0007, 0, 0x07f8, SMH_UNMAP); - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), base + 0x0800, base + 0x0807, 0, 0x07f8, SMH_UNMAP); - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), base + 0x1800, base + 0x1800, 0, 0x07ff, SMH_UNMAP); + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + + memory_install_write8_handler(space, base + 0x0004, base + 0x0007, 0, 0x07f8, SMH_UNMAP); + memory_install_write8_handler(space, base + 0x0800, base + 0x0807, 0, 0x07f8, SMH_UNMAP); + memory_install_write8_handler(space, base + 0x1800, base + 0x1800, 0, 0x07ff, SMH_UNMAP); } @@ -2326,31 +2328,37 @@ static DRIVER_INIT( galaxian ) static DRIVER_INIT( nolock ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* same as galaxian... */ DRIVER_INIT_CALL(galaxian); /* ...but coin lockout disabled/disconnected */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6002, 0x6002, 0, 0x7f8, SMH_UNMAP); + memory_install_write8_handler(space, 0x6002, 0x6002, 0, 0x7f8, SMH_UNMAP); } static DRIVER_INIT( azurian ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* yellow bullets instead of white ones */ common_init(machine, scramble_draw_bullet, galaxian_draw_background, NULL, NULL); /* coin lockout disabled */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6002, 0x6002, 0, 0x7f8, SMH_UNMAP); + memory_install_write8_handler(space, 0x6002, 0x6002, 0, 0x7f8, SMH_UNMAP); } static DRIVER_INIT( gmgalax ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* video extensions */ common_init(machine, galaxian_draw_bullet, galaxian_draw_background, gmgalax_extend_tile_info, gmgalax_extend_sprite_info); /* ROM is banked */ - memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0, SMH_BANK1); + memory_install_read8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK1); memory_configure_bank(machine, 1, 0, 2, memory_region(machine, "main") + 0x10000, 0x4000); /* callback when the game select is toggled */ @@ -2361,31 +2369,37 @@ static DRIVER_INIT( gmgalax ) static DRIVER_INIT( pisces ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* video extensions */ common_init(machine, galaxian_draw_bullet, galaxian_draw_background, pisces_extend_tile_info, pisces_extend_sprite_info); /* coin lockout replaced by graphics bank */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6002, 0x6002, 0, 0x7f8, galaxian_gfxbank_w); + memory_install_write8_handler(space, 0x6002, 0x6002, 0, 0x7f8, galaxian_gfxbank_w); } static DRIVER_INIT( batman2 ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* video extensions */ common_init(machine, galaxian_draw_bullet, galaxian_draw_background, batman2_extend_tile_info, upper_extend_sprite_info); /* coin lockout replaced by graphics bank */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6002, 0x6002, 0, 0x7f8, galaxian_gfxbank_w); + memory_install_write8_handler(space, 0x6002, 0x6002, 0, 0x7f8, galaxian_gfxbank_w); } static DRIVER_INIT( frogg ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* same as galaxian... */ common_init(machine, galaxian_draw_bullet, frogger_draw_background, frogger_extend_tile_info, frogger_extend_sprite_info); /* ...but needs a full 2k of RAM */ - memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4000, 0x47ff, 0, 0, SMH_BANK1, SMH_BANK1); + memory_install_readwrite8_handler(space, 0x4000, 0x47ff, 0, 0, SMH_BANK1, SMH_BANK1); memory_set_bankptr(machine, 1, auto_malloc(0x800)); } @@ -2416,11 +2430,13 @@ static DRIVER_INIT( mooncrsu ) static DRIVER_INIT( mooncrgx ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* video extensions */ common_init(machine, galaxian_draw_bullet, galaxian_draw_background, mooncrst_extend_tile_info, mooncrst_extend_sprite_info); /* LEDs and coin lockout replaced by graphics banking */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6000, 0x6002, 0, 0x7f8, galaxian_gfxbank_w); + memory_install_write8_handler(space, 0x6000, 0x6002, 0, 0x7f8, galaxian_gfxbank_w); } @@ -2440,11 +2456,13 @@ static DRIVER_INIT( moonqsr ) static DRIVER_INIT( pacmanbl ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* same as galaxian... */ DRIVER_INIT_CALL(galaxian); /* ...but coin lockout disabled/disconnected */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6002, 0x6002, 0, 0x7f8, SMH_UNMAP); + memory_install_write8_handler(space, 0x6002, 0x6002, 0, 0x7f8, SMH_UNMAP); /* also shift the sprite clip offset */ galaxian_sprite_clip_start = 7; @@ -2470,23 +2488,28 @@ static DRIVER_INIT( zigzag ) common_init(machine, NULL, galaxian_draw_background, NULL, NULL); /* make ROMs 2 & 3 swappable */ - memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2000, 0x2fff, 0, 0, SMH_BANK1); - memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3000, 0x3fff, 0, 0, SMH_BANK2); + memory_install_read8_handler(space, 0x2000, 0x2fff, 0, 0, SMH_BANK1); + memory_install_read8_handler(space, 0x3000, 0x3fff, 0, 0, SMH_BANK2); memory_configure_bank(machine, 1, 0, 2, memory_region(machine, "main") + 0x2000, 0x1000); memory_configure_bank(machine, 2, 0, 2, memory_region(machine, "main") + 0x2000, 0x1000); + /* also re-install the fixed ROM area as a bank in order to inform the memory system that + the fixed area only extends to 0x1fff */ + memory_install_read8_handler(space, 0x0000, 0x1fff, 0, 0, SMH_BANK3); + memory_set_bankptr(machine, 3, memory_region(machine, "main") + 0x0000); + /* handler for doing the swaps */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x7002, 0x7002, 0, 0x07f8, zigzag_bankswap_w); + memory_install_write8_handler(space, 0x7002, 0x7002, 0, 0x07f8, zigzag_bankswap_w); zigzag_bankswap_w(space, 0, 0); /* coin lockout disabled */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6002, 0x6002, 0, 0x7f8, SMH_UNMAP); + memory_install_write8_handler(space, 0x6002, 0x6002, 0, 0x7f8, SMH_UNMAP); /* remove the galaxian sound hardware */ unmap_galaxian_sound(machine, 0x6000); /* install our AY-8910 handler */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4800, 0x4fff, 0, 0, zigzag_ay8910_w); + memory_install_write8_handler(space, 0x4800, 0x4fff, 0, 0, zigzag_ay8910_w); } @@ -2499,15 +2522,18 @@ static DRIVER_INIT( jumpbug ) static DRIVER_INIT( checkman ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + const address_space *iospace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO); + /* video extensions */ common_init(machine, galaxian_draw_bullet, galaxian_draw_background, mooncrst_extend_tile_info, mooncrst_extend_sprite_info); /* move the interrupt enable from $b000 to $b001 */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb000, 0xb000, 0, 0x7f8, SMH_UNMAP); - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb001, 0xb001, 0, 0x7f8, irq_enable_w); + memory_install_write8_handler(space, 0xb000, 0xb000, 0, 0x7f8, SMH_UNMAP); + memory_install_write8_handler(space, 0xb001, 0xb001, 0, 0x7f8, irq_enable_w); /* attach the sound command handler */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x00, 0x00, 0, 0xffff, checkman_sound_command_w); + memory_install_write8_handler(iospace, 0x00, 0x00, 0, 0xffff, checkman_sound_command_w); /* decrypt program code */ decode_checkman(machine); @@ -2516,43 +2542,50 @@ static DRIVER_INIT( checkman ) static DRIVER_INIT( checkmaj ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* video extensions */ common_init(machine, galaxian_draw_bullet, galaxian_draw_background, NULL, NULL); /* attach the sound command handler */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x7800, 0x7800, 0, 0x7ff, checkman_sound_command_w); + memory_install_write8_handler(space, 0x7800, 0x7800, 0, 0x7ff, checkman_sound_command_w); /* for the title screen */ - memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3800, 0x3800, 0, 0, checkmaj_protection_r); + memory_install_read8_handler(space, 0x3800, 0x3800, 0, 0, checkmaj_protection_r); } static DRIVER_INIT( dingo ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* video extensions */ common_init(machine, galaxian_draw_bullet, galaxian_draw_background, NULL, NULL); /* attach the sound command handler */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x7800, 0x7800, 0, 0x7ff, checkman_sound_command_w); + memory_install_write8_handler(space, 0x7800, 0x7800, 0, 0x7ff, checkman_sound_command_w); - memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3000, 0x3000, 0, 0, dingo_3000_r); - memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3035, 0x3035, 0, 0, dingo_3035_r); + memory_install_read8_handler(space, 0x3000, 0x3000, 0, 0, dingo_3000_r); + memory_install_read8_handler(space, 0x3035, 0x3035, 0, 0, dingo_3035_r); } static DRIVER_INIT( dingoe ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + const address_space *iospace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO); + /* video extensions */ common_init(machine, galaxian_draw_bullet, galaxian_draw_background, mooncrst_extend_tile_info, mooncrst_extend_sprite_info); /* move the interrupt enable from $b000 to $b001 */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb000, 0xb000, 0, 0x7f8, SMH_UNMAP); - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb001, 0xb001, 0, 0x7f8, irq_enable_w); + memory_install_write8_handler(space, 0xb000, 0xb000, 0, 0x7f8, SMH_UNMAP); + memory_install_write8_handler(space, 0xb001, 0xb001, 0, 0x7f8, irq_enable_w); /* attach the sound command handler */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x00, 0x00, 0, 0xffff, checkman_sound_command_w); + memory_install_write8_handler(iospace, 0x00, 0x00, 0, 0xffff, checkman_sound_command_w); - memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3001, 0x3001, 0, 0, dingoe_3001_r); /* Protection check */ + memory_install_read8_handler(space, 0x3001, 0x3001, 0, 0, dingoe_3001_r); /* Protection check */ /* decrypt program code */ decode_dingoe(machine); @@ -2561,18 +2594,20 @@ static DRIVER_INIT( dingoe ) static DRIVER_INIT( skybase ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* video extensions */ common_init(machine, galaxian_draw_bullet, galaxian_draw_background, pisces_extend_tile_info, pisces_extend_sprite_info); /* coin lockout replaced by graphics bank */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa002, 0xa002, 0, 0x7f8, galaxian_gfxbank_w); + memory_install_write8_handler(space, 0xa002, 0xa002, 0, 0x7f8, galaxian_gfxbank_w); /* needs a full 2k of RAM */ - memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0x87ff, 0, 0, SMH_BANK1, SMH_BANK1); + memory_install_readwrite8_handler(space, 0x8000, 0x87ff, 0, 0, SMH_BANK1, SMH_BANK1); memory_set_bankptr(machine, 1, auto_malloc(0x800)); /* extend ROM */ - memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0000, 0x5fff, 0, 0, SMH_BANK2); + memory_install_read8_handler(space, 0x0000, 0x5fff, 0, 0, SMH_BANK2); memory_set_bankptr(machine, 2, memory_region(machine, "main")); } @@ -2605,13 +2640,15 @@ static DRIVER_INIT( mshuttlj ) static DRIVER_INIT( kingball ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* video extensions */ common_init(machine, galaxian_draw_bullet, galaxian_draw_background, NULL, NULL); - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb000, 0xb000, 0, 0x7f8, kingball_sound1_w); - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb001, 0xb001, 0, 0x7f8, irq_enable_w); - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb002, 0xb002, 0, 0x7f8, kingball_sound2_w); - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb003, 0xb003, 0, 0x7f8, kingball_speech_dip_w); + memory_install_write8_handler(space, 0xb000, 0xb000, 0, 0x7f8, kingball_sound1_w); + memory_install_write8_handler(space, 0xb001, 0xb001, 0, 0x7f8, irq_enable_w); + memory_install_write8_handler(space, 0xb002, 0xb002, 0, 0x7f8, kingball_sound2_w); + memory_install_write8_handler(space, 0xb003, 0xb003, 0, 0x7f8, kingball_speech_dip_w); state_save_register_global(machine, kingball_speech_dip); state_save_register_global(machine, kingball_sound); @@ -2620,23 +2657,25 @@ static DRIVER_INIT( kingball ) static DRIVER_INIT( scorpnmc ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* video extensions */ common_init(machine, galaxian_draw_bullet, galaxian_draw_background, batman2_extend_tile_info, upper_extend_sprite_info); /* move the interrupt enable from $b000 to $b001 */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb000, 0xb000, 0, 0x7f8, SMH_UNMAP); - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb001, 0xb001, 0, 0x7f8, irq_enable_w); + memory_install_write8_handler(space, 0xb000, 0xb000, 0, 0x7f8, SMH_UNMAP); + memory_install_write8_handler(space, 0xb001, 0xb001, 0, 0x7f8, irq_enable_w); /* extra ROM */ - memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5000, 0x67ff, 0, 0, SMH_BANK1); + memory_install_read8_handler(space, 0x5000, 0x67ff, 0, 0, SMH_BANK1); memory_set_bankptr(machine, 1, memory_region(machine, "main") + 0x5000); /* install RAM at $4000-$4800 */ - memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4000, 0x47ff, 0, 0, SMH_BANK2, SMH_BANK2); + memory_install_readwrite8_handler(space, 0x4000, 0x47ff, 0, 0, SMH_BANK2, SMH_BANK2); memory_set_bankptr(machine, 2, auto_malloc(0x800)); /* doesn't appear to use original RAM */ - memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0x87ff, 0, 0, SMH_UNMAP, SMH_UNMAP); + memory_install_readwrite8_handler(space, 0x8000, 0x87ff, 0, 0, SMH_UNMAP, SMH_UNMAP); } @@ -2649,11 +2688,13 @@ static DRIVER_INIT( scorpnmc ) static DRIVER_INIT( theend ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* video extensions */ common_init(machine, theend_draw_bullet, galaxian_draw_background, NULL, NULL); /* coin counter on the upper bit of port C */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6802, 0x6802, 0, 0x7f8, SMH_UNMAP); + memory_install_write8_handler(space, 0x6802, 0x6802, 0, 0x7f8, SMH_UNMAP); } @@ -2666,20 +2707,22 @@ static DRIVER_INIT( scramble ) static DRIVER_INIT( explorer ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* video extensions */ common_init(machine, scramble_draw_bullet, scramble_draw_background, NULL, NULL); /* watchdog works for writes as well? (or is it just disabled?) */ - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x7000, 0x7000, 0, 0x7ff, watchdog_reset_w); + memory_install_write8_handler(space, 0x7000, 0x7000, 0, 0x7ff, watchdog_reset_w); /* I/O appears to be direct, not via PPIs */ - memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, SMH_UNMAP, SMH_UNMAP); - memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0x8000, 0, 0xffc, input_port_read_handler8(machine->portconfig, "IN0")); - memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8001, 0x8001, 0, 0xffc, input_port_read_handler8(machine->portconfig, "IN1")); - memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8002, 0x8002, 0, 0xffc, input_port_read_handler8(machine->portconfig, "IN2")); - memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8003, 0x8003, 0, 0xffc, input_port_read_handler8(machine->portconfig, "IN3")); - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0x8000, 0, 0xfff, soundlatch_w); - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x9000, 0x9000, 0, 0xfff, explorer_sound_control_w); + memory_install_readwrite8_handler(space, 0x8000, 0xffff, 0, 0, SMH_UNMAP, SMH_UNMAP); + memory_install_read8_handler(space, 0x8000, 0x8000, 0, 0xffc, input_port_read_handler8(machine->portconfig, "IN0")); + memory_install_read8_handler(space, 0x8001, 0x8001, 0, 0xffc, input_port_read_handler8(machine->portconfig, "IN1")); + memory_install_read8_handler(space, 0x8002, 0x8002, 0, 0xffc, input_port_read_handler8(machine->portconfig, "IN2")); + memory_install_read8_handler(space, 0x8003, 0x8003, 0, 0xffc, input_port_read_handler8(machine->portconfig, "IN3")); + memory_install_write8_handler(space, 0x8000, 0x8000, 0, 0xfff, soundlatch_w); + memory_install_write8_handler(space, 0x9000, 0x9000, 0, 0xfff, explorer_sound_control_w); } @@ -2697,12 +2740,14 @@ static DRIVER_INIT( sfx ) static DRIVER_INIT( atlantis ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* video extensions */ common_init(machine, scramble_draw_bullet, scramble_draw_background, NULL, NULL); /* watchdog is at $7800? (or is it just disabled?) */ - memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x7000, 0x7000, 0, 0x7ff, SMH_UNMAP); - memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x7800, 0x7800, 0, 0x7ff, watchdog_reset_r); + memory_install_read8_handler(space, 0x7000, 0x7000, 0, 0x7ff, SMH_UNMAP); + memory_install_read8_handler(space, 0x7800, 0x7800, 0, 0x7ff, watchdog_reset_r); } @@ -2737,14 +2782,16 @@ static DRIVER_INIT( frogger ) static DRIVER_INIT( froggrmc ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + /* video extensions */ common_init(machine, NULL, frogger_draw_background, frogger_extend_tile_info, frogger_extend_sprite_info); - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa800, 0xa800, 0, 0x7ff, soundlatch_w); - memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb001, 0xb001, 0, 0x7f8, froggrmc_sound_control_w); + memory_install_write8_handler(space, 0xa800, 0xa800, 0, 0x7ff, soundlatch_w); + memory_install_write8_handler(space, 0xb001, 0xb001, 0, 0x7f8, froggrmc_sound_control_w); /* actually needs 2k of RAM */ - memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0x87ff, 0, 0, SMH_BANK1, SMH_BANK1); + memory_install_readwrite8_handler(space, 0x8000, 0x87ff, 0, 0, SMH_BANK1, SMH_BANK1); memory_set_bankptr(machine, 1, auto_malloc(0x800)); /* decrypt */ @@ -2781,17 +2828,19 @@ static DRIVER_INIT( amidar ) static DRIVER_INIT( scorpion ) { + const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM); + common_init(machine, scramble_draw_bullet, scramble_draw_background, batman2_extend_tile_info, upper_extend_sprite_info); /* hook up AY8910 */ memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_IO), 0x00, 0xff, 0, 0, scorpion_ay8910_r, scorpion_ay8910_w); /* extra ROM */ - memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5800, 0x67ff, 0, 0, SMH_BANK1); + memory_install_read8_handler(space, 0x5800, 0x67ff, 0, 0, SMH_BANK1); memory_set_bankptr(machine, 1, memory_region(machine, "main") + 0x5800); /* no background related */ -// memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6803, 0x6803, 0, 0, SMH_NOP); +// memory_install_write8_handler(space, 0x6803, 0x6803, 0, 0, SMH_NOP); memory_install_read8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x3000, 0x3000, 0, 0, scorpion_sound_status_r); /*