diff --git a/src/game/game_00b820.c b/src/game/game_00b820.c index 61eba309e..b3f56946f 100644 --- a/src/game/game_00b820.c +++ b/src/game/game_00b820.c @@ -659,24 +659,24 @@ glabel func0f00bbc8 /* f00c13c: 10000028 */ beqz $zero,.L0f00c1e0 /* f00c140: 02002025 */ or $a0,$s0,$zero .L0f00c144: -/* f00c144: 0fc0b38c */ jal func0f02ce30 +/* f00c144: 0fc0b38c */ jal bodyLoad /* f00c148: 92040002 */ lbu $a0,0x2($s0) /* f00c14c: 82040003 */ lb $a0,0x3($s0) /* f00c150: 04820023 */ bltzl $a0,.L0f00c1e0 /* f00c154: 02002025 */ or $a0,$s0,$zero -/* f00c158: 0fc0b38c */ jal func0f02ce30 +/* f00c158: 0fc0b38c */ jal bodyLoad /* f00c15c: 00000000 */ sll $zero,$zero,0x0 /* f00c160: 5040001f */ beqzl $v0,.L0f00c1e0 /* f00c164: 02002025 */ or $a0,$s0,$zero /* f00c168: 1000001d */ beqz $zero,.L0f00c1e0 /* f00c16c: 02002025 */ or $a0,$s0,$zero .L0f00c170: -/* f00c170: 0fc0b38c */ jal func0f02ce30 +/* f00c170: 0fc0b38c */ jal bodyLoad /* f00c174: 92040002 */ lbu $a0,0x2($s0) /* f00c178: 82040003 */ lb $a0,0x3($s0) /* f00c17c: 04820018 */ bltzl $a0,.L0f00c1e0 /* f00c180: 02002025 */ or $a0,$s0,$zero -/* f00c184: 0fc0b38c */ jal func0f02ce30 +/* f00c184: 0fc0b38c */ jal bodyLoad /* f00c188: 00000000 */ sll $zero,$zero,0x0 /* f00c18c: 50400014 */ beqzl $v0,.L0f00c1e0 /* f00c190: 02002025 */ or $a0,$s0,$zero diff --git a/src/game/game_02cde0.c b/src/game/game_02cde0.c index cd52a6bd1..2e20e0d4e 100644 --- a/src/game/game_02cde0.c +++ b/src/game/game_02cde0.c @@ -126,33 +126,15 @@ glabel func0f02cde0 /* f02ce2c: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel func0f02ce30 -/* f02ce30: 00047080 */ sll $t6,$a0,0x2 -/* f02ce34: 01c47021 */ addu $t6,$t6,$a0 -/* f02ce38: 3c0f8008 */ lui $t7,%hi(g_Bodies) -/* f02ce3c: 25efcf04 */ addiu $t7,$t7,%lo(g_Bodies) -/* f02ce40: 000e7080 */ sll $t6,$t6,0x2 -/* f02ce44: 01cf1821 */ addu $v1,$t6,$t7 -/* f02ce48: 8c78000c */ lw $t8,0xc($v1) -/* f02ce4c: 27bdffe0 */ addiu $sp,$sp,-32 -/* f02ce50: afbf0014 */ sw $ra,0x14($sp) -/* f02ce54: 57000009 */ bnezl $t8,.L0f02ce7c -/* f02ce58: 00001025 */ or $v0,$zero,$zero -/* f02ce5c: 94640002 */ lhu $a0,0x2($v1) -/* f02ce60: 0fc69e11 */ jal func0f1a7844 -/* f02ce64: afa3001c */ sw $v1,0x1c($sp) -/* f02ce68: 8fa3001c */ lw $v1,0x1c($sp) -/* f02ce6c: ac62000c */ sw $v0,0xc($v1) -/* f02ce70: 10000002 */ beqz $zero,.L0f02ce7c -/* f02ce74: 24020001 */ addiu $v0,$zero,0x1 -/* f02ce78: 00001025 */ or $v0,$zero,$zero -.L0f02ce7c: -/* f02ce7c: 8fbf0014 */ lw $ra,0x14($sp) -/* f02ce80: 27bd0020 */ addiu $sp,$sp,0x20 -/* f02ce84: 03e00008 */ jr $ra -/* f02ce88: 00000000 */ sll $zero,$zero,0x0 -); +bool bodyLoad(u32 bodynum) +{ + if (!g_Bodies[bodynum].unk0c) { + g_Bodies[bodynum].unk0c = fileLoad(g_Bodies[bodynum].bodyfileid); + return true; + } + + return false; +} GLOBAL_ASM( glabel func0f02ce8c @@ -193,7 +175,7 @@ glabel func0f02ce8c /* f02cf10: 8d03000c */ lw $v1,0xc($t0) /* f02cf14: 54600007 */ bnezl $v1,.L0f02cf34 /* f02cf18: afa30050 */ sw $v1,0x50($sp) -/* f02cf1c: 0fc69e11 */ jal func0f1a7844 +/* f02cf1c: 0fc69e11 */ jal fileLoad /* f02cf20: 95040002 */ lhu $a0,0x2($t0) /* f02cf24: 8fa4001c */ lw $a0,0x1c($sp) /* f02cf28: 00401825 */ or $v1,$v0,$zero @@ -248,7 +230,7 @@ glabel func0f02ce8c /* f02cfe4: 000d6880 */ sll $t5,$t5,0x2 /* f02cfe8: 3c048008 */ lui $a0,0x8008 /* f02cfec: 008d2021 */ addu $a0,$a0,$t5 -/* f02cff0: 0fc69e11 */ jal func0f1a7844 +/* f02cff0: 0fc69e11 */ jal fileLoad /* f02cff4: 9484cf06 */ lhu $a0,-0x30fa($a0) /* f02cff8: 8fa5004c */ lw $a1,0x4c($sp) /* f02cffc: 3c0e8008 */ lui $t6,%hi(g_Bodies) @@ -277,7 +259,7 @@ glabel func0f02ce8c /* f02d054: 8c64000c */ lw $a0,0xc($v1) /* f02d058: 5480000d */ bnezl $a0,.L0f02d090 /* f02d05c: afa40054 */ sw $a0,0x54($sp) -/* f02d060: 0fc69e11 */ jal func0f1a7844 +/* f02d060: 0fc69e11 */ jal fileLoad /* f02d064: 94640002 */ lhu $a0,0x2($v1) /* f02d068: 8fa7004c */ lw $a3,0x4c($sp) /* f02d06c: 3c0a8008 */ lui $t2,%hi(g_Bodies) diff --git a/src/game/game_066310.c b/src/game/game_066310.c index 79ace3741..40ad8159f 100644 --- a/src/game/game_066310.c +++ b/src/game/game_066310.c @@ -50342,7 +50342,7 @@ glabel func0f0921b4 /* f0921d0: 1700000a */ bnez $t8,.L0f0921fc /* f0921d4: 00001025 */ or $v0,$zero,$zero /* f0921d8: 94640004 */ lhu $a0,0x4($v1) -/* f0921dc: 0fc69e11 */ jal func0f1a7844 +/* f0921dc: 0fc69e11 */ jal fileLoad /* f0921e0: afa3001c */ sw $v1,0x1c($sp) /* f0921e4: 8fa3001c */ lw $v1,0x1c($sp) /* f0921e8: 00402025 */ or $a0,$v0,$zero diff --git a/src/game/game_0b63b0.c b/src/game/game_0b63b0.c index b3364df6d..3d00f8a93 100644 --- a/src/game/game_0b63b0.c +++ b/src/game/game_0b63b0.c @@ -3206,7 +3206,7 @@ glabel func0f0b8ba0 /* f0b9064: 8c64000c */ lw $a0,0xc($v1) /* f0b9068: 5480000e */ bnezl $a0,.L0f0b90a4 /* f0b906c: 8c6e0000 */ lw $t6,0x0($v1) -/* f0b9070: 0fc69e11 */ jal func0f1a7844 +/* f0b9070: 0fc69e11 */ jal fileLoad /* f0b9074: 94640002 */ lhu $a0,0x2($v1) /* f0b9078: 8fac0068 */ lw $t4,0x68($sp) /* f0b907c: 3c0b8008 */ lui $t3,%hi(g_Bodies) @@ -3248,7 +3248,7 @@ glabel func0f0b8ba0 /* f0b9100: 01ac6821 */ addu $t5,$t5,$t4 /* f0b9104: 000d6880 */ sll $t5,$t5,0x2 /* f0b9108: 008d2021 */ addu $a0,$a0,$t5 -/* f0b910c: 0fc69e11 */ jal func0f1a7844 +/* f0b910c: 0fc69e11 */ jal fileLoad /* f0b9110: 9484cf06 */ lhu $a0,-0x30fa($a0) /* f0b9114: 8fab0064 */ lw $t3,0x64($sp) /* f0b9118: 3c088008 */ lui $t0,%hi(g_Bodies) @@ -3281,7 +3281,7 @@ glabel func0f0b8ba0 /* f0b917c: 8c64000c */ lw $a0,0xc($v1) /* f0b9180: 5480000d */ bnezl $a0,.L0f0b91b8 /* f0b9184: afa400f8 */ sw $a0,0xf8($sp) -/* f0b9188: 0fc69e11 */ jal func0f1a7844 +/* f0b9188: 0fc69e11 */ jal fileLoad /* f0b918c: 94640002 */ lhu $a0,0x2($v1) /* f0b9190: 8fac0064 */ lw $t4,0x64($sp) /* f0b9194: 3c0b8008 */ lui $t3,%hi(g_Bodies) diff --git a/src/game/game_1a3340.c b/src/game/game_1a3340.c index cbea3bcfd..193ec3550 100644 --- a/src/game/game_1a3340.c +++ b/src/game/game_1a3340.c @@ -4885,7 +4885,7 @@ glabel func0f1a7794 ); GLOBAL_ASM( -glabel func0f1a7844 +glabel fileLoad /* f1a7844: 27bdffe8 */ addiu $sp,$sp,-24 /* f1a7848: afbf0014 */ sw $ra,0x14($sp) /* f1a784c: afa40018 */ sw $a0,0x18($sp) diff --git a/src/include/game/game_02cde0.h b/src/include/game/game_02cde0.h index 51ce5b9f7..328989026 100644 --- a/src/include/game/game_02cde0.h +++ b/src/include/game/game_02cde0.h @@ -2,7 +2,7 @@ #define GAME_GAME_02CDE0 u32 func0f02cde0(void); -u32 func0f02ce30(void); +bool bodyLoad(u32 bodynum); u32 func0f02ce8c(void); u32 func0f02d338(void); u32 func0f02d36c(void); diff --git a/src/include/game/game_1a3340.h b/src/include/game/game_1a3340.h index 012fc1a93..e0878105d 100644 --- a/src/include/game/game_1a3340.h +++ b/src/include/game/game_1a3340.h @@ -36,7 +36,7 @@ u32 func0f1a7554(void); u32 func0f1a7560(void); u32 func0f1a7730(void); u32 func0f1a7794(void); -u32 func0f1a7844(void); +void *fileLoad(u32 fileid); s32 menudialog001a39a8(u32, u32, u32 *); s32 menudialog001a3af4(u32, u32, u32 *); s32 menudialog001a5f48(u32, u32, u32 *); diff --git a/src/include/types.h b/src/include/types.h index 070d1d4de..b8eb87bab 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -2946,7 +2946,7 @@ struct body { u16 bodyfileid; f32 unk04; f32 unk08; - u32 unk0c; + void *unk0c; // likely a pointer to bodyfile data if loaded u16 handfileid; };