Modernization of the remainder of taitoic as well as the deco_bac06 device. [Osso]

This commit is contained in:
Scott Stone 2013-06-30 02:59:40 +00:00
parent 9c0f86cc14
commit bbdb97179a
57 changed files with 1525 additions and 1664 deletions

View File

@ -29,7 +29,6 @@
#include "sound/3812intf.h"
#include "sound/okim6295.h"
#include "includes/actfancr.h"
#include "video/decbac06.h"
#include "video/decmxc06.h"
/******************************************************************************/
@ -73,12 +72,12 @@ WRITE8_MEMBER(actfancr_state::actfancr_buffer_spriteram_w)
static ADDRESS_MAP_START( actfan_map, AS_PROGRAM, 8, actfancr_state )
AM_RANGE(0x000000, 0x02ffff) AM_ROM
AM_RANGE(0x060000, 0x060007) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control0_8bit_w)
AM_RANGE(0x060010, 0x06001f) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control1_8bit_swap_w)
AM_RANGE(0x062000, 0x063fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_data_8bit_swap_r, deco_bac06_pf_data_8bit_swap_w)
AM_RANGE(0x070000, 0x070007) AM_DEVWRITE_LEGACY("tilegen2", deco_bac06_pf_control0_8bit_w)
AM_RANGE(0x070010, 0x07001f) AM_DEVWRITE_LEGACY("tilegen2", deco_bac06_pf_control1_8bit_swap_w)
AM_RANGE(0x072000, 0x0727ff) AM_DEVREADWRITE_LEGACY("tilegen2", deco_bac06_pf_data_8bit_swap_r, deco_bac06_pf_data_8bit_swap_w)
AM_RANGE(0x060000, 0x060007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w)
AM_RANGE(0x060010, 0x06001f) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_swap_w)
AM_RANGE(0x062000, 0x063fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_swap_r, pf_data_8bit_swap_w)
AM_RANGE(0x070000, 0x070007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control0_8bit_w)
AM_RANGE(0x070010, 0x07001f) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control1_8bit_swap_w)
AM_RANGE(0x072000, 0x0727ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_8bit_swap_r, pf_data_8bit_swap_w)
AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x110000, 0x110001) AM_WRITE(actfancr_buffer_spriteram_w)
AM_RANGE(0x120000, 0x1205ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_le_w) AM_SHARE("paletteram")
@ -93,14 +92,14 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( triothep_map, AS_PROGRAM, 8, actfancr_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x040000, 0x040007) AM_DEVWRITE_LEGACY("tilegen2", deco_bac06_pf_control0_8bit_w)
AM_RANGE(0x040010, 0x04001f) AM_DEVWRITE_LEGACY("tilegen2", deco_bac06_pf_control1_8bit_swap_w)
AM_RANGE(0x044000, 0x045fff) AM_DEVREADWRITE_LEGACY("tilegen2", deco_bac06_pf_data_8bit_swap_r, deco_bac06_pf_data_8bit_swap_w)
AM_RANGE(0x046400, 0x0467ff) AM_DEVREADWRITE_LEGACY("tilegen2", deco_bac06_pf_rowscroll_8bit_swap_r, deco_bac06_pf_rowscroll_8bit_swap_w)
AM_RANGE(0x060000, 0x060007) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control0_8bit_w)
AM_RANGE(0x060010, 0x06001f) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control1_8bit_swap_w)
AM_RANGE(0x064000, 0x0647ff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_data_8bit_swap_r, deco_bac06_pf_data_8bit_swap_w)
AM_RANGE(0x066400, 0x0667ff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_rowscroll_8bit_swap_r, deco_bac06_pf_rowscroll_8bit_swap_w)
AM_RANGE(0x040000, 0x040007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control0_8bit_w)
AM_RANGE(0x040010, 0x04001f) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control1_8bit_swap_w)
AM_RANGE(0x044000, 0x045fff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_8bit_swap_r, pf_data_8bit_swap_w)
AM_RANGE(0x046400, 0x0467ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_rowscroll_8bit_swap_r, pf_rowscroll_8bit_swap_w)
AM_RANGE(0x060000, 0x060007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w)
AM_RANGE(0x060010, 0x06001f) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_swap_w)
AM_RANGE(0x064000, 0x0647ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_swap_r, pf_data_8bit_swap_w)
AM_RANGE(0x066400, 0x0667ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_8bit_swap_r, pf_rowscroll_8bit_swap_w)
AM_RANGE(0x100000, 0x100001) AM_WRITE(actfancr_sound_w)
AM_RANGE(0x110000, 0x110001) AM_WRITE(actfancr_buffer_spriteram_w)
AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
@ -331,9 +330,9 @@ static MACHINE_CONFIG_START( actfancr, actfancr_state )
MCFG_PALETTE_LENGTH(768)
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 2,2,2);
deco_bac06_device::set_gfx_region_wide(*device,2,2,2);
MCFG_DEVICE_ADD("tilegen2", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 0,0,0);
deco_bac06_device::set_gfx_region_wide(*device,0,0,0);
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 1);
@ -381,9 +380,9 @@ static MACHINE_CONFIG_START( triothep, actfancr_state )
MCFG_PALETTE_LENGTH(768)
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 2,2,0);
deco_bac06_device::set_gfx_region_wide(*device,2,2,0);
MCFG_DEVICE_ADD("tilegen2", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 0,0,0);
deco_bac06_device::set_gfx_region_wide(*device,0,0,0);
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 1);

View File

@ -217,7 +217,6 @@ DIP locations verified for:
#include "cpu/z180/z180.h"
#include "cpu/m68000/m68000.h"
#include "includes/taitoipt.h"
#include "video/taitoic.h"
#include "audio/taitosnd.h"
#include "sound/2610intf.h"
#include "sound/2151intf.h"
@ -315,7 +314,7 @@ static ADDRESS_MAP_START( bonzeadv_map, AS_PROGRAM, 16, asuka_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x080000, 0x0fffff) AM_ROM
AM_RANGE(0x10c000, 0x10ffff) AM_RAM
AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_word_w)
AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w)
AM_RANGE(0x390000, 0x390001) AM_READ_PORT("DSWA")
AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE(asuka_spritectrl_w)
AM_RANGE(0x3b0000, 0x3b0001) AM_READ_PORT("DSWB")
@ -335,7 +334,7 @@ static ADDRESS_MAP_START( asuka_map, AS_PROGRAM, 16, asuka_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x103fff) AM_RAM
AM_RANGE(0x1076f0, 0x1076f1) AM_READNOP /* Mofflott init does dummy reads here */
AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_word_w)
AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w)
AM_RANGE(0x3a0000, 0x3a0003) AM_WRITE(asuka_spritectrl_w)
AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0x00ff)
AM_RANGE(0x3e0002, 0x3e0003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
@ -354,7 +353,7 @@ static ADDRESS_MAP_START( cadash_map, AS_PROGRAM, 16, asuka_state )
AM_RANGE(0x100000, 0x107fff) AM_RAM
AM_RANGE(0x800000, 0x800fff) AM_READWRITE(cadash_share_r,cadash_share_w) /* network ram */
AM_RANGE(0x900000, 0x90000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_4bpg_word_w)
AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_4bpg_word_w)
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */
AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
@ -362,7 +361,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( eto_map, AS_PROGRAM, 16 /* N.B. tc100scn mirror overlaps spriteram */, asuka_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_word_w)
AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w)
AM_RANGE(0x200000, 0x203fff) AM_RAM
AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
AM_RANGE(0x400000, 0x40000f) AM_DEVREAD8("tc0220ioc", tc0220ioc_device, read, 0x00ff) /* service mode mirror */

View File

@ -281,24 +281,24 @@ WRITE16_MEMBER(dec0_state::midres_sound_w)
static ADDRESS_MAP_START( dec0_map, AS_PROGRAM, 16, dec0_state )
AM_RANGE(0x000000, 0x05ffff) AM_ROM
AM_RANGE(0x240000, 0x240007) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control_0_w) /* text layer */
AM_RANGE(0x240010, 0x240017) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control_1_w)
AM_RANGE(0x242000, 0x24207f) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_colscroll_r, deco_bac06_pf_colscroll_w)
AM_RANGE(0x242400, 0x2427ff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_rowscroll_r, deco_bac06_pf_rowscroll_w)
AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w) /* text layer */
AM_RANGE(0x240010, 0x240017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w)
AM_RANGE(0x242000, 0x24207f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
AM_RANGE(0x242400, 0x2427ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
AM_RANGE(0x242800, 0x243fff) AM_RAM /* Robocop only */
AM_RANGE(0x244000, 0x245fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
AM_RANGE(0x244000, 0x245fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x246000, 0x246007) AM_DEVWRITE_LEGACY("tilegen2", deco_bac06_pf_control_0_w) /* first tile layer */
AM_RANGE(0x246010, 0x246017) AM_DEVWRITE_LEGACY("tilegen2", deco_bac06_pf_control_1_w)
AM_RANGE(0x248000, 0x24807f) AM_DEVREADWRITE_LEGACY("tilegen2", deco_bac06_pf_colscroll_r, deco_bac06_pf_colscroll_w)
AM_RANGE(0x248400, 0x2487ff) AM_DEVREADWRITE_LEGACY("tilegen2", deco_bac06_pf_rowscroll_r, deco_bac06_pf_rowscroll_w)
AM_RANGE(0x24a000, 0x24a7ff) AM_DEVREADWRITE_LEGACY("tilegen2", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
AM_RANGE(0x246000, 0x246007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_0_w) /* first tile layer */
AM_RANGE(0x246010, 0x246017) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_1_w)
AM_RANGE(0x248000, 0x24807f) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
AM_RANGE(0x248400, 0x2487ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
AM_RANGE(0x24a000, 0x24a7ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x24c000, 0x24c007) AM_DEVWRITE_LEGACY("tilegen3", deco_bac06_pf_control_0_w) /* second tile layer */
AM_RANGE(0x24c010, 0x24c017) AM_DEVWRITE_LEGACY("tilegen3", deco_bac06_pf_control_1_w)
AM_RANGE(0x24c800, 0x24c87f) AM_DEVREADWRITE_LEGACY("tilegen3", deco_bac06_pf_colscroll_r, deco_bac06_pf_colscroll_w)
AM_RANGE(0x24cc00, 0x24cfff) AM_DEVREADWRITE_LEGACY("tilegen3", deco_bac06_pf_rowscroll_r, deco_bac06_pf_rowscroll_w)
AM_RANGE(0x24d000, 0x24d7ff) AM_DEVREADWRITE_LEGACY("tilegen3", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
AM_RANGE(0x24c000, 0x24c007) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_0_w) /* second tile layer */
AM_RANGE(0x24c010, 0x24c017) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_1_w)
AM_RANGE(0x24c800, 0x24c87f) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
AM_RANGE(0x24cc00, 0x24cfff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
AM_RANGE(0x24d000, 0x24d7ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x300000, 0x30001f) AM_READ(dec0_rotary_r)
AM_RANGE(0x30c000, 0x30c00b) AM_READ(dec0_controls_r)
@ -319,9 +319,9 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( hippodrm_sub_map, AS_PROGRAM, 8, dec0_state )
AM_RANGE(0x000000, 0x00ffff) AM_ROM
AM_RANGE(0x180000, 0x1800ff) AM_READWRITE(hippodrm_shared_r, hippodrm_shared_w)
AM_RANGE(0x1a0000, 0x1a0007) AM_DEVWRITE_LEGACY("tilegen3", deco_bac06_pf_control0_8bit_packed_w)
AM_RANGE(0x1a0010, 0x1a001f) AM_DEVWRITE_LEGACY("tilegen3", deco_bac06_pf_control1_8bit_swap_w)
AM_RANGE(0x1a1000, 0x1a17ff) AM_DEVREADWRITE_LEGACY("tilegen3", deco_bac06_pf_data_8bit_swap_r, deco_bac06_pf_data_8bit_swap_w)
AM_RANGE(0x1a0000, 0x1a0007) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control0_8bit_packed_w)
AM_RANGE(0x1a0010, 0x1a001f) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control1_8bit_swap_w)
AM_RANGE(0x1a1000, 0x1a17ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_8bit_swap_r, pf_data_8bit_swap_w)
AM_RANGE(0x1d0000, 0x1d00ff) AM_READWRITE(hippodrm_prot_r, hippodrm_prot_w)
AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") /* Main ram */
AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("sub", h6280_device, irq_status_w)
@ -423,9 +423,6 @@ void dec0_state::slyspy_set_protection_map( int type)
{
address_space& space = m_maincpu->space(AS_PROGRAM);
deco_bac06_device *tilegen1 = (deco_bac06_device*)m_tilegen1;
deco_bac06_device *tilegen2 = (deco_bac06_device*)m_tilegen2;
space.install_write_handler( 0x240000, 0x24ffff, write16_delegate(FUNC(dec0_state::unmapped_w),this));
space.install_write_handler( 0x24a000, 0x24a001, write16_delegate(FUNC(dec0_state::slyspy_state_w),this));
@ -434,21 +431,21 @@ void dec0_state::slyspy_set_protection_map( int type)
switch (type)
{
case 0:
space.install_legacy_write_handler( *tilegen2, 0x240000, 0x240007, FUNC(deco_bac06_pf_control_0_w));
space.install_legacy_write_handler( *tilegen2, 0x240010, 0x240017, FUNC(deco_bac06_pf_control_1_w));
space.install_write_handler(0x240000, 0x240007, write16_delegate(FUNC(deco_bac06_device::pf_control_0_w), (deco_bac06_device*)m_tilegen2));
space.install_write_handler(0x240010, 0x240017, write16_delegate(FUNC(deco_bac06_device::pf_control_1_w), (deco_bac06_device*)m_tilegen2));
space.install_legacy_write_handler( *tilegen2, 0x242000, 0x24207f, FUNC(deco_bac06_pf_colscroll_w));
space.install_legacy_write_handler( *tilegen2, 0x242400, 0x2427ff, FUNC(deco_bac06_pf_rowscroll_w));
space.install_write_handler(0x242000, 0x24207f, write16_delegate(FUNC(deco_bac06_device::pf_colscroll_w), (deco_bac06_device*)m_tilegen2));
space.install_write_handler(0x242400, 0x2427ff, write16_delegate(FUNC(deco_bac06_device::pf_rowscroll_w), (deco_bac06_device*)m_tilegen2));
space.install_legacy_write_handler( *tilegen2, 0x246000, 0x247fff, FUNC(deco_bac06_pf_data_w));
space.install_write_handler(0x246000, 0x247fff, write16_delegate(FUNC(deco_bac06_device::pf_data_w), (deco_bac06_device*)m_tilegen2));
space.install_legacy_write_handler( *tilegen1, 0x248000, 0x280007, FUNC(deco_bac06_pf_control_0_w));
space.install_legacy_write_handler( *tilegen1, 0x248010, 0x280017, FUNC(deco_bac06_pf_control_1_w));
space.install_write_handler(0x248000, 0x280007, write16_delegate(FUNC(deco_bac06_device::pf_control_0_w), (deco_bac06_device*)m_tilegen1));
space.install_write_handler(0x248010, 0x280017, write16_delegate(FUNC(deco_bac06_device::pf_control_1_w), (deco_bac06_device*)m_tilegen1));
space.install_legacy_write_handler( *tilegen1, 0x24c000, 0x24c07f, FUNC(deco_bac06_pf_colscroll_w));
space.install_legacy_write_handler( *tilegen1, 0x24c400, 0x24c7ff, FUNC(deco_bac06_pf_rowscroll_w));
space.install_write_handler(0x24c000, 0x24c07f, write16_delegate(FUNC(deco_bac06_device::pf_colscroll_w), (deco_bac06_device*)m_tilegen1));
space.install_write_handler(0x24c400, 0x24c7ff, write16_delegate(FUNC(deco_bac06_device::pf_rowscroll_w), (deco_bac06_device*)m_tilegen1));
space.install_legacy_write_handler( *tilegen1, 0x24e000, 0x24ffff, FUNC(deco_bac06_pf_data_w));
space.install_write_handler(0x24e000, 0x24ffff, write16_delegate(FUNC(deco_bac06_device::pf_data_w), (deco_bac06_device*)m_tilegen1));
break;
@ -456,26 +453,26 @@ void dec0_state::slyspy_set_protection_map( int type)
// 0x240000 - 0x241fff not mapped
// 0x242000 - 0x243fff not mapped
// 0x246000 - 0x247fff not mapped
space.install_legacy_write_handler( *tilegen1, 0x248000, 0x249fff, FUNC(deco_bac06_pf_data_w));
space.install_legacy_write_handler( *tilegen2, 0x24c000, 0x24dfff, FUNC(deco_bac06_pf_data_w));
space.install_write_handler(0x248000, 0x249fff, write16_delegate(FUNC(deco_bac06_device::pf_data_w), (deco_bac06_device*)m_tilegen1));
space.install_write_handler(0x24c000, 0x24dfff, write16_delegate(FUNC(deco_bac06_device::pf_data_w), (deco_bac06_device*)m_tilegen2));
// 0x24e000 - 0x24ffff not mapped
break;
case 2:
space.install_legacy_write_handler( *tilegen2, 0x240000, 0x241fff, FUNC(deco_bac06_pf_data_w));
space.install_legacy_write_handler( *tilegen1, 0x242000, 0x243fff, FUNC(deco_bac06_pf_data_w));
space.install_write_handler(0x240000, 0x241fff, write16_delegate(FUNC(deco_bac06_device::pf_data_w), (deco_bac06_device*)m_tilegen2));
space.install_write_handler(0x242000, 0x243fff, write16_delegate(FUNC(deco_bac06_device::pf_data_w), (deco_bac06_device*)m_tilegen1));
// 0x242000 - 0x243fff not mapped
// 0x246000 - 0x247fff not mapped
// 0x248000 - 0x249fff not mapped
// 0x24c000 - 0x24dfff not mapped
space.install_legacy_write_handler( *tilegen1, 0x24e000, 0x24ffff, FUNC(deco_bac06_pf_data_w));
space.install_write_handler(0x24e000, 0x24ffff, write16_delegate(FUNC(deco_bac06_device::pf_data_w), (deco_bac06_device*)m_tilegen1));
break;
case 3:
space.install_legacy_write_handler( *tilegen1, 0x240000, 0x241fff, FUNC(deco_bac06_pf_data_w));
space.install_write_handler(0x240000, 0x241fff, write16_delegate(FUNC(deco_bac06_device::pf_data_w), (deco_bac06_device*)m_tilegen1));
// 0x242000 - 0x243fff not mapped
// 0x246000 - 0x247fff not mapped
space.install_legacy_write_handler( *tilegen2, 0x248000, 0x249fff, FUNC(deco_bac06_pf_data_w));
space.install_write_handler(0x248000, 0x249fff, write16_delegate(FUNC(deco_bac06_device::pf_data_w), (deco_bac06_device*)m_tilegen2));
// 0x24c000 - 0x24dfff not mapped
// 0x24e000 - 0x24ffff not mapped
break;
@ -495,11 +492,11 @@ static ADDRESS_MAP_START( slyspy_map, AS_PROGRAM, 16, dec0_state )
/* The location of p1 & pf2 can change in the 240000 - 24ffff region according to protection */
/* Pf3 is unaffected by protection */
AM_RANGE(0x300000, 0x300007) AM_DEVWRITE_LEGACY("tilegen3", deco_bac06_pf_control_0_w)
AM_RANGE(0x300010, 0x300017) AM_DEVWRITE_LEGACY("tilegen3", deco_bac06_pf_control_1_w)
AM_RANGE(0x300800, 0x30087f) AM_DEVREADWRITE_LEGACY("tilegen3", deco_bac06_pf_colscroll_r, deco_bac06_pf_colscroll_w)
AM_RANGE(0x300c00, 0x300fff) AM_DEVREADWRITE_LEGACY("tilegen3", deco_bac06_pf_rowscroll_r, deco_bac06_pf_rowscroll_w)
AM_RANGE(0x301000, 0x3017ff) AM_DEVREADWRITE_LEGACY("tilegen3", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
AM_RANGE(0x300000, 0x300007) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_0_w)
AM_RANGE(0x300010, 0x300017) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_1_w)
AM_RANGE(0x300800, 0x30087f) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
AM_RANGE(0x300c00, 0x300fff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
AM_RANGE(0x301000, 0x3017ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x304000, 0x307fff) AM_RAM AM_SHARE("ram") /* Sly spy main ram */
AM_RANGE(0x308000, 0x3087ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
@ -520,24 +517,24 @@ static ADDRESS_MAP_START( midres_map, AS_PROGRAM, 16, dec0_state )
AM_RANGE(0x180008, 0x18000f) AM_WRITENOP /* ?? watchdog ?? */
AM_RANGE(0x1a0000, 0x1a0001) AM_WRITE(midres_sound_w)
AM_RANGE(0x200000, 0x200007) AM_DEVWRITE_LEGACY("tilegen2", deco_bac06_pf_control_0_w)
AM_RANGE(0x200010, 0x200017) AM_DEVWRITE_LEGACY("tilegen2", deco_bac06_pf_control_1_w)
AM_RANGE(0x220000, 0x2207ff) AM_DEVREADWRITE_LEGACY("tilegen2", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
AM_RANGE(0x220800, 0x220fff) AM_DEVREADWRITE_LEGACY("tilegen2", deco_bac06_pf_data_r, deco_bac06_pf_data_w) /* mirror address used in end sequence */
AM_RANGE(0x240000, 0x24007f) AM_DEVREADWRITE_LEGACY("tilegen2", deco_bac06_pf_colscroll_r, deco_bac06_pf_colscroll_w)
AM_RANGE(0x240400, 0x2407ff) AM_DEVREADWRITE_LEGACY("tilegen2", deco_bac06_pf_rowscroll_r, deco_bac06_pf_rowscroll_w)
AM_RANGE(0x200000, 0x200007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_0_w)
AM_RANGE(0x200010, 0x200017) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_1_w)
AM_RANGE(0x220000, 0x2207ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x220800, 0x220fff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_r, pf_data_w) /* mirror address used in end sequence */
AM_RANGE(0x240000, 0x24007f) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
AM_RANGE(0x240400, 0x2407ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
AM_RANGE(0x280000, 0x280007) AM_DEVWRITE_LEGACY("tilegen3", deco_bac06_pf_control_0_w)
AM_RANGE(0x280010, 0x280017) AM_DEVWRITE_LEGACY("tilegen3", deco_bac06_pf_control_1_w)
AM_RANGE(0x2a0000, 0x2a07ff) AM_DEVREADWRITE_LEGACY("tilegen3", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
AM_RANGE(0x2c0000, 0x2c007f) AM_DEVREADWRITE_LEGACY("tilegen3", deco_bac06_pf_colscroll_r, deco_bac06_pf_colscroll_w)
AM_RANGE(0x2c0400, 0x2c07ff) AM_DEVREADWRITE_LEGACY("tilegen3", deco_bac06_pf_rowscroll_r, deco_bac06_pf_rowscroll_w)
AM_RANGE(0x280000, 0x280007) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_0_w)
AM_RANGE(0x280010, 0x280017) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_1_w)
AM_RANGE(0x2a0000, 0x2a07ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x2c0000, 0x2c007f) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
AM_RANGE(0x2c0400, 0x2c07ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
AM_RANGE(0x300000, 0x300007) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control_0_w)
AM_RANGE(0x300010, 0x300017) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control_1_w)
AM_RANGE(0x320000, 0x321fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
AM_RANGE(0x340000, 0x34007f) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_colscroll_r, deco_bac06_pf_colscroll_w)
AM_RANGE(0x340400, 0x3407ff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_rowscroll_r, deco_bac06_pf_rowscroll_w)
AM_RANGE(0x300000, 0x300007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w)
AM_RANGE(0x300010, 0x300017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w)
AM_RANGE(0x320000, 0x321fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x340000, 0x34007f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
AM_RANGE(0x340400, 0x3407ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
AM_RANGE(0x320000, 0x321fff) AM_RAM
ADDRESS_MAP_END
@ -603,19 +600,19 @@ static ADDRESS_MAP_START( automat_map, AS_PROGRAM, 16, dec0_automat_state )
AM_RANGE(0x242000, 0x24207f) AM_RAM
AM_RANGE(0x242400, 0x2427ff) AM_RAM
AM_RANGE(0x242800, 0x243fff) AM_RAM
AM_RANGE(0x244000, 0x245fff) AM_RAM AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
AM_RANGE(0x244000, 0x245fff) AM_RAM AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x246000, 0x246007) AM_RAM /* first tile layer */
AM_RANGE(0x246010, 0x246017) AM_RAM
AM_RANGE(0x248000, 0x24807f) AM_RAM
AM_RANGE(0x248400, 0x2487ff) AM_RAM
AM_RANGE(0x24a000, 0x24a7ff) AM_RAM AM_DEVREADWRITE_LEGACY("tilegen2", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
AM_RANGE(0x24a000, 0x24a7ff) AM_RAM AM_DEVREADWRITE("tilegen2",deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x24c000, 0x24c007) AM_RAM /* second tile layer */
AM_RANGE(0x24c010, 0x24c017) AM_RAM
AM_RANGE(0x24c800, 0x24c87f) AM_RAM
AM_RANGE(0x24cc00, 0x24cfff) AM_RAM
AM_RANGE(0x24d000, 0x24d7ff) AM_RAM AM_DEVREADWRITE_LEGACY("tilegen3", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
AM_RANGE(0x24d000, 0x24d7ff) AM_RAM AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x300000, 0x30001f) AM_READ(dec0_rotary_r)
AM_RANGE(0x30c000, 0x30c00b) AM_READ(dec0_controls_r)
@ -633,17 +630,17 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( secretab_map, AS_PROGRAM, 16, dec0_automat_state )
AM_RANGE(0x000000, 0x05ffff) AM_ROM
// AM_RANGE(0x240000, 0x240007) AM_DEVWRITE_LEGACY("tilegen2", deco_bac06_pf_control_0_w)
// AM_RANGE(0x240010, 0x240017) AM_DEVWRITE_LEGACY("tilegen2", deco_bac06_pf_control_1_w)
AM_RANGE(0x246000, 0x247fff) AM_DEVREADWRITE_LEGACY("tilegen2", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
// AM_RANGE(0x240000, 0x24007f) AM_DEVREADWRITE_LEGACY("tilegen2", deco_bac06_pf_colscroll_r, deco_bac06_pf_colscroll_w)
// AM_RANGE(0x240400, 0x2407ff) AM_DEVREADWRITE_LEGACY("tilegen2", deco_bac06_pf_rowscroll_r, deco_bac06_pf_rowscroll_w)
// AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_0_w)
// AM_RANGE(0x240010, 0x240017) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_1_w)
AM_RANGE(0x246000, 0x247fff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_r, pf_data_w)
// AM_RANGE(0x240000, 0x24007f) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
// AM_RANGE(0x240400, 0x2407ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
// AM_RANGE(0x200000, 0x300007) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control_0_w)
// AM_RANGE(0x300010, 0x300017) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control_1_w)
AM_RANGE(0x24e000, 0x24ffff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
// AM_RANGE(0x340000, 0x34007f) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_colscroll_r, deco_bac06_pf_colscroll_w)
// AM_RANGE(0x340400, 0x3407ff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_rowscroll_r, deco_bac06_pf_rowscroll_w)
// AM_RANGE(0x200000, 0x300007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w)
// AM_RANGE(0x300010, 0x300017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w)
AM_RANGE(0x24e000, 0x24ffff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w)
// AM_RANGE(0x340000, 0x34007f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
// AM_RANGE(0x340400, 0x3407ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
AM_RANGE(0x314008, 0x31400f) AM_READ(slyspy_controls_r)
// AM_RANGE(0x314000, 0x314003) AM_WRITE(slyspy_control_w)
@ -652,7 +649,7 @@ static ADDRESS_MAP_START( secretab_map, AS_PROGRAM, 16, dec0_automat_state )
AM_RANGE(0x300010, 0x300017) AM_RAM
AM_RANGE(0x300800, 0x30087f) AM_RAM
AM_RANGE(0x300c00, 0x300fff) AM_RAM
AM_RANGE(0x301000, 0x3017ff) AM_DEVREADWRITE_LEGACY("tilegen3", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
AM_RANGE(0x301000, 0x3017ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x301800, 0x307fff) AM_RAM AM_SHARE("ram") /* Sly spy main ram */
AM_RANGE(0x310000, 0x3107ff) AM_READWRITE(automat_palette_r, automat_palette_w) AM_SHARE("paletteram")
AM_RANGE(0xb08000, 0xb08fff) AM_RAM AM_SHARE("spriteram") /* Sprites */
@ -1314,11 +1311,11 @@ static MACHINE_CONFIG_START( dec0_base, dec0_state )
MCFG_PALETTE_LENGTH(1024)
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 0,0,0);
deco_bac06_device::set_gfx_region_wide(*device,0,0,0);
MCFG_DEVICE_ADD("tilegen2", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 0,1,0);
deco_bac06_device::set_gfx_region_wide(*device,0,1,0);
MCFG_DEVICE_ADD("tilegen3", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 0,2,0);
deco_bac06_device::set_gfx_region_wide(*device,0,2,0);
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 3);
@ -1415,11 +1412,11 @@ static MACHINE_CONFIG_START( automat, dec0_automat_state )
MCFG_VIDEO_START_OVERRIDE(dec0_state,dec0_nodma)
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 0,0,0);
deco_bac06_device::set_gfx_region_wide(*device,0,0,0);
MCFG_DEVICE_ADD("tilegen2", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 0,1,0);
deco_bac06_device::set_gfx_region_wide(*device,0,1,0);
MCFG_DEVICE_ADD("tilegen3", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 0,2,0);
deco_bac06_device::set_gfx_region_wide(*device,0,2,0);
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 3);
@ -1468,11 +1465,11 @@ static MACHINE_CONFIG_START( secretab, dec0_automat_state )
MCFG_VIDEO_START_OVERRIDE(dec0_state,dec0_nodma)
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 0,0,0);
deco_bac06_device::set_gfx_region_wide(*device,0,0,0);
MCFG_DEVICE_ADD("tilegen2", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 0,1,0);
deco_bac06_device::set_gfx_region_wide(*device,0,1,0);
MCFG_DEVICE_ADD("tilegen3", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 0,2,0);
deco_bac06_device::set_gfx_region_wide(*device,0,2,0);
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 3);

View File

@ -49,7 +49,6 @@ To do:
#include "sound/3526intf.h"
#include "sound/msm5205.h"
#include "includes/dec8.h"
#include "video/decbac06.h"
#include "video/decmxc06.h"
#include "video/deckarn.h"
#include "machine/deco222.h"
@ -706,9 +705,9 @@ static ADDRESS_MAP_START( meikyuh_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM
AM_RANGE(0x1000, 0x17ff) AM_RAM
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram")
AM_RANGE(0x2000, 0x27ff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w)
AM_RANGE(0x2000, 0x27ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_r, pf_data_8bit_w)
AM_RANGE(0x2800, 0x2bff) AM_RAM // colscroll? mirror?
AM_RANGE(0x2c00, 0x2fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_rowscroll_8bit_r, deco_bac06_pf_rowscroll_8bit_w)
AM_RANGE(0x2c00, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_8bit_r, pf_rowscroll_8bit_w)
AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") /* Player 1 */
AM_RANGE(0x3800, 0x3800) AM_WRITE(dec8_sound_w)
@ -716,8 +715,8 @@ static ADDRESS_MAP_START( meikyuh_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN2") /* Player 3 */
AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW0") /* Start buttons + VBL */
AM_RANGE(0x3820, 0x3820) AM_READ_PORT("DSW1") /* Dip */
AM_RANGE(0x3820, 0x3827) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control0_8bit_w)
AM_RANGE(0x3830, 0x383f) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_control1_8bit_r, deco_bac06_pf_control1_8bit_w)
AM_RANGE(0x3820, 0x3827) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w)
AM_RANGE(0x3830, 0x383f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_r, pf_control1_8bit_w)
AM_RANGE(0x3840, 0x3840) AM_READ(i8751_h_r)
AM_RANGE(0x3840, 0x3840) AM_WRITE(ghostb_bank_w)
AM_RANGE(0x3860, 0x3860) AM_READ(i8751_l_r)
@ -772,7 +771,7 @@ static ADDRESS_MAP_START( oscar_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x0f00, 0x0fff) AM_RAM
AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("share2")
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram")
AM_RANGE(0x2800, 0x2fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w)
AM_RANGE(0x2800, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_r, pf_data_8bit_w)
AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
AM_RANGE(0x3800, 0x3bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_be_w) AM_SHARE("paletteram")
AM_RANGE(0x3c00, 0x3c00) AM_READ_PORT("IN0")
@ -780,8 +779,8 @@ static ADDRESS_MAP_START( oscar_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x3c02, 0x3c02) AM_READ_PORT("IN2") /* VBL & coins */
AM_RANGE(0x3c03, 0x3c03) AM_READ_PORT("DSW0") /* Dip 1 */
AM_RANGE(0x3c04, 0x3c04) AM_READ_PORT("DSW1")
AM_RANGE(0x3c00, 0x3c07) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control0_8bit_w)
AM_RANGE(0x3c10, 0x3c1f) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control1_8bit_w)
AM_RANGE(0x3c00, 0x3c07) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w)
AM_RANGE(0x3c10, 0x3c1f) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_w)
AM_RANGE(0x3c80, 0x3c80) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */
AM_RANGE(0x3d00, 0x3d00) AM_WRITE(dec8_bank_w) /* BNKS */
AM_RANGE(0x3d80, 0x3d80) AM_WRITE(dec8_sound_w) /* SOUN */
@ -824,8 +823,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cobra_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x0000, 0x07ff) AM_RAM
AM_RANGE(0x0800, 0x0fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w)
AM_RANGE(0x1000, 0x17ff) AM_DEVREADWRITE_LEGACY("tilegen2", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w)
AM_RANGE(0x0800, 0x0fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_r, pf_data_8bit_w)
AM_RANGE(0x1000, 0x17ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_8bit_r, pf_data_8bit_w)
AM_RANGE(0x1800, 0x1fff) AM_RAM
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram")
AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram")
@ -835,11 +834,11 @@ static ADDRESS_MAP_START( cobra_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") /* Player 2 */
AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW0") /* Dip 1 */
AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1") /* Dip 2 */
AM_RANGE(0x3800, 0x3807) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control0_8bit_w)
AM_RANGE(0x3810, 0x381f) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control1_8bit_w)
AM_RANGE(0x3800, 0x3807) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w)
AM_RANGE(0x3810, 0x381f) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_w)
AM_RANGE(0x3a00, 0x3a00) AM_READ_PORT("IN2") /* VBL & coins */
AM_RANGE(0x3a00, 0x3a07) AM_DEVWRITE_LEGACY("tilegen2", deco_bac06_pf_control0_8bit_w)
AM_RANGE(0x3a10, 0x3a1f) AM_DEVWRITE_LEGACY("tilegen2", deco_bac06_pf_control1_8bit_w)
AM_RANGE(0x3a00, 0x3a07) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control0_8bit_w)
AM_RANGE(0x3a10, 0x3a1f) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control1_8bit_w)
AM_RANGE(0x3c00, 0x3c00) AM_WRITE(dec8_bank_w)
AM_RANGE(0x3c02, 0x3c02) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */
AM_RANGE(0x3e00, 0x3e00) AM_WRITE(dec8_sound_w)
@ -2212,7 +2211,7 @@ static MACHINE_CONFIG_START( ghostb, dec8_state )
MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 2,2,0);
deco_bac06_device::set_gfx_region_wide(*device,2,2,0);
MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0)
deco_karnovsprites_device::set_gfx_region(*device, 1);
@ -2319,7 +2318,7 @@ static MACHINE_CONFIG_START( oscar, dec8_state )
MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 2,2,0);
deco_bac06_device::set_gfx_region_wide(*device,2,2,0);
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 1);
@ -2409,9 +2408,9 @@ static MACHINE_CONFIG_START( cobracom, dec8_state )
MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 2,2,0);
deco_bac06_device::set_gfx_region_wide(*device,2,2,0);
MCFG_DEVICE_ADD("tilegen2", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 3,3,0);
deco_bac06_device::set_gfx_region_wide(*device,3,3,0);
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 1);

View File

@ -39,7 +39,6 @@ $305.b invincibility
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "video/taitoic.h"
#include "machine/eeprom.h"
#include "sound/es5506.h"
#include "audio/taito_en.h"
@ -179,8 +178,8 @@ static ADDRESS_MAP_START( galastrm_map, AS_PROGRAM, 32, galastrm_state )
AM_RANGE(0x40fff0, 0x40fff3) AM_WRITENOP
AM_RANGE(0x500000, 0x500007) AM_READWRITE(galastrm_adstick_ctrl_r, galastrm_adstick_ctrl_w)
AM_RANGE(0x600000, 0x6007ff) AM_RAM AM_SHARE("snd_shared") /* Sound shared ram */
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_long_r, tc0480scp_long_w) /* tilemaps */
AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_ctrl_long_r, tc0480scp_ctrl_long_w)
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) /* tilemaps */
AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w)
AM_RANGE(0x900000, 0x900003) AM_WRITE(galastrm_palette_w) /* TC0110PCR */
AM_RANGE(0xb00000, 0xb00003) AM_WRITE(galastrm_tc0610_0_w) /* TC0610 */
AM_RANGE(0xc00000, 0xc00003) AM_WRITE(galastrm_tc0610_1_w)

View File

@ -64,7 +64,6 @@
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "video/taitoic.h"
#include "machine/eeprom.h"
#include "sound/es5506.h"
#include "audio/taito_en.h"
@ -228,8 +227,8 @@ static ADDRESS_MAP_START( groundfx_map, AS_PROGRAM, 32, groundfx_state )
AM_RANGE(0x500000, 0x500007) AM_WRITE(groundfx_input_w) /* eeprom etc. */
AM_RANGE(0x600000, 0x600003) AM_READWRITE(groundfx_adc_r,groundfx_adc_w)
AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("snd_shared")
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_long_r, tc0480scp_long_w) /* tilemaps */
AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_ctrl_long_r, tc0480scp_ctrl_long_w) // debugging
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) /* tilemaps */
AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w) // debugging
AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, long_r, long_w) /* piv tilemaps */
AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w)
AM_RANGE(0xa00000, 0xa0ffff) AM_RAM_WRITE(color_ram_w) AM_SHARE("paletteram") /* palette ram */

View File

@ -43,7 +43,6 @@
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "video/taitoic.h"
#include "machine/eeprom.h"
#include "sound/es5506.h"
#include "audio/taito_en.h"
@ -167,8 +166,8 @@ static ADDRESS_MAP_START( gunbustr_map, AS_PROGRAM, 32, gunbustr_state )
AM_RANGE(0x400004, 0x400007) AM_READ_PORT("SYSTEM")
AM_RANGE(0x400000, 0x400007) AM_WRITE(gunbustr_input_w) /* eerom etc. */
AM_RANGE(0x500000, 0x500003) AM_READWRITE(gunbustr_gun_r, gunbustr_gun_w) /* gun coord read */
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_long_r, tc0480scp_long_w)
AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_ctrl_long_r, tc0480scp_ctrl_long_w)
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w)
AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w)
AM_RANGE(0x900000, 0x901fff) AM_RAM_WRITE(gunbustr_palette_w) AM_SHARE("paletteram") /* Palette ram */
AM_RANGE(0xc00000, 0xc03fff) AM_RAM /* network ram ?? */
ADDRESS_MAP_END

View File

@ -19,7 +19,6 @@
#include "sound/2151intf.h"
#include "sound/okim6295.h"
#include "includes/madmotor.h"
#include "video/decbac06.h"
#include "video/decmxc06.h"
/******************************************************************************/
@ -39,20 +38,20 @@ WRITE16_MEMBER(madmotor_state::madmotor_sound_w)
static ADDRESS_MAP_START( madmotor_map, AS_PROGRAM, 16, madmotor_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x180000, 0x180007) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control_0_w) /* text layer */
AM_RANGE(0x180010, 0x180017) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control_1_w)
AM_RANGE(0x184000, 0x18407f) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_colscroll_r, deco_bac06_pf_colscroll_w)
AM_RANGE(0x180000, 0x180007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w) /* text layer */
AM_RANGE(0x180010, 0x180017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w)
AM_RANGE(0x184000, 0x18407f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_colscroll_r, pf_colscroll_w)
AM_RANGE(0x184080, 0x1843ff) AM_RAM
AM_RANGE(0x184400, 0x1847ff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_rowscroll_r, deco_bac06_pf_rowscroll_w)
AM_RANGE(0x188000, 0x189fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
AM_RANGE(0x184400, 0x1847ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w)
AM_RANGE(0x188000, 0x189fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x18c000, 0x18c001) AM_NOP
AM_RANGE(0x190000, 0x190007) AM_DEVWRITE_LEGACY("tilegen2", deco_bac06_pf_control_0_w) /* text layer */
AM_RANGE(0x190010, 0x190017) AM_DEVWRITE_LEGACY("tilegen2", deco_bac06_pf_control_1_w)
AM_RANGE(0x198000, 0x1987ff) AM_DEVREADWRITE_LEGACY("tilegen2", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
AM_RANGE(0x190000, 0x190007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_0_w) /* text layer */
AM_RANGE(0x190010, 0x190017) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_1_w)
AM_RANGE(0x198000, 0x1987ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x19c000, 0x19c001) AM_READNOP
AM_RANGE(0x1a0000, 0x1a0007) AM_DEVWRITE_LEGACY("tilegen3", deco_bac06_pf_control_0_w) /* text layer */
AM_RANGE(0x1a0010, 0x1a0017) AM_DEVWRITE_LEGACY("tilegen3", deco_bac06_pf_control_1_w)
AM_RANGE(0x1a4000, 0x1a4fff) AM_DEVREADWRITE_LEGACY("tilegen3", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
AM_RANGE(0x1a0000, 0x1a0007) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_0_w) /* text layer */
AM_RANGE(0x1a0010, 0x1a0017) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_1_w)
AM_RANGE(0x1a4000, 0x1a4fff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x3e0000, 0x3e3fff) AM_RAM
AM_RANGE(0x3e8000, 0x3e87ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x3f0000, 0x3f07ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
@ -253,11 +252,11 @@ static MACHINE_CONFIG_START( madmotor, madmotor_state )
MCFG_PALETTE_LENGTH(1024)
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 0,0,0);
deco_bac06_device::set_gfx_region_wide(*device,0,0,0);
MCFG_DEVICE_ADD("tilegen2", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 0,1,0);
deco_bac06_device::set_gfx_region_wide(*device,0,1,0);
MCFG_DEVICE_ADD("tilegen3", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 0,2,1);
deco_bac06_device::set_gfx_region_wide(*device,0,2,1);
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 3);

View File

@ -315,8 +315,6 @@ rumbling on a subwoofer in the cabinet.)
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h"
#include "video/taitoic.h"
#include "machine/taitoio.h"
#include "audio/taitosnd.h"
#include "sound/2610intf.h"
#include "sound/flt_vol.h"
@ -430,9 +428,9 @@ static ADDRESS_MAP_START( ninjaw_master_map, AS_PROGRAM, 16, ninjaw_state )
AM_RANGE(0x2e0000, 0x2e000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x300000, 0x313fff) AM_DEVREADWRITE("tc0100scn_3", tc0100scn_device, word_r, word_w) /* tilemaps (3rd screen) */
AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn_3", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x340000, 0x340007) AM_DEVREADWRITE_LEGACY("tc0110pcr_1", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (1st screen) */
AM_RANGE(0x350000, 0x350007) AM_DEVREADWRITE_LEGACY("tc0110pcr_2", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (2nd screen) */
AM_RANGE(0x360000, 0x360007) AM_DEVREADWRITE_LEGACY("tc0110pcr_3", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (3rd screen) */
AM_RANGE(0x340000, 0x340007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_device, word_r, step1_word_w) /* palette (1st screen) */
AM_RANGE(0x350000, 0x350007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_device, word_r, step1_word_w) /* palette (2nd screen) */
AM_RANGE(0x360000, 0x360007) AM_DEVREADWRITE("tc0110pcr_3", tc0110pcr_device, word_r, step1_word_w) /* palette (3rd screen) */
ADDRESS_MAP_END
// NB there could be conflicts between which cpu writes what to the
@ -446,9 +444,9 @@ static ADDRESS_MAP_START( ninjaw_slave_map, AS_PROGRAM, 16, ninjaw_state )
AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */
AM_RANGE(0x340000, 0x340007) AM_DEVREADWRITE_LEGACY("tc0110pcr_1", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (1st screen) */
AM_RANGE(0x350000, 0x350007) AM_DEVREADWRITE_LEGACY("tc0110pcr_2", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (2nd screen) */
AM_RANGE(0x360000, 0x360007) AM_DEVREADWRITE_LEGACY("tc0110pcr_3", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (3rd screen) */
AM_RANGE(0x340000, 0x340007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_device, word_r, step1_word_w) /* palette (1st screen) */
AM_RANGE(0x350000, 0x350007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_device, word_r, step1_word_w) /* palette (2nd screen) */
AM_RANGE(0x360000, 0x360007) AM_DEVREADWRITE("tc0110pcr_3", tc0110pcr_device, word_r, step1_word_w) /* palette (3rd screen) */
ADDRESS_MAP_END
static ADDRESS_MAP_START( darius2_master_map, AS_PROGRAM, 16, ninjaw_state )
@ -466,9 +464,9 @@ static ADDRESS_MAP_START( darius2_master_map, AS_PROGRAM, 16, ninjaw_state )
AM_RANGE(0x2e0000, 0x2e000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x300000, 0x313fff) AM_DEVREADWRITE("tc0100scn_3", tc0100scn_device, word_r, word_w) /* tilemaps (3rd screen) */
AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn_3", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x340000, 0x340007) AM_DEVREADWRITE_LEGACY("tc0110pcr_1", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (1st screen) */
AM_RANGE(0x350000, 0x350007) AM_DEVREADWRITE_LEGACY("tc0110pcr_2", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (2nd screen) */
AM_RANGE(0x360000, 0x360007) AM_DEVREADWRITE_LEGACY("tc0110pcr_3", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (3rd screen) */
AM_RANGE(0x340000, 0x340007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_device, word_r, step1_word_w) /* palette (1st screen) */
AM_RANGE(0x350000, 0x350007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_device, word_r, step1_word_w) /* palette (2nd screen) */
AM_RANGE(0x360000, 0x360007) AM_DEVREADWRITE("tc0110pcr_3", tc0110pcr_device, word_r, step1_word_w) /* palette (3rd screen) */
ADDRESS_MAP_END
static ADDRESS_MAP_START( darius2_slave_map, AS_PROGRAM, 16, ninjaw_state )

View File

@ -236,8 +236,6 @@ TODO:
#include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h"
#include "machine/eeprom.h"
#include "video/taitoic.h"
#include "machine/taitoio.h"
#include "audio/taitosnd.h"
#include "sound/2610intf.h"
#include "sound/flt_vol.h"
@ -456,7 +454,7 @@ static ADDRESS_MAP_START( othunder_map, AS_PROGRAM, 16, othunder_state )
AM_RANGE(0x090000, 0x09000f) AM_READWRITE(othunder_tc0220ioc_r, othunder_tc0220ioc_w)
// AM_RANGE(0x090006, 0x090007) AM_WRITE(eeprom_w)
// AM_RANGE(0x09000c, 0x09000d) AM_WRITENOP /* ?? (keeps writing 0x77) */
AM_RANGE(0x100000, 0x100007) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_rbswap_word_w) /* palette */
AM_RANGE(0x100000, 0x100007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_rbswap_word_w) /* palette */
AM_RANGE(0x200000, 0x20ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x220000, 0x22000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x300000, 0x300003) AM_READWRITE(othunder_sound_r, othunder_sound_w)

View File

@ -18,7 +18,6 @@
#include "sound/3812intf.h"
#include "sound/msm5205.h"
#include "includes/pcktgal.h"
#include "video/decbac06.h"
#include "machine/deco222.h"
/***************************************************************************/
@ -71,11 +70,11 @@ READ8_MEMBER(pcktgal_state::pcktgal_adpcm_reset_r)
static ADDRESS_MAP_START( pcktgal_map, AS_PROGRAM, 8, pcktgal_state )
AM_RANGE(0x0000, 0x07ff) AM_RAM
AM_RANGE(0x0800, 0x0fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w)
AM_RANGE(0x0800, 0x0fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_r, pf_data_8bit_w)
AM_RANGE(0x1000, 0x11ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1")
AM_RANGE(0x1800, 0x1807) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control0_8bit_w)
AM_RANGE(0x1810, 0x181f) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_control1_8bit_r, deco_bac06_pf_control1_8bit_w)
AM_RANGE(0x1800, 0x1807) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w)
AM_RANGE(0x1810, 0x181f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_r, pf_control1_8bit_w)
AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("P2") AM_WRITE(pcktgal_sound_w)
AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW") AM_WRITE(pcktgal_bank_w)
@ -246,7 +245,7 @@ static MACHINE_CONFIG_START( pcktgal, pcktgal_state )
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 0,0,0);
deco_bac06_device::set_gfx_region_wide(*device,0,0,0);
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")

View File

@ -134,11 +134,9 @@ Region byte at offset 0x031:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h"
#include "video/taitoic.h"
#include "audio/taitosnd.h"
#include "sound/2610intf.h"
#include "machine/timekpr.h"
#include "machine/taitoio.h"
#include "includes/slapshot.h"
@ -287,8 +285,8 @@ static ADDRESS_MAP_START( slapshot_map, AS_PROGRAM, 16, slapshot_state )
AM_RANGE(0x500000, 0x50ffff) AM_RAM /* main RAM */
AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram") /* sprite ram */
AM_RANGE(0x700000, 0x701fff) AM_RAM AM_SHARE("spriteext") /* debugging */
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_word_r, tc0480scp_word_w) /* tilemaps */
AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_ctrl_word_r, tc0480scp_ctrl_word_w)
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x900000, 0x907fff) AM_READWRITE(color_ram_word_r, color_ram_word_w) AM_SHARE("color_ram") /* 8bpg palette */
AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE8("mk48t08", timekeeper_device, read, write, 0xff00) /* nvram (only low bytes used) */
AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0xff00) /* priority chip */
@ -302,8 +300,8 @@ static ADDRESS_MAP_START( opwolf3_map, AS_PROGRAM, 16, slapshot_state )
AM_RANGE(0x500000, 0x50ffff) AM_RAM /* main RAM */
AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram") /* sprite ram */
AM_RANGE(0x700000, 0x701fff) AM_RAM AM_SHARE("spriteext") /* debugging */
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_word_r, tc0480scp_word_w) /* tilemaps */
AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_ctrl_word_r, tc0480scp_ctrl_word_w)
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x900000, 0x907fff) AM_READWRITE(color_ram_word_r, color_ram_word_w) AM_SHARE("color_ram") /* 8bpg palette */
AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE8("mk48t08", timekeeper_device, read, write, 0xff00) /* nvram (only low bytes used) */
AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0xff00) /* priority chip */

View File

@ -27,7 +27,6 @@
#include "sound/3812intf.h"
#include "sound/okim6295.h"
#include "includes/stadhero.h"
#include "video/decbac06.h"
#include "video/decmxc06.h"
/******************************************************************************/
@ -72,9 +71,9 @@ WRITE16_MEMBER(stadhero_state::stadhero_control_w)
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, stadhero_state )
AM_RANGE(0x000000, 0x01ffff) AM_ROM
AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(stadhero_pf1_data_w) AM_SHARE("pf1_data")
AM_RANGE(0x240000, 0x240007) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control_0_w) /* text layer */
AM_RANGE(0x240010, 0x240017) AM_DEVWRITE_LEGACY("tilegen1", deco_bac06_pf_control_1_w)
AM_RANGE(0x260000, 0x261fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco_bac06_pf_data_r, deco_bac06_pf_data_w)
AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w) /* text layer */
AM_RANGE(0x240010, 0x240017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w)
AM_RANGE(0x260000, 0x261fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x30c000, 0x30c00b) AM_READWRITE(stadhero_control_r, stadhero_control_w)
AM_RANGE(0x310000, 0x3107ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
AM_RANGE(0xff8000, 0xffbfff) AM_RAM /* Main ram */
@ -241,7 +240,7 @@ static MACHINE_CONFIG_START( stadhero, stadhero_state )
MCFG_PALETTE_LENGTH(1024)
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device, 1,1,2);
deco_bac06_device::set_gfx_region_wide(*device,1,1,2);
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 2);

View File

@ -39,7 +39,6 @@
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "video/taitoic.h"
#include "machine/eeprom.h"
#include "sound/es5506.h"
#include "audio/taito_en.h"
@ -195,8 +194,8 @@ static ADDRESS_MAP_START( superchs_map, AS_PROGRAM, 32, superchs_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x11ffff) AM_RAM AM_SHARE("ram")
AM_RANGE(0x140000, 0x141fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x180000, 0x18ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_long_r, tc0480scp_long_w)
AM_RANGE(0x1b0000, 0x1b002f) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_ctrl_long_r, tc0480scp_ctrl_long_w)
AM_RANGE(0x180000, 0x18ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w)
AM_RANGE(0x1b0000, 0x1b002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w)
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("shared_ram")
AM_RANGE(0x240000, 0x240003) AM_WRITE(cpua_ctrl_w)
AM_RANGE(0x280000, 0x287fff) AM_RAM_WRITE(superchs_palette_w) AM_SHARE("paletteram")
@ -208,7 +207,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( superchs_cpub_map, AS_PROGRAM, 16, superchs_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM
AM_RANGE(0x600000, 0x60ffff) AM_DEVWRITE_LEGACY("tc0480scp", tc0480scp_word_w) /* Only written upon errors */
AM_RANGE(0x600000, 0x60ffff) AM_DEVWRITE("tc0480scp", tc0480scp_device, word_w) /* Only written upon errors */
AM_RANGE(0x800000, 0x80ffff) AM_READWRITE(shared_ram_r, shared_ram_w)
AM_RANGE(0xa00000, 0xa001ff) AM_RAM /* Extra road control?? */
ADDRESS_MAP_END

View File

@ -474,11 +474,11 @@ WRITE16_MEMBER(taitob_state::realpunc_output_w)
#define TC0180VCU_MEMRW( ADDR ) \
AM_RANGE(ADDR+0x00000, ADDR+0x0ffff) AM_DEVREADWRITE_LEGACY("tc0180vcu", tc0180vcu_word_r, tc0180vcu_word_w) \
AM_RANGE(ADDR+0x00000, ADDR+0x0ffff) AM_DEVREADWRITE("tc0180vcu", tc0180vcu_device, word_r, word_w) \
AM_RANGE(ADDR+0x10000, ADDR+0x1197f) AM_RAM AM_SHARE("spriteram") \
AM_RANGE(ADDR+0x11980, ADDR+0x137ff) AM_RAM \
AM_RANGE(ADDR+0x13800, ADDR+0x13fff) AM_DEVREADWRITE_LEGACY("tc0180vcu", tc0180vcu_scroll_r, tc0180vcu_scroll_w) \
AM_RANGE(ADDR+0x18000, ADDR+0x1801f) AM_DEVREADWRITE_LEGACY("tc0180vcu", tc0180vcu_ctrl_r, tc0180vcu_ctrl_w) \
AM_RANGE(ADDR+0x13800, ADDR+0x13fff) AM_DEVREADWRITE("tc0180vcu", tc0180vcu_device, scroll_r, scroll_w) \
AM_RANGE(ADDR+0x18000, ADDR+0x1801f) AM_DEVREADWRITE("tc0180vcu", tc0180vcu_device, ctrl_r, ctrl_w) \
AM_RANGE(ADDR+0x40000, ADDR+0x7ffff) AM_READWRITE(tc0180vcu_framebuffer_word_r, tc0180vcu_framebuffer_word_w)

View File

@ -265,9 +265,7 @@ Notes:
#include "cpu/z80/z80.h"
#include "includes/taitoipt.h"
#include "cpu/m68000/m68000.h"
#include "video/taitoic.h"
#include "audio/taitosnd.h"
#include "machine/taitoio.h"
#include "includes/taito_f2.h"
#include "sound/2203intf.h"
#include "sound/2610intf.h"
@ -689,7 +687,7 @@ READ16_MEMBER(taitof2_state::cchip2_word_r)
static ADDRESS_MAP_START( finalb_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM
AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_word_w) /* palette */
AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, word_w) /* palette */
AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0x00ff)
AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
@ -764,7 +762,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( qtorimon_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM
AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_word_w) /* palette */
AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, word_w) /* palette */
AM_RANGE(0x500000, 0x50000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
AM_RANGE(0x600000, 0x600001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
@ -790,7 +788,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( quizhq_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x000000, 0x0bffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM
AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_word_w) /* palette */
AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, word_w) /* palette */
AM_RANGE(0x500004, 0x500005) AM_WRITE(growl_coin_word_w)
AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSWB")
AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN0")
@ -862,7 +860,7 @@ static ADDRESS_MAP_START( mjnquest_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x110000, 0x11ffff) AM_RAM /* "sram" */
AM_RANGE(0x120000, 0x12ffff) AM_RAM
AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_word_w) /* palette */
AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, word_w) /* palette */
AM_RANGE(0x300000, 0x30000f) AM_READ(mjnquest_dsw_r)
AM_RANGE(0x310000, 0x310001) AM_READ(mjnquest_input_r)
AM_RANGE(0x320000, 0x320001) AM_WRITE(mjnquest_inputselect_w)
@ -881,8 +879,8 @@ static ADDRESS_MAP_START( footchmp_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x100000, 0x10ffff) AM_RAM
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x300000, 0x30000f) AM_WRITE(taitof2_spritebank_w) /* updated at $a6e, off irq5 */
AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_word_r, tc0480scp_word_w) /* tilemaps */
AM_RANGE(0x430000, 0x43002f) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_ctrl_word_r, tc0480scp_ctrl_word_w)
AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x430000, 0x43002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x500000, 0x50001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* 500002 written like a watchdog?! */
AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
AM_RANGE(0x700006, 0x700007) AM_WRITE(taitof2_4p_coin_word_w)
@ -997,8 +995,8 @@ static ADDRESS_MAP_START( metalb_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x100000, 0x10ffff) AM_RAM
AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("spriteram")
// AM_RANGE(0x42000c, 0x42000f) AM_WRITENOP /* zeroed */
AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_word_r, tc0480scp_word_w) /* tilemaps */
AM_RANGE(0x530000, 0x53002f) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_ctrl_word_r, tc0480scp_ctrl_word_w)
AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x530000, 0x53002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x600000, 0x60001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff)
AM_RANGE(0x700000, 0x703fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_wordswap_r, halfword_wordswap_w)
@ -1043,9 +1041,9 @@ static ADDRESS_MAP_START( deadconx_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x100000, 0x10ffff) AM_RAM
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x300000, 0x30000f) AM_WRITE(taitof2_spritebank_w)
AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_word_r, tc0480scp_word_w) /* tilemaps */
AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
// AM_RANGE(0x42000c, 0x42000f) AM_WRITENOP /* zeroed */
AM_RANGE(0x430000, 0x43002f) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_ctrl_word_r, tc0480scp_ctrl_word_w)
AM_RANGE(0x430000, 0x43002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x500000, 0x50001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* uses 500002 like a watchdog !? */
AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSWA")

View File

@ -969,11 +969,8 @@ DIP switches are not verified
#include "includes/taitoipt.h"
#include "cpu/m68000/m68000.h"
#include "machine/eeprom.h"
#include "video/taitoic.h"
#include "audio/taitosnd.h"
#include "sound/2610intf.h"
#include "sound/flt_vol.h"
#include "machine/taitoio.h"
#include "includes/taito_z.h"
#include "contcirc.lh"
@ -1496,10 +1493,10 @@ static ADDRESS_MAP_START( contcirc_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x080000, 0x083fff) AM_RAM
AM_RANGE(0x084000, 0x087fff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x090000, 0x090001) AM_WRITE(contcirc_out_w) /* road palette bank, sub CPU reset, 3d glasses control */
AM_RANGE(0x100000, 0x100007) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_rbswap_word_w) /* palette */
AM_RANGE(0x100000, 0x100007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_rbswap_word_w) /* palette */
AM_RANGE(0x200000, 0x20ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x220000, 0x22000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x300000, 0x301fff) AM_DEVREADWRITE_LEGACY("tc0150rod", tc0150rod_word_r, tc0150rod_word_w) /* "root ram" */
AM_RANGE(0x300000, 0x301fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w) /* "root ram" */
AM_RANGE(0x400000, 0x4006ff) AM_RAM AM_SHARE("spriteram")
ADDRESS_MAP_END
@ -1522,7 +1519,7 @@ static ADDRESS_MAP_START( chasehq_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, port_r, port_w, 0x00ff)
AM_RANGE(0x800000, 0x800001) AM_WRITE(chasehq_cpua_ctrl_w)
AM_RANGE(0x820000, 0x820003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w)
AM_RANGE(0xa00000, 0xa00007) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette */
AM_RANGE(0xa00000, 0xa00007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w) /* palette */
AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("spriteram")
@ -1533,7 +1530,7 @@ static ADDRESS_MAP_START( chq_cpub_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x000000, 0x01ffff) AM_ROM
AM_RANGE(0x100000, 0x103fff) AM_RAM
AM_RANGE(0x108000, 0x10bfff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x800000, 0x801fff) AM_DEVREADWRITE_LEGACY("tc0150rod", tc0150rod_word_r, tc0150rod_word_w)
AM_RANGE(0x800000, 0x801fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w)
ADDRESS_MAP_END
@ -1543,8 +1540,8 @@ static ADDRESS_MAP_START( enforce_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x104000, 0x107fff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x200000, 0x200001) AM_WRITE(cpua_ctrl_w) // works without?
AM_RANGE(0x300000, 0x3006ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE_LEGACY("tc0150rod", tc0150rod_word_r, tc0150rod_word_w) /* "root ram" ??? */
AM_RANGE(0x500000, 0x500007) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_rbswap_word_w) /* palette */
AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w) /* "root ram" ??? */
AM_RANGE(0x500000, 0x500007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_rbswap_word_w) /* palette */
AM_RANGE(0x600000, 0x60ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x620000, 0x62000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
ADDRESS_MAP_END
@ -1594,7 +1591,7 @@ static ADDRESS_MAP_START( bshark_cpub_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x600000, 0x600007) AM_DEVREADWRITE8("ymsnd", ym2610_device, read, write, 0x00ff)
AM_RANGE(0x60000c, 0x60000d) AM_NOP // interrupt controller?
AM_RANGE(0x60000e, 0x60000f) AM_NOP
AM_RANGE(0x800000, 0x801fff) AM_DEVREADWRITE_LEGACY("tc0150rod", tc0150rod_word_r, tc0150rod_word_w)
AM_RANGE(0x800000, 0x801fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w)
ADDRESS_MAP_END
@ -1618,7 +1615,7 @@ static ADDRESS_MAP_START( sci_cpub_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x000000, 0x01ffff) AM_ROM
AM_RANGE(0x200000, 0x203fff) AM_RAM
AM_RANGE(0x208000, 0x20bfff) AM_RAM AM_SHARE("share1")
AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE_LEGACY("tc0150rod", tc0150rod_word_r, tc0150rod_word_w)
AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w)
ADDRESS_MAP_END
@ -1629,7 +1626,7 @@ static ADDRESS_MAP_START( nightstr_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
AM_RANGE(0x800000, 0x800001) AM_WRITE(cpua_ctrl_w)
AM_RANGE(0x820000, 0x820003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w)
AM_RANGE(0xa00000, 0xa00007) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette */
AM_RANGE(0xa00000, 0xa00007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w) /* palette */
AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("spriteram")
@ -1641,7 +1638,7 @@ static ADDRESS_MAP_START( nightstr_cpub_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x100000, 0x103fff) AM_RAM
AM_RANGE(0x104000, 0x107fff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x800000, 0x801fff) AM_DEVREADWRITE_LEGACY("tc0150rod", tc0150rod_word_r, tc0150rod_word_w)
AM_RANGE(0x800000, 0x801fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w)
ADDRESS_MAP_END
@ -1650,8 +1647,8 @@ static ADDRESS_MAP_START( aquajack_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x100000, 0x103fff) AM_RAM
AM_RANGE(0x104000, 0x107fff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x200000, 0x200001) AM_WRITE(cpua_ctrl_w) // not needed, but it's probably like the others
AM_RANGE(0x300000, 0x300007) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette */
AM_RANGE(0x800000, 0x801fff) AM_DEVREADWRITE_LEGACY("tc0150rod", tc0150rod_word_r, tc0150rod_word_w)
AM_RANGE(0x300000, 0x300007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w) /* palette */
AM_RANGE(0x800000, 0x801fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w)
AM_RANGE(0xa00000, 0xa0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0xa20000, 0xa2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0xc40000, 0xc403ff) AM_RAM AM_SHARE("spriteram")
@ -1676,7 +1673,7 @@ static ADDRESS_MAP_START( spacegun_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x500000, 0x5005ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0xb00000, 0xb00007) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_rbswap_word_w) /* palette */
AM_RANGE(0xb00000, 0xb00007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_rbswap_word_w) /* palette */
ADDRESS_MAP_END
static ADDRESS_MAP_START( spacegun_cpub_map, AS_PROGRAM, 16, taitoz_state )
@ -1702,9 +1699,9 @@ static ADDRESS_MAP_START( dblaxle_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x600000, 0x600001) AM_WRITE(dblaxle_cpua_ctrl_w) /* could this be causing int6 ? */
AM_RANGE(0x620000, 0x620003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w)
AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_word_r, tc0480scp_word_w) /* tilemap mirror */
AM_RANGE(0xa00000, 0xa0ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_word_r, tc0480scp_word_w) /* tilemaps */
AM_RANGE(0xa30000, 0xa3002f) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_ctrl_word_r, tc0480scp_ctrl_word_w)
AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemap mirror */
AM_RANGE(0xa00000, 0xa0ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
AM_RANGE(0xa30000, 0xa3002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_SHARE("spriteram") /* mostly unused ? */
AM_RANGE(0xc08000, 0xc08001) AM_READWRITE(sci_spriteframe_r, sci_spriteframe_w) /* set in int6, seems to stay zero */
ADDRESS_MAP_END
@ -1713,7 +1710,7 @@ static ADDRESS_MAP_START( dblaxle_cpub_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x100000, 0x103fff) AM_RAM
AM_RANGE(0x110000, 0x11ffff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x300000, 0x301fff) AM_DEVREADWRITE_LEGACY("tc0150rod", tc0150rod_word_r, tc0150rod_word_w)
AM_RANGE(0x300000, 0x301fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w)
AM_RANGE(0x500000, 0x503fff) AM_RAM /* network ram ? (see Gunbustr) */
ADDRESS_MAP_END
@ -1727,8 +1724,8 @@ static ADDRESS_MAP_START( racingb_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x500002, 0x500003) AM_WRITE(cpua_ctrl_w)
AM_RANGE(0x520000, 0x520003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w)
AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_word_r, tc0480scp_word_w) /* tilemaps */
AM_RANGE(0x930000, 0x93002f) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_ctrl_word_r, tc0480scp_ctrl_word_w)
AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x930000, 0x93002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_SHARE("spriteram") /* mostly unused ? */
AM_RANGE(0xb08000, 0xb08001) AM_READWRITE(sci_spriteframe_r, sci_spriteframe_w) /* alternates 0/0x100 */
ADDRESS_MAP_END
@ -1737,7 +1734,7 @@ static ADDRESS_MAP_START( racingb_cpub_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x400000, 0x403fff) AM_RAM
AM_RANGE(0x410000, 0x41ffff) AM_RAM AM_SHARE("share1")
AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE_LEGACY("tc0150rod", tc0150rod_word_r, tc0150rod_word_w)
AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w)
AM_RANGE(0xd00000, 0xd03fff) AM_RAM /* network ram ? */
ADDRESS_MAP_END

View File

@ -188,7 +188,6 @@ Board contains only 29 ROMs and not much else.
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "video/taitoic.h"
#include "machine/eeprom.h"
#include "sound/es5506.h"
#include "audio/taito_en.h"
@ -487,8 +486,8 @@ static ADDRESS_MAP_START( undrfire_map, AS_PROGRAM, 32, undrfire_state )
AM_RANGE(0x500000, 0x500007) AM_READWRITE(undrfire_input_r, undrfire_input_w) /* eerom etc. */
AM_RANGE(0x600000, 0x600007) AM_READWRITE(unknown_hardware_r, unknown_int_req_w) /* int request for unknown hardware */
AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("snd_shared")
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_long_r, tc0480scp_long_w) /* tilemaps */
AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_ctrl_long_r, tc0480scp_ctrl_long_w)
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) /* tilemaps */
AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w)
AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, long_r, long_w) /* piv tilemaps */
AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w)
AM_RANGE(0xa00000, 0xa0ffff) AM_RAM_WRITE(color_ram_w) AM_SHARE("paletteram")
@ -506,8 +505,8 @@ static ADDRESS_MAP_START( cbombers_cpua_map, AS_PROGRAM, 32, undrfire_state )
AM_RANGE(0x500000, 0x500007) AM_READWRITE(undrfire_input_r, undrfire_input_w)
AM_RANGE(0x600000, 0x600007) AM_READWRITE(cbombers_adc_r, cbombers_adc_w)
AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("snd_shared")
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_long_r, tc0480scp_long_w) /* tilemaps */
AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_ctrl_long_r, tc0480scp_ctrl_long_w)
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) /* tilemaps */
AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w)
AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, long_r, long_w) /* piv tilemaps */
AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w)
AM_RANGE(0xa00000, 0xa0ffff) AM_RAM_WRITE(color_ram_w) AM_SHARE("paletteram")
@ -520,7 +519,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cbombers_cpub_map, AS_PROGRAM, 16, undrfire_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x400000, 0x40ffff) AM_RAM /* local ram */
// AM_RANGE(0x600000, 0x60ffff) AM_DEVWRITE_LEGACY("tc0480scp", tc0480scp_word_w) /* Only written upon errors */
// AM_RANGE(0x600000, 0x60ffff) AM_DEVWRITE("tc0480scp", tc0480scp_device, word_w) /* Only written upon errors */
AM_RANGE(0x800000, 0x80ffff) AM_READWRITE(shared_ram_r, shared_ram_w)
// AM_RANGE(0xa00000, 0xa001ff) AM_RAM /* Extra road control?? */
ADDRESS_MAP_END

View File

@ -147,7 +147,6 @@ Colscroll effects?
#include "cpu/z80/z80.h"
#include "rendlay.h"
#include "cpu/m68000/m68000.h"
#include "video/taitoic.h"
#include "audio/taitosnd.h"
#include "sound/2610intf.h"
#include "sound/flt_vol.h"
@ -156,9 +155,6 @@ Colscroll effects?
/***********************************************************
SOUND
***********************************************************/
@ -228,8 +224,8 @@ static ADDRESS_MAP_START( darius2d_map, AS_PROGRAM, 16, warriorb_state )
AM_RANGE(0x220000, 0x22000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x240000, 0x253fff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, word_r, word_w) /* tilemaps (2nd screen) */
AM_RANGE(0x260000, 0x26000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x400000, 0x400007) AM_DEVREADWRITE_LEGACY("tc0110pcr_1", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (1st screen) */
AM_RANGE(0x420000, 0x420007) AM_DEVREADWRITE_LEGACY("tc0110pcr_2", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (2nd screen) */
AM_RANGE(0x400000, 0x400007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_device, word_r, step1_word_w) /* palette (1st screen) */
AM_RANGE(0x420000, 0x420007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_device, word_r, step1_word_w) /* palette (2nd screen) */
AM_RANGE(0x600000, 0x6013ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
// AM_RANGE(0x820000, 0x820001) AM_WRITENOP // ???
@ -243,8 +239,8 @@ static ADDRESS_MAP_START( warriorb_map, AS_PROGRAM, 16, warriorb_state )
AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x340000, 0x353fff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, word_r, word_w) /* tilemaps (2nd screen) */
AM_RANGE(0x360000, 0x36000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x400000, 0x400007) AM_DEVREADWRITE_LEGACY("tc0110pcr_1", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (1st screen) */
AM_RANGE(0x420000, 0x420007) AM_DEVREADWRITE_LEGACY("tc0110pcr_2", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (2nd screen) */
AM_RANGE(0x400000, 0x400007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_device, word_r, step1_word_w) /* palette (1st screen) */
AM_RANGE(0x420000, 0x420007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_device, word_r, step1_word_w) /* palette (2nd screen) */
AM_RANGE(0x600000, 0x6013ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
// AM_RANGE(0x820000, 0x820001) AM_WRITENOP // ? uses bits 0,2,3

View File

@ -1,3 +1,5 @@
#include "video/decbac06.h"
/*************************************************************************
Act Fancer
@ -11,7 +13,9 @@ public:
: driver_device(mconfig, type, tag),
m_main_ram(*this, "main_ram"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"){ }
m_audiocpu(*this, "audiocpu"),
m_tilegen1(*this, "tilegen1"),
m_tilegen2(*this, "tilegen2") { }
/* memory pointers */
required_shared_ptr<UINT8> m_main_ram;
@ -26,6 +30,8 @@ public:
/* devices */
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<deco_bac06_device> m_tilegen1;
required_device<deco_bac06_device> m_tilegen2;
DECLARE_WRITE8_MEMBER(triothep_control_select_w);
DECLARE_READ8_MEMBER(triothep_control_r);
DECLARE_WRITE8_MEMBER(actfancr_sound_w);

View File

@ -24,6 +24,7 @@ public:
m_msm(*this, "msm"),
m_pc090oj(*this, "pc090oj"),
m_tc0100scn(*this, "tc0100scn"),
m_tc0110pcr(*this, "tc0110pcr"),
m_tc0220ioc(*this, "tc0220ioc") { }
/* memory pointers */
@ -53,6 +54,7 @@ public:
optional_device<msm5205_device> m_msm;
required_device<pc090oj_device> m_pc090oj;
required_device<tc0100scn_device> m_tc0100scn;
required_device<tc0110pcr_device> m_tc0110pcr;
optional_device<tc0220ioc_device> m_tc0220ioc;
DECLARE_WRITE8_MEMBER(sound_bankswitch_w);
DECLARE_WRITE8_MEMBER(asuka_msm5205_address_w);

View File

@ -1,4 +1,5 @@
#include "video/bufsprite.h"
#include "video/decbac06.h"
#include "sound/msm5205.h"
class dec8_state : public driver_device
@ -16,9 +17,11 @@ public:
m_audiocpu(*this, "audiocpu"),
m_mcu(*this, "mcu"),
m_spriteram(*this, "spriteram") ,
m_msm(*this, "msm"),
m_tilegen1(*this, "tilegen1"),
m_tilegen2(*this, "tilegen2"),
m_videoram(*this, "videoram"),
m_bg_data(*this, "bg_data"),
m_msm(*this, "msm") { }
m_bg_data(*this, "bg_data") { }
/* devices */
required_device<cpu_device> m_maincpu;
@ -26,12 +29,14 @@ public:
required_device<cpu_device> m_audiocpu;
optional_device<cpu_device> m_mcu;
required_device<buffered_spriteram8_device> m_spriteram;
optional_device<msm5205_device> m_msm;
optional_device<deco_bac06_device> m_tilegen1;
optional_device<deco_bac06_device> m_tilegen2;
/* memory pointers */
required_shared_ptr<UINT8> m_videoram;
optional_shared_ptr<UINT8> m_bg_data;
optional_device<msm5205_device> m_msm;
UINT8 * m_pf1_data;
UINT8 * m_row;
// UINT8 * m_paletteram; // currently this uses generic palette handling

View File

@ -26,7 +26,8 @@ public:
m_spriteram(*this,"spriteram") ,
m_maincpu(*this, "maincpu"),
m_eeprom(*this, "eeprom"),
m_tc0100scn(*this, "tc0100scn") { }
m_tc0100scn(*this, "tc0100scn"),
m_tc0480scp(*this, "tc0480scp") { }
required_shared_ptr<UINT32> m_ram;
required_shared_ptr<UINT32> m_spriteram;
@ -34,6 +35,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<eeprom_device> m_eeprom;
required_device<tc0100scn_device> m_tc0100scn;
required_device<tc0480scp_device> m_tc0480scp;
UINT16 m_coin_word;
UINT16 m_frame_counter;
int m_tc0110pcr_addr;

View File

@ -23,13 +23,15 @@ public:
m_ram(*this,"ram"),
m_spriteram(*this,"spriteram") ,
m_maincpu(*this, "maincpu"),
m_tc0100scn(*this, "tc0100scn") { }
m_tc0100scn(*this, "tc0100scn"),
m_tc0480scp(*this, "tc0480scp") { }
required_shared_ptr<UINT32> m_ram;
required_shared_ptr<UINT32> m_spriteram;
required_device<cpu_device> m_maincpu;
required_device<tc0100scn_device> m_tc0100scn;
required_device<tc0480scp_device> m_tc0480scp;
UINT16 m_coin_word;
UINT16 m_frame_counter;

View File

@ -1,4 +1,5 @@
#include "machine/eeprom.h"
#include "video/taitoic.h"
struct tempsprite
{
@ -21,6 +22,7 @@ public:
gunbustr_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this,"maincpu"),
m_tc0480scp(*this, "tc0480scp"),
m_ram(*this,"ram"),
m_spriteram(*this,"spriteram"),
m_eeprom(*this, "eeprom")
@ -29,6 +31,7 @@ public:
}
required_device<cpu_device> m_maincpu;
required_device<tc0480scp_device> m_tc0480scp;
required_shared_ptr<UINT32> m_ram;
required_shared_ptr<UINT32> m_spriteram;
required_device<eeprom_device> m_eeprom;

View File

@ -4,6 +4,8 @@
*************************************************************************/
#include "video/decbac06.h"
class madmotor_state : public driver_device
{
public:
@ -11,7 +13,10 @@ public:
: driver_device(mconfig, type, tag),
m_spriteram(*this, "spriteram"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"){ }
m_audiocpu(*this, "audiocpu"),
m_tilegen1(*this, "tilegen1"),
m_tilegen2(*this, "tilegen2"),
m_tilegen3(*this, "tilegen3") { }
/* memory pointers */
required_shared_ptr<UINT16> m_spriteram;
@ -23,6 +28,9 @@ public:
/* devices */
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<deco_bac06_device> m_tilegen1;
required_device<deco_bac06_device> m_tilegen2;
required_device<deco_bac06_device> m_tilegen3;
DECLARE_WRITE16_MEMBER(madmotor_sound_w);
DECLARE_DRIVER_INIT(madmotor);
virtual void machine_start();

View File

@ -7,6 +7,7 @@
#include "machine/taitoio.h"
#include "sound/flt_vol.h"
#include "audio/taitosnd.h"
#include "video/taitoic.h"
class ninjaw_state : public driver_device
{
@ -21,6 +22,9 @@ public:
m_tc0100scn_1(*this, "tc0100scn_1"),
m_tc0100scn_2(*this, "tc0100scn_2"),
m_tc0100scn_3(*this, "tc0100scn_3"),
m_tc0110pcr_1(*this, "tc0110pcr_1"),
m_tc0110pcr_2(*this, "tc0110pcr_2"),
m_tc0110pcr_3(*this, "tc0110pcr_3"),
m_tc0220ioc(*this, "tc0220ioc"),
m_2610_1l(*this, "2610.1.l"),
m_2610_1r(*this, "2610.1.r"),
@ -43,6 +47,9 @@ public:
required_device<tc0100scn_device> m_tc0100scn_1;
required_device<tc0100scn_device> m_tc0100scn_2;
required_device<tc0100scn_device> m_tc0100scn_3;
required_device<tc0110pcr_device> m_tc0110pcr_1;
required_device<tc0110pcr_device> m_tc0110pcr_2;
required_device<tc0110pcr_device> m_tc0110pcr_3;
required_device<tc0220ioc_device> m_tc0220ioc;
required_device<filter_volume_device> m_2610_1l;
required_device<filter_volume_device> m_2610_1r;

View File

@ -8,6 +8,7 @@
#include "sound/flt_vol.h"
#include "audio/taitosnd.h"
#include "machine/taitoio.h"
#include "video/taitoic.h"
struct othunder_tempsprite
{

View File

@ -1,17 +1,21 @@
#include "sound/msm5205.h"
#include "video/decbac06.h"
class pcktgal_state : public driver_device
{
public:
pcktgal_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_spriteram(*this, "spriteram"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_msm(*this, "msm") { }
m_msm(*this, "msm"),
m_tilegen1(*this, "tilegen1"),
m_spriteram(*this, "spriteram") { }
int m_msm5205next;
int m_toggle;
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<msm5205_device> m_msm;
required_device<deco_bac06_device> m_tilegen1;
required_shared_ptr<UINT8> m_spriteram;
DECLARE_WRITE8_MEMBER(pcktgal_bank_w);
DECLARE_WRITE8_MEMBER(pcktgal_sound_bank_w);
@ -19,13 +23,12 @@ public:
DECLARE_WRITE8_MEMBER(pcktgal_adpcm_data_w);
DECLARE_READ8_MEMBER(pcktgal_adpcm_reset_r);
DECLARE_DRIVER_INIT(pcktgal);
int m_msm5205next;
int m_toggle;
virtual void palette_init();
virtual void machine_start();
UINT32 screen_update_pcktgal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_pcktgalb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(pcktgal_adpcm_int);
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<msm5205_device> m_msm;
};

View File

@ -1,17 +1,23 @@
#include "video/decbac06.h"
class stadhero_state : public driver_device
{
public:
stadhero_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_pf1_data(*this, "pf1_data"),
m_spriteram(*this, "spriteram"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu") { }
m_audiocpu(*this, "audiocpu"),
m_tilegen1(*this, "tilegen1"),
m_spriteram(*this, "spriteram"),
m_pf1_data(*this, "pf1_data") { }
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<deco_bac06_device> m_tilegen1;
required_shared_ptr<UINT16> m_spriteram;
required_shared_ptr<UINT16> m_pf1_data;
tilemap_t *m_pf1_tilemap;
int m_flipscreen;
required_shared_ptr<UINT16> m_spriteram;
DECLARE_READ16_MEMBER(stadhero_control_r);
DECLARE_WRITE16_MEMBER(stadhero_control_w);
DECLARE_WRITE16_MEMBER(stadhero_pf1_data_w);
@ -19,6 +25,4 @@ public:
virtual void video_start();
UINT32 screen_update_stadhero(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(irqhandler);
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
};

View File

@ -1,4 +1,6 @@
#include "machine/eeprom.h"
#include "video/taitoic.h"
struct tempsprite
{
int gfx;
@ -19,6 +21,7 @@ public:
m_shared_ram(*this,"shared_ram"),
m_maincpu(*this, "maincpu"),
m_subcpu(*this, "sub"),
m_tc0480scp(*this, "tc0480scp"),
m_eeprom(*this, "eeprom") { }
UINT16 m_coin_word;
@ -45,5 +48,6 @@ public:
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,const int *primasks,int x_offs,int y_offs);
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_subcpu;
required_device<tc0480scp_device> m_tc0480scp;
required_device<eeprom_device> m_eeprom;
};

View File

@ -1,5 +1,6 @@
#include "machine/taitoio.h"
#include "sound/okim6295.h"
#include "video/taitoic.h"
struct f2_tempsprite
{
@ -29,6 +30,7 @@ public:
m_tc0100scn(*this, "tc0100scn"),
m_tc0100scn_1(*this, "tc0100scn_1"),
m_tc0100scn_2(*this, "tc0100scn_2"),
m_tc0110pcr(*this, "tc0110pcr"),
m_tc0360pri(*this, "tc0360pri"),
m_tc0280grd(*this, "tc0280grd"),
m_tc0430grw(*this, "tc0430grw"),
@ -94,6 +96,7 @@ public:
optional_device<tc0100scn_device> m_tc0100scn;
optional_device<tc0100scn_device> m_tc0100scn_1;
optional_device<tc0100scn_device> m_tc0100scn_2;
optional_device<tc0110pcr_device> m_tc0110pcr;
optional_device<tc0360pri_device> m_tc0360pri;
optional_device<tc0280grd_device> m_tc0280grd;
optional_device<tc0280grd_device> m_tc0430grw;

View File

@ -8,6 +8,7 @@
#include "machine/taitoio.h"
#include "audio/taitosnd.h"
#include "machine/eeprom.h"
#include "video/taitoic.h"
class taitoz_state : public driver_device
{
@ -28,6 +29,7 @@ public:
m_tc0480scp(*this, "tc0480scp"),
m_tc0150rod(*this, "tc0150rod"),
m_tc0100scn(*this, "tc0100scn"),
m_tc0110pcr(*this, "tc0110pcr"),
m_tc0220ioc(*this, "tc0220ioc"),
m_tc0510nio(*this, "tc0510nio"),
m_tc0140syt(*this, "tc0140syt") { }
@ -54,6 +56,7 @@ public:
optional_device<tc0480scp_device> m_tc0480scp;
optional_device<tc0150rod_device> m_tc0150rod;
optional_device<tc0100scn_device> m_tc0100scn;
optional_device<tc0110pcr_device> m_tc0110pcr;
optional_device<tc0220ioc_device> m_tc0220ioc;
optional_device<tc0510nio_device> m_tc0510nio;
required_device<tc0140syt_device> m_tc0140syt;

View File

@ -1,4 +1,6 @@
#include "machine/eeprom.h"
#include "video/taitoic.h"
struct tempsprite
{
int gfx;
@ -22,6 +24,7 @@ public:
m_maincpu(*this, "maincpu"),
m_subcpu(*this, "sub"),
m_tc0100scn(*this, "tc0100scn"),
m_tc0480scp(*this, "tc0480scp"),
m_eeprom(*this, "eeprom"),
m_ram(*this, "ram"),
m_shared_ram(*this, "shared_ram"),
@ -30,6 +33,7 @@ public:
required_device<cpu_device> m_maincpu;
optional_device<cpu_device> m_subcpu;
required_device<tc0100scn_device> m_tc0100scn;
required_device<tc0480scp_device> m_tc0480scp;
required_device<eeprom_device> m_eeprom;
optional_shared_ptr<UINT32> m_ram;
optional_shared_ptr<UINT32> m_shared_ram;

View File

@ -7,6 +7,7 @@
#include "sound/flt_vol.h"
#include "audio/taitosnd.h"
#include "machine/taitoio.h"
#include "video/taitoic.h"
class warriorb_state : public driver_device
{
@ -19,6 +20,8 @@ public:
m_tc0140syt(*this, "tc0140syt"),
m_tc0100scn_1(*this, "tc0100scn_1"),
m_tc0100scn_2(*this, "tc0100scn_2"),
m_tc0110pcr_1(*this, "tc0110pcr_1"),
m_tc0110pcr_2(*this, "tc0110pcr_2"),
m_tc0220ioc(*this, "tc0220ioc"),
m_tc0510nio(*this, "tc0510nio"),
m_2610_1l(*this, "2610.1.l"),
@ -39,6 +42,8 @@ public:
required_device<tc0140syt_device> m_tc0140syt;
required_device<tc0100scn_device> m_tc0100scn_1;
required_device<tc0100scn_device> m_tc0100scn_2;
required_device<tc0110pcr_device> m_tc0110pcr_1;
required_device<tc0110pcr_device> m_tc0110pcr_2;
optional_device<tc0220ioc_device> m_tc0220ioc;
optional_device<tc0510nio_device> m_tc0510nio;
required_device<filter_volume_device> m_2610_1l;

View File

@ -6,7 +6,6 @@
#include "emu.h"
#include "includes/actfancr.h"
#include "video/decbac06.h"
#include "video/decmxc06.h"
/******************************************************************************/
@ -29,9 +28,9 @@ UINT32 actfancr_state::screen_update_actfancr(screen_device &screen, bitmap_ind1
//m_flipscreen = m_control_2[0] & 0x80;
//machine().tilemap().set_flip_all(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
machine().device<deco_bac06_device>("tilegen1")->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
machine().device<deco_mxc06_device>("spritegen")->draw_sprites(machine(), bitmap, cliprect, m_spriteram16, 0x00, 0x00, 0x0f);
machine().device<deco_bac06_device>("tilegen2")->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
return 0;
}

View File

@ -47,14 +47,14 @@ UINT32 dec0_state::screen_update_hbarrel(screen_device &screen, bitmap_ind16 &bi
{
flip_screen_set(m_tilegen1->get_flip_state());
m_tilegen3->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen3->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_spritegen->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram, 0x08, 0x08, 0x0f);
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
/* HB always keeps pf2 on top of pf3, no need explicitly support priority register */
m_spritegen->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram, 0x08, 0x00, 0x0f);
m_tilegen1->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
return 0;
}
@ -67,32 +67,32 @@ UINT32 dec0_state::screen_update_baddudes(screen_device &screen, bitmap_ind16 &b
/* WARNING: inverted wrt Midnight Resistance */
if ((m_pri & 0x01) == 0)
{
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen3->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen3->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
if (m_pri & 2)
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,0,0x08,0x08,0x08,0x08); // upper 8 pens of upper 8 priority marked tiles /* Foreground pens only */
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0,0x08,0x08,0x08,0x08); // upper 8 pens of upper 8 priority marked tiles /* Foreground pens only */
m_spritegen->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram, 0x00, 0x00, 0x0f);
if (m_pri & 4)
m_tilegen3->deco_bac06_pf_draw(machine(),bitmap,cliprect,0,0x08,0x08,0x08,0x08); // upper 8 pens of upper 8 priority marked tiles /* Foreground pens only */
m_tilegen3->deco_bac06_pf_draw(bitmap,cliprect,0,0x08,0x08,0x08,0x08); // upper 8 pens of upper 8 priority marked tiles /* Foreground pens only */
}
else
{
m_tilegen3->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen3->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
if (m_pri & 2)
m_tilegen3->deco_bac06_pf_draw(machine(),bitmap,cliprect,0,0x08,0x08,0x08,0x08); // upper 8 pens of upper 8 priority marked tiles /* Foreground pens only */
m_tilegen3->deco_bac06_pf_draw(bitmap,cliprect,0,0x08,0x08,0x08,0x08); // upper 8 pens of upper 8 priority marked tiles /* Foreground pens only */
m_spritegen->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram, 0x00, 0x00, 0x0f);
if (m_pri & 4)
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,0,0x08,0x08,0x08,0x08); // upper 8 pens of upper 8 priority marked tiles /* Foreground pens only */
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0,0x08,0x08,0x08,0x08); // upper 8 pens of upper 8 priority marked tiles /* Foreground pens only */
}
m_tilegen1->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
return 0;
}
@ -115,21 +115,21 @@ UINT32 dec0_state::screen_update_robocop(screen_device &screen, bitmap_ind16 &bi
/* Robocop uses it only for the title screen, so this might be just */
/* completely wrong. The top 8 bits of the register might mean */
/* something (they are 0x80 in midres, 0x00 here) */
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
if (m_pri & 0x02)
m_spritegen->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram, 0x08, trans, 0x0f);
m_tilegen3->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen3->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
}
else
{
m_tilegen3->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen3->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
if (m_pri & 0x02)
m_spritegen->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram, 0x08, trans, 0x0f);
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
}
if (m_pri & 0x02)
@ -137,7 +137,7 @@ UINT32 dec0_state::screen_update_robocop(screen_device &screen, bitmap_ind16 &bi
else
m_spritegen->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram, 0x00, 0x00, 0x0f);
m_tilegen1->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
return 0;
}
@ -150,30 +150,30 @@ UINT32 dec0_automat_state::screen_update_automat(screen_device &screen, bitmap_i
// the bootleg doesn't write these registers, I think they're hardcoded?, so fake them for compatibility with our implementation..
address_space &space = machine().driver_data()->generic_space();
deco_bac06_pf_control_0_w(m_tilegen1,space,0,0x0003, 0x00ff); // 8x8
deco_bac06_pf_control_0_w(m_tilegen1,space,1,0x0003, 0x00ff);
deco_bac06_pf_control_0_w(m_tilegen1,space,2,0x0000, 0x00ff);
deco_bac06_pf_control_0_w(m_tilegen1,space,3,0x0001, 0x00ff); // dimensions
m_tilegen1->pf_control_0_w(space,0,0x0003, 0x00ff); // 8x8
m_tilegen1->pf_control_0_w(space,1,0x0003, 0x00ff);
m_tilegen1->pf_control_0_w(space,2,0x0000, 0x00ff);
m_tilegen1->pf_control_0_w(space,3,0x0001, 0x00ff); // dimensions
deco_bac06_pf_control_0_w(m_tilegen2,space,0,0x0082, 0x00ff); // 16x16
deco_bac06_pf_control_0_w(m_tilegen2,space,1,0x0000, 0x00ff);
deco_bac06_pf_control_0_w(m_tilegen2,space,2,0x0000, 0x00ff);
deco_bac06_pf_control_0_w(m_tilegen2,space,3,0x0001, 0x00ff); // dimensions
m_tilegen2->pf_control_0_w(space,0,0x0082, 0x00ff); // 16x16
m_tilegen2->pf_control_0_w(space,1,0x0000, 0x00ff);
m_tilegen2->pf_control_0_w(space,2,0x0000, 0x00ff);
m_tilegen2->pf_control_0_w(space,3,0x0001, 0x00ff); // dimensions
deco_bac06_pf_control_0_w(m_tilegen3,space,0,0x0082, 0x00ff); // 16x16
deco_bac06_pf_control_0_w(m_tilegen3,space,1,0x0003, 0x00ff);
deco_bac06_pf_control_0_w(m_tilegen3,space,2,0x0000, 0x00ff);
deco_bac06_pf_control_0_w(m_tilegen3,space,3,0x0001, 0x00ff); // dimensions
m_tilegen3->pf_control_0_w(space,0,0x0082, 0x00ff); // 16x16
m_tilegen3->pf_control_0_w(space,1,0x0003, 0x00ff);
m_tilegen3->pf_control_0_w(space,2,0x0000, 0x00ff);
m_tilegen3->pf_control_0_w(space,3,0x0001, 0x00ff); // dimensions
// scroll registers got written elsewhere, copy them across
deco_bac06_pf_control_1_w(m_tilegen1,space,0,0x0000, 0xffff); // no scroll?
deco_bac06_pf_control_1_w(m_tilegen1,space,1,0x0000, 0xffff); // no scroll?
m_tilegen1->pf_control_1_w(space,0,0x0000, 0xffff); // no scroll?
m_tilegen1->pf_control_1_w(space,1,0x0000, 0xffff); // no scroll?
deco_bac06_pf_control_1_w(m_tilegen2,space,0,m_automat_scroll_regs[3] - 0x010a, 0xffff);
deco_bac06_pf_control_1_w(m_tilegen2,space,1,m_automat_scroll_regs[2], 0xffff);
m_tilegen2->pf_control_1_w(space,0,m_automat_scroll_regs[3] - 0x010a, 0xffff);
m_tilegen2->pf_control_1_w(space,1,m_automat_scroll_regs[2], 0xffff);
deco_bac06_pf_control_1_w(m_tilegen3,space,0,m_automat_scroll_regs[1] - 0x0108, 0xffff);
deco_bac06_pf_control_1_w(m_tilegen3,space,1,m_automat_scroll_regs[0], 0xffff);
m_tilegen3->pf_control_1_w(space,0,m_automat_scroll_regs[1] - 0x0108, 0xffff);
m_tilegen3->pf_control_1_w(space,1,m_automat_scroll_regs[0], 0xffff);
flip_screen_set(m_tilegen1->get_flip_state());
@ -185,21 +185,21 @@ UINT32 dec0_automat_state::screen_update_automat(screen_device &screen, bitmap_i
if (m_pri & 0x01)
{
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
if (m_pri & 0x02)
m_spritegen->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram, 0x08, trans, 0x0f);
m_tilegen3->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen3->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
}
else
{
m_tilegen3->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen3->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
if (m_pri & 0x02)
m_spritegen->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram, 0x08, trans, 0x0f);
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
}
if (m_pri & 0x02)
@ -207,7 +207,7 @@ UINT32 dec0_automat_state::screen_update_automat(screen_device &screen, bitmap_i
else
m_spritegen->draw_sprites_bootleg(machine(), bitmap, cliprect, m_buffered_spriteram, 0x00, 0x00, 0x0f);
m_tilegen1->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
return 0;
}
@ -217,43 +217,43 @@ UINT32 dec0_automat_state::screen_update_secretab(screen_device &screen, bitmap_
// the bootleg doesn't write these registers, I think they're hardcoded?, so fake them for compatibility with our implementation..
address_space &space = machine().driver_data()->generic_space();
deco_bac06_pf_control_0_w(m_tilegen1,space,0,0x0003, 0x00ff); // 8x8
deco_bac06_pf_control_0_w(m_tilegen1,space,1,0x0003, 0x00ff);
deco_bac06_pf_control_0_w(m_tilegen1,space,2,0x0000, 0x00ff);
deco_bac06_pf_control_0_w(m_tilegen1,space,3,0x0001, 0x00ff); // dimensions
m_tilegen1->pf_control_0_w(space,0,0x0003, 0x00ff); // 8x8
m_tilegen1->pf_control_0_w(space,1,0x0003, 0x00ff);
m_tilegen1->pf_control_0_w(space,2,0x0000, 0x00ff);
m_tilegen1->pf_control_0_w(space,3,0x0001, 0x00ff); // dimensions
deco_bac06_pf_control_0_w(m_tilegen2,space,0,0x0082, 0x00ff); // 16x16
deco_bac06_pf_control_0_w(m_tilegen2,space,1,0x0000, 0x00ff);
deco_bac06_pf_control_0_w(m_tilegen2,space,2,0x0000, 0x00ff);
deco_bac06_pf_control_0_w(m_tilegen2,space,3,0x0001, 0x00ff); // dimensions
m_tilegen2->pf_control_0_w(space,0,0x0082, 0x00ff); // 16x16
m_tilegen2->pf_control_0_w(space,1,0x0000, 0x00ff);
m_tilegen2->pf_control_0_w(space,2,0x0000, 0x00ff);
m_tilegen2->pf_control_0_w(space,3,0x0001, 0x00ff); // dimensions
deco_bac06_pf_control_0_w(m_tilegen3,space,0,0x0082, 0x00ff); // 16x16
deco_bac06_pf_control_0_w(m_tilegen3,space,1,0x0003, 0x00ff);
deco_bac06_pf_control_0_w(m_tilegen3,space,2,0x0000, 0x00ff);
deco_bac06_pf_control_0_w(m_tilegen3,space,3,0x0001, 0x00ff); // dimensions
m_tilegen3->pf_control_0_w(space,0,0x0082, 0x00ff); // 16x16
m_tilegen3->pf_control_0_w(space,1,0x0003, 0x00ff);
m_tilegen3->pf_control_0_w(space,2,0x0000, 0x00ff);
m_tilegen3->pf_control_0_w(space,3,0x0001, 0x00ff); // dimensions
// scroll registers got written elsewhere, copy them across
deco_bac06_pf_control_1_w(m_tilegen1,space,0,0x0000, 0xffff); // no scroll?
deco_bac06_pf_control_1_w(m_tilegen1,space,1,0x0000, 0xffff); // no scroll?
m_tilegen1->pf_control_1_w(space,0,0x0000, 0xffff); // no scroll?
m_tilegen1->pf_control_1_w(space,1,0x0000, 0xffff); // no scroll?
deco_bac06_pf_control_1_w(m_tilegen2,space,0,m_automat_scroll_regs[3] - 0x010a, 0xffff);
deco_bac06_pf_control_1_w(m_tilegen2,space,1,m_automat_scroll_regs[2], 0xffff);
m_tilegen2->pf_control_1_w(space,0,m_automat_scroll_regs[3] - 0x010a, 0xffff);
m_tilegen2->pf_control_1_w(space,1,m_automat_scroll_regs[2], 0xffff);
deco_bac06_pf_control_1_w(m_tilegen3,space,0,m_automat_scroll_regs[1] - 0x0108, 0xffff);
deco_bac06_pf_control_1_w(m_tilegen3,space,1,m_automat_scroll_regs[0], 0xffff);
m_tilegen3->pf_control_1_w(space,0,m_automat_scroll_regs[1] - 0x0108, 0xffff);
m_tilegen3->pf_control_1_w(space,1,m_automat_scroll_regs[0], 0xffff);
flip_screen_set(m_tilegen1->get_flip_state());
m_tilegen3->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen3->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_spritegen->draw_sprites_bootleg(machine(), bitmap, cliprect, m_buffered_spriteram, 0x00, 0x00, 0x0f);
/* Redraw top 8 pens of top 8 palettes over sprites */
if (m_pri&0x80)
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,0,0x08,0x08,0x08,0x08); // upper 8 pens of upper 8 priority marked tiles
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0,0x08,0x08,0x08,0x08); // upper 8 pens of upper 8 priority marked tiles
m_tilegen1->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
return 0;
}
@ -267,9 +267,9 @@ UINT32 dec0_state::screen_update_birdtry(screen_device &screen, bitmap_ind16 &bi
/* This game doesn't have the extra playfield chip on the game board, but
the palette does show through. */
bitmap.fill(machine().pens[768], cliprect);
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_spritegen->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram, 0x00, 0x00, 0x0f);
m_tilegen1->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
return 0;
}
@ -281,17 +281,17 @@ UINT32 dec0_state::screen_update_hippodrm(screen_device &screen, bitmap_ind16 &b
if (m_pri & 0x01)
{
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen3->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen3->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
}
else
{
m_tilegen3->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen3->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
}
m_spritegen->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram, 0x00, 0x00, 0x0f);
m_tilegen1->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
return 0;
}
@ -301,16 +301,16 @@ UINT32 dec0_state::screen_update_slyspy(screen_device &screen, bitmap_ind16 &bit
{
flip_screen_set(m_tilegen1->get_flip_state());
m_tilegen3->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen3->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_spritegen->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram, 0x00, 0x00, 0x0f);
/* Redraw top 8 pens of top 8 palettes over sprites */
if (m_pri&0x80)
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,0,0x08,0x08,0x08,0x08); // upper 8 pens of upper 8 priority marked tiles
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0,0x08,0x08,0x08,0x08); // upper 8 pens of upper 8 priority marked tiles
m_tilegen1->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
return 0;
}
@ -328,21 +328,21 @@ UINT32 dec0_state::screen_update_midres(screen_device &screen, bitmap_ind16 &bit
if (m_pri & 0x01)
{
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
if (m_pri & 0x02)
m_spritegen->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram, 0x08, trans, 0x0f);
m_tilegen3->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen3->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
}
else
{
m_tilegen3->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen3->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
if (m_pri & 0x02)
m_spritegen->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram, 0x08, trans, 0x0f);
m_tilegen2->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
}
if (m_pri & 0x02)
@ -350,7 +350,7 @@ UINT32 dec0_state::screen_update_midres(screen_device &screen, bitmap_ind16 &bit
else
m_spritegen->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram, 0x00, 0x00, 0x0f);
m_tilegen1->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
return 0;
}

View File

@ -43,7 +43,6 @@ sprites.
#include "emu.h"
#include "includes/dec8.h"
#include "video/decbac06.h"
#include "video/decmxc06.h"
#include "video/deckarn.h"
@ -263,9 +262,9 @@ UINT32 dec8_state::screen_update_cobracom(screen_device &screen, bitmap_ind16 &b
{
flip_screen_set(m_bg_control[0] >> 7);
machine().device<deco_bac06_device>("tilegen1")->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
machine().device<deco_mxc06_device>("spritegen")->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram16, 0x04, 0x00, 0x03);
machine().device<deco_bac06_device>("tilegen2")->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
machine().device<deco_mxc06_device>("spritegen")->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram16, 0x04, 0x04, 0x03);
m_fix_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
@ -294,15 +293,15 @@ VIDEO_START_MEMBER(dec8_state,cobracom)
m_fix_tilemap->set_transparent_pen(0);
m_game_uses_priority = 0;
machine().device<deco_bac06_device>("tilegen1")->set_colmask(0x3);
machine().device<deco_bac06_device>("tilegen2")->set_colmask(0x3);
m_tilegen1->set_colmask(0x3);
m_tilegen2->set_colmask(0x3);
}
/******************************************************************************/
UINT32 dec8_state::screen_update_ghostb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
machine().device<deco_bac06_device>("tilegen1")->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
machine().device<deco_karnovsprites_device>("spritegen")->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram16, 0x400, 0);
m_fix_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
@ -327,7 +326,7 @@ VIDEO_START_MEMBER(dec8_state,ghostb)
m_fix_tilemap->set_transparent_pen(0);
m_game_uses_priority = 0;
machine().device<deco_bac06_device>("tilegen1")->set_colmask(0xf);
m_tilegen1->set_colmask(0xf);
}
/******************************************************************************/
@ -337,9 +336,9 @@ UINT32 dec8_state::screen_update_oscar(screen_device &screen, bitmap_ind16 &bitm
flip_screen_set(m_bg_control[1] >> 7);
// we mimic the priority scheme in dec0.c, this was originally a bit different, so this could be wrong
machine().device<deco_bac06_device>("tilegen1")->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
machine().device<deco_mxc06_device>("spritegen")->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram16, 0x00, 0x00, 0x0f);
machine().device<deco_bac06_device>("tilegen1")->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x08,0x08,0x08,0x08);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,0, 0x08,0x08,0x08,0x08);
m_fix_tilemap->draw(bitmap, cliprect, 0, 0);
return 0;
}
@ -364,7 +363,7 @@ VIDEO_START_MEMBER(dec8_state,oscar)
m_fix_tilemap->set_transparent_pen(0);
m_game_uses_priority = 1;
machine().device<deco_bac06_device>("tilegen1")->set_colmask(0x7);
m_tilegen1->set_colmask(0x7);
}
/******************************************************************************/

View File

@ -63,6 +63,52 @@ Priority word (Midres):
#include "emu.h"
#include "decbac06.h"
const device_type DECO_BAC06 = &device_creator<deco_bac06_device>;
deco_bac06_device::deco_bac06_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, DECO_BAC06, "decbac06_device", tag, owner, clock, "deco_bac06", __FILE__),
m_pf_data(NULL),
m_pf_rowscroll(NULL),
m_pf_colscroll(NULL),
m_tile_region(0),
m_gfxcolmask(0),
m_rambank(0),
m_gfxregion8x8(0),
m_gfxregion16x16(0),
m_wide(0),
m_bppmult(0),
m_bppmask(0)
//m_pf_control_0[8]
//m_pf_control_1[8]
{
}
void deco_bac06_device::device_start()
{
m_pf_data = auto_alloc_array_clear(machine(), UINT16, 0x4000 / 2); // 0x2000 is the maximum needed, some games / chip setups map less and mirror - stadium hero banks this to 0x4000?!
m_pf_rowscroll = auto_alloc_array_clear(machine(), UINT16, 0x2000 / 2);
m_pf_colscroll = auto_alloc_array_clear(machine(), UINT16, 0x2000 / 2);
create_tilemaps(m_gfxregion8x8, m_gfxregion16x16);
m_gfxcolmask = 0x0f;
m_bppmult = 0x10;
m_bppmask = 0x0f;
m_rambank = 0;
save_pointer(NAME(m_pf_data), 0x4000/2);
save_pointer(NAME(m_pf_rowscroll), 0x2000/2);
save_pointer(NAME(m_pf_colscroll), 0x2000/2);
save_pointer(NAME(m_pf_control_0), 8);
save_pointer(NAME(m_pf_control_1), 8);
save_item(NAME(m_rambank));
}
void deco_bac06_device::device_reset()
{
}
void deco_bac06_device::set_gfx_region_wide(device_t &device, int region8x8, int region16x16, int wide)
{
deco_bac06_device &dev = downcast<deco_bac06_device &>(device);
@ -71,16 +117,6 @@ void deco_bac06_device::set_gfx_region_wide(device_t &device, int region8x8, int
dev.m_wide = wide;
}
const device_type DECO_BAC06 = &device_creator<deco_bac06_device>;
deco_bac06_device::deco_bac06_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, DECO_BAC06, "decbac06_device", tag, owner, clock, "deco_bac06", __FILE__),
m_gfxregion8x8(0),
m_gfxregion16x16(0),
m_wide(0)
{
}
TILEMAP_MAPPER_MEMBER(deco_bac06_device::tile_shape0_scan)
{
return (col & 0xf) + ((row & 0xf) << 4) + ((col & 0x1f0) << 4);
@ -114,80 +150,52 @@ TILEMAP_MAPPER_MEMBER(deco_bac06_device::tile_shape2_8x8_scan)
TILE_GET_INFO_MEMBER(deco_bac06_device::get_pf8x8_tile_info)
{
if (m_rambank&1) tile_index+=0x1000;
int tile=pf_data[tile_index];
int tile=m_pf_data[tile_index];
int colourpri=(tile>>12);
SET_TILE_INFO_MEMBER(tile_region,tile&0xfff,0,0);
SET_TILE_INFO_MEMBER(m_tile_region,tile&0xfff,0,0);
tileinfo.category = colourpri;
}
TILE_GET_INFO_MEMBER(deco_bac06_device::get_pf16x16_tile_info)
{
if (m_rambank&1) tile_index+=0x1000;
int tile=pf_data[tile_index];
int tile=m_pf_data[tile_index];
int colourpri=(tile>>12);
SET_TILE_INFO_MEMBER(tile_region,tile&0xfff,0,0);
SET_TILE_INFO_MEMBER(m_tile_region,tile&0xfff,0,0);
tileinfo.category = colourpri;
}
void deco_bac06_device::create_tilemaps(int region8x8, int region16x16)
{
tile_region = region8x8;
m_tile_region = region8x8;
pf8x8_tilemap[0] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf8x8_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_8x8_scan),this), 8, 8,128, 32);
pf8x8_tilemap[1] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf8x8_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_8x8_scan),this), 8, 8, 64, 64);
pf8x8_tilemap[2] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf8x8_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_8x8_scan),this), 8, 8, 32,128);
m_pf8x8_tilemap[0] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf8x8_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_8x8_scan),this), 8, 8,128, 32);
m_pf8x8_tilemap[1] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf8x8_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_8x8_scan),this), 8, 8, 64, 64);
m_pf8x8_tilemap[2] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf8x8_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_8x8_scan),this), 8, 8, 32,128);
tile_region = region16x16;
m_tile_region = region16x16;
if (m_wide==2)
{
pf16x16_tilemap[0] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_scan),this), 16, 16, 256, 16);
pf16x16_tilemap[1] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_scan),this), 16, 16, 128, 32);
pf16x16_tilemap[2] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_scan),this), 16, 16, 64, 64);
m_pf16x16_tilemap[0] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_scan),this), 16, 16, 256, 16);
m_pf16x16_tilemap[1] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_scan),this), 16, 16, 128, 32);
m_pf16x16_tilemap[2] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_scan),this), 16, 16, 64, 64);
}
else if (m_wide==1)
{
pf16x16_tilemap[0] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_scan),this), 16, 16, 128, 16);
pf16x16_tilemap[1] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_scan),this), 16, 16, 64, 32);
pf16x16_tilemap[2] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_scan),this), 16, 16, 32, 64);
m_pf16x16_tilemap[0] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_scan),this), 16, 16, 128, 16);
m_pf16x16_tilemap[1] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_scan),this), 16, 16, 64, 32);
m_pf16x16_tilemap[2] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_scan),this), 16, 16, 32, 64);
}
else
{
pf16x16_tilemap[0] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_scan),this), 16,16, 64, 16);
pf16x16_tilemap[1] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_scan),this), 16,16, 32, 32);
pf16x16_tilemap[2] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_scan),this), 16,16, 16, 64);
m_pf16x16_tilemap[0] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_scan),this), 16,16, 64, 16);
m_pf16x16_tilemap[1] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_scan),this), 16,16, 32, 32);
m_pf16x16_tilemap[2] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_scan),this), 16,16, 16, 64);
}
}
void deco_bac06_device::device_start()
{
pf_data = auto_alloc_array_clear(this->machine(), UINT16, 0x4000 / 2); // 0x2000 is the maximum needed, some games / chip setups map less and mirror - stadium hero banks this to 0x4000?!
pf_rowscroll = auto_alloc_array_clear(this->machine(), UINT16, 0x2000 / 2);
pf_colscroll = auto_alloc_array_clear(this->machine(), UINT16, 0x2000 / 2);
create_tilemaps(m_gfxregion8x8, m_gfxregion16x16);
m_gfxcolmask = 0x0f;
m_bppmult = 0x10;
m_bppmask = 0x0f;
m_rambank = 0;
save_pointer(NAME(pf_data), 0x4000/2);
save_pointer(NAME(pf_rowscroll), 0x2000/2);
save_pointer(NAME(pf_colscroll), 0x2000/2);
save_pointer(NAME(pf_control_0), 8);
save_pointer(NAME(pf_control_1), 8);
save_item(NAME(m_rambank));
}
void deco_bac06_device::device_reset()
{
}
void deco_bac06_device::custom_tilemap_draw(running_machine &machine,
bitmap_ind16 &bitmap,
void deco_bac06_device::custom_tilemap_draw(bitmap_ind16 &bitmap,
const rectangle &cliprect,
tilemap_t *tilemap_ptr,
const UINT16 *rowscroll_ptr,
@ -246,7 +254,7 @@ void deco_bac06_device::custom_tilemap_draw(running_machine &machine,
doesn't affect any games.
*/
if (machine.driver_data()->flip_screen())
if (machine().driver_data()->flip_screen())
src_y = (src_bitmap.height() - 256) - scrolly;
else
src_y = scrolly;
@ -257,7 +265,7 @@ void deco_bac06_device::custom_tilemap_draw(running_machine &machine,
else
src_x=scrollx;
if (machine.driver_data()->flip_screen())
if (machine().driver_data()->flip_screen())
src_x=(src_bitmap.width() - 256) - src_x;
for (x=0; x<=cliprect.max_x; x++) {
@ -279,252 +287,241 @@ void deco_bac06_device::custom_tilemap_draw(running_machine &machine,
}
}
void deco_bac06_device::deco_bac06_pf_draw(running_machine &machine,bitmap_ind16 &bitmap,const rectangle &cliprect,int flags,UINT16 penmask, UINT16 pencondition,UINT16 colprimask, UINT16 colpricondition)
void deco_bac06_device::deco_bac06_pf_draw(bitmap_ind16 &bitmap,const rectangle &cliprect,int flags,UINT16 penmask, UINT16 pencondition,UINT16 colprimask, UINT16 colpricondition)
{
tilemap_t* tm = 0;
switch (pf_control_0[3]&0x3) {
switch (m_pf_control_0[3]&0x3) {
case 0: /* 4x1 */
if (pf_control_0[0]&0x1)
tm = pf8x8_tilemap[0];
if (m_pf_control_0[0]&0x1)
tm = m_pf8x8_tilemap[0];
else
tm = pf16x16_tilemap[0];
tm = m_pf16x16_tilemap[0];
break;
case 1: /* 2x2 */
default:
if (pf_control_0[0]&0x1)
tm = pf8x8_tilemap[1];
if (m_pf_control_0[0]&0x1)
tm = m_pf8x8_tilemap[1];
else
tm = pf16x16_tilemap[1];
tm = m_pf16x16_tilemap[1];
break;
case 2: /* 1x4 */
if (pf_control_0[0]&0x1)
tm = pf8x8_tilemap[2];
if (m_pf_control_0[0]&0x1)
tm = m_pf8x8_tilemap[2];
else
tm = pf16x16_tilemap[2];
tm = m_pf16x16_tilemap[2];
break;
};
if (tm)
custom_tilemap_draw(machine,bitmap,cliprect,tm,pf_rowscroll,pf_colscroll,pf_control_0,pf_control_1,flags, penmask, pencondition, colprimask, colpricondition);
custom_tilemap_draw(bitmap,cliprect,tm,m_pf_rowscroll,m_pf_colscroll,m_pf_control_0,m_pf_control_1,flags, penmask, pencondition, colprimask, colpricondition);
}
// used for pocket gal bootleg, which doesn't set registers properly and simply expects a fixed size tilemap.
void deco_bac06_device::deco_bac06_pf_draw_bootleg(running_machine &machine,bitmap_ind16 &bitmap,const rectangle &cliprect,int flags, int mode, int type)
void deco_bac06_device::deco_bac06_pf_draw_bootleg(bitmap_ind16 &bitmap,const rectangle &cliprect,int flags, int mode, int type)
{
tilemap_t* tm = 0;
if (!mode) tm = pf8x8_tilemap[type];
else tm = pf16x16_tilemap[type];
if (!mode) tm = m_pf8x8_tilemap[type];
else tm = m_pf16x16_tilemap[type];
custom_tilemap_draw(machine,bitmap,cliprect,tm,pf_rowscroll,pf_colscroll,0,0,flags, 0, 0, 0, 0);
custom_tilemap_draw(bitmap,cliprect,tm,m_pf_rowscroll,m_pf_colscroll,0,0,flags, 0, 0, 0, 0);
}
WRITE16_DEVICE_HANDLER( deco_bac06_pf_control_0_w )
WRITE16_MEMBER( deco_bac06_device::pf_control_0_w )
{
offset &= 3;
deco_bac06_device *dev = (deco_bac06_device*)device;
COMBINE_DATA(&dev->pf_control_0[offset]);
COMBINE_DATA(&m_pf_control_0[offset]);
if (offset==2)
{
int newbank = dev->pf_control_0[offset]&1;
if ((newbank&1) != (dev->m_rambank&1))
int newbank = m_pf_control_0[offset]&1;
if ((newbank&1) != (m_rambank&1))
{
// I don't know WHY Stadium Hero uses this as a bank but the RAM test expects it..
// I'm curious as to if anything else sets it tho
if (strcmp(dev->machine().system().name,"stadhero"))
if (strcmp(machine().system().name,"stadhero"))
printf("tilemap ram bank change to %d\n", newbank&1);
dev->m_rambank = newbank&1;
dev->pf8x8_tilemap[0]->mark_all_dirty();
dev->pf8x8_tilemap[1]->mark_all_dirty();
dev->pf8x8_tilemap[2]->mark_all_dirty();
dev->pf16x16_tilemap[0]->mark_all_dirty();
dev->pf16x16_tilemap[1]->mark_all_dirty();
dev->pf16x16_tilemap[2]->mark_all_dirty();
m_rambank = newbank&1;
m_pf8x8_tilemap[0]->mark_all_dirty();
m_pf8x8_tilemap[1]->mark_all_dirty();
m_pf8x8_tilemap[2]->mark_all_dirty();
m_pf16x16_tilemap[0]->mark_all_dirty();
m_pf16x16_tilemap[1]->mark_all_dirty();
m_pf16x16_tilemap[2]->mark_all_dirty();
}
}
}
READ16_DEVICE_HANDLER( deco_bac06_pf_control_1_r )
READ16_MEMBER( deco_bac06_device::pf_control_1_r )
{
offset &= 7;
deco_bac06_device *dev = (deco_bac06_device*)device;
return dev->pf_control_1[offset];
return m_pf_control_1[offset];
}
WRITE16_DEVICE_HANDLER( deco_bac06_pf_control_1_w )
WRITE16_MEMBER( deco_bac06_device::pf_control_1_w )
{
offset &= 7;
deco_bac06_device *dev = (deco_bac06_device*)device;
COMBINE_DATA(&dev->pf_control_1[offset]);
COMBINE_DATA(&m_pf_control_1[offset]);
}
WRITE16_DEVICE_HANDLER( deco_bac06_pf_data_w )
WRITE16_MEMBER( deco_bac06_device::pf_data_w )
{
deco_bac06_device *dev = (deco_bac06_device*)device;
if (dev->m_rambank&1) offset+=0x1000;
if (m_rambank&1) offset+=0x1000;
COMBINE_DATA(&dev->pf_data[offset]);
dev->pf8x8_tilemap[0]->mark_tile_dirty(offset);
dev->pf8x8_tilemap[1]->mark_tile_dirty(offset);
dev->pf8x8_tilemap[2]->mark_tile_dirty(offset);
dev->pf16x16_tilemap[0]->mark_tile_dirty(offset);
dev->pf16x16_tilemap[1]->mark_tile_dirty(offset);
dev->pf16x16_tilemap[2]->mark_tile_dirty(offset);
COMBINE_DATA(&m_pf_data[offset]);
m_pf8x8_tilemap[0]->mark_tile_dirty(offset);
m_pf8x8_tilemap[1]->mark_tile_dirty(offset);
m_pf8x8_tilemap[2]->mark_tile_dirty(offset);
m_pf16x16_tilemap[0]->mark_tile_dirty(offset);
m_pf16x16_tilemap[1]->mark_tile_dirty(offset);
m_pf16x16_tilemap[2]->mark_tile_dirty(offset);
}
READ16_DEVICE_HANDLER( deco_bac06_pf_data_r )
READ16_MEMBER( deco_bac06_device::pf_data_r )
{
deco_bac06_device *dev = (deco_bac06_device*)device;
if (dev->m_rambank&1) offset+=0x1000;
if (m_rambank&1) offset+=0x1000;
return dev->pf_data[offset];
return m_pf_data[offset];
}
WRITE8_DEVICE_HANDLER( deco_bac06_pf_data_8bit_w )
WRITE8_MEMBER( deco_bac06_device::pf_data_8bit_w )
{
if (offset&1)
deco_bac06_pf_data_w(device,space,offset/2,data,0x00ff);
pf_data_w(space,offset/2,data,0x00ff);
else
deco_bac06_pf_data_w(device,space,offset/2,data<<8,0xff00);
pf_data_w(space,offset/2,data<<8,0xff00);
}
READ8_DEVICE_HANDLER( deco_bac06_pf_data_8bit_r )
READ8_MEMBER( deco_bac06_device::pf_data_8bit_r )
{
if (offset&1) /* MSB */
return deco_bac06_pf_data_r(device,space,offset/2,0x00ff);
return pf_data_r(space,offset/2,0x00ff);
else
return deco_bac06_pf_data_r(device,space,offset/2,0xff00)>>8;
return pf_data_r(space,offset/2,0xff00)>>8;
}
WRITE16_DEVICE_HANDLER( deco_bac06_pf_rowscroll_w )
WRITE16_MEMBER( deco_bac06_device::pf_rowscroll_w )
{
deco_bac06_device *dev = (deco_bac06_device*)device;
COMBINE_DATA(&dev->pf_rowscroll[offset]);
COMBINE_DATA(&m_pf_rowscroll[offset]);
}
WRITE16_DEVICE_HANDLER( deco_bac06_pf_colscroll_w )
WRITE16_MEMBER( deco_bac06_device::pf_colscroll_w )
{
deco_bac06_device *dev = (deco_bac06_device*)device;
COMBINE_DATA(&dev->pf_colscroll[offset]);
COMBINE_DATA(&m_pf_colscroll[offset]);
}
READ16_DEVICE_HANDLER( deco_bac06_pf_rowscroll_r )
READ16_MEMBER( deco_bac06_device::pf_rowscroll_r )
{
deco_bac06_device *dev = (deco_bac06_device*)device;
return dev->pf_rowscroll[offset];
return m_pf_rowscroll[offset];
}
READ16_DEVICE_HANDLER( deco_bac06_pf_colscroll_r )
READ16_MEMBER( deco_bac06_device::pf_colscroll_r )
{
deco_bac06_device *dev = (deco_bac06_device*)device;
return dev->pf_colscroll[offset];
return m_pf_colscroll[offset];
}
/* used by dec8.c */
WRITE8_DEVICE_HANDLER( deco_bac06_pf_control0_8bit_w )
WRITE8_MEMBER( deco_bac06_device::pf_control0_8bit_w )
{
if (offset&1)
deco_bac06_pf_control_0_w(device,space,offset/2,data,0x00ff); // oscar (mirrors?)
pf_control_0_w(space,offset/2,data,0x00ff); // oscar (mirrors?)
else
deco_bac06_pf_control_0_w(device,space,offset/2,data,0x00ff);
pf_control_0_w(space,offset/2,data,0x00ff);
}
/* used by dec8.c */
READ8_DEVICE_HANDLER( deco_bac06_pf_control1_8bit_r )
READ8_MEMBER( deco_bac06_device::pf_control1_8bit_r )
{
if (offset&1)
return deco_bac06_pf_control_1_r(device,space,offset/2,0x00ff);
return pf_control_1_r(space,offset/2,0x00ff);
else
return deco_bac06_pf_control_1_r(device,space,offset/2,0xff00)>>8;
return pf_control_1_r(space,offset/2,0xff00)>>8;
}
/* used by dec8.c */
WRITE8_DEVICE_HANDLER( deco_bac06_pf_control1_8bit_w )
WRITE8_MEMBER( deco_bac06_device::pf_control1_8bit_w )
{
if (offset<4) // these registers are 16-bit?
{
if (offset&1)
deco_bac06_pf_control_1_w(device,space,offset/2,data,0x00ff);
pf_control_1_w(space,offset/2,data,0x00ff);
else
deco_bac06_pf_control_1_w(device,space,offset/2,data<<8,0xff00);
pf_control_1_w(space,offset/2,data<<8,0xff00);
}
else // these registers are 8-bit and mirror? (triothep vs actfancr)
{
if (offset&1)
deco_bac06_pf_control_1_w(device,space,offset/2,data,0x00ff);
pf_control_1_w(space,offset/2,data,0x00ff);
else
deco_bac06_pf_control_1_w(device,space,offset/2,data,0x00ff);
pf_control_1_w(space,offset/2,data,0x00ff);
}
}
READ8_DEVICE_HANDLER( deco_bac06_pf_rowscroll_8bit_r )
READ8_MEMBER( deco_bac06_device::pf_rowscroll_8bit_r )
{
if (offset&1)
return deco_bac06_pf_rowscroll_r(device,space,offset/2,0x00ff);
return pf_rowscroll_r(space,offset/2,0x00ff);
else
return deco_bac06_pf_rowscroll_r(device,space,offset/2,0xff00)>>8;
return pf_rowscroll_r(space,offset/2,0xff00)>>8;
}
WRITE8_DEVICE_HANDLER( deco_bac06_pf_rowscroll_8bit_w )
WRITE8_MEMBER( deco_bac06_device::pf_rowscroll_8bit_w )
{
if (offset&1)
deco_bac06_pf_rowscroll_w(device,space,offset/2,data,0x00ff);
pf_rowscroll_w(space,offset/2,data,0x00ff);
else
deco_bac06_pf_rowscroll_w(device,space,offset/2,data<<8,0xff00);
pf_rowscroll_w(space,offset/2,data<<8,0xff00);
}
READ8_DEVICE_HANDLER( deco_bac06_pf_rowscroll_8bit_swap_r )
READ8_MEMBER( deco_bac06_device::pf_rowscroll_8bit_swap_r )
{
if (offset&1)
return deco_bac06_pf_rowscroll_r(device,space,offset/2,0xff00)>>8;
return pf_rowscroll_r(space,offset/2,0xff00)>>8;
else
return deco_bac06_pf_rowscroll_r(device,space,offset/2,0x00ff);
return pf_rowscroll_r(space,offset/2,0x00ff);
}
WRITE8_DEVICE_HANDLER( deco_bac06_pf_rowscroll_8bit_swap_w )
WRITE8_MEMBER( deco_bac06_device::pf_rowscroll_8bit_swap_w )
{
if (offset&1)
deco_bac06_pf_rowscroll_w(device,space,offset/2,data<<8,0xff00);
pf_rowscroll_w(space,offset/2,data<<8,0xff00);
else
deco_bac06_pf_rowscroll_w(device,space,offset/2,data,0x00ff);
pf_rowscroll_w(space,offset/2,data,0x00ff);
}
/* used by hippodrm */
WRITE8_DEVICE_HANDLER( deco_bac06_pf_control0_8bit_packed_w )
WRITE8_MEMBER( deco_bac06_device::pf_control0_8bit_packed_w )
{
if (offset&1)
deco_bac06_pf_control_0_w(device,space,offset/2,data<<8,0xff00);
pf_control_0_w(space,offset/2,data<<8,0xff00);
else
deco_bac06_pf_control_0_w(device,space,offset/2,data,0x00ff);
pf_control_0_w(space,offset/2,data,0x00ff);
}
/* used by hippodrm */
WRITE8_DEVICE_HANDLER( deco_bac06_pf_control1_8bit_swap_w )
WRITE8_MEMBER( deco_bac06_device::pf_control1_8bit_swap_w )
{
deco_bac06_pf_control1_8bit_w(device,space, offset^1, data);
pf_control1_8bit_w(space, offset^1, data);
}
/* used by hippodrm */
READ8_DEVICE_HANDLER( deco_bac06_pf_data_8bit_swap_r )
READ8_MEMBER( deco_bac06_device::pf_data_8bit_swap_r )
{
return deco_bac06_pf_data_8bit_r(device,space, offset^1);
return pf_data_8bit_r(space, offset^1);
}
/* used by hippodrm */
WRITE8_DEVICE_HANDLER( deco_bac06_pf_data_8bit_swap_w )
WRITE8_MEMBER( deco_bac06_device::pf_data_8bit_swap_w )
{
deco_bac06_pf_data_8bit_w(device,space, offset^1, data);
pf_data_8bit_w(space, offset^1, data);
}

View File

@ -8,21 +8,18 @@ public:
static void set_gfx_region_wide(device_t &device, int region8x8, int region16x16, int wide);
void set_gfxregion(int region8x8, int region16x16) { m_gfxregion8x8 = region8x8; m_gfxregion16x16 = region16x16; };
UINT16* m_pf_data;
UINT16* m_pf_rowscroll, *m_pf_colscroll;
UINT16* pf_data;
UINT16* pf_rowscroll, *pf_colscroll;
tilemap_t* pf8x8_tilemap[3];
tilemap_t* pf16x16_tilemap[3];
int tile_region;
tilemap_t* m_pf8x8_tilemap[3];
tilemap_t* m_pf16x16_tilemap[3];
int m_tile_region;
void create_tilemaps(int region8x8,int region16x16);
UINT16 pf_control_0[8];
UINT16 pf_control_1[8];
UINT16 m_pf_control_0[8];
UINT16 m_pf_control_1[8];
void deco_bac06_pf_draw(running_machine &machine,bitmap_ind16 &bitmap,const rectangle &cliprect,int flags,UINT16 penmask, UINT16 pencondition,UINT16 colprimask, UINT16 colpricondition);
void deco_bac06_pf_draw_bootleg(running_machine &machine,bitmap_ind16 &bitmap,const rectangle &cliprect,int flags, int mode, int type);
void deco_bac06_pf_draw(bitmap_ind16 &bitmap,const rectangle &cliprect,int flags,UINT16 penmask, UINT16 pencondition,UINT16 colprimask, UINT16 colpricondition);
void deco_bac06_pf_draw_bootleg(bitmap_ind16 &bitmap,const rectangle &cliprect,int flags, int mode, int type);
/* I wonder if pf_control_0 is really registers, or a selection of pins.
@ -37,13 +34,47 @@ public:
For now we have this get_flip_state function so that drivers can query the bit and set other
flip flags accordingly
*/
UINT8 get_flip_state(void) { return pf_control_0[0]&0x80; };
UINT8 get_flip_state(void) { return m_pf_control_0[0]&0x80; };
void set_colmask(int data) { m_gfxcolmask = data; }
void set_bppmultmask( int mult, int mask ) { m_bppmult = mult; m_bppmask = mask; } // stadium hero has 3bpp tiles
UINT8 m_gfxcolmask;
int m_rambank; // external connection?
/* 16-bit accessors */
DECLARE_WRITE16_MEMBER( pf_control_0_w );
DECLARE_READ16_MEMBER( pf_control_1_r );
DECLARE_WRITE16_MEMBER( pf_control_1_w );
DECLARE_WRITE16_MEMBER( pf_data_w );
DECLARE_READ16_MEMBER( pf_data_r );
DECLARE_WRITE16_MEMBER( pf_rowscroll_w );
DECLARE_READ16_MEMBER( pf_rowscroll_r );
DECLARE_WRITE16_MEMBER( pf_colscroll_w );
DECLARE_READ16_MEMBER( pf_colscroll_r );
/* 8-bit accessors */
/* for dec8.c, pcktgal.c */
DECLARE_READ8_MEMBER( pf_data_8bit_r );
DECLARE_WRITE8_MEMBER( pf_data_8bit_w );
DECLARE_WRITE8_MEMBER( pf_control0_8bit_w );
DECLARE_READ8_MEMBER( pf_control1_8bit_r );
DECLARE_WRITE8_MEMBER( pf_control1_8bit_w );
DECLARE_READ8_MEMBER( pf_rowscroll_8bit_r );
DECLARE_WRITE8_MEMBER( pf_rowscroll_8bit_w );
/* for hippodrm (dec0.c) and actfancr / triothep (H6280 based games)*/
DECLARE_WRITE8_MEMBER( pf_control0_8bit_packed_w );
DECLARE_WRITE8_MEMBER( pf_control1_8bit_swap_w );
DECLARE_READ8_MEMBER( pf_data_8bit_swap_r );
DECLARE_WRITE8_MEMBER( pf_data_8bit_swap_w );
DECLARE_READ8_MEMBER( pf_rowscroll_8bit_swap_r );
DECLARE_WRITE8_MEMBER( pf_rowscroll_8bit_swap_w );
protected:
virtual void device_start();
@ -56,8 +87,7 @@ protected:
UINT8 m_bppmult;
UINT8 m_bppmask;
void custom_tilemap_draw(running_machine &machine,
bitmap_ind16 &bitmap,
void custom_tilemap_draw(bitmap_ind16 &bitmap,
const rectangle &cliprect,
tilemap_t *tilemap_ptr,
const UINT16 *rowscroll_ptr,
@ -78,38 +108,4 @@ private:
TILE_GET_INFO_MEMBER(get_pf16x16_tile_info);
};
/* 16-bit accessors */
DECLARE_WRITE16_DEVICE_HANDLER( deco_bac06_pf_control_0_w );
DECLARE_READ16_DEVICE_HANDLER( deco_bac06_pf_control_1_r );
DECLARE_WRITE16_DEVICE_HANDLER( deco_bac06_pf_control_1_w );
DECLARE_WRITE16_DEVICE_HANDLER( deco_bac06_pf_data_w );
DECLARE_READ16_DEVICE_HANDLER( deco_bac06_pf_data_r );
DECLARE_WRITE16_DEVICE_HANDLER( deco_bac06_pf_rowscroll_w );
DECLARE_READ16_DEVICE_HANDLER( deco_bac06_pf_rowscroll_r );
DECLARE_WRITE16_DEVICE_HANDLER( deco_bac06_pf_colscroll_w );
DECLARE_READ16_DEVICE_HANDLER( deco_bac06_pf_colscroll_r );
/* 8-bit accessors */
/* for dec8.c, pcktgal.c */
DECLARE_READ8_DEVICE_HANDLER( deco_bac06_pf_data_8bit_r );
DECLARE_WRITE8_DEVICE_HANDLER( deco_bac06_pf_data_8bit_w );
DECLARE_WRITE8_DEVICE_HANDLER( deco_bac06_pf_control0_8bit_w );
DECLARE_READ8_DEVICE_HANDLER( deco_bac06_pf_control1_8bit_r );
DECLARE_WRITE8_DEVICE_HANDLER( deco_bac06_pf_control1_8bit_w );
DECLARE_READ8_DEVICE_HANDLER( deco_bac06_pf_rowscroll_8bit_r );
DECLARE_WRITE8_DEVICE_HANDLER( deco_bac06_pf_rowscroll_8bit_w );
/* for hippodrm (dec0.c) and actfancr / triothep (H6280 based games)*/
DECLARE_WRITE8_DEVICE_HANDLER( deco_bac06_pf_control0_8bit_packed_w );
DECLARE_WRITE8_DEVICE_HANDLER( deco_bac06_pf_control1_8bit_swap_w );
DECLARE_READ8_DEVICE_HANDLER( deco_bac06_pf_data_8bit_swap_r );
DECLARE_WRITE8_DEVICE_HANDLER( deco_bac06_pf_data_8bit_swap_w );
DECLARE_READ8_DEVICE_HANDLER( deco_bac06_pf_rowscroll_8bit_swap_r );
DECLARE_WRITE8_DEVICE_HANDLER( deco_bac06_pf_rowscroll_8bit_swap_w );
extern const device_type DECO_BAC06;

View File

@ -1,5 +1,4 @@
#include "emu.h"
#include "video/taitoic.h"
#include "video/poly.h"
#include "includes/galastrm.h"
@ -429,7 +428,6 @@ void galastrm_state::tc0610_rotate_draw(bitmap_ind16 &bitmap, bitmap_ind16 &srcb
UINT32 galastrm_state::screen_update_galastrm(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
device_t *tc0480scp = machine().device("tc0480scp");
UINT8 layer[5];
UINT8 pivlayer[3];
UINT16 priority;
@ -439,9 +437,9 @@ UINT32 galastrm_state::screen_update_galastrm(screen_device &screen, bitmap_ind1
rectangle clip(0, screen.width() -1, 0, screen.height() -1);
m_tc0100scn->tilemap_update();
tc0480scp_tilemap_update(tc0480scp);
m_tc0480scp->tilemap_update();
priority = tc0480scp_get_bg_priority(tc0480scp);
priority = m_tc0480scp->get_bg_priority();
layer[0] = (priority & 0xf000) >> 12; /* tells us which bg layer is bottom */
layer[1] = (priority & 0x0f00) >> 8;
layer[2] = (priority & 0x00f0) >> 4;
@ -462,17 +460,17 @@ UINT32 galastrm_state::screen_update_galastrm(screen_device &screen, bitmap_ind1
#if 0
if (layer[0]==0 && layer[1]==3 && layer[2]==2 && layer[3]==1)
{
if (!machine().input().code_pressed(KEYCODE_Z)) tc0480scp_tilemap_draw(tc0480scp, m_tmpbitmaps, clip, layer[0], 0, 1);
if (!machine().input().code_pressed(KEYCODE_X)) tc0480scp_tilemap_draw(tc0480scp, m_tmpbitmaps, clip, layer[1], 0, 4);
if (!machine().input().code_pressed(KEYCODE_C)) tc0480scp_tilemap_draw(tc0480scp, m_tmpbitmaps, clip, layer[2], 0, 4);
if (!machine().input().code_pressed(KEYCODE_V)) tc0480scp_tilemap_draw(tc0480scp, m_tmpbitmaps, clip, layer[3], 0, 4);
if (!machine().input().code_pressed(KEYCODE_Z)) m_tc0480scp->tilemap_draw(m_tmpbitmaps, clip, layer[0], 0, 1);
if (!machine().input().code_pressed(KEYCODE_X)) m_tc0480scp->tilemap_draw(m_tmpbitmaps, clip, layer[1], 0, 4);
if (!machine().input().code_pressed(KEYCODE_C)) m_tc0480scp->tilemap_draw(m_tmpbitmaps, clip, layer[2], 0, 4);
if (!machine().input().code_pressed(KEYCODE_V)) m_tc0480scp->tilemap_draw(m_tmpbitmaps, clip, layer[3], 0, 4);
}
else
{
if (!machine().input().code_pressed(KEYCODE_Z)) tc0480scp_tilemap_draw(tc0480scp, m_tmpbitmaps, clip, layer[0], 0, 1);
if (!machine().input().code_pressed(KEYCODE_X)) tc0480scp_tilemap_draw(tc0480scp, m_tmpbitmaps, clip, layer[1], 0, 2);
if (!machine().input().code_pressed(KEYCODE_C)) tc0480scp_tilemap_draw(tc0480scp, m_tmpbitmaps, clip, layer[2], 0, 4);
if (!machine().input().code_pressed(KEYCODE_V)) tc0480scp_tilemap_draw(tc0480scp, m_tmpbitmaps, clip, layer[3], 0, 8);
if (!machine().input().code_pressed(KEYCODE_Z)) m_tc0480scp->tilemap_draw(m_tmpbitmaps, clip, layer[0], 0, 1);
if (!machine().input().code_pressed(KEYCODE_X)) m_tc0480scp->tilemap_draw(m_tmpbitmaps, clip, layer[1], 0, 2);
if (!machine().input().code_pressed(KEYCODE_C)) m_tc0480scp->tilemap_draw(m_tmpbitmaps, clip, layer[2], 0, 4);
if (!machine().input().code_pressed(KEYCODE_V)) m_tc0480scp->tilemap_draw(m_tmpbitmaps, clip, layer[3], 0, 8);
}
if (layer[0]==3 && layer[1]==0 && layer[2]==1 && layer[3]==2)
@ -501,7 +499,7 @@ UINT32 galastrm_state::screen_update_galastrm(screen_device &screen, bitmap_ind1
priority_bitmap.fill(0, cliprect);
draw_sprites(machine(),bitmap,cliprect,primasks,0);
if (!machine().input().code_pressed(KEYCODE_B)) tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[4], 0, 0);
if (!machine().input().code_pressed(KEYCODE_B)) m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[4], 0, 0);
if (!machine().input().code_pressed(KEYCODE_M)) m_tc0100scn->tilemap_draw(bitmap, cliprect, pivlayer[2], 0, 0);
@ -509,17 +507,17 @@ UINT32 galastrm_state::screen_update_galastrm(screen_device &screen, bitmap_ind1
#else
if (layer[0]==0 && layer[1]==3 && layer[2]==2 && layer[3]==1)
{
tc0480scp_tilemap_draw(tc0480scp, m_tmpbitmaps, clip, layer[0], 0, 1);
tc0480scp_tilemap_draw(tc0480scp, m_tmpbitmaps, clip, layer[1], 0, 4);
tc0480scp_tilemap_draw(tc0480scp, m_tmpbitmaps, clip, layer[2], 0, 4);
tc0480scp_tilemap_draw(tc0480scp, m_tmpbitmaps, clip, layer[3], 0, 4);
m_tc0480scp->tilemap_draw(m_tmpbitmaps, clip, layer[0], 0, 1);
m_tc0480scp->tilemap_draw(m_tmpbitmaps, clip, layer[1], 0, 4);
m_tc0480scp->tilemap_draw(m_tmpbitmaps, clip, layer[2], 0, 4);
m_tc0480scp->tilemap_draw(m_tmpbitmaps, clip, layer[3], 0, 4);
}
else
{
tc0480scp_tilemap_draw(tc0480scp, m_tmpbitmaps, clip, layer[0], 0, 1);
tc0480scp_tilemap_draw(tc0480scp, m_tmpbitmaps, clip, layer[1], 0, 2);
tc0480scp_tilemap_draw(tc0480scp, m_tmpbitmaps, clip, layer[2], 0, 4);
tc0480scp_tilemap_draw(tc0480scp, m_tmpbitmaps, clip, layer[3], 0, 8);
m_tc0480scp->tilemap_draw(m_tmpbitmaps, clip, layer[0], 0, 1);
m_tc0480scp->tilemap_draw(m_tmpbitmaps, clip, layer[1], 0, 2);
m_tc0480scp->tilemap_draw(m_tmpbitmaps, clip, layer[2], 0, 4);
m_tc0480scp->tilemap_draw(m_tmpbitmaps, clip, layer[3], 0, 8);
}
if (layer[0]==3 && layer[1]==0 && layer[2]==1 && layer[3]==2)
@ -548,7 +546,7 @@ UINT32 galastrm_state::screen_update_galastrm(screen_device &screen, bitmap_ind1
priority_bitmap.fill(0, cliprect);
draw_sprites(bitmap,cliprect,primasks,0);
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[4], 0, 0);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[4], 0, 0);
m_tc0100scn->tilemap_draw(bitmap, cliprect, pivlayer[2], 0, 0);
#endif

View File

@ -1,5 +1,4 @@
#include "emu.h"
#include "video/taitoic.h"
#include "includes/groundfx.h"
/******************************************************************/
@ -197,15 +196,14 @@ void groundfx_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
UINT32 groundfx_state::screen_update_groundfx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
address_space &space = machine().driver_data()->generic_space();
device_t *tc0480scp = machine().device("tc0480scp");
UINT8 layer[5];
UINT8 pivlayer[3];
UINT16 priority;
m_tc0100scn->tilemap_update();
tc0480scp_tilemap_update(tc0480scp);
m_tc0480scp->tilemap_update();
priority = tc0480scp_get_bg_priority(tc0480scp);
priority = m_tc0480scp->get_bg_priority();
layer[0] = (priority & 0xf000) >> 12; /* tells us which bg layer is bottom */
layer[1] = (priority & 0x0f00) >> 8;
@ -240,30 +238,30 @@ UINT32 groundfx_state::screen_update_groundfx(screen_device &screen, bitmap_ind1
*/
if (m_tc0100scn->long_r(space, 0x4090 / 4, 0xffffffff) ||
tc0480scp_long_r(tc0480scp, space, 0x20 / 4, 0xffffffff) == 0x240866) /* Anything in text layer - really stupid hack */
m_tc0480scp->long_r(space, 0x20 / 4, 0xffffffff) == 0x240866) /* Anything in text layer - really stupid hack */
{
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[1], 0, 2);
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[2], 0, 4);
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[3], 0, 8);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[1], 0, 2);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[2], 0, 4);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[3], 0, 8);
//m_tc0100scn->tilemap_draw(bitmap, cliprect, 0, pivlayer[2], 0, 0);
if (tc0480scp_long_r(tc0480scp, space, 0x20 / 4, 0xffffffff) != 0x240866) /* Stupid hack for start of race */
tc0480scp_tilemap_draw(tc0480scp, bitmap, m_hack_cliprect, layer[0], 0, 0);
if (m_tc0480scp->long_r(space, 0x20 / 4, 0xffffffff) != 0x240866) /* Stupid hack for start of race */
m_tc0480scp->tilemap_draw(bitmap, m_hack_cliprect, layer[0], 0, 0);
draw_sprites(bitmap, cliprect, 1, 44, -574);
}
else
{
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[0], 0, 1);
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[1], 0, 2);
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[2], 0, 4);
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[3], 0, 8);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[0], 0, 1);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[1], 0, 2);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[2], 0, 4);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[3], 0, 8);
m_tc0100scn->tilemap_draw(bitmap, cliprect, pivlayer[2], 0, 0);
draw_sprites(bitmap, cliprect, 0, 44, -574);
}
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[4], 0, 0); /* TC0480SCP text layer */
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[4], 0, 0); /* TC0480SCP text layer */
return 0;
}

View File

@ -1,5 +1,4 @@
#include "emu.h"
#include "video/taitoic.h"
#include "includes/gunbustr.h"
/************************************************************/
@ -202,14 +201,13 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
UINT32 gunbustr_state::screen_update_gunbustr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
device_t *tc0480scp = machine().device("tc0480scp");
UINT8 layer[5];
UINT16 priority;
static const int primasks[4] = {0xfffc, 0xfff0, 0xff00, 0x0};
tc0480scp_tilemap_update(tc0480scp);
m_tc0480scp->tilemap_update();
priority = tc0480scp_get_bg_priority(tc0480scp);
priority = m_tc0480scp->get_bg_priority();
layer[0] = (priority & 0xf000) >> 12; /* tells us which bg layer is bottom */
layer[1] = (priority & 0x0f00) >> 8;
layer[2] = (priority & 0x00f0) >> 4;
@ -222,18 +220,18 @@ UINT32 gunbustr_state::screen_update_gunbustr(screen_device &screen, bitmap_ind1
sprites as pdrawgfx cannot yet cope with more than 4 layers */
#ifdef MAME_DEBUG
if (!machine().input().code_pressed (KEYCODE_Z)) tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[0],TILEMAP_DRAW_OPAQUE, 0);
if (!machine().input().code_pressed (KEYCODE_X)) tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[1], 0, 1);
if (!machine().input().code_pressed (KEYCODE_C)) tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[2], 0, 2);
if (!machine().input().code_pressed (KEYCODE_V)) tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[3], 0, 4);
if (!machine().input().code_pressed (KEYCODE_B)) tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[4], 0, 8);
if (!machine().input().code_pressed (KEYCODE_Z)) m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[0],TILEMAP_DRAW_OPAQUE, 0);
if (!machine().input().code_pressed (KEYCODE_X)) m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[1], 0, 1);
if (!machine().input().code_pressed (KEYCODE_C)) m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[2], 0, 2);
if (!machine().input().code_pressed (KEYCODE_V)) m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[3], 0, 4);
if (!machine().input().code_pressed (KEYCODE_B)) m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[4], 0, 8);
if (!machine().input().code_pressed (KEYCODE_N)) draw_sprites(bitmap, cliprect, primasks, 48, -116);
#else
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0);
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[1], 0, 1);
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[2], 0, 2);
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[3], 0, 4);
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[4], 0, 8); /* text layer */
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[1], 0, 1);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[2], 0, 2);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[3], 0, 4);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[4], 0, 8); /* text layer */
draw_sprites(bitmap, cliprect, primasks, 48, -116);
#endif
return 0;

View File

@ -8,7 +8,6 @@
#include "emu.h"
#include "includes/madmotor.h"
#include "video/decbac06.h"
#include "video/decmxc06.h"
/******************************************************************************/
@ -24,13 +23,13 @@ void madmotor_state::video_start()
UINT32 madmotor_state::screen_update_madmotor(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
flip_screen_set(machine().device<deco_bac06_device>("tilegen1")->get_flip_state());
m_tilegen1->get_flip_state();
// machine().tilemap().set_flip_all(machine().device<deco_bac06_device>("tilegen1")->get_flip_state() ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
// machine().tilemap().set_flip_all(m_tilegen1->get_flip_state() ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
machine().device<deco_bac06_device>("tilegen3")->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
machine().device<deco_bac06_device>("tilegen2")->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen3->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
machine().device<deco_mxc06_device>("spritegen")->draw_sprites(machine(), bitmap, cliprect, m_spriteram, 0x00, 0x00, 0x0f);
machine().device<deco_bac06_device>("tilegen1")->deco_bac06_pf_draw(machine(),bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
return 0;
}

View File

@ -1,5 +1,4 @@
#include "emu.h"
#include "video/taitoic.h"
#include "includes/ninjaw.h"
/**********************************************************/

View File

@ -1,5 +1,4 @@
#include "emu.h"
#include "video/taitoic.h"
#include "includes/othunder.h"

View File

@ -1,6 +1,5 @@
#include "emu.h"
#include "includes/pcktgal.h"
#include "video/decbac06.h"
void pcktgal_state::palette_init()
{
@ -66,8 +65,8 @@ void pcktgal_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
UINT32 pcktgal_state::screen_update_pcktgal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// flip_screen_set(machine().device<deco_bac06_device>("tilegen1")->get_flip_state());
machine().device<deco_bac06_device>("tilegen1")->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen1->get_flip_state();
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
draw_sprites(bitmap, cliprect);
return 0;
}
@ -75,7 +74,7 @@ UINT32 pcktgal_state::screen_update_pcktgal(screen_device &screen, bitmap_ind16
UINT32 pcktgal_state::screen_update_pcktgalb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// the bootleg doesn't properly set the tilemap registers, because it's on non-original hardware, which probably doesn't have the flexible tilemaps.
machine().device<deco_bac06_device>("tilegen1")->deco_bac06_pf_draw_bootleg(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0, 2);
m_tilegen1->deco_bac06_pf_draw_bootleg(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0, 2);
draw_sprites(bitmap, cliprect);
return 0;
}

View File

@ -1,5 +1,4 @@
#include "emu.h"
#include "video/taitoic.h"
#include "includes/slapshot.h"
/**********************************************************/
@ -493,9 +492,9 @@ UINT32 slapshot_state::screen_update_slapshot(screen_device &screen, bitmap_ind1
taito_handle_sprite_buffering();
tc0480scp_tilemap_update(m_tc0480scp);
m_tc0480scp->tilemap_update();
priority = tc0480scp_get_bg_priority(m_tc0480scp);
priority = m_tc0480scp->get_bg_priority();
layer[0] = (priority & 0xf000) >> 12; /* tells us which bg layer is bottom */
layer[1] = (priority & 0x0f00) >> 8;
@ -522,22 +521,22 @@ UINT32 slapshot_state::screen_update_slapshot(screen_device &screen, bitmap_ind1
#ifdef MAME_DEBUG
if (m_dislayer[layer[0]] == 0)
#endif
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[0], 0, 1);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[0], 0, 1);
#ifdef MAME_DEBUG
if (m_dislayer[layer[1]] == 0)
#endif
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[1], 0, 2);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[1], 0, 2);
#ifdef MAME_DEBUG
if (m_dislayer[layer[2]] == 0)
#endif
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[2], 0, 4);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[2], 0, 4);
#ifdef MAME_DEBUG
if (m_dislayer[layer[3]] == 0)
#endif
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[3], 0, 8);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[3], 0, 8);
{
int primasks[4] = {0,0,0,0};
@ -563,6 +562,6 @@ UINT32 slapshot_state::screen_update_slapshot(screen_device &screen, bitmap_ind1
#ifdef MAME_DEBUG
if (m_dislayer[layer[4]] == 0)
#endif
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[4], 0, 0);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[4], 0, 0);
return 0;
}

View File

@ -12,7 +12,6 @@
#include "emu.h"
#include "includes/stadhero.h"
#include "video/decbac06.h"
#include "video/decmxc06.h"
/******************************************************************************/
@ -23,8 +22,8 @@ UINT32 stadhero_state::screen_update_stadhero(screen_device &screen, bitmap_ind1
{
// machine().tilemap().set_flip_all(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
machine().device<deco_bac06_device>("tilegen1")->set_bppmultmask(0x8, 0x7);
machine().device<deco_bac06_device>("tilegen1")->deco_bac06_pf_draw(machine(),bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
m_tilegen1->set_bppmultmask(0x8, 0x7);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE, 0x00, 0x00, 0x00, 0x00);
machine().device<deco_mxc06_device>("spritegen")->draw_sprites(machine(), bitmap, cliprect, m_spriteram, 0x00, 0x00, 0x0f);
m_pf1_tilemap->draw(bitmap, cliprect, 0,0);
return 0;

View File

@ -1,5 +1,4 @@
#include "emu.h"
#include "video/taitoic.h"
#include "includes/superchs.h"
void superchs_state::video_start()
@ -199,14 +198,13 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
UINT32 superchs_state::screen_update_superchs(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
device_t *tc0480scp = machine().device("tc0480scp");
UINT8 layer[5];
UINT16 priority;
static const int primasks[4] = {0xfffc, 0xfff0, 0xff00, 0x0};
tc0480scp_tilemap_update(tc0480scp);
m_tc0480scp->tilemap_update();
priority = tc0480scp_get_bg_priority(tc0480scp);
priority = m_tc0480scp->get_bg_priority();
layer[0] = (priority & 0xf000) >> 12; /* tells us which bg layer is bottom */
layer[1] = (priority & 0x0f00) >> 8;
layer[2] = (priority & 0x00f0) >> 4;
@ -219,18 +217,18 @@ UINT32 superchs_state::screen_update_superchs(screen_device &screen, bitmap_ind1
sprites as pdrawgfx cannot yet cope with more than 4 layers */
#ifdef MAME_DEBUG
if (!machine().input().code_pressed (KEYCODE_Z)) tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0);
if (!machine().input().code_pressed (KEYCODE_X)) tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[1], 0, 1);
if (!machine().input().code_pressed (KEYCODE_C)) tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[2], 0, 2);
if (!machine().input().code_pressed (KEYCODE_V)) tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[3], 0, 4);
if (!machine().input().code_pressed (KEYCODE_B)) tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[4], 0, 8);
if (!machine().input().code_pressed (KEYCODE_Z)) m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0);
if (!machine().input().code_pressed (KEYCODE_X)) m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[1], 0, 1);
if (!machine().input().code_pressed (KEYCODE_C)) m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[2], 0, 2);
if (!machine().input().code_pressed (KEYCODE_V)) m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[3], 0, 4);
if (!machine().input().code_pressed (KEYCODE_B)) m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[4], 0, 8);
if (!machine().input().code_pressed (KEYCODE_N)) draw_sprites(bitmap, cliprect, primasks, 48, -116);
#else
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0);
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[1], 0, 1);
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[2], 0, 2);
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[3], 0, 4);
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[4], 0, 8); /* text layer */
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[1], 0, 1);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[2], 0, 2);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[3], 0, 4);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[4], 0, 8); /* text layer */
draw_sprites(bitmap, cliprect, primasks, 48, -116);
#endif
return 0;

View File

@ -259,8 +259,8 @@ void taitob_state::draw_framebuffer( bitmap_ind16 &bitmap, const rectangle &clip
rectangle myclip = cliprect;
int x, y;
address_space &space = machine().driver_data()->generic_space();
UINT8 video_control = tc0180vcu_get_videoctrl(m_tc0180vcu, space, 0);
UINT8 framebuffer_page = tc0180vcu_get_fb_page(m_tc0180vcu, space, 0);
UINT8 video_control = m_tc0180vcu->get_videoctrl(space, 0);
UINT8 framebuffer_page = m_tc0180vcu->get_fb_page(space, 0);
g_profiler.start(PROFILER_USER1);
@ -362,7 +362,7 @@ g_profiler.stop();
UINT32 taitob_state::screen_update_taitob(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
address_space &space = machine().driver_data()->generic_space();
UINT8 video_control = tc0180vcu_get_videoctrl(m_tc0180vcu, space, 0);
UINT8 video_control = m_tc0180vcu->get_videoctrl(space, 0);
if ((video_control & 0x20) == 0)
{
@ -371,11 +371,11 @@ UINT32 taitob_state::screen_update_taitob(screen_device &screen, bitmap_ind16 &b
}
/* Draw playfields */
tc0180vcu_tilemap_draw(m_tc0180vcu, bitmap, cliprect, 0, 1);
m_tc0180vcu->tilemap_draw(bitmap, cliprect, 0, 1);
draw_framebuffer(bitmap, cliprect, 1);
tc0180vcu_tilemap_draw(m_tc0180vcu, bitmap, cliprect, 1, 0);
m_tc0180vcu->tilemap_draw(bitmap, cliprect, 1, 0);
if (m_pixel_bitmap) /* hitice only */
{
@ -388,7 +388,7 @@ UINT32 taitob_state::screen_update_taitob(screen_device &screen, bitmap_ind16 &b
draw_framebuffer(bitmap, cliprect, 0);
tc0180vcu_tilemap_draw(m_tc0180vcu, bitmap, cliprect, 2, 0);
m_tc0180vcu->tilemap_draw(bitmap, cliprect, 2, 0);
return 0;
}
@ -399,7 +399,7 @@ UINT32 taitob_state::screen_update_realpunc(screen_device &screen, bitmap_rgb32
{
address_space &space = machine().driver_data()->generic_space();
const rgb_t *palette = palette_entry_list_adjusted(machine().palette);
UINT8 video_control = tc0180vcu_get_videoctrl(m_tc0180vcu, space, 0);
UINT8 video_control = m_tc0180vcu->get_videoctrl(space, 0);
int x, y;
/* Video blanked? */
@ -410,11 +410,11 @@ UINT32 taitob_state::screen_update_realpunc(screen_device &screen, bitmap_rgb32
}
/* Draw the palettized playfields to an indexed bitmap */
tc0180vcu_tilemap_draw(m_tc0180vcu, *m_realpunc_bitmap, cliprect, 0, 1);
m_tc0180vcu->tilemap_draw(*m_realpunc_bitmap, cliprect, 0, 1);
draw_framebuffer(*m_realpunc_bitmap, cliprect, 1);
tc0180vcu_tilemap_draw(m_tc0180vcu, *m_realpunc_bitmap, cliprect, 1, 0);
m_tc0180vcu->tilemap_draw(*m_realpunc_bitmap, cliprect, 1, 0);
if (m_realpunc_video_ctrl & 0x0001)
draw_framebuffer(*m_realpunc_bitmap, cliprect, 0);
@ -470,7 +470,7 @@ UINT32 taitob_state::screen_update_realpunc(screen_device &screen, bitmap_rgb32
if (!(m_realpunc_video_ctrl & 0x0001))
draw_framebuffer(*m_realpunc_bitmap, cliprect, 0);
tc0180vcu_tilemap_draw(m_tc0180vcu, *m_realpunc_bitmap, cliprect, 2, 0);
m_tc0180vcu->tilemap_draw(*m_realpunc_bitmap, cliprect, 2, 0);
/* Merge the indexed layers with the output bitmap */
for (y = 0; y <= cliprect.max_y; y++)
@ -493,8 +493,8 @@ void taitob_state::screen_eof_taitob(screen_device &screen, bool state)
if (state)
{
address_space &space = machine().driver_data()->generic_space();
UINT8 video_control = tc0180vcu_get_videoctrl(m_tc0180vcu, space, 0);
UINT8 framebuffer_page = tc0180vcu_get_fb_page(m_tc0180vcu, space, 0);
UINT8 video_control = m_tc0180vcu->get_videoctrl(space, 0);
UINT8 framebuffer_page = m_tc0180vcu->get_fb_page(space, 0);
if (~video_control & 0x01)
m_framebuffer[framebuffer_page]->fill(0, machine().primary_screen->visible_area());
@ -502,7 +502,7 @@ void taitob_state::screen_eof_taitob(screen_device &screen, bool state)
if (~video_control & 0x80)
{
framebuffer_page ^= 1;
tc0180vcu_set_fb_page(m_tc0180vcu, space, 0, framebuffer_page);
m_tc0180vcu->set_fb_page(space, 0, framebuffer_page);
}
draw_sprites(*m_framebuffer[framebuffer_page], machine().primary_screen->visible_area());

View File

@ -1,5 +1,4 @@
#include "emu.h"
#include "video/taitoic.h"
#include "includes/taito_f2.h"
/************************************************************
@ -33,9 +32,9 @@ void taitof2_state::taitof2_core_vh_start (int sprite_type, int hide, int flip_h
m_hide_pixels = hide;
m_flip_hide_pixels = flip_hide;
m_spriteram_delayed = auto_alloc_array(machine(), UINT16, m_spriteram.bytes() / 2);
m_spriteram_buffered = auto_alloc_array(machine(), UINT16, m_spriteram.bytes() / 2);
m_spritelist = auto_alloc_array(machine(), struct f2_tempsprite, 0x400);
m_spriteram_delayed = auto_alloc_array_clear(machine(), UINT16, m_spriteram.bytes() / 2);
m_spriteram_buffered = auto_alloc_array_clear(machine(), UINT16, m_spriteram.bytes() / 2);
m_spritelist = auto_alloc_array_clear(machine(), struct f2_tempsprite, 0x400);
for (i = 0; i < 8; i ++)
{
@ -1272,9 +1271,9 @@ UINT32 taitof2_state::screen_update_taitof2_metalb(screen_device &screen, bitmap
taitof2_handle_sprite_buffering();
tc0480scp_tilemap_update(m_tc0480scp);
m_tc0480scp->tilemap_update();
priority = tc0480scp_get_bg_priority(m_tc0480scp);
priority = m_tc0480scp->get_bg_priority();
layer[0] = (priority & 0xf000) >> 12; /* tells us which bg layer is bottom */
layer[1] = (priority & 0x0f00) >> 8;
@ -1303,11 +1302,11 @@ UINT32 taitof2_state::screen_update_taitof2_metalb(screen_device &screen, bitmap
machine().priority_bitmap.fill(0, cliprect);
bitmap.fill(0, cliprect);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[0], 0 ,1);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[1], 0, 2);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[2], 0, 4);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[3], 0, 8);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[4], 0, 16);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[0], 0 ,1);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[1], 0, 2);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[2], 0, 4);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[3], 0, 8);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[4], 0, 16);
draw_sprites(bitmap, cliprect, NULL, 1);
return 0;
@ -1325,9 +1324,9 @@ UINT32 taitof2_state::screen_update_taitof2_deadconx(screen_device &screen, bitm
taitof2_handle_sprite_buffering();
tc0480scp_tilemap_update(m_tc0480scp);
m_tc0480scp->tilemap_update();
priority = tc0480scp_get_bg_priority(m_tc0480scp);
priority = m_tc0480scp->get_bg_priority();
layer[0] = (priority & 0xf000) >> 12; /* tells us which bg layer is bottom */
layer[1] = (priority & 0x0f00) >> 8;
@ -1351,10 +1350,10 @@ UINT32 taitof2_state::screen_update_taitof2_deadconx(screen_device &screen, bitm
machine().priority_bitmap.fill(0, cliprect);
bitmap.fill(0, cliprect);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[0], 0 ,1);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[1], 0, 2);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[2], 0, 4);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[3], 0, 8);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[0], 0 ,1);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[1], 0, 2);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[2], 0, 4);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[3], 0, 8);
{
int primasks[4] = {0,0,0,0};
@ -1377,6 +1376,6 @@ UINT32 taitof2_state::screen_update_taitof2_deadconx(screen_device &screen, bitm
that the FG layer is always on top of sprites.
*/
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[4], 0, 0);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[4], 0, 0);
return 0;
}

View File

@ -1,5 +1,4 @@
#include "emu.h"
#include "video/taitoic.h"
#include "includes/taito_z.h"
/**********************************************************/
@ -847,7 +846,7 @@ UINT32 taitoz_state::screen_update_contcirc(screen_device &screen, bitmap_ind16
m_tc0100scn->tilemap_draw(bitmap, cliprect, layer[0], 0, 0);
m_tc0100scn->tilemap_draw(bitmap, cliprect, layer[1], 0, 1);
tc0150rod_draw(m_tc0150rod, bitmap, cliprect, -3, m_road_palbank << 6, 1, 0, 1, 2); // -6
m_tc0150rod->draw(bitmap, cliprect, -3, m_road_palbank << 6, 1, 0, 1, 2); // -6
m_tc0100scn->tilemap_draw(bitmap, cliprect, layer[2], 0, 4);
contcirc_draw_sprites_16x8(bitmap, cliprect, 5); // 7
@ -874,7 +873,7 @@ UINT32 taitoz_state::screen_update_chasehq(screen_device &screen, bitmap_ind16 &
m_tc0100scn->tilemap_draw(bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0);
m_tc0100scn->tilemap_draw(bitmap, cliprect, layer[1], 0, 1);
tc0150rod_draw(m_tc0150rod, bitmap, cliprect, -1, 0xc0, 0, 0, 1, 2);
m_tc0150rod->draw(bitmap, cliprect, -1, 0xc0, 0, 0, 1, 2);
m_tc0100scn->tilemap_draw(bitmap, cliprect, layer[2], 0, 4);
chasehq_draw_sprites_16x16(bitmap, cliprect, 7);
@ -899,7 +898,7 @@ UINT32 taitoz_state::screen_update_bshark(screen_device &screen, bitmap_ind16 &b
m_tc0100scn->tilemap_draw(bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0);
m_tc0100scn->tilemap_draw(bitmap, cliprect, layer[1], 0, 1);
tc0150rod_draw(m_tc0150rod, bitmap, cliprect, -1, 0xc0, 0, 1, 1, 2);
m_tc0150rod->draw(bitmap, cliprect, -1, 0xc0, 0, 1, 1, 2);
m_tc0100scn->tilemap_draw(bitmap, cliprect, layer[2], 0, 4);
bshark_draw_sprites_16x8(bitmap, cliprect, 8);
@ -924,7 +923,7 @@ UINT32 taitoz_state::screen_update_sci(screen_device &screen, bitmap_ind16 &bitm
m_tc0100scn->tilemap_draw(bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0);
m_tc0100scn->tilemap_draw(bitmap, cliprect, layer[1], 0, 1);
tc0150rod_draw(m_tc0150rod, bitmap, cliprect, -1, 0xc0, 0, 0, 1, 2);
m_tc0150rod->draw(bitmap, cliprect, -1, 0xc0, 0, 0, 1, 2);
m_tc0100scn->tilemap_draw(bitmap, cliprect, layer[2], 0, 4);
sci_draw_sprites_16x8(bitmap, cliprect, 6);
@ -949,7 +948,7 @@ UINT32 taitoz_state::screen_update_aquajack(screen_device &screen, bitmap_ind16
m_tc0100scn->tilemap_draw(bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0);
m_tc0100scn->tilemap_draw(bitmap, cliprect, layer[1], 0, 1);
tc0150rod_draw(m_tc0150rod, bitmap, cliprect, -1, 0, 2, 1, 1, 2);
m_tc0150rod->draw(bitmap, cliprect, -1, 0, 2, 1, 1, 2);
m_tc0100scn->tilemap_draw(bitmap, cliprect, layer[2], 0, 4);
aquajack_draw_sprites_16x8(bitmap, cliprect, 3);
@ -987,9 +986,9 @@ UINT32 taitoz_state::screen_update_dblaxle(screen_device &screen, bitmap_ind16 &
UINT8 layer[5];
UINT16 priority;
tc0480scp_tilemap_update(m_tc0480scp);
m_tc0480scp->tilemap_update();
priority = tc0480scp_get_bg_priority(m_tc0480scp);
priority = m_tc0480scp->get_bg_priority();
layer[0] = (priority & 0xf000) >> 12; /* tells us which bg layer is bottom */
layer[1] = (priority & 0x0f00) >> 8;
@ -1002,17 +1001,17 @@ UINT32 taitoz_state::screen_update_dblaxle(screen_device &screen, bitmap_ind16 &
/* Ensure screen blanked - this shouldn't be necessary! */
bitmap.fill(0, cliprect);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[1], 0, 0);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[2], 0, 1);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[1], 0, 0);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[2], 0, 1);
tc0150rod_draw(m_tc0150rod, bitmap, cliprect, -1, 0xc0, 0, 0, 1, 2);
m_tc0150rod->draw(bitmap, cliprect, -1, 0xc0, 0, 0, 1, 2);
bshark_draw_sprites_16x8(bitmap, cliprect, 7);
/* This layer used for the big numeric displays */
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[3], 0, 4);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[3], 0, 4);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[4], 0, 0); /* Text layer */
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[4], 0, 0); /* Text layer */
return 0;
}
@ -1022,9 +1021,9 @@ UINT32 taitoz_state::screen_update_racingb(screen_device &screen, bitmap_ind16 &
UINT8 layer[5];
UINT16 priority;
tc0480scp_tilemap_update(m_tc0480scp);
m_tc0480scp->tilemap_update();
priority = tc0480scp_get_bg_priority(m_tc0480scp);
priority = m_tc0480scp->get_bg_priority();
layer[0] = (priority & 0xf000) >> 12; /* tells us which bg layer is bottom */
layer[1] = (priority & 0x0f00) >> 8;
@ -1037,14 +1036,14 @@ UINT32 taitoz_state::screen_update_racingb(screen_device &screen, bitmap_ind16 &
/* Ensure screen blanked - this shouldn't be necessary! */
bitmap.fill(0, cliprect);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[1], 0, 0);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[2], 0, 2);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[3], 0, 2);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[1], 0, 0);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[2], 0, 2);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[3], 0, 2);
tc0150rod_draw(m_tc0150rod, bitmap, cliprect, -1, 0xc0, 0, 0, 1, 2);
m_tc0150rod->draw(bitmap, cliprect, -1, 0xc0, 0, 0, 1, 2);
sci_draw_sprites_16x8(bitmap, cliprect, 7);
tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[4], 0, 4);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[4], 0, 4);
return 0;
}

File diff suppressed because it is too large Load Diff

View File

@ -9,8 +9,6 @@
#ifndef _TAITOIC_H_
#define _TAITOIC_H_
#include "devlegcy.h"
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
@ -69,35 +67,35 @@ struct tc0280grd_interface
struct tc0480scp_interface
{
int gfxnum;
int txnum;
int m_gfxnum;
int m_txnum;
int pixels;
int m_pixels;
int x_offset, y_offset;
int text_xoffs, text_yoffs;
int flip_xoffs, flip_yoffs;
int m_x_offset, m_y_offset;
int m_text_xoffs, m_text_yoffs;
int m_flip_xoffs, m_flip_yoffs;
int col_base;
int m_col_base;
};
struct tc0150rod_interface
{
const char *gfx_region; /* gfx region for the road */
const char *m_gfx_region; /* gfx region for the road */
};
struct tc0110pcr_interface
{
int pal_offs;
int m_pal_offs;
};
struct tc0180vcu_interface
{
int bg_color_base;
int fg_color_base;
int tx_color_base;
int m_bg_color_base;
int m_fg_color_base;
int m_tx_color_base;
};
class pc080sn_device : public device_t,
@ -411,93 +409,178 @@ private:
extern const device_type TC0360PRI;
class tc0480scp_device : public device_t
class tc0480scp_device : public device_t,
public tc0480scp_interface
{
public:
tc0480scp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~tc0480scp_device() { global_free(m_token); }
~tc0480scp_device() {}
// access to legacy token
void *token() const { assert(m_token != NULL); return m_token; }
void tc0480scp_postload();
/* When writing a driver, pass zero for the text and flip offsets initially:
then tweak them once you have the 4 bg layer positions correct. Col_base
may be needed when tilemaps use a palette area from sprites. */
DECLARE_READ16_MEMBER( word_r );
DECLARE_WRITE16_MEMBER( word_w );
DECLARE_READ16_MEMBER( ctrl_word_r );
DECLARE_WRITE16_MEMBER( ctrl_word_w );
/* Functions for use with 68020 (Super-Z system) */
DECLARE_READ32_MEMBER( long_r );
DECLARE_WRITE32_MEMBER( long_w );
DECLARE_READ32_MEMBER( ctrl_long_r );
DECLARE_WRITE32_MEMBER( ctrl_long_w );
void tilemap_update();
void tilemap_draw(bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority);
/* Returns the priority order of the bg tilemaps set in the internal
register. The order in which the four layers should be drawn is
returned in the lowest four nibbles (msn = bottom layer; lsn = top) */
int get_bg_priority();
/* Undrfire needs to read this for a sprite/tile priority hack */
DECLARE_READ8_MEMBER( pri_reg_r );
void postload();
protected:
// device-level overrides
virtual void device_config_complete();
virtual void device_start();
virtual void device_reset();
private:
// internal state
void *m_token;
UINT16 m_ctrl[0x18];
TILE_GET_INFO_MEMBER(tc0480scp_get_bg0_tile_info);
TILE_GET_INFO_MEMBER(tc0480scp_get_bg1_tile_info);
TILE_GET_INFO_MEMBER(tc0480scp_get_bg2_tile_info);
TILE_GET_INFO_MEMBER(tc0480scp_get_bg3_tile_info);
TILE_GET_INFO_MEMBER(tc0480scp_get_tx_tile_info);
UINT16 * m_ram;
UINT16 * m_bg_ram[4];
UINT16 * m_tx_ram;
UINT16 * m_char_ram;
UINT16 * m_bgscroll_ram[4];
UINT16 * m_rowzoom_ram[4];
UINT16 * m_bgcolumn_ram[4];
int m_bgscrollx[4];
int m_bgscrolly[4];
int m_pri_reg;
/* We keep two tilemaps for each of the 5 actual tilemaps: one at standard width, one double */
tilemap_t *m_tilemap[5][2];
INT32 m_dblwidth;
int m_x_offs;
void common_get_tc0480bg_tile_info( tile_data &tileinfo, int tile_index, UINT16 *ram, int gfxnum );
void common_get_tc0480tx_tile_info( tile_data &tileinfo, int tile_index, UINT16 *ram, int gfxnum );
TILE_GET_INFO_MEMBER(get_bg0_tile_info);
TILE_GET_INFO_MEMBER(get_bg1_tile_info);
TILE_GET_INFO_MEMBER(get_bg2_tile_info);
TILE_GET_INFO_MEMBER(get_bg3_tile_info);
TILE_GET_INFO_MEMBER(get_tx_tile_info);
void dirty_tilemaps();
void set_layer_ptrs();
void bg01_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority );
void bg23_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority );
};
extern const device_type TC0480SCP;
class tc0150rod_device : public device_t
class tc0150rod_device : public device_t,
public tc0150rod_interface
{
public:
tc0150rod_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~tc0150rod_device() { global_free(m_token); }
~tc0150rod_device() {}
// access to legacy token
void *token() const { assert(m_token != NULL); return m_token; }
DECLARE_READ16_MEMBER( word_r );
DECLARE_WRITE16_MEMBER( word_w );
void draw(bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs, int palette_offs, int type, int road_trans, UINT32 low_priority, UINT32 high_priority);
protected:
// device-level overrides
virtual void device_config_complete();
virtual void device_start();
private:
// internal state
void *m_token;
UINT16 * m_ram;
};
extern const device_type TC0150ROD;
class tc0110pcr_device : public device_t
class tc0110pcr_device : public device_t,
public tc0110pcr_interface
{
public:
tc0110pcr_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~tc0110pcr_device() { global_free(m_token); }
~tc0110pcr_device() {}
// access to legacy token
void *token() const { assert(m_token != NULL); return m_token; }
void tc0110pcr_restore_colors();
DECLARE_READ16_MEMBER( word_r );
DECLARE_WRITE16_MEMBER( word_w ); /* color index goes up in step of 2 */
DECLARE_WRITE16_MEMBER( step1_word_w ); /* color index goes up in step of 1 */
DECLARE_WRITE16_MEMBER( step1_rbswap_word_w ); /* swaps red and blue components */
DECLARE_WRITE16_MEMBER( step1_4bpg_word_w ); /* only 4 bits per color gun */
void restore_colors();
protected:
// device-level overrides
virtual void device_config_complete();
virtual void device_start();
virtual void device_reset();
private:
// internal state
void *m_token;
UINT16 * m_ram;
int m_type;
int m_addr;
};
extern const device_type TC0110PCR;
class tc0180vcu_device : public device_t
class tc0180vcu_device : public device_t,
public tc0180vcu_interface
{
public:
tc0180vcu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~tc0180vcu_device() { global_free(m_token); }
~tc0180vcu_device() {}
DECLARE_READ8_MEMBER( get_fb_page );
DECLARE_WRITE8_MEMBER( set_fb_page );
DECLARE_READ8_MEMBER( get_videoctrl );
DECLARE_READ16_MEMBER( ctrl_r );
DECLARE_WRITE16_MEMBER( ctrl_w );
DECLARE_READ16_MEMBER( scroll_r );
DECLARE_WRITE16_MEMBER( scroll_w );
DECLARE_READ16_MEMBER( word_r );
DECLARE_WRITE16_MEMBER( word_w );
void tilemap_draw(bitmap_ind16 &bitmap, const rectangle &cliprect, int tmap_num, int plane);
// access to legacy token
void *token() const { assert(m_token != NULL); return m_token; }
protected:
// device-level overrides
virtual void device_config_complete();
virtual void device_start();
virtual void device_reset();
private:
private:
// internal state
void *m_token;
UINT16 m_ctrl[0x10];
UINT16 * m_ram;
UINT16 * m_scrollram;
tilemap_t *m_tilemap[3];
UINT16 m_bg_rambank[2], m_fg_rambank[2], m_tx_rambank;
UINT8 m_framebuffer_page;
UINT8 m_video_control;
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
TILE_GET_INFO_MEMBER(get_tx_tile_info);
void video_control( UINT8 data );
};
extern const device_type TC0180VCU;
@ -550,63 +633,4 @@ extern const device_type TC0180VCU;
MCFG_DEVICE_ADD(_tag, TC0180VCU, 0) \
MCFG_DEVICE_CONFIG(_interface)
/***************************************************************************
DEVICE I/O FUNCTIONS
***************************************************************************/
/** TC0480SCP **/
/* When writing a driver, pass zero for the text and flip offsets initially:
then tweak them once you have the 4 bg layer positions correct. Col_base
may be needed when tilemaps use a palette area from sprites. */
DECLARE_READ16_DEVICE_HANDLER( tc0480scp_word_r );
DECLARE_WRITE16_DEVICE_HANDLER( tc0480scp_word_w );
DECLARE_READ16_DEVICE_HANDLER( tc0480scp_ctrl_word_r );
DECLARE_WRITE16_DEVICE_HANDLER( tc0480scp_ctrl_word_w );
/* Functions for use with 68020 (Super-Z system) */
DECLARE_READ32_DEVICE_HANDLER( tc0480scp_long_r );
DECLARE_WRITE32_DEVICE_HANDLER( tc0480scp_long_w );
DECLARE_READ32_DEVICE_HANDLER( tc0480scp_ctrl_long_r );
DECLARE_WRITE32_DEVICE_HANDLER( tc0480scp_ctrl_long_w );
void tc0480scp_tilemap_update(device_t *device);
void tc0480scp_tilemap_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, UINT32 priority);
/* Returns the priority order of the bg tilemaps set in the internal
register. The order in which the four layers should be drawn is
returned in the lowest four nibbles (msn = bottom layer; lsn = top) */
int tc0480scp_get_bg_priority(device_t *device);
/* Undrfire needs to read this for a sprite/tile priority hack */
DECLARE_READ8_DEVICE_HANDLER( tc0480scp_pri_reg_r );
/** TC0150ROD **/
DECLARE_READ16_DEVICE_HANDLER( tc0150rod_word_r );
DECLARE_WRITE16_DEVICE_HANDLER( tc0150rod_word_w );
void tc0150rod_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs, int palette_offs, int type, int road_trans, UINT32 low_priority, UINT32 high_priority);
/** TC0110PCR **/
DECLARE_READ16_DEVICE_HANDLER( tc0110pcr_word_r );
DECLARE_WRITE16_DEVICE_HANDLER( tc0110pcr_word_w ); /* color index goes up in step of 2 */
DECLARE_WRITE16_DEVICE_HANDLER( tc0110pcr_step1_word_w ); /* color index goes up in step of 1 */
DECLARE_WRITE16_DEVICE_HANDLER( tc0110pcr_step1_rbswap_word_w ); /* swaps red and blue components */
DECLARE_WRITE16_DEVICE_HANDLER( tc0110pcr_step1_4bpg_word_w ); /* only 4 bits per color gun */
/** TC0180VCU **/
DECLARE_READ8_DEVICE_HANDLER( tc0180vcu_get_fb_page );
DECLARE_WRITE8_DEVICE_HANDLER( tc0180vcu_set_fb_page );
DECLARE_READ8_DEVICE_HANDLER( tc0180vcu_get_videoctrl );
DECLARE_READ16_DEVICE_HANDLER( tc0180vcu_ctrl_r );
DECLARE_WRITE16_DEVICE_HANDLER( tc0180vcu_ctrl_w );
DECLARE_READ16_DEVICE_HANDLER( tc0180vcu_scroll_r );
DECLARE_WRITE16_DEVICE_HANDLER( tc0180vcu_scroll_w );
DECLARE_READ16_DEVICE_HANDLER( tc0180vcu_word_r );
DECLARE_WRITE16_DEVICE_HANDLER( tc0180vcu_word_w );
void tc0180vcu_tilemap_draw(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int tmap_num, int plane);
#endif

View File

@ -1,5 +1,4 @@
#include "emu.h"
#include "video/taitoic.h"
#include "includes/undrfire.h"
@ -346,7 +345,6 @@ void undrfire_state::draw_sprites_cbombers(bitmap_ind16 &bitmap,const rectangle
UINT32 undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
device_t *tc0480scp = machine().device("tc0480scp");
address_space &space = machine().driver_data()->generic_space();
UINT8 layer[5];
UINT8 pivlayer[3];
@ -390,9 +388,9 @@ UINT32 undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_ind1
#endif
m_tc0100scn->tilemap_update();
tc0480scp_tilemap_update(tc0480scp);
m_tc0480scp->tilemap_update();
priority = tc0480scp_get_bg_priority(tc0480scp);
priority = m_tc0480scp->get_bg_priority();
layer[0] = (priority & 0xf000) >> 12; /* tells us which bg layer is bottom */
layer[1] = (priority & 0x0f00) >> 8;
@ -420,29 +418,29 @@ UINT32 undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_ind1
#ifdef MAME_DEBUG
if (m_dislayer[layer[0]]==0)
#endif
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[0], 0, 1);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[0], 0, 1);
#ifdef MAME_DEBUG
if (m_dislayer[layer[1]]==0)
#endif
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[1], 0, 2);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[1], 0, 2);
#ifdef MAME_DEBUG
if (m_dislayer[layer[2]]==0)
#endif
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[2], 0, 4);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[2], 0, 4);
#ifdef MAME_DEBUG
if (m_dislayer[layer[3]]==0)
#endif
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[3], 0, 8);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[3], 0, 8);
#ifdef MAME_DEBUG
if (m_dislayer[4]==0)
#endif
/* Sprites have variable priority (we kludge this on road levels) */
{
if ((tc0480scp_pri_reg_r(tc0480scp, space, 0) & 0x3) == 3) /* on road levels kludge sprites up 1 priority */
if ((m_tc0480scp->pri_reg_r(space, 0) & 0x3) == 3) /* on road levels kludge sprites up 1 priority */
{
static const int primasks[4] = {0xfff0, 0xff00, 0x0, 0x0};
draw_sprites(bitmap, cliprect, primasks, 44, -574);
@ -459,7 +457,7 @@ UINT32 undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_ind1
#endif
m_tc0100scn->tilemap_draw(bitmap, cliprect, pivlayer[2], 0, 0); /* piv text layer */
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[4], 0, 0); /* TC0480SCP text layer */
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[4], 0, 0); /* TC0480SCP text layer */
/* See if we should draw artificial gun targets */
/* (not yet implemented...) */
@ -488,7 +486,6 @@ UINT32 undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_ind1
UINT32 undrfire_state::screen_update_cbombers(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
device_t *tc0480scp = machine().device("tc0480scp");
address_space &space = machine().driver_data()->generic_space();
UINT8 layer[5];
UINT8 pivlayer[3];
@ -532,9 +529,9 @@ UINT32 undrfire_state::screen_update_cbombers(screen_device &screen, bitmap_ind1
#endif
m_tc0100scn->tilemap_update();
tc0480scp_tilemap_update(tc0480scp);
m_tc0480scp->tilemap_update();
priority = tc0480scp_get_bg_priority(tc0480scp);
priority = m_tc0480scp->get_bg_priority();
layer[0] = (priority & 0xf000) >> 12; /* tells us which bg layer is bottom */
layer[1] = (priority & 0x0f00) >> 8;
@ -562,29 +559,29 @@ UINT32 undrfire_state::screen_update_cbombers(screen_device &screen, bitmap_ind1
#ifdef MAME_DEBUG
if (m_dislayer[layer[0]]==0)
#endif
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[0], 0, 1);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[0], 0, 1);
#ifdef MAME_DEBUG
if (m_dislayer[layer[1]]==0)
#endif
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[1], 0, 2);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[1], 0, 2);
#ifdef MAME_DEBUG
if (m_dislayer[layer[2]]==0)
#endif
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[2], 0, 4);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[2], 0, 4);
#ifdef MAME_DEBUG
if (m_dislayer[layer[3]]==0)
#endif
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[3], 0, 8);
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[3], 0, 8);
#ifdef MAME_DEBUG
if (m_dislayer[4]==0)
#endif
/* Sprites have variable priority (we kludge this on road levels) */
{
if ((tc0480scp_pri_reg_r(tc0480scp, space, 0) & 0x3) == 3) /* on road levels kludge sprites up 1 priority */
if ((m_tc0480scp->pri_reg_r(space, 0) & 0x3) == 3) /* on road levels kludge sprites up 1 priority */
{
static const int primasks[4] = {0xfff0, 0xff00, 0x0, 0x0};
draw_sprites_cbombers(bitmap, cliprect, primasks, 80, -208);
@ -601,7 +598,7 @@ UINT32 undrfire_state::screen_update_cbombers(screen_device &screen, bitmap_ind1
#endif
m_tc0100scn->tilemap_draw(bitmap, cliprect, pivlayer[2], 0, 0); /* piv text layer */
tc0480scp_tilemap_draw(tc0480scp, bitmap, cliprect, layer[4], 0, 0); /* TC0480SCP text layer */
m_tc0480scp->tilemap_draw(bitmap, cliprect, layer[4], 0, 0); /* TC0480SCP text layer */
/* Enable this to see rotation (?) control words */
#if 0

View File

@ -1,5 +1,4 @@
#include "emu.h"
#include "video/taitoic.h"
#include "includes/warriorb.h"
/**********************************************************/