02718: zigzag, zigzag2: Don't boot correctly. The screen just flashes over and over.

This commit is contained in:
Aaron Giles 2008-12-14 01:31:12 +00:00
parent f2c32190ea
commit 2667ca65f1

View File

@ -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);
/*