From d8ffc596449e107b5104aad7ab007c8aec9190a3 Mon Sep 17 00:00:00 2001 From: dinkc64 <12570148+dinkc64@users.noreply.github.com> Date: Tue, 10 Oct 2017 03:19:01 +0000 Subject: [PATCH] toa_gp9001.cpp/GHOX: support multi-connected sprites for a fixed hiscore screen --- src/burn/drv/toaplan/toa_gp9001.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/burn/drv/toaplan/toa_gp9001.cpp b/src/burn/drv/toaplan/toa_gp9001.cpp index 9748e5579..4b391acce 100644 --- a/src/burn/drv/toaplan/toa_gp9001.cpp +++ b/src/burn/drv/toaplan/toa_gp9001.cpp @@ -96,6 +96,8 @@ static void RenderSpriteQueue(INT32 i, INT32 nPriority) UINT32 nSpriteNumber; INT32 x, y, xoff, yoff; INT32 nFlip; + INT32 nMultiConnectorX = GP9001Reg[i][6] & 0x1ff; + INT32 nMultiConnectorY = GP9001Reg[i][7] & 0x1ff; 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 &= 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) { xoff = -8; nSpriteXPos -= 7;