summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMegaMech <7255464+MegaMech@users.noreply.github.com>2024-12-04 15:03:59 -0700
committerMegaMech <7255464+MegaMech@users.noreply.github.com>2024-12-04 15:03:59 -0700
commit7628e98e37d72aa508aa1af276ef8e3485df339c (patch)
tree96421298e70638c96d7d698974a07701f068caae /include
parent7e6aba50a2a2fa80db153ad154f5ae77cc344650 (diff)
loadtile fix
Diffstat (limited to 'include')
-rw-r--r--include/mk64.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/include/mk64.h b/include/mk64.h
index 97d5ffb84..a3068f13b 100644
--- a/include/mk64.h
+++ b/include/mk64.h
@@ -138,6 +138,39 @@ void gSPDisplayListOffset(Gfx* pkt, Gfx* dl, int offset);
void gSPVertex(Gfx* pkt, uintptr_t v, int n, int v0);
void gSPInvalidateTexCache(Gfx* pkt, uintptr_t texAddr);
+// Dumb hack to fix load tile size on higher than native resolutions
+#define gMKLoadTextureTile(pkt, timg, fmt, siz, width, height, uls, ult, lrs, lrt, pal, cms, cmt, masks, maskt, \
+ shifts, shiftt) \
+ _DW({ \
+ gDPSetTextureImage(pkt, fmt, siz, width, timg); \
+ gDPSetTile(pkt, fmt, siz, (((((lrs) - (uls) + 1) * siz##_TILE_BYTES) + 7) >> 3), 0, G_TX_LOADTILE, 0, cmt, \
+ maskt, shiftt, cms, masks, shifts); \
+ gDPLoadSync(pkt); \
+ gDPLoadTile(pkt, G_TX_LOADTILE, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, \
+ (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt + 2) << G_TEXTURE_IMAGE_FRAC); \
+ gDPPipeSync(pkt); \
+ gDPSetTile(pkt, fmt, siz, (((((lrs) - (uls) + 1) * siz##_LINE_BYTES) + 7) >> 3), 0, G_TX_RENDERTILE, pal, cmt, \
+ maskt, shiftt, cms, masks, shifts); \
+ gDPSetTileSize(pkt, G_TX_RENDERTILE, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, \
+ (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt) << G_TEXTURE_IMAGE_FRAC); \
+ })
+
+#define gMKLoadTextureTile_4b(pkt, timg, fmt, width, height, uls, ult, lrs, lrt, pal, cms, cmt, masks, maskt, shifts, \
+ shiftt) \
+ _DW({ \
+ gDPSetTextureImage(pkt, fmt, G_IM_SIZ_8b, ((width) >> 1), timg); \
+ gDPSetTile(pkt, fmt, G_IM_SIZ_8b, (((((lrs) - (uls) + 1) >> 1) + 7) >> 3), 0, G_TX_LOADTILE, 0, cmt, maskt, \
+ shiftt, cms, masks, shifts); \
+ gDPLoadSync(pkt); \
+ gDPLoadTile(pkt, G_TX_LOADTILE, (uls) << (G_TEXTURE_IMAGE_FRAC - 1), (ult) << (G_TEXTURE_IMAGE_FRAC), \
+ (lrs) << (G_TEXTURE_IMAGE_FRAC - 1), (lrt + 2) << (G_TEXTURE_IMAGE_FRAC)); \
+ gDPPipeSync(pkt); \
+ gDPSetTile(pkt, fmt, G_IM_SIZ_4b, (((((lrs) - (uls) + 1) >> 1) + 7) >> 3), 0, G_TX_RENDERTILE, pal, cmt, \
+ maskt, shiftt, cms, masks, shifts); \
+ gDPSetTileSize(pkt, G_TX_RENDERTILE, (uls) << G_TEXTURE_IMAGE_FRAC, (ult) << G_TEXTURE_IMAGE_FRAC, \
+ (lrs) << G_TEXTURE_IMAGE_FRAC, (lrt) << G_TEXTURE_IMAGE_FRAC); \
+ })
+
#ifdef __cplusplus
}
#endif