diff --git a/src/mame/drivers/lasso.c b/src/mame/drivers/lasso.c index 39bf1af92dc..5062d57cd81 100644 --- a/src/mame/drivers/lasso.c +++ b/src/mame/drivers/lasso.c @@ -15,7 +15,9 @@ Year + Game By CPUs Sound Chips Notes: -- unknown CPU speeds (affect game timing) +- unknown CPU speeds (affect game timing), currently using same as the + Rock-Ola games of the same area. Lot of similarities between these + hardware. The music ends at the perfect time with this clock speed - Lasso: fire button auto-repeats on high score entry screen (real behavior?) ***************************************************************************/ @@ -34,52 +36,41 @@ static UINT8 coins_old; static INTERRUPT_GEN( lasso_interrupt ) { - UINT8 coins_new; - // VBlank if (cpu_getiloops() == 0) - { cpunum_set_input_line(0, 0, HOLD_LINE); - return; + else + { + UINT8 coins_new; + + // Coins + coins_new = ~readinputport(3) & 0x30; + + if ( ((coins_new & 0x10) && !(coins_old & 0x10)) || + ((coins_new & 0x20) && !(coins_old & 0x20)) ) + cpunum_set_input_line(0, INPUT_LINE_NMI, PULSE_LINE); + + coins_old = coins_new; } - - // Coins - coins_new = ~readinputport(3) & 0x30; - - if ( ((coins_new & 0x10) && !(coins_old & 0x10)) || - ((coins_new & 0x20) && !(coins_old & 0x20)) ) - cpunum_set_input_line(0, INPUT_LINE_NMI, PULSE_LINE); - - coins_old = coins_new; } -/* Shared RAM between Main CPU and sub CPU */ - -static UINT8 *lasso_sharedram; - -static READ8_HANDLER( lasso_sharedram_r ) -{ - return lasso_sharedram[offset]; -} -static WRITE8_HANDLER( lasso_sharedram_w ) -{ - lasso_sharedram[offset] = data; -} - /* Write to the sound latch and generate an IRQ on the sound CPU */ +static UINT8 *lasso_chip_data; + + static WRITE8_HANDLER( sound_command_w ) { soundlatch_w(offset,data); - cpunum_set_input_line( 1, 0, PULSE_LINE ); + cpunum_set_input_line(1, 0, PULSE_LINE); } static WRITE8_HANDLER( pinbo_sound_command_w ) { soundlatch_w(offset,data); - cpunum_set_input_line( 1, 0, HOLD_LINE ); + cpunum_set_input_line(1, 0, HOLD_LINE); } static READ8_HANDLER( sound_status_r ) @@ -88,204 +79,152 @@ static READ8_HANDLER( sound_status_r ) return 0x03; } -static UINT8 lasso_chip_data; - -static WRITE8_HANDLER( sound_data_w ) -{ - lasso_chip_data = BITSWAP8(data,0,1,2,3,4,5,6,7); -} - static WRITE8_HANDLER( sound_select_w ) { + UINT8 to_write = BITSWAP8(*lasso_chip_data, 0, 1, 2, 3, 4, 5, 6, 7); + if (~data & 0x01) /* chip #0 */ - SN76496_0_w(0,lasso_chip_data); + SN76496_0_w(0, to_write); if (~data & 0x02) /* chip #1 */ - SN76496_1_w(0,lasso_chip_data); + SN76496_1_w(0, to_write); } static MACHINE_START( lasso ) -{ - /* register for saving */ - state_save_register_global(coins_old); - state_save_register_global(lasso_chip_data); -} - -static MACHINE_START( pinbo ) { /* register for saving */ state_save_register_global(coins_old); } -static ADDRESS_MAP_START( lasso_readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x0c7f) AM_READ(MRA8_RAM) - AM_RANGE(0x1000, 0x17ff) AM_READ(lasso_sharedram_r ) - AM_RANGE(0x1804, 0x1804) AM_READ(input_port_0_r) - AM_RANGE(0x1805, 0x1805) AM_READ(input_port_1_r) - AM_RANGE(0x1806, 0x1806) AM_READ(input_port_2_r) - AM_RANGE(0x1807, 0x1807) AM_READ(input_port_3_r) - AM_RANGE(0x8000, 0xffff) AM_READ(MRA8_ROM) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( lasso_writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x03ff) AM_WRITE(MWA8_RAM) - AM_RANGE(0x0400, 0x07ff) AM_WRITE(lasso_videoram_w) AM_BASE(&lasso_videoram) - AM_RANGE(0x0800, 0x0bff) AM_WRITE(lasso_colorram_w) AM_BASE(&lasso_colorram) - AM_RANGE(0x0c00, 0x0c7f) AM_WRITE(MWA8_RAM) AM_BASE(&lasso_spriteram) AM_SIZE(&lasso_spriteram_size) - AM_RANGE(0x1000, 0x17ff) AM_WRITE(lasso_sharedram_w ) +static ADDRESS_MAP_START( lasso_main_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x03ff) AM_RAM + AM_RANGE(0x0400, 0x07ff) AM_READWRITE(MRA8_RAM, lasso_videoram_w) AM_BASE(&lasso_videoram) + AM_RANGE(0x0800, 0x0bff) AM_READWRITE(MRA8_RAM, lasso_colorram_w) AM_BASE(&lasso_colorram) + AM_RANGE(0x0c00, 0x0c7f) AM_RAM AM_BASE(&lasso_spriteram) AM_SIZE(&lasso_spriteram_size) + AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE(1) AM_RANGE(0x1800, 0x1800) AM_WRITE(sound_command_w) - AM_RANGE(0x1801, 0x1801) AM_WRITE(lasso_backcolor_w ) + AM_RANGE(0x1801, 0x1801) AM_WRITE(MWA8_RAM) AM_BASE(&lasso_back_color) AM_RANGE(0x1802, 0x1802) AM_WRITE(lasso_video_control_w) - AM_RANGE(0x1806, 0x1806) AM_WRITE(MWA8_NOP) // games uses 'lsr' to read port - AM_RANGE(0x8000, 0xffff) AM_WRITE(MWA8_ROM) -ADDRESS_MAP_END - - -static ADDRESS_MAP_START( chameleo_readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x10ff) AM_READ(MRA8_RAM) AM_RANGE(0x1804, 0x1804) AM_READ(input_port_0_r) AM_RANGE(0x1805, 0x1805) AM_READ(input_port_1_r) - AM_RANGE(0x1806, 0x1806) AM_READ(input_port_2_r) + AM_RANGE(0x1806, 0x1806) AM_READWRITE(input_port_2_r, MWA8_NOP) /* game uses 'lsr' to read port */ AM_RANGE(0x1807, 0x1807) AM_READ(input_port_3_r) - AM_RANGE(0x2000, 0xffff) AM_READ(MRA8_ROM) + AM_RANGE(0x8000, 0xbfff) AM_MIRROR(0x4000) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( chameleo_writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x03ff) AM_WRITE(MWA8_RAM) - AM_RANGE(0x0400, 0x07ff) AM_WRITE(lasso_videoram_w) AM_BASE(&lasso_videoram) - AM_RANGE(0x0800, 0x0bff) AM_WRITE(lasso_colorram_w) AM_BASE(&lasso_colorram) - AM_RANGE(0x0c00, 0x0fff) AM_WRITE(MWA8_RAM) // - AM_RANGE(0x1000, 0x107f) AM_WRITE(MWA8_RAM) AM_BASE(&lasso_spriteram) AM_SIZE(&lasso_spriteram_size) - AM_RANGE(0x1080, 0x10ff) AM_WRITE(MWA8_RAM) + +static ADDRESS_MAP_START( lasso_audio_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x01ff) AM_RAM + AM_RANGE(0x5000, 0x7fff) AM_ROM + AM_RANGE(0xb000, 0xb000) AM_WRITE(MWA8_RAM) AM_BASE(&lasso_chip_data) + AM_RANGE(0xb001, 0xb001) AM_WRITE(sound_select_w) + AM_RANGE(0xb004, 0xb004) AM_READ(sound_status_r) + AM_RANGE(0xb005, 0xb005) AM_READ(soundlatch_r) + AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(REGION_CPU2, 0x7000) +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( lasso_coprocessor_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE(1) + AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE(&lasso_bitmap_ram) + AM_RANGE(0x8000, 0x8fff) AM_MIRROR(0x7000) AM_ROM +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( chameleo_main_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x03ff) AM_RAM + AM_RANGE(0x0400, 0x07ff) AM_READWRITE(MRA8_RAM, lasso_videoram_w) AM_BASE(&lasso_videoram) + AM_RANGE(0x0800, 0x0bff) AM_READWRITE(MRA8_RAM, lasso_colorram_w) AM_BASE(&lasso_colorram) + AM_RANGE(0x0c00, 0x0fff) AM_RAM + AM_RANGE(0x1000, 0x107f) AM_RAM AM_BASE(&lasso_spriteram) AM_SIZE(&lasso_spriteram_size) + AM_RANGE(0x1080, 0x10ff) AM_RAM AM_RANGE(0x1800, 0x1800) AM_WRITE(sound_command_w) - AM_RANGE(0x1801, 0x1801) AM_WRITE(lasso_backcolor_w ) + AM_RANGE(0x1801, 0x1801) AM_WRITE(MWA8_RAM) AM_BASE(&lasso_back_color) AM_RANGE(0x1802, 0x1802) AM_WRITE(lasso_video_control_w) - AM_RANGE(0x2000, 0xffff) AM_WRITE(MWA8_ROM) -ADDRESS_MAP_END - - -static ADDRESS_MAP_START( wwjgtin_readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x10ff) AM_READ(MRA8_RAM) AM_RANGE(0x1804, 0x1804) AM_READ(input_port_0_r) AM_RANGE(0x1805, 0x1805) AM_READ(input_port_1_r) AM_RANGE(0x1806, 0x1806) AM_READ(input_port_2_r) AM_RANGE(0x1807, 0x1807) AM_READ(input_port_3_r) - AM_RANGE(0x5000, 0xbfff) AM_READ(MRA8_ROM) - AM_RANGE(0xfffa, 0xffff) AM_READ(MRA8_ROM) + AM_RANGE(0x4000, 0xbfff) AM_ROM + AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION(REGION_CPU1, 0xa000) ADDRESS_MAP_END -static ADDRESS_MAP_START( wwjgtin_writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x07ff) AM_WRITE(MWA8_RAM) - AM_RANGE(0x0800, 0x0bff) AM_WRITE(lasso_videoram_w) AM_BASE(&lasso_videoram) - AM_RANGE(0x0c00, 0x0fff) AM_WRITE(lasso_colorram_w) AM_BASE(&lasso_colorram) - AM_RANGE(0x1000, 0x10ff) AM_WRITE(MWA8_RAM) AM_BASE(&lasso_spriteram) AM_SIZE(&lasso_spriteram_size) + +static ADDRESS_MAP_START( chameleo_audio_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x01ff) AM_RAM + AM_RANGE(0x1000, 0x1fff) AM_ROM + AM_RANGE(0x6000, 0x7fff) AM_ROM + AM_RANGE(0xb000, 0xb000) AM_WRITE(MWA8_RAM) AM_BASE(&lasso_chip_data) + AM_RANGE(0xb001, 0xb001) AM_WRITE(sound_select_w) + AM_RANGE(0xb004, 0xb004) AM_READ(sound_status_r) + AM_RANGE(0xb005, 0xb005) AM_READ(soundlatch_r) + AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(REGION_CPU2, 0x7000) +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( wwjgtin_main_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x07ff) AM_RAM + AM_RANGE(0x0800, 0x0bff) AM_READWRITE(MRA8_RAM, lasso_videoram_w) AM_BASE(&lasso_videoram) + AM_RANGE(0x0c00, 0x0fff) AM_READWRITE(MRA8_RAM, lasso_colorram_w) AM_BASE(&lasso_colorram) + AM_RANGE(0x1000, 0x10ff) AM_RAM AM_BASE(&lasso_spriteram) AM_SIZE(&lasso_spriteram_size) AM_RANGE(0x1800, 0x1800) AM_WRITE(sound_command_w) - AM_RANGE(0x1801, 0x1801) AM_WRITE(lasso_backcolor_w ) + AM_RANGE(0x1801, 0x1801) AM_WRITE(MWA8_RAM) AM_BASE(&lasso_back_color) AM_RANGE(0x1802, 0x1802) AM_WRITE(wwjgtin_video_control_w ) - AM_RANGE(0x1c00, 0x1c03) AM_WRITE(wwjgtin_lastcolor_w) + AM_RANGE(0x1804, 0x1804) AM_READ(input_port_0_r) + AM_RANGE(0x1805, 0x1805) AM_READ(input_port_1_r) + AM_RANGE(0x1806, 0x1806) AM_READ(input_port_2_r) + AM_RANGE(0x1807, 0x1807) AM_READ(input_port_3_r) + AM_RANGE(0x1c00, 0x1c03) AM_WRITE(MWA8_RAM) AM_BASE(&wwjgtin_last_colors) AM_RANGE(0x1c04, 0x1c07) AM_WRITE(MWA8_RAM) AM_BASE(&wwjgtin_track_scroll) - AM_RANGE(0x5000, 0xbfff) AM_WRITE(MWA8_ROM) - AM_RANGE(0xfffa, 0xffff) AM_WRITE(MWA8_ROM) + AM_RANGE(0x4000, 0xbfff) AM_ROM + AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION(REGION_CPU1, 0x8000) ADDRESS_MAP_END -static ADDRESS_MAP_START( pinbo_writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x03ff) AM_WRITE(MWA8_RAM) - AM_RANGE(0x0400, 0x07ff) AM_WRITE(lasso_videoram_w) AM_BASE(&lasso_videoram) - AM_RANGE(0x0800, 0x0bff) AM_WRITE(lasso_colorram_w) AM_BASE(&lasso_colorram) - AM_RANGE(0x1000, 0x10ff) AM_WRITE(MWA8_RAM) AM_BASE(&lasso_spriteram) AM_SIZE(&lasso_spriteram_size) - AM_RANGE(0x1800, 0x1800) AM_WRITE(pinbo_sound_command_w) - AM_RANGE(0x1802, 0x1802) AM_WRITE(pinbo_video_control_w) - AM_RANGE(0x2000, 0xffff) AM_WRITE(MWA8_ROM) -ADDRESS_MAP_END - - -static ADDRESS_MAP_START( lasso_coprocessor_readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x07ff) AM_READ(MRA8_RAM) - AM_RANGE(0x2000, 0x3fff) AM_READ(MRA8_RAM) - AM_RANGE(0x8000, 0x8fff) AM_READ(MRA8_ROM) - AM_RANGE(0xf000, 0xffff) AM_READ(MRA8_ROM) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( lasso_coprocessor_writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x07ff) AM_WRITE(MWA8_RAM) AM_BASE(&lasso_sharedram) - AM_RANGE(0x2000, 0x3fff) AM_WRITE(MWA8_RAM) AM_BASE(&lasso_bitmap_ram) - AM_RANGE(0x8000, 0x8fff) AM_WRITE(MWA8_ROM) - AM_RANGE(0xf000, 0xffff) AM_WRITE(MWA8_ROM) -ADDRESS_MAP_END - - -static ADDRESS_MAP_START( lasso_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x01ff) AM_READ(MRA8_RAM) - AM_RANGE(0x5000, 0x7fff) AM_READ(MRA8_ROM) - AM_RANGE(0xb004, 0xb004) AM_READ(sound_status_r) - AM_RANGE(0xb005, 0xb005) AM_READ(soundlatch_r) - AM_RANGE(0xf000, 0xffff) AM_READ(MRA8_ROM) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( lasso_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x01ff) AM_WRITE(MWA8_RAM) - AM_RANGE(0x5000, 0x7fff) AM_WRITE(MWA8_ROM) - AM_RANGE(0xb000, 0xb000) AM_WRITE(sound_data_w) - AM_RANGE(0xb001, 0xb001) AM_WRITE(sound_select_w) - AM_RANGE(0xf000, 0xffff) AM_WRITE(MWA8_ROM) -ADDRESS_MAP_END - - -static ADDRESS_MAP_START( chameleo_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x01ff) AM_READ(MRA8_RAM) - AM_RANGE(0x1000, 0x1fff) AM_READ(MRA8_ROM) - AM_RANGE(0x6000, 0x7fff) AM_READ(MRA8_ROM) - AM_RANGE(0xb004, 0xb004) AM_READ(sound_status_r) - AM_RANGE(0xb005, 0xb005) AM_READ(soundlatch_r) - AM_RANGE(0xfffa, 0xffff) AM_READ(MRA8_ROM) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( chameleo_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x01ff) AM_WRITE(MWA8_RAM) - AM_RANGE(0x1000, 0x1fff) AM_WRITE(MWA8_ROM) - AM_RANGE(0x6000, 0x7fff) AM_WRITE(MWA8_ROM) - AM_RANGE(0xb000, 0xb000) AM_WRITE(sound_data_w) - AM_RANGE(0xb001, 0xb001) AM_WRITE(sound_select_w) - AM_RANGE(0xfffa, 0xffff) AM_WRITE(MWA8_ROM) -ADDRESS_MAP_END - - -static ADDRESS_MAP_START( wwjgtin_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x01ff) AM_WRITE(MWA8_RAM) - AM_RANGE(0x5000, 0x7fff) AM_WRITE(MWA8_ROM) - AM_RANGE(0xb000, 0xb000) AM_WRITE(sound_data_w) +static ADDRESS_MAP_START( wwjgtin_audio_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x01ff) AM_RAM + AM_RANGE(0x4000, 0x7fff) AM_MIRROR(0x8000) AM_ROM + AM_RANGE(0xb000, 0xb000) AM_WRITE(MWA8_RAM) AM_BASE(&lasso_chip_data) AM_RANGE(0xb001, 0xb001) AM_WRITE(sound_select_w) AM_RANGE(0xb003, 0xb003) AM_WRITE(DAC_0_data_w) - AM_RANGE(0xfffa, 0xffff) AM_WRITE(MWA8_ROM) + AM_RANGE(0xb004, 0xb004) AM_READ(sound_status_r) + AM_RANGE(0xb005, 0xb005) AM_READ(soundlatch_r) ADDRESS_MAP_END -static ADDRESS_MAP_START( pinbo_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x1fff) AM_READ(MRA8_ROM) - AM_RANGE(0xf000, 0xffff) AM_READ(MRA8_RAM) +static ADDRESS_MAP_START( pinbo_main_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x03ff) AM_RAM + AM_RANGE(0x0400, 0x07ff) AM_READWRITE(MRA8_RAM, lasso_videoram_w) AM_BASE(&lasso_videoram) + AM_RANGE(0x0800, 0x0bff) AM_READWRITE(MRA8_RAM, lasso_colorram_w) AM_BASE(&lasso_colorram) + AM_RANGE(0x1000, 0x10ff) AM_RAM AM_BASE(&lasso_spriteram) AM_SIZE(&lasso_spriteram_size) + AM_RANGE(0x1800, 0x1800) AM_WRITE(pinbo_sound_command_w) + AM_RANGE(0x1802, 0x1802) AM_WRITE(pinbo_video_control_w) + AM_RANGE(0x1804, 0x1804) AM_READ(input_port_0_r) + AM_RANGE(0x1805, 0x1805) AM_READ(input_port_1_r) + AM_RANGE(0x1806, 0x1806) AM_READ(input_port_2_r) + AM_RANGE(0x1807, 0x1807) AM_READ(input_port_3_r) + AM_RANGE(0x2000, 0x3fff) AM_ROM + AM_RANGE(0x6000, 0xbfff) AM_ROM + AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION(REGION_CPU1, 0xa000) ADDRESS_MAP_END -static ADDRESS_MAP_START( pinbo_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x1fff) AM_WRITE(MWA8_ROM) - AM_RANGE(0xf000, 0xffff) AM_WRITE(MWA8_RAM) + +static ADDRESS_MAP_START( pinbo_audio_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x1fff) AM_ROM + AM_RANGE(0xf000, 0xffff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( pinbo_sound_readport, ADDRESS_SPACE_IO, 8 ) - ADDRESS_MAP_FLAGS( AMEF_ABITS(8) ) - AM_RANGE(0x02, 0x02) AM_READ(AY8910_read_port_0_r) - AM_RANGE(0x06, 0x06) AM_READ(AY8910_read_port_1_r) - AM_RANGE(0x08, 0x08) AM_READ(soundlatch_r) -ADDRESS_MAP_END -static ADDRESS_MAP_START( pinbo_sound_writeport, ADDRESS_SPACE_IO, 8 ) +static ADDRESS_MAP_START( pinbo_audio_io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_FLAGS( AMEF_ABITS(8) ) AM_RANGE(0x00, 0x00) AM_WRITE(AY8910_control_port_0_w) AM_RANGE(0x01, 0x01) AM_WRITE(AY8910_write_port_0_w) + AM_RANGE(0x02, 0x02) AM_READ(AY8910_read_port_0_r) AM_RANGE(0x04, 0x04) AM_WRITE(AY8910_control_port_1_w) AM_RANGE(0x05, 0x05) AM_WRITE(AY8910_write_port_1_w) - AM_RANGE(0x08, 0x08) AM_WRITE(MWA8_NOP) /* ??? */ + AM_RANGE(0x06, 0x06) AM_READ(AY8910_read_port_1_r) + AM_RANGE(0x08, 0x08) AM_READWRITE(soundlatch_r, MWA8_NOP) /* ??? */ AM_RANGE(0x14, 0x14) AM_WRITE(MWA8_NOP) /* ??? */ ADDRESS_MAP_END @@ -628,22 +567,18 @@ GFXDECODE_END -static MACHINE_DRIVER_START( lasso ) +static MACHINE_DRIVER_START( base ) /* basic machine hardware */ - MDRV_CPU_ADD_TAG("main", M6502, 2000000) /* 2 MHz (?) */ - MDRV_CPU_PROGRAM_MAP(lasso_readmem,lasso_writemem) - MDRV_CPU_VBLANK_INT(lasso_interrupt,2) /* IRQ = VBlank, NMI = Coin Insertion */ + MDRV_CPU_ADD_TAG("main", M6502, 11289000/16) /* guess */ + MDRV_CPU_PROGRAM_MAP(lasso_main_map,0) MDRV_CPU_ADD_TAG("audio", M6502, 600000) - /* audio CPU */ - MDRV_CPU_PROGRAM_MAP(lasso_sound_readmem,lasso_sound_writemem) - - MDRV_CPU_ADD_TAG("blitter", M6502, 2000000) /* 2 MHz (?) */ - MDRV_CPU_PROGRAM_MAP(lasso_coprocessor_readmem,lasso_coprocessor_writemem) + MDRV_CPU_PROGRAM_MAP(lasso_audio_map, 0) MDRV_SCREEN_REFRESH_RATE(60) MDRV_SCREEN_VBLANK_TIME(DEFAULT_REAL_60HZ_VBLANK_DURATION) + MDRV_CPU_VBLANK_INT(lasso_interrupt,2) /* IRQ = VBlank, NMI = Coin Insertion */ MDRV_INTERLEAVE(100) MDRV_MACHINE_START(lasso) @@ -670,17 +605,24 @@ static MACHINE_DRIVER_START( lasso ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_DRIVER_END +static MACHINE_DRIVER_START( lasso ) + + /* basic machine hardware */ + MDRV_IMPORT_FROM(base) + MDRV_CPU_ADD_TAG("blitter", M6502, 11289000/16) /* guess */ + MDRV_CPU_PROGRAM_MAP(lasso_coprocessor_map,0) + +MACHINE_DRIVER_END + static MACHINE_DRIVER_START( chameleo ) /* basic machine hardware */ - MDRV_IMPORT_FROM(lasso) + MDRV_IMPORT_FROM(base) MDRV_CPU_MODIFY("main") - MDRV_CPU_PROGRAM_MAP(chameleo_readmem,chameleo_writemem) + MDRV_CPU_PROGRAM_MAP(chameleo_main_map,0) MDRV_CPU_MODIFY("audio") - MDRV_CPU_PROGRAM_MAP(chameleo_sound_readmem,chameleo_sound_writemem) - - MDRV_CPU_REMOVE("blitter") + MDRV_CPU_PROGRAM_MAP(chameleo_audio_map,0) /* video hardware */ MDRV_VIDEO_UPDATE(chameleo) @@ -689,14 +631,12 @@ MACHINE_DRIVER_END static MACHINE_DRIVER_START( wwjgtin ) /* basic machine hardware */ - MDRV_IMPORT_FROM(lasso) + MDRV_IMPORT_FROM(base) MDRV_CPU_MODIFY("main") - MDRV_CPU_PROGRAM_MAP(wwjgtin_readmem,wwjgtin_writemem) + MDRV_CPU_PROGRAM_MAP(wwjgtin_main_map,0) MDRV_CPU_MODIFY("audio") - MDRV_CPU_PROGRAM_MAP(lasso_sound_readmem,wwjgtin_sound_writemem) - - MDRV_CPU_REMOVE("blitter") + MDRV_CPU_PROGRAM_MAP(wwjgtin_audio_map,0) /* video hardware */ MDRV_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1) // Smaller visible area? @@ -716,17 +656,13 @@ MACHINE_DRIVER_END static MACHINE_DRIVER_START( pinbo ) /* basic machine hardware */ - MDRV_IMPORT_FROM(lasso) + MDRV_IMPORT_FROM(base) MDRV_CPU_MODIFY("main") - MDRV_CPU_PROGRAM_MAP(chameleo_readmem,pinbo_writemem) + MDRV_CPU_PROGRAM_MAP(pinbo_main_map,0) MDRV_CPU_REPLACE("audio", Z80, 3000000) - MDRV_CPU_PROGRAM_MAP(pinbo_sound_readmem,pinbo_sound_writemem) - MDRV_CPU_IO_MAP(pinbo_sound_readport,pinbo_sound_writeport) - - MDRV_CPU_REMOVE("blitter") - - MDRV_MACHINE_START(pinbo) + MDRV_CPU_PROGRAM_MAP(pinbo_audio_map,0) + MDRV_CPU_IO_MAP(pinbo_audio_io_map,0) /* video hardware */ MDRV_GFXDECODE(pinbo) @@ -734,46 +670,42 @@ static MACHINE_DRIVER_START( pinbo ) MDRV_PALETTE_INIT(RRRR_GGGG_BBBB) MDRV_VIDEO_START(pinbo) - MDRV_VIDEO_UPDATE(chameleo) + MDRV_VIDEO_UPDATE(pinbo) /* sound hardware */ MDRV_SOUND_REMOVE("sn76489.1") MDRV_SOUND_REMOVE("sn76489.2") MDRV_SOUND_ADD(AY8910, 1250000) - MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.55) MDRV_SOUND_ADD(AY8910, 1250000) - MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.55) MACHINE_DRIVER_END ROM_START( lasso ) ROM_REGION( 0x10000, REGION_CPU1, 0 ) ROM_LOAD( "wm3", 0x8000, 0x2000, CRC(f93addd6) SHA1(b0a1b263874da8608c3bab4e8785358e2aa19c2e) ) - ROM_RELOAD( 0xc000, 0x2000) - ROM_LOAD( "wm4", 0xe000, 0x2000, CRC(77719859) SHA1(d206b6af9a567f70d69624866ae9973652527065) ) - ROM_RELOAD( 0xa000, 0x2000) + ROM_LOAD( "wm4", 0xa000, 0x2000, CRC(77719859) SHA1(d206b6af9a567f70d69624866ae9973652527065) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) ROM_LOAD( "wmc", 0x5000, 0x1000, CRC(8b4eb242) SHA1(55ada50036abbaa10799f37e35254e6ff70ee947) ) ROM_LOAD( "wmb", 0x6000, 0x1000, CRC(4658bcb9) SHA1(ecc83ef99edbe5f69a884a142478ff0f56edba12) ) ROM_LOAD( "wma", 0x7000, 0x1000, CRC(2e7de3e9) SHA1(665a89b9914ca16b9c08b751e142cf7320aaf793) ) - ROM_RELOAD( 0xf000, 0x1000 ) - ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* 6502 code (lasso image blitter) */ - ROM_LOAD( "wm5", 0xf000, 0x1000, CRC(7dc3ff07) SHA1(46aaa9186940d06fd679a573330e9ad3796aa647) ) - ROM_RELOAD( 0x8000, 0x1000) + ROM_REGION( 0x10000, REGION_CPU3, 0 ) + ROM_LOAD( "wm5", 0x8000, 0x1000, CRC(7dc3ff07) SHA1(46aaa9186940d06fd679a573330e9ad3796aa647) ) ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE ) - ROM_LOAD( "wm1", 0x0000, 0x0800, CRC(7db77256) SHA1(d12305bdfb6923c32982982a5544ae9bd8dbc2cb) ) /* Tiles */ - ROM_CONTINUE( 0x1000, 0x0800 ) /* Sprites */ - ROM_CONTINUE( 0x0800, 0x0800 ) - ROM_CONTINUE( 0x1800, 0x0800 ) - ROM_LOAD( "wm2", 0x2000, 0x0800, CRC(9e7d0b6f) SHA1(c82be332209bf7331718e51926004fe9aa6f5ebd) ) /* 2nd bitplane */ - ROM_CONTINUE( 0x3000, 0x0800 ) - ROM_CONTINUE( 0x2800, 0x0800 ) - ROM_CONTINUE( 0x3800, 0x0800 ) + ROM_LOAD( "wm1", 0x0000, 0x0800, CRC(7db77256) SHA1(d12305bdfb6923c32982982a5544ae9bd8dbc2cb) ) + ROM_CONTINUE( 0x1000, 0x0800 ) + ROM_CONTINUE( 0x0800, 0x0800 ) + ROM_CONTINUE( 0x1800, 0x0800 ) + ROM_LOAD( "wm2", 0x2000, 0x0800, CRC(9e7d0b6f) SHA1(c82be332209bf7331718e51926004fe9aa6f5ebd) ) + ROM_CONTINUE( 0x3000, 0x0800 ) + ROM_CONTINUE( 0x2800, 0x0800 ) + ROM_CONTINUE( 0x3800, 0x0800 ) ROM_REGION( 0x40, REGION_PROMS, 0 ) ROM_LOAD( "82s123.69", 0x0000, 0x0020, CRC(1eabb04d) SHA1(3dc5b407bc1b1dea77337b4e913f1e945386d5c9) ) @@ -781,61 +713,57 @@ ROM_START( lasso ) ROM_END ROM_START( chameleo ) - ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 6502 Code (Main CPU) */ + ROM_REGION( 0x10000, REGION_CPU1, 0 ) ROM_LOAD( "chamel4.bin", 0x4000, 0x2000, CRC(97379c47) SHA1(b29fa2318d4260c29fc95d22a461173dc960ad1a) ) ROM_LOAD( "chamel5.bin", 0x6000, 0x2000, CRC(0a2cadfd) SHA1(1ccc43accd60ca15b8f03ed1c3fda76a840a2bb1) ) ROM_LOAD( "chamel6.bin", 0x8000, 0x2000, CRC(b023c354) SHA1(0424ecf81ac9f0e055f9ff01cf0bd6d5c9ff866c) ) ROM_LOAD( "chamel7.bin", 0xa000, 0x2000, CRC(a5a03375) SHA1(c1eac4596c2bda419f3c513ecd3df9fae49ae159) ) - ROM_RELOAD( 0xe000, 0x2000 ) - ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 6502 Code (Sound CPU) */ + ROM_REGION( 0x10000, REGION_CPU2, 0 ) ROM_LOAD( "chamel3.bin", 0x1000, 0x1000, CRC(52eab9ec) SHA1(554c34134e3af970262da89fe82feeaf47fd30bc) ) ROM_LOAD( "chamel2.bin", 0x6000, 0x1000, CRC(81dcc49c) SHA1(7e1b4351775f9c140a43f531da8b055271b7b28c) ) ROM_LOAD( "chamel1.bin", 0x7000, 0x1000, CRC(96031d3b) SHA1(a143b54b98891423d355e0ba08c3b88d70fa0e23) ) - ROM_RELOAD( 0xf000, 0x1000 ) ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE ) - ROM_LOAD( "chamel8.bin", 0x0800, 0x0800, CRC(dc67916b) SHA1(8b3fad0d5d42925b44e51df7f88ea4b6a8dbb4f6) ) /* Tiles */ - ROM_CONTINUE( 0x1800, 0x0800 ) /* Sprites */ - ROM_CONTINUE( 0x0000, 0x0800 ) - ROM_CONTINUE( 0x1000, 0x0800 ) - ROM_LOAD( "chamel9.bin", 0x2800, 0x0800, CRC(6b559bf1) SHA1(b7b8b8bccbd88ea868e2d3ccb42513615120d8e6) ) /* 2nd bitplane */ - ROM_CONTINUE( 0x3800, 0x0800 ) - ROM_CONTINUE( 0x2000, 0x0800 ) - ROM_CONTINUE( 0x3000, 0x0800 ) + ROM_LOAD( "chamel8.bin", 0x0800, 0x0800, CRC(dc67916b) SHA1(8b3fad0d5d42925b44e51df7f88ea4b6a8dbb4f6) ) + ROM_CONTINUE( 0x1800, 0x0800 ) + ROM_CONTINUE( 0x0000, 0x0800 ) + ROM_CONTINUE( 0x1000, 0x0800 ) + ROM_LOAD( "chamel9.bin", 0x2800, 0x0800, CRC(6b559bf1) SHA1(b7b8b8bccbd88ea868e2d3ccb42513615120d8e6) ) + ROM_CONTINUE( 0x3800, 0x0800 ) + ROM_CONTINUE( 0x2000, 0x0800 ) + ROM_CONTINUE( 0x3000, 0x0800 ) - ROM_REGION( 0x40, REGION_PROMS, ROMREGION_DISPOSE ) /* Colors */ + ROM_REGION( 0x40, REGION_PROMS, ROMREGION_DISPOSE ) ROM_LOAD( "chambprm.bin", 0x0000, 0x0020, CRC(e3ad76df) SHA1(cd115cece4931bfcfc0f60147b942998a5c21bf7) ) ROM_LOAD( "chamaprm.bin", 0x0020, 0x0020, CRC(c7063b54) SHA1(53baed3806848207ab3a8fafd182cabec3be4b04) ) ROM_END ROM_START( wwjgtin ) - ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 6502 Code (Main CPU) */ + ROM_REGION( 0x10000, REGION_CPU1, 0 ) ROM_LOAD( "ic2.6", 0x4000, 0x4000, CRC(744ba45b) SHA1(cccf3e2dd3c27bf54d2abd366cd9a044311aa031) ) ROM_LOAD( "ic5.5", 0x8000, 0x4000, CRC(af751614) SHA1(fc0f0a3967524b1743a182c1da4f9b0c3097a157) ) - ROM_RELOAD( 0xc000, 0x4000 ) - ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 6502 Code (Sound CPU) */ + ROM_REGION( 0x10000, REGION_CPU2, 0 ) ROM_LOAD( "ic59.9", 0x4000, 0x4000, CRC(2ecb4d98) SHA1(d5b0d447b24f64fca452dc13e6ff95b090fce2d7) ) - ROM_RELOAD( 0xc000, 0x4000 ) ROM_REGION( 0x8000, REGION_GFX1, ROMREGION_DISPOSE ) - ROM_LOAD( "ic81.7", 0x0000, 0x0800, CRC(a27f1a63) SHA1(3c770424bd4996f648687afce4aecea252da83a7) ) /* Tiles */ - ROM_CONTINUE( 0x2000, 0x0800 ) /* Sprites */ - ROM_CONTINUE( 0x0800, 0x0800 ) - ROM_CONTINUE( 0x2800, 0x0800 ) - ROM_CONTINUE( 0x1000, 0x0800 ) - ROM_CONTINUE( 0x3000, 0x0800 ) - ROM_CONTINUE( 0x1800, 0x0800 ) - ROM_CONTINUE( 0x3800, 0x0800 ) - ROM_LOAD( "ic82.8", 0x4000, 0x0800, CRC(ea2862b3) SHA1(f7604fd324560c54311c35f806a17e30e018032a) ) /* 2nd bitplane */ - ROM_CONTINUE( 0x6000, 0x0800 ) /* Sprites */ - ROM_CONTINUE( 0x4800, 0x0800 ) - ROM_CONTINUE( 0x6800, 0x0800 ) - ROM_CONTINUE( 0x5000, 0x0800 ) - ROM_CONTINUE( 0x7000, 0x0800 ) - ROM_CONTINUE( 0x5800, 0x0800 ) - ROM_CONTINUE( 0x7800, 0x0800 ) + ROM_LOAD( "ic81.7", 0x0000, 0x0800, CRC(a27f1a63) SHA1(3c770424bd4996f648687afce4aecea252da83a7) ) + ROM_CONTINUE( 0x2000, 0x0800 ) + ROM_CONTINUE( 0x0800, 0x0800 ) + ROM_CONTINUE( 0x2800, 0x0800 ) + ROM_CONTINUE( 0x1000, 0x0800 ) + ROM_CONTINUE( 0x3000, 0x0800 ) + ROM_CONTINUE( 0x1800, 0x0800 ) + ROM_CONTINUE( 0x3800, 0x0800 ) + ROM_LOAD( "ic82.8", 0x4000, 0x0800, CRC(ea2862b3) SHA1(f7604fd324560c54311c35f806a17e30e018032a) ) + ROM_CONTINUE( 0x6000, 0x0800 ) + ROM_CONTINUE( 0x4800, 0x0800 ) + ROM_CONTINUE( 0x6800, 0x0800 ) + ROM_CONTINUE( 0x5000, 0x0800 ) + ROM_CONTINUE( 0x7000, 0x0800 ) + ROM_CONTINUE( 0x5800, 0x0800 ) + ROM_CONTINUE( 0x7800, 0x0800 ) ROM_REGION( 0x4000, REGION_GFX2, ROMREGION_DISPOSE ) ROM_LOAD( "ic47.3", 0x0000, 0x2000, CRC(40594c59) SHA1(94533be8e267d9aa5bcdd52b45f6974436d3fed5) ) // 1xxxxxxxxxxxx = 0xFF @@ -851,32 +779,30 @@ ROM_START( wwjgtin ) ROM_END ROM_START( photof ) - ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 6502 Code (Main CPU) */ + ROM_REGION( 0x10000, REGION_CPU1, 0 ) ROM_LOAD( "ic2.bin", 0x4000, 0x4000, CRC(4d960b54) SHA1(fe6c4943cbf9a9c79a2fd1dd86bb6e1f414b3c8d) ) ROM_LOAD( "ic6.bin", 0x8000, 0x4000, CRC(a4ad21dc) SHA1(55b3ecdf80b4a384a0d9932756330fb3021502f8) ) - ROM_RELOAD( 0xc000, 0x4000 ) - ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 6502 Code (Sound CPU) */ + ROM_REGION( 0x10000, REGION_CPU2, 0 ) ROM_LOAD( "ic59.bin", 0x4000, 0x4000, CRC(2ecb4d98) SHA1(d5b0d447b24f64fca452dc13e6ff95b090fce2d7) ) - ROM_RELOAD( 0xc000, 0x4000 ) ROM_REGION( 0x8000, REGION_GFX1, ROMREGION_DISPOSE ) - ROM_LOAD( "ic81.bin", 0x0000, 0x0800, CRC(0f170253) SHA1(e8b09cf4e9bae6c762ff325a559fb860a80133aa) ) /* Tiles */ - ROM_CONTINUE( 0x2000, 0x0800 ) /* Sprites */ - ROM_CONTINUE( 0x0800, 0x0800 ) - ROM_CONTINUE( 0x2800, 0x0800 ) - ROM_CONTINUE( 0x1000, 0x0800 ) - ROM_CONTINUE( 0x3000, 0x0800 ) - ROM_CONTINUE( 0x1800, 0x0800 ) - ROM_CONTINUE( 0x3800, 0x0800 ) - ROM_LOAD( "ic82.bin", 0x4000, 0x0800, CRC(c4cadee9) SHA1(46cc0ecc3642c432625c0d131aa31fec2e060d2f) ) /* 2nd bitplane */ - ROM_CONTINUE( 0x6000, 0x0800 ) /* Sprites */ - ROM_CONTINUE( 0x4800, 0x0800 ) - ROM_CONTINUE( 0x6800, 0x0800 ) - ROM_CONTINUE( 0x5000, 0x0800 ) - ROM_CONTINUE( 0x7000, 0x0800 ) - ROM_CONTINUE( 0x5800, 0x0800 ) - ROM_CONTINUE( 0x7800, 0x0800 ) + ROM_LOAD( "ic81.bin", 0x0000, 0x0800, CRC(0f170253) SHA1(e8b09cf4e9bae6c762ff325a559fb860a80133aa) ) + ROM_CONTINUE( 0x2000, 0x0800 ) + ROM_CONTINUE( 0x0800, 0x0800 ) + ROM_CONTINUE( 0x2800, 0x0800 ) + ROM_CONTINUE( 0x1000, 0x0800 ) + ROM_CONTINUE( 0x3000, 0x0800 ) + ROM_CONTINUE( 0x1800, 0x0800 ) + ROM_CONTINUE( 0x3800, 0x0800 ) + ROM_LOAD( "ic82.bin", 0x4000, 0x0800, CRC(c4cadee9) SHA1(46cc0ecc3642c432625c0d131aa31fec2e060d2f) ) + ROM_CONTINUE( 0x6000, 0x0800 ) + ROM_CONTINUE( 0x4800, 0x0800 ) + ROM_CONTINUE( 0x6800, 0x0800 ) + ROM_CONTINUE( 0x5000, 0x0800 ) + ROM_CONTINUE( 0x7000, 0x0800 ) + ROM_CONTINUE( 0x5800, 0x0800 ) + ROM_CONTINUE( 0x7800, 0x0800 ) ROM_REGION( 0x4000, REGION_GFX2, ROMREGION_DISPOSE ) ROM_LOAD( "3-ic47.bin", 0x0000, 0x2000, CRC(40594c59) SHA1(94533be8e267d9aa5bcdd52b45f6974436d3fed5) ) // 1xxxxxxxxxxxx = 0xFF @@ -897,38 +823,37 @@ ROM_START( pinbo ) ROM_LOAD( "rom3.e7", 0x6000, 0x2000, CRC(1cd1b3bd) SHA1(388ea72568f5bfd39856d872415327a2afaf7fad) ) ROM_LOAD( "rom4.h7", 0x8000, 0x2000, CRC(ba043fa7) SHA1(ef3d67b6dab5c82035c58290879a3ca969a0256d) ) ROM_LOAD( "rom5.j7", 0xa000, 0x2000, CRC(e71046c4) SHA1(f49133544c98df5f3e1a1d2ae92e17261b1504fc) ) - ROM_RELOAD( 0xe000, 0x2000 ) - ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64K for sound */ + ROM_REGION( 0x10000, REGION_CPU2, 0 ) ROM_LOAD( "rom1.s8", 0x0000, 0x2000, CRC(ca45a1be) SHA1(d0b2d8f1e6d01b60cba83d2bd458a57548549b4b) ) ROM_REGION( 0xc000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "rom6.a1", 0x0000, 0x0800, CRC(74fe8e98) SHA1(3c9ac38d7054b2831a515786b6f204b1804aaea3) ) /* tiles */ - ROM_CONTINUE( 0x2000, 0x0800 ) /* sprites */ - ROM_CONTINUE( 0x0800, 0x0800 ) - ROM_CONTINUE( 0x2800, 0x0800 ) - ROM_CONTINUE( 0x1000, 0x0800 ) - ROM_CONTINUE( 0x3000, 0x0800 ) - ROM_CONTINUE( 0x1800, 0x0800 ) - ROM_CONTINUE( 0x3800, 0x0800 ) - ROM_LOAD( "rom8.c1", 0x4000, 0x0800, CRC(5a800fe7) SHA1(375269ec73fab7f0cf017a79e002e31b006f5ad7) ) /* 2nd bitplane */ - ROM_CONTINUE( 0x6000, 0x0800 ) - ROM_CONTINUE( 0x4800, 0x0800 ) - ROM_CONTINUE( 0x6800, 0x0800 ) - ROM_CONTINUE( 0x5000, 0x0800 ) - ROM_CONTINUE( 0x7000, 0x0800 ) - ROM_CONTINUE( 0x5800, 0x0800 ) - ROM_CONTINUE( 0x7800, 0x0800 ) + ROM_CONTINUE( 0x2000, 0x0800 ) + ROM_CONTINUE( 0x0800, 0x0800 ) + ROM_CONTINUE( 0x2800, 0x0800 ) + ROM_CONTINUE( 0x1000, 0x0800 ) + ROM_CONTINUE( 0x3000, 0x0800 ) + ROM_CONTINUE( 0x1800, 0x0800 ) + ROM_CONTINUE( 0x3800, 0x0800 ) + ROM_LOAD( "rom8.c1", 0x4000, 0x0800, CRC(5a800fe7) SHA1(375269ec73fab7f0cf017a79e002e31b006f5ad7) ) + ROM_CONTINUE( 0x6000, 0x0800 ) + ROM_CONTINUE( 0x4800, 0x0800 ) + ROM_CONTINUE( 0x6800, 0x0800 ) + ROM_CONTINUE( 0x5000, 0x0800 ) + ROM_CONTINUE( 0x7000, 0x0800 ) + ROM_CONTINUE( 0x5800, 0x0800 ) + ROM_CONTINUE( 0x7800, 0x0800 ) ROM_LOAD( "rom7.d1", 0x8000, 0x0800, CRC(327a3c21) SHA1(e938915d28ac4ec033b20d33728788493e3f30f6) ) /* 3rd bitplane */ - ROM_CONTINUE( 0xa000, 0x0800 ) - ROM_CONTINUE( 0x8800, 0x0800 ) - ROM_CONTINUE( 0xa800, 0x0800 ) - ROM_CONTINUE( 0x9000, 0x0800 ) - ROM_CONTINUE( 0xb000, 0x0800 ) - ROM_CONTINUE( 0x9800, 0x0800 ) - ROM_CONTINUE( 0xb800, 0x0800 ) + ROM_CONTINUE( 0xa000, 0x0800 ) + ROM_CONTINUE( 0x8800, 0x0800 ) + ROM_CONTINUE( 0xa800, 0x0800 ) + ROM_CONTINUE( 0x9000, 0x0800 ) + ROM_CONTINUE( 0xb000, 0x0800 ) + ROM_CONTINUE( 0x9800, 0x0800 ) + ROM_CONTINUE( 0xb800, 0x0800 ) - ROM_REGION( 0x00300, REGION_PROMS, 0 ) /* Color PROMs */ + ROM_REGION( 0x00300, REGION_PROMS, 0 ) ROM_LOAD( "red.l10", 0x0000, 0x0100, CRC(e6c9ba52) SHA1(6ea96f9bd71de6181d675b0f2d59a8c5e1be5aa3) ) ROM_LOAD( "green.k10", 0x0100, 0x0100, CRC(1bf2d335) SHA1(dcb074d3de939dfc652743e25bc66bd6fbdc3289) ) ROM_LOAD( "blue.n10", 0x0200, 0x0100, CRC(e41250ad) SHA1(2e9a2babbacb1753057d46cf1dd6dc183611747e) ) @@ -940,38 +865,37 @@ ROM_START( pinboa ) ROM_LOAD( "6.bin", 0x6000, 0x2000, CRC(f80b204c) SHA1(ee9b4ae1d8ea2fc062022fcfae67df87ed7aff41) ) ROM_LOAD( "5.bin", 0x8000, 0x2000, CRC(c57fe503) SHA1(11b7371c07c9b2c73ab61420a2cc609653c48d37) ) ROM_LOAD( "4.bin", 0xa000, 0x2000, CRC(d632b598) SHA1(270a5a790a66eaf3d90bf8081ab144fd1af9db3d) ) - ROM_RELOAD( 0xe000, 0x2000 ) - ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64K for sound */ + ROM_REGION( 0x10000, REGION_CPU2, 0 ) ROM_LOAD( "8.bin", 0x0000, 0x2000, CRC(32d1df14) SHA1(c0d4181378bbd6f2c594e923e2f8b21647c7fb0e) ) ROM_REGION( 0xc000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "rom6.a1", 0x0000, 0x0800, CRC(74fe8e98) SHA1(3c9ac38d7054b2831a515786b6f204b1804aaea3) ) /* tiles */ - ROM_CONTINUE( 0x2000, 0x0800 ) /* sprites */ - ROM_CONTINUE( 0x0800, 0x0800 ) - ROM_CONTINUE( 0x2800, 0x0800 ) - ROM_CONTINUE( 0x1000, 0x0800 ) - ROM_CONTINUE( 0x3000, 0x0800 ) - ROM_CONTINUE( 0x1800, 0x0800 ) - ROM_CONTINUE( 0x3800, 0x0800 ) - ROM_LOAD( "rom8.c1", 0x4000, 0x0800, CRC(5a800fe7) SHA1(375269ec73fab7f0cf017a79e002e31b006f5ad7) ) /* 2nd bitplane */ - ROM_CONTINUE( 0x6000, 0x0800 ) - ROM_CONTINUE( 0x4800, 0x0800 ) - ROM_CONTINUE( 0x6800, 0x0800 ) - ROM_CONTINUE( 0x5000, 0x0800 ) - ROM_CONTINUE( 0x7000, 0x0800 ) - ROM_CONTINUE( 0x5800, 0x0800 ) - ROM_CONTINUE( 0x7800, 0x0800 ) + ROM_CONTINUE( 0x2000, 0x0800 ) + ROM_CONTINUE( 0x0800, 0x0800 ) + ROM_CONTINUE( 0x2800, 0x0800 ) + ROM_CONTINUE( 0x1000, 0x0800 ) + ROM_CONTINUE( 0x3000, 0x0800 ) + ROM_CONTINUE( 0x1800, 0x0800 ) + ROM_CONTINUE( 0x3800, 0x0800 ) + ROM_LOAD( "rom8.c1", 0x4000, 0x0800, CRC(5a800fe7) SHA1(375269ec73fab7f0cf017a79e002e31b006f5ad7) ) + ROM_CONTINUE( 0x6000, 0x0800 ) + ROM_CONTINUE( 0x4800, 0x0800 ) + ROM_CONTINUE( 0x6800, 0x0800 ) + ROM_CONTINUE( 0x5000, 0x0800 ) + ROM_CONTINUE( 0x7000, 0x0800 ) + ROM_CONTINUE( 0x5800, 0x0800 ) + ROM_CONTINUE( 0x7800, 0x0800 ) ROM_LOAD( "2.bin", 0x8000, 0x0800, CRC(33cac92e) SHA1(55d4ff3ae9c9519a59bd6021a53584c873b4d327) ) /* 3rd bitplane */ - ROM_CONTINUE( 0xa000, 0x0800 ) - ROM_CONTINUE( 0x8800, 0x0800 ) - ROM_CONTINUE( 0xa800, 0x0800 ) - ROM_CONTINUE( 0x9000, 0x0800 ) - ROM_CONTINUE( 0xb000, 0x0800 ) - ROM_CONTINUE( 0x9800, 0x0800 ) - ROM_CONTINUE( 0xb800, 0x0800 ) + ROM_CONTINUE( 0xa000, 0x0800 ) + ROM_CONTINUE( 0x8800, 0x0800 ) + ROM_CONTINUE( 0xa800, 0x0800 ) + ROM_CONTINUE( 0x9000, 0x0800 ) + ROM_CONTINUE( 0xb000, 0x0800 ) + ROM_CONTINUE( 0x9800, 0x0800 ) + ROM_CONTINUE( 0xb800, 0x0800 ) - ROM_REGION( 0x00300, REGION_PROMS, 0 ) /* Color PROMs */ + ROM_REGION( 0x00300, REGION_PROMS, 0 ) ROM_LOAD( "red.l10", 0x0000, 0x0100, CRC(e6c9ba52) SHA1(6ea96f9bd71de6181d675b0f2d59a8c5e1be5aa3) ) ROM_LOAD( "green.k10", 0x0100, 0x0100, CRC(1bf2d335) SHA1(dcb074d3de939dfc652743e25bc66bd6fbdc3289) ) ROM_LOAD( "blue.n10", 0x0200, 0x0100, CRC(e41250ad) SHA1(2e9a2babbacb1753057d46cf1dd6dc183611747e) ) @@ -983,38 +907,37 @@ ROM_START( pinbos ) ROM_LOAD( "b5.bin", 0x6000, 0x2000, CRC(f80b204c) SHA1(ee9b4ae1d8ea2fc062022fcfae67df87ed7aff41) ) ROM_LOAD( "b6.bin", 0x8000, 0x2000, CRC(ae967d83) SHA1(e79db85917a31821d10f919c4c429da33e97894d) ) ROM_LOAD( "b7.bin", 0xa000, 0x2000, CRC(7a584b4e) SHA1(2eb55b706815228b3b12ee5c0f6c415cd1d612e6) ) - ROM_RELOAD( 0xe000, 0x2000 ) - ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64K for sound */ + ROM_REGION( 0x10000, REGION_CPU2, 0 ) ROM_LOAD( "b8.bin", 0x0000, 0x2000, CRC(32d1df14) SHA1(c0d4181378bbd6f2c594e923e2f8b21647c7fb0e) ) ROM_REGION( 0xc000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "rom6.a1", 0x0000, 0x0800, CRC(74fe8e98) SHA1(3c9ac38d7054b2831a515786b6f204b1804aaea3) ) /* tiles */ - ROM_CONTINUE( 0x2000, 0x0800 ) /* sprites */ - ROM_CONTINUE( 0x0800, 0x0800 ) - ROM_CONTINUE( 0x2800, 0x0800 ) - ROM_CONTINUE( 0x1000, 0x0800 ) - ROM_CONTINUE( 0x3000, 0x0800 ) - ROM_CONTINUE( 0x1800, 0x0800 ) - ROM_CONTINUE( 0x3800, 0x0800 ) - ROM_LOAD( "rom8.c1", 0x4000, 0x0800, CRC(5a800fe7) SHA1(375269ec73fab7f0cf017a79e002e31b006f5ad7) ) /* 2nd bitplane */ - ROM_CONTINUE( 0x6000, 0x0800 ) - ROM_CONTINUE( 0x4800, 0x0800 ) - ROM_CONTINUE( 0x6800, 0x0800 ) - ROM_CONTINUE( 0x5000, 0x0800 ) - ROM_CONTINUE( 0x7000, 0x0800 ) - ROM_CONTINUE( 0x5800, 0x0800 ) - ROM_CONTINUE( 0x7800, 0x0800 ) + ROM_CONTINUE( 0x2000, 0x0800 ) + ROM_CONTINUE( 0x0800, 0x0800 ) + ROM_CONTINUE( 0x2800, 0x0800 ) + ROM_CONTINUE( 0x1000, 0x0800 ) + ROM_CONTINUE( 0x3000, 0x0800 ) + ROM_CONTINUE( 0x1800, 0x0800 ) + ROM_CONTINUE( 0x3800, 0x0800 ) + ROM_LOAD( "rom8.c1", 0x4000, 0x0800, CRC(5a800fe7) SHA1(375269ec73fab7f0cf017a79e002e31b006f5ad7) ) + ROM_CONTINUE( 0x6000, 0x0800 ) + ROM_CONTINUE( 0x4800, 0x0800 ) + ROM_CONTINUE( 0x6800, 0x0800 ) + ROM_CONTINUE( 0x5000, 0x0800 ) + ROM_CONTINUE( 0x7000, 0x0800 ) + ROM_CONTINUE( 0x5800, 0x0800 ) + ROM_CONTINUE( 0x7800, 0x0800 ) ROM_LOAD( "rom7.d1", 0x8000, 0x0800, CRC(327a3c21) SHA1(e938915d28ac4ec033b20d33728788493e3f30f6) ) /* 3rd bitplane */ - ROM_CONTINUE( 0xa000, 0x0800 ) - ROM_CONTINUE( 0x8800, 0x0800 ) - ROM_CONTINUE( 0xa800, 0x0800 ) - ROM_CONTINUE( 0x9000, 0x0800 ) - ROM_CONTINUE( 0xb000, 0x0800 ) - ROM_CONTINUE( 0x9800, 0x0800 ) - ROM_CONTINUE( 0xb800, 0x0800 ) + ROM_CONTINUE( 0xa000, 0x0800 ) + ROM_CONTINUE( 0x8800, 0x0800 ) + ROM_CONTINUE( 0xa800, 0x0800 ) + ROM_CONTINUE( 0x9000, 0x0800 ) + ROM_CONTINUE( 0xb000, 0x0800 ) + ROM_CONTINUE( 0x9800, 0x0800 ) + ROM_CONTINUE( 0xb800, 0x0800 ) - ROM_REGION( 0x00300, REGION_PROMS, 0 ) /* Color PROMs */ + ROM_REGION( 0x00300, REGION_PROMS, 0 ) ROM_LOAD( "red.l10", 0x0000, 0x0100, CRC(e6c9ba52) SHA1(6ea96f9bd71de6181d675b0f2d59a8c5e1be5aa3) ) ROM_LOAD( "green.k10", 0x0100, 0x0100, CRC(1bf2d335) SHA1(dcb074d3de939dfc652743e25bc66bd6fbdc3289) ) ROM_LOAD( "blue.n10", 0x0200, 0x0100, CRC(e41250ad) SHA1(2e9a2babbacb1753057d46cf1dd6dc183611747e) ) @@ -1028,10 +951,10 @@ ROM_END ***************************************************************************/ -GAME( 1982, lasso, 0, lasso, lasso, 0, ROT90, "SNK", "Lasso", GAME_SUPPORTS_SAVE ) -GAME( 1983, chameleo, 0, chameleo, chameleo, 0, ROT0, "Jaleco", "Chameleon", GAME_SUPPORTS_SAVE ) -GAME( 1984, wwjgtin, 0, wwjgtin, wwjgtin, 0, ROT0, "Jaleco / Casio", "Wai Wai Jockey Gate-In!", GAME_SUPPORTS_SAVE ) -GAME( 1991, photof, wwjgtin,wwjgtin, wwjgtin, 0, ROT0, "bootleg?", "Photo Finish", GAME_SUPPORTS_SAVE ) -GAME( 1984, pinbo, 0, pinbo, pinbo, 0, ROT90, "Jaleco", "Pinbo (set 1)", GAME_SUPPORTS_SAVE ) -GAME( 1984, pinboa, pinbo, pinbo, pinbo, 0, ROT90, "Jaleco", "Pinbo (set 2)", GAME_SUPPORTS_SAVE ) -GAME( 1985, pinbos, pinbo, pinbo, pinbo, 0, ROT90, "bootleg?", "Pinbo (Strike)", GAME_SUPPORTS_SAVE ) +GAME( 1982, lasso, 0, lasso, lasso, 0, ROT90, "SNK", "Lasso", GAME_SUPPORTS_SAVE ) +GAME( 1983, chameleo, 0, chameleo, chameleo, 0, ROT0, "Jaleco", "Chameleon", GAME_SUPPORTS_SAVE ) +GAME( 1984, wwjgtin, 0, wwjgtin, wwjgtin, 0, ROT0, "Jaleco / Casio", "Wai Wai Jockey Gate-In!", GAME_SUPPORTS_SAVE ) +GAME( 1991, photof, wwjgtin, wwjgtin, wwjgtin, 0, ROT0, "bootleg?", "Photo Finish", GAME_SUPPORTS_SAVE ) +GAME( 1984, pinbo, 0, pinbo, pinbo, 0, ROT90, "Jaleco", "Pinbo (set 1)", GAME_SUPPORTS_SAVE ) +GAME( 1984, pinboa, pinbo, pinbo, pinbo, 0, ROT90, "Jaleco", "Pinbo (set 2)", GAME_SUPPORTS_SAVE ) +GAME( 1985, pinbos, pinbo, pinbo, pinbo, 0, ROT90, "bootleg?", "Pinbo (Strike)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/lasso.h b/src/mame/includes/lasso.h index 40290f267a9..ac0f5b95924 100644 --- a/src/mame/includes/lasso.h +++ b/src/mame/includes/lasso.h @@ -12,14 +12,14 @@ extern UINT8 *lasso_spriteram; extern size_t lasso_spriteram_size; extern UINT8 *lasso_bitmap_ram; extern UINT8 *wwjgtin_track_scroll; +extern UINT8 *lasso_back_color; +extern UINT8 *wwjgtin_last_colors; WRITE8_HANDLER( lasso_videoram_w ); WRITE8_HANDLER( lasso_colorram_w ); -WRITE8_HANDLER( lasso_backcolor_w ); WRITE8_HANDLER( lasso_video_control_w ); WRITE8_HANDLER( wwjgtin_video_control_w ); WRITE8_HANDLER( pinbo_video_control_w ); -WRITE8_HANDLER( wwjgtin_lastcolor_w ); PALETTE_INIT( lasso ); PALETTE_INIT( wwjgtin ); @@ -31,3 +31,4 @@ VIDEO_START( pinbo ); VIDEO_UPDATE( lasso ); VIDEO_UPDATE( chameleo ); VIDEO_UPDATE( wwjgtin ); +VIDEO_UPDATE( pinbo ); diff --git a/src/mame/video/lasso.c b/src/mame/video/lasso.c index 4c12ef9a236..6522cc59e12 100644 --- a/src/mame/video/lasso.c +++ b/src/mame/video/lasso.c @@ -37,8 +37,9 @@ UINT8 *lasso_spriteram; size_t lasso_spriteram_size; UINT8 *lasso_bitmap_ram; /* 0x2000 bytes for a 256 x 256 x 1 bitmap */ UINT8 *wwjgtin_track_scroll; +UINT8 *lasso_back_color; +UINT8 *wwjgtin_last_colors; -/* variables only used here: */ static tilemap *bg_tilemap, *track_tilemap; static UINT8 gfxbank; /* used by lasso, chameleo, wwjgtin and pinbo */ static UINT8 wwjgtin_track_enable; /* used by wwjgtin */ @@ -52,7 +53,7 @@ static UINT8 wwjgtin_track_enable; /* used by wwjgtin */ ***************************************************************************/ -static void lasso_set_color(int i, int data) +static void lasso_set_color(running_machine *machine, int i, int data) { int bit0,bit1,bit2,r,g,b; @@ -61,30 +62,34 @@ static void lasso_set_color(int i, int data) bit1 = (data >> 1) & 0x01; bit2 = (data >> 2) & 0x01; r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + /* green component */ bit0 = (data >> 3) & 0x01; bit1 = (data >> 4) & 0x01; bit2 = (data >> 5) & 0x01; g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + /* blue component */ bit0 = (data >> 6) & 0x01; bit1 = (data >> 7) & 0x01; b = 0x4f * bit0 + 0xa8 * bit1; - palette_set_color( Machine,i,MAKE_RGB(r,g,b) ); + palette_set_color(machine, i, MAKE_RGB(r, g, b)); } + PALETTE_INIT( lasso ) { int i; - for (i = 0;i < 0x40;i++) + for (i = 0; i < 0x40; i++) { - lasso_set_color(i,*color_prom); + lasso_set_color(machine, i, *color_prom); color_prom++; } } + /* 16 color tiles with a 4 color step for the palettes */ PALETTE_INIT( wwjgtin ) { @@ -93,11 +98,32 @@ PALETTE_INIT( wwjgtin ) palette_init_lasso(machine,colortable,color_prom); for( color = 0; color < 0x10; color++ ) - for( pen = 0; pen < 16; pen++ ) - colortable[color * 16 + pen + 4*16] = (color * 4 + pen) % 0x40; + for( pen = 0; pen < 0x10; pen++ ) + colortable[color * 0x10 + pen + 0x40] = (color * 4 + pen) & 0x3f; } +static void set_back_color(running_machine *machine) +{ + int i; + + /* stuff into color#0 of each palette */ + for (i = 0; i < 0x40; i += 4) + lasso_set_color(machine, i, *lasso_back_color); +} + + +static void set_wwjgtin_last_colors(running_machine *machine) +{ + int i; + + /* the last palette entries can be changed */ + for (i = 0; i < 4; i++) + lasso_set_color(machine, 0x3f - i, wwjgtin_last_colors[i]); +} + + + /*************************************************************************** Callbacks for the TileMap code @@ -108,6 +134,7 @@ static TILE_GET_INFO( lasso_get_bg_tile_info ) { int code = lasso_videoram[tile_index]; int color = lasso_colorram[tile_index]; + SET_TILE_INFO(0, code + ((UINT16)gfxbank << 8), color & 0x0f, @@ -119,6 +146,7 @@ static TILE_GET_INFO( wwjgtin_get_track_tile_info ) UINT8 *ROM = memory_region(REGION_USER1); int code = ROM[tile_index]; int color = ROM[tile_index + 0x2000]; + SET_TILE_INFO(2, code, color & 0x0f, @@ -129,6 +157,7 @@ static TILE_GET_INFO( pinbo_get_bg_tile_info ) { int code = lasso_videoram[tile_index]; int color = lasso_colorram[tile_index]; + SET_TILE_INFO(0, code + ((color & 0x30) << 4), color & 0x0f, @@ -240,22 +269,6 @@ WRITE8_HANDLER( pinbo_video_control_w ) } -/* The bg_tilemap color can be changed */ -WRITE8_HANDLER( lasso_backcolor_w ) -{ - int i; - for( i=0; i<0x40; i+=4 ) /* stuff into color#0 of each palette */ - lasso_set_color(i,data); -} - - -/* The last 4 color (= last palette) entries can be changed */ -WRITE8_HANDLER( wwjgtin_lastcolor_w ) -{ - lasso_set_color(0x3f - offset,data); -} - - /************************************* * * Video update @@ -332,39 +345,32 @@ static void draw_lasso(running_machine *machine, mame_bitmap *bitmap) { for (x = 0; x < 256; ) { + int bit; + UINT8 data = *source++; - if (data) + for (bit = 0; bit < 8; bit++) { - int bit; - - for (bit = 0; bit < 8; bit++) + if (data & 0x80) { - if (data & 0x80) + if (flip_screen_x) { - if (flip_screen_x) - { - if (flip_screen_y) - *BITMAP_ADDR16(bitmap, 255-y, 255-x) = pen; - else - *BITMAP_ADDR16(bitmap, y, 255-x) = pen; - } + if (flip_screen_y) + *BITMAP_ADDR16(bitmap, 255-y, 255-x) = pen; else - { - if (flip_screen_y) - *BITMAP_ADDR16(bitmap, 255-y, x) = pen; - else - *BITMAP_ADDR16(bitmap, y, x) = pen; - } + *BITMAP_ADDR16(bitmap, y, 255-x) = pen; + } + else + { + if (flip_screen_y) + *BITMAP_ADDR16(bitmap, 255-y, x) = pen; + else + *BITMAP_ADDR16(bitmap, y, x) = pen; } - - x++; - data <<= 1; } - } - else - { - x += 8; + + x++; + data <<= 1; } } } @@ -373,22 +379,31 @@ static void draw_lasso(running_machine *machine, mame_bitmap *bitmap) VIDEO_UPDATE( lasso ) { + set_back_color(machine); + tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); draw_lasso(machine, bitmap); draw_sprites(machine, bitmap, cliprect, 0); + return 0; } VIDEO_UPDATE( chameleo ) { + set_back_color(machine); + tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); draw_sprites(machine, bitmap, cliprect, 0); + return 0; } VIDEO_UPDATE( wwjgtin ) { + set_back_color(machine); + set_wwjgtin_last_colors(machine); + tilemap_set_scrollx(track_tilemap,0,wwjgtin_track_scroll[0] + wwjgtin_track_scroll[1]*256); tilemap_set_scrolly(track_tilemap,0,wwjgtin_track_scroll[2] + wwjgtin_track_scroll[3]*256); @@ -399,5 +414,17 @@ VIDEO_UPDATE( wwjgtin ) draw_sprites(machine, bitmap, cliprect, 1); // reverse order tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); + return 0; } + + +VIDEO_UPDATE( pinbo ) +{ + tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); + draw_sprites(machine, bitmap, cliprect, 0); + + return 0; +} + +