mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-07-31 15:57:20 -04:00
Decompile modelCalculateRwDataIndexes
This commit is contained in:
@@ -224,7 +224,7 @@ glabel var7f1a8a84
|
||||
/* f02cf2c: ac82000c */ sw $v0,0xc($a0)
|
||||
/* f02cf30: afa30050 */ sw $v1,0x50($sp)
|
||||
.L0f02cf34:
|
||||
/* f02cf34: 0c008b49 */ jal func00022d24
|
||||
/* f02cf34: 0c008b49 */ jal modelCalculateRwDataLen
|
||||
/* f02cf38: 8fa40050 */ lw $a0,0x50($sp)
|
||||
/* f02cf3c: 8fa9001c */ lw $t1,0x1c($sp)
|
||||
/* f02cf40: 8fac0050 */ lw $t4,0x50($sp)
|
||||
@@ -314,7 +314,7 @@ glabel var7f1a8a84
|
||||
/* f02d088: 00402025 */ or $a0,$v0,$zero
|
||||
/* f02d08c: afa40054 */ sw $a0,0x54($sp)
|
||||
.L0f02d090:
|
||||
/* f02d090: 0c008b49 */ jal func00022d24
|
||||
/* f02d090: 0c008b49 */ jal modelCalculateRwDataLen
|
||||
/* f02d094: 8fa40054 */ lw $a0,0x54($sp)
|
||||
/* f02d098: 8fab0050 */ lw $t3,0x50($sp)
|
||||
/* f02d09c: 8fac0054 */ lw $t4,0x54($sp)
|
||||
|
||||
@@ -202,7 +202,7 @@ bool propLoad(s32 propnum)
|
||||
{
|
||||
if (g_ModelStates[propnum].filedata == NULL) {
|
||||
g_ModelStates[propnum].filedata = fileLoad(g_ModelStates[propnum].fileid);
|
||||
func00022d24(g_ModelStates[propnum].filedata);
|
||||
modelCalculateRwDataLen(g_ModelStates[propnum].filedata);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -10134,7 +10134,7 @@ glabel func0f09e144
|
||||
/* f09e404: 964415b2 */ lhu $a0,0x15b2($s2)
|
||||
/* f09e408: 0fc59ca0 */ jal fileGetSize
|
||||
/* f09e40c: 964415b2 */ lhu $a0,0x15b2($s2)
|
||||
/* f09e410: 0c008b49 */ jal func00022d24
|
||||
/* f09e410: 0c008b49 */ jal modelCalculateRwDataLen
|
||||
/* f09e414: 02202025 */ or $a0,$s1,$zero
|
||||
/* f09e418: 0fc5cbd5 */ jal func0f172f54
|
||||
/* f09e41c: 02002025 */ or $a0,$s0,$zero
|
||||
@@ -10377,7 +10377,7 @@ glabel func0f09e144
|
||||
/* f09c310: 968415b2 */ lhu $a0,0x15b2($s4)
|
||||
/* f09c314: 0fc586ed */ jal fileGetSize
|
||||
/* f09c318: 968415b2 */ lhu $a0,0x15b2($s4)
|
||||
/* f09c31c: 0c008f6f */ jal func00022d24
|
||||
/* f09c31c: 0c008f6f */ jal modelCalculateRwDataLen
|
||||
/* f09c320: 02602025 */ or $a0,$s3,$zero
|
||||
/* f09c324: 0fc5b6fb */ jal func0f172f54
|
||||
/* f09c328: 02002025 */ or $a0,$s0,$zero
|
||||
|
||||
@@ -3942,7 +3942,7 @@ glabel var7f1acd6c
|
||||
/* f0ae9d8: 8d210000 */ lw $at,0x0($t1)
|
||||
/* f0ae9dc: 24110001 */ addiu $s1,$zero,0x1
|
||||
/* f0ae9e0: af210000 */ sw $at,0x0($t9)
|
||||
/* f0ae9e4: 0c008b49 */ jal func00022d24
|
||||
/* f0ae9e4: 0c008b49 */ jal modelCalculateRwDataLen
|
||||
/* f0ae9e8: 8fa400f0 */ lw $a0,0xf0($sp)
|
||||
/* f0ae9ec: 27a400c8 */ addiu $a0,$sp,0xc8
|
||||
/* f0ae9f0: 8fa500f0 */ lw $a1,0xf0($sp)
|
||||
|
||||
@@ -1995,12 +1995,12 @@ glabel var7f1ad5b4
|
||||
/* f0b8fd4: 39ab003f */ xori $t3,$t5,0x3f
|
||||
/* f0b8fd8: afab00f0 */ sw $t3,0xf0($sp)
|
||||
.L0f0b8fdc:
|
||||
/* f0b8fdc: 0c008b49 */ jal func00022d24
|
||||
/* f0b8fdc: 0c008b49 */ jal modelCalculateRwDataLen
|
||||
/* f0b8fe0: 8fa400fc */ lw $a0,0xfc($sp)
|
||||
/* f0b8fe4: 8fae00f8 */ lw $t6,0xf8($sp)
|
||||
/* f0b8fe8: 51c00004 */ beqzl $t6,.L0f0b8ffc
|
||||
/* f0b8fec: 8fa4005c */ lw $a0,0x5c($sp)
|
||||
/* f0b8ff0: 0c008b49 */ jal func00022d24
|
||||
/* f0b8ff0: 0c008b49 */ jal modelCalculateRwDataLen
|
||||
/* f0b8ff4: 01c02025 */ or $a0,$t6,$zero
|
||||
/* f0b8ff8: 8fa4005c */ lw $a0,0x5c($sp)
|
||||
.L0f0b8ffc:
|
||||
@@ -2300,7 +2300,7 @@ glabel var7f1ad5b4
|
||||
/* f0b9458: afa200f4 */ sw $v0,0xf4($sp)
|
||||
/* f0b945c: 0fc59ca0 */ jal fileGetSize
|
||||
/* f0b9460: 94640004 */ lhu $a0,0x4($v1)
|
||||
/* f0b9464: 0c008b49 */ jal func00022d24
|
||||
/* f0b9464: 0c008b49 */ jal modelCalculateRwDataLen
|
||||
/* f0b9468: 8fa400f4 */ lw $a0,0xf4($sp)
|
||||
/* f0b946c: 10000004 */ b .L0f0b9480
|
||||
/* f0b9470: 8faf00dc */ lw $t7,0xdc($sp)
|
||||
@@ -2653,12 +2653,12 @@ glabel var7f1ad5b4
|
||||
/* f0b6cec: 39ab003f */ xori $t3,$t5,0x3f
|
||||
/* f0b6cf0: afab00f0 */ sw $t3,0xf0($sp)
|
||||
.NB0f0b6cf4:
|
||||
/* f0b6cf4: 0c008f6f */ jal func00022d24
|
||||
/* f0b6cf4: 0c008f6f */ jal modelCalculateRwDataLen
|
||||
/* f0b6cf8: 8fa400fc */ lw $a0,0xfc($sp)
|
||||
/* f0b6cfc: 8fae00f8 */ lw $t6,0xf8($sp)
|
||||
/* f0b6d00: 51c00004 */ beqzl $t6,.NB0f0b6d14
|
||||
/* f0b6d04: 8fa4005c */ lw $a0,0x5c($sp)
|
||||
/* f0b6d08: 0c008f6f */ jal func00022d24
|
||||
/* f0b6d08: 0c008f6f */ jal modelCalculateRwDataLen
|
||||
/* f0b6d0c: 01c02025 */ or $a0,$t6,$zero
|
||||
/* f0b6d10: 8fa4005c */ lw $a0,0x5c($sp)
|
||||
.NB0f0b6d14:
|
||||
@@ -2942,7 +2942,7 @@ glabel var7f1ad5b4
|
||||
/* f0b7134: afa200f4 */ sw $v0,0xf4($sp)
|
||||
/* f0b7138: 0fc586ed */ jal fileGetSize
|
||||
/* f0b713c: 94640004 */ lhu $a0,0x4($v1)
|
||||
/* f0b7140: 0c008f6f */ jal func00022d24
|
||||
/* f0b7140: 0c008f6f */ jal modelCalculateRwDataLen
|
||||
/* f0b7144: 8fa400f4 */ lw $a0,0xf4($sp)
|
||||
/* f0b7148: 10000004 */ beqz $zero,.NB0f0b715c
|
||||
/* f0b714c: 8fb900dc */ lw $t9,0xdc($sp)
|
||||
|
||||
@@ -5385,7 +5385,7 @@ glabel var7f1b3c40pf
|
||||
/* f0f42a8: 3479003f */ ori $t9,$v1,0x3f
|
||||
/* f0f42ac: 3b29003f */ xori $t1,$t9,0x3f
|
||||
/* f0f42b0: 8e040054 */ lw $a0,0x54($s0)
|
||||
/* f0f42b4: 0c00898a */ jal func00022d24
|
||||
/* f0f42b4: 0c00898a */ jal modelCalculateRwDataLen
|
||||
/* f0f42b8: afa9040c */ sw $t1,0x40c($sp)
|
||||
/* f0f42bc: 8fb80400 */ lw $t8,0x400($sp)
|
||||
/* f0f42c0: 8fa3040c */ lw $v1,0x40c($sp)
|
||||
@@ -5408,7 +5408,7 @@ glabel var7f1b3c40pf
|
||||
/* f0f4300: 8fa50400 */ lw $a1,0x400($sp)
|
||||
/* f0f4304: 0fc0b7b7 */ jal func0f02ddbc
|
||||
/* f0f4308: 8fa60404 */ lw $a2,0x404($sp)
|
||||
/* f0f430c: 0c00898a */ jal func00022d24
|
||||
/* f0f430c: 0c00898a */ jal modelCalculateRwDataLen
|
||||
/* f0f4310: 8e040058 */ lw $a0,0x58($s0)
|
||||
.PF0f0f4314:
|
||||
/* f0f4314: 26040060 */ addiu $a0,$s0,0x60
|
||||
@@ -5461,7 +5461,7 @@ glabel var7f1b3c40pf
|
||||
/* f0f43cc: ae020054 */ sw $v0,0x54($s0)
|
||||
/* f0f43d0: 0fc5a080 */ jal fileGetSize
|
||||
/* f0f43d4: 8e04000c */ lw $a0,0xc($s0)
|
||||
/* f0f43d8: 0c00898a */ jal func00022d24
|
||||
/* f0f43d8: 0c00898a */ jal modelCalculateRwDataLen
|
||||
/* f0f43dc: 8e040054 */ lw $a0,0x54($s0)
|
||||
/* f0f43e0: 26040060 */ addiu $a0,$s0,0x60
|
||||
/* f0f43e4: 8e050054 */ lw $a1,0x54($s0)
|
||||
@@ -6987,7 +6987,7 @@ glabel var7f1b2948
|
||||
/* f0f3b54: 346d003f */ ori $t5,$v1,0x3f
|
||||
/* f0f3b58: 39ab003f */ xori $t3,$t5,0x3f
|
||||
/* f0f3b5c: 8e040054 */ lw $a0,0x54($s0)
|
||||
/* f0f3b60: 0c008b49 */ jal func00022d24
|
||||
/* f0f3b60: 0c008b49 */ jal modelCalculateRwDataLen
|
||||
/* f0f3b64: afab040c */ sw $t3,0x40c($sp)
|
||||
/* f0f3b68: 8fae0400 */ lw $t6,0x400($sp)
|
||||
/* f0f3b6c: 8fa3040c */ lw $v1,0x40c($sp)
|
||||
@@ -7010,7 +7010,7 @@ glabel var7f1b2948
|
||||
/* f0f3bac: 8fa50400 */ lw $a1,0x400($sp)
|
||||
/* f0f3bb0: 0fc0b76f */ jal func0f02ddbc
|
||||
/* f0f3bb4: 8fa60404 */ lw $a2,0x404($sp)
|
||||
/* f0f3bb8: 0c008b49 */ jal func00022d24
|
||||
/* f0f3bb8: 0c008b49 */ jal modelCalculateRwDataLen
|
||||
/* f0f3bbc: 8e040058 */ lw $a0,0x58($s0)
|
||||
.L0f0f3bc0:
|
||||
/* f0f3bc0: 26040060 */ addiu $a0,$s0,0x60
|
||||
@@ -7063,7 +7063,7 @@ glabel var7f1b2948
|
||||
/* f0f3c78: ae020054 */ sw $v0,0x54($s0)
|
||||
/* f0f3c7c: 0fc59ca0 */ jal fileGetSize
|
||||
/* f0f3c80: 8e04000c */ lw $a0,0xc($s0)
|
||||
/* f0f3c84: 0c008b49 */ jal func00022d24
|
||||
/* f0f3c84: 0c008b49 */ jal modelCalculateRwDataLen
|
||||
/* f0f3c88: 8e040054 */ lw $a0,0x54($s0)
|
||||
/* f0f3c8c: 26040060 */ addiu $a0,$s0,0x60
|
||||
/* f0f3c90: 8e050054 */ lw $a1,0x54($s0)
|
||||
@@ -8596,7 +8596,7 @@ glabel var7f1b2948
|
||||
/* f0f0698: 346d003f */ ori $t5,$v1,0x3f
|
||||
/* f0f069c: 39ab003f */ xori $t3,$t5,0x3f
|
||||
/* f0f06a0: 8e240054 */ lw $a0,0x54($s1)
|
||||
/* f0f06a4: 0c008f6f */ jal func00022d24
|
||||
/* f0f06a4: 0c008f6f */ jal modelCalculateRwDataLen
|
||||
/* f0f06a8: afab0434 */ sw $t3,0x434($sp)
|
||||
/* f0f06ac: 8fae0428 */ lw $t6,0x428($sp)
|
||||
/* f0f06b0: 8fa30434 */ lw $v1,0x434($sp)
|
||||
@@ -8619,7 +8619,7 @@ glabel var7f1b2948
|
||||
/* f0f06f0: 8fa50428 */ lw $a1,0x428($sp)
|
||||
/* f0f06f4: 0fc0b5be */ jal func0f02ddbc
|
||||
/* f0f06f8: 8fa6042c */ lw $a2,0x42c($sp)
|
||||
/* f0f06fc: 0c008f6f */ jal func00022d24
|
||||
/* f0f06fc: 0c008f6f */ jal modelCalculateRwDataLen
|
||||
/* f0f0700: 8e240058 */ lw $a0,0x58($s1)
|
||||
.NB0f0f0704:
|
||||
/* f0f0704: 26240060 */ addiu $a0,$s1,0x60
|
||||
@@ -8672,7 +8672,7 @@ glabel var7f1b2948
|
||||
/* f0f07bc: ae220054 */ sw $v0,0x54($s1)
|
||||
/* f0f07c0: 0fc586ed */ jal fileGetSize
|
||||
/* f0f07c4: 8e24000c */ lw $a0,0xc($s1)
|
||||
/* f0f07c8: 0c008f6f */ jal func00022d24
|
||||
/* f0f07c8: 0c008f6f */ jal modelCalculateRwDataLen
|
||||
/* f0f07cc: 8e240054 */ lw $a0,0x54($s1)
|
||||
/* f0f07d0: 26240060 */ addiu $a0,$s1,0x60
|
||||
/* f0f07d4: 8e250054 */ lw $a1,0x54($s1)
|
||||
|
||||
+10
-10
@@ -1519,7 +1519,7 @@ glabel titleInitPdLogo
|
||||
/* f016db8: 356b7800 */ ori $t3,$t3,0x7800
|
||||
/* f016dbc: 020a8021 */ addu $s0,$s0,$t2
|
||||
/* f016dc0: 016a9023 */ subu $s2,$t3,$t2
|
||||
/* f016dc4: 0c008b49 */ jal func00022d24
|
||||
/* f016dc4: 0c008b49 */ jal modelCalculateRwDataLen
|
||||
/* f016dc8: 8e240240 */ lw $a0,0x240($s1)
|
||||
/* f016dcc: 0fc2cca0 */ jal func0f0b3280
|
||||
/* f016dd0: 8e240240 */ lw $a0,0x240($s1)
|
||||
@@ -1555,7 +1555,7 @@ glabel titleInitPdLogo
|
||||
/* f016e48: 39cf003f */ xori $t7,$t6,0x3f
|
||||
/* f016e4c: 020f8021 */ addu $s0,$s0,$t7
|
||||
/* f016e50: 024f9023 */ subu $s2,$s2,$t7
|
||||
/* f016e54: 0c008b49 */ jal func00022d24
|
||||
/* f016e54: 0c008b49 */ jal modelCalculateRwDataLen
|
||||
/* f016e58: 8e240248 */ lw $a0,0x248($s1)
|
||||
/* f016e5c: 0fc2cca0 */ jal func0f0b3280
|
||||
/* f016e60: 8e240248 */ lw $a0,0x248($s1)
|
||||
@@ -1591,7 +1591,7 @@ glabel titleInitPdLogo
|
||||
/* f016ed8: 3b2c003f */ xori $t4,$t9,0x3f
|
||||
/* f016edc: 020c8021 */ addu $s0,$s0,$t4
|
||||
/* f016ee0: 024c9023 */ subu $s2,$s2,$t4
|
||||
/* f016ee4: 0c008b49 */ jal func00022d24
|
||||
/* f016ee4: 0c008b49 */ jal modelCalculateRwDataLen
|
||||
/* f016ee8: 8e240268 */ lw $a0,0x268($s1)
|
||||
/* f016eec: 0fc2cc2b */ jal func0f0b30ac
|
||||
/* f016ef0: 8e240268 */ lw $a0,0x268($s1)
|
||||
@@ -1627,7 +1627,7 @@ glabel titleInitPdLogo
|
||||
/* f016f68: 3948003f */ xori $t0,$t2,0x3f
|
||||
/* f016f6c: 02088021 */ addu $s0,$s0,$t0
|
||||
/* f016f70: 02489023 */ subu $s2,$s2,$t0
|
||||
/* f016f74: 0c008b49 */ jal func00022d24
|
||||
/* f016f74: 0c008b49 */ jal modelCalculateRwDataLen
|
||||
/* f016f78: 8e240270 */ lw $a0,0x270($s1)
|
||||
/* f016f7c: 0fc2cc2b */ jal func0f0b30ac
|
||||
/* f016f80: 8e240270 */ lw $a0,0x270($s1)
|
||||
@@ -1707,7 +1707,7 @@ glabel titleInitPdLogo
|
||||
// size = ALIGN64(fileGetSize(g_ModelStates[MODEL_NLOGO].fileid));
|
||||
// nextaddr += size;
|
||||
// remaining = 0x47800 - size;
|
||||
// func00022d24(g_ModelStates[MODEL_NLOGO].filedata);
|
||||
// modelCalculateRwDataLen(g_ModelStates[MODEL_NLOGO].filedata);
|
||||
//
|
||||
// g_TitleModel = func0f0b3280(g_ModelStates[MODEL_NLOGO].filedata);
|
||||
// modelSetScale(g_TitleModel, 1);
|
||||
@@ -1720,7 +1720,7 @@ glabel titleInitPdLogo
|
||||
// size = ALIGN64(fileGetSize(g_ModelStates[MODEL_NLOGO2].fileid));
|
||||
// nextaddr += size;
|
||||
// remaining -= size;
|
||||
// func00022d24(g_ModelStates[MODEL_NLOGO2].filedata);
|
||||
// modelCalculateRwDataLen(g_ModelStates[MODEL_NLOGO2].filedata);
|
||||
//
|
||||
// g_TitleModel2 = func0f0b3280(g_ModelStates[MODEL_NLOGO2].filedata);
|
||||
// modelSetScale(g_TitleModel2, 1);
|
||||
@@ -1733,7 +1733,7 @@ glabel titleInitPdLogo
|
||||
// size = ALIGN64(fileGetSize(g_ModelStates[MODEL_PDTWO].fileid));
|
||||
// nextaddr += size;
|
||||
// remaining -= size;
|
||||
// func00022d24(g_ModelStates[MODEL_PDTWO].filedata);
|
||||
// modelCalculateRwDataLen(g_ModelStates[MODEL_PDTWO].filedata);
|
||||
//
|
||||
// var80062508 = func0f0b30ac(g_ModelStates[MODEL_PDTWO].filedata);
|
||||
// modelSetScale(var80062508, 1);
|
||||
@@ -1746,7 +1746,7 @@ glabel titleInitPdLogo
|
||||
// size = ALIGN64(fileGetSize(g_ModelStates[MODEL_PDTHREE].fileid));
|
||||
// nextaddr += size;
|
||||
// remaining -= size;
|
||||
// func00022d24(g_ModelStates[MODEL_PDTHREE].filedata);
|
||||
// modelCalculateRwDataLen(g_ModelStates[MODEL_PDTHREE].filedata);
|
||||
//
|
||||
// var8006250c = func0f0b30ac(g_ModelStates[MODEL_PDTHREE].filedata);
|
||||
// modelSetScale(var8006250c, 1);
|
||||
@@ -5348,7 +5348,7 @@ void titleInitNintendoLogo(void)
|
||||
|
||||
g_ModelStates[MODEL_NINTENDOLOGO].filedata = func0f1a7794(g_ModelStates[MODEL_NINTENDOLOGO].fileid, nextaddr, 0x47800, 0);
|
||||
|
||||
func00022d24(g_ModelStates[MODEL_NINTENDOLOGO].filedata);
|
||||
modelCalculateRwDataLen(g_ModelStates[MODEL_NINTENDOLOGO].filedata);
|
||||
g_TitleModel = func0f0b30ac(g_ModelStates[MODEL_NINTENDOLOGO].filedata);
|
||||
modelSetScale(g_TitleModel, 1);
|
||||
modelSetRootPosition(g_TitleModel, &coord);
|
||||
@@ -6029,7 +6029,7 @@ void titleInitRareLogo(void)
|
||||
|
||||
g_ModelStates[MODEL_RARELOGO].filedata = func0f1a7794(g_ModelStates[MODEL_RARELOGO].fileid, nextaddr, 0x47800, 0);
|
||||
|
||||
func00022d24(g_ModelStates[MODEL_RARELOGO].filedata);
|
||||
modelCalculateRwDataLen(g_ModelStates[MODEL_RARELOGO].filedata);
|
||||
g_TitleModel = func0f0b30ac(g_ModelStates[MODEL_RARELOGO].filedata);
|
||||
modelSetScale(g_TitleModel, 1);
|
||||
modelSetRootPosition(g_TitleModel, &coord);
|
||||
|
||||
@@ -94,8 +94,8 @@ u32 func000220fc(void);
|
||||
s32 func000225d4(struct model *model, struct coord *arg1, struct coord *arg2, u32 *arg3);
|
||||
void modelPromoteNodeOffsetsToPointers(struct modelnode *node, u32 arg1, u32 arg2);
|
||||
void modelPromoteOffsetsToPointers(struct modelfiledata *filedata, u32 arg1, u32 arg2);
|
||||
s32 func00022b68(struct modelnode *node);
|
||||
void func00022d24(struct modelfiledata *filedata);
|
||||
s32 modelCalculateRwDataIndexes(struct modelnode *node);
|
||||
void modelCalculateRwDataLen(struct modelfiledata *filedata);
|
||||
void func00022d50(struct model *model, struct modelnode *node);
|
||||
void modelInit(struct model *model, struct modelfiledata *filedata, union modelrwdata **rwdatas, bool resetanim);
|
||||
void animInit(struct anim *anim);
|
||||
|
||||
+27
-10
@@ -648,7 +648,7 @@ struct modelfiledata {
|
||||
s16 numparts;
|
||||
s16 nummatrices;
|
||||
f32 unk10;
|
||||
u16 unk14;
|
||||
u16 rwdatalen; // in words
|
||||
void *unk18;
|
||||
};
|
||||
|
||||
@@ -684,10 +684,26 @@ struct modelrwdata_root { // type 0x01
|
||||
u32 unk5c;
|
||||
};
|
||||
|
||||
struct modelrwdata_05 { // type 0x05
|
||||
bool unk00;
|
||||
};
|
||||
|
||||
struct modelrwdata_nearfar { // type 0x08
|
||||
bool visible;
|
||||
};
|
||||
|
||||
struct modelrwdata_hat { // type 0x09
|
||||
bool visible;
|
||||
};
|
||||
|
||||
struct modelrwdata_0b { // type 0x0b
|
||||
u32 unk00;
|
||||
};
|
||||
|
||||
struct modelrwdata_gunfire { // type 0x0c
|
||||
u32 unk00;
|
||||
};
|
||||
|
||||
struct modelrwdata_partid { // type 0x12
|
||||
union {
|
||||
u16 u16;
|
||||
@@ -695,26 +711,27 @@ struct modelrwdata_partid { // type 0x12
|
||||
} visible;
|
||||
};
|
||||
|
||||
struct modelrwdata_05 {
|
||||
bool unk00;
|
||||
};
|
||||
|
||||
struct modelrwdata_hat {
|
||||
bool visible;
|
||||
};
|
||||
|
||||
struct modelrwdata_headspot { // type 0x17
|
||||
struct modelfiledata *modelfiledata;
|
||||
void *rwdatas;
|
||||
};
|
||||
|
||||
struct modelrwdata_displaylist { // type 0x18
|
||||
u32 unk00;
|
||||
u32 unk04;
|
||||
u32 unk08;
|
||||
};
|
||||
|
||||
union modelrwdata {
|
||||
struct modelrwdata_root root;
|
||||
struct modelrwdata_05 type05;
|
||||
struct modelrwdata_nearfar nearfar;
|
||||
struct modelrwdata_hat hat;
|
||||
struct modelrwdata_0b type0b;
|
||||
struct modelrwdata_gunfire gunfire;
|
||||
struct modelrwdata_partid partid;
|
||||
struct modelrwdata_05 type05;
|
||||
struct modelrwdata_headspot headspot;
|
||||
struct modelrwdata_displaylist displaylist;
|
||||
};
|
||||
|
||||
struct waygroup {
|
||||
|
||||
+83
-177
@@ -9994,183 +9994,89 @@ void modelPromoteOffsetsToPointers(struct modelfiledata *filedata, u32 vma, u32
|
||||
}
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func00022b68
|
||||
.late_rodata
|
||||
glabel var70054578
|
||||
.word func00022b68+0x050
|
||||
glabel var7005457c
|
||||
.word func00022b68+0x148
|
||||
glabel var70054580
|
||||
.word func00022b68+0x148
|
||||
glabel var70054584
|
||||
.word func00022b68+0x148
|
||||
glabel var70054588
|
||||
.word func00022b68+0x148
|
||||
glabel var7005458c
|
||||
.word func00022b68+0x148
|
||||
glabel var70054590
|
||||
.word func00022b68+0x148
|
||||
glabel var70054594
|
||||
.word func00022b68+0x06c
|
||||
glabel var70054598
|
||||
.word func00022b68+0x0cc
|
||||
glabel var7005459c
|
||||
.word func00022b68+0x148
|
||||
glabel var700545a0
|
||||
.word func00022b68+0x0f4
|
||||
glabel var700545a4
|
||||
.word func00022b68+0x110
|
||||
glabel var700545a8
|
||||
.word func00022b68+0x148
|
||||
glabel var700545ac
|
||||
.word func00022b68+0x148
|
||||
glabel var700545b0
|
||||
.word func00022b68+0x148
|
||||
glabel var700545b4
|
||||
.word func00022b68+0x148
|
||||
glabel var700545b8
|
||||
.word func00022b68+0x148
|
||||
glabel var700545bc
|
||||
.word func00022b68+0x08c
|
||||
glabel var700545c0
|
||||
.word func00022b68+0x148
|
||||
glabel var700545c4
|
||||
.word func00022b68+0x148
|
||||
glabel var700545c8
|
||||
.word func00022b68+0x148
|
||||
glabel var700545cc
|
||||
.word func00022b68+0x148
|
||||
glabel var700545d0
|
||||
.word func00022b68+0x0ac
|
||||
glabel var700545d4
|
||||
.word func00022b68+0x12c
|
||||
.text
|
||||
/* 22b68: 27bdffd8 */ addiu $sp,$sp,-40
|
||||
/* 22b6c: afb20020 */ sw $s2,0x20($sp)
|
||||
/* 22b70: afb1001c */ sw $s1,0x1c($sp)
|
||||
/* 22b74: afb00018 */ sw $s0,0x18($sp)
|
||||
/* 22b78: 00809025 */ or $s2,$a0,$zero
|
||||
/* 22b7c: afbf0024 */ sw $ra,0x24($sp)
|
||||
/* 22b80: 00008825 */ or $s1,$zero,$zero
|
||||
/* 22b84: 10800060 */ beqz $a0,.L00022d08
|
||||
/* 22b88: 00808025 */ or $s0,$a0,$zero
|
||||
/* 22b8c: 96020000 */ lhu $v0,0x0($s0)
|
||||
.L00022b90:
|
||||
/* 22b90: 304e00ff */ andi $t6,$v0,0xff
|
||||
/* 22b94: 25cfffff */ addiu $t7,$t6,-1
|
||||
/* 22b98: 2de10018 */ sltiu $at,$t7,0x18
|
||||
/* 22b9c: 10200044 */ beqz $at,.L00022cb0
|
||||
/* 22ba0: 000f7880 */ sll $t7,$t7,0x2
|
||||
/* 22ba4: 3c017005 */ lui $at,%hi(var70054578)
|
||||
/* 22ba8: 002f0821 */ addu $at,$at,$t7
|
||||
/* 22bac: 8c2f4578 */ lw $t7,%lo(var70054578)($at)
|
||||
/* 22bb0: 01e00008 */ jr $t7
|
||||
/* 22bb4: 00000000 */ nop
|
||||
/* 22bb8: 8e020004 */ lw $v0,0x4($s0)
|
||||
/* 22bbc: a4510008 */ sh $s1,0x8($v0)
|
||||
/* 22bc0: 26310018 */ addiu $s1,$s1,0x18
|
||||
/* 22bc4: 3238ffff */ andi $t8,$s1,0xffff
|
||||
/* 22bc8: 03008825 */ or $s1,$t8,$zero
|
||||
/* 22bcc: 10000039 */ b .L00022cb4
|
||||
/* 22bd0: 8e030014 */ lw $v1,0x14($s0)
|
||||
/* 22bd4: 8e020004 */ lw $v0,0x4($s0)
|
||||
/* 22bd8: a451000c */ sh $s1,0xc($v0)
|
||||
/* 22bdc: 8c430008 */ lw $v1,0x8($v0)
|
||||
/* 22be0: 26310001 */ addiu $s1,$s1,0x1
|
||||
/* 22be4: 3239ffff */ andi $t9,$s1,0xffff
|
||||
/* 22be8: 03208825 */ or $s1,$t9,$zero
|
||||
/* 22bec: 10000031 */ b .L00022cb4
|
||||
/* 22bf0: ae030014 */ sw $v1,0x14($s0)
|
||||
/* 22bf4: 8e020004 */ lw $v0,0x4($s0)
|
||||
/* 22bf8: a4510004 */ sh $s1,0x4($v0)
|
||||
/* 22bfc: 8c430000 */ lw $v1,0x0($v0)
|
||||
/* 22c00: 26310001 */ addiu $s1,$s1,0x1
|
||||
/* 22c04: 3229ffff */ andi $t1,$s1,0xffff
|
||||
/* 22c08: 01208825 */ or $s1,$t1,$zero
|
||||
/* 22c0c: 10000029 */ b .L00022cb4
|
||||
/* 22c10: ae030014 */ sw $v1,0x14($s0)
|
||||
/* 22c14: 8e020004 */ lw $v0,0x4($s0)
|
||||
/* 22c18: 00001825 */ or $v1,$zero,$zero
|
||||
/* 22c1c: a4510000 */ sh $s1,0x0($v0)
|
||||
/* 22c20: 26310002 */ addiu $s1,$s1,0x2
|
||||
/* 22c24: 322bffff */ andi $t3,$s1,0xffff
|
||||
/* 22c28: 01608825 */ or $s1,$t3,$zero
|
||||
/* 22c2c: 10000021 */ b .L00022cb4
|
||||
/* 22c30: ae000014 */ sw $zero,0x14($s0)
|
||||
/* 22c34: 8e020004 */ lw $v0,0x4($s0)
|
||||
/* 22c38: 02002025 */ or $a0,$s0,$zero
|
||||
/* 22c3c: 00002825 */ or $a1,$zero,$zero
|
||||
/* 22c40: a4510022 */ sh $s1,0x22($v0)
|
||||
/* 22c44: 26310001 */ addiu $s1,$s1,0x1
|
||||
/* 22c48: 322cffff */ andi $t4,$s1,0xffff
|
||||
/* 22c4c: 0c00721a */ jal func0001c868
|
||||
/* 22c50: 01808825 */ or $s1,$t4,$zero
|
||||
/* 22c54: 10000017 */ b .L00022cb4
|
||||
/* 22c58: 8e030014 */ lw $v1,0x14($s0)
|
||||
/* 22c5c: 8e020004 */ lw $v0,0x4($s0)
|
||||
/* 22c60: a4510044 */ sh $s1,0x44($v0)
|
||||
/* 22c64: 26310001 */ addiu $s1,$s1,0x1
|
||||
/* 22c68: 322dffff */ andi $t5,$s1,0xffff
|
||||
/* 22c6c: 01a08825 */ or $s1,$t5,$zero
|
||||
/* 22c70: 10000010 */ b .L00022cb4
|
||||
/* 22c74: 8e030014 */ lw $v1,0x14($s0)
|
||||
/* 22c78: 8e020004 */ lw $v0,0x4($s0)
|
||||
/* 22c7c: a4510020 */ sh $s1,0x20($v0)
|
||||
/* 22c80: 26310001 */ addiu $s1,$s1,0x1
|
||||
/* 22c84: 322effff */ andi $t6,$s1,0xffff
|
||||
/* 22c88: 01c08825 */ or $s1,$t6,$zero
|
||||
/* 22c8c: 10000009 */ b .L00022cb4
|
||||
/* 22c90: 8e030014 */ lw $v1,0x14($s0)
|
||||
/* 22c94: 8e020004 */ lw $v0,0x4($s0)
|
||||
/* 22c98: a4510014 */ sh $s1,0x14($v0)
|
||||
/* 22c9c: 26310003 */ addiu $s1,$s1,0x3
|
||||
/* 22ca0: 322fffff */ andi $t7,$s1,0xffff
|
||||
/* 22ca4: 01e08825 */ or $s1,$t7,$zero
|
||||
/* 22ca8: 10000002 */ b .L00022cb4
|
||||
/* 22cac: 8e030014 */ lw $v1,0x14($s0)
|
||||
.L00022cb0:
|
||||
/* 22cb0: 8e030014 */ lw $v1,0x14($s0)
|
||||
.L00022cb4:
|
||||
/* 22cb4: 10600003 */ beqz $v1,.L00022cc4
|
||||
/* 22cb8: 00000000 */ nop
|
||||
/* 22cbc: 10000010 */ b .L00022d00
|
||||
/* 22cc0: 00608025 */ or $s0,$v1,$zero
|
||||
.L00022cc4:
|
||||
/* 22cc4: 1200000e */ beqz $s0,.L00022d00
|
||||
/* 22cc8: 00000000 */ nop
|
||||
/* 22ccc: 8e430008 */ lw $v1,0x8($s2)
|
||||
.L00022cd0:
|
||||
/* 22cd0: 56030004 */ bnel $s0,$v1,.L00022ce4
|
||||
/* 22cd4: 8e02000c */ lw $v0,0xc($s0)
|
||||
/* 22cd8: 10000009 */ b .L00022d00
|
||||
/* 22cdc: 00008025 */ or $s0,$zero,$zero
|
||||
/* 22ce0: 8e02000c */ lw $v0,0xc($s0)
|
||||
.L00022ce4:
|
||||
/* 22ce4: 50400004 */ beqzl $v0,.L00022cf8
|
||||
/* 22ce8: 8e100008 */ lw $s0,0x8($s0)
|
||||
/* 22cec: 10000004 */ b .L00022d00
|
||||
/* 22cf0: 00408025 */ or $s0,$v0,$zero
|
||||
/* 22cf4: 8e100008 */ lw $s0,0x8($s0)
|
||||
.L00022cf8:
|
||||
/* 22cf8: 1600fff5 */ bnez $s0,.L00022cd0
|
||||
/* 22cfc: 00000000 */ nop
|
||||
.L00022d00:
|
||||
/* 22d00: 5600ffa3 */ bnezl $s0,.L00022b90
|
||||
/* 22d04: 96020000 */ lhu $v0,0x0($s0)
|
||||
.L00022d08:
|
||||
/* 22d08: 8fbf0024 */ lw $ra,0x24($sp)
|
||||
/* 22d0c: 02201025 */ or $v0,$s1,$zero
|
||||
/* 22d10: 8fb1001c */ lw $s1,0x1c($sp)
|
||||
/* 22d14: 8fb00018 */ lw $s0,0x18($sp)
|
||||
/* 22d18: 8fb20020 */ lw $s2,0x20($sp)
|
||||
/* 22d1c: 03e00008 */ jr $ra
|
||||
/* 22d20: 27bd0028 */ addiu $sp,$sp,0x28
|
||||
);
|
||||
|
||||
void func00022d24(struct modelfiledata *filedata)
|
||||
s32 modelCalculateRwDataIndexes(struct modelnode *basenode)
|
||||
{
|
||||
filedata->unk14 = func00022b68(filedata->rootnode);
|
||||
u16 len = 0;
|
||||
struct modelnode *node = basenode;
|
||||
union modelrodata *rodata;
|
||||
|
||||
while (node) {
|
||||
u32 type = node->type & 0xff;
|
||||
|
||||
switch (type) {
|
||||
case MODELNODETYPE_ROOT:
|
||||
rodata = node->rodata;
|
||||
rodata->root.rwdataindex = len;
|
||||
len += sizeof(struct modelrwdata_root) / 4;
|
||||
break;
|
||||
case MODELNODETYPE_NEARFAR:
|
||||
rodata = node->rodata;
|
||||
rodata->nearfar.rwdataindex = len;
|
||||
len += sizeof(struct modelrwdata_nearfar) / 4;
|
||||
node->child = rodata->nearfar.target;
|
||||
break;
|
||||
case MODELNODETYPE_PARTID:
|
||||
rodata = node->rodata;
|
||||
rodata->partid.rwdataindex = len;
|
||||
len += sizeof(struct modelrwdata_partid) / 4;
|
||||
node->child = rodata->partid.target;
|
||||
break;
|
||||
case MODELNODETYPE_HEADSPOT:
|
||||
rodata = node->rodata;
|
||||
rodata->headspot.rwdataindex = len;
|
||||
len += sizeof(struct modelrwdata_headspot) / 4;
|
||||
node->child = NULL;
|
||||
break;
|
||||
case MODELNODETYPE_HAT:
|
||||
rodata = node->rodata;
|
||||
rodata->hat.rwdataindex = len;
|
||||
len += sizeof(struct modelrwdata_hat) / 4;
|
||||
func0001c868(node, false);
|
||||
break;
|
||||
case MODELNODETYPE_0B:
|
||||
rodata = node->rodata;
|
||||
rodata->type0b.rwdataindex = len;
|
||||
len += sizeof(struct modelrwdata_0b) / 4;
|
||||
break;
|
||||
case MODELNODETYPE_GUNFIRE:
|
||||
rodata = node->rodata;
|
||||
rodata->gunfire.rwdataindex = len;
|
||||
len += sizeof(struct modelrwdata_gunfire) / 4;
|
||||
break;
|
||||
case MODELNODETYPE_DISPLAYLIST:
|
||||
rodata = node->rodata;
|
||||
rodata->displaylist.rwdataindex = len;
|
||||
len += sizeof(struct modelrwdata_displaylist) / 4;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (node->child) {
|
||||
node = node->child;
|
||||
} else {
|
||||
while (node) {
|
||||
if (node == basenode->parent) {
|
||||
node = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
if (node->next) {
|
||||
node = node->next;
|
||||
break;
|
||||
}
|
||||
|
||||
node = node->parent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
void modelCalculateRwDataLen(struct modelfiledata *filedata)
|
||||
{
|
||||
filedata->rwdatalen = modelCalculateRwDataIndexes(filedata->rootnode);
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
@@ -10489,7 +10395,7 @@ glabel func00023108
|
||||
/* 2316c: ac660008 */ sw $a2,0x8($v1)
|
||||
/* 23170: 8cc40014 */ lw $a0,0x14($a2)
|
||||
.L00023174:
|
||||
/* 23174: 0c008ada */ jal func00022b68
|
||||
/* 23174: 0c008ada */ jal modelCalculateRwDataIndexes
|
||||
/* 23178: 00000000 */ nop
|
||||
/* 2317c: 8fa7001c */ lw $a3,0x1c($sp)
|
||||
/* 23180: 84ea0014 */ lh $t2,0x14($a3)
|
||||
|
||||
Reference in New Issue
Block a user