diff --git a/src/game/game_1531a0.c b/src/game/game_1531a0.c index 77cc1749a..383edb6de 100644 --- a/src/game/game_1531a0.c +++ b/src/game/game_1531a0.c @@ -45,7 +45,7 @@ u32 var8007facc = 0; s32 var8007fad0 = 1; #endif -u32 var8007fad4 = 0xffffffff; +s32 var8007fad4 = -1; u32 var8007fad8 = 0x00000000; u32 var8007fadc = 0x00000000; u32 var8007fae0 = 0x00000000; @@ -534,7 +534,7 @@ void fontsReset(void) var8007fac4 = 0; g_TextRotated90 = false; var8007facc = 0; - var8007fad4 = 0xffffffff; + var8007fad4 = -1; var8007fad8 = 0; var8007fadc = 0; var8007fae0 = 0; @@ -3972,6 +3972,135 @@ glabel func0f1552d4 ); #endif +// Mismatch: Can't match the fx and fy calculations +//Gfx *func0f1552d4(Gfx *gdl, f32 x, f32 y, f32 widthscale, f32 heightscale, +// char *text, struct fontchar *chars, struct font *font, u32 colour, s32 hdir, s32 vdir) +//{ +// s32 s2; +// u8 prevchar; +// s32 textwidth; // cc +// s32 textheight; // c8 +// s32 spc4; +// s32 spc0; +// f32 fx; +// f32 fy; +// +// s2 = 0; +// spc0 = 0; +// prevchar = 'H'; +// +//#if VERSION >= VERSION_JPN_FINAL +// spc4 = 13; +//#else +// spc4 = chars['['].height + chars['['].baseline; +// +// if (g_Jpn && spc4 < 14) { +// spc4 = 14; +// } +//#endif +// +// textMeasure(&textheight, &textwidth, text, chars, font, 0); +// +// fx = x - (widthscale - 1.0f) * textwidth * 0.5f * hdir; +// fy = y - (heightscale - 1.0f) * spc4 * 0.5f * vdir; +// +// if (fx); +// if (fy); +// +// gDPPipeSync(gdl++); +// gDPSetTextureLUT(gdl++, G_TT_IA16); +// gDPSetTextureImage(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, osVirtualToPhysical(&var8007fb3c)); +// +//#if VERSION >= VERSION_JPN_FINAL +// var80080104jf = true; +//#endif +// +// gDPLoadSync(gdl++); +// gDPLoadTLUTCmd(gdl++, 6, 15); +// gDPSetTile(gdl++, G_IM_FMT_CI, G_IM_SIZ_4b, 1, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); +// gDPSetTileSize(gdl++, G_TX_RENDERTILE, 0, 0, 0x007c, 0x007c); +// gDPSetPrimColorViaWord(gdl++, 0, 0, colour); +// gDPPipeSync(gdl++); +// +//#if VERSION >= VERSION_PAL_BETA +// if (text != NULL) { +// while (*text != '\0') { +// if (*text == ' ') { +// prevchar = 'H'; +// text += 1; +// spc0 = spc0 + var8007fad0 * 5; +// } else if (*text == '\n') { +// if (var8007fad4 >= 0 && spc0 == 0) { +// s2 += var8007fad4; +// spc0 = 0; +// } else { +// spc0 = 0; +//#if VERSION >= VERSION_JPN_FINAL +// s2 = s2 + spc4 * var80080108jf; +//#else +// s2 += spc4; +//#endif +// } +// +// prevchar = 'H'; +// text += 1; +// } else { +// struct fontchar *sp84; +// struct fontchar *sp80; +// +// textMapCodeUnitToChar(&text, &sp84, &sp80, chars, &prevchar); +// gdl = func0f154f38(gdl, &spc0, sp84, sp80, font, widthscale, heightscale, fx, fy); +// } +// } +// } +//#else +// if (text != NULL) { +// while (*text != '\0') { +// if (*text == ' ') { +// prevchar = 'H'; +// text += 1; +// spc0 = spc0 + var8007fad0 * 5; +// } else if (*text == '\n') { +// prevchar = 'H'; +// text += 1; +// +// if (var8007fad4 >= 0 && spc0 == 0) { +// s2 += var8007fad4; +// spc0 = 0; +// } else { +// spc0 = 0; +// s2 += spc4; +// } +// } else if (*text < 0x80) { +// gdl = func0f154f38(gdl, &spc0, &chars[*text - 0x21], &chars[prevchar - 0x21], font, +// widthscale, heightscale, fx, fy); +// prevchar = *text; +// text += 1; +// } else { +// u16 codepoint = ((*text & 0x7f) << 7) | (text[1] & 0x7f); +// struct fontchar tmpchar = {0, 0, 12, 13}; // var8007fbcc +// +// if (codepoint & 0x2000) { +// tmpchar.width = 15; +// tmpchar.height = 16; +// } +// +// if ((codepoint & 0x1fff) >= 0x3c8) { +// codepoint = 2; +// } +// +// tmpchar.index = codepoint + 0x80; +// tmpchar.pixeldata = (void *)lang0f16e3fc(codepoint); +// +// text += 2; +// } +// } +// } +//#endif +// +// return gdl; +//} + #if VERSION >= VERSION_JPN_FINAL GLOBAL_ASM( glabel func0f15568c diff --git a/src/include/game/game_1531a0.h b/src/include/game/game_1531a0.h index 909b5a6b0..e825b49fb 100644 --- a/src/include/game/game_1531a0.h +++ b/src/include/game/game_1531a0.h @@ -36,7 +36,7 @@ bool func0f153e58(void); u32 func0f153e94(s32 x, s32 y, u32 colour); u32 func0f1543ac(s32 arg0, s32 arg1, u32 colour); Gfx *func0f154ecc(Gfx *gdl, u32 arg1, u32 arg2); -u32 func0f154f38(void); +Gfx *func0f154f38(Gfx *gdl, s32 *arg1, struct fontchar *curchar, struct fontchar *prevchar, struct font *font, f32 widthscale, f32 heightscale, f32 x, f32 y); Gfx *func0f1552d4(Gfx *gdl, f32 x, f32 y, f32 widthscale, f32 heightscale, char *text, struct fontchar *chars, struct font *font, u32 colour, s32 hdir, s32 vdir); u32 func0f15568c(void); void func0f156024(s32 arg0);