Gfxprint OK (#826)

* Match last two functions as well as some cleanup

* One more small cleanup

* Reviews

* format

* Move internal GFXP_FLAG defines to c file

* Format
This commit is contained in:
Derek Hensley
2022-06-19 02:56:10 +01:00
committed by GitHub
parent 03ba917853
commit 271b7c7827
11 changed files with 183 additions and 120 deletions
+6 -6
View File
@@ -3878,7 +3878,7 @@ _DW({ \
#define gDPLoadTextureBlock_4b(pkt, timg, fmt, width, height, \
pal, cms, cmt, masks, maskt, shifts, shiftt) \
{ \
_DW({ \
gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \
gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, \
cmt, maskt, shiftt, cms, masks, shifts); \
@@ -3893,7 +3893,7 @@ _DW({ \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
})
/* Load fix rww 27jun95 */
/* The S at the end means odd lines are already word Swapped */
@@ -4246,7 +4246,7 @@ _DW({ \
#define gDPLoadMultiTile_4b(pkt, timg, tmem, rtile, 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), tmem, \
@@ -4268,7 +4268,7 @@ _DW({ \
(ult)<<G_TEXTURE_IMAGE_FRAC, \
(lrs)<<G_TEXTURE_IMAGE_FRAC, \
(lrt)<<G_TEXTURE_IMAGE_FRAC); \
}
})
#define gsDPLoadTextureTile_4b(timg, fmt, width, height, \
uls, ult, lrs, lrt, pal, \
@@ -4431,7 +4431,7 @@ _DW({ \
#ifndef _HW_VERSION_1
#define gDPLoadTLUT(pkt, count, tmemaddr, dram) \
{ \
_DW({ \
gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); \
gDPTileSync(pkt); \
gDPSetTile(pkt, 0, 0, 0, tmemaddr, \
@@ -4439,7 +4439,7 @@ _DW({ \
gDPLoadSync(pkt); \
gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, ((count)-1)); \
gDPPipeSync(pkt); \
}
})
#else /* **** WORKAROUND hardware 1 load_tlut bug ****** */
+1 -16
View File
@@ -132,22 +132,7 @@ void StackCheck_Cleanup(StackEntry* entry);
StackStatus StackCheck_GetState(StackEntry* entry);
u32 StackCheck_CheckAll(void);
u32 StackCheck_Check(StackEntry* entry);
void GfxPrint_InitDlist(GfxPrint* printer);
void GfxPrint_SetColor(GfxPrint* printer, u32 r, u32 g, u32 b, u32 a);
void GfxPrint_SetPosPx(GfxPrint* printer, s32 x, s32 y);
void GfxPrint_SetPos(GfxPrint* printer, s32 x, s32 y);
void GfxPrint_SetBasePosPx(GfxPrint* printer, s32 x, s32 y);
void GfxPrint_PrintCharImpl(GfxPrint* printer, u8 c);
void GfxPrint_PrintChar(GfxPrint* printer, u8 c);
void GfxPrint_PrintStringWithSize(GfxPrint* printer, const void* buffer, size_t charSize, size_t charCount);
void GfxPrint_PrintString(GfxPrint* printer, const char* str);
GfxPrint* GfxPrint_Callback(GfxPrint* printer, const char* str, size_t size);
void GfxPrint_Init(GfxPrint* printer);
void GfxPrint_Destroy(GfxPrint* printer);
void GfxPrint_Open(GfxPrint* printer, Gfx* dList);
Gfx* GfxPrint_Close(GfxPrint* printer);
s32 GfxPrint_VPrintf(GfxPrint* printer, const char* fmt, va_list args);
s32 GfxPrint_Printf(GfxPrint* printer, const char* fmt, ...);
void MtxConv_F2L(Mtx* m1, MtxF* m2);
void MtxConv_L2F(MtxF* m1, Mtx* m2);
void __assert(const char* file, u32 lineNum);
+49
View File
@@ -0,0 +1,49 @@
#ifndef GFXPRINT_H
#define GFXPRINT_H
#include "color.h"
#include "PR/gbi.h"
#include "PR/ultratypes.h"
#include "xstdio.h"
#define GFXP_UNUSED "\x8E"
#define GFXP_UNUSED_CHAR 0x8E
#define GFXP_HIRAGANA "\x8D"
#define GFXP_HIRAGANA_CHAR 0x8D
#define GFXP_KATAKANA "\x8C"
#define GFXP_KATAKANA_CHAR 0x8C
#define GFXP_RAINBOW_ON "\x8B"
#define GFXP_RAINBOW_ON_CHAR 0x8B
#define GFXP_RAINBOW_OFF "\x8A"
#define GFXP_RAINBOW_OFF_CHAR 0x8A
typedef struct GfxPrint {
/* 0x00 */ PrintCallback callback;
/* 0x04 */ Gfx* dList;
/* 0x08 */ u16 posX;
/* 0x0A */ u16 posY;
/* 0x0C */ u16 baseX;
/* 0x0E */ u8 baseY;
/* 0x0F */ u8 flags;
/* 0x10 */ Color_RGBA8_u32 color;
/* 0x14 */ UNK_TYPE1 unk_14[0x1C]; // unused
} GfxPrint; // size = 0x30
void GfxPrint_Setup(GfxPrint* printer);
void GfxPrint_SetColor(GfxPrint* printer, u32 r, u32 g, u32 b, u32 a);
void GfxPrint_SetPosPx(GfxPrint* printer, s32 x, s32 y);
void GfxPrint_SetPos(GfxPrint* printer, s32 x, s32 y);
void GfxPrint_SetBasePosPx(GfxPrint* printer, s32 x, s32 y);
void GfxPrint_PrintCharImpl(GfxPrint* printer, u8 c);
void GfxPrint_PrintChar(GfxPrint* printer, u8 c);
void GfxPrint_PrintStringWithSize(GfxPrint* printer, const void* buffer, size_t charSize, size_t charCount);
void GfxPrint_PrintString(GfxPrint* printer, const char* str);
void* GfxPrint_Callback(void* arg, const char* str, size_t size);
void GfxPrint_Init(GfxPrint* printer);
void GfxPrint_Destroy(GfxPrint* printer);
void GfxPrint_Open(GfxPrint* printer, Gfx* dList);
Gfx* GfxPrint_Close(GfxPrint* printer);
s32 GfxPrint_VPrintf(GfxPrint* printer, const char* fmt, va_list args);
s32 GfxPrint_Printf(GfxPrint* printer, const char* fmt, ...);
#endif
+2 -2
View File
@@ -40,8 +40,8 @@ extern UNK_TYPE4 D_80096C30;
extern StackEntry* sStackInfoListStart;
extern StackEntry* sStackInfoListEnd;
// extern UNK_TYPE1 sGfxPrintFontTLUT;
// extern UNK_TYPE1 sGfxPrintUnkTLUT;
// extern UNK_TYPE1 sGfxPrintUnkData;
// extern UNK_TYPE1 sGfxPrintRainbowTLUT;
// extern UNK_TYPE1 sGfxPrintRainbowData;
// extern UNK_TYPE1 sGfxPrintFontData;
// extern UNK_TYPE4 D_80097524;
// extern u32 sRandInt;
+1 -21
View File
@@ -23,6 +23,7 @@
#include "sfx.h"
#include "message_data_static.h"
#include "gfxprint.h"
#include "sys_matrix.h"
#include "z64actor.h"
#include "z64animation.h"
@@ -416,27 +417,6 @@ typedef struct {
/* 0x38 */ FaultDrawerCallback inputCallback;
} FaultDrawer; // size = 0x3C
typedef struct GfxPrint {
/* 0x00 */ struct GfxPrint *(*callback)(struct GfxPrint*, const char*, size_t);
/* 0x04 */ Gfx* dlist;
/* 0x08 */ u16 posX;
/* 0x0A */ u16 posY;
/* 0x0C */ u16 baseX;
/* 0x0E */ u8 baseY;
/* 0x0F */ u8 flag;
/* 0x10 */ Color_RGBA8_u32 color;
/* 0x14 */ char unk_14[0x1C]; // unused
} GfxPrint; // size = 0x30
typedef enum {
GFXPRINT_FLAG1 = 1,
GFXPRINT_USE_RGBA16 = 2,
GFXPRINT_FLAG4 = 4,
GFXPRINT_UPDATE_MODE = 8,
GFXPRINT_FLAG64 = 0x40,
GFXPRINT_OPEN = 0x80
} GfxPrintFlag;
typedef struct {
/* 0x00 */ u8 countdown;
/* 0x01 */ u8 playSfxEachFrame;