fix malloc sizes of HuMemDirectMalloc calls (#579)

This commit is contained in:
Rainchus 2025-04-06 18:53:55 -05:00 committed by GitHub
parent 887cb00c5b
commit 086800b79a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 219 additions and 207 deletions

View file

@ -69,7 +69,8 @@
"msghndlr.h": "c", "msghndlr.h": "c",
"dispatch.h": "c", "dispatch.h": "c",
"trk.h": "c", "trk.h": "c",
"debuggerdriver.h": "c" "debuggerdriver.h": "c",
"mpexdll.h": "c"
}, },
"search.useIgnoreFiles": false, "search.useIgnoreFiles": false,
"search.exclude": { "search.exclude": {
@ -142,4 +143,4 @@
"C_Cpp_Runner.showCompilationTime": false, "C_Cpp_Runner.showCompilationTime": false,
"C_Cpp_Runner.useLinkTimeOptimization": false, "C_Cpp_Runner.useLinkTimeOptimization": false,
"C_Cpp_Runner.msvcSecureNoWarnings": false "C_Cpp_Runner.msvcSecureNoWarnings": false
} }

View file

@ -20,7 +20,6 @@ typedef struct _unkStruct {
HsfVector2f unk1C; HsfVector2f unk1C;
Vec unk24; Vec unk24;
float unk30; float unk30;
float unk34;
} unkStruct; } unkStruct;
typedef struct _unkStruct2 { typedef struct _unkStruct2 {

View file

@ -71,13 +71,13 @@ typedef struct anim_bmp_data {
} AnimBmpData; } AnimBmpData;
typedef struct anim_data { typedef struct anim_data {
s16 bankNum; /* 0x00 */ s16 bankNum;
s16 patNum; /* 0x02 */ s16 patNum;
s16 bmpNum; /* 0x04 */ s16 bmpNum;
s16 useNum; /* 0x06 */ s16 useNum;
AnimBankData *bank; /* 0x08 */ AnimBankData *bank;
AnimPatData *pat; /* 0x0C */ AnimPatData *pat;
AnimBmpData *bmp; /* 0x10 */ AnimBmpData *bmp;
} AnimData; } AnimData; //sizeof 0x14
#endif #endif

View file

@ -2,6 +2,8 @@
#include "REL/instDll.h" #include "REL/instDll.h"
#define FONT_CHAR_MAX 100
static s32 FontCharFile[0xC6] = { static s32 FontCharFile[0xC6] = {
0, 0,
0, 0,
@ -227,9 +229,9 @@ s32 FontCreate(SeqWork *work, char *mess, s16 jp_flag)
if (grpNo == 0x10) { if (grpNo == 0x10) {
return -1; return -1;
} }
animP = HuMemDirectMalloc(HEAP_SYSTEM, 0x190); animP = HuMemDirectMalloc(HEAP_SYSTEM, (FONT_CHAR_MAX * sizeof(AnimData*)));
posX = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8); posX = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posX));
posY = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8); posY = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posY));
for (str = mess, len = 0, charNum = 0; str[0] != 0; str++) { for (str = mess, len = 0, charNum = 0; str[0] != 0; str++) {
if (str[0] == 0x20 || str[0] == 0x10) { if (str[0] == 0x20 || str[0] == 0x10) {

View file

@ -661,7 +661,7 @@ void fn_1_2064(void)
for (var_r30 = 0; var_r30 < 0x17; var_r30++) { for (var_r30 = 0; var_r30 < 0x17; var_r30++) {
temp_r26 = HuPrcChildCreate(fn_1_1DBC, 0x2000, 0x1000, 0, HuPrcCurrentGet()); 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; temp_r26->user_data = var_r27;
var_r27->unk0 = temp_r31->unk4; var_r27->unk0 = temp_r31->unk4;
var_r27->unk4 = var_r30; var_r27->unk4 = var_r30;
@ -692,7 +692,7 @@ s32 fn_1_2708(void)
if (var_r31 >= 0x20) { if (var_r31 >= 0x20) {
var_r31 = -1; 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]->unk6 = -1;
lbl_1_bss_278[var_r31]->unkA = 0; lbl_1_bss_278[var_r31]->unkA = 0;
return var_r31; return var_r31;

View file

@ -640,7 +640,7 @@ void fn_1_2470(omObjData *arg0)
temp_r29 = &Hu3DData[temp_r26]; temp_r29 = &Hu3DData[temp_r26];
temp_r28 = temp_r29->hsfData->root; temp_r28 = temp_r29->hsfData->root;
lbl_1_bss_60 = temp_r28->data.childrenCount; 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); OSReport("Koopa Object Count %d\n", temp_r29->hsfData->objectCnt);
for (var_r30 = 0; var_r30 < lbl_1_bss_60; var_r30++) { for (var_r30 = 0; var_r30 < lbl_1_bss_60; var_r30++) {

View file

@ -13,7 +13,9 @@
#include "REL/mpexDll.h" #include "REL/mpexDll.h"
static s32 fontDataTbl[0xC6] = { #define FONT_CHAR_MAX 100
static s32 FontCharFile[0xC6] = {
0, 0,
0, 0,
0, 0,
@ -214,127 +216,126 @@ static s32 fontDataTbl[0xC6] = {
0x140025, 0x140025,
}; };
s32 fn_1_1CB80(SeqWork *arg0, u8 *arg1, s16 arg2) s32 fn_1_1CB80(SeqWork *arg0, char *arg1, s16 arg2)
{ {
u8 *var_r31; char *str;
s16 var_r30; s16 len;
s16 *var_r29; s16 *posY;
s16 var_r28; s16 charNum;
s32 *var_r27; s32 *fileTbl;
s16 var_r26; s16 i;
s32 var_r25; s16 grpNo;
s16 var_r23; s32 file;
s16 *var_r22; s16 *posX;
AnimData **var_r21; AnimData **animP;
s16 var_r20; s16 gid;
s16 var_r19; s16 sprid;
var_r27 = fontDataTbl; fileTbl = FontCharFile;
for (var_r23 = 0; var_r23 < 0x10; var_r23++) { for (grpNo = 0; grpNo < 0x10; grpNo++) {
if (arg0->spr_grp[var_r23] == -1) { if (arg0->spr_grp[grpNo] == -1) {
break; break;
} }
} }
if (var_r23 == 0x10) { if (grpNo == 0x10) {
return -1; return -1;
} }
var_r21 = HuMemDirectMalloc(HEAP_SYSTEM, 0x190); animP = HuMemDirectMalloc(HEAP_SYSTEM, (FONT_CHAR_MAX * sizeof(AnimData*)));
var_r22 = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8); posX = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posX));
var_r29 = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8); 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++) { for (str = arg1, len = 0, charNum = 0; str[0] != 0; str++) {
if (var_r31[0] == 0x20 || var_r31[0] == 0x10) { if (str[0] == 0x20 || str[0] == 0x10) {
var_r30 += 0xE; 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; continue;
} }
else { else {
if (var_r31[1] == 0x80) { if (str[1] == 0x80) {
if ((var_r31[0] >= 0x96) && (var_r31[0] <= 0xA4)) { if ((str[0] >= 0x96) && (str[0] <= 0xA4)) {
var_r25 = var_r27[var_r31[0] + 0x6A]; file = fileTbl[str[0] + 0x6A];
} }
else if ((var_r31[0] >= 0xAA) && (var_r31[0] <= 0xAE)) { else if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) {
var_r25 = var_r27[var_r31[0] + 0x65]; file = fileTbl[str[0] + 0x65];
} }
else if ((var_r31[0] >= 0xD6) && (var_r31[0] <= 0xE4)) { else if ((str[0] >= 0xD6) && (str[0] <= 0xE4)) {
var_r25 = var_r27[var_r31[0] + 0x43]; file = fileTbl[str[0] + 0x43];
} }
else if ((var_r31[0] >= 0xEA) && (var_r31[0] <= 0xEE)) { else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) {
var_r25 = var_r27[var_r31[0] + 0x3E]; file = fileTbl[str[0] + 0x3E];
} }
} }
else if (var_r31[1] == 0x81) { else if (str[1] == 0x81) {
if ((var_r31[0] >= 0xAA) && (var_r31[0] <= 0xAE)) { if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) {
var_r25 = var_r27[var_r31[0] + 0x6A]; file = fileTbl[str[0] + 0x6A];
} }
else if ((var_r31[0] >= 0xEA) && (var_r31[0] <= 0xEE)) { else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) {
var_r25 = var_r27[var_r31[0] + 0x43]; file = fileTbl[str[0] + 0x43];
} }
} }
else { else {
var_r25 = var_r27[var_r31[0]]; file = fileTbl[str[0]];
} }
var_r21[var_r28] = HuSprAnimReadFile(var_r25); animP[charNum] = HuSprAnimReadFile(file);
var_r22[var_r28] = var_r30; posX[charNum] = len;
if ((var_r31[0] >= 0x61) && (var_r31[0] <= 0x7A)) { if ((str[0] >= 0x61) && (str[0] <= 0x7A)) {
var_r29[var_r28] = 2; posY[charNum] = 2;
var_r30 += 0x12; len += 0x12;
} }
else if ((var_r31[0] == 0xC2) || (var_r31[0] == 0xC3)) { else if ((str[0] == 0xC2) || (str[0] == 0xC3)) {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 0x12; len += 0x12;
} }
else if (var_r31[0] == 0x5C) { else if (str[0] == 0x5C) {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 8; len += 8;
} }
else if ((var_r31[0] >= 0x87) && (var_r31[0] <= 0x8F)) { else if ((str[0] >= 0x87) && (str[0] <= 0x8F)) {
var_r29[var_r28] = 4; posY[charNum] = 4;
var_r30 += 0x18; len += 0x18;
} }
else if ((var_r31[0] >= 0xC7) && (var_r31[0] <= 0xCF)) { else if ((str[0] >= 0xC7) && (str[0] <= 0xCF)) {
var_r29[var_r28] = 4; posY[charNum] = 4;
var_r30 += 0x18; len += 0x18;
} }
else if ((var_r31[0] == 0x3D) || (var_r31[0] == 0x84)) { else if ((str[0] == 0x3D) || (str[0] == 0x84)) {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 0x14; len += 0x14;
} }
else { else {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 0x1C; len += 0x1C;
} }
var_r28++; charNum++;
} }
} }
var_r20 = HuSprGrpCreate(var_r28); gid = HuSprGrpCreate(charNum);
arg0->spr_grp[var_r23] = var_r20; arg0->spr_grp[grpNo] = gid;
arg0->alt_word_len = var_r30; arg0->alt_word_len = len;
var_r30 = (var_r30 / 2) - 0xE; len = (len / 2) - 0xE;
for (var_r26 = 0; var_r26 < var_r28; var_r26++) { for (i = 0; i < charNum; i++) {
var_r19 = HuSprCreate(var_r21[var_r26], 0, 0); sprid = HuSprCreate(animP[i], 0, 0);
HuSprGrpMemberSet(var_r20, var_r26, var_r19); HuSprGrpMemberSet(gid, i, sprid);
HuSprPosSet(var_r20, var_r26, var_r22[var_r26] - var_r30, var_r29[var_r26]); HuSprPosSet(gid, i, posX[i] - len, posY[i]);
} }
arg0->word_len = var_r28; arg0->word_len = charNum;
HuMemDirectFree(var_r21); HuMemDirectFree(animP);
HuMemDirectFree(var_r22); HuMemDirectFree(posX);
HuMemDirectFree(var_r29); HuMemDirectFree(posY);
return var_r20; return gid;
} }
s32 fn_1_1D02C(s32 arg0) s32 fn_1_1D02C(s32 arg0)
{ {
SeqWork sp10; SeqWork sp10;
s16 spC[2]; s16 spC[2];
char *var_r31;
u8 *var_r31;
s32 var_r30; s32 var_r30;
s16 var_r29; s16 var_r29;
u8 *var_r28; char *var_r28;
s32 var_r27; s32 var_r27;
s32 var_r26; s32 var_r26;
s16 var_r25; s16 var_r25;

View file

@ -3,6 +3,8 @@
#include "REL/ztardll.h" #include "REL/ztardll.h"
#define FONT_CHAR_MAX 100
#if VERSION_ENG #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, 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), 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) s32 fn_1_7754(SeqWork *work, char *mess)
{ {
char *var_r31; char* str;
s16 var_r30; s16 len;
s16 *var_r29; s16* posY;
s16 var_r28; s16 charNum;
s32 *var_r27; s32* fileTbl;
s16 var_r26; s16 i;
s16 var_r25; s16 grpNo;
s32 var_r24; s32 file;
s16 *var_r22; s16 *posX;
AnimData **var_r21; AnimData **animP;
s16 var_r20; s16 gid;
s16 var_r19; s16 sprid;
s32 var_r19_2; s32 var_r19_2;
var_r27 = lbl_1_data_B0; fileTbl = lbl_1_data_B0;
for (var_r25 = 0; var_r25 < 0x10; var_r25++) { for (grpNo = 0; grpNo < 0x10; grpNo++) {
if (work->spr_grp[var_r25] == -1) { if (work->spr_grp[grpNo] == -1) {
break; break;
} }
} }
if (var_r25 == 0x10) { if (grpNo == 0x10) {
return -1; return -1;
} }
var_r21 = HuMemDirectMalloc(HEAP_SYSTEM, 0x190);
var_r22 = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8); animP = HuMemDirectMalloc(HEAP_SYSTEM, (FONT_CHAR_MAX * sizeof(AnimData*)));
var_r29 = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8); posX = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posX));
for (var_r31 = mess, var_r30 = 0, var_r28 = 0; var_r31[0] != 0; var_r31++) { posY = HuMemDirectMalloc(HEAP_SYSTEM, FONT_CHAR_MAX * sizeof(*posY));
if (var_r31[0] == 0x20 || var_r31[0] == 0x10) {
var_r30 += VERSION_JP ? 0x1C : 0xE; 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 #if VERSION_PAL
else if (*var_r31 >= 0x30) { else if (*str >= 0x30) {
var_r19_2 = var_r27[*var_r31]; var_r19_2 = fileTbl[*str];
var_r21[var_r28] = HuSprAnimReadFile(var_r19_2); animP[charNum] = HuSprAnimReadFile(var_r19_2);
var_r22[var_r28] = var_r30; posX[charNum] = len;
if ((*var_r31 >= 0x61) && (*var_r31 <= 0x7A)) { if ((*str >= 0x61) && (*str <= 0x7A)) {
var_r29[var_r28] = 2; posY[charNum] = 2;
var_r30 += 0x12; len += 0x12;
} }
else if ((*var_r31 == 0xC2) || (*var_r31 == 0xC3) || (*var_r31 == 0xC7)) { else if ((*str == 0xC2) || (*str == 0xC3) || (*str == 0xC7)) {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 0x12; len += 0x12;
} }
else if (*var_r31 == 0xC6) { else if (*str == 0xC6) {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 0x18; len += 0x18;
} }
else if (*var_r31 == 0x5C) { else if (*str == 0x5C) {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 8; len += 8;
} }
else if ((*var_r31 >= 0x90) && (*var_r31 <= 0x9F)) { else if ((*str >= 0x90) && (*str <= 0x9F)) {
var_r29[var_r28] = -2; posY[charNum] = -2;
var_r30 += 0x18; len += 0x18;
} }
else if ((*var_r31 >= 0xD0) && (*var_r31 <= 0xEF)) { else if ((*str >= 0xD0) && (*str <= 0xEF)) {
var_r29[var_r28] = -2; posY[charNum] = -2;
var_r30 += 0x12; len += 0x12;
} }
else if ((*var_r31 == 0x3D) || (*var_r31 == 0x84)) { else if ((*str == 0x3D) || (*str == 0x84)) {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 0x14; len += 0x14;
} }
else { else {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 0x1C; len += 0x1C;
} }
var_r28++; charNum++;
} }
#else #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 { else {
if (var_r31[1] == 0x80) { if (str[1] == 0x80) {
if ((var_r31[0] >= 0x96) && (var_r31[0] <= 0xA4)) { if ((str[0] >= 0x96) && (str[0] <= 0xA4)) {
var_r24 = var_r27[var_r31[0] + 0x6A]; file = fileTbl[str[0] + 0x6A];
} }
else if ((var_r31[0] >= 0xAA) && (var_r31[0] <= 0xAE)) { else if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) {
var_r24 = var_r27[var_r31[0] + 0x65]; file = fileTbl[str[0] + 0x65];
} }
else if ((var_r31[0] >= 0xD6) && (var_r31[0] <= 0xE4)) { else if ((str[0] >= 0xD6) && (str[0] <= 0xE4)) {
var_r24 = var_r27[var_r31[0] + 0x43]; file = fileTbl[str[0] + 0x43];
} }
else if ((var_r31[0] >= 0xEA) && (var_r31[0] <= 0xEE)) { else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) {
var_r24 = var_r27[var_r31[0] + 0x3E]; file = fileTbl[str[0] + 0x3E];
} }
} }
else if (var_r31[1] == 0x81) { else if (str[1] == 0x81) {
if ((var_r31[0] >= 0xAA) && (var_r31[0] <= 0xAE)) { if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) {
var_r24 = var_r27[var_r31[0] + 0x6A]; file = fileTbl[str[0] + 0x6A];
} }
else if ((var_r31[0] >= 0xEA) && (var_r31[0] <= 0xEE)) { else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) {
var_r24 = var_r27[var_r31[0] + 0x43]; file = fileTbl[str[0] + 0x43];
} }
} }
else { else {
var_r24 = var_r27[var_r31[0]]; file = fileTbl[str[0]];
} }
var_r21[var_r28] = HuSprAnimReadFile(var_r24); animP[charNum] = HuSprAnimReadFile(file);
var_r22[var_r28] = var_r30; posX[charNum] = len;
if ((var_r31[0] >= 0x61) && (var_r31[0] <= 0x7A)) { if ((str[0] >= 0x61) && (str[0] <= 0x7A)) {
var_r29[var_r28] = 2; posY[charNum] = 2;
var_r30 += 0x12; len += 0x12;
} }
else if ((var_r31[0] == 0xC2) || (var_r31[0] == 0xC3)) { else if ((str[0] == 0xC2) || (str[0] == 0xC3)) {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 0x12; len += 0x12;
} }
else if (var_r31[0] == 0x5C) { else if (str[0] == 0x5C) {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 8; len += 8;
} }
else if ((var_r31[0] >= 0x87) && (var_r31[0] <= 0x8F)) { else if ((str[0] >= 0x87) && (str[0] <= 0x8F)) {
var_r29[var_r28] = 4; posY[charNum] = 4;
var_r30 += 0x18; len += 0x18;
} }
else if ((var_r31[0] >= 0xC7) && (var_r31[0] <= 0xCF)) { else if ((str[0] >= 0xC7) && (str[0] <= 0xCF)) {
var_r29[var_r28] = 4; posY[charNum] = 4;
var_r30 += 0x18; len += 0x18;
} }
#if !VERSION_JP #if !VERSION_JP
else if ((var_r31[0] == 0x3D) || (var_r31[0] == 0x84)) { else if ((str[0] == 0x3D) || (str[0] == 0x84)) {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 0x14; len += 0x14;
} }
#endif #endif
else { else {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 0x1C; len += 0x1C;
} }
var_r28++; charNum++;
} }
#endif #endif
} }
var_r20 = HuSprGrpCreate(var_r28); gid = HuSprGrpCreate(charNum);
work->spr_grp[var_r25] = var_r20; work->spr_grp[grpNo] = gid;
work->alt_word_len = var_r30; work->alt_word_len = len;
var_r30 = (var_r30 / 2) - 0xE; len = (len / 2) - 0xE;
for (var_r26 = 0; var_r26 < var_r28; var_r26++) { for (i = 0; i < charNum; i++) {
var_r19 = HuSprCreate(var_r21[var_r26], 0, 0); sprid = HuSprCreate(animP[i], 0, 0);
HuSprGrpMemberSet(var_r20, var_r26, var_r19); HuSprGrpMemberSet(gid, i, sprid);
HuSprPosSet(var_r20, var_r26, var_r22[var_r26] - var_r30, var_r29[var_r26]); HuSprPosSet(gid, i, posX[i] - len, posY[i]);
} }
work->word_len = var_r28; work->word_len = charNum;
HuMemDirectFree(var_r21); HuMemDirectFree(animP);
HuMemDirectFree(var_r22); HuMemDirectFree(posX);
HuMemDirectFree(var_r29); HuMemDirectFree(posY);
return var_r25; return grpNo;
} }

View file

@ -5,6 +5,8 @@
#include "game/wipe.h" #include "game/wipe.h"
#include "game/gamework_data.h" #include "game/gamework_data.h"
#define MUSIC_HEAP_SIZE 0x13FC00
static int HuSePlay(int seId, MSM_SEPARAM *param); static int HuSePlay(int seId, MSM_SEPARAM *param);
extern s16 omSysExitReq; extern s16 omSysExitReq;
@ -32,7 +34,6 @@ static char *lbl_8012E9AC[] = {
"" ""
}; };
void HuAudInit(void) void HuAudInit(void)
{ {
MSM_INIT msmInit; MSM_INIT msmInit;
@ -41,8 +42,8 @@ void HuAudInit(void)
s32 result; s32 result;
s16 i; s16 i;
msmInit.heap = HuMemDirectMalloc(HEAP_MUSIC, 0x13FC00); msmInit.heap = HuMemDirectMalloc(HEAP_MUSIC, MUSIC_HEAP_SIZE);
msmInit.heapSize = 0x13FC00; msmInit.heapSize = MUSIC_HEAP_SIZE;
msmInit.msmPath = "/sound/mpgcsnd.msm"; msmInit.msmPath = "/sound/mpgcsnd.msm";
msmInit.pdtPath = "/sound/mpgcstr.pdt"; msmInit.pdtPath = "/sound/mpgcstr.pdt";
msmInit.open = NULL; msmInit.open = NULL;

View file

@ -17,6 +17,8 @@
#include "math.h" #include "math.h"
#include "ext_math.h" #include "ext_math.h"
#define SHADOW_HEAP_SIZE 0x9000
ModelData Hu3DData[HU3D_MODEL_MAX]; ModelData Hu3DData[HU3D_MODEL_MAX];
CameraData Hu3DCamera[HU3D_CAM_MAX]; CameraData Hu3DCamera[HU3D_CAM_MAX];
static s16 layerNum[8]; static s16 layerNum[8];
@ -1876,7 +1878,7 @@ void Hu3DFogClear(void) {
void Hu3DShadowCreate(f32 arg8, f32 arg9, f32 argA) { void Hu3DShadowCreate(f32 arg8, f32 arg9, f32 argA) {
Hu3DShadowData.unk_02 = 0xC0; Hu3DShadowData.unk_02 = 0xC0;
if (Hu3DShadowData.unk_04 == 0) { 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.x = arg8;
Hu3DShadowData.unk_08.y = arg9; Hu3DShadowData.unk_08.y = arg9;

View file

@ -8,6 +8,8 @@
#include "string.h" #include "string.h"
#define THP_DECODE_STACK_SIZE 0x2000
static void THPTestProc(void); static void THPTestProc(void);
static void THPViewFunc(ModelData *arg0, Mtx arg1); static void THPViewFunc(ModelData *arg0, Mtx arg1);
static void THPViewSprFunc(HuSprite *arg0); static void THPViewSprFunc(HuSprite *arg0);
@ -153,8 +155,8 @@ static void THPTestProc(void)
HuPrcVSleep(); HuPrcVSleep();
} }
HuPrcVSleep(); HuPrcVSleep();
decodeStackP = HuMemDirectMalloc(HEAP_SYSTEM, 0x2000); decodeStackP = HuMemDirectMalloc(HEAP_SYSTEM, THP_DECODE_STACK_SIZE);
decodeThread = OSSetIdleFunction(THPDecodeFunc, NULL, decodeStackP + 0x2000, 0x2000); decodeThread = OSSetIdleFunction(THPDecodeFunc, NULL, (decodeStackP + THP_DECODE_STACK_SIZE), THP_DECODE_STACK_SIZE);
decodeRate = 0; decodeRate = 0;
THPStart = 1; THPStart = 1;
if (SimpleControl.unk19C == 1) { if (SimpleControl.unk19C == 1) {