undrfire.c, groundfx.c: improve documentation (TC0620SCC is the 6bpp tilemap chip) (nw)

This commit is contained in:
Alex W. Jackson 2014-11-10 15:36:34 -05:00
parent 3480032ae5
commit cc723e85ec
4 changed files with 45 additions and 46 deletions

View File

@ -48,8 +48,8 @@
Ground Effects combines the sprite system used in Taito Z games with Ground Effects combines the sprite system used in Taito Z games with
the TC0480SCP tilemap chip plus some features from the Taito F3 system. the TC0480SCP tilemap chip plus some features from the Taito F3 system.
It has an extra tilemap chip which is a dead ringer for the TC0100SCN It has an extra TC0620SCC tilemap chip which is a 6bpp version of the
(check the inits), like Under Fire. TC0100SCN (check the inits), like Under Fire.
Ground Effects is effectively a 30Hz game - though the vblank interrupts Ground Effects is effectively a 30Hz game - though the vblank interrupts
still come in at 60Hz, the game uses a hardware frame counter to limit still come in at 60Hz, the game uses a hardware frame counter to limit
@ -190,7 +190,7 @@ static ADDRESS_MAP_START( groundfx_map, AS_PROGRAM, 32, groundfx_state )
AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("snd_shared") AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("snd_shared")
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) /* tilemaps */ 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(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(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, long_r, long_w) /* 6bpp tilemaps */
AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w) AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w)
AM_RANGE(0xa00000, 0xa0ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0xa00000, 0xa0ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xb00000, 0xb003ff) AM_RAM // ?? single bytes, blending ?? AM_RANGE(0xb00000, 0xb003ff) AM_RAM // ?? single bytes, blending ??
@ -279,7 +279,7 @@ static const gfx_layout charlayout =
128*8 /* every sprite takes 128 consecutive bytes */ 128*8 /* every sprite takes 128 consecutive bytes */
}; };
static const gfx_layout pivlayout = static const gfx_layout scclayout =
{ {
8,8, /* 8*8 characters */ 8,8, /* 8*8 characters */
RGN_FRAC(1,2), RGN_FRAC(1,2),
@ -293,7 +293,7 @@ static const gfx_layout pivlayout =
static GFXDECODE_START( groundfx ) static GFXDECODE_START( groundfx )
GFXDECODE_ENTRY( "gfx2", 0x0, tile16x16_layout, 4096, 512 ) GFXDECODE_ENTRY( "gfx2", 0x0, tile16x16_layout, 4096, 512 )
GFXDECODE_ENTRY( "gfx1", 0x0, charlayout, 0, 512 ) GFXDECODE_ENTRY( "gfx1", 0x0, charlayout, 0, 512 )
GFXDECODE_ENTRY( "gfx3", 0x0, pivlayout, 0, 512 ) GFXDECODE_ENTRY( "gfx3", 0x0, scclayout, 0, 512 )
GFXDECODE_END GFXDECODE_END
@ -375,7 +375,7 @@ ROM_START( groundfx )
ROM_LOAD32_BYTE( "d51-07.51", 0x000003, 0x200000, CRC(24b2f97d) SHA1(6980e67b435d189ce897c0301e0411763410ab47) ) ROM_LOAD32_BYTE( "d51-07.51", 0x000003, 0x200000, CRC(24b2f97d) SHA1(6980e67b435d189ce897c0301e0411763410ab47) )
ROM_REGION( 0x400000, "gfx3", 0 ) ROM_REGION( 0x400000, "gfx3", 0 )
ROM_LOAD16_BYTE( "d51-10.95", 0x000000, 0x100000, CRC(d5910604) SHA1(8efe13884cfdef208394ddfe19f43eb1b9f78ff3) ) /* PIV 8x8 tiles, 6bpp */ ROM_LOAD16_BYTE( "d51-10.95", 0x000000, 0x100000, CRC(d5910604) SHA1(8efe13884cfdef208394ddfe19f43eb1b9f78ff3) ) /* SCC 8x8 tiles, 6bpp */
ROM_LOAD16_BYTE( "d51-11.96", 0x000001, 0x100000, CRC(fee5f5c6) SHA1(1be88747f9c71c348dd61a8f0040007df3a3e6a6) ) ROM_LOAD16_BYTE( "d51-11.96", 0x000001, 0x100000, CRC(fee5f5c6) SHA1(1be88747f9c71c348dd61a8f0040007df3a3e6a6) )
ROM_LOAD ( "d51-12.97", 0x300000, 0x100000, CRC(d630287b) SHA1(2fa09e1821b7280d193ca9a2a270759c3c3189d1) ) ROM_LOAD ( "d51-12.97", 0x300000, 0x100000, CRC(d630287b) SHA1(2fa09e1821b7280d193ca9a2a270759c3c3189d1) )
ROM_FILL ( 0x200000, 0x100000, 0 ) ROM_FILL ( 0x200000, 0x100000, 0 )
@ -418,7 +418,7 @@ DRIVER_INIT_MEMBER(groundfx_state,groundfx)
/* Speedup handlers */ /* Speedup handlers */
m_maincpu->space(AS_PROGRAM).install_read_handler(0x20b574, 0x20b577, read32_delegate(FUNC(groundfx_state::irq_speedup_r_groundfx),this)); m_maincpu->space(AS_PROGRAM).install_read_handler(0x20b574, 0x20b577, read32_delegate(FUNC(groundfx_state::irq_speedup_r_groundfx),this));
/* make piv tile GFX format suitable for gfxdecode */ /* make SCC tile GFX format suitable for gfxdecode */
offset = size/2; offset = size/2;
for (i = size/2+size/4; i<size; i++) for (i = size/2+size/4; i<size; i++)
{ {

View File

@ -7,12 +7,12 @@
Board Info (Underfire): Board Info (Underfire):
TC0470LIN : ? TC0470LIN : object line buffer?
TC0480SCP : known tilemap chip TC0480SCP : known tilemap chip
TC0510NIO : known input chip TC0510NIO : known input chip
TC0570SPC : must be the object chip (next to spritemap and OBJ roms) TC0570SPC : must be the object chip (next to spritemap and OBJ roms)
TC0590PIV : Piv tilemaps TC0590PIV : object related???
TC0620SCC : lightgun ??? pivot port ??? TC0620SCC : tilemap chip (6bpp version of TC0100SCN)
TC0650FDA : palette ? (Slapshot and F3 games also have one) TC0650FDA : palette ? (Slapshot and F3 games also have one)
M43E0278A M43E0278A
@ -46,9 +46,8 @@
Under Fire combines the sprite system used in Taito Z games with Under Fire combines the sprite system used in Taito Z games with
the TC0480SCP tilemap chip plus some features from the Taito F3 system. the TC0480SCP tilemap chip plus some features from the Taito F3 system.
It has an extra tilemap chip which is a dead ringer for the TC0100SCN It has an extra TC0620SCC tilemap chip which is a 6bpp version of the
(check the inits). Why did Taito give it a different name in this TC0100SCN (check the inits).
incarnation?
Game misbehaviours Game misbehaviours
@ -452,7 +451,7 @@ static ADDRESS_MAP_START( undrfire_map, AS_PROGRAM, 32, undrfire_state )
AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("snd_shared") AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("snd_shared")
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) /* tilemaps */ 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(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(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, long_r, long_w) /* 6bpp tilemaps */
AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w) AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w)
AM_RANGE(0xa00000, 0xa0ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0xa00000, 0xa0ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xb00000, 0xb003ff) AM_RAM /* single bytes, blending ??? */ AM_RANGE(0xb00000, 0xb003ff) AM_RAM /* single bytes, blending ??? */
@ -471,7 +470,7 @@ static ADDRESS_MAP_START( cbombers_cpua_map, AS_PROGRAM, 32, undrfire_state )
AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("snd_shared") AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("snd_shared")
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) /* tilemaps */ 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(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(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, long_r, long_w) /* 6bpp tilemaps */
AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w) AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w)
AM_RANGE(0xa00000, 0xa0ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0xa00000, 0xa0ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xb00000, 0xb0000f) AM_RAM /* ? */ AM_RANGE(0xb00000, 0xb0000f) AM_RAM /* ? */
@ -639,7 +638,7 @@ static const gfx_layout charlayout =
128*8 /* every sprite takes 128 consecutive bytes */ 128*8 /* every sprite takes 128 consecutive bytes */
}; };
static const gfx_layout pivlayout = static const gfx_layout scclayout =
{ {
8,8, /* 8*8 characters */ 8,8, /* 8*8 characters */
RGN_FRAC(1,2), RGN_FRAC(1,2),
@ -653,13 +652,13 @@ static const gfx_layout pivlayout =
static GFXDECODE_START( undrfire ) static GFXDECODE_START( undrfire )
GFXDECODE_ENTRY( "gfx2", 0x0, tile16x16_layout, 0, 512 ) GFXDECODE_ENTRY( "gfx2", 0x0, tile16x16_layout, 0, 512 )
GFXDECODE_ENTRY( "gfx1", 0x0, charlayout, 0, 512 ) GFXDECODE_ENTRY( "gfx1", 0x0, charlayout, 0, 512 )
GFXDECODE_ENTRY( "gfx3", 0x0, pivlayout, 0, 512 ) GFXDECODE_ENTRY( "gfx3", 0x0, scclayout, 0, 512 )
GFXDECODE_END GFXDECODE_END
static GFXDECODE_START( cbombers ) static GFXDECODE_START( cbombers )
GFXDECODE_ENTRY( "gfx2", 0x0, tile16x16_layout, 0, 512 ) GFXDECODE_ENTRY( "gfx2", 0x0, tile16x16_layout, 0, 512 )
GFXDECODE_ENTRY( "gfx1", 0x0, charlayout, 0x1000, 512 ) GFXDECODE_ENTRY( "gfx1", 0x0, charlayout, 0x1000, 512 )
GFXDECODE_ENTRY( "gfx3", 0x0, pivlayout, 0, 512 ) GFXDECODE_ENTRY( "gfx3", 0x0, scclayout, 0, 512 )
GFXDECODE_END GFXDECODE_END
/*********************************************************** /***********************************************************
@ -1099,7 +1098,7 @@ DRIVER_INIT_MEMBER(undrfire_state,undrfire)
int size=memregion("gfx3")->bytes(); int size=memregion("gfx3")->bytes();
int data; int data;
/* make piv tile GFX format suitable for gfxdecode */ /* make SCC tile GFX format suitable for gfxdecode */
offset = size/2; offset = size/2;
for (i = size/2+size/4; i<size; i++) for (i = size/2+size/4; i<size; i++)
{ {
@ -1129,7 +1128,7 @@ DRIVER_INIT_MEMBER(undrfire_state,cbombers)
int data; int data;
/* make piv tile GFX format suitable for gfxdecode */ /* make SCC tile GFX format suitable for gfxdecode */
offset = size/2; offset = size/2;
for (i = size/2+size/4; i<size; i++) for (i = size/2+size/4; i<size; i++)
{ {

View File

@ -197,7 +197,7 @@ UINT32 groundfx_state::screen_update_groundfx(screen_device &screen, bitmap_ind1
{ {
address_space &space = machine().driver_data()->generic_space(); address_space &space = machine().driver_data()->generic_space();
UINT8 layer[5]; UINT8 layer[5];
UINT8 pivlayer[3]; UINT8 scclayer[3];
UINT16 priority; UINT16 priority;
m_tc0100scn->tilemap_update(); m_tc0100scn->tilemap_update();
@ -211,15 +211,15 @@ UINT32 groundfx_state::screen_update_groundfx(screen_device &screen, bitmap_ind1
layer[3] = (priority & 0x000f) >> 0; /* tells us which is top */ layer[3] = (priority & 0x000f) >> 0; /* tells us which is top */
layer[4] = 4; /* text layer always over bg layers */ layer[4] = 4; /* text layer always over bg layers */
pivlayer[0] = m_tc0100scn->bottomlayer(); scclayer[0] = m_tc0100scn->bottomlayer();
pivlayer[1] = pivlayer[0]^1; scclayer[1] = scclayer[0]^1;
pivlayer[2] = 2; scclayer[2] = 2;
screen.priority().fill(0, cliprect); screen.priority().fill(0, cliprect);
bitmap.fill(0, cliprect); /* wrong color? */ bitmap.fill(0, cliprect); /* wrong color? */
m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, pivlayer[0], TILEMAP_DRAW_OPAQUE, 0); m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[0], TILEMAP_DRAW_OPAQUE, 0);
m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, pivlayer[1], 0, 0); m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[1], 0, 0);
/* BIG HACK! /* BIG HACK!
@ -244,7 +244,7 @@ UINT32 groundfx_state::screen_update_groundfx(screen_device &screen, bitmap_ind1
m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 4); m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 4);
m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[3], 0, 8); m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[3], 0, 8);
//m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, 0, pivlayer[2], 0, 0); //m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, 0, scclayer[2], 0, 0);
if (m_tc0480scp->long_r(space, 0x20 / 4, 0xffffffff) != 0x240866) /* Stupid hack for start of race */ if (m_tc0480scp->long_r(space, 0x20 / 4, 0xffffffff) != 0x240866) /* Stupid hack for start of race */
m_tc0480scp->tilemap_draw(screen, bitmap, m_hack_cliprect, layer[0], 0, 0); m_tc0480scp->tilemap_draw(screen, bitmap, m_hack_cliprect, layer[0], 0, 0);
@ -257,7 +257,7 @@ UINT32 groundfx_state::screen_update_groundfx(screen_device &screen, bitmap_ind1
m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 4); m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 4);
m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[3], 0, 8); m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[3], 0, 8);
m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, pivlayer[2], 0, 0); m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[2], 0, 0);
draw_sprites(screen, bitmap, cliprect, 0, 44, -574); draw_sprites(screen, bitmap, cliprect, 0, 44, -574);
} }

View File

@ -347,14 +347,14 @@ UINT32 undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_ind1
{ {
address_space &space = machine().driver_data()->generic_space(); address_space &space = machine().driver_data()->generic_space();
UINT8 layer[5]; UINT8 layer[5];
UINT8 pivlayer[3]; UINT8 scclayer[3];
UINT16 priority; UINT16 priority;
#ifdef MAME_DEBUG #ifdef MAME_DEBUG
if (machine().input().code_pressed_once (KEYCODE_X)) if (machine().input().code_pressed_once (KEYCODE_X))
{ {
m_dislayer[5] ^= 1; m_dislayer[5] ^= 1;
popmessage("piv text: %01x",m_dislayer[5]); popmessage("scc text: %01x",m_dislayer[5]);
} }
if (machine().input().code_pressed_once (KEYCODE_C)) if (machine().input().code_pressed_once (KEYCODE_C))
{ {
@ -398,22 +398,22 @@ UINT32 undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_ind1
layer[3] = (priority & 0x000f) >> 0; /* tells us which is top */ layer[3] = (priority & 0x000f) >> 0; /* tells us which is top */
layer[4] = 4; /* text layer always over bg layers */ layer[4] = 4; /* text layer always over bg layers */
pivlayer[0] = m_tc0100scn->bottomlayer(); scclayer[0] = m_tc0100scn->bottomlayer();
pivlayer[1] = pivlayer[0] ^ 1; scclayer[1] = scclayer[0] ^ 1;
pivlayer[2] = 2; scclayer[2] = 2;
screen.priority().fill(0, cliprect); screen.priority().fill(0, cliprect);
bitmap.fill(0, cliprect); /* wrong color? */ bitmap.fill(0, cliprect); /* wrong color? */
/* The "PIV" chip seems to be a renamed TC0100SCN. It has a /* The "SCC" chip seems to be a 6bpp TC0100SCN. It has a
bottom layer usually full of bright garish colors that bottom layer usually full of bright garish colors that
vaguely mimic the structure of the layers on top. Seems vaguely mimic the structure of the layers on top. Seems
pointless - it's always hidden by other layers. Does it pointless - it's always hidden by other layers. Does it
serve some blending pupose ? */ serve some blending pupose ? */
m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, pivlayer[0], TILEMAP_DRAW_OPAQUE, 0); m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[0], TILEMAP_DRAW_OPAQUE, 0);
m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, pivlayer[1], 0, 0); m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[1], 0, 0);
#ifdef MAME_DEBUG #ifdef MAME_DEBUG
if (m_dislayer[layer[0]]==0) if (m_dislayer[layer[0]]==0)
@ -455,7 +455,7 @@ UINT32 undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_ind1
#ifdef MAME_DEBUG #ifdef MAME_DEBUG
if (m_dislayer[5]==0) if (m_dislayer[5]==0)
#endif #endif
m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, pivlayer[2], 0, 0); /* piv text layer */ m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[2], 0, 0); /* TC0620SCC text layer */
m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[4], 0, 0); /* TC0480SCP text layer */ m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[4], 0, 0); /* TC0480SCP text layer */
@ -488,14 +488,14 @@ UINT32 undrfire_state::screen_update_cbombers(screen_device &screen, bitmap_ind1
{ {
address_space &space = machine().driver_data()->generic_space(); address_space &space = machine().driver_data()->generic_space();
UINT8 layer[5]; UINT8 layer[5];
UINT8 pivlayer[3]; UINT8 scclayer[3];
UINT16 priority; UINT16 priority;
#ifdef MAME_DEBUG #ifdef MAME_DEBUG
if (machine().input().code_pressed_once (KEYCODE_X)) if (machine().input().code_pressed_once (KEYCODE_X))
{ {
m_dislayer[5] ^= 1; m_dislayer[5] ^= 1;
popmessage("piv text: %01x",m_dislayer[5]); popmessage("scc text: %01x",m_dislayer[5]);
} }
if (machine().input().code_pressed_once (KEYCODE_C)) if (machine().input().code_pressed_once (KEYCODE_C))
{ {
@ -539,22 +539,22 @@ UINT32 undrfire_state::screen_update_cbombers(screen_device &screen, bitmap_ind1
layer[3] = (priority & 0x000f) >> 0; /* tells us which is top */ layer[3] = (priority & 0x000f) >> 0; /* tells us which is top */
layer[4] = 4; /* text layer always over bg layers */ layer[4] = 4; /* text layer always over bg layers */
pivlayer[0] = m_tc0100scn->bottomlayer(); scclayer[0] = m_tc0100scn->bottomlayer();
pivlayer[1] = pivlayer[0] ^ 1; scclayer[1] = scclayer[0] ^ 1;
pivlayer[2] = 2; scclayer[2] = 2;
screen.priority().fill(0, cliprect); screen.priority().fill(0, cliprect);
bitmap.fill(0, cliprect); /* wrong color? */ bitmap.fill(0, cliprect); /* wrong color? */
/* The "PIV" chip seems to be a renamed TC0100SCN. It has a /* The "SCC" chip seems to be a 6bpp TC0100SCN. It has a
bottom layer usually full of bright garish colors that bottom layer usually full of bright garish colors that
vaguely mimic the structure of the layers on top. Seems vaguely mimic the structure of the layers on top. Seems
pointless - it's always hidden by other layers. Does it pointless - it's always hidden by other layers. Does it
serve some blending pupose ? */ serve some blending pupose ? */
m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, pivlayer[0], TILEMAP_DRAW_OPAQUE, 0); m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[0], TILEMAP_DRAW_OPAQUE, 0);
m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, pivlayer[1], 0, 0); m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[1], 0, 0);
#ifdef MAME_DEBUG #ifdef MAME_DEBUG
if (m_dislayer[layer[0]]==0) if (m_dislayer[layer[0]]==0)
@ -596,7 +596,7 @@ UINT32 undrfire_state::screen_update_cbombers(screen_device &screen, bitmap_ind1
#ifdef MAME_DEBUG #ifdef MAME_DEBUG
if (m_dislayer[5]==0) if (m_dislayer[5]==0)
#endif #endif
m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, pivlayer[2], 0, 0); /* piv text layer */ m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[2], 0, 0); /* TC0620SCC text layer */
m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[4], 0, 0); /* TC0480SCP text layer */ m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[4], 0, 0); /* TC0480SCP text layer */