From 801a221dd9e7dc4e15624e52269dc7ede2fbfbac Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 12 Feb 2021 00:17:59 +1000 Subject: [PATCH] Decompile setupLoadFiles --- src/game/core.c | 2 +- src/game/data/data_020df0.c | 2 +- src/game/game_00c490.c | 641 +++++++++------------------- src/game/game_013cf0.c | 2 +- src/game/game_091e10.c | 6 +- src/game/game_097ba0.c | 4 +- src/game/game_0b69d0.c | 8 +- src/game/game_1a7560.c | 2 +- src/game/propobj.c | 38 +- src/game/room.c | 8 +- src/game/title.c | 50 +-- src/include/constants.h | 5 + src/include/game/data/data_000000.h | 2 +- src/include/game/data/data_020df0.h | 2 +- src/include/game/file.h | 2 +- src/include/game/game_00c490.h | 2 +- src/include/game/game_011110.h | 2 +- src/include/types.h | 2 +- src/lib/lib_0d0a0.c | 10 +- 19 files changed, 273 insertions(+), 517 deletions(-) diff --git a/src/game/core.c b/src/game/core.c index 2988a065c..cacbcb07c 100644 --- a/src/game/core.c +++ b/src/game/core.c @@ -362,7 +362,7 @@ void coreLoadStage(s32 stagenum) func0f013ba0(); func0f011110(); func0f0108d0(); - func0f00eb64(stagenum); + setupLoadFiles(stagenum); mpPrepareScenario(); gvarsInitProps(); setupInit(); diff --git a/src/game/data/data_020df0.c b/src/game/data/data_020df0.c index 96c40755e..e29dd2c78 100644 --- a/src/game/data/data_020df0.c +++ b/src/game/data/data_020df0.c @@ -476,7 +476,7 @@ struct stagethinglist stagethinglist_21084 = { }; // 2108c -struct propdefinition g_Props[] = { +struct modelstate g_ModelStates[441] = { // file scale /*0x0000*/ { NULL, FILE_PROOFGUN, 0x0199 }, /*0x0001*/ { NULL, FILE_PGROUNDGUN, 0x0199 }, diff --git a/src/game/game_00c490.c b/src/game/game_00c490.c index f57817c4b..bba803e10 100644 --- a/src/game/game_00c490.c +++ b/src/game/game_00c490.c @@ -9,6 +9,7 @@ #include "game/data/data_01a3a0.h" #include "game/data/data_020df0.h" #include "game/data/data_02a0e0.h" +#include "game/data/data_020df0.h" #include "game/data/data_02da90.h" #include "game/game_00b480.h" #include "game/game_00b820.h" @@ -406,18 +407,18 @@ glabel var7f1a7f80 /* f00cf7c: 15610009 */ bne $t3,$at,.L0f00cfa4 /* f00cf80: 000868c0 */ sll $t5,$t0,0x3 /* f00cf84: 000860c0 */ sll $t4,$t0,0x3 -/* f00cf88: 3c058008 */ lui $a1,%hi(g_Props) +/* f00cf88: 3c058008 */ lui $a1,%hi(g_ModelStates) /* f00cf8c: 00ac2821 */ addu $a1,$a1,$t4 -/* f00cf90: 8ca5b06c */ lw $a1,%lo(g_Props)($a1) +/* f00cf90: 8ca5b06c */ lw $a1,%lo(g_ModelStates)($a1) /* f00cf94: 0fc22b83 */ jal func0f08ae0c /* f00cf98: 02002025 */ or $a0,$s0,$zero /* f00cf9c: 10000006 */ b .L0f00cfb8 /* f00cfa0: 8e040018 */ lw $a0,0x18($s0) .L0f00cfa4: -/* f00cfa4: 3c058008 */ lui $a1,%hi(g_Props) +/* f00cfa4: 3c058008 */ lui $a1,%hi(g_ModelStates) /* f00cfa8: 00ad2821 */ addu $a1,$a1,$t5 /* f00cfac: 0fc1a94b */ jal func0f06a52c -/* f00cfb0: 8ca5b06c */ lw $a1,%lo(g_Props)($a1) +/* f00cfb0: 8ca5b06c */ lw $a1,%lo(g_ModelStates)($a1) /* f00cfb4: 8e040018 */ lw $a0,0x18($s0) .L0f00cfb8: /* f00cfb8: c7a6009c */ lwc1 $f6,0x9c($sp) @@ -448,18 +449,18 @@ glabel var7f1a7f80 /* f00d018: 17210009 */ bne $t9,$at,.L0f00d040 /* f00d01c: 000850c0 */ sll $t2,$t0,0x3 /* f00d020: 000848c0 */ sll $t1,$t0,0x3 -/* f00d024: 3c058008 */ lui $a1,%hi(g_Props) +/* f00d024: 3c058008 */ lui $a1,%hi(g_ModelStates) /* f00d028: 00a92821 */ addu $a1,$a1,$t1 -/* f00d02c: 8ca5b06c */ lw $a1,%lo(g_Props)($a1) +/* f00d02c: 8ca5b06c */ lw $a1,%lo(g_ModelStates)($a1) /* f00d030: 0fc22b83 */ jal func0f08ae0c /* f00d034: 02002025 */ or $a0,$s0,$zero /* f00d038: 10000006 */ b .L0f00d054 /* f00d03c: 00403025 */ or $a2,$v0,$zero .L0f00d040: -/* f00d040: 3c058008 */ lui $a1,%hi(g_Props) +/* f00d040: 3c058008 */ lui $a1,%hi(g_ModelStates) /* f00d044: 00aa2821 */ addu $a1,$a1,$t2 /* f00d048: 0fc1a94b */ jal func0f06a52c -/* f00d04c: 8ca5b06c */ lw $a1,%lo(g_Props)($a1) +/* f00d04c: 8ca5b06c */ lw $a1,%lo(g_ModelStates)($a1) /* f00d050: 00403025 */ or $a2,$v0,$zero .L0f00d054: /* f00d054: 8e040018 */ lw $a0,0x18($s0) @@ -487,18 +488,18 @@ glabel var7f1a7f80 /* f00d0a8: 15810009 */ bne $t4,$at,.L0f00d0d0 /* f00d0ac: 000870c0 */ sll $t6,$t0,0x3 /* f00d0b0: 000868c0 */ sll $t5,$t0,0x3 -/* f00d0b4: 3c058008 */ lui $a1,%hi(g_Props) +/* f00d0b4: 3c058008 */ lui $a1,%hi(g_ModelStates) /* f00d0b8: 00ad2821 */ addu $a1,$a1,$t5 -/* f00d0bc: 8ca5b06c */ lw $a1,%lo(g_Props)($a1) +/* f00d0bc: 8ca5b06c */ lw $a1,%lo(g_ModelStates)($a1) /* f00d0c0: 0fc22b83 */ jal func0f08ae0c /* f00d0c4: 02002025 */ or $a0,$s0,$zero /* f00d0c8: 10000006 */ b .L0f00d0e4 /* f00d0cc: 8e040018 */ lw $a0,0x18($s0) .L0f00d0d0: -/* f00d0d0: 3c058008 */ lui $a1,%hi(g_Props) +/* f00d0d0: 3c058008 */ lui $a1,%hi(g_ModelStates) /* f00d0d4: 00ae2821 */ addu $a1,$a1,$t6 /* f00d0d8: 0fc1a94b */ jal func0f06a52c -/* f00d0dc: 8ca5b06c */ lw $a1,%lo(g_Props)($a1) +/* f00d0dc: 8ca5b06c */ lw $a1,%lo(g_ModelStates)($a1) /* f00d0e0: 8e040018 */ lw $a0,0x18($s0) .L0f00d0e4: /* f00d0e4: c7a4009c */ lwc1 $f4,0x9c($sp) @@ -602,10 +603,10 @@ glabel var7f1a7f80 /* f00d25c: 02002025 */ or $a0,$s0,$zero /* f00d260: 15610007 */ bne $t3,$at,.L0f00d280 /* f00d264: 000860c0 */ sll $t4,$t0,0x3 -/* f00d268: 3c058008 */ lui $a1,%hi(g_Props) +/* f00d268: 3c058008 */ lui $a1,%hi(g_ModelStates) /* f00d26c: 00ac2821 */ addu $a1,$a1,$t4 /* f00d270: 0fc22b83 */ jal func0f08ae0c -/* f00d274: 8ca5b06c */ lw $a1,%lo(g_Props)($a1) +/* f00d274: 8ca5b06c */ lw $a1,%lo(g_ModelStates)($a1) /* f00d278: 10000004 */ b .L0f00d28c /* f00d27c: afa2007c */ sw $v0,0x7c($sp) .L0f00d280: @@ -1435,12 +1436,12 @@ glabel var7f1a8064 /* f00e560: 8fab01b0 */ lw $t3,0x1b0($sp) .L0f00e564: /* f00e564: 8fac01c0 */ lw $t4,0x1c0($sp) -/* f00e568: 3c048008 */ lui $a0,%hi(g_Props) +/* f00e568: 3c048008 */ lui $a0,%hi(g_ModelStates) /* f00e56c: 196000e1 */ blez $t3,.L0f00e8f4 /* f00e570: 000c68c0 */ sll $t5,$t4,0x3 /* f00e574: 008d2021 */ addu $a0,$a0,$t5 /* f00e578: 0fc1a25b */ jal func0f06896c -/* f00e57c: 8c84b06c */ lw $a0,%lo(g_Props)($a0) +/* f00e57c: 8c84b06c */ lw $a0,%lo(g_ModelStates)($a0) /* f00e580: c7b20174 */ lwc1 $f18,0x174($sp) /* f00e584: 44800000 */ mtc1 $zero,$f0 /* f00e588: c7aa0178 */ lwc1 $f10,0x178($sp) @@ -1753,7 +1754,7 @@ glabel var7f1a8064 // f32 sp48; // f32 *floats; // 44 // -// floats = func0f06896c(g_Props[modelnum].filedata); +// floats = func0f06896c(g_ModelStates[modelnum].filedata); // // func00016d58(sp110, 0, 0, 0, // -pad.look.x, -pad.look.y, -pad.look.z, @@ -1889,8 +1890,8 @@ glabel func0f00e980 /* f00e9e0: 004e1021 */ addu $v0,$v0,$t6 /* f00e9e4: 9444fcce */ lhu $a0,%lo(g_Stages+0xe)($v0) /* f00e9e8: 240f0003 */ addiu $t7,$zero,0x3 -/* f00e9ec: 3c018006 */ lui $at,%hi(var8005d9a0) -/* f00e9f0: a02fd9a0 */ sb $t7,%lo(var8005d9a0)($at) +/* f00e9ec: 3c018006 */ lui $at,%hi(g_LoadState) +/* f00e9f0: a02fd9a0 */ sb $t7,%lo(g_LoadState)($at) /* f00e9f4: 24050022 */ addiu $a1,$zero,0x22 /* f00e9f8: 02403025 */ or $a2,$s2,$zero /* f00e9fc: 02a03825 */ or $a3,$s5,$zero @@ -1994,424 +1995,174 @@ glabel func0f00e980 /* f00eb60: 27bd0038 */ addiu $sp,$sp,0x38 ); -GLOBAL_ASM( -glabel func0f00eb64 -/* f00eb64: 3c018007 */ lui $at,%hi(var80069960) -/* f00eb68: ac209960 */ sw $zero,%lo(var80069960)($at) -/* f00eb6c: 3c018007 */ lui $at,%hi(var80069964) -/* f00eb70: 240effff */ addiu $t6,$zero,-1 -/* f00eb74: ac2e9964 */ sw $t6,%lo(var80069964)($at) -/* f00eb78: 3c013f80 */ lui $at,0x3f80 -/* f00eb7c: 44812000 */ mtc1 $at,$f4 -/* f00eb80: 27bdffa0 */ addiu $sp,$sp,-96 -/* f00eb84: afb00018 */ sw $s0,0x18($sp) -/* f00eb88: 3c018006 */ lui $at,%hi(g_DoorScale) -/* f00eb8c: 3c028008 */ lui $v0,%hi(g_Props) -/* f00eb90: 3c038008 */ lui $v1,%hi(propexplosiontypes) -/* f00eb94: afbf001c */ sw $ra,0x1c($sp) -/* f00eb98: 00803025 */ or $a2,$a0,$zero -/* f00eb9c: afa0004c */ sw $zero,0x4c($sp) -/* f00eba0: 00008025 */ or $s0,$zero,$zero -/* f00eba4: 2463be34 */ addiu $v1,$v1,%lo(propexplosiontypes) -/* f00eba8: 2442b06c */ addiu $v0,$v0,%lo(g_Props) -/* f00ebac: e4241be0 */ swc1 $f4,%lo(g_DoorScale)($at) -.L0f00ebb0: -/* f00ebb0: 24420008 */ addiu $v0,$v0,0x8 -/* f00ebb4: 0043082b */ sltu $at,$v0,$v1 -/* f00ebb8: 1420fffd */ bnez $at,.L0f00ebb0 -/* f00ebbc: ac40fff8 */ sw $zero,-0x8($v0) -/* f00ebc0: 28c1005a */ slti $at,$a2,0x5a -/* f00ebc4: 1020014f */ beqz $at,.L0f00f104 -/* f00ebc8: 3c07800a */ lui $a3,%hi(g_StageSetup) -/* f00ebcc: 3c0f800a */ lui $t7,%hi(g_Vars+0x318) -/* f00ebd0: 8defa2d8 */ lw $t7,%lo(g_Vars+0x318)($t7) -/* f00ebd4: 240c0004 */ addiu $t4,$zero,0x4 -/* f00ebd8: 3c018006 */ lui $at,%hi(var8005d9a0) -/* f00ebdc: 11e0000a */ beqz $t7,.L0f00ec08 -/* f00ebe0: 24050022 */ addiu $a1,$zero,0x22 -/* f00ebe4: 3c188008 */ lui $t8,%hi(g_StageIndex) -/* f00ebe8: 8f18fc00 */ lw $t8,%lo(g_StageIndex)($t8) -/* f00ebec: 3c028008 */ lui $v0,%hi(g_Stages+0x10) -/* f00ebf0: 0018c8c0 */ sll $t9,$t8,0x3 -/* f00ebf4: 0338c823 */ subu $t9,$t9,$t8 -/* f00ebf8: 0019c8c0 */ sll $t9,$t9,0x3 -/* f00ebfc: 00591021 */ addu $v0,$v0,$t9 -/* f00ec00: 10000009 */ b .L0f00ec28 -/* f00ec04: 9442fcd0 */ lhu $v0,%lo(g_Stages+0x10)($v0) -.L0f00ec08: -/* f00ec08: 3c0a8008 */ lui $t2,%hi(g_StageIndex) -/* f00ec0c: 8d4afc00 */ lw $t2,%lo(g_StageIndex)($t2) -/* f00ec10: 3c028008 */ lui $v0,%hi(g_Stages+0xe) -/* f00ec14: 000a58c0 */ sll $t3,$t2,0x3 -/* f00ec18: 016a5823 */ subu $t3,$t3,$t2 -/* f00ec1c: 000b58c0 */ sll $t3,$t3,0x3 -/* f00ec20: 004b1021 */ addu $v0,$v0,$t3 -/* f00ec24: 9442fcce */ lhu $v0,%lo(g_Stages+0xe)($v0) -.L0f00ec28: -/* f00ec28: a02cd9a0 */ sb $t4,%lo(var8005d9a0)($at) -/* f00ec2c: 00402025 */ or $a0,$v0,$zero -/* f00ec30: 0fc59c3f */ jal func0f1670fc -/* f00ec34: afa60060 */ sw $a2,0x60($sp) -/* f00ec38: 3c03800a */ lui $v1,%hi(g_GeCreditsData) -/* f00ec3c: 2463d050 */ addiu $v1,$v1,%lo(g_GeCreditsData) -/* f00ec40: ac620000 */ sw $v0,0x0($v1) -/* f00ec44: 8fa40060 */ lw $a0,0x60($sp) -/* f00ec48: 0fc5b878 */ jal langGetLangBankIndexFromStagenum -/* f00ec4c: afa20040 */ sw $v0,0x40($sp) -/* f00ec50: 0fc5b9ca */ jal langSetBankSimple -/* f00ec54: 00402025 */ or $a0,$v0,$zero -/* f00ec58: 8fa90040 */ lw $t1,0x40($sp) -/* f00ec5c: 3c07800a */ lui $a3,%hi(g_StageSetup) -/* f00ec60: 24e7d030 */ addiu $a3,$a3,%lo(g_StageSetup) -/* f00ec64: 8d2d000c */ lw $t5,0xc($t1) -/* f00ec68: 3c048008 */ lui $a0,%hi(g_Stages+0xc) -/* f00ec6c: 3c018006 */ lui $at,%hi(var8005d9a0) -/* f00ec70: 012d7021 */ addu $t6,$t1,$t5 -/* f00ec74: acee000c */ sw $t6,0xc($a3) -/* f00ec78: 8d2f0010 */ lw $t7,0x10($t1) -/* f00ec7c: 3c0e8008 */ lui $t6,%hi(g_StageIndex) -/* f00ec80: 240d0005 */ addiu $t5,$zero,0x5 -/* f00ec84: 012fc021 */ addu $t8,$t1,$t7 -/* f00ec88: acf80010 */ sw $t8,0x10($a3) -/* f00ec8c: 8d390014 */ lw $t9,0x14($t1) -/* f00ec90: 24050022 */ addiu $a1,$zero,0x22 -/* f00ec94: 01395021 */ addu $t2,$t1,$t9 -/* f00ec98: acea0014 */ sw $t2,0x14($a3) -/* f00ec9c: 8d2b0018 */ lw $t3,0x18($t1) -/* f00eca0: 012b6021 */ addu $t4,$t1,$t3 -/* f00eca4: acec0018 */ sw $t4,0x18($a3) -/* f00eca8: 8dcefc00 */ lw $t6,%lo(g_StageIndex)($t6) -/* f00ecac: a02dd9a0 */ sb $t5,%lo(var8005d9a0)($at) -/* f00ecb0: 000e78c0 */ sll $t7,$t6,0x3 -/* f00ecb4: 01ee7823 */ subu $t7,$t7,$t6 -/* f00ecb8: 000f78c0 */ sll $t7,$t7,0x3 -/* f00ecbc: 008f2021 */ addu $a0,$a0,$t7 -/* f00ecc0: 0fc59c3f */ jal func0f1670fc -/* f00ecc4: 9484fccc */ lhu $a0,%lo(g_Stages+0xc)($a0) -/* f00ecc8: 3c07800a */ lui $a3,%hi(g_StageSetup) -/* f00eccc: 24e7d030 */ addiu $a3,$a3,%lo(g_StageSetup) -/* f00ecd0: 8ce60018 */ lw $a2,0x18($a3) -/* f00ecd4: ace2001c */ sw $v0,0x1c($a3) -/* f00ecd8: 8fa90040 */ lw $t1,0x40($sp) -/* f00ecdc: ace00000 */ sw $zero,0x0($a3) -/* f00ece0: ace00004 */ sw $zero,0x4($a3) -/* f00ece4: 10c0000f */ beqz $a2,.L0f00ed24 -/* f00ece8: ace00008 */ sw $zero,0x8($a3) -/* f00ecec: 8cd80000 */ lw $t8,0x0($a2) -/* f00ecf0: 00001825 */ or $v1,$zero,$zero -/* f00ecf4: 00c01025 */ or $v0,$a2,$zero -/* f00ecf8: 1300000a */ beqz $t8,.L0f00ed24 -/* f00ecfc: 00000000 */ nop -/* f00ed00: 8cc40000 */ lw $a0,0x0($a2) -/* f00ed04: 0089c821 */ addu $t9,$a0,$t1 -.L0f00ed08: -/* f00ed08: ac590000 */ sw $t9,0x0($v0) -/* f00ed0c: 8ce60018 */ lw $a2,0x18($a3) -/* f00ed10: 24630008 */ addiu $v1,$v1,0x8 -/* f00ed14: 00c31021 */ addu $v0,$a2,$v1 -/* f00ed18: 8c440000 */ lw $a0,0x0($v0) -/* f00ed1c: 5480fffa */ bnezl $a0,.L0f00ed08 -/* f00ed20: 0089c821 */ addu $t9,$a0,$t1 -.L0f00ed24: -/* f00ed24: 3c088008 */ lui $t0,%hi(g_GlobalAilists) -/* f00ed28: 2508ac58 */ addiu $t0,$t0,%lo(g_GlobalAilists) -/* f00ed2c: 27a40050 */ addiu $a0,$sp,0x50 -/* f00ed30: 8d0a0008 */ lw $t2,0x8($t0) -.L0f00ed34: -/* f00ed34: 3c028008 */ lui $v0,%hi(g_GlobalAilists) -/* f00ed38: 00002825 */ or $a1,$zero,$zero -/* f00ed3c: 11400017 */ beqz $t2,.L0f00ed9c -/* f00ed40: 2442ac58 */ addiu $v0,$v0,%lo(g_GlobalAilists) -/* f00ed44: 8c4b000c */ lw $t3,0xc($v0) -.L0f00ed48: -/* f00ed48: 8c4c0004 */ lw $t4,0x4($v0) -/* f00ed4c: 016c082a */ slt $at,$t3,$t4 -/* f00ed50: 5020000f */ beqzl $at,.L0f00ed90 -/* f00ed54: 8c4b0010 */ lw $t3,0x10($v0) -/* f00ed58: 8c410000 */ lw $at,0x0($v0) -/* f00ed5c: 24430008 */ addiu $v1,$v0,0x8 -/* f00ed60: 8c4e0004 */ lw $t6,0x4($v0) -/* f00ed64: ac810000 */ sw $at,0x0($a0) -/* f00ed68: 8c610000 */ lw $at,0x0($v1) -/* f00ed6c: 24050001 */ addiu $a1,$zero,0x1 -/* f00ed70: ac8e0004 */ sw $t6,0x4($a0) -/* f00ed74: ac410000 */ sw $at,0x0($v0) -/* f00ed78: 8c780004 */ lw $t8,0x4($v1) -/* f00ed7c: 8c810000 */ lw $at,0x0($a0) -/* f00ed80: ac580004 */ sw $t8,0x4($v0) -/* f00ed84: ac6e0004 */ sw $t6,0x4($v1) -/* f00ed88: ac610000 */ sw $at,0x0($v1) -/* f00ed8c: 8c4b0010 */ lw $t3,0x10($v0) -.L0f00ed90: -/* f00ed90: 24420008 */ addiu $v0,$v0,0x8 -/* f00ed94: 5560ffec */ bnezl $t3,.L0f00ed48 -/* f00ed98: 8c4b000c */ lw $t3,0xc($v0) -.L0f00ed9c: -/* f00ed9c: 54a0ffe5 */ bnezl $a1,.L0f00ed34 -/* f00eda0: 8d0a0008 */ lw $t2,0x8($t0) -/* f00eda4: 8ccc0008 */ lw $t4,0x8($a2) -.L0f00eda8: -/* f00eda8: 00002825 */ or $a1,$zero,$zero -/* f00edac: 00001825 */ or $v1,$zero,$zero -/* f00edb0: 1180001c */ beqz $t4,.L0f00ee24 -/* f00edb4: 00c01025 */ or $v0,$a2,$zero -/* f00edb8: 8c4d000c */ lw $t5,0xc($v0) -.L0f00edbc: -/* f00edbc: 8c4e0004 */ lw $t6,0x4($v0) -/* f00edc0: 01ae082a */ slt $at,$t5,$t6 -/* f00edc4: 50200013 */ beqzl $at,.L0f00ee14 -/* f00edc8: 8c4f0010 */ lw $t7,0x10($v0) -/* f00edcc: 8c410000 */ lw $at,0x0($v0) -/* f00edd0: 24050001 */ addiu $a1,$zero,0x1 -/* f00edd4: ac810000 */ sw $at,0x0($a0) -/* f00edd8: 8c580004 */ lw $t8,0x4($v0) -/* f00eddc: ac980004 */ sw $t8,0x4($a0) -/* f00ede0: 8c4a000c */ lw $t2,0xc($v0) -/* f00ede4: 8c410008 */ lw $at,0x8($v0) -/* f00ede8: ac4a0004 */ sw $t2,0x4($v0) -/* f00edec: ac410000 */ sw $at,0x0($v0) -/* f00edf0: 8ceb0018 */ lw $t3,0x18($a3) -/* f00edf4: 8c810000 */ lw $at,0x0($a0) -/* f00edf8: 01636021 */ addu $t4,$t3,$v1 -/* f00edfc: ad810008 */ sw $at,0x8($t4) -/* f00ee00: 8c8e0004 */ lw $t6,0x4($a0) -/* f00ee04: ad8e000c */ sw $t6,0xc($t4) -/* f00ee08: 8ce60018 */ lw $a2,0x18($a3) -/* f00ee0c: 00c31021 */ addu $v0,$a2,$v1 -/* f00ee10: 8c4f0010 */ lw $t7,0x10($v0) -.L0f00ee14: -/* f00ee14: 24630008 */ addiu $v1,$v1,0x8 -/* f00ee18: 24420008 */ addiu $v0,$v0,0x8 -/* f00ee1c: 55e0ffe7 */ bnezl $t7,.L0f00edbc -/* f00ee20: 8c4d000c */ lw $t5,0xc($v0) -.L0f00ee24: -/* f00ee24: 54a0ffe0 */ bnezl $a1,.L0f00eda8 -/* f00ee28: 8ccc0008 */ lw $t4,0x8($a2) -/* f00ee2c: 0000c0c0 */ sll $t8,$zero,0x3 -/* f00ee30: 0118c821 */ addu $t9,$t0,$t8 -/* f00ee34: 8f2a0000 */ lw $t2,0x0($t9) -/* f00ee38: 3c038006 */ lui $v1,%hi(g_NumGlobalAilists) -/* f00ee3c: 2463ef30 */ addiu $v1,$v1,%lo(g_NumGlobalAilists) -/* f00ee40: ac600000 */ sw $zero,0x0($v1) -/* f00ee44: 11400009 */ beqz $t2,.L0f00ee6c -/* f00ee48: 00001025 */ or $v0,$zero,$zero -/* f00ee4c: 244b0001 */ addiu $t3,$v0,0x1 -.L0f00ee50: -/* f00ee50: 000b68c0 */ sll $t5,$t3,0x3 -/* f00ee54: 010d6021 */ addu $t4,$t0,$t5 -/* f00ee58: 8d8e0000 */ lw $t6,0x0($t4) -/* f00ee5c: ac6b0000 */ sw $t3,0x0($v1) -/* f00ee60: 01601025 */ or $v0,$t3,$zero -/* f00ee64: 55c0fffa */ bnezl $t6,.L0f00ee50 -/* f00ee68: 244b0001 */ addiu $t3,$v0,0x1 -.L0f00ee6c: -/* f00ee6c: 3c038006 */ lui $v1,%hi(g_NumLvAilists) -/* f00ee70: 2463ef34 */ addiu $v1,$v1,%lo(g_NumLvAilists) -/* f00ee74: 000078c0 */ sll $t7,$zero,0x3 -/* f00ee78: 00cfc021 */ addu $t8,$a2,$t7 -/* f00ee7c: ac600000 */ sw $zero,0x0($v1) -/* f00ee80: 8f190000 */ lw $t9,0x0($t8) -/* f00ee84: 00001025 */ or $v0,$zero,$zero -/* f00ee88: 13200008 */ beqz $t9,.L0f00eeac -/* f00ee8c: 244a0001 */ addiu $t2,$v0,0x1 -.L0f00ee90: -/* f00ee90: 000a58c0 */ sll $t3,$t2,0x3 -/* f00ee94: 00cb6821 */ addu $t5,$a2,$t3 -/* f00ee98: ac6a0000 */ sw $t2,0x0($v1) -/* f00ee9c: 8dac0000 */ lw $t4,0x0($t5) -/* f00eea0: 01401025 */ or $v0,$t2,$zero -/* f00eea4: 5580fffa */ bnezl $t4,.L0f00ee90 -/* f00eea8: 244a0001 */ addiu $t2,$v0,0x1 -.L0f00eeac: -/* f00eeac: 8ce20014 */ lw $v0,0x14($a3) -/* f00eeb0: 1040001d */ beqz $v0,.L0f00ef28 -/* f00eeb4: 00000000 */ nop -/* f00eeb8: 8c4e0000 */ lw $t6,0x0($v0) -/* f00eebc: 00001825 */ or $v1,$zero,$zero -/* f00eec0: 00403025 */ or $a2,$v0,$zero -/* f00eec4: 11c00018 */ beqz $t6,.L0f00ef28 -/* f00eec8: 00000000 */ nop -/* f00eecc: 8c450000 */ lw $a1,0x0($v0) -/* f00eed0: 00a97821 */ addu $t7,$a1,$t1 -.L0f00eed4: -/* f00eed4: accf0000 */ sw $t7,0x0($a2) -/* f00eed8: 8cf80014 */ lw $t8,0x14($a3) -/* f00eedc: 00002025 */ or $a0,$zero,$zero -/* f00eee0: 03033021 */ addu $a2,$t8,$v1 -/* f00eee4: 8cc50000 */ lw $a1,0x0($a2) -/* f00eee8: 8cb90000 */ lw $t9,0x0($a1) -/* f00eeec: 00a01025 */ or $v0,$a1,$zero -/* f00eef0: 07220007 */ bltzl $t9,.L0f00ef10 -/* f00eef4: a4c40006 */ sh $a0,0x6($a2) -/* f00eef8: 8c4a0004 */ lw $t2,0x4($v0) -.L0f00eefc: -/* f00eefc: 24840001 */ addiu $a0,$a0,0x1 -/* f00ef00: 24420004 */ addiu $v0,$v0,0x4 -/* f00ef04: 0543fffd */ bgezl $t2,.L0f00eefc -/* f00ef08: 8c4a0004 */ lw $t2,0x4($v0) -/* f00ef0c: a4c40006 */ sh $a0,0x6($a2) -.L0f00ef10: -/* f00ef10: 8ceb0014 */ lw $t3,0x14($a3) -/* f00ef14: 24630008 */ addiu $v1,$v1,0x8 -/* f00ef18: 01633021 */ addu $a2,$t3,$v1 -/* f00ef1c: 8cc50000 */ lw $a1,0x0($a2) -/* f00ef20: 54a0ffec */ bnezl $a1,.L0f00eed4 -/* f00ef24: 00a97821 */ addu $t7,$a1,$t1 -.L0f00ef28: -/* f00ef28: 0fc03398 */ jal setupCountCommandType -/* f00ef2c: 24040009 */ addiu $a0,$zero,0x9 -/* f00ef30: 3c05800a */ lui $a1,%hi(g_Vars) -/* f00ef34: 24a59fc0 */ addiu $a1,$a1,%lo(g_Vars) -/* f00ef38: 8cad0318 */ lw $t5,0x318($a1) -/* f00ef3c: 00401825 */ or $v1,$v0,$zero -/* f00ef40: 24040008 */ addiu $a0,$zero,0x8 -/* f00ef44: 15a00009 */ bnez $t5,.L0f00ef6c -/* f00ef48: 3c0c800a */ lui $t4,%hi(g_MissionConfig+0x3) -/* f00ef4c: 818edfeb */ lb $t6,%lo(g_MissionConfig+0x3)($t4) -/* f00ef50: 05c10006 */ bgez $t6,.L0f00ef6c -/* f00ef54: 00000000 */ nop -/* f00ef58: 8ca20474 */ lw $v0,0x474($a1) -/* f00ef5c: 18400003 */ blez $v0,.L0f00ef6c -/* f00ef60: 00000000 */ nop -/* f00ef64: 00621821 */ addu $v1,$v1,$v0 -/* f00ef68: 00408025 */ or $s0,$v0,$zero -.L0f00ef6c: -/* f00ef6c: 0fc03398 */ jal setupCountCommandType -/* f00ef70: afa3004c */ sw $v1,0x4c($sp) -/* f00ef74: 02028021 */ addu $s0,$s0,$v0 -/* f00ef78: 0fc03398 */ jal setupCountCommandType -/* f00ef7c: 24040004 */ addiu $a0,$zero,0x4 -/* f00ef80: 02028021 */ addu $s0,$s0,$v0 -/* f00ef84: 0fc03398 */ jal setupCountCommandType -/* f00ef88: 24040011 */ addiu $a0,$zero,0x11 -/* f00ef8c: 02028021 */ addu $s0,$s0,$v0 -/* f00ef90: 0fc03398 */ jal setupCountCommandType -/* f00ef94: 24040001 */ addiu $a0,$zero,0x1 -/* f00ef98: 02028021 */ addu $s0,$s0,$v0 -/* f00ef9c: 0fc03398 */ jal setupCountCommandType -/* f00efa0: 24040006 */ addiu $a0,$zero,0x6 -/* f00efa4: 02028021 */ addu $s0,$s0,$v0 -/* f00efa8: 0fc03398 */ jal setupCountCommandType -/* f00efac: 2404000d */ addiu $a0,$zero,0xd -/* f00efb0: 02028021 */ addu $s0,$s0,$v0 -/* f00efb4: 0fc03398 */ jal setupCountCommandType -/* f00efb8: 2404000c */ addiu $a0,$zero,0xc -/* f00efbc: 02028021 */ addu $s0,$s0,$v0 -/* f00efc0: 0fc03398 */ jal setupCountCommandType -/* f00efc4: 2404000a */ addiu $a0,$zero,0xa -/* f00efc8: 02028021 */ addu $s0,$s0,$v0 -/* f00efcc: 0fc03398 */ jal setupCountCommandType -/* f00efd0: 2404000b */ addiu $a0,$zero,0xb -/* f00efd4: 02028021 */ addu $s0,$s0,$v0 -/* f00efd8: 0fc03398 */ jal setupCountCommandType -/* f00efdc: 24040015 */ addiu $a0,$zero,0x15 -/* f00efe0: 02028021 */ addu $s0,$s0,$v0 -/* f00efe4: 0fc03398 */ jal setupCountCommandType -/* f00efe8: 24040003 */ addiu $a0,$zero,0x3 -/* f00efec: 02028021 */ addu $s0,$s0,$v0 -/* f00eff0: 0fc03398 */ jal setupCountCommandType -/* f00eff4: 2404000f */ addiu $a0,$zero,0xf -/* f00eff8: 02028021 */ addu $s0,$s0,$v0 -/* f00effc: 0fc03398 */ jal setupCountCommandType -/* f00f000: 2404002a */ addiu $a0,$zero,0x2a -/* f00f004: 02028021 */ addu $s0,$s0,$v0 -/* f00f008: 0fc03398 */ jal setupCountCommandType -/* f00f00c: 2404002f */ addiu $a0,$zero,0x2f -/* f00f010: 02028021 */ addu $s0,$s0,$v0 -/* f00f014: 0fc03398 */ jal setupCountCommandType -/* f00f018: 2404002b */ addiu $a0,$zero,0x2b -/* f00f01c: 02028021 */ addu $s0,$s0,$v0 -/* f00f020: 0fc03398 */ jal setupCountCommandType -/* f00f024: 24040029 */ addiu $a0,$zero,0x29 -/* f00f028: 02028021 */ addu $s0,$s0,$v0 -/* f00f02c: 0fc03398 */ jal setupCountCommandType -/* f00f030: 24040024 */ addiu $a0,$zero,0x24 -/* f00f034: 02028021 */ addu $s0,$s0,$v0 -/* f00f038: 0fc03398 */ jal setupCountCommandType -/* f00f03c: 24040005 */ addiu $a0,$zero,0x5 -/* f00f040: 02028021 */ addu $s0,$s0,$v0 -/* f00f044: 0fc03398 */ jal setupCountCommandType -/* f00f048: 24040007 */ addiu $a0,$zero,0x7 -/* f00f04c: 02028021 */ addu $s0,$s0,$v0 -/* f00f050: 0fc03398 */ jal setupCountCommandType -/* f00f054: 24040014 */ addiu $a0,$zero,0x14 -/* f00f058: 02028021 */ addu $s0,$s0,$v0 -/* f00f05c: 0fc03398 */ jal setupCountCommandType -/* f00f060: 24040027 */ addiu $a0,$zero,0x27 -/* f00f064: 02028021 */ addu $s0,$s0,$v0 -/* f00f068: 0fc03398 */ jal setupCountCommandType -/* f00f06c: 2404002d */ addiu $a0,$zero,0x2d -/* f00f070: 02028021 */ addu $s0,$s0,$v0 -/* f00f074: 0fc03398 */ jal setupCountCommandType -/* f00f078: 24040030 */ addiu $a0,$zero,0x30 -/* f00f07c: 02028021 */ addu $s0,$s0,$v0 -/* f00f080: 0fc03398 */ jal setupCountCommandType -/* f00f084: 24040033 */ addiu $a0,$zero,0x33 -/* f00f088: 02028021 */ addu $s0,$s0,$v0 -/* f00f08c: 0fc03398 */ jal setupCountCommandType -/* f00f090: 24040035 */ addiu $a0,$zero,0x35 -/* f00f094: 02028021 */ addu $s0,$s0,$v0 -/* f00f098: 0fc03398 */ jal setupCountCommandType -/* f00f09c: 24040036 */ addiu $a0,$zero,0x36 -/* f00f0a0: 02028021 */ addu $s0,$s0,$v0 -/* f00f0a4: 0fc03398 */ jal setupCountCommandType -/* f00f0a8: 24040037 */ addiu $a0,$zero,0x37 -/* f00f0ac: 02028021 */ addu $s0,$s0,$v0 -/* f00f0b0: 0fc03398 */ jal setupCountCommandType -/* f00f0b4: 24040039 */ addiu $a0,$zero,0x39 -/* f00f0b8: 02028021 */ addu $s0,$s0,$v0 -/* f00f0bc: 0fc03398 */ jal setupCountCommandType -/* f00f0c0: 24040028 */ addiu $a0,$zero,0x28 -/* f00f0c4: 02028021 */ addu $s0,$s0,$v0 -/* f00f0c8: 0fc03398 */ jal setupCountCommandType -/* f00f0cc: 2404003b */ addiu $a0,$zero,0x3b -/* f00f0d0: 3c0f800a */ lui $t7,%hi(g_Vars+0x318) -/* f00f0d4: 8defa2d8 */ lw $t7,%lo(g_Vars+0x318)($t7) -/* f00f0d8: 02028021 */ addu $s0,$s0,$v0 -/* f00f0dc: 51e00005 */ beqzl $t7,.L0f00f0f4 -/* f00f0e0: 02002025 */ or $a0,$s0,$zero -/* f00f0e4: 0fc61533 */ jal scenarioCallback08 -/* f00f0e8: 00000000 */ nop -/* f00f0ec: 02028021 */ addu $s0,$s0,$v0 -/* f00f0f0: 02002025 */ or $a0,$s0,$zero -.L0f00f0f4: -/* f00f0f4: 0fc0444c */ jal func0f011130 -/* f00f0f8: 8fa5004c */ lw $a1,0x4c($sp) -/* f00f0fc: 1000000c */ b .L0f00f130 -/* f00f100: 00000000 */ nop -.L0f00f104: -/* f00f104: 24e7d030 */ addiu $a3,$a3,%lo(g_StageSetup) -/* f00f108: ace00000 */ sw $zero,0x0($a3) -/* f00f10c: ace00004 */ sw $zero,0x4($a3) -/* f00f110: ace0000c */ sw $zero,0xc($a3) -/* f00f114: ace00010 */ sw $zero,0x10($a3) -/* f00f118: ace00014 */ sw $zero,0x14($a3) -/* f00f11c: ace00018 */ sw $zero,0x18($a3) -/* f00f120: ace0001c */ sw $zero,0x1c($a3) -/* f00f124: 00002025 */ or $a0,$zero,$zero -/* f00f128: 0fc0444c */ jal func0f011130 -/* f00f12c: 00002825 */ or $a1,$zero,$zero -.L0f00f130: -/* f00f130: 3c028009 */ lui $v0,%hi(g_Is4Mb) -/* f00f134: 90420af0 */ lbu $v0,%lo(g_Is4Mb)($v0) -/* f00f138: 8fb8004c */ lw $t8,0x4c($sp) -/* f00f13c: 24040001 */ addiu $a0,$zero,0x1 -/* f00f140: 14820003 */ bne $a0,$v0,.L0f00f150 -/* f00f144: 0218c821 */ addu $t9,$s0,$t8 -/* f00f148: 10000002 */ b .L0f00f154 -/* f00f14c: 24030028 */ addiu $v1,$zero,0x28 -.L0f00f150: -/* f00f150: 2403003c */ addiu $v1,$zero,0x3c -.L0f00f154: -/* f00f154: 8fbf001c */ lw $ra,0x1c($sp) -/* f00f158: 03235021 */ addu $t2,$t9,$v1 -/* f00f15c: 254b0028 */ addiu $t3,$t2,0x28 -/* f00f160: 3c01800a */ lui $at,%hi(g_Vars+0x334) -/* f00f164: 8fb00018 */ lw $s0,0x18($sp) -/* f00f168: ac2ba2f4 */ sw $t3,%lo(g_Vars+0x334)($at) -/* f00f16c: 03e00008 */ jr $ra -/* f00f170: 27bd0060 */ addiu $sp,$sp,0x60 -); +void setupLoadFiles(s32 stagenum) +{ + s32 i; + s32 j; + struct ailist tmp; + s32 numchrs = 0; + s32 total = 0; + s32 extra; + struct stagesetup *setup; + u16 filenum; + bool modified; + + var80069960 = 0; + var80069964 = 0xffffffff; + + g_DoorScale = 1; + + for (i = 0; i < ARRAYCOUNT(g_ModelStates); i++) { + g_ModelStates[i].filedata = NULL; + } + + if (stagenum < STAGE_TITLE) { + if (g_Vars.normmplayerisrunning) { + filenum = g_Stages[g_StageIndex].mpsetupfileid; + } else { + filenum = g_Stages[g_StageIndex].setupfileid; + } + + g_LoadState = LOADSTATE_SETUP; + + g_GeCreditsData = (u8 *)func0f1670fc(filenum, 0x22); + setup = (struct stagesetup *)g_GeCreditsData; + langSetBankSimple(langGetLangBankIndexFromStagenum(stagenum)); + + g_StageSetup.intro = (s32 *)((u32)setup + (u32)setup->intro); + g_StageSetup.props = (u32 *)((u32)setup + (u32)setup->props); + g_StageSetup.paths = (struct path *)((u32)setup + (u32)setup->paths); + g_StageSetup.ailists = (struct ailist *)((u32)setup + (u32)setup->ailists); + + g_LoadState = LOADSTATE_PADS; + + g_StageSetup.padfiledata = func0f1670fc(g_Stages[g_StageIndex].padsfileid, 0x22); + + g_StageSetup.waypoints = NULL; + g_StageSetup.waygroups = NULL; + g_StageSetup.cover = NULL; + + // Convert ailist pointers from file-local to proper pointers + if (g_StageSetup.ailists) { + for (i = 0; g_StageSetup.ailists[i].list != NULL; i++) { + g_StageSetup.ailists[i].list = (u8 *)((u32)setup + (u32)g_StageSetup.ailists[i].list); + } + } + + // Sort the global AI lists by ID asc + do { + modified = false; + + for (i = 0; g_GlobalAilists[i + 1].list != NULL; i++) { + if (g_GlobalAilists[i + 1].id < g_GlobalAilists[i].id) { + // Swap them + tmp = g_GlobalAilists[i]; + g_GlobalAilists[i] = g_GlobalAilists[i + 1]; + g_GlobalAilists[i + 1] = tmp; + + modified = true; + } + } + } while (modified); + + // Sort the stage AI lists by ID asc + do { + modified = false; + + for (i = 0; g_StageSetup.ailists[i + 1].list != NULL; i++) { + if (g_StageSetup.ailists[i + 1].id < g_StageSetup.ailists[i].id) { + // Swap them + tmp = g_StageSetup.ailists[i]; + g_StageSetup.ailists[i] = g_StageSetup.ailists[i + 1]; + g_StageSetup.ailists[i + 1] = tmp; + + modified = true; + } + } + } while (modified); + + // Count the AI lists + for (g_NumGlobalAilists = 0; g_GlobalAilists[g_NumGlobalAilists].list != NULL; g_NumGlobalAilists++); + for (g_NumLvAilists = 0; g_StageSetup.ailists[g_NumLvAilists].list != NULL; g_NumLvAilists++); + + // Convert path pad pointers from file-local to proper pointers + // and calculate the path lengths + if (g_StageSetup.paths) { + for (i = 0; g_StageSetup.paths[i].pads != NULL; i++) { + g_StageSetup.paths[i].pads = (s32 *)((u32)g_StageSetup.paths[i].pads + (u32)setup); + + for (j = 0; g_StageSetup.paths[i].pads[j] >= 0; j++); + + g_StageSetup.paths[i].len = j; + } + } + + numchrs += setupCountCommandType(OBJTYPE_CHR); + + if (!g_Vars.normmplayerisrunning && g_MissionConfig.iscoop && g_Vars.numaibuddies > 0) { + numchrs += g_Vars.numaibuddies; + total += g_Vars.numaibuddies; + } + + total += setupCountCommandType(OBJTYPE_WEAPON); + total += setupCountCommandType(OBJTYPE_KEY); + total += setupCountCommandType(OBJTYPE_HAT); + total += setupCountCommandType(OBJTYPE_DOOR); + total += setupCountCommandType(OBJTYPE_CAMERA); + total += setupCountCommandType(OBJTYPE_AUTOGUN); + total += setupCountCommandType(OBJTYPE_HANGINGMONITORS); + total += setupCountCommandType(OBJTYPE_SINGLEMONITOR); + total += setupCountCommandType(OBJTYPE_MULTIMONITOR); + total += setupCountCommandType(OBJTYPE_SHIELD); + total += setupCountCommandType(OBJTYPE_BASIC); + total += setupCountCommandType(OBJTYPE_DEBRIS); + total += setupCountCommandType(OBJTYPE_GLASS); + total += setupCountCommandType(OBJTYPE_TINTEDGLASS); + total += setupCountCommandType(OBJTYPE_SAFE); + total += setupCountCommandType(OBJTYPE_29); + total += setupCountCommandType(OBJTYPE_24); + total += setupCountCommandType(OBJTYPE_ALARM); + total += setupCountCommandType(OBJTYPE_AMMOCRATE); + total += setupCountCommandType(OBJTYPE_MULTIAMMOCRATE); + total += setupCountCommandType(OBJTYPE_TRUCK); + total += setupCountCommandType(OBJTYPE_TANK); + total += setupCountCommandType(OBJTYPE_LIFT); + total += setupCountCommandType(OBJTYPE_HOVERBIKE); + total += setupCountCommandType(OBJTYPE_HOVERPROP); + total += setupCountCommandType(OBJTYPE_FAN); + total += setupCountCommandType(OBJTYPE_HOVERCAR); + total += setupCountCommandType(OBJTYPE_CHOPPER); + total += setupCountCommandType(OBJTYPE_HELI); + total += setupCountCommandType(OBJTYPE_ESCASTEP); + + if (g_Vars.normmplayerisrunning) { + total += scenarioCallback08(); + } + + func0f011130(total, numchrs); + } else { + // cover isn't set to NULL here... I guess it's not important + g_StageSetup.waypoints = NULL; + g_StageSetup.waygroups = NULL; + g_StageSetup.intro = 0; + g_StageSetup.props = 0; + g_StageSetup.paths = NULL; + g_StageSetup.ailists = NULL; + g_StageSetup.padfiledata = NULL; + + func0f011130(0, 0); + } + + if (IS4MB()) { + extra = 40; + } else { + extra = 60; + } + + if (IS4MB()); + + g_Vars.maxprops = total + numchrs + extra + 40; +} void setupParseObjects(s32 stagenum) { @@ -2580,7 +2331,7 @@ void setupParseObjects(s32 stagenum) case OBJTYPE_LIFT: if (withobjs && (obj->flags2 & diffflag) == 0) { struct liftobj *lift = (struct liftobj *)obj; - struct propdefinition *propdef; + struct modelstate *modelstate; s32 modelnum = obj->modelnum; struct prop *prop; s32 i; @@ -2600,22 +2351,22 @@ void setupParseObjects(s32 stagenum) obj->numtiles = 1; propLoad(modelnum); - propdef = &g_Props[modelnum]; + modelstate = &g_ModelStates[modelnum]; - if (propdef->filedata) { - if (modelGetPartNodeData(propdef->filedata, 1)) { + if (modelstate->filedata) { + if (modelGetPartNodeData(modelstate->filedata, 1)) { obj->numtiles++; } - if (modelGetPartNodeData(propdef->filedata, 2)) { + if (modelGetPartNodeData(modelstate->filedata, 2)) { obj->numtiles++; } - if (modelGetPartNodeData(propdef->filedata, 3)) { + if (modelGetPartNodeData(modelstate->filedata, 3)) { obj->numtiles++; } - if (modelGetPartNodeData(propdef->filedata, 4)) { + if (modelGetPartNodeData(modelstate->filedata, 4)) { obj->numtiles++; } - if (modelGetPartNodeData(propdef->filedata, 6)) { + if (modelGetPartNodeData(modelstate->filedata, 6)) { obj->numtiles++; } } diff --git a/src/game/game_013cf0.c b/src/game/game_013cf0.c index c60089d88..6d4b2794b 100644 --- a/src/game/game_013cf0.c +++ b/src/game/game_013cf0.c @@ -21,7 +21,7 @@ void stageLoadTiles(void) index = 0; } - var8005d9a0 = 2; + g_LoadState = LOADSTATE_TILES; g_TileFileData.u8 = func0f1670fc(g_Stages[index].tilefileid, 0x22); g_TileNumRooms = *g_TileFileData.u32; g_TileRooms = g_TileFileData.u32 + 1; diff --git a/src/game/game_091e10.c b/src/game/game_091e10.c index 57fc402aa..3b99fe3e5 100644 --- a/src/game/game_091e10.c +++ b/src/game/game_091e10.c @@ -191,9 +191,9 @@ glabel setupGetCommandOffset bool propLoad(s32 propnum) { - if (g_Props[propnum].filedata == NULL) { - g_Props[propnum].filedata = fileLoad(g_Props[propnum].fileid); - func00022d24(g_Props[propnum].filedata); + if (g_ModelStates[propnum].filedata == NULL) { + g_ModelStates[propnum].filedata = fileLoad(g_ModelStates[propnum].fileid); + func00022d24(g_ModelStates[propnum].filedata); return true; } diff --git a/src/game/game_097ba0.c b/src/game/game_097ba0.c index fd6350fb4..a9b9e9c4e 100644 --- a/src/game/game_097ba0.c +++ b/src/game/game_097ba0.c @@ -8230,8 +8230,8 @@ glabel func0f09e144 /* f09e1cc: 240b0007 */ addiu $t3,$zero,0x7 /* f09e1d0: 02003825 */ or $a3,$s0,$zero .L0f09e1d4: -/* f09e1d4: 3c018006 */ lui $at,%hi(var8005d9a0) -/* f09e1d8: a02bd9a0 */ sb $t3,%lo(var8005d9a0)($at) +/* f09e1d4: 3c018006 */ lui $at,%hi(g_LoadState) +/* f09e1d8: a02bd9a0 */ sb $t3,%lo(g_LoadState)($at) /* f09e1dc: 964415b2 */ lhu $a0,0x15b2($s2) /* f09e1e0: 24050011 */ addiu $a1,$zero,0x11 /* f09e1e4: 0fc59c80 */ jal func0f167200 diff --git a/src/game/game_0b69d0.c b/src/game/game_0b69d0.c index bcbcc97a3..85b6f9b59 100644 --- a/src/game/game_0b69d0.c +++ b/src/game/game_0b69d0.c @@ -1760,10 +1760,10 @@ glabel var7f1ad5b4 /* f0b8e84: 8fb90070 */ lw $t9,0x70($sp) /* f0b8e88: 0720000b */ bltz $t9,.L0f0b8eb8 /* f0b8e8c: 001948c0 */ sll $t1,$t9,0x3 -/* f0b8e90: 3c048008 */ lui $a0,%hi(g_Props+0x4) +/* f0b8e90: 3c048008 */ lui $a0,%hi(g_ModelStates+0x4) /* f0b8e94: 00892021 */ addu $a0,$a0,$t1 /* f0b8e98: 0fc59c15 */ jal fileGetInflatedLength -/* f0b8e9c: 9484b070 */ lhu $a0,%lo(g_Props+0x4)($a0) +/* f0b8e9c: 9484b070 */ lhu $a0,%lo(g_ModelStates+0x4)($a0) /* f0b8ea0: 8fb800e4 */ lw $t8,0xe4($sp) /* f0b8ea4: 244f003f */ addiu $t7,$v0,0x3f /* f0b8ea8: 35ea003f */ ori $t2,$t7,0x3f @@ -2132,8 +2132,8 @@ glabel var7f1ad5b4 /* f0b9410: 05400023 */ bltz $t2,.L0f0b94a0 /* f0b9414: 00000000 */ nop /* f0b9418: 8e0c0314 */ lw $t4,0x314($s0) -/* f0b941c: 3c0b8008 */ lui $t3,%hi(g_Props) -/* f0b9420: 256bb06c */ addiu $t3,$t3,%lo(g_Props) +/* f0b941c: 3c0b8008 */ lui $t3,%hi(g_ModelStates) +/* f0b9420: 256bb06c */ addiu $t3,$t3,%lo(g_ModelStates) /* f0b9424: 15800013 */ bnez $t4,.L0f0b9474 /* f0b9428: 000a68c0 */ sll $t5,$t2,0x3 /* f0b942c: 8fb900f0 */ lw $t9,0xf0($sp) diff --git a/src/game/game_1a7560.c b/src/game/game_1a7560.c index a464d2f95..5703dd5f5 100644 --- a/src/game/game_1a7560.c +++ b/src/game/game_1a7560.c @@ -193,7 +193,7 @@ void *func0f1a7794(u16 fileid, u8 *arg1, s32 arg2, s32 arg3) { void *ptr; - var8005d9a0 = 6; + g_LoadState = LOADSTATE_6; if (arg1) { ptr = func0f167200(fileid, 0x11, arg1, arg2); diff --git a/src/game/propobj.c b/src/game/propobj.c index 361e9df0a..7d6b2baa5 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -4467,7 +4467,7 @@ glabel var7f1aa1fc /* f069dcc: 1549fff8 */ bne $t2,$t1,.L0f069db0 /* f069dd0: ad61fffc */ sw $at,-0x4($t3) /* f069dd4: 8d410000 */ lw $at,0x0($t2) -/* f069dd8: 3c058008 */ lui $a1,%hi(g_Props) +/* f069dd8: 3c058008 */ lui $a1,%hi(g_ModelStates) /* f069ddc: 02002025 */ or $a0,$s0,$zero /* f069de0: ad610000 */ sw $at,0x0($t3) /* f069de4: 8d490004 */ lw $t1,0x4($t2) @@ -4479,7 +4479,7 @@ glabel var7f1aa1fc /* f069dfc: 000fc0c0 */ sll $t8,$t7,0x3 /* f069e00: 00b82821 */ addu $a1,$a1,$t8 /* f069e04: 0fc1a94b */ jal func0f06a52c -/* f069e08: 8ca5b06c */ lw $a1,%lo(g_Props)($a1) +/* f069e08: 8ca5b06c */ lw $a1,%lo(g_ModelStates)($a1) /* f069e0c: 104000d3 */ beqz $v0,.L0f06a15c /* f069e10: 8fae00a8 */ lw $t6,0xa8($sp) /* f069e14: 8e040014 */ lw $a0,0x14($s0) @@ -4845,14 +4845,14 @@ glabel func0f06a1ec /* f06a33c: a60a0058 */ sh $t2,0x58($s0) /* f06a340: ad700004 */ sw $s0,0x4($t3) /* f06a344: 8e0c0018 */ lw $t4,0x18($s0) -/* f06a348: 3c0f8008 */ lui $t7,%hi(g_Props+0x6) +/* f06a348: 3c0f8008 */ lui $t7,%hi(g_ModelStates+0x6) /* f06a34c: 3c014f80 */ lui $at,0x4f80 /* f06a350: a1800001 */ sb $zero,0x1($t4) /* f06a354: 860d0004 */ lh $t5,0x4($s0) /* f06a358: 8e040018 */ lw $a0,0x18($s0) /* f06a35c: 000d70c0 */ sll $t6,$t5,0x3 /* f06a360: 01ee7821 */ addu $t7,$t7,$t6 -/* f06a364: 95efb072 */ lhu $t7,%lo(g_Props+0x6)($t7) +/* f06a364: 95efb072 */ lhu $t7,%lo(g_ModelStates+0x6)($t7) /* f06a368: 448f2000 */ mtc1 $t7,$f4 /* f06a36c: 05e10004 */ bgez $t7,.L0f06a380 /* f06a370: 468021a0 */ cvt.s.w $f6,$f4 @@ -4986,7 +4986,7 @@ struct prop *func0f06a52c(struct singlemonitorobj *monitor, struct modelfiledata struct prop *func0f06a550(struct singlemonitorobj *monitor) { - return func0f06a52c(monitor, g_Props[monitor->base.modelnum].filedata); + return func0f06a52c(monitor, g_ModelStates[monitor->base.modelnum].filedata); } GLOBAL_ASM( @@ -35618,7 +35618,7 @@ glabel var7f1aab30 /* f085714: ad41fffc */ sw $at,-0x4($t2) /* f085718: 8f010000 */ lw $at,0x0($t8) /* f08571c: 000260c0 */ sll $t4,$v0,0x3 -/* f085720: 3c058008 */ lui $a1,%hi(g_Props) +/* f085720: 3c058008 */ lui $a1,%hi(g_ModelStates) /* f085724: ad410000 */ sw $at,0x0($t2) /* f085728: 8f090004 */ lw $t1,0x4($t8) /* f08572c: 00ac2821 */ addu $a1,$a1,$t4 @@ -35628,7 +35628,7 @@ glabel var7f1aab30 /* f08573c: acf9005c */ sw $t9,0x5c($a3) /* f085740: afa700a0 */ sw $a3,0xa0($sp) /* f085744: 0fc1a94b */ jal func0f06a52c -/* f085748: 8ca5b06c */ lw $a1,%lo(g_Props)($a1) +/* f085748: 8ca5b06c */ lw $a1,%lo(g_ModelStates)($a1) /* f08574c: 1040007f */ beqz $v0,.L0f08594c /* f085750: 8fa700a0 */ lw $a3,0xa0($sp) /* f085754: 8ce40014 */ lw $a0,0x14($a3) @@ -40163,7 +40163,7 @@ void func0f089d64(struct hatobj *hat, struct chrdata *chr) propLoad(modelnum); - func0f089c70(hat, chr, g_Props[modelnum].filedata, 0, 0); + func0f089c70(hat, chr, g_ModelStates[modelnum].filedata, 0, 0); } void hatAssignToChr(struct hatobj *hat, struct chrdata *chr) @@ -40184,10 +40184,10 @@ glabel chrTryEquipHat /* f089df8: 0fc2486d */ jal propLoad /* f089dfc: 00a02025 */ or $a0,$a1,$zero /* f089e00: 8fae00a4 */ lw $t6,0xa4($sp) -/* f089e04: 3c188008 */ lui $t8,%hi(g_Props) +/* f089e04: 3c188008 */ lui $t8,%hi(g_ModelStates) /* f089e08: 000e78c0 */ sll $t7,$t6,0x3 /* f089e0c: 030fc021 */ addu $t8,$t8,$t7 -/* f089e10: 8f18b06c */ lw $t8,%lo(g_Props)($t8) +/* f089e10: 8f18b06c */ lw $t8,%lo(g_ModelStates)($t8) /* f089e14: 0fc180d6 */ jal propAllocate /* f089e18: afb8009c */ sw $t8,0x9c($sp) /* f089e1c: 00408025 */ or $s0,$v0,$zero @@ -41623,7 +41623,7 @@ void func0f08b208(struct weaponobj *weapon, struct chrdata *chr) s32 modelnum = weapon->base.modelnum; propLoad(modelnum); - func0f08b108(weapon, chr, g_Props[modelnum].filedata, 0, 0); + func0f08b108(weapon, chr, g_ModelStates[modelnum].filedata, 0, 0); } void func0f08b25c(struct weaponobj *weapon, struct chrdata *chr) @@ -41673,7 +41673,7 @@ glabel var7f1aae98 /* f08b2e0: 8fa400a8 */ lw $a0,0xa8($sp) /* f08b2e4: 8faa0094 */ lw $t2,0x94($sp) /* f08b2e8: 8fb900a8 */ lw $t9,0xa8($sp) -/* f08b2ec: 3c098008 */ lui $t1,%hi(g_Props) +/* f08b2ec: 3c098008 */ lui $t1,%hi(g_ModelStates) /* f08b2f0: 000a5880 */ sll $t3,$t2,0x2 /* f08b2f4: 016a5823 */ subu $t3,$t3,$t2 /* f08b2f8: 000b5880 */ sll $t3,$t3,0x2 @@ -41681,7 +41681,7 @@ glabel var7f1aae98 /* f08b300: 01284821 */ addu $t1,$t1,$t0 /* f08b304: 3c0c8007 */ lui $t4,%hi(g_ThrownLaptops) /* f08b308: 016a5823 */ subu $t3,$t3,$t2 -/* f08b30c: 8d29b06c */ lw $t1,%lo(g_Props)($t1) +/* f08b30c: 8d29b06c */ lw $t1,%lo(g_ModelStates)($t1) /* f08b310: 8d8c9968 */ lw $t4,%lo(g_ThrownLaptops)($t4) /* f08b314: 000b5880 */ sll $t3,$t3,0x2 /* f08b318: 016a5823 */ subu $t3,$t3,$t2 @@ -41992,10 +41992,10 @@ glabel var7f1aaf24 /* f08b670: 0fc2486d */ jal propLoad /* f08b674: afa600a8 */ sw $a2,0xa8($sp) /* f08b678: 8fae00a0 */ lw $t6,0xa0($sp) -/* f08b67c: 3c188008 */ lui $t8,%hi(g_Props) +/* f08b67c: 3c188008 */ lui $t8,%hi(g_ModelStates) /* f08b680: 000e78c0 */ sll $t7,$t6,0x3 /* f08b684: 030fc021 */ addu $t8,$t8,$t7 -/* f08b688: 8f18b06c */ lw $t8,%lo(g_Props)($t8) +/* f08b688: 8f18b06c */ lw $t8,%lo(g_ModelStates)($t8) /* f08b68c: 0fc180d6 */ jal propAllocate /* f08b690: afb8009c */ sw $t8,0x9c($sp) /* f08b694: 00408825 */ or $s1,$v0,$zero @@ -42176,10 +42176,10 @@ glabel func0f08b8e8 /* f08b914: 0fc2486d */ jal propLoad /* f08b918: 00a02025 */ or $a0,$a1,$zero /* f08b91c: 8faf00a4 */ lw $t7,0xa4($sp) -/* f08b920: 3c198008 */ lui $t9,%hi(g_Props) +/* f08b920: 3c198008 */ lui $t9,%hi(g_ModelStates) /* f08b924: 000fc0c0 */ sll $t8,$t7,0x3 /* f08b928: 0338c821 */ addu $t9,$t9,$t8 -/* f08b92c: 8f39b06c */ lw $t9,%lo(g_Props)($t9) +/* f08b92c: 8f39b06c */ lw $t9,%lo(g_ModelStates)($t9) /* f08b930: afb900b4 */ sw $t9,0xb4($sp) .L0f08b934: /* f08b934: 0fc180d6 */ jal propAllocate @@ -44238,10 +44238,10 @@ glabel var7f1aaf78 /* f08d5a8: 0c005746 */ jal func00015d18 /* f08d5ac: 27a50038 */ addiu $a1,$sp,0x38 /* f08d5b0: 86090004 */ lh $t1,0x4($s0) -/* f08d5b4: 3c0b8008 */ lui $t3,%hi(g_Props+0x6) +/* f08d5b4: 3c0b8008 */ lui $t3,%hi(g_ModelStates+0x6) /* f08d5b8: 000950c0 */ sll $t2,$t1,0x3 /* f08d5bc: 016a5821 */ addu $t3,$t3,$t2 -/* f08d5c0: 956bb072 */ lhu $t3,%lo(g_Props+0x6)($t3) +/* f08d5c0: 956bb072 */ lhu $t3,%lo(g_ModelStates+0x6)($t3) /* f08d5c4: 448b2000 */ mtc1 $t3,$f4 /* f08d5c8: 05610005 */ bgez $t3,.L0f08d5e0 /* f08d5cc: 468021a0 */ cvt.s.w $f6,$f4 diff --git a/src/game/room.c b/src/game/room.c index 720267e76..69c8eb464 100644 --- a/src/game/room.c +++ b/src/game/room.c @@ -3925,11 +3925,11 @@ glabel func0f15b534 /* f15b63c: 24e6001e */ addiu $a2,$a3,0x1e /* f15b640: ac620000 */ sw $v0,0x0($v1) /* f15b644: 3964000f */ xori $a0,$t3,0xf -/* f15b648: 3c018006 */ lui $at,%hi(var8005d9a0) +/* f15b648: 3c018006 */ lui $at,%hi(g_LoadState) /* f15b64c: 240d0001 */ addiu $t5,$zero,0x1 /* f15b650: 34ce000f */ ori $t6,$a2,0xf /* f15b654: 00808025 */ or $s0,$a0,$zero -/* f15b658: a02dd9a0 */ sb $t5,%lo(var8005d9a0)($at) +/* f15b658: a02dd9a0 */ sb $t5,%lo(g_LoadState)($at) /* f15b65c: 39c6000f */ xori $a2,$t6,0xf /* f15b660: 0fc56c71 */ jal func0f15b1c4 /* f15b664: 00002825 */ or $a1,$zero,$zero @@ -4188,11 +4188,11 @@ glabel func0f15b534 /* f15b40c: 24e6001e */ addiu $a2,$a3,0x1e /* f15b410: ac620000 */ sw $v0,0x0($v1) /* f15b414: 3964000f */ xori $a0,$t3,0xf -/* f15b418: 3c018006 */ lui $at,%hi(var8005d9a0) +/* f15b418: 3c018006 */ lui $at,%hi(g_LoadState) /* f15b41c: 240d0001 */ addiu $t5,$zero,0x1 /* f15b420: 34ce000f */ ori $t6,$a2,0xf /* f15b424: 00808025 */ or $s0,$a0,$zero -/* f15b428: a02dd9a0 */ sb $t5,%lo(var8005d9a0)($at) +/* f15b428: a02dd9a0 */ sb $t5,%lo(g_LoadState)($at) /* f15b42c: 39c6000f */ xori $a2,$t6,0xf /* f15b430: 0fc56be5 */ jal 0xf15af94 /* f15b434: 00002825 */ or $a1,$zero,$zero diff --git a/src/game/title.c b/src/game/title.c index 2624804b5..bac8b4347 100644 --- a/src/game/title.c +++ b/src/game/title.c @@ -1003,8 +1003,8 @@ glabel titleInitPdLogo /* f016d68: adc10000 */ sw $at,0x0($t6) /* f016d6c: 8de10008 */ lw $at,0x8($t7) /* f016d70: 8de80004 */ lw $t0,0x4($t7) -/* f016d74: 3c118008 */ lui $s1,%hi(g_Props) -/* f016d78: 2631b06c */ addiu $s1,$s1,%lo(g_Props) +/* f016d74: 3c118008 */ lui $s1,%hi(g_ModelStates) +/* f016d78: 2631b06c */ addiu $s1,$s1,%lo(g_ModelStates) /* f016d7c: 3c060004 */ lui $a2,0x4 /* f016d80: adc10008 */ sw $at,0x8($t6) /* f016d84: adc80004 */ sw $t0,0x4($t6) @@ -1207,59 +1207,59 @@ glabel titleInitPdLogo // // { // 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)); +// g_ModelStates[MODEL_NLOGO].filedata = func0f1a7794(g_ModelStates[MODEL_NLOGO].fileid, nextaddr, 0x47800, 0); +// size = ALIGN64(fileGetSize(g_ModelStates[MODEL_NLOGO].fileid)); // nextaddr += size; // remaining = 0x47800 - size; -// func00022d24(g_Props[MODEL_NLOGO].filedata); +// func00022d24(g_ModelStates[MODEL_NLOGO].filedata); // -// g_TitleModel = func0f0b3280(g_Props[MODEL_NLOGO].filedata); +// g_TitleModel = func0f0b3280(g_ModelStates[MODEL_NLOGO].filedata); // modelSetUnk14(g_TitleModel, 1); // modelSetRootPosition(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)); +// g_ModelStates[MODEL_NLOGO2].filedata = func0f1a7794(g_ModelStates[MODEL_NLOGO2].fileid, nextaddr, remaining, 0); +// size = ALIGN64(fileGetSize(g_ModelStates[MODEL_NLOGO2].fileid)); // nextaddr += size; // remaining -= size; -// func00022d24(g_Props[MODEL_NLOGO2].filedata); +// func00022d24(g_ModelStates[MODEL_NLOGO2].filedata); // -// g_TitleModel2 = func0f0b3280(g_Props[MODEL_NLOGO2].filedata); +// g_TitleModel2 = func0f0b3280(g_ModelStates[MODEL_NLOGO2].filedata); // modelSetUnk14(g_TitleModel2, 1); // modelSetRootPosition(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)); +// g_ModelStates[MODEL_PDTWO].filedata = func0f1a7794(g_ModelStates[MODEL_PDTWO].fileid, nextaddr, remaining, 0); +// size = ALIGN64(fileGetSize(g_ModelStates[MODEL_PDTWO].fileid)); // nextaddr += size; // remaining -= size; -// func00022d24(g_Props[MODEL_PDTWO].filedata); +// func00022d24(g_ModelStates[MODEL_PDTWO].filedata); // -// var80062508 = func0f0b30ac(g_Props[MODEL_PDTWO].filedata); +// var80062508 = func0f0b30ac(g_ModelStates[MODEL_PDTWO].filedata); // modelSetUnk14(var80062508, 1); // modelSetRootPosition(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)); +// g_ModelStates[MODEL_PDTHREE].filedata = func0f1a7794(g_ModelStates[MODEL_PDTHREE].fileid, nextaddr, remaining, 0); +// size = ALIGN64(fileGetSize(g_ModelStates[MODEL_PDTHREE].fileid)); // nextaddr += size; // remaining -= size; -// func00022d24(g_Props[MODEL_PDTHREE].filedata); +// func00022d24(g_ModelStates[MODEL_PDTHREE].filedata); // -// var8006250c = func0f0b30ac(g_Props[MODEL_PDTHREE].filedata); +// var8006250c = func0f0b30ac(g_ModelStates[MODEL_PDTHREE].filedata); // modelSetUnk14(var8006250c, 1); // modelSetRootPosition(var8006250c, &coord); // } // // { // // fb0 -// struct modelthing *modelthing = modelGetPartNodeData(g_Props[MODEL_PDTWO].filedata, 2); +// struct modelthing *modelthing = modelGetPartNodeData(g_ModelStates[MODEL_PDTWO].filedata, 2); // u32 size2; // // size = ALIGN8(modelthing->unk10 * 0xc); @@ -3516,10 +3516,10 @@ void titleInitNintendoLogo(void) { struct coord coord = {0, 0, 0}; - g_Props[MODEL_NINTENDOLOGO].filedata = func0f1a7794(g_Props[MODEL_NINTENDOLOGO].fileid, nextaddr, 0x47800, 0); + g_ModelStates[MODEL_NINTENDOLOGO].filedata = func0f1a7794(g_ModelStates[MODEL_NINTENDOLOGO].fileid, nextaddr, 0x47800, 0); - func00022d24(g_Props[MODEL_NINTENDOLOGO].filedata); - g_TitleModel = func0f0b30ac(g_Props[MODEL_NINTENDOLOGO].filedata); + func00022d24(g_ModelStates[MODEL_NINTENDOLOGO].filedata); + g_TitleModel = func0f0b30ac(g_ModelStates[MODEL_NINTENDOLOGO].filedata); modelSetUnk14(g_TitleModel, 1); modelSetRootPosition(g_TitleModel, &coord); var800624f4 = 1; @@ -3895,10 +3895,10 @@ void titleInitRareLogo(void) { struct coord coord = {0, 0, 0}; - g_Props[MODEL_RARELOGO].filedata = func0f1a7794(g_Props[MODEL_RARELOGO].fileid, nextaddr, 0x47800, 0); + g_ModelStates[MODEL_RARELOGO].filedata = func0f1a7794(g_ModelStates[MODEL_RARELOGO].fileid, nextaddr, 0x47800, 0); - func00022d24(g_Props[MODEL_RARELOGO].filedata); - g_TitleModel = func0f0b30ac(g_Props[MODEL_RARELOGO].filedata); + func00022d24(g_ModelStates[MODEL_RARELOGO].filedata); + g_TitleModel = func0f0b30ac(g_ModelStates[MODEL_RARELOGO].filedata); modelSetUnk14(g_TitleModel, 1); modelSetRootPosition(g_TitleModel, &coord); diff --git a/src/include/constants.h b/src/include/constants.h index 99daeb5bf..754e60d42 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -1135,6 +1135,11 @@ #define LIGHTOP_TURNON 6 #define LIGHTOP_TURNOFF 7 +#define LOADSTATE_TILES 2 +#define LOADSTATE_SETUP 4 +#define LOADSTATE_PADS 5 +#define LOADSTATE_6 6 + // These actions are assigned to chr->myaction #define MA_NONE 0 #define MA_NORMAL 1 diff --git a/src/include/game/data/data_000000.h b/src/include/game/data/data_000000.h index 4571695c4..28c477245 100644 --- a/src/include/game/data/data_000000.h +++ b/src/include/game/data/data_000000.h @@ -92,7 +92,7 @@ extern u32 var8005d5b8; extern u32 var8005d5bc; extern u32 var8005d880; extern u32 var8005d994; -extern u8 var8005d9a0; +extern u8 g_LoadState; extern s32 var8005d9c8; extern u32 var8005d9cc; extern s32 var8005d9d0; diff --git a/src/include/game/data/data_020df0.h b/src/include/game/data/data_020df0.h index 78a824d54..3b13d860f 100644 --- a/src/include/game/data/data_020df0.h +++ b/src/include/game/data/data_020df0.h @@ -55,7 +55,7 @@ extern struct stagethinglist stagethinglist_20fb8; extern struct stagethinglist stagethinglist_20fd8; extern struct stagethinglist stagethinglist_20fe8; extern struct stagethinglist stagethinglist_20ff8; -extern struct propdefinition g_Props[]; +extern struct modelstate g_ModelStates[441]; extern u8 propexplosiontypes[]; extern struct stagethinglist stagethinglist_2208c; extern struct stagethinglist stagethinglist_220d0; diff --git a/src/include/game/file.h b/src/include/game/file.h index 37a20a348..19b72fe2b 100644 --- a/src/include/game/file.h +++ b/src/include/game/file.h @@ -11,7 +11,7 @@ void func0f166eb4(void *dst, u32 scratchlen, u32 *romaddrptr, struct fileinfo *i void func0f166f74(void); void func0f166ff0(u16 filenum, void *memaddr, s32 offset, u32 len); u32 fileGetInflatedLength(u32 filenum); -void *func0f1670fc(u32 filenum, u32 arg1); +void *func0f1670fc(s32 filenum, u32 arg1); void *func0f167200(s32 filenum, s32 arg1, u8 *ptr, u32 size); u32 fileGetSize(s32 filenum); u32 fileGetUnk04(s32 filenum); diff --git a/src/include/game/game_00c490.h b/src/include/game/game_00c490.h index d3cd19ee2..f2b26acfa 100644 --- a/src/include/game/game_00c490.h +++ b/src/include/game/game_00c490.h @@ -27,7 +27,7 @@ s32 func0f00e2b0(s32 padnum); void setupDoor(struct doorobj *door, s32 cmdindex); void setupHov(struct defaultobj *obj, struct hov *hov); void func0f00e980(s32 stagenum, s32 arg0, s32 arg1, struct briefing *briefing); -void func0f00eb64(s32 stagenum); +void setupLoadFiles(s32 stagenum); void setupParseObjects(s32 stagenum); #endif diff --git a/src/include/game/game_011110.h b/src/include/game/game_011110.h index 1b820f22a..617ab0b68 100644 --- a/src/include/game/game_011110.h +++ b/src/include/game/game_011110.h @@ -5,7 +5,7 @@ void func0f011110(void); void func0f011124(bool value); -u32 func0f011130(void); +void func0f011130(s32 arg0, s32 numchrs); bool weaponLoadProjectileModels(s32 weaponnum); void currentPlayerInitEyespy(void); void currentPlayerInit(void); diff --git a/src/include/types.h b/src/include/types.h index 131129f88..4de7af6da 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -5011,7 +5011,7 @@ struct chrnumaction { u8 myaction; }; -struct propdefinition { +struct modelstate { struct modelfiledata *filedata; u16 fileid; u16 scale; diff --git a/src/lib/lib_0d0a0.c b/src/lib/lib_0d0a0.c index e631cce56..57ea72e1d 100644 --- a/src/lib/lib_0d0a0.c +++ b/src/lib/lib_0d0a0.c @@ -11,7 +11,7 @@ #include "lib/lib_0d0a0.h" #include "types.h" -u8 var8005d9a0 = 0; +u8 g_LoadState = 0; u32 var8005d9a4 = 0x00000000; u32 var8005d9a8 = 0x00000000; u32 var8005d9ac = 0x00000000; @@ -162,8 +162,8 @@ u32 xorDeadbabe(u32 value) GLOBAL_ASM( glabel func0000d29c -/* d29c: 3c0e8006 */ lui $t6,%hi(var8005d9a0) -/* d2a0: 91ced9a0 */ lbu $t6,%lo(var8005d9a0)($t6) +/* d29c: 3c0e8006 */ lui $t6,%hi(g_LoadState) +/* d2a0: 91ced9a0 */ lbu $t6,%lo(g_LoadState)($t6) /* d2a4: 27bdffd0 */ addiu $sp,$sp,-48 /* d2a8: afbf0014 */ sw $ra,0x14($sp) /* d2ac: 11c00024 */ beqz $t6,.L0000d340 @@ -203,8 +203,8 @@ glabel func0000d29c /* d32c: 03284826 */ xor $t1,$t9,$t0 /* d330: 1482fffa */ bne $a0,$v0,.L0000d31c /* d334: ac69fffc */ sw $t1,-0x4($v1) -/* d338: 3c018006 */ lui $at,%hi(var8005d9a0) -/* d33c: a020d9a0 */ sb $zero,%lo(var8005d9a0)($at) +/* d338: 3c018006 */ lui $at,%hi(g_LoadState) +/* d33c: a020d9a0 */ sb $zero,%lo(g_LoadState)($at) .L0000d340: /* d340: 8fbf0014 */ lw $ra,0x14($sp) /* d344: 27bd0030 */ addiu $sp,$sp,0x30