mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
improved notes on some video stuff
This commit is contained in:
parent
c95286710d
commit
9a1b5ae359
1 changed files with 59 additions and 4 deletions
|
@ -300,7 +300,8 @@ public:
|
|||
UINT16 m_hOrigin;
|
||||
UINT16 m_vZoom;
|
||||
UINT16 m_hZoom;
|
||||
|
||||
UINT32 m_blit0; // ?
|
||||
UINT32 m_blit10; // an address
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_subcpu;
|
||||
|
@ -507,6 +508,12 @@ WRITE32_MEMBER(coolridr_state::sysh1_txt_blit_w)
|
|||
m_textBytesToWrite = (data & 0xff000000) >> 24;
|
||||
m_textOffset = (data & 0x0000ffff);
|
||||
m_blitterSerialCount = 0;
|
||||
|
||||
// this is ONLY used when there is text on the screen
|
||||
|
||||
//printf("set mode %08x\n", data);
|
||||
|
||||
|
||||
}
|
||||
else if (m_blitterMode == 0x30 || m_blitterMode == 0x40 || m_blitterMode == 0x50 || m_blitterMode == 0x60
|
||||
|| m_blitterMode == 0x90 || m_blitterMode == 0xa0 || m_blitterMode == 0xb0 || m_blitterMode == 0xc0)
|
||||
|
@ -515,6 +522,9 @@ WRITE32_MEMBER(coolridr_state::sysh1_txt_blit_w)
|
|||
// After this is set a fixed count of 11 32-bit words are sent to the data register.
|
||||
// The lower word always seems to be 0x0001 and the upper byte always 0xac.
|
||||
m_blitterSerialCount = 0;
|
||||
|
||||
// form 0xacMM-xxx ac = fixed value for this mode? MM = modes above. -xxx = some kind of offset? but it doesn't increment for each blit like the textOffset / paletteOffset stuff, investigate
|
||||
|
||||
}
|
||||
else if (m_blitterMode == 0x10)
|
||||
{
|
||||
|
@ -575,15 +585,34 @@ WRITE32_MEMBER(coolridr_state::sysh1_txt_blit_w)
|
|||
// 8: 00400040 - unknown : "Vertical|Horizontal Zoom Ratios"?
|
||||
// 9: xxxx---- - "Display Vertical Position"
|
||||
// 9: ----yyyy - "Display Horizontal Position"
|
||||
// 10: 00000000 - unknown : always seems to be zero
|
||||
// 11: ........ - complex - likely an address into bytes uploaded by mode 0xf4
|
||||
// 10: 00000000 - unknown : always seems to be zero - NO, for some things (not text) it's also a reference to 3f40000 region like #11
|
||||
// 11: ........ - complex - likely an address into bytes uploaded by mode 0xf4 (likely, it's only used when text is present otherwise it's always 0, some indirect tile mode I guess)
|
||||
// (See ifdef'ed out code below for a closer examination)
|
||||
|
||||
// Serialized counts
|
||||
if (m_blitterSerialCount == 1)
|
||||
if (m_blitterSerialCount == 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
|
||||
m_blit0 = data;
|
||||
// if (data!=0) printf("blit %08x\n", data);
|
||||
}
|
||||
else if (m_blitterSerialCount == 1)
|
||||
{
|
||||
m_colorNumber = (data & 0x000000ff); // Probably more bits
|
||||
}
|
||||
else if (m_blitterSerialCount == 2)
|
||||
{
|
||||
}
|
||||
else if (m_blitterSerialCount == 3)
|
||||
{
|
||||
}
|
||||
else if (m_blitterSerialCount == 4)
|
||||
{
|
||||
}
|
||||
else if (m_blitterSerialCount == 5)
|
||||
{
|
||||
}
|
||||
else if (m_blitterSerialCount == 6)
|
||||
{
|
||||
m_vCellCount = (data & 0xffff0000) >> 16;
|
||||
|
@ -608,8 +637,29 @@ WRITE32_MEMBER(coolridr_state::sysh1_txt_blit_w)
|
|||
if (m_hPosition & 0x8000) m_hPosition -= 0x10000;
|
||||
if (m_vPosition & 0x8000) m_vPosition -= 0x10000;
|
||||
}
|
||||
else if (m_blitterSerialCount == 10)
|
||||
{
|
||||
// this is an address on some objects..
|
||||
// to be specific, the center line of the road (actual road object? which currently gets shown as a single pixel column?)
|
||||
// and the horizontal road used in the background of the title screen (which currently looks normal)
|
||||
// I guess it's some kind of indirect way to do a line effect?
|
||||
m_blit10 = data;
|
||||
|
||||
// if (data!=0) printf("blit %08x\n", data);
|
||||
}
|
||||
else if (m_blitterSerialCount == 11)
|
||||
{
|
||||
// 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?
|
||||
|
||||
// we also use this to trigger the actual draw operation
|
||||
|
||||
//printf("blit %08x\n", data);
|
||||
|
||||
// debug, hide objects without m_blit10 set
|
||||
//if (m_blit10==0) return;
|
||||
//if (m_blit0==0) return;
|
||||
|
||||
const UINT32 memOffset = data;
|
||||
bitmap_rgb32* drawbitmap;
|
||||
|
||||
|
@ -733,6 +783,11 @@ WRITE32_MEMBER(coolridr_state::sysh1_txt_blit_w)
|
|||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("more than 11 dwords (%d) in blit?\n", m_blitterSerialCount);
|
||||
}
|
||||
|
||||
|
||||
m_blitterSerialCount++;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue