toa_gp9001.cpp/GHOX: support multi-connected sprites for a fixed hiscore screen

This commit is contained in:
dinkc64 2017-10-10 03:19:01 +00:00
parent a99f2b56ac
commit d8ffc59644
1 changed files with 10 additions and 0 deletions

View File

@ -96,6 +96,8 @@ static void RenderSpriteQueue(INT32 i, INT32 nPriority)
UINT32 nSpriteNumber; UINT32 nSpriteNumber;
INT32 x, y, xoff, yoff; INT32 x, y, xoff, yoff;
INT32 nFlip; INT32 nFlip;
INT32 nMultiConnectorX = GP9001Reg[i][6] & 0x1ff;
INT32 nMultiConnectorY = GP9001Reg[i][7] & 0x1ff;
UINT8*** pMySpriteQueue = &pSpriteQueue[i << 4]; UINT8*** pMySpriteQueue = &pSpriteQueue[i << 4];
@ -118,6 +120,14 @@ static void RenderSpriteQueue(INT32 i, INT32 nPriority)
nSpriteYPos = ((pSpriteInfo[7] << 1) | (pSpriteInfo[6] >> 7)) + GP9001Reg[i][7] + nSpriteYOffset; nSpriteYPos = ((pSpriteInfo[7] << 1) | (pSpriteInfo[6] >> 7)) + GP9001Reg[i][7] + nSpriteYOffset;
nSpriteYPos &= 0x01FF; nSpriteYPos &= 0x01FF;
if (pSpriteInfo[1] & 0x40) { // Multi-Connected sprite mode.
nSpriteXPos = (nMultiConnectorX + (((pSpriteInfo[5] << 1) | (pSpriteInfo[4] >> 7)))) & 0x1ff;
nSpriteYPos = (nMultiConnectorY + (((pSpriteInfo[7] << 1) | (pSpriteInfo[6] >> 7)))) & 0x1ff;
}
nMultiConnectorX = nSpriteXPos;
nMultiConnectorY = nSpriteYPos;
if (nFlip & 2) { if (nFlip & 2) {
xoff = -8; xoff = -8;
nSpriteXPos -= 7; nSpriteXPos -= 7;