From 086800b79a1879fd5ba92ee15245cc86761b5ec6 Mon Sep 17 00:00:00 2001 From: Rainchus Date: Sun, 6 Apr 2025 18:53:55 -0500 Subject: [PATCH] fix malloc sizes of HuMemDirectMalloc calls (#579) --- .vscode/settings.json | 5 +- include/REL/m412Dll.h | 1 - include/game/animdata.h | 18 ++-- src/REL/instDll/font.c | 8 +- src/REL/m412Dll/main.c | 4 +- src/REL/m440Dll/main.c | 2 +- src/REL/mpexDll/mgname.c | 159 ++++++++++++++--------------- src/REL/ztardll/font.c | 212 ++++++++++++++++++++------------------- src/game/audio.c | 7 +- src/game/hsfman.c | 4 +- src/game/thpmain.c | 6 +- 11 files changed, 219 insertions(+), 207 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 1e7df332..64233526 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -69,7 +69,8 @@ "msghndlr.h": "c", "dispatch.h": "c", "trk.h": "c", - "debuggerdriver.h": "c" + "debuggerdriver.h": "c", + "mpexdll.h": "c" }, "search.useIgnoreFiles": false, "search.exclude": { @@ -142,4 +143,4 @@ "C_Cpp_Runner.showCompilationTime": false, "C_Cpp_Runner.useLinkTimeOptimization": false, "C_Cpp_Runner.msvcSecureNoWarnings": false -} \ No newline at end of file +} diff --git a/include/REL/m412Dll.h b/include/REL/m412Dll.h index d9749a81..c91edb68 100644 --- a/include/REL/m412Dll.h +++ b/include/REL/m412Dll.h @@ -20,7 +20,6 @@ typedef struct _unkStruct { HsfVector2f unk1C; Vec unk24; float unk30; - float unk34; } unkStruct; typedef struct _unkStruct2 { diff --git a/include/game/animdata.h b/include/game/animdata.h index 88b42cc4..63876d94 100644 --- a/include/game/animdata.h +++ b/include/game/animdata.h @@ -71,13 +71,13 @@ typedef struct anim_bmp_data { } AnimBmpData; typedef struct anim_data { - s16 bankNum; - s16 patNum; - s16 bmpNum; - s16 useNum; - AnimBankData *bank; - AnimPatData *pat; - AnimBmpData *bmp; -} AnimData; +/* 0x00 */ s16 bankNum; +/* 0x02 */ s16 patNum; +/* 0x04 */ s16 bmpNum; +/* 0x06 */ s16 useNum; +/* 0x08 */ AnimBankData *bank; +/* 0x0C */ AnimPatData *pat; +/* 0x10 */ AnimBmpData *bmp; +} AnimData; //sizeof 0x14 -#endif \ No newline at end of file +#endif diff --git a/src/REL/instDll/font.c b/src/REL/instDll/font.c index 9986bd62..f4712b09 100644 --- a/src/REL/instDll/font.c +++ b/src/REL/instDll/font.c @@ -2,6 +2,8 @@ #include "REL/instDll.h" +#define FONT_CHAR_MAX 100 + static s32 FontCharFile[0xC6] = { 0, 0, @@ -227,9 +229,9 @@ s32 FontCreate(SeqWork *work, char *mess, s16 jp_flag) if (grpNo == 0x10) { return -1; } - animP = HuMemDirectMalloc(HEAP_SYSTEM, 0x190); - posX = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8); - posY = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8); + animP = HuMemDirectMalloc(HEAP_SYSTEM, (FONT_CHAR_MAX * sizeof(AnimData*))); + posX = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posX)); + posY = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posY)); for (str = mess, len = 0, charNum = 0; str[0] != 0; str++) { if (str[0] == 0x20 || str[0] == 0x10) { diff --git a/src/REL/m412Dll/main.c b/src/REL/m412Dll/main.c index 35f10b6a..8f153855 100644 --- a/src/REL/m412Dll/main.c +++ b/src/REL/m412Dll/main.c @@ -661,7 +661,7 @@ void fn_1_2064(void) for (var_r30 = 0; var_r30 < 0x17; var_r30++) { temp_r26 = HuPrcChildCreate(fn_1_1DBC, 0x2000, 0x1000, 0, HuPrcCurrentGet()); - var_r27 = HuMemDirectMalloc(HEAP_DATA, 0x18); + var_r27 = HuMemDirectMalloc(HEAP_DATA, sizeof(unkStruct4)); temp_r26->user_data = var_r27; var_r27->unk0 = temp_r31->unk4; var_r27->unk4 = var_r30; @@ -692,7 +692,7 @@ s32 fn_1_2708(void) if (var_r31 >= 0x20) { var_r31 = -1; } - lbl_1_bss_278[var_r31] = HuMemDirectMalloc(HEAP_DATA, 0x34); + lbl_1_bss_278[var_r31] = HuMemDirectMalloc(HEAP_DATA, sizeof(unkStruct)); lbl_1_bss_278[var_r31]->unk6 = -1; lbl_1_bss_278[var_r31]->unkA = 0; return var_r31; diff --git a/src/REL/m440Dll/main.c b/src/REL/m440Dll/main.c index db82808e..85db113d 100644 --- a/src/REL/m440Dll/main.c +++ b/src/REL/m440Dll/main.c @@ -640,7 +640,7 @@ void fn_1_2470(omObjData *arg0) temp_r29 = &Hu3DData[temp_r26]; temp_r28 = temp_r29->hsfData->root; lbl_1_bss_60 = temp_r28->data.childrenCount; - lbl_1_bss_64 = HuMemDirectMalloc(HEAP_DATA, lbl_1_bss_60 * 64); + lbl_1_bss_64 = HuMemDirectMalloc(HEAP_DATA, lbl_1_bss_60 * sizeof(unkStruct6)); OSReport("Koopa Object Count %d\n", temp_r29->hsfData->objectCnt); for (var_r30 = 0; var_r30 < lbl_1_bss_60; var_r30++) { diff --git a/src/REL/mpexDll/mgname.c b/src/REL/mpexDll/mgname.c index e173ead7..0ead0fe8 100644 --- a/src/REL/mpexDll/mgname.c +++ b/src/REL/mpexDll/mgname.c @@ -13,7 +13,9 @@ #include "REL/mpexDll.h" -static s32 fontDataTbl[0xC6] = { +#define FONT_CHAR_MAX 100 + +static s32 FontCharFile[0xC6] = { 0, 0, 0, @@ -214,127 +216,126 @@ static s32 fontDataTbl[0xC6] = { 0x140025, }; -s32 fn_1_1CB80(SeqWork *arg0, u8 *arg1, s16 arg2) +s32 fn_1_1CB80(SeqWork *arg0, char *arg1, s16 arg2) { - u8 *var_r31; - s16 var_r30; - s16 *var_r29; - s16 var_r28; - s32 *var_r27; - s16 var_r26; - s32 var_r25; - s16 var_r23; - s16 *var_r22; - AnimData **var_r21; - s16 var_r20; - s16 var_r19; + char *str; + s16 len; + s16 *posY; + s16 charNum; + s32 *fileTbl; + s16 i; + s16 grpNo; + s32 file; + s16 *posX; + AnimData **animP; + s16 gid; + s16 sprid; - var_r27 = fontDataTbl; + fileTbl = FontCharFile; - for (var_r23 = 0; var_r23 < 0x10; var_r23++) { - if (arg0->spr_grp[var_r23] == -1) { + for (grpNo = 0; grpNo < 0x10; grpNo++) { + if (arg0->spr_grp[grpNo] == -1) { break; } } - if (var_r23 == 0x10) { + if (grpNo == 0x10) { return -1; } - var_r21 = HuMemDirectMalloc(HEAP_SYSTEM, 0x190); - var_r22 = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8); - var_r29 = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8); + animP = HuMemDirectMalloc(HEAP_SYSTEM, (FONT_CHAR_MAX * sizeof(AnimData*))); + posX = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posX)); + posY = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posY)); - for (var_r31 = arg1, var_r30 = 0, var_r28 = 0; var_r31[0] != 0; var_r31++) { - if (var_r31[0] == 0x20 || var_r31[0] == 0x10) { - var_r30 += 0xE; + for (str = arg1, len = 0, charNum = 0; str[0] != 0; str++) { + if (str[0] == 0x20 || str[0] == 0x10) { + len += 0xE; } - else if (var_r31[0] < 0x30 || var_r31[0] == 0x80 || var_r31[0] == 0x81) { + else if (str[0] < 0x30 || str[0] == 0x80 || str[0] == 0x81) { continue; } else { - if (var_r31[1] == 0x80) { - if ((var_r31[0] >= 0x96) && (var_r31[0] <= 0xA4)) { - var_r25 = var_r27[var_r31[0] + 0x6A]; + if (str[1] == 0x80) { + if ((str[0] >= 0x96) && (str[0] <= 0xA4)) { + file = fileTbl[str[0] + 0x6A]; } - else if ((var_r31[0] >= 0xAA) && (var_r31[0] <= 0xAE)) { - var_r25 = var_r27[var_r31[0] + 0x65]; + else if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) { + file = fileTbl[str[0] + 0x65]; } - else if ((var_r31[0] >= 0xD6) && (var_r31[0] <= 0xE4)) { - var_r25 = var_r27[var_r31[0] + 0x43]; + else if ((str[0] >= 0xD6) && (str[0] <= 0xE4)) { + file = fileTbl[str[0] + 0x43]; } - else if ((var_r31[0] >= 0xEA) && (var_r31[0] <= 0xEE)) { - var_r25 = var_r27[var_r31[0] + 0x3E]; + else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) { + file = fileTbl[str[0] + 0x3E]; } } - else if (var_r31[1] == 0x81) { - if ((var_r31[0] >= 0xAA) && (var_r31[0] <= 0xAE)) { - var_r25 = var_r27[var_r31[0] + 0x6A]; + else if (str[1] == 0x81) { + if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) { + file = fileTbl[str[0] + 0x6A]; } - else if ((var_r31[0] >= 0xEA) && (var_r31[0] <= 0xEE)) { - var_r25 = var_r27[var_r31[0] + 0x43]; + else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) { + file = fileTbl[str[0] + 0x43]; } } else { - var_r25 = var_r27[var_r31[0]]; + file = fileTbl[str[0]]; } - var_r21[var_r28] = HuSprAnimReadFile(var_r25); - var_r22[var_r28] = var_r30; - if ((var_r31[0] >= 0x61) && (var_r31[0] <= 0x7A)) { - var_r29[var_r28] = 2; - var_r30 += 0x12; + animP[charNum] = HuSprAnimReadFile(file); + posX[charNum] = len; + if ((str[0] >= 0x61) && (str[0] <= 0x7A)) { + posY[charNum] = 2; + len += 0x12; } - else if ((var_r31[0] == 0xC2) || (var_r31[0] == 0xC3)) { - var_r29[var_r28] = 0; - var_r30 += 0x12; + else if ((str[0] == 0xC2) || (str[0] == 0xC3)) { + posY[charNum] = 0; + len += 0x12; } - else if (var_r31[0] == 0x5C) { - var_r29[var_r28] = 0; - var_r30 += 8; + else if (str[0] == 0x5C) { + posY[charNum] = 0; + len += 8; } - else if ((var_r31[0] >= 0x87) && (var_r31[0] <= 0x8F)) { - var_r29[var_r28] = 4; - var_r30 += 0x18; + else if ((str[0] >= 0x87) && (str[0] <= 0x8F)) { + posY[charNum] = 4; + len += 0x18; } - else if ((var_r31[0] >= 0xC7) && (var_r31[0] <= 0xCF)) { - var_r29[var_r28] = 4; - var_r30 += 0x18; + else if ((str[0] >= 0xC7) && (str[0] <= 0xCF)) { + posY[charNum] = 4; + len += 0x18; } - else if ((var_r31[0] == 0x3D) || (var_r31[0] == 0x84)) { - var_r29[var_r28] = 0; - var_r30 += 0x14; + else if ((str[0] == 0x3D) || (str[0] == 0x84)) { + posY[charNum] = 0; + len += 0x14; } else { - var_r29[var_r28] = 0; - var_r30 += 0x1C; + posY[charNum] = 0; + len += 0x1C; } - var_r28++; + charNum++; } } - var_r20 = HuSprGrpCreate(var_r28); - arg0->spr_grp[var_r23] = var_r20; - arg0->alt_word_len = var_r30; - var_r30 = (var_r30 / 2) - 0xE; - for (var_r26 = 0; var_r26 < var_r28; var_r26++) { - var_r19 = HuSprCreate(var_r21[var_r26], 0, 0); - HuSprGrpMemberSet(var_r20, var_r26, var_r19); - HuSprPosSet(var_r20, var_r26, var_r22[var_r26] - var_r30, var_r29[var_r26]); + gid = HuSprGrpCreate(charNum); + arg0->spr_grp[grpNo] = gid; + arg0->alt_word_len = len; + len = (len / 2) - 0xE; + for (i = 0; i < charNum; i++) { + sprid = HuSprCreate(animP[i], 0, 0); + HuSprGrpMemberSet(gid, i, sprid); + HuSprPosSet(gid, i, posX[i] - len, posY[i]); } - arg0->word_len = var_r28; - HuMemDirectFree(var_r21); - HuMemDirectFree(var_r22); - HuMemDirectFree(var_r29); - return var_r20; + arg0->word_len = charNum; + HuMemDirectFree(animP); + HuMemDirectFree(posX); + HuMemDirectFree(posY); + return gid; } s32 fn_1_1D02C(s32 arg0) { SeqWork sp10; s16 spC[2]; - - u8 *var_r31; + char *var_r31; s32 var_r30; s16 var_r29; - u8 *var_r28; + char *var_r28; s32 var_r27; s32 var_r26; s16 var_r25; diff --git a/src/REL/ztardll/font.c b/src/REL/ztardll/font.c index 8dbfe634..74f9608a 100644 --- a/src/REL/ztardll/font.c +++ b/src/REL/ztardll/font.c @@ -3,6 +3,8 @@ #include "REL/ztardll.h" +#define FONT_CHAR_MAX 100 + #if VERSION_ENG s32 lbl_1_data_B0[0xC6] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, DATA_MAKE_NUM(DATADIR_INSTFONT, 0x00), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x01), DATA_MAKE_NUM(DATADIR_INSTFONT, 0x02), @@ -107,156 +109,158 @@ s32 lbl_1_data_B0[0x132] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, s32 fn_1_7754(SeqWork *work, char *mess) { - char *var_r31; - s16 var_r30; - s16 *var_r29; - s16 var_r28; - s32 *var_r27; - s16 var_r26; - s16 var_r25; - s32 var_r24; - s16 *var_r22; - AnimData **var_r21; - s16 var_r20; - s16 var_r19; + char* str; + s16 len; + s16* posY; + s16 charNum; + s32* fileTbl; + s16 i; + s16 grpNo; + s32 file; + s16 *posX; + AnimData **animP; + s16 gid; + s16 sprid; s32 var_r19_2; - var_r27 = lbl_1_data_B0; - for (var_r25 = 0; var_r25 < 0x10; var_r25++) { - if (work->spr_grp[var_r25] == -1) { + fileTbl = lbl_1_data_B0; + for (grpNo = 0; grpNo < 0x10; grpNo++) { + if (work->spr_grp[grpNo] == -1) { break; } } - if (var_r25 == 0x10) { + if (grpNo == 0x10) { return -1; } - var_r21 = HuMemDirectMalloc(HEAP_SYSTEM, 0x190); - var_r22 = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8); - var_r29 = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8); - for (var_r31 = mess, var_r30 = 0, var_r28 = 0; var_r31[0] != 0; var_r31++) { - if (var_r31[0] == 0x20 || var_r31[0] == 0x10) { - var_r30 += VERSION_JP ? 0x1C : 0xE; + + animP = HuMemDirectMalloc(HEAP_SYSTEM, (FONT_CHAR_MAX * sizeof(AnimData*))); + posX = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posX)); + posY = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posY)); + + for (str = mess, len = 0, charNum = 0; str[0] != 0; str++) { + if (str[0] == 0x20 || str[0] == 0x10) { + len += VERSION_JP ? 0x1C : 0xE; } #if VERSION_PAL - else if (*var_r31 >= 0x30) { - var_r19_2 = var_r27[*var_r31]; - var_r21[var_r28] = HuSprAnimReadFile(var_r19_2); - var_r22[var_r28] = var_r30; - if ((*var_r31 >= 0x61) && (*var_r31 <= 0x7A)) { - var_r29[var_r28] = 2; - var_r30 += 0x12; + else if (*str >= 0x30) { + var_r19_2 = fileTbl[*str]; + animP[charNum] = HuSprAnimReadFile(var_r19_2); + posX[charNum] = len; + if ((*str >= 0x61) && (*str <= 0x7A)) { + posY[charNum] = 2; + len += 0x12; } - else if ((*var_r31 == 0xC2) || (*var_r31 == 0xC3) || (*var_r31 == 0xC7)) { - var_r29[var_r28] = 0; - var_r30 += 0x12; + else if ((*str == 0xC2) || (*str == 0xC3) || (*str == 0xC7)) { + posY[charNum] = 0; + len += 0x12; } - else if (*var_r31 == 0xC6) { - var_r29[var_r28] = 0; - var_r30 += 0x18; + else if (*str == 0xC6) { + posY[charNum] = 0; + len += 0x18; } - else if (*var_r31 == 0x5C) { - var_r29[var_r28] = 0; - var_r30 += 8; + else if (*str == 0x5C) { + posY[charNum] = 0; + len += 8; } - else if ((*var_r31 >= 0x90) && (*var_r31 <= 0x9F)) { - var_r29[var_r28] = -2; - var_r30 += 0x18; + else if ((*str >= 0x90) && (*str <= 0x9F)) { + posY[charNum] = -2; + len += 0x18; } - else if ((*var_r31 >= 0xD0) && (*var_r31 <= 0xEF)) { - var_r29[var_r28] = -2; - var_r30 += 0x12; + else if ((*str >= 0xD0) && (*str <= 0xEF)) { + posY[charNum] = -2; + len += 0x12; } - else if ((*var_r31 == 0x3D) || (*var_r31 == 0x84)) { - var_r29[var_r28] = 0; - var_r30 += 0x14; + else if ((*str == 0x3D) || (*str == 0x84)) { + posY[charNum] = 0; + len += 0x14; } else { - var_r29[var_r28] = 0; - var_r30 += 0x1C; + posY[charNum] = 0; + len += 0x1C; } - var_r28++; + charNum++; } #else - else if (var_r31[0] < 0x30) { + else if (str[0] < 0x30) { } - else if (var_r31[0] == 0x80) { + else if (str[0] == 0x80) { } - else if (var_r31[0] == 0x81) { + else if (str[0] == 0x81) { } else { - if (var_r31[1] == 0x80) { - if ((var_r31[0] >= 0x96) && (var_r31[0] <= 0xA4)) { - var_r24 = var_r27[var_r31[0] + 0x6A]; + if (str[1] == 0x80) { + if ((str[0] >= 0x96) && (str[0] <= 0xA4)) { + file = fileTbl[str[0] + 0x6A]; } - else if ((var_r31[0] >= 0xAA) && (var_r31[0] <= 0xAE)) { - var_r24 = var_r27[var_r31[0] + 0x65]; + else if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) { + file = fileTbl[str[0] + 0x65]; } - else if ((var_r31[0] >= 0xD6) && (var_r31[0] <= 0xE4)) { - var_r24 = var_r27[var_r31[0] + 0x43]; + else if ((str[0] >= 0xD6) && (str[0] <= 0xE4)) { + file = fileTbl[str[0] + 0x43]; } - else if ((var_r31[0] >= 0xEA) && (var_r31[0] <= 0xEE)) { - var_r24 = var_r27[var_r31[0] + 0x3E]; + else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) { + file = fileTbl[str[0] + 0x3E]; } } - else if (var_r31[1] == 0x81) { - if ((var_r31[0] >= 0xAA) && (var_r31[0] <= 0xAE)) { - var_r24 = var_r27[var_r31[0] + 0x6A]; + else if (str[1] == 0x81) { + if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) { + file = fileTbl[str[0] + 0x6A]; } - else if ((var_r31[0] >= 0xEA) && (var_r31[0] <= 0xEE)) { - var_r24 = var_r27[var_r31[0] + 0x43]; + else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) { + file = fileTbl[str[0] + 0x43]; } } else { - var_r24 = var_r27[var_r31[0]]; + file = fileTbl[str[0]]; } - var_r21[var_r28] = HuSprAnimReadFile(var_r24); - var_r22[var_r28] = var_r30; - if ((var_r31[0] >= 0x61) && (var_r31[0] <= 0x7A)) { - var_r29[var_r28] = 2; - var_r30 += 0x12; + animP[charNum] = HuSprAnimReadFile(file); + posX[charNum] = len; + if ((str[0] >= 0x61) && (str[0] <= 0x7A)) { + posY[charNum] = 2; + len += 0x12; } - else if ((var_r31[0] == 0xC2) || (var_r31[0] == 0xC3)) { - var_r29[var_r28] = 0; - var_r30 += 0x12; + else if ((str[0] == 0xC2) || (str[0] == 0xC3)) { + posY[charNum] = 0; + len += 0x12; } - else if (var_r31[0] == 0x5C) { - var_r29[var_r28] = 0; - var_r30 += 8; + else if (str[0] == 0x5C) { + posY[charNum] = 0; + len += 8; } - else if ((var_r31[0] >= 0x87) && (var_r31[0] <= 0x8F)) { - var_r29[var_r28] = 4; - var_r30 += 0x18; + else if ((str[0] >= 0x87) && (str[0] <= 0x8F)) { + posY[charNum] = 4; + len += 0x18; } - else if ((var_r31[0] >= 0xC7) && (var_r31[0] <= 0xCF)) { - var_r29[var_r28] = 4; - var_r30 += 0x18; + else if ((str[0] >= 0xC7) && (str[0] <= 0xCF)) { + posY[charNum] = 4; + len += 0x18; } #if !VERSION_JP - else if ((var_r31[0] == 0x3D) || (var_r31[0] == 0x84)) { - var_r29[var_r28] = 0; - var_r30 += 0x14; + else if ((str[0] == 0x3D) || (str[0] == 0x84)) { + posY[charNum] = 0; + len += 0x14; } #endif else { - var_r29[var_r28] = 0; - var_r30 += 0x1C; + posY[charNum] = 0; + len += 0x1C; } - var_r28++; + charNum++; } #endif } - var_r20 = HuSprGrpCreate(var_r28); - work->spr_grp[var_r25] = var_r20; - work->alt_word_len = var_r30; - var_r30 = (var_r30 / 2) - 0xE; - for (var_r26 = 0; var_r26 < var_r28; var_r26++) { - var_r19 = HuSprCreate(var_r21[var_r26], 0, 0); - HuSprGrpMemberSet(var_r20, var_r26, var_r19); - HuSprPosSet(var_r20, var_r26, var_r22[var_r26] - var_r30, var_r29[var_r26]); + gid = HuSprGrpCreate(charNum); + work->spr_grp[grpNo] = gid; + work->alt_word_len = len; + len = (len / 2) - 0xE; + for (i = 0; i < charNum; i++) { + sprid = HuSprCreate(animP[i], 0, 0); + HuSprGrpMemberSet(gid, i, sprid); + HuSprPosSet(gid, i, posX[i] - len, posY[i]); } - work->word_len = var_r28; - HuMemDirectFree(var_r21); - HuMemDirectFree(var_r22); - HuMemDirectFree(var_r29); - return var_r25; + work->word_len = charNum; + HuMemDirectFree(animP); + HuMemDirectFree(posX); + HuMemDirectFree(posY); + return grpNo; } diff --git a/src/game/audio.c b/src/game/audio.c index 92794f6c..2227c3b7 100644 --- a/src/game/audio.c +++ b/src/game/audio.c @@ -5,6 +5,8 @@ #include "game/wipe.h" #include "game/gamework_data.h" +#define MUSIC_HEAP_SIZE 0x13FC00 + static int HuSePlay(int seId, MSM_SEPARAM *param); extern s16 omSysExitReq; @@ -32,7 +34,6 @@ static char *lbl_8012E9AC[] = { "" }; - void HuAudInit(void) { MSM_INIT msmInit; @@ -41,8 +42,8 @@ void HuAudInit(void) s32 result; s16 i; - msmInit.heap = HuMemDirectMalloc(HEAP_MUSIC, 0x13FC00); - msmInit.heapSize = 0x13FC00; + msmInit.heap = HuMemDirectMalloc(HEAP_MUSIC, MUSIC_HEAP_SIZE); + msmInit.heapSize = MUSIC_HEAP_SIZE; msmInit.msmPath = "/sound/mpgcsnd.msm"; msmInit.pdtPath = "/sound/mpgcstr.pdt"; msmInit.open = NULL; diff --git a/src/game/hsfman.c b/src/game/hsfman.c index b455a0cf..243da902 100644 --- a/src/game/hsfman.c +++ b/src/game/hsfman.c @@ -17,6 +17,8 @@ #include "math.h" #include "ext_math.h" +#define SHADOW_HEAP_SIZE 0x9000 + ModelData Hu3DData[HU3D_MODEL_MAX]; CameraData Hu3DCamera[HU3D_CAM_MAX]; static s16 layerNum[8]; @@ -1876,7 +1878,7 @@ void Hu3DFogClear(void) { void Hu3DShadowCreate(f32 arg8, f32 arg9, f32 argA) { Hu3DShadowData.unk_02 = 0xC0; if (Hu3DShadowData.unk_04 == 0) { - Hu3DShadowData.unk_04 = HuMemDirectMalloc(HEAP_DATA, 0x9000); + Hu3DShadowData.unk_04 = HuMemDirectMalloc(HEAP_DATA, SHADOW_HEAP_SIZE); } Hu3DShadowData.unk_08.x = arg8; Hu3DShadowData.unk_08.y = arg9; diff --git a/src/game/thpmain.c b/src/game/thpmain.c index d31d4639..082eb281 100755 --- a/src/game/thpmain.c +++ b/src/game/thpmain.c @@ -8,6 +8,8 @@ #include "string.h" +#define THP_DECODE_STACK_SIZE 0x2000 + static void THPTestProc(void); static void THPViewFunc(ModelData *arg0, Mtx arg1); static void THPViewSprFunc(HuSprite *arg0); @@ -153,8 +155,8 @@ static void THPTestProc(void) HuPrcVSleep(); } HuPrcVSleep(); - decodeStackP = HuMemDirectMalloc(HEAP_SYSTEM, 0x2000); - decodeThread = OSSetIdleFunction(THPDecodeFunc, NULL, decodeStackP + 0x2000, 0x2000); + decodeStackP = HuMemDirectMalloc(HEAP_SYSTEM, THP_DECODE_STACK_SIZE); + decodeThread = OSSetIdleFunction(THPDecodeFunc, NULL, (decodeStackP + THP_DECODE_STACK_SIZE), THP_DECODE_STACK_SIZE); decodeRate = 0; THPStart = 1; if (SimpleControl.unk19C == 1) {