mirror of
https://github.com/holub/mame
synced 2025-05-23 06:08:48 +03:00
Converted Tattoo Assassins (and Night Slashers) to use deco16ic.c, fixing some corrupt graphics in Tattoo Assassins (which have been there since it was first added) [David Haywood]
This commit is contained in:
parent
719bac990c
commit
1f899f4559
@ -264,6 +264,7 @@ static const deco16ic_interface fghthist_deco16ic_intf =
|
||||
};
|
||||
|
||||
|
||||
#if 0
|
||||
static WRITE32_HANDLER( deco32_pf12_control_w )
|
||||
{
|
||||
deco32_state *state = space->machine->driver_data<deco32_state>();
|
||||
@ -278,7 +279,7 @@ static WRITE32_HANDLER( deco32_pf34_control_w )
|
||||
COMBINE_DATA(&state->pf34_control[offset]);
|
||||
space->machine->primary_screen->update_partial(space->machine->primary_screen->vpos());
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
static TIMER_DEVICE_CALLBACK( interrupt_gen )
|
||||
@ -729,16 +730,11 @@ static WRITE32_HANDLER( deco32_buffer_spriteram2_w )
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static READ32_HANDLER( deco32_pf1_rowscroll_r ) { deco32_state *state = space->machine->driver_data<deco32_state>(); return state->pf1_rowscroll[offset] ^ 0xffff0000; }
|
||||
static READ32_HANDLER( deco32_pf2_rowscroll_r ) { deco32_state *state = space->machine->driver_data<deco32_state>(); return state->pf2_rowscroll[offset] ^ 0xffff0000; }
|
||||
static READ32_HANDLER( deco32_pf3_rowscroll_r ) { deco32_state *state = space->machine->driver_data<deco32_state>(); return state->pf3_rowscroll[offset] ^ 0xffff0000; }
|
||||
static READ32_HANDLER( deco32_pf4_rowscroll_r ) { deco32_state *state = space->machine->driver_data<deco32_state>(); return state->pf4_rowscroll[offset] ^ 0xffff0000; }
|
||||
static WRITE32_HANDLER( deco32_pf1_rowscroll_w ) { deco32_state *state = space->machine->driver_data<deco32_state>(); data &= 0x0000ffff; mem_mask &= 0x0000ffff; COMBINE_DATA(&state->pf1_rowscroll[offset]); }
|
||||
static WRITE32_HANDLER( deco32_pf2_rowscroll_w ) { deco32_state *state = space->machine->driver_data<deco32_state>(); data &= 0x0000ffff; mem_mask &= 0x0000ffff; COMBINE_DATA(&state->pf2_rowscroll[offset]); }
|
||||
static WRITE32_HANDLER( deco32_pf3_rowscroll_w ) { deco32_state *state = space->machine->driver_data<deco32_state>(); data &= 0x0000ffff; mem_mask &= 0x0000ffff; COMBINE_DATA(&state->pf3_rowscroll[offset]); }
|
||||
static WRITE32_HANDLER( deco32_pf4_rowscroll_w ) { deco32_state *state = space->machine->driver_data<deco32_state>(); data &= 0x0000ffff; mem_mask &= 0x0000ffff; COMBINE_DATA(&state->pf4_rowscroll[offset]); }
|
||||
// tattass tests these as 32-bit ram, even if only 16-bits are hooked up to the tilemap chip - does it mirror parts of the dword?
|
||||
static WRITE32_HANDLER( deco32_pf1_rowscroll_w ) { deco32_state *state = space->machine->driver_data<deco32_state>(); COMBINE_DATA(&state->pf1_rowscroll32[offset]); data &= 0x0000ffff; mem_mask &= 0x0000ffff; COMBINE_DATA(&state->pf1_rowscroll[offset]); }
|
||||
static WRITE32_HANDLER( deco32_pf2_rowscroll_w ) { deco32_state *state = space->machine->driver_data<deco32_state>(); COMBINE_DATA(&state->pf2_rowscroll32[offset]); data &= 0x0000ffff; mem_mask &= 0x0000ffff; COMBINE_DATA(&state->pf2_rowscroll[offset]); }
|
||||
static WRITE32_HANDLER( deco32_pf3_rowscroll_w ) { deco32_state *state = space->machine->driver_data<deco32_state>(); COMBINE_DATA(&state->pf3_rowscroll32[offset]); data &= 0x0000ffff; mem_mask &= 0x0000ffff; COMBINE_DATA(&state->pf3_rowscroll[offset]); }
|
||||
static WRITE32_HANDLER( deco32_pf4_rowscroll_w ) { deco32_state *state = space->machine->driver_data<deco32_state>(); COMBINE_DATA(&state->pf4_rowscroll32[offset]); data &= 0x0000ffff; mem_mask &= 0x0000ffff; COMBINE_DATA(&state->pf4_rowscroll[offset]); }
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( captaven_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
@ -763,14 +759,14 @@ static ADDRESS_MAP_START( captaven_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x190000, 0x191fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
|
||||
AM_RANGE(0x192000, 0x193fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w) /* Mirror address - bug in program code */
|
||||
AM_RANGE(0x194000, 0x195fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
|
||||
AM_RANGE(0x1a0000, 0x1a1fff) AM_READWRITE(deco32_pf1_rowscroll_r, deco32_pf1_rowscroll_w)
|
||||
AM_RANGE(0x1a4000, 0x1a5fff) AM_READWRITE(deco32_pf2_rowscroll_r, deco32_pf2_rowscroll_w)
|
||||
AM_RANGE(0x1a0000, 0x1a3fff) AM_RAM_WRITE(deco32_pf1_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf1_rowscroll32)
|
||||
AM_RANGE(0x1a4000, 0x1a5fff) AM_RAM_WRITE(deco32_pf2_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf2_rowscroll32)
|
||||
|
||||
AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf34_control_dword_r, deco16ic_pf34_control_dword_w)
|
||||
AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_dword_r, deco16ic_pf3_data_dword_w)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_dword_r, deco16ic_pf4_data_dword_w) // unused
|
||||
AM_RANGE(0x1e0000, 0x1e1fff) AM_READWRITE(deco32_pf3_rowscroll_r, deco32_pf3_rowscroll_w)
|
||||
AM_RANGE(0x1e4000, 0x1e5fff) AM_READWRITE(deco32_pf4_rowscroll_r, deco32_pf4_rowscroll_w) // unused
|
||||
AM_RANGE(0x1e0000, 0x1e3fff) AM_RAM_WRITE(deco32_pf3_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf3_rowscroll32)
|
||||
AM_RANGE(0x1e4000, 0x1e5fff) AM_RAM_WRITE(deco32_pf4_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf4_rowscroll32) // unused
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -792,14 +788,14 @@ static ADDRESS_MAP_START( fghthist_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
|
||||
AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
|
||||
AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
|
||||
AM_RANGE(0x192000, 0x192fff) AM_READWRITE(deco32_pf1_rowscroll_r, deco32_pf1_rowscroll_w)
|
||||
AM_RANGE(0x194000, 0x194fff) AM_READWRITE(deco32_pf2_rowscroll_r, deco32_pf2_rowscroll_w)
|
||||
AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(deco32_pf1_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf1_rowscroll32)
|
||||
AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(deco32_pf2_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf2_rowscroll32)
|
||||
AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
|
||||
AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_dword_r, deco16ic_pf3_data_dword_w)
|
||||
AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_dword_r, deco16ic_pf4_data_dword_w)
|
||||
AM_RANGE(0x1d2000, 0x1d2fff) AM_READWRITE(deco32_pf3_rowscroll_r, deco32_pf3_rowscroll_w)
|
||||
AM_RANGE(0x1d4000, 0x1d4fff) AM_READWRITE(deco32_pf4_rowscroll_r, deco32_pf4_rowscroll_w)
|
||||
AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(deco32_pf3_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf3_rowscroll32)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(deco32_pf4_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf4_rowscroll32)
|
||||
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf34_control_dword_r, deco16ic_pf34_control_dword_w)
|
||||
|
||||
AM_RANGE(0x16c000, 0x16c01f) AM_READNOP
|
||||
@ -825,14 +821,14 @@ static ADDRESS_MAP_START( fghthsta_memmap, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
|
||||
AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
|
||||
AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
|
||||
AM_RANGE(0x192000, 0x192fff) AM_READWRITE(deco32_pf1_rowscroll_r, deco32_pf1_rowscroll_w)
|
||||
AM_RANGE(0x194000, 0x194fff) AM_READWRITE(deco32_pf2_rowscroll_r, deco32_pf2_rowscroll_w)
|
||||
AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(deco32_pf1_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf1_rowscroll32)
|
||||
AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(deco32_pf2_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf2_rowscroll32)
|
||||
AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
|
||||
AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_dword_r, deco16ic_pf3_data_dword_w)
|
||||
AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_dword_r, deco16ic_pf4_data_dword_w)
|
||||
AM_RANGE(0x1d2000, 0x1d2fff) AM_READWRITE(deco32_pf3_rowscroll_r, deco32_pf3_rowscroll_w)
|
||||
AM_RANGE(0x1d4000, 0x1d4fff) AM_READWRITE(deco32_pf4_rowscroll_r, deco32_pf4_rowscroll_w)
|
||||
AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(deco32_pf3_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf3_rowscroll32)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(deco32_pf4_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf4_rowscroll32)
|
||||
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf34_control_dword_r, deco16ic_pf34_control_dword_w)
|
||||
|
||||
AM_RANGE(0x200000, 0x200fff) AM_READWRITE(deco16_146_fghthist_prot_r, deco16_146_fghthist_prot_w) AM_BASE(&deco32_prot_ram)
|
||||
@ -967,17 +963,17 @@ static ADDRESS_MAP_START( tattass_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x17c010, 0x17c013) AM_WRITE(deco32_buffer_spriteram2_w)
|
||||
AM_RANGE(0x17c018, 0x17c01b) AM_WRITENOP /* Sprite 'CPU' (unused) */
|
||||
|
||||
AM_RANGE(0x182000, 0x183fff) AM_RAM_WRITE(deco32_pf1_data_w) AM_BASE_MEMBER(deco32_state, pf1_data)
|
||||
AM_RANGE(0x184000, 0x185fff) AM_RAM_WRITE(deco32_pf2_data_w) AM_BASE_MEMBER(deco32_state, pf2_data)
|
||||
AM_RANGE(0x192000, 0x193fff) AM_RAM AM_BASE_MEMBER(deco32_state, pf1_rowscroll32)
|
||||
AM_RANGE(0x194000, 0x195fff) AM_RAM AM_BASE_MEMBER(deco32_state, pf2_rowscroll32)
|
||||
AM_RANGE(0x1a0000, 0x1a001f) AM_RAM_WRITE(deco32_pf12_control_w) AM_BASE_MEMBER(deco32_state, pf12_control)
|
||||
AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
|
||||
AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
|
||||
AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(deco32_pf1_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf1_rowscroll32)
|
||||
AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(deco32_pf2_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf2_rowscroll32)
|
||||
AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
|
||||
AM_RANGE(0x1c2000, 0x1c3fff) AM_RAM_WRITE(deco32_pf3_data_w) AM_BASE_MEMBER(deco32_state, pf3_data)
|
||||
AM_RANGE(0x1c4000, 0x1c5fff) AM_RAM_WRITE(deco32_pf4_data_w) AM_BASE_MEMBER(deco32_state, pf4_data)
|
||||
AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM AM_BASE_MEMBER(deco32_state, pf3_rowscroll32)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM AM_BASE_MEMBER(deco32_state, pf4_rowscroll32)
|
||||
AM_RANGE(0x1e0000, 0x1e001f) AM_RAM_WRITE(deco32_pf34_control_w) AM_BASE_MEMBER(deco32_state, pf34_control)
|
||||
AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_dword_r, deco16ic_pf3_data_dword_w)
|
||||
AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_dword_r, deco16ic_pf4_data_dword_w)
|
||||
AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(deco32_pf3_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf3_rowscroll32)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(deco32_pf4_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf4_rowscroll32)
|
||||
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf34_control_dword_r, deco16ic_pf34_control_dword_w)
|
||||
|
||||
AM_RANGE(0x200000, 0x200fff) AM_READWRITE(tattass_prot_r, tattass_prot_w) AM_BASE(&deco32_prot_ram)
|
||||
ADDRESS_MAP_END
|
||||
@ -1008,17 +1004,17 @@ static ADDRESS_MAP_START( nslasher_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x17c010, 0x17c013) AM_WRITE(deco32_buffer_spriteram2_w)
|
||||
AM_RANGE(0x17c018, 0x17c01b) AM_WRITENOP /* Sprite 'CPU' (unused) */
|
||||
|
||||
AM_RANGE(0x182000, 0x183fff) AM_RAM_WRITE(deco32_pf1_data_w) AM_BASE_MEMBER(deco32_state, pf1_data)
|
||||
AM_RANGE(0x184000, 0x185fff) AM_RAM_WRITE(deco32_pf2_data_w) AM_BASE_MEMBER(deco32_state, pf2_data)
|
||||
AM_RANGE(0x192000, 0x193fff) AM_RAM AM_BASE_MEMBER(deco32_state, pf1_rowscroll32)
|
||||
AM_RANGE(0x194000, 0x195fff) AM_RAM AM_BASE_MEMBER(deco32_state, pf2_rowscroll32)
|
||||
AM_RANGE(0x1a0000, 0x1a001f) AM_RAM_WRITE(deco32_pf12_control_w) AM_BASE_MEMBER(deco32_state, pf12_control)
|
||||
AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
|
||||
AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
|
||||
AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(deco32_pf1_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf1_rowscroll32)
|
||||
AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(deco32_pf2_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf2_rowscroll32)
|
||||
AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
|
||||
AM_RANGE(0x1c2000, 0x1c3fff) AM_RAM_WRITE(deco32_pf3_data_w) AM_BASE_MEMBER(deco32_state, pf3_data)
|
||||
AM_RANGE(0x1c4000, 0x1c5fff) AM_RAM_WRITE(deco32_pf4_data_w) AM_BASE_MEMBER(deco32_state, pf4_data)
|
||||
AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM AM_BASE_MEMBER(deco32_state, pf3_rowscroll32)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM AM_BASE_MEMBER(deco32_state, pf4_rowscroll32)
|
||||
AM_RANGE(0x1e0000, 0x1e001f) AM_RAM_WRITE(deco32_pf34_control_w) AM_BASE_MEMBER(deco32_state, pf34_control)
|
||||
AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_dword_r, deco16ic_pf3_data_dword_w)
|
||||
AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_dword_r, deco16ic_pf4_data_dword_w)
|
||||
AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(deco32_pf3_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf3_rowscroll32)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(deco32_pf4_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf4_rowscroll32)
|
||||
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf34_control_dword_r, deco16ic_pf34_control_dword_w)
|
||||
|
||||
AM_RANGE(0x200000, 0x200fff) AM_READWRITE(nslasher_prot_r, nslasher_prot_w) AM_BASE(&deco32_prot_ram)
|
||||
ADDRESS_MAP_END
|
||||
@ -1666,17 +1662,17 @@ static GFXDECODE_START( dragngun )
|
||||
GFXDECODE_END
|
||||
|
||||
static GFXDECODE_START( tattass )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 32 ) /* Characters 8x8 */
|
||||
GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 32 ) /* Tiles 16x16 */
|
||||
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 512, 32 ) /* Tiles 16x16 */
|
||||
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 128 ) /* Characters 8x8 */
|
||||
GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 128 ) /* Tiles 16x16 */
|
||||
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 128 ) /* Tiles 16x16 */
|
||||
GFXDECODE_ENTRY( "gfx3", 0, spritelayout_5bpp_alt, 1536, 16 ) /* Sprites 16x16 */
|
||||
GFXDECODE_ENTRY( "gfx4", 0, spritelayout, 1024+256, 32 ) /* Sprites 16x16 */
|
||||
GFXDECODE_END
|
||||
|
||||
static GFXDECODE_START( nslasher )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 32 ) /* Characters 8x8 */
|
||||
GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 32 ) /* Tiles 16x16 */
|
||||
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 512, 32 ) /* Tiles 16x16 */
|
||||
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 128 ) /* Characters 8x8 */
|
||||
GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 128 ) /* Tiles 16x16 */
|
||||
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 128 ) /* Tiles 16x16 */
|
||||
GFXDECODE_ENTRY( "gfx3", 0, spritelayout_5bpp,1024, 16 ) /* Sprites 16x16 */
|
||||
GFXDECODE_ENTRY( "gfx4", 0, spritelayout, 1536, 32 ) /* Sprites 16x16 */
|
||||
GFXDECODE_END
|
||||
@ -2036,6 +2032,27 @@ static MACHINE_CONFIG_START( lockload, deco32_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static int tattass_bank_callback( int bank )
|
||||
{
|
||||
bank = bank >> 4;
|
||||
return bank * 0x1000;
|
||||
}
|
||||
|
||||
static const deco16ic_interface tattass_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x00, 0x10, 0x20, 0x30, /* color base */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
tattass_bank_callback,
|
||||
tattass_bank_callback,
|
||||
tattass_bank_callback,
|
||||
tattass_bank_callback
|
||||
};
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( tattass, deco32_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -2057,6 +2074,8 @@ static MACHINE_CONFIG_START( tattass, deco32_state )
|
||||
|
||||
MCFG_SCREEN_UPDATE(nslasher)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", tattass_deco16ic_intf)
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen1", decospr_, 0)
|
||||
decospr_device_config::set_gfx_region(device, 3);
|
||||
|
||||
@ -2100,6 +2119,8 @@ static MACHINE_CONFIG_START( nslasher, deco32_state )
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
|
||||
MCFG_SCREEN_UPDATE(nslasher)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", tattass_deco16ic_intf)
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen1", decospr_, 0)
|
||||
decospr_device_config::set_gfx_region(device, 3);
|
||||
|
||||
|
@ -63,10 +63,12 @@ public:
|
||||
UINT16 spriteram16_buffered[0x1000];
|
||||
UINT16 spriteram16_2[0x1000];
|
||||
UINT16 spriteram16_2_buffered[0x1000];
|
||||
UINT16 pf1_rowscroll[0x0800/2];
|
||||
UINT16 pf2_rowscroll[0x0800/2];
|
||||
UINT16 pf3_rowscroll[0x0800/2];
|
||||
UINT16 pf4_rowscroll[0x0800/2];
|
||||
UINT16 pf1_rowscroll[0x1000];
|
||||
UINT16 pf2_rowscroll[0x1000];
|
||||
UINT16 pf3_rowscroll[0x1000];
|
||||
UINT16 pf4_rowscroll[0x1000];
|
||||
|
||||
|
||||
device_t *deco16ic;
|
||||
};
|
||||
|
||||
|
@ -496,7 +496,9 @@ static void custom_tilemap_draw(
|
||||
int combine_shift,
|
||||
int trans_mask,
|
||||
int flags,
|
||||
UINT32 priority)
|
||||
UINT32 priority,
|
||||
int is_tattoo
|
||||
)
|
||||
{
|
||||
running_machine *machine = device->machine;
|
||||
tilemap_t *tilemap0 = BIT(control1, 7) ? tilemap0_8x8 : tilemap0_16x16;
|
||||
@ -544,7 +546,9 @@ static void custom_tilemap_draw(
|
||||
p = *BITMAP_ADDR16(src_bitmap0, (src_y + column_offset) & height_mask, src_x);
|
||||
|
||||
if (src_bitmap1)
|
||||
p |= (*BITMAP_ADDR16(src_bitmap1, (src_y + column_offset) & height_mask, src_x) & combine_mask) << combine_shift;
|
||||
{
|
||||
p |= (*BITMAP_ADDR16(src_bitmap1, (src_y + column_offset) & height_mask, src_x) & combine_mask) << combine_shift;
|
||||
}
|
||||
|
||||
src_x = (src_x + 1) & width_mask;
|
||||
|
||||
@ -572,8 +576,18 @@ static void custom_tilemap_draw(
|
||||
p = *BITMAP_ADDR16(src_bitmap0, (src_y + column_offset) & height_mask, src_x);
|
||||
|
||||
if (src_bitmap1)
|
||||
p |= (*BITMAP_ADDR16(src_bitmap1, (src_y + column_offset) & height_mask, src_x) & combine_mask) << combine_shift;
|
||||
|
||||
{
|
||||
if (!is_tattoo)
|
||||
{
|
||||
// does boogie wings actually use this, or is the tattoo assassing code correct in this mode?
|
||||
p |= (*BITMAP_ADDR16(src_bitmap1, (src_y + column_offset) & height_mask, src_x) & combine_mask) << combine_shift;
|
||||
}
|
||||
else
|
||||
{
|
||||
UINT16 p2 = *BITMAP_ADDR16(src_bitmap1, (src_y + column_offset) & height_mask, src_x);
|
||||
p = 0x200+( ((p&0x30)<<4) | (p&0x0f) | ((p2 & 0x0f)<<4));
|
||||
}
|
||||
}
|
||||
src_x = (src_x + 1) & width_mask;
|
||||
|
||||
if ((flags & TILEMAP_DRAW_OPAQUE) || (p & trans_mask))
|
||||
@ -1171,7 +1185,7 @@ void deco16ic_tilemap_1_draw( device_t *device, bitmap_t *bitmap, const rectangl
|
||||
|
||||
if (deco16ic->use_custom_pf1)
|
||||
{
|
||||
custom_tilemap_draw(device, bitmap, cliprect, deco16ic->pf1_tilemap_8x8, deco16ic->pf1_tilemap_16x16, 0, 0, deco16ic->pf1_rowscroll_ptr, deco16ic->pf12_control[1], deco16ic->pf12_control[2], deco16ic->pf12_control[5] & 0xff, deco16ic->pf12_control[6] & 0xff, 0, 0, deco16ic->pf1_trans_mask, flags, priority);
|
||||
custom_tilemap_draw(device, bitmap, cliprect, deco16ic->pf1_tilemap_8x8, deco16ic->pf1_tilemap_16x16, 0, 0, deco16ic->pf1_rowscroll_ptr, deco16ic->pf12_control[1], deco16ic->pf12_control[2], deco16ic->pf12_control[5] & 0xff, deco16ic->pf12_control[6] & 0xff, 0, 0, deco16ic->pf1_trans_mask, flags, priority, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1188,7 +1202,7 @@ void deco16ic_tilemap_2_draw(device_t *device, bitmap_t *bitmap, const rectangle
|
||||
|
||||
if (deco16ic->use_custom_pf2)
|
||||
{
|
||||
custom_tilemap_draw(device, bitmap, cliprect, deco16ic->pf2_tilemap_8x8, deco16ic->pf2_tilemap_16x16, 0, 0, deco16ic->pf2_rowscroll_ptr, deco16ic->pf12_control[3], deco16ic->pf12_control[4], deco16ic->pf12_control[5] >> 8, deco16ic->pf12_control[6] >> 8, 0, 0, deco16ic->pf2_trans_mask, flags, priority);
|
||||
custom_tilemap_draw(device, bitmap, cliprect, deco16ic->pf2_tilemap_8x8, deco16ic->pf2_tilemap_16x16, 0, 0, deco16ic->pf2_rowscroll_ptr, deco16ic->pf12_control[3], deco16ic->pf12_control[4], deco16ic->pf12_control[5] >> 8, deco16ic->pf12_control[6] >> 8, 0, 0, deco16ic->pf2_trans_mask, flags, priority, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1204,7 +1218,7 @@ void deco16ic_tilemap_3_draw(device_t *device, bitmap_t *bitmap, const rectangle
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
|
||||
if (deco16ic->use_custom_pf3)
|
||||
custom_tilemap_draw(device, bitmap, cliprect, 0, deco16ic->pf3_tilemap_16x16, 0, 0, deco16ic->pf3_rowscroll_ptr, deco16ic->pf34_control[1], deco16ic->pf34_control[2], deco16ic->pf34_control[5] & 0xff, deco16ic->pf34_control[6] & 0xff, 0, 0, deco16ic->pf3_trans_mask, flags, priority);
|
||||
custom_tilemap_draw(device, bitmap, cliprect, 0, deco16ic->pf3_tilemap_16x16, 0, 0, deco16ic->pf3_rowscroll_ptr, deco16ic->pf34_control[1], deco16ic->pf34_control[2], deco16ic->pf34_control[5] & 0xff, deco16ic->pf34_control[6] & 0xff, 0, 0, deco16ic->pf3_trans_mask, flags, priority, 0);
|
||||
else if (deco16ic->pf3_tilemap_16x16)
|
||||
tilemap_draw(bitmap, cliprect, deco16ic->pf3_tilemap_16x16, flags, priority);
|
||||
}
|
||||
@ -1214,7 +1228,7 @@ void deco16ic_tilemap_4_draw(device_t *device, bitmap_t *bitmap, const rectangle
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
|
||||
if (deco16ic->use_custom_pf4)
|
||||
custom_tilemap_draw(device, bitmap, cliprect, 0, deco16ic->pf4_tilemap_16x16, 0, 0, deco16ic->pf4_rowscroll_ptr, deco16ic->pf34_control[3], deco16ic->pf34_control[4], deco16ic->pf34_control[5] >> 8, deco16ic->pf34_control[6] >> 8, 0, 0, deco16ic->pf4_trans_mask, flags, priority);
|
||||
custom_tilemap_draw(device, bitmap, cliprect, 0, deco16ic->pf4_tilemap_16x16, 0, 0, deco16ic->pf4_rowscroll_ptr, deco16ic->pf34_control[3], deco16ic->pf34_control[4], deco16ic->pf34_control[5] >> 8, deco16ic->pf34_control[6] >> 8, 0, 0, deco16ic->pf4_trans_mask, flags, priority, 0);
|
||||
else if (deco16ic->pf4_tilemap_16x16)
|
||||
tilemap_draw(bitmap, cliprect, deco16ic->pf4_tilemap_16x16, flags, priority);
|
||||
}
|
||||
@ -1222,10 +1236,10 @@ void deco16ic_tilemap_4_draw(device_t *device, bitmap_t *bitmap, const rectangle
|
||||
/*****************************************************************************************/
|
||||
|
||||
// Combines the output of two 4BPP tilemaps into an 8BPP tilemap
|
||||
void deco16ic_tilemap_34_combine_draw(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority)
|
||||
void deco16ic_tilemap_34_combine_draw(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority, int is_tattoo)
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
custom_tilemap_draw(device, bitmap, cliprect, 0, deco16ic->pf3_tilemap_16x16, 0, deco16ic->pf4_tilemap_16x16, deco16ic->pf3_rowscroll_ptr, deco16ic->pf34_control[1], deco16ic->pf34_control[2], deco16ic->pf34_control[5] & 0xff, deco16ic->pf34_control[6] & 0xff, 0xf, 4, 0xff, flags, priority);
|
||||
custom_tilemap_draw(device, bitmap, cliprect, 0, deco16ic->pf3_tilemap_16x16, 0, deco16ic->pf4_tilemap_16x16, deco16ic->pf3_rowscroll_ptr, deco16ic->pf34_control[1], deco16ic->pf34_control[2], deco16ic->pf34_control[5] & 0xff, deco16ic->pf34_control[6] & 0xff, 0xf, 4, 0xff, flags, priority, is_tattoo);
|
||||
}
|
||||
|
||||
|
||||
|
@ -104,7 +104,7 @@ void deco16ic_tilemap_3_draw(device_t *device, bitmap_t *bitmap, const rectangle
|
||||
void deco16ic_tilemap_4_draw(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority);
|
||||
|
||||
/* used by boogwing, nitrobal */
|
||||
void deco16ic_tilemap_34_combine_draw(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority);
|
||||
void deco16ic_tilemap_34_combine_draw(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority, int is_tattoo = false);
|
||||
|
||||
|
||||
/* used by boogwing, dassault, nitrobal */
|
||||
|
@ -605,49 +605,6 @@ static TILE_GET_INFO( get_pf2_tile_info )
|
||||
SET_TILE_INFO(1,(tile&0xfff)|state->pf2_bank,colour+state->pf2_colourbank,flags);
|
||||
}
|
||||
|
||||
static TILE_GET_INFO( get_pf3_tile_info )
|
||||
{
|
||||
deco32_state *state = machine->driver_data<deco32_state>();
|
||||
UINT32 tile=state->pf3_data[tile_index];
|
||||
UINT8 colour=(tile>>12)&0xf;
|
||||
UINT8 flags=0;
|
||||
|
||||
if (tile&0x8000) {
|
||||
if ((state->pf34_control[6]>>0)&0x01) {
|
||||
flags|=TILE_FLIPX;
|
||||
colour&=0x7;
|
||||
}
|
||||
if ((state->pf34_control[6]>>0)&0x02) {
|
||||
flags|=TILE_FLIPY;
|
||||
colour&=0x7;
|
||||
}
|
||||
}
|
||||
|
||||
SET_TILE_INFO(2,(tile&0xfff)|state->pf3_bank,colour,flags);
|
||||
}
|
||||
|
||||
static TILE_GET_INFO( get_pf4_tile_info )
|
||||
{
|
||||
deco32_state *state = machine->driver_data<deco32_state>();
|
||||
UINT32 tile=state->pf4_data[tile_index];
|
||||
UINT8 colour=(tile>>12)&0xf;
|
||||
UINT8 flags=0;
|
||||
|
||||
if (tile&0x8000) {
|
||||
if ((state->pf34_control[6]>>8)&0x01) {
|
||||
flags|=TILE_FLIPX;
|
||||
colour&=0x7;
|
||||
}
|
||||
if ((state->pf34_control[6]>>8)&0x02) {
|
||||
flags|=TILE_FLIPY;
|
||||
colour&=0x7;
|
||||
}
|
||||
}
|
||||
|
||||
SET_TILE_INFO(2,(tile&0xfff)|state->pf4_bank,colour+state->pf4_colourbank,flags);
|
||||
}
|
||||
|
||||
|
||||
static TILE_GET_INFO( get_ll_pf3_tile_info )
|
||||
{
|
||||
deco32_state *state = machine->driver_data<deco32_state>();
|
||||
@ -745,28 +702,13 @@ VIDEO_START( nslasher )
|
||||
{
|
||||
deco32_state *state = machine->driver_data<deco32_state>();
|
||||
int width, height;
|
||||
|
||||
state->pf1_tilemap = tilemap_create(machine, get_pf1_tile_info, tilemap_scan_rows, 8, 8,64,32);
|
||||
state->pf2_tilemap = tilemap_create(machine, get_pf2_tile_info, deco16_scan_rows,16,16,64,32);
|
||||
state->pf3_tilemap = tilemap_create(machine, get_pf3_tile_info, deco16_scan_rows,16,16,64,32);
|
||||
state->pf4_tilemap = tilemap_create(machine, get_pf4_tile_info, deco16_scan_rows, 16,16,64,32);
|
||||
state->pf1a_tilemap =0;
|
||||
state->dirty_palette = auto_alloc_array(machine, UINT8, 4096);
|
||||
|
||||
width = machine->primary_screen->width();
|
||||
height = machine->primary_screen->height();
|
||||
state->tilemap_alpha_bitmap=auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16 );
|
||||
|
||||
machine->device<decospr_device>("spritegen1")->alloc_sprite_bitmap(machine);
|
||||
machine->device<decospr_device>("spritegen2")->alloc_sprite_bitmap(machine);
|
||||
|
||||
tilemap_set_transparent_pen(state->pf1_tilemap,0);
|
||||
tilemap_set_transparent_pen(state->pf2_tilemap,0);
|
||||
tilemap_set_transparent_pen(state->pf3_tilemap,0);
|
||||
memset(state->dirty_palette,0,4096);
|
||||
|
||||
state->pf2_colourbank=16;
|
||||
state->pf4_colourbank=16;
|
||||
state_save_register_global(machine, state->pri);
|
||||
state->has_ace_ram=1;
|
||||
}
|
||||
@ -847,48 +789,6 @@ static void deco32_setup_scroll(tilemap_t *pf_tilemap, UINT16 height, UINT8 cont
|
||||
}
|
||||
|
||||
|
||||
static void combined_tilemap_draw(running_machine* machine, bitmap_t *bitmap, const rectangle *cliprect)
|
||||
{
|
||||
deco32_state *state = machine->driver_data<deco32_state>();
|
||||
const bitmap_t *bitmap0 = tilemap_get_pixmap(state->pf3_tilemap);
|
||||
const bitmap_t *bitmap1 = tilemap_get_pixmap(state->pf4_tilemap);
|
||||
int x,y,p;
|
||||
|
||||
const UINT16 width_mask=0x3ff;
|
||||
const UINT16 height_mask=0x1ff;
|
||||
const UINT16 y_src=state->pf34_control[2];
|
||||
// const UINT32 *rows=state->pf3_rowscroll32;
|
||||
|
||||
const UINT16 *bitmap0_y;
|
||||
const UINT16 *bitmap1_y;
|
||||
UINT32 *bitmap2_y;
|
||||
|
||||
UINT16 x_src;
|
||||
|
||||
for (y=8; y<248; y++) {
|
||||
const int py=(y_src+y)&height_mask;
|
||||
|
||||
bitmap0_y=BITMAP_ADDR16(bitmap0, py, 0);
|
||||
bitmap1_y=BITMAP_ADDR16(bitmap1, py, 0);
|
||||
bitmap2_y=BITMAP_ADDR32(bitmap, y, 0);
|
||||
|
||||
/* Todo: Should add row enable, and col scroll, but never used as far as I can see */
|
||||
x_src=(state->pf34_control[1] + state->pf3_rowscroll32[py])&width_mask;
|
||||
|
||||
for (x=0; x<320; x++) {
|
||||
|
||||
/* 0x200 is palette base for this tilemap */
|
||||
p = 0x200 +((bitmap0_y[x_src]&0xf) | ((bitmap0_y[x_src]&0x30)<<4) | ((bitmap1_y[x_src]&0xf)<<4));
|
||||
|
||||
bitmap2_y[x]=machine->pens[p];
|
||||
|
||||
x_src=(x_src+1)&width_mask;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
SCREEN_UPDATE( captaven )
|
||||
@ -1194,38 +1094,10 @@ SCREEN_UPDATE( nslasher )
|
||||
{
|
||||
deco32_state *state = screen->machine->driver_data<deco32_state>();
|
||||
int alphaTilemap=0;
|
||||
state->deco16ic = screen->machine->device("deco_custom");
|
||||
|
||||
/* Dirty tilemaps if any globals change */
|
||||
if (state->pf1_flip!=((state->pf12_control[6]>>0)&0x3))
|
||||
tilemap_mark_all_tiles_dirty(state->pf1_tilemap);
|
||||
if (state->pf2_flip!=((state->pf12_control[6]>>8)&0x3))
|
||||
tilemap_mark_all_tiles_dirty(state->pf2_tilemap);
|
||||
if ((((state->pf12_control[7]>>12)&0x7)<<12)!=state->pf2_bank || state->pf2_flip!=((state->pf12_control[6]>>8)&0x3))
|
||||
tilemap_mark_all_tiles_dirty(state->pf2_tilemap);
|
||||
if ((((state->pf34_control[7]>> 4)&0x3)<<12)!=state->pf3_bank || state->pf3_flip!=((state->pf34_control[6]>>0)&0x3))
|
||||
tilemap_mark_all_tiles_dirty(state->pf3_tilemap);
|
||||
if ((((state->pf34_control[7]>>12)&0x3)<<12)!=state->pf4_bank || state->pf4_flip!=((state->pf34_control[6]>>8)&0x3))
|
||||
tilemap_mark_all_tiles_dirty(state->pf4_tilemap);
|
||||
|
||||
state->pf2_bank=((state->pf12_control[7]>>12)&0x3)<<12;
|
||||
state->pf3_bank=((state->pf34_control[7]>> 4)&0x3)<<12;
|
||||
state->pf4_bank=((state->pf34_control[7]>>12)&0x3)<<12;
|
||||
state->pf1_flip=(state->pf12_control[6]>>0)&0x3;
|
||||
state->pf2_flip=(state->pf12_control[6]>>8)&0x3;
|
||||
state->pf3_flip=(state->pf34_control[6]>>0)&0x3;
|
||||
state->pf4_flip=(state->pf34_control[6]>>8)&0x3;
|
||||
|
||||
/* Setup scroll registers */
|
||||
deco32_setup_scroll(state->pf1_tilemap, 256,(state->pf12_control[5]>>0)&0xff,(state->pf12_control[6]>>0)&0xff,state->pf12_control[2],state->pf12_control[1],state->pf1_rowscroll32,state->pf1_rowscroll32+0x200);
|
||||
deco32_setup_scroll(state->pf2_tilemap, 512,(state->pf12_control[5]>>8)&0xff,(state->pf12_control[6]>>8)&0xff,state->pf12_control[4],state->pf12_control[3],state->pf2_rowscroll32,state->pf2_rowscroll32+0x200);
|
||||
deco32_setup_scroll(state->pf3_tilemap, 512,(state->pf34_control[5]>>0)&0xff,(state->pf34_control[6]>>0)&0xff,state->pf34_control[2],state->pf34_control[1],state->pf3_rowscroll32,state->pf3_rowscroll32+0x200);
|
||||
deco32_setup_scroll(state->pf4_tilemap, 512,(state->pf34_control[5]>>8)&0xff,(state->pf34_control[6]>>8)&0xff,state->pf34_control[4],state->pf34_control[3],state->pf4_rowscroll32,state->pf4_rowscroll32+0x200);
|
||||
|
||||
/* Enable registers */
|
||||
tilemap_set_enable(state->pf1_tilemap, state->pf12_control[5]&0x0080);
|
||||
tilemap_set_enable(state->pf2_tilemap, state->pf12_control[5]&0x8000);
|
||||
tilemap_set_enable(state->pf3_tilemap, state->pf34_control[5]&0x0080);
|
||||
tilemap_set_enable(state->pf4_tilemap, state->pf34_control[5]&0x8000);
|
||||
deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
deco16ic_pf34_update(state->deco16ic, state->pf3_rowscroll, state->pf4_rowscroll);
|
||||
|
||||
/* This is not a conclusive test for deciding if tilemap needs alpha blending */
|
||||
if (state->ace_ram[0x17]!=0x0 && state->pri)
|
||||
@ -1234,10 +1106,9 @@ SCREEN_UPDATE( nslasher )
|
||||
if (state->ace_ram_dirty)
|
||||
updateAceRam(screen->machine);
|
||||
|
||||
|
||||
bitmap_fill(screen->machine->priority_bitmap,cliprect,0);
|
||||
if ((state->pf34_control[5]&0x8000)==0)
|
||||
bitmap_fill(bitmap,cliprect,screen->machine->pens[0x200]);
|
||||
|
||||
bitmap_fill(bitmap,cliprect,screen->machine->pens[0x200]);
|
||||
|
||||
/* Draw sprites to temporary bitmaps, saving alpha & priority info for later mixing */
|
||||
screen->machine->device<decospr_device>("spritegen1")->set_pix_raw_shift(8);
|
||||
@ -1253,32 +1124,32 @@ SCREEN_UPDATE( nslasher )
|
||||
/* Draw playfields & sprites */
|
||||
if (state->pri&2)
|
||||
{
|
||||
combined_tilemap_draw(screen->machine,bitmap,cliprect);
|
||||
tilemap_draw(bitmap,cliprect,state->pf2_tilemap,0,4);
|
||||
deco16ic_tilemap_34_combine_draw(state->deco16ic, bitmap, cliprect, 0, 1, 1);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
tilemap_draw(bitmap,cliprect,state->pf4_tilemap,0,1);
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, 0, 1);
|
||||
if (state->pri&1)
|
||||
{
|
||||
tilemap_draw(bitmap,cliprect,state->pf2_tilemap,0,2);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
if (alphaTilemap)
|
||||
tilemap_draw(state->tilemap_alpha_bitmap,cliprect,state->pf3_tilemap,0,4);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, state->tilemap_alpha_bitmap, cliprect, 0, 4);
|
||||
else
|
||||
tilemap_draw(bitmap,cliprect,state->pf3_tilemap,0,4);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
tilemap_draw(bitmap,cliprect,state->pf3_tilemap,0,2);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
if (alphaTilemap)
|
||||
tilemap_draw(state->tilemap_alpha_bitmap,cliprect,state->pf2_tilemap,0,4);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, state->tilemap_alpha_bitmap, cliprect, 0, 4);
|
||||
else
|
||||
tilemap_draw(bitmap,cliprect,state->pf2_tilemap,0,4);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 4);
|
||||
}
|
||||
}
|
||||
|
||||
mixDualAlphaSprites(bitmap, cliprect, screen->machine->gfx[3], screen->machine->gfx[4], alphaTilemap);
|
||||
|
||||
tilemap_draw(bitmap,cliprect,state->pf1_tilemap,0,0);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user