summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2008-12-14 01:31:12 +0000
committer Aaron Giles <aaron@aarongiles.com>2008-12-14 01:31:12 +0000
commit2667ca65f1bf115f95b490e35cc74c96dd6f4101 (patch)
treee9543808b9fda98f3073c8cd1dbfe311ec1564ca
parentf2c32190ea7eee238f13728d0f56a6d0d310bbbf (diff)
02718: zigzag, zigzag2: Don't boot correctly. The screen just flashes over and over.
-rw-r--r--src/mame/drivers/galaxian.c161
1 files 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);
/*