From 83e1ccb72e1c54ae9b91bb36a282163e093ebb45 Mon Sep 17 00:00:00 2001 From: Sergey Lipskiy Date: Wed, 5 Sep 2018 23:18:50 +0700 Subject: [PATCH] Remove hack for Banjo-Tooie Groggy Crash #1250 added in 8fbd1d030b Writes to TMEM protected by masking TMEM write address, so it is not necessary anymore. Rearrange the code a bit. Fixed NBA Live 99 messed up textures #1826 --- src/gDP.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/gDP.cpp b/src/gDP.cpp index 6e103874..9d23e4fa 100644 --- a/src/gDP.cpp +++ b/src/gDP.cpp @@ -632,17 +632,13 @@ void gDPLoadTLUT( u32 tile, u32 uls, u32 ult, u32 lrs, u32 lrt ) u16 count = (u16)((gDP.tiles[tile].lrs - gDP.tiles[tile].uls + 1) * (gDP.tiles[tile].lrt - gDP.tiles[tile].ult + 1)); u32 address = gDP.textureImage.address + gDP.tiles[tile].ult * gDP.textureImage.bpl + (gDP.tiles[tile].uls << gDP.textureImage.size >> 1); u16 pal = (u16)((gDP.tiles[tile].tmem - 256) >> 4); - u16 *dest = (u16*)&TMEM[gDP.tiles[tile].tmem]; - - // Workaround for possible game/emulator bug (see bug #1250) - if (pal != 0) - count = 16; + u16 * dest = reinterpret_cast(TMEM); + u32 destIdx = gDP.tiles[tile].tmem << 2; int i = 0; - u32 destIdx = 0; while (i < count) { for (u16 j = 0; (j < 16) && (i < count); ++j, ++i) { - dest[destIdx&0x3FF] = swapword(*(u16*)(RDRAM + (address ^ 2))); + dest[(destIdx | 0x0400) & 0x07FF] = swapword(*(u16*)(RDRAM + (address ^ 2))); address += 2; destIdx += 4; }