From c9ec0be8cec98f2422fd94e1d38d1954530e467f Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Mon, 1 Jun 2020 00:04:05 +1000 Subject: [PATCH] Attempt to decompile titleInitPdLogo --- src/game/chr/chr.c | 2 +- src/game/chr/chraction.c | 2 +- src/game/game_00c490.c | 2 +- src/game/game_016100.c | 299 ++++++++++++++++++---------- src/game/game_097ba0.c | 12 +- src/game/game_0b28d0.c | 4 +- src/game/game_0b63b0.c | 6 +- src/game/game_0f09f0.c | 6 +- src/game/game_166e40.c | 2 +- src/game/game_1a3340.c | 8 +- src/game/lang.c | 2 +- src/game/propobj.c | 16 +- src/gvars/gvars.c | 8 +- src/include/constants.h | 4 +- src/include/game/data/data_0083d0.h | 2 +- src/include/game/game_0b28d0.h | 4 +- src/include/game/game_166e40.h | 4 +- src/include/game/game_1a3340.h | 2 +- src/include/game/lang.h | 2 +- src/include/gvars/gvars.h | 6 +- src/include/lib/lib_1a500.h | 2 +- src/include/types.h | 11 + 22 files changed, 258 insertions(+), 148 deletions(-) diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index e84e2efc8..b26d53b13 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -2838,7 +2838,7 @@ glabel func0f020d44 /* f020e78: 1600ffea */ bnez $s0,.L0f020e24 /* f020e7c: 02002025 */ or $a0,$s0,$zero .L0f020e80: -/* f020e80: 0fc2cc33 */ jal func0f0b30cc +/* f020e80: 0fc2cc33 */ jal modelFree /* f020e84: 8fa40048 */ lw $a0,0x48($sp) /* f020e88: 8fa2004c */ lw $v0,0x4c($sp) /* f020e8c: ac400020 */ sw $zero,0x20($v0) diff --git a/src/game/chr/chraction.c b/src/game/chr/chraction.c index e0fb179ec..43f419575 100644 --- a/src/game/chr/chraction.c +++ b/src/game/chr/chraction.c @@ -29099,7 +29099,7 @@ glabel chrSpawnAtCoord /* f04b43c: 1000004a */ beqz $zero,.L0f04b568 /* f04b440: 8fa20074 */ lw $v0,0x74($sp) .L0f04b444: -/* f04b444: 0fc2cc33 */ jal func0f0b30cc +/* f04b444: 0fc2cc33 */ jal modelFree /* f04b448: 00000000 */ sll $zero,$zero,0x0 .L0f04b44c: /* f04b44c: 0fc0814e */ jal chrsGetNumFree diff --git a/src/game/game_00c490.c b/src/game/game_00c490.c index 38433136c..acfbe323f 100644 --- a/src/game/game_00c490.c +++ b/src/game/game_00c490.c @@ -2810,7 +2810,7 @@ glabel func0f00e980 /* f00e9fc: 02a03825 */ or $a3,$s5,$zero /* f00ea00: 0fc59c80 */ jal func0f167200 /* f00ea04: 00808025 */ or $s0,$a0,$zero -/* f00ea08: 0fc59ca0 */ jal func0f167280 +/* f00ea08: 0fc59ca0 */ jal fileGetSize /* f00ea0c: 02002025 */ or $a0,$s0,$zero /* f00ea10: 02428021 */ addu $s0,$s2,$v0 /* f00ea14: 02a2a023 */ subu $s4,$s5,$v0 diff --git a/src/game/game_016100.c b/src/game/game_016100.c index 193acfbb3..9659edf2c 100644 --- a/src/game/game_016100.c +++ b/src/game/game_016100.c @@ -60,7 +60,7 @@ u32 var800624ec = 0x00000001; u32 var800624f0 = 0x00000000; u32 var800624f4 = 0x00000001; struct animdata *g_TitleModel = NULL; -struct animdata *var800624fc = NULL; +struct animdata *g_TitleModel2 = NULL; u32 var80062500 = 0x00000000; u32 var80062504 = 0x00000000; struct animdata *var80062508 = NULL; @@ -203,85 +203,6 @@ u32 var80062728 = 0x00000000; u32 var8006272c = 0x00000001; u32 var80062730 = 0x00000001; u32 var80062734 = 0x00000000; -u32 var80062738 = 0x00000000; -u32 var8006273c = 0x00000000; -u32 var80062740 = 0x00000000; -u32 var80062744 = 0x00000000; -u32 var80062748 = 0x00000000; -u32 var8006274c = 0x00000000; -u32 var80062750 = 0x00000000; -u32 var80062754 = 0x00000000; -u32 var80062758 = 0x00000000; -u32 var8006275c = 0x00000000; -u32 var80062760 = 0x00000000; -u32 var80062764 = 0x00000000; -u32 var80062768 = 0x00000000; -u32 var8006276c = 0x00000001; -u32 var80062770 = 0x00000003; -u32 var80062774 = 0x00000000; -u32 var80062778 = 0x00000000; -u32 var8006277c = 0x00000000; -u32 var80062780 = 0x00000000; -u32 var80062784 = 0x00000000; -u32 var80062788 = 0x00000000; -u32 var8006278c = 0x00000000; -u32 var80062790 = 0x00000000; -u32 var80062794 = 0x00000000; -u32 var80062798 = 0x00000000; -u32 var8006279c = 0x00000000; -u32 var800627a0 = 0x00000000; -u32 var800627a4 = 0x00000000; -f32 var800627a8 = 0; -f32 var800627ac = 0; -f32 var800627b0 = 0; -f32 var800627b4 = 0; -f32 var800627b8 = 1; -f32 var800627bc = 0; -u32 var800627c0 = 0x00000000; -f32 var800627c4 = 0; -f32 var800627c8 = 1; -u32 var800627cc = 0x00000000; -u32 var800627d0 = 0x00000000; -u32 var800627d4 = 0x00000000; -u32 var800627d8 = 0x00000000; -u32 var800627dc = 0x00000000; -u32 var800627e0 = 0x00000000; -u32 var800627e4 = 0x00000000; -u32 var800627e8 = 0x00000000; -u32 var800627ec = 0x00000000; -u32 var800627f0 = 0x00000000; -f32 var800627f4 = 0; -u32 var800627f8 = 0x00000000; -u32 var800627fc = 0x00000000; -u32 var80062800 = 0x00000000; -u32 var80062804 = 0x00000001; -f32 var80062808 = 1.5705462694168; -u32 var8006280c = 0x00000000; -u32 var80062810 = 0x00000000; -f32 var80062814 = 0; -u32 var80062818 = 0x00000000; -u32 var8006281c = 0x00000001; -u32 var80062820 = 0x00000003; -u32 var80062824 = 0x00000000; -u32 var80062828 = 0x00000000; -u32 var8006282c = 0x00000000; -u32 var80062830 = 0x00000000; -u32 var80062834 = 0x00000000; -u32 var80062838 = 0x00000000; -u32 var8006283c = 0x00000000; -u32 var80062840 = 0x00000000; -u32 var80062844 = 0x00000000; -u32 var80062848 = 0x00000000; -u32 var8006284c = 0x00000000; -u32 var80062850 = 0x00000000; -u32 var80062854 = 0x00000000; -u32 var80062858 = 0x00000000; -u32 var8006285c = 0x00000000; -u32 var80062860 = 0x447a0000; -s32 *g_TitleAudioHandle = NULL; -u32 var80062868 = 0x00000000; -u32 var8006286c = 0x00000000; - char *mpPlayerGetWeaponOfChoiceName(u32 playernum, u32 slot) { @@ -1053,6 +974,19 @@ glabel var7f1a83e4 /* f016d30: 27bd0128 */ addiu $sp,$sp,0x128 ); +u32 var80062738 = 0; +u32 var8006273c = 0; +u32 var80062740 = 0; +u32 var80062744 = 0; +u32 var80062748 = 0; +u32 var8006274c = 0; +u32 var80062750 = 0; +u32 var80062754 = 0; +u32 var80062758 = 0; +u32 var8006275c = 0; +u32 var80062760 = 0; +u32 var80062764 = 0; + GLOBAL_ASM( glabel titleInitPdLogo /* f016d34: 27bdff90 */ addiu $sp,$sp,-112 @@ -1082,7 +1016,7 @@ glabel titleInitPdLogo /* f016d94: 0fc69de5 */ jal func0f1a7794 /* f016d98: 02002825 */ or $a1,$s0,$zero /* f016d9c: ae220240 */ sw $v0,0x240($s1) -/* f016da0: 0fc59ca0 */ jal func0f167280 +/* f016da0: 0fc59ca0 */ jal fileGetSize /* f016da4: 96240244 */ lhu $a0,0x244($s1) /* f016da8: 2443003f */ addiu $v1,$v0,0x3f /* f016dac: 3469003f */ ori $t1,$v1,0x3f @@ -1120,7 +1054,7 @@ glabel titleInitPdLogo /* f016e2c: 0fc69de5 */ jal func0f1a7794 /* f016e30: 00003825 */ or $a3,$zero,$zero /* f016e34: ae220248 */ sw $v0,0x248($s1) -/* f016e38: 0fc59ca0 */ jal func0f167280 +/* f016e38: 0fc59ca0 */ jal fileGetSize /* f016e3c: 9624024c */ lhu $a0,0x24c($s1) /* f016e40: 2443003f */ addiu $v1,$v0,0x3f /* f016e44: 346e003f */ ori $t6,$v1,0x3f @@ -1131,14 +1065,14 @@ glabel titleInitPdLogo /* f016e58: 8e240248 */ lw $a0,0x248($s1) /* f016e5c: 0fc2cca0 */ jal func0f0b3280 /* f016e60: 8e240248 */ lw $a0,0x248($s1) -/* f016e64: 3c038006 */ lui $v1,%hi(var800624fc) -/* f016e68: 246324fc */ addiu $v1,$v1,%lo(var800624fc) +/* f016e64: 3c038006 */ lui $v1,%hi(g_TitleModel2) +/* f016e68: 246324fc */ addiu $v1,$v1,%lo(g_TitleModel2) /* f016e6c: ac620000 */ sw $v0,0x0($v1) /* f016e70: 00402025 */ or $a0,$v0,$zero /* f016e74: 0c006bd6 */ jal func0001af58 /* f016e78: 3c053f80 */ lui $a1,0x3f80 -/* f016e7c: 3c048006 */ lui $a0,%hi(var800624fc) -/* f016e80: 8c8424fc */ lw $a0,%lo(var800624fc)($a0) +/* f016e7c: 3c048006 */ lui $a0,%hi(g_TitleModel2) +/* f016e80: 8c8424fc */ lw $a0,%lo(g_TitleModel2)($a0) /* f016e84: 0c006b4d */ jal func0001ad34 /* f016e88: 27a5004c */ addiu $a1,$sp,0x4c /* f016e8c: 3c098006 */ lui $t1,%hi(var80062750) @@ -1156,7 +1090,7 @@ glabel titleInitPdLogo /* f016ebc: 0fc69de5 */ jal func0f1a7794 /* f016ec0: 00003825 */ or $a3,$zero,$zero /* f016ec4: ae220268 */ sw $v0,0x268($s1) -/* f016ec8: 0fc59ca0 */ jal func0f167280 +/* f016ec8: 0fc59ca0 */ jal fileGetSize /* f016ecc: 9624026c */ lhu $a0,0x26c($s1) /* f016ed0: 2443003f */ addiu $v1,$v0,0x3f /* f016ed4: 3479003f */ ori $t9,$v1,0x3f @@ -1192,7 +1126,7 @@ glabel titleInitPdLogo /* f016f4c: 0fc69de5 */ jal func0f1a7794 /* f016f50: 00003825 */ or $a3,$zero,$zero /* f016f54: ae220270 */ sw $v0,0x270($s1) -/* f016f58: 0fc59ca0 */ jal func0f167280 +/* f016f58: 0fc59ca0 */ jal fileGetSize /* f016f5c: 96240274 */ lhu $a0,0x274($s1) /* f016f60: 2443003f */ addiu $v1,$v0,0x3f /* f016f64: 346a003f */ ori $t2,$v1,0x3f @@ -1264,12 +1198,110 @@ glabel titleInitPdLogo /* f017068: 27bd0070 */ addiu $sp,$sp,0x70 ); +// Mismatch due to regalloc in modelthing block +//void titleInitPdLogo(void) +//{ +// u8 *nextaddr = var8009cca0; +// u32 remaining; +// u32 size; +// +// g_TitleTimer = 0; +// +// { +// struct coord coord = {0, 0, 0}; // var80062738 +// g_Props[MODEL_NLOGO].filedata = func0f1a7794(g_Props[MODEL_NLOGO].fileid, nextaddr, 0x47800, 0); +// size = ALIGN64(fileGetSize(g_Props[MODEL_NLOGO].fileid)); +// nextaddr += size; +// remaining = 0x47800 - size; +// func00022d24(g_Props[MODEL_NLOGO].filedata); +// +// g_TitleModel = func0f0b3280(g_Props[MODEL_NLOGO].filedata); +// func0001af58(g_TitleModel, 1); +// func0001ad34(g_TitleModel, &coord); +// } +// +// { +// struct coord coord = {0, 0, 0}; // var80062744 +// g_Props[MODEL_NLOGO2].filedata = func0f1a7794(g_Props[MODEL_NLOGO2].fileid, nextaddr, remaining, 0); +// size = ALIGN64(fileGetSize(g_Props[MODEL_NLOGO2].fileid)); +// nextaddr += size; +// remaining -= size; +// func00022d24(g_Props[MODEL_NLOGO2].filedata); +// +// g_TitleModel2 = func0f0b3280(g_Props[MODEL_NLOGO2].filedata); +// func0001af58(g_TitleModel2, 1); +// func0001ad34(g_TitleModel2, &coord); +// } +// +// { +// struct coord coord = {0, 0, 0}; // var80062750 +// g_Props[MODEL_PDTWO].filedata = func0f1a7794(g_Props[MODEL_PDTWO].fileid, nextaddr, remaining, 0); +// size = ALIGN64(fileGetSize(g_Props[MODEL_PDTWO].fileid)); +// nextaddr += size; +// remaining -= size; +// func00022d24(g_Props[MODEL_PDTWO].filedata); +// +// var80062508 = func0f0b30ac(g_Props[MODEL_PDTWO].filedata); +// func0001af58(var80062508, 1); +// func0001ad34(var80062508, &coord); +// } +// +// { +// struct coord coord = {0, 0, 0}; // var8006275c +// g_Props[MODEL_PDTHREE].filedata = func0f1a7794(g_Props[MODEL_PDTHREE].fileid, nextaddr, remaining, 0); +// size = ALIGN64(fileGetSize(g_Props[MODEL_PDTHREE].fileid)); +// nextaddr += size; +// remaining -= size; +// func00022d24(g_Props[MODEL_PDTHREE].filedata); +// +// var8006250c = func0f0b30ac(g_Props[MODEL_PDTHREE].filedata); +// func0001af58(var8006250c, 1); +// func0001ad34(var8006250c, &coord); +// } +// +// { +// // fb0 +// struct modelthing *modelthing = func0001a9bc(g_Props[MODEL_PDTWO].filedata, 2); +// u32 size2; +// +// size = ALIGN8(modelthing->unk10 * 0xc); +// +// var8009cca8[0] = nextaddr; +// +// nextaddr += size; +// remaining -= size; +// var8009cca8[1] = nextaddr; +// +// nextaddr += size; +// remaining -= size; +// size2 = ALIGN8(modelthing->unk16 * 4); +// var8009ccb0[0] = nextaddr; +// +// nextaddr += size2; +// remaining -= size2; +// var8009ccb0[1] = nextaddr; +// +// var8009ccb8 = 0; +// var800624f4 = 1; +// +// func00014810(false); +// +// var80062730 = 1; +// var80062734 = 0; +// +// if (var800624a8) { +// func0f017980(); +// } +// } +//} + void titleExitPdLogo(void) { - func0f0b30cc(g_TitleModel); - func0f0b30cc(var800624fc); - func0f0b30cc(var80062508); - func0f0b30cc(var8006250c); + modelFree(g_TitleModel); + modelFree(g_TitleModel2); + modelFree(var80062508); + modelFree(var8006250c); + func00014810(true); } @@ -1315,6 +1347,73 @@ void titleTickPdLogo(void) } } +u32 var80062768 = 0x00000000; +u32 var8006276c = 0x00000001; +u32 var80062770 = 0x00000003; +u32 var80062774 = 0x00000000; +u32 var80062778 = 0x00000000; +u32 var8006277c = 0x00000000; +u32 var80062780 = 0x00000000; +u32 var80062784 = 0x00000000; +u32 var80062788 = 0x00000000; +u32 var8006278c = 0x00000000; +u32 var80062790 = 0x00000000; +u32 var80062794 = 0x00000000; +u32 var80062798 = 0x00000000; +u32 var8006279c = 0x00000000; +u32 var800627a0 = 0x00000000; +u32 var800627a4 = 0x00000000; +f32 var800627a8 = 0; +f32 var800627ac = 0; +f32 var800627b0 = 0; +f32 var800627b4 = 0; +f32 var800627b8 = 1; +f32 var800627bc = 0; +u32 var800627c0 = 0x00000000; +f32 var800627c4 = 0; +f32 var800627c8 = 1; +u32 var800627cc = 0x00000000; +u32 var800627d0 = 0x00000000; +u32 var800627d4 = 0x00000000; +u32 var800627d8 = 0x00000000; +u32 var800627dc = 0x00000000; +u32 var800627e0 = 0x00000000; +u32 var800627e4 = 0x00000000; +u32 var800627e8 = 0x00000000; +u32 var800627ec = 0x00000000; +u32 var800627f0 = 0x00000000; +f32 var800627f4 = 0; +u32 var800627f8 = 0x00000000; +u32 var800627fc = 0x00000000; +u32 var80062800 = 0x00000000; +u32 var80062804 = 0x00000001; +f32 var80062808 = 1.5705462694168; +u32 var8006280c = 0x00000000; +u32 var80062810 = 0x00000000; +f32 var80062814 = 0; +u32 var80062818 = 0x00000000; +u32 var8006281c = 0x00000001; +u32 var80062820 = 0x00000003; +u32 var80062824 = 0x00000000; +u32 var80062828 = 0x00000000; +u32 var8006282c = 0x00000000; +u32 var80062830 = 0x00000000; +u32 var80062834 = 0x00000000; +u32 var80062838 = 0x00000000; +u32 var8006283c = 0x00000000; +u32 var80062840 = 0x00000000; +u32 var80062844 = 0x00000000; +u32 var80062848 = 0x00000000; +u32 var8006284c = 0x00000000; +u32 var80062850 = 0x00000000; +u32 var80062854 = 0x00000000; +u32 var80062858 = 0x00000000; +u32 var8006285c = 0x00000000; +u32 var80062860 = 0x447a0000; +s32 *g_TitleAudioHandle = NULL; +u32 var80062868 = 0x00000000; +u32 var8006286c = 0x00000000; + GLOBAL_ASM( glabel func0f017248 /* f017248: 27bdfeb0 */ addiu $sp,$sp,-336 @@ -2661,8 +2760,8 @@ glabel var7f1a8468 /* f0185d8: 10000004 */ beqz $zero,.L0f0185ec /* f0185dc: afae022c */ sw $t6,0x22c($sp) .L0f0185e0: -/* f0185e0: 3c188006 */ lui $t8,%hi(var800624fc) -/* f0185e4: 8f1824fc */ lw $t8,%lo(var800624fc)($t8) +/* f0185e0: 3c188006 */ lui $t8,%hi(g_TitleModel2) +/* f0185e4: 8f1824fc */ lw $t8,%lo(g_TitleModel2)($t8) /* f0185e8: afb8022c */ sw $t8,0x22c($sp) .L0f0185ec: /* f0185ec: 3c018006 */ lui $at,0x8006 @@ -3580,7 +3679,7 @@ glabel titleRenderRarePresents void titleInitNintendoLogo(void) { - u32 thing = var8009cca0; + u8 *nextaddr = var8009cca0; var800624ac = 0; @@ -3593,7 +3692,7 @@ void titleInitNintendoLogo(void) { struct coord coord = {0, 0, 0}; - g_Props[MODEL_NINTENDOLOGO].filedata = func0f1a7794(g_Props[MODEL_NINTENDOLOGO].fileid, thing, 0x47800, 0); + g_Props[MODEL_NINTENDOLOGO].filedata = func0f1a7794(g_Props[MODEL_NINTENDOLOGO].fileid, nextaddr, 0x47800, 0); func00022d24(g_Props[MODEL_NINTENDOLOGO].filedata); g_TitleModel = func0f0b30ac(g_Props[MODEL_NINTENDOLOGO].filedata); @@ -3606,7 +3705,7 @@ void titleInitNintendoLogo(void) void titleExitNintendoLogo(void) { - func0f0b30cc(g_TitleModel); + modelFree(g_TitleModel); func00014810(true); } @@ -3965,14 +4064,14 @@ glabel var7f1a84a0 void titleInitRareLogo(void) { - u32 thing = var8009cca0; + u8 *nextaddr = var8009cca0; g_TitleTimer = -3; { struct coord coord = {0, 0, 0}; - g_Props[MODEL_RARELOGO].filedata = func0f1a7794(g_Props[MODEL_RARELOGO].fileid, thing, 0x47800, 0); + g_Props[MODEL_RARELOGO].filedata = func0f1a7794(g_Props[MODEL_RARELOGO].fileid, nextaddr, 0x47800, 0); func00022d24(g_Props[MODEL_RARELOGO].filedata); g_TitleModel = func0f0b30ac(g_Props[MODEL_RARELOGO].filedata); @@ -3992,7 +4091,7 @@ void titleInitRareLogo(void) void titleExitRareLogo(void) { - func0f0b30cc(g_TitleModel); + modelFree(g_TitleModel); func00014810(true); } diff --git a/src/game/game_097ba0.c b/src/game/game_097ba0.c index f1362ec51..c77a53124 100644 --- a/src/game/game_097ba0.c +++ b/src/game/game_097ba0.c @@ -8329,11 +8329,11 @@ glabel func0f09e144 /* f09e1e4: 0fc59c80 */ jal func0f167200 /* f09e1e8: 8fa60064 */ lw $a2,0x64($sp) /* f09e1ec: 00408825 */ or $s1,$v0,$zero -/* f09e1f0: 0fc59ca0 */ jal func0f167280 +/* f09e1f0: 0fc59ca0 */ jal fileGetSize /* f09e1f4: 964415b2 */ lhu $a0,0x15b2($s2) /* f09e1f8: 24470e00 */ addiu $a3,$v0,0xe00 /* f09e1fc: 964415b2 */ lhu $a0,0x15b2($s2) -/* f09e200: 0fc59ca0 */ jal func0f167280 +/* f09e200: 0fc59ca0 */ jal fileGetSize /* f09e204: afa7006c */ sw $a3,0x6c($sp) /* f09e208: 964c15b2 */ lhu $t4,0x15b2($s2) /* f09e20c: 8fa7006c */ lw $a3,0x6c($sp) @@ -8464,11 +8464,11 @@ glabel func0f09e144 /* f09e3ec: 02203825 */ or $a3,$s1,$zero /* f09e3f0: 0fc59c15 */ jal func0f167054 /* f09e3f4: 964415b2 */ lhu $a0,0x15b2($s2) -/* f09e3f8: 0fc59ca0 */ jal func0f167280 +/* f09e3f8: 0fc59ca0 */ jal fileGetSize /* f09e3fc: 964415b2 */ lhu $a0,0x15b2($s2) -/* f09e400: 0fc59ca0 */ jal func0f167280 +/* f09e400: 0fc59ca0 */ jal fileGetSize /* f09e404: 964415b2 */ lhu $a0,0x15b2($s2) -/* f09e408: 0fc59ca0 */ jal func0f167280 +/* f09e408: 0fc59ca0 */ jal fileGetSize /* f09e40c: 964415b2 */ lhu $a0,0x15b2($s2) /* f09e410: 0c008b49 */ jal func00022d24 /* f09e414: 02202025 */ or $a0,$s1,$zero @@ -10694,7 +10694,7 @@ glabel var7f1ac740 .L0f0a0368: /* f0a0368: 50c00004 */ beqzl $a2,.L0f0a037c /* f0a036c: ae000014 */ sw $zero,0x14($s0) -/* f0a0370: 0fc2cc33 */ jal func0f0b30cc +/* f0a0370: 0fc2cc33 */ jal modelFree /* f0a0374: 00c02025 */ or $a0,$a2,$zero /* f0a0378: ae000014 */ sw $zero,0x14($s0) .L0f0a037c: diff --git a/src/game/game_0b28d0.c b/src/game/game_0b28d0.c index 70cd78129..ed7fdc705 100644 --- a/src/game/game_0b28d0.c +++ b/src/game/game_0b28d0.c @@ -572,7 +572,7 @@ glabel func0f0b2b64 /* f0b3054: 8fb9003c */ lw $t9,0x3c($sp) .L0f0b3058: /* f0b3058: 8fa4003c */ lw $a0,0x3c($sp) -/* f0b305c: 0fc2cc33 */ jal func0f0b30cc +/* f0b305c: 0fc2cc33 */ jal modelFree /* f0b3060: afa0003c */ sw $zero,0x3c($sp) /* f0b3064: 10000003 */ beqz $zero,.L0f0b3074 /* f0b3068: 8fb9003c */ lw $t9,0x3c($sp) @@ -610,7 +610,7 @@ glabel func0f0b30ac ); GLOBAL_ASM( -glabel func0f0b30cc +glabel modelFree /* f0b30cc: 3c098009 */ lui $t1,%hi(g_Is4Mb) /* f0b30d0: 25290af0 */ addiu $t1,$t1,%lo(g_Is4Mb) /* f0b30d4: 91250000 */ lbu $a1,0x0($t1) diff --git a/src/game/game_0b63b0.c b/src/game/game_0b63b0.c index f807c971c..38dcd2038 100644 --- a/src/game/game_0b63b0.c +++ b/src/game/game_0b63b0.c @@ -3384,7 +3384,7 @@ glabel var7f1ad5b4 /* f0b8f3c: 010e4021 */ addu $t0,$t0,$t6 /* f0b8f40: 00084080 */ sll $t0,$t0,0x2 /* f0b8f44: 00882021 */ addu $a0,$a0,$t0 -/* f0b8f48: 0fc59ca0 */ jal func0f167280 +/* f0b8f48: 0fc59ca0 */ jal fileGetSize /* f0b8f4c: 9484cf06 */ lhu $a0,%lo(g_Bodies+0x2)($a0) /* f0b8f50: 8fb900f0 */ lw $t9,0xf0($sp) /* f0b8f54: 8fac0064 */ lw $t4,0x64($sp) @@ -3413,7 +3413,7 @@ glabel var7f1ad5b4 /* f0b8fb0: 01394821 */ addu $t1,$t1,$t9 /* f0b8fb4: 00094880 */ sll $t1,$t1,0x2 /* f0b8fb8: 00892021 */ addu $a0,$a0,$t1 -/* f0b8fbc: 0fc59ca0 */ jal func0f167280 +/* f0b8fbc: 0fc59ca0 */ jal fileGetSize /* f0b8fc0: 9484cf06 */ lhu $a0,%lo(g_Bodies+0x2)($a0) /* f0b8fc4: 8faf00f0 */ lw $t7,0xf0($sp) /* f0b8fc8: 004f5021 */ addu $t2,$v0,$t7 @@ -3725,7 +3725,7 @@ glabel var7f1ad5b4 /* f0b9450: 03193023 */ subu $a2,$t8,$t9 /* f0b9454: 8fa30038 */ lw $v1,0x38($sp) /* f0b9458: afa200f4 */ sw $v0,0xf4($sp) -/* f0b945c: 0fc59ca0 */ jal func0f167280 +/* f0b945c: 0fc59ca0 */ jal fileGetSize /* f0b9460: 94640004 */ lhu $a0,0x4($v1) /* f0b9464: 0c008b49 */ jal func00022d24 /* f0b9468: 8fa400f4 */ lw $a0,0xf4($sp) diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index 81d791bce..8f17dd9ab 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -3874,7 +3874,7 @@ glabel var7f1b2948 /* f0f3b3c: 0fc69de5 */ jal func0f1a7794 /* f0f3b40: 97a4040a */ lhu $a0,0x40a($sp) /* f0f3b44: ae020054 */ sw $v0,0x54($s0) -/* f0f3b48: 0fc59ca0 */ jal func0f167280 +/* f0f3b48: 0fc59ca0 */ jal fileGetSize /* f0f3b4c: 8fa4003c */ lw $a0,0x3c($sp) /* f0f3b50: 2443003f */ addiu $v1,$v0,0x3f /* f0f3b54: 346d003f */ ori $t5,$v1,0x3f @@ -3897,7 +3897,7 @@ glabel var7f1b2948 /* f0f3b94: 0fc69de5 */ jal func0f1a7794 /* f0f3b98: 01e32821 */ addu $a1,$t7,$v1 /* f0f3b9c: ae020058 */ sw $v0,0x58($s0) -/* f0f3ba0: 0fc59ca0 */ jal func0f167280 +/* f0f3ba0: 0fc59ca0 */ jal fileGetSize /* f0f3ba4: 8fa40040 */ lw $a0,0x40($sp) /* f0f3ba8: 8e040058 */ lw $a0,0x58($s0) /* f0f3bac: 8fa50400 */ lw $a1,0x400($sp) @@ -3954,7 +3954,7 @@ glabel var7f1b2948 /* f0f3c70: 0fc69de5 */ jal func0f1a7794 /* f0f3c74: 27a70410 */ addiu $a3,$sp,0x410 /* f0f3c78: ae020054 */ sw $v0,0x54($s0) -/* f0f3c7c: 0fc59ca0 */ jal func0f167280 +/* f0f3c7c: 0fc59ca0 */ jal fileGetSize /* f0f3c80: 8e04000c */ lw $a0,0xc($s0) /* f0f3c84: 0c008b49 */ jal func00022d24 /* f0f3c88: 8e040054 */ lw $a0,0x54($s0) diff --git a/src/game/game_166e40.c b/src/game/game_166e40.c index 61d1b9e9b..f45e6de0e 100644 --- a/src/game/game_166e40.c +++ b/src/game/game_166e40.c @@ -402,7 +402,7 @@ glabel func0f167200 ); GLOBAL_ASM( -glabel func0f167280 +glabel fileGetSize /* f167280: 000470c0 */ sll $t6,$a0,0x3 /* f167284: 3c02800a */ lui $v0,%hi(g_FileInfo) /* f167288: 004e1021 */ addu $v0,$v0,$t6 diff --git a/src/game/game_1a3340.c b/src/game/game_1a3340.c index c91327847..09bb1b864 100644 --- a/src/game/game_1a3340.c +++ b/src/game/game_1a3340.c @@ -4187,7 +4187,7 @@ glabel func0f1a7560 /* f1a75a0: 0fc59ca5 */ jal func0f167294 /* f1a75a4: afa40058 */ sw $a0,0x58($sp) /* f1a75a8: 00408025 */ or $s0,$v0,$zero -/* f1a75ac: 0fc59ca0 */ jal func0f167280 +/* f1a75ac: 0fc59ca0 */ jal fileGetSize /* f1a75b0: 8fa40058 */ lw $a0,0x58($sp) /* f1a75b4: afa20088 */ sw $v0,0x88($sp) /* f1a75b8: afa00074 */ sw $zero,0x74($sp) @@ -4325,7 +4325,7 @@ glabel func0f1a7730 /* f1a7790: 00000000 */ sll $zero,$zero,0x0 ); -void *func0f1a7794(u16 fileid, u32 arg1, s32 arg2, s32 arg3) +void *func0f1a7794(u16 fileid, u8 *arg1, s32 arg2, s32 arg3) { void *ptr; @@ -4339,7 +4339,7 @@ void *func0f1a7794(u16 fileid, u32 arg1, s32 arg2, s32 arg3) func0f1a7730(ptr); func00022a24(ptr, 0x5000000, ptr); - func0f1a7560(ptr, fileid, 0x5000000, ptr, arg3, arg1 < 1); + func0f1a7560(ptr, fileid, 0x5000000, ptr, arg3, arg1 == NULL); return ptr; } @@ -4349,7 +4349,7 @@ void *fileLoad(u16 fileid) return func0f1a7794(fileid, 0, 0, 0); } -void *func0f1a7878(u16 fileid, s32 arg1, s32 arg2) +void *func0f1a7878(u16 fileid, u8 *arg1, s32 arg2) { return func0f1a7794(fileid, arg1, arg2, 0); } diff --git a/src/game/lang.c b/src/game/lang.c index 4d46c8500..f380ccc50 100644 --- a/src/game/lang.c +++ b/src/game/lang.c @@ -323,7 +323,7 @@ void langSetBankSimple(s32 bank) g_LangBanks[bank] = func0f1670fc(file_id, 0x22); } -void langSetBank(s32 bank, s32 arg1, s32 arg2) +void langSetBank(s32 bank, u8 *arg1, s32 arg2) { s32 file_id = langGetFileId(bank); g_LangBanks[bank] = func0f167200(file_id, 0x22, arg1, arg2); diff --git a/src/game/propobj.c b/src/game/propobj.c index 19793d563..fa53919c8 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -4908,7 +4908,7 @@ glabel func0f06a1ec .L0f06a404: /* f06a404: 10e00004 */ beqz $a3,.L0f06a418 /* f06a408: 00e02025 */ or $a0,$a3,$zero -/* f06a40c: 0fc2cc33 */ jal func0f0b30cc +/* f06a40c: 0fc2cc33 */ jal modelFree /* f06a410: afa60028 */ sw $a2,0x28($sp) /* f06a414: 8fa60028 */ lw $a2,0x28($sp) .L0f06a418: @@ -5984,7 +5984,7 @@ glabel setupParseObject /* f06b2f4: 0fc226a5 */ jal func0f089a94 /* f06b2f8: 8e250018 */ lw $a1,0x18($s1) .L0f06b2fc: -/* f06b2fc: 0fc2cc33 */ jal func0f0b30cc +/* f06b2fc: 0fc2cc33 */ jal modelFree /* f06b300: 8e240018 */ lw $a0,0x18($s1) /* f06b304: 8faf0064 */ lw $t7,0x64($sp) /* f06b308: 51e00008 */ beqzl $t7,.L0f06b32c @@ -40759,7 +40759,7 @@ glabel chrTryEquipHat .L0f089f3c: /* f089f3c: 12200003 */ beqz $s1,.L0f089f4c /* f089f40: 00000000 */ sll $zero,$zero,0x0 -/* f089f44: 0fc2cc33 */ jal func0f0b30cc +/* f089f44: 0fc2cc33 */ jal modelFree /* f089f48: 02202025 */ or $a0,$s1,$zero .L0f089f4c: /* f089f4c: 12000004 */ beqz $s0,.L0f089f60 @@ -42105,7 +42105,7 @@ glabel func0f08b108 /* f08b1a4: 02202025 */ or $a0,$s1,$zero /* f08b1a8: 00008825 */ or $s1,$zero,$zero /* f08b1ac: ae000014 */ sw $zero,0x14($s0) -/* f08b1b0: 0fc2cc33 */ jal func0f0b30cc +/* f08b1b0: 0fc2cc33 */ jal modelFree /* f08b1b4: 8e040018 */ lw $a0,0x18($s0) /* f08b1b8: 1000000d */ beqz $zero,.L0f08b1f0 /* f08b1bc: ae000018 */ sw $zero,0x18($s0) @@ -42120,7 +42120,7 @@ glabel func0f08b108 .L0f08b1dc: /* f08b1dc: 50800005 */ beqzl $a0,.L0f08b1f4 /* f08b1e0: 8fbf001c */ lw $ra,0x1c($sp) -/* f08b1e4: 0fc2cc33 */ jal func0f0b30cc +/* f08b1e4: 0fc2cc33 */ jal modelFree /* f08b1e8: 00000000 */ sll $zero,$zero,0x0 /* f08b1ec: ae000018 */ sw $zero,0x18($s0) .L0f08b1f0: @@ -42430,7 +42430,7 @@ glabel var7f1aae98 .L0f08b61c: /* f08b61c: 50e00004 */ beqzl $a3,.L0f08b630 /* f08b620: 8fa900a0 */ lw $t1,0xa0($sp) -/* f08b624: 0fc2cc33 */ jal func0f0b30cc +/* f08b624: 0fc2cc33 */ jal modelFree /* f08b628: 00e02025 */ or $a0,$a3,$zero /* f08b62c: 8fa900a0 */ lw $t1,0xa0($sp) .L0f08b630: @@ -42656,7 +42656,7 @@ glabel var7f1aaf24 .L0f08b848: /* f08b848: 10e00003 */ beqz $a3,.L0f08b858 /* f08b84c: 00008025 */ or $s0,$zero,$zero -/* f08b850: 0fc2cc33 */ jal func0f0b30cc +/* f08b850: 0fc2cc33 */ jal modelFree /* f08b854: 00e02025 */ or $a0,$a3,$zero .L0f08b858: /* f08b858: 52200004 */ beqzl $s1,.L0f08b86c @@ -42812,7 +42812,7 @@ glabel func0f08b8e8 .L0f08ba80: /* f08ba80: 12200003 */ beqz $s1,.L0f08ba90 /* f08ba84: 00000000 */ sll $zero,$zero,0x0 -/* f08ba88: 0fc2cc33 */ jal func0f0b30cc +/* f08ba88: 0fc2cc33 */ jal modelFree /* f08ba8c: 02202025 */ or $a0,$s1,$zero .L0f08ba90: /* f08ba90: 12400004 */ beqz $s2,.L0f08baa4 diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index eb7dce3e8..45c681ddc 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -15231,12 +15231,10 @@ u32 var8009cc90 = 0; u32 var8009cc94 = 0; u32 var8009cc98 = 0; u32 var8009cc9c = 0; -u32 var8009cca0 = 0; +u8 *var8009cca0 = NULL; u32 var8009cca4 = 0; -u32 var8009cca8 = 0; -u32 var8009ccac = 0; -u32 var8009ccb0 = 0; -u32 var8009ccb4 = 0; +u8 *var8009cca8[2] = {NULL, NULL}; +u8 *var8009ccb0[2] = {NULL, NULL}; u32 var8009ccb8 = 0; u32 var8009ccbc = 0; u32 var8009ccc0 = 0; diff --git a/src/include/constants.h b/src/include/constants.h index 9fda55ae9..b64f97af4 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -11,7 +11,9 @@ #define U32_MAX 4294967295 #define ABS(val) (val > 0 ? val : -val) -#define ALIGN16(val) ((val + 0xf | 0xf) ^ 0xf) +#define ALIGN8(val) (((val) + 0x7 | 0x7) ^ 0x7) +#define ALIGN16(val) (((val) + 0xf | 0xf) ^ 0xf) +#define ALIGN64(val) (((val) + 0x3f | 0x3f) ^ 0x3f) #define ARRAYCOUNT(a) (s32)(sizeof(a) / sizeof(a[0])) #define CHRRACE(chr) (chr ? chr->race : RACE_HUMAN) #define FRAMEDURATION (1 / 60.0f) diff --git a/src/include/game/data/data_0083d0.h b/src/include/game/data/data_0083d0.h index 9ea127b08..57922737e 100644 --- a/src/include/game/data/data_0083d0.h +++ b/src/include/game/data/data_0083d0.h @@ -33,7 +33,7 @@ extern u32 var800624ec; extern u32 var800624f0; extern u32 var800624f4; extern struct animdata *g_TitleModel; -extern struct animdata *var800624fc; +extern struct animdata *g_TitleModel2; extern struct animdata *var80062508; extern struct animdata *var8006250c; extern u32 var80062530; diff --git a/src/include/game/game_0b28d0.h b/src/include/game/game_0b28d0.h index e9a4b00e0..f678cf883 100644 --- a/src/include/game/game_0b28d0.h +++ b/src/include/game/game_0b28d0.h @@ -7,8 +7,8 @@ u32 func0f0b28d0(void); void func0f0b2904(void); u32 func0f0b2b64(void); struct animdata *func0f0b30ac(void *modelfiledata); -void func0f0b30cc(struct animdata *animdata); -u32 func0f0b3280(void); +void modelFree(struct animdata *animdata); +struct animdata *func0f0b3280(void *modelfiledata); u32 func0f0b32a0(void); struct anim *func0f0b32e4(void); u32 func0f0b3338(void); diff --git a/src/include/game/game_166e40.h b/src/include/game/game_166e40.h index b494375e8..41963127a 100644 --- a/src/include/game/game_166e40.h +++ b/src/include/game/game_166e40.h @@ -12,8 +12,8 @@ u32 func0f166f74(void); u32 func0f166ff0(void); u32 func0f167054(u32 filenum); void *func0f1670fc(u32 filenum, u32 arg1); -void *func0f167200(s32 file_id, s32 arg1, s32 arg2, s32 arg3); -u32 func0f167280(void); +void *func0f167200(s32 file_id, s32 arg1, u8 *arg2, s32 arg3); +u32 fileGetSize(s32 filenum); u32 func0f167294(void); u32 func0f1672a8(void); void func0f1672f0(s32 arg0); diff --git a/src/include/game/game_1a3340.h b/src/include/game/game_1a3340.h index 5f7e507e4..57ab8689c 100644 --- a/src/include/game/game_1a3340.h +++ b/src/include/game/game_1a3340.h @@ -35,7 +35,7 @@ u32 func0f1a6cc4(void); struct menu_dialog *ciGetFrWeaponListMenuDialog(void); void func0f1a7560(void *ptr, u16 fileid, u32 arg2, void *arg3, s32 arg4, bool arg5); void func0f1a7730(void *ptr); -void *func0f1a7794(u16 fileid, u32 arg1, s32 arg2, s32 arg3); +void *func0f1a7794(u16 fileid, u8 *arg1, s32 arg2, s32 arg3); void *fileLoad(u16 fileid); s32 menudialog001a39a8(u32, u32, u32 *); s32 menudialog001a3af4(u32, u32, u32 *); diff --git a/src/include/game/lang.h b/src/include/game/lang.h index 421589cf9..1b748136a 100644 --- a/src/include/game/lang.h +++ b/src/include/game/lang.h @@ -8,7 +8,7 @@ u32 func0f16e3fc(void); s32 langGetLanguageId(void); s32 langGetFileId(s32 bank); void langSetBankSimple(s32 bank); -void langSetBank(s32 bank, s32 arg1, s32 arg2); +void langSetBank(s32 bank, u8 *arg1, s32 arg2); void langClearBank(s32 bank); char *langGet(s32 textid); diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 7d252560b..a99326e48 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -535,9 +535,9 @@ extern void *var8009cc80; extern void *var8009cc84; extern void *var8009cc88; extern u32 var8009cc90; -extern u32 var8009cca0; -extern u32 var8009cca8; -extern u32 var8009ccb0; +extern u8 *var8009cca0; +extern u8 *var8009cca8[2]; +extern u8 *var8009ccb0[2]; extern u32 var8009ccb8; extern u32 var8009ccc0; extern s32 g_NumChrsC; diff --git a/src/include/lib/lib_1a500.h b/src/include/lib/lib_1a500.h index f48fe3a19..8b2af9303 100644 --- a/src/include/lib/lib_1a500.h +++ b/src/include/lib/lib_1a500.h @@ -15,7 +15,7 @@ u32 func0001a784(void); u32 func0001a7cc(void); u32 func0001a85c(void); void *func0001a91c(struct animdata08 *arg0, s32 arg1); -u32 func0001a9bc(void); +struct modelthing *func0001a9bc(void *modelfiledata, s32 arg1); u32 func0001a9e8(void); struct animdata10 *func0001aa1c(struct animdata *animdata, void *arg1); u32 func0001ab0c(void); diff --git a/src/include/types.h b/src/include/types.h index ff4b98211..ee88b8760 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -5788,4 +5788,15 @@ struct var80065750 { u32 unk04; }; +struct modelthing { + /*0x00*/ u32 unk00; + /*0x04*/ u32 unk04; + /*0x08*/ u32 unk08; + /*0x0c*/ u32 unk0c; + /*0x10*/ s16 unk10; + /*0x12*/ u16 unk12; + /*0x14*/ u16 unk14; + /*0x16*/ u16 unk16; +}; + #endif