Decompile func0001cd18

This commit is contained in:
Ryan Dwyer
2021-04-30 17:16:01 +10:00
parent 0471a2fafd
commit 743167b87c
2 changed files with 52 additions and 148 deletions
+4 -4
View File
@@ -33,11 +33,11 @@ f32 func0001afe8(f32 arg0, f32 angle, f32 frac);
void func0001b07c(struct coord *arg0, struct coord *arg1, f32 mult);
void func0001b0e8(struct model *model, struct modelnode *node);
void func0001b3bc(struct model *model);
u32 func0001b400(void);
void func0001b400(Mtxf *mtx, struct model *model, struct modelnode *node);
u32 func0001b80c(void);
u32 func0001bc14(void);
u32 func0001bfa8(void);
u32 func0001c5b4(void);
void func0001bfa8(Mtxf *mtx, struct model *model, struct modelnode *node);
void func0001c5b4(Mtxf *mtx, struct model *model, struct modelnode *node);
void func0001c664(struct model *model, struct modelnode *node);
void func0001c784(struct model *model, struct modelnode *node);
void func0001c7d0(struct model *model, struct modelnode *node);
@@ -47,7 +47,7 @@ void modelRenderNodeReorder(struct model *model, struct modelnode *node);
void func0001c950(struct model *model, struct modelnode *node);
void func0001cb0c(struct model *model, struct modelnode *node);
void func0001cc20(struct model *model);
u32 func0001cd18(void);
void func0001cd18(Mtxf *mtx, struct model *model);
u32 func0001ce64(void);
void func0001cebc(struct objticksp476 *arg0, struct model *model);
s16 modelGetAnimNum(struct model *model);
+48 -144
View File
@@ -2939,150 +2939,54 @@ void func0001cc20(struct model *model)
}
}
GLOBAL_ASM(
glabel func0001cd18
.late_rodata
glabel var700543e4
.word func0001cd18+0x58
glabel var700543e8
.word func0001cd18+0x70
glabel var700543ec
.word func0001cd18+0xf0
glabel var700543f0
.word func0001cd18+0xf0
glabel var700543f4
.word func0001cd18+0xf0
glabel var700543f8
.word func0001cd18+0xf0
glabel var700543fc
.word func0001cd18+0xf0
glabel var70054400
.word func0001cd18+0xa0
glabel var70054404
.word func0001cd18+0xb4
glabel var70054408
.word func0001cd18+0xf0
glabel var7005440c
.word func0001cd18+0xf0
glabel var70054410
.word func0001cd18+0xf0
glabel var70054414
.word func0001cd18+0xf0
glabel var70054418
.word func0001cd18+0xf0
glabel var7005441c
.word func0001cd18+0xf0
glabel var70054420
.word func0001cd18+0xf0
glabel var70054424
.word func0001cd18+0xf0
glabel var70054428
.word func0001cd18+0xc8
glabel var7005442c
.word func0001cd18+0xf0
glabel var70054430
.word func0001cd18+0xf0
glabel var70054434
.word func0001cd18+0x88
glabel var70054438
.word func0001cd18+0xf0
glabel var7005443c
.word func0001cd18+0xdc
glabel var70054440
.word func0001cd18+0xf0
.text
/* 1cd18: 27bdffd8 */ addiu $sp,$sp,-40
/* 1cd1c: afbf0024 */ sw $ra,0x24($sp)
/* 1cd20: afb20020 */ sw $s2,0x20($sp)
/* 1cd24: afb1001c */ sw $s1,0x1c($sp)
/* 1cd28: afb00018 */ sw $s0,0x18($sp)
/* 1cd2c: 8cae0008 */ lw $t6,0x8($a1)
/* 1cd30: 00a08825 */ or $s1,$a1,$zero
/* 1cd34: 00809025 */ or $s2,$a0,$zero
/* 1cd38: 8dd00000 */ lw $s0,0x0($t6)
/* 1cd3c: 52000044 */ beqzl $s0,.L0001ce50
/* 1cd40: 8fbf0024 */ lw $ra,0x24($sp)
/* 1cd44: 96020000 */ lhu $v0,0x0($s0)
.L0001cd48:
/* 1cd48: 304f00ff */ andi $t7,$v0,0xff
/* 1cd4c: 25f8ffff */ addiu $t8,$t7,-1
/* 1cd50: 2f010018 */ sltiu $at,$t8,0x18
/* 1cd54: 1020002c */ beqz $at,.L0001ce08
/* 1cd58: 0018c080 */ sll $t8,$t8,0x2
/* 1cd5c: 3c017005 */ lui $at,%hi(var700543e4)
/* 1cd60: 00380821 */ addu $at,$at,$t8
/* 1cd64: 8c3843e4 */ lw $t8,%lo(var700543e4)($at)
/* 1cd68: 03000008 */ jr $t8
/* 1cd6c: 00000000 */ nop
/* 1cd70: 02402025 */ or $a0,$s2,$zero
/* 1cd74: 02202825 */ or $a1,$s1,$zero
/* 1cd78: 0c006d00 */ jal func0001b400
/* 1cd7c: 02003025 */ or $a2,$s0,$zero
/* 1cd80: 10000022 */ b .L0001ce0c
/* 1cd84: 8e020014 */ lw $v0,0x14($s0)
/* 1cd88: 02402025 */ or $a0,$s2,$zero
/* 1cd8c: 02202825 */ or $a1,$s1,$zero
/* 1cd90: 0c006fea */ jal func0001bfa8
/* 1cd94: 02003025 */ or $a2,$s0,$zero
/* 1cd98: 1000001c */ b .L0001ce0c
/* 1cd9c: 8e020014 */ lw $v0,0x14($s0)
/* 1cda0: 02402025 */ or $a0,$s2,$zero
/* 1cda4: 02202825 */ or $a1,$s1,$zero
/* 1cda8: 0c00716d */ jal func0001c5b4
/* 1cdac: 02003025 */ or $a2,$s0,$zero
/* 1cdb0: 10000016 */ b .L0001ce0c
/* 1cdb4: 8e020014 */ lw $v0,0x14($s0)
/* 1cdb8: 02202025 */ or $a0,$s1,$zero
/* 1cdbc: 0c007199 */ jal func0001c664
/* 1cdc0: 02002825 */ or $a1,$s0,$zero
/* 1cdc4: 10000011 */ b .L0001ce0c
/* 1cdc8: 8e020014 */ lw $v0,0x14($s0)
/* 1cdcc: 02202025 */ or $a0,$s1,$zero
/* 1cdd0: 0c007254 */ jal func0001c950
/* 1cdd4: 02002825 */ or $a1,$s0,$zero
/* 1cdd8: 1000000c */ b .L0001ce0c
/* 1cddc: 8e020014 */ lw $v0,0x14($s0)
/* 1cde0: 02202025 */ or $a0,$s1,$zero
/* 1cde4: 0c0071f4 */ jal func0001c7d0
/* 1cde8: 02002825 */ or $a1,$s0,$zero
/* 1cdec: 10000007 */ b .L0001ce0c
/* 1cdf0: 8e020014 */ lw $v0,0x14($s0)
/* 1cdf4: 02202025 */ or $a0,$s1,$zero
/* 1cdf8: 0c007207 */ jal modelAttachHead
/* 1cdfc: 02002825 */ or $a1,$s0,$zero
/* 1ce00: 10000002 */ b .L0001ce0c
/* 1ce04: 8e020014 */ lw $v0,0x14($s0)
.L0001ce08:
/* 1ce08: 8e020014 */ lw $v0,0x14($s0)
.L0001ce0c:
/* 1ce0c: 10400003 */ beqz $v0,.L0001ce1c
/* 1ce10: 00000000 */ nop
/* 1ce14: 1000000b */ b .L0001ce44
/* 1ce18: 00408025 */ or $s0,$v0,$zero
.L0001ce1c:
/* 1ce1c: 12000009 */ beqz $s0,.L0001ce44
/* 1ce20: 00000000 */ nop
/* 1ce24: 8e02000c */ lw $v0,0xc($s0)
.L0001ce28:
/* 1ce28: 50400004 */ beqzl $v0,.L0001ce3c
/* 1ce2c: 8e100008 */ lw $s0,0x8($s0)
/* 1ce30: 10000004 */ b .L0001ce44
/* 1ce34: 00408025 */ or $s0,$v0,$zero
/* 1ce38: 8e100008 */ lw $s0,0x8($s0)
.L0001ce3c:
/* 1ce3c: 5600fffa */ bnezl $s0,.L0001ce28
/* 1ce40: 8e02000c */ lw $v0,0xc($s0)
.L0001ce44:
/* 1ce44: 5600ffc0 */ bnezl $s0,.L0001cd48
/* 1ce48: 96020000 */ lhu $v0,0x0($s0)
/* 1ce4c: 8fbf0024 */ lw $ra,0x24($sp)
.L0001ce50:
/* 1ce50: 8fb00018 */ lw $s0,0x18($sp)
/* 1ce54: 8fb1001c */ lw $s1,0x1c($sp)
/* 1ce58: 8fb20020 */ lw $s2,0x20($sp)
/* 1ce5c: 03e00008 */ jr $ra
/* 1ce60: 27bd0028 */ addiu $sp,$sp,0x28
);
void func0001cd18(Mtxf *mtx, struct model *model)
{
struct modelnode *node = model->filedata->rootnode;
while (node) {
u32 type = node->type & 0xff;
switch (type) {
case MODELNODETYPE_CHRINFO:
func0001b400(mtx, model, node);
break;
case MODELNODETYPE_POSITION:
func0001bfa8(mtx, model, node);
break;
case MODELNODETYPE_POSITIONHELD:
func0001c5b4(mtx, model, node);
break;
case MODELNODETYPE_DISTANCE:
func0001c664(model, node);
break;
case MODELNODETYPE_REORDER:
func0001c950(model, node);
break;
case MODELNODETYPE_TOGGLE:
func0001c7d0(model, node);
break;
case MODELNODETYPE_HEADSPOT:
modelAttachHead(model, node);
break;
case MODELNODETYPE_DL:
default:
break;
}
if (node->child) {
node = node->child;
} else {
while (node) {
if (node->next) {
node = node->next;
break;
}
node = node->parent;
}
}
}
}
#if VERSION >= VERSION_PAL_FINAL
GLOBAL_ASM(