document 'blits' where the first sent parameter is '1' not '0' as non-sprites, probably clipping windows.

This commit is contained in:
David Haywood 2013-02-20 19:30:15 +00:00
parent 103494349b
commit 1ef9da1b98

View File

@ -692,7 +692,7 @@ WRITE32_MEMBER(coolridr_state::sysh1_txt_blit_w)
|| m_blitterMode == 0x90 || m_blitterMode == 0xa0 || m_blitterMode == 0xb0 || m_blitterMode == 0xc0) || m_blitterMode == 0x90 || m_blitterMode == 0xa0 || m_blitterMode == 0xb0 || m_blitterMode == 0xc0)
{ {
// Serialized 32-bit words in order of appearance: // Serialized 32-bit words in order of appearance:
// 0: 00000000 - totally unknown : always seems to be zero // 0: 00000000 - unknown, 0x00000000 or 0x00000001, 0 seems to be regular sprite, 1 seems to change meaning of below, possible clip area?
// 1: xxxxxxxx - "Color Number" (all bits or just lower 16/8?) // 1: xxxxxxxx - "Color Number" (all bits or just lower 16/8?)
// 2: 00000000 - unknown : OT flag? (transparency) // 2: 00000000 - unknown : OT flag? (transparency)
// 3: 00000000 - unknown : RF flag? (90 degree rotation) // 3: 00000000 - unknown : RF flag? (90 degree rotation)
@ -717,7 +717,16 @@ WRITE32_MEMBER(coolridr_state::sysh1_txt_blit_w)
{ {
// set to 0x00000001 on some objects during the 'film strip' part of attract, otherwise 0 // set to 0x00000001 on some objects during the 'film strip' part of attract, otherwise 0
// those objects don't seem visible anyway so might have some special meaning // those objects don't seem visible anyway so might have some special meaning
// this is also set at times during the game
//
// the sprites with 1 set appear to have 0x00000000 in everything after the 4th write (m_blit4 and above)
// so likely have some other meaning and are NOT regular sprite data
m_blit0 = data; m_blit0 = data;
// if (data!=0) printf("blit %08x\n", data); // if (data!=0) printf("blit %08x\n", data);
} }
else if (m_blitterSerialCount == 1) else if (m_blitterSerialCount == 1)
@ -807,6 +816,19 @@ WRITE32_MEMBER(coolridr_state::sysh1_txt_blit_w)
} }
else if (m_blitterSerialCount == 11) else if (m_blitterSerialCount == 11)
{ {
if (m_blit0 & 1)
{
// NOT A SPRITE
// these are something else, not sprites? It still writes 11 dwords I think they have a different meaning
// it might be a clipping area set? looks potentially like co-ordinates at least
//printf("NON-SPRITE blit %08x %08x %08x %08x %08x(%08x) %08x %04x %04x %04x %04x %08x %08x %d %d\n", m_blit0, m_blit1, m_blit2, m_blit3, m_blit4_unused, m_blit4, m_blit5_unused, m_vCellCount, m_hCellCount, m_vZoom, m_hZoom, m_blit10, data, m_vPosition, m_hPosition);
}
else
{
// SPRITES / BLITS
// for text objects this is an address containing the 8-bit tile numbers to use for ASCII text // for text objects this is an address containing the 8-bit tile numbers to use for ASCII text
// I guess the tiles are decoded by a DMA operation earlier, from the compressed ROM? // I guess the tiles are decoded by a DMA operation earlier, from the compressed ROM?
@ -837,9 +859,10 @@ WRITE32_MEMBER(coolridr_state::sysh1_txt_blit_w)
random = 0; random = 0;
// not used much.. // not used much..
/*
if (m_blit4 &0x00010000) if (m_blit4 &0x00010000)
{ {
// printf("type blit %08x %08x %08x %08x %08x(%08x) %08x %04x %04x %04x %04x %08x %08x %d %d\n", m_blit0, m_blit1, m_blit2, m_blit3, m_blit4_unused, m_blit4, m_blit5_unused, m_vCellCount, m_hCellCount, m_vZoom, m_hZoom, m_blit10, data, m_vPosition, m_hPosition); printf("type blit %08x %08x %08x %08x %08x(%08x) %08x %04x %04x %04x %04x %08x %08x %d %d\n", m_blit0, m_blit1, m_blit2, m_blit3, m_blit4_unused, m_blit4, m_blit5_unused, m_vCellCount, m_hCellCount, m_vZoom, m_hZoom, m_blit10, data, m_vPosition, m_hPosition);
m_colorNumber = machine().rand() | 0xff000000; m_colorNumber = machine().rand() | 0xff000000;
random = 1; random = 1;
} }
@ -847,6 +870,7 @@ WRITE32_MEMBER(coolridr_state::sysh1_txt_blit_w)
{ {
} }
*/
bitmap_rgb32* drawbitmap; bitmap_rgb32* drawbitmap;
@ -979,6 +1003,7 @@ WRITE32_MEMBER(coolridr_state::sysh1_txt_blit_w)
} }
} }
} }
}
else else
{ {
printf("more than 11 dwords (%d) in blit?\n", m_blitterSerialCount); printf("more than 11 dwords (%d) in blit?\n", m_blitterSerialCount);