1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-02 09:03:37 +00:00

Add originalMaskT, originalMaskS fields for struct gDPTile.

masks and maskt set by gDPSetTile, but _calcTileSizes may change them if actual
tile dimension do not correspond the mask. This creates problem for S2DEX_BG_1Cyc command,
which set tile masks and maskt to maximum, while actual size of loaded tiles may vary.
_calcTileSizes may set new values for masks and maskt, which are valid for the current tile but invalid for next ones.
Thus, original values of tile masks and maskt must be restored when tile size calculated again in _calcTileSizes.
This commit is contained in:
Sergey Lipskiy 2018-09-20 09:46:13 +07:00
parent fa2b0793e0
commit 9ac633d2ea
3 changed files with 5 additions and 2 deletions

View File

@ -587,6 +587,8 @@ static
void _calcTileSizes(u32 _t, TileSizes & _sizes, gDPTile * _pLoadTile)
{
gDPTile * pTile = _t < 2 ? gSP.textureTile[_t] : &gDP.tiles[_t];
pTile->masks = pTile->originalMaskS;
pTile->maskt = pTile->originalMaskT;
const TextureLoadParameters & loadParams =
ImageFormat::get().tlp[gDP.otherMode.textureLUT][pTile->size][pTile->format];

View File

@ -260,8 +260,8 @@ void gDPSetTile( u32 format, u32 size, u32 line, u32 tmem, u32 tile, u32 palette
gDP.tiles[tile].palette = palette;
gDP.tiles[tile].cmt = cmt;
gDP.tiles[tile].cms = cms;
gDP.tiles[tile].maskt = maskt;
gDP.tiles[tile].masks = masks;
gDP.tiles[tile].maskt = gDP.tiles[tile].originalMaskT = maskt;
gDP.tiles[tile].masks = gDP.tiles[tile].originalMaskS = masks;
gDP.tiles[tile].shiftt = shiftt;
gDP.tiles[tile].shifts = shifts;

View File

@ -87,6 +87,7 @@ struct gDPTile
};
u32 maskt, masks;
u32 originalMaskT, originalMaskS;
u32 shiftt, shifts;
f32 fuls, fult, flrs, flrt;
u32 uls, ult, lrs, lrt;