mirror of
https://github.com/holub/mame
synced 2025-04-25 09:50:04 +03:00
fix scrolling in godzilla (nw)
This commit is contained in:
parent
5033a590a3
commit
7ae39e007c
@ -85,10 +85,10 @@ static ADDRESS_MAP_START( legionna_map, AS_PROGRAM, 16, legionna_state )
|
||||
AM_RANGE(0x000000, 0x07ffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x1003ff) AM_RAM
|
||||
AM_RANGE(0x100400, 0x1007ff) AM_DEVREADWRITE("seibucop", seibu_cop_legacy_device, legionna_mcu_r, legionna_mcu_w) AM_SHARE("cop_mcu_ram") /* COP mcu */
|
||||
AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
AM_RANGE(0x102000, 0x1027ff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
AM_RANGE(0x102800, 0x1037ff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
AM_RANGE(0x102000, 0x1027ff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
AM_RANGE(0x102800, 0x1037ff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* palette xRRRRxGGGGxBBBBx ? */
|
||||
AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram")
|
||||
AM_RANGE(0x106000, 0x107fff) AM_RAM
|
||||
@ -100,10 +100,10 @@ static ADDRESS_MAP_START( heatbrl_map, AS_PROGRAM, 16, legionna_state )
|
||||
AM_RANGE(0x000000, 0x07ffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x1003ff) AM_RAM
|
||||
AM_RANGE(0x100400, 0x1007ff) AM_DEVREADWRITE("seibucop", seibu_cop_legacy_device, heatbrl_mcu_r, heatbrl_mcu_w) AM_SHARE("cop_mcu_ram") /* COP mcu */
|
||||
AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x100800, 0x100fff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
AM_RANGE(0x102000, 0x102fff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x103000, 0x103fff) AM_RAM AM_SHARE("spriteram")
|
||||
AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0x108000, 0x11ffff) AM_RAM
|
||||
@ -114,10 +114,10 @@ static ADDRESS_MAP_START( godzilla_map, AS_PROGRAM, 16, legionna_state )
|
||||
AM_RANGE(0x100000, 0x1003ff) AM_RAM
|
||||
AM_RANGE(0x100400, 0x1007ff) AM_DEVREADWRITE("seibucop", seibu_cop_legacy_device, godzilla_mcu_r, godzilla_mcu_w) AM_SHARE("cop_mcu_ram") /* COP mcu */
|
||||
AM_RANGE(0x100800, 0x100fff) AM_RAM
|
||||
AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
AM_RANGE(0x102000, 0x1027ff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
AM_RANGE(0x102800, 0x1037ff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
AM_RANGE(0x102000, 0x1027ff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
AM_RANGE(0x102800, 0x1037ff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x103800, 0x103fff) AM_RAM // check?
|
||||
AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram")
|
||||
@ -139,10 +139,10 @@ static ADDRESS_MAP_START( denjinmk_map, AS_PROGRAM, 16, legionna_state )
|
||||
AM_RANGE(0x100000, 0x1003ff) AM_RAM
|
||||
AM_RANGE(0x100400, 0x1007ff) AM_DEVREADWRITE("seibucop", seibu_cop_legacy_device, denjinmk_mcu_r, denjinmk_mcu_w) AM_SHARE("cop_mcu_ram") /* COP mcu */
|
||||
AM_RANGE(0x100800, 0x100fff) AM_RAM
|
||||
AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
AM_RANGE(0x102000, 0x1027ff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
AM_RANGE(0x102800, 0x103fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
AM_RANGE(0x102000, 0x1027ff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
AM_RANGE(0x102800, 0x103fff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(denjin_paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("palette")
|
||||
AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram")
|
||||
AM_RANGE(0x106000, 0x107fff) AM_RAM
|
||||
@ -155,10 +155,10 @@ static ADDRESS_MAP_START( grainbow_map, AS_PROGRAM, 16, legionna_state )
|
||||
AM_RANGE(0x000000, 0x0fffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x1003ff) AM_RAM
|
||||
AM_RANGE(0x100400, 0x1007ff) AM_DEVREADWRITE("seibucop", seibu_cop_legacy_device, grainbow_mcu_r, grainbow_mcu_w) AM_SHARE("cop_mcu_ram") /* COP mcu */
|
||||
AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x100800, 0x100fff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
AM_RANGE(0x102000, 0x102fff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x103000, 0x103fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0x104000, 0x104fff) AM_RAM//_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0x105000, 0x105fff) AM_RAM
|
||||
@ -171,10 +171,10 @@ static ADDRESS_MAP_START( cupsoc_mem, AS_PROGRAM, 16, legionna_state )
|
||||
AM_RANGE(0x000000, 0x0fffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x1003ff) AM_RAM
|
||||
AM_RANGE(0x100400, 0x1007ff) AM_DEVREADWRITE("seibucop", seibu_cop_legacy_device, cupsoc_mcu_r,cupsoc_mcu_w) AM_SHARE("cop_mcu_ram")
|
||||
AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x100800, 0x100fff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
AM_RANGE(0x102000, 0x102fff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x103000, 0x103fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0x104000, 0x104fff) AM_RAM
|
||||
AM_RANGE(0x105000, 0x106fff) AM_RAM
|
||||
@ -190,10 +190,10 @@ static ADDRESS_MAP_START( cupsocs_mem, AS_PROGRAM, 16, legionna_state )
|
||||
AM_RANGE(0x000000, 0x0fffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x1003ff) AM_RAM
|
||||
AM_RANGE(0x100400, 0x1007ff) AM_DEVREADWRITE("seibucop", seibu_cop_legacy_device, cupsocs_mcu_r,cupsocs_mcu_w) AM_SHARE("cop_mcu_ram")
|
||||
AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x100800, 0x100fff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
AM_RANGE(0x102000, 0x102fff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x103000, 0x103fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0x104000, 0x104fff) AM_RAM
|
||||
AM_RANGE(0x105000, 0x106fff) AM_RAM
|
||||
@ -209,10 +209,10 @@ static ADDRESS_MAP_START( cupsocbl_mem, AS_PROGRAM, 16, legionna_state )
|
||||
AM_RANGE(0x000000, 0x0fffff) AM_ROM
|
||||
//AM_RANGE(0x100000, 0x1003ff) AM_RAM
|
||||
AM_RANGE(0x100000, 0x1007ff) AM_DEVREADWRITE("seibucop", seibu_cop_legacy_device, copdxbl_0_r,copdxbl_0_w) AM_SHARE("cop_mcu_ram")
|
||||
AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x100800, 0x100fff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
AM_RANGE(0x102000, 0x102fff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
AM_RANGE(0x103000, 0x103fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0x104000, 0x104fff) AM_RAM
|
||||
AM_RANGE(0x105000, 0x106fff) AM_RAM
|
||||
@ -1066,6 +1066,7 @@ static MACHINE_CONFIG_START( legionna, legionna_state )
|
||||
SEIBU_SOUND_SYSTEM_CPU(14318180/4)
|
||||
|
||||
MCFG_SEIBU_COP_ADD("seibucop")
|
||||
MCFG_VIDEORAM_OUT_CB(WRITE16(legionna_state, videowrite_cb_w))
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -1097,6 +1098,7 @@ static MACHINE_CONFIG_START( heatbrl, legionna_state )
|
||||
SEIBU_SOUND_SYSTEM_CPU(14318180/4)
|
||||
|
||||
MCFG_SEIBU_COP_ADD("seibucop")
|
||||
MCFG_VIDEORAM_OUT_CB(WRITE16(legionna_state, videowrite_cb_w))
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -1128,6 +1130,7 @@ static MACHINE_CONFIG_START( godzilla, legionna_state )
|
||||
SEIBU2_SOUND_SYSTEM_CPU(14318180/4)
|
||||
|
||||
MCFG_SEIBU_COP_ADD("seibucop")
|
||||
MCFG_VIDEORAM_OUT_CB(WRITE16(legionna_state, videowrite_cb_w))
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -1160,6 +1163,7 @@ static MACHINE_CONFIG_START( denjinmk, legionna_state )
|
||||
SEIBU2_SOUND_SYSTEM_CPU(14318180/4)
|
||||
|
||||
MCFG_SEIBU_COP_ADD("seibucop")
|
||||
MCFG_VIDEORAM_OUT_CB(WRITE16(legionna_state, videowrite_cb_w))
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -1191,6 +1195,7 @@ static MACHINE_CONFIG_START( grainbow, legionna_state )
|
||||
SEIBU2_SOUND_SYSTEM_CPU(14318180/4)
|
||||
|
||||
MCFG_SEIBU_COP_ADD("seibucop")
|
||||
MCFG_VIDEORAM_OUT_CB(WRITE16(legionna_state, videowrite_cb_w))
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -1223,6 +1228,7 @@ static MACHINE_CONFIG_START( cupsoc, legionna_state )
|
||||
SEIBU_SOUND_SYSTEM_CPU(14318180/4)
|
||||
|
||||
MCFG_SEIBU_COP_ADD("seibucop")
|
||||
MCFG_VIDEORAM_OUT_CB(WRITE16(legionna_state, videowrite_cb_w))
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -1257,6 +1263,7 @@ static MACHINE_CONFIG_START( cupsocbl, legionna_state )
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", legionna_state, irq4_line_hold) /* VBL */
|
||||
|
||||
MCFG_SEIBU_COP_ADD("seibucop")
|
||||
MCFG_VIDEORAM_OUT_CB(WRITE16(legionna_state, videowrite_cb_w))
|
||||
|
||||
/*Different Sound hardware*/
|
||||
//SEIBU_SOUND_SYSTEM_CPU(14318180/4)
|
||||
|
@ -6,10 +6,10 @@ public:
|
||||
legionna_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_back_data(*this, "back_data"),
|
||||
/*m_back_data(*this, "back_data"),
|
||||
m_fore_data(*this, "fore_data"),
|
||||
m_mid_data(*this, "mid_data"),
|
||||
m_textram(*this, "textram"),
|
||||
m_textram(*this, "textram"),*/
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_oki(*this, "oki"),
|
||||
@ -17,10 +17,10 @@ public:
|
||||
m_palette(*this, "palette") { }
|
||||
|
||||
required_shared_ptr<UINT16> m_spriteram;
|
||||
required_shared_ptr<UINT16> m_back_data;
|
||||
required_shared_ptr<UINT16> m_fore_data;
|
||||
required_shared_ptr<UINT16> m_mid_data;
|
||||
required_shared_ptr<UINT16> m_textram;
|
||||
UINT16* m_back_data;
|
||||
UINT16* m_fore_data;
|
||||
UINT16* m_mid_data;
|
||||
UINT16* m_textram;
|
||||
UINT16 *m_scrollram16;
|
||||
UINT16 m_layer_disable;
|
||||
int m_sprite_xoffs;
|
||||
@ -35,6 +35,7 @@ public:
|
||||
UINT16 m_fore_gfx_bank;
|
||||
UINT16 m_mid_gfx_bank;
|
||||
|
||||
DECLARE_WRITE16_MEMBER(videowrite_cb_w);
|
||||
DECLARE_WRITE16_MEMBER(denjin_paletteram16_xBBBBBGGGGGRRRRR_word_w);
|
||||
DECLARE_WRITE16_MEMBER(legionna_background_w);
|
||||
DECLARE_WRITE16_MEMBER(legionna_midground_w);
|
||||
|
@ -1639,7 +1639,8 @@ seibu_cop_legacy_device::seibu_cop_legacy_device(const machine_config &mconfig,
|
||||
m_cop_sprite_dma_abs_x(0),
|
||||
m_cop_sprite_dma_abs_y(0),
|
||||
m_cop_sprite_dma_size(0),
|
||||
m_cop_sprite_dma_param(0)
|
||||
m_cop_sprite_dma_param(0),
|
||||
m_videoramout_cb(*this)
|
||||
{
|
||||
memset(m_copd2_table, 0, sizeof(UINT16)*0x100);
|
||||
memset(m_copd2_table_2, 0, sizeof(UINT16)*0x100/8);
|
||||
@ -1673,6 +1674,7 @@ void seibu_cop_legacy_device::device_config_complete()
|
||||
void seibu_cop_legacy_device::device_start()
|
||||
{
|
||||
m_cop_mcu_ram = reinterpret_cast<UINT16 *>(machine().root_device().memshare("cop_mcu_ram")->ptr());
|
||||
m_videoramout_cb.resolve_safe();
|
||||
|
||||
save_item(NAME(m_cop_438));
|
||||
save_item(NAME(m_cop_43a));
|
||||
@ -3084,6 +3086,7 @@ WRITE16_MEMBER( seibu_cop_legacy_device::generic_cop_w )
|
||||
case (0x2fc/2):
|
||||
{
|
||||
//seibu_cop_log("%06x: COPX execute current layer clear??? %04x\n", space.device().safe_pc(), data);
|
||||
//printf("SRC: %08x %08x DST:%08x SIZE:%08x TRIGGER: %08x\n",m_cop_dma_src[m_cop_dma_trigger] << 6,m_cop_dma_fade_table,m_cop_dma_dst[m_cop_dma_trigger] << 6,m_cop_dma_size[m_cop_dma_trigger] << 5,m_cop_dma_trigger);
|
||||
|
||||
if (m_cop_dma_trigger >= 0x80 && m_cop_dma_trigger <= 0x87)
|
||||
{
|
||||
@ -3234,8 +3237,28 @@ WRITE16_MEMBER( seibu_cop_legacy_device::generic_cop_w )
|
||||
return;
|
||||
}
|
||||
|
||||
/* private buffer copies */
|
||||
if ((m_cop_dma_trigger==0x14) || (m_cop_dma_trigger==0x15))
|
||||
/* private buffer copies - tilemaps */
|
||||
if (m_cop_dma_trigger == 0x14)
|
||||
{
|
||||
// AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
// AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
// AM_RANGE(0x102000, 0x1027ff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
// AM_RANGE(0x102800, 0x1037ff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
int src = m_cop_dma_src[m_cop_dma_trigger] << 6;
|
||||
|
||||
for (int i = 0; i < 0x2800 /2; i++)
|
||||
{
|
||||
UINT16 tileval = space.read_word(src);
|
||||
//printf("reading source %04x (data is %04x)\n", src, data);
|
||||
src += 2;
|
||||
m_videoramout_cb(space, i, tileval, 0xffff);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/* privaet buffer copy - sprites? */
|
||||
if (m_cop_dma_trigger==0x15)
|
||||
return;
|
||||
|
||||
printf("SRC: %08x %08x DST:%08x SIZE:%08x TRIGGER: %08x\n",m_cop_dma_src[m_cop_dma_trigger] << 6,m_cop_dma_fade_table,m_cop_dma_dst[m_cop_dma_trigger] << 6,m_cop_dma_size[m_cop_dma_trigger] << 5,m_cop_dma_trigger);
|
||||
|
@ -18,6 +18,9 @@ struct collision_info
|
||||
UINT16 hitbox_x,hitbox_y;
|
||||
};
|
||||
|
||||
#define MCFG_VIDEORAM_OUT_CB(_devcb) \
|
||||
devcb = &seibu_cop_legacy_device::set_m_videoramout_cb(*device, DEVCB_##_devcb);
|
||||
|
||||
class seibu_cop_legacy_device : public device_t
|
||||
{
|
||||
public:
|
||||
@ -43,6 +46,7 @@ seibu_cop_legacy_device(const machine_config &mconfig, const char *tag, device_t
|
||||
|
||||
//DECLARE_READ16_MEMBER( raiden2_mcu_r ); unused
|
||||
//DECLARE_WRITE16_MEMBER( raiden2_mcu_w ); unused
|
||||
template<class _Object> static devcb_base &set_m_videoramout_cb(device_t &device, _Object object) { return downcast<seibu_cop_legacy_device &>(device).m_videoramout_cb.set_callback(object); }
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
@ -92,6 +96,8 @@ private:
|
||||
UINT8 cop_calculate_collsion_detection();
|
||||
DECLARE_READ16_MEMBER( generic_cop_r );
|
||||
DECLARE_WRITE16_MEMBER( generic_cop_w );
|
||||
devcb_write16 m_videoramout_cb;
|
||||
|
||||
};
|
||||
|
||||
extern const device_type SEIBU_COP_LEGACY;
|
||||
|
@ -40,6 +40,34 @@ void denjinmk_setgfxbank(running_machine &machine, UINT16 data)
|
||||
state->m_text_layer->mark_all_dirty();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(legionna_state::videowrite_cb_w)
|
||||
{
|
||||
// AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data")
|
||||
// AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data")
|
||||
// AM_RANGE(0x102000, 0x1027ff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data")
|
||||
// AM_RANGE(0x102800, 0x1037ff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram")
|
||||
|
||||
if (offset < 0x800 / 2)
|
||||
{
|
||||
legionna_background_w(space, offset, data, 0xffff);
|
||||
}
|
||||
else if (offset < 0x1000 /2)
|
||||
{
|
||||
offset -= 0x800 / 2;
|
||||
legionna_foreground_w(space, offset, data, 0xffff);
|
||||
}
|
||||
else if (offset < 0x1800/2)
|
||||
{
|
||||
offset -= 0x1000 / 2;
|
||||
legionna_midground_w(space, offset, data, 0xffff);
|
||||
}
|
||||
else if (offset < 0x2800/2)
|
||||
{
|
||||
offset -= 0x1800 / 2;
|
||||
legionna_text_w(space, offset, data, 0xffff);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(legionna_state::legionna_background_w)
|
||||
{
|
||||
COMBINE_DATA(&m_back_data[offset]);
|
||||
@ -141,8 +169,16 @@ TILE_GET_INFO_MEMBER(legionna_state::get_text_tile_info)
|
||||
SET_TILE_INFO_MEMBER(0,tile,color,0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
VIDEO_START_MEMBER(legionna_state,legionna)
|
||||
{
|
||||
|
||||
m_back_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
|
||||
m_fore_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
|
||||
m_mid_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
|
||||
m_textram = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
|
||||
|
||||
m_background_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_back_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_foreground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_fore_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_midground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_mid_tile_info),this), TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
@ -163,6 +199,12 @@ VIDEO_START_MEMBER(legionna_state,legionna)
|
||||
|
||||
VIDEO_START_MEMBER(legionna_state,denjinmk)
|
||||
{
|
||||
|
||||
m_back_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
|
||||
m_fore_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
|
||||
m_mid_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
|
||||
m_textram = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
|
||||
|
||||
m_background_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_back_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_foreground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_fore_tile_info_denji),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_midground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_mid_tile_info_denji),this), TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
@ -183,6 +225,11 @@ VIDEO_START_MEMBER(legionna_state,denjinmk)
|
||||
|
||||
VIDEO_START_MEMBER(legionna_state,cupsoc)
|
||||
{
|
||||
m_back_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
|
||||
m_fore_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
|
||||
m_mid_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
|
||||
m_textram = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
|
||||
|
||||
m_background_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_back_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_foreground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_fore_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_midground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_mid_tile_info_cupsoc),this), TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
|
Loading…
Reference in New Issue
Block a user