mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
Modernization of the remainder of taitoic as well as the deco_bac06 device. [Osso]
This commit is contained in:
parent
9c0f86cc14
commit
bbdb97179a
@ -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);
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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 )
|
||||
|
@ -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)
|
||||
|
@ -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")
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include "sound/flt_vol.h"
|
||||
#include "audio/taitosnd.h"
|
||||
#include "machine/taitoio.h"
|
||||
#include "video/taitoic.h"
|
||||
|
||||
struct othunder_tempsprite
|
||||
{
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
#include "emu.h"
|
||||
#include "video/taitoic.h"
|
||||
#include "includes/ninjaw.h"
|
||||
|
||||
/**********************************************************/
|
||||
|
@ -1,5 +1,4 @@
|
||||
#include "emu.h"
|
||||
#include "video/taitoic.h"
|
||||
#include "includes/othunder.h"
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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());
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
@ -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
|
||||
|
@ -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
|
||||
|
@ -1,5 +1,4 @@
|
||||
#include "emu.h"
|
||||
#include "video/taitoic.h"
|
||||
#include "includes/warriorb.h"
|
||||
|
||||
/**********************************************************/
|
||||
|
Loading…
Reference in New Issue
Block a user