Decompile func0001cb0c
This commit is contained in:
parent
f073f5ef30
commit
a1b00ca423
|
|
@ -1768,6 +1768,9 @@
|
|||
#define MODELNODETYPE_BBOX 0x0a
|
||||
#define MODELNODETYPE_0B 0x0b
|
||||
#define MODELNODETYPE_GUNFIRE 0x0c
|
||||
#define MODELNODETYPE_0D 0x0d
|
||||
#define MODELNODETYPE_0E 0x0e
|
||||
#define MODELNODETYPE_0F 0x0f
|
||||
#define MODELNODETYPE_PARTID 0x12
|
||||
#define MODELNODETYPE_POSITIONHELD 0x15
|
||||
#define MODELNODETYPE_HEADSPOT 0x17
|
||||
|
|
|
|||
|
|
@ -39,13 +39,13 @@ u32 func0001b80c(void);
|
|||
u32 func0001bc14(void);
|
||||
u32 func0001bfa8(void);
|
||||
u32 func0001c5b4(void);
|
||||
u32 func0001c664(void);
|
||||
void func0001c664(struct model *model, struct modelnode *node);
|
||||
void func0001c784(struct model *model, struct modelnode *node);
|
||||
void func0001c7d0(struct model *model, struct modelnode *node);
|
||||
void modelAttachHead(struct model *model, struct modelnode *node);
|
||||
u32 func0001c868(void);
|
||||
u32 func0001c924(void);
|
||||
u32 func0001c950(void);
|
||||
void func0001c950(struct model *model, struct modelnode *node);
|
||||
void func0001cb0c(struct model *model, struct modelnode *node);
|
||||
u32 func0001cc20(void);
|
||||
u32 func0001cd18(void);
|
||||
|
|
|
|||
239
src/lib/model.c
239
src/lib/model.c
|
|
@ -3439,168 +3439,91 @@ glabel func0001c950
|
|||
/* 1cb08: 00000000 */ nop
|
||||
);
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0001cb0c
|
||||
.late_rodata
|
||||
glabel var70054324
|
||||
.word func0001cb0c+0x05c
|
||||
glabel var70054328
|
||||
.word func0001cb0c+0x05c
|
||||
glabel var7005432c
|
||||
.word func0001cb0c+0x098
|
||||
glabel var70054330
|
||||
.word func0001cb0c+0x098
|
||||
glabel var70054334
|
||||
.word func0001cb0c+0x098
|
||||
glabel var70054338
|
||||
.word func0001cb0c+0x098
|
||||
glabel var7005433c
|
||||
.word func0001cb0c+0x098
|
||||
glabel var70054340
|
||||
.word func0001cb0c+0x064
|
||||
glabel var70054344
|
||||
.word func0001cb0c+0x078
|
||||
glabel var70054348
|
||||
.word func0001cb0c+0x098
|
||||
glabel var7005434c
|
||||
.word func0001cb0c+0x05c
|
||||
glabel var70054350
|
||||
.word func0001cb0c+0x05c
|
||||
glabel var70054354
|
||||
.word func0001cb0c+0x05c
|
||||
glabel var70054358
|
||||
.word func0001cb0c+0x05c
|
||||
glabel var7005435c
|
||||
.word func0001cb0c+0x05c
|
||||
glabel var70054360
|
||||
.word func0001cb0c+0x098
|
||||
glabel var70054364
|
||||
.word func0001cb0c+0x098
|
||||
glabel var70054368
|
||||
.word func0001cb0c+0x098
|
||||
glabel var7005436c
|
||||
.word func0001cb0c+0x098
|
||||
glabel var70054370
|
||||
.word func0001cb0c+0x098
|
||||
glabel var70054374
|
||||
.word func0001cb0c+0x05c
|
||||
glabel var70054378
|
||||
.word func0001cb0c+0x098
|
||||
glabel var7005437c
|
||||
.word func0001cb0c+0x08c
|
||||
glabel var70054380
|
||||
.word func0001cb0c+0x098
|
||||
glabel var70054384
|
||||
.word func0001cb0c+0x1b4
|
||||
glabel var70054388
|
||||
.word func0001cb0c+0x1b4
|
||||
glabel var7005438c
|
||||
.word func0001cb0c+0x1b4
|
||||
glabel var70054390
|
||||
.word func0001cb0c+0x1b4
|
||||
glabel var70054394
|
||||
.word func0001cb0c+0x1b4
|
||||
glabel var70054398
|
||||
.word func0001cb0c+0x1b4
|
||||
glabel var7005439c
|
||||
.word func0001cb0c+0x1b4
|
||||
glabel var700543a0
|
||||
.word func0001cb0c+0x164
|
||||
glabel var700543a4
|
||||
.word func0001cb0c+0x178
|
||||
glabel var700543a8
|
||||
.word func0001cb0c+0x1b4
|
||||
glabel var700543ac
|
||||
.word func0001cb0c+0x1b4
|
||||
glabel var700543b0
|
||||
.word func0001cb0c+0x1b4
|
||||
glabel var700543b4
|
||||
.word func0001cb0c+0x1b4
|
||||
glabel var700543b8
|
||||
.word func0001cb0c+0x1b4
|
||||
.text
|
||||
/* 1cb0c: 27bdffd8 */ addiu $sp,$sp,-40
|
||||
/* 1cb10: afbf0024 */ sw $ra,0x24($sp)
|
||||
/* 1cb14: afb30020 */ sw $s3,0x20($sp)
|
||||
/* 1cb18: afb2001c */ sw $s2,0x1c($sp)
|
||||
/* 1cb1c: afb10018 */ sw $s1,0x18($sp)
|
||||
/* 1cb20: afb00014 */ sw $s0,0x14($sp)
|
||||
/* 1cb24: 8cb00014 */ lw $s0,0x14($a1)
|
||||
/* 1cb28: 00809025 */ or $s2,$a0,$zero
|
||||
/* 1cb2c: 00a09825 */ or $s3,$a1,$zero
|
||||
/* 1cb30: 52000035 */ beqzl $s0,.L0001cc08
|
||||
/* 1cb34: 8fbf0024 */ lw $ra,0x24($sp)
|
||||
/* 1cb38: 96020000 */ lhu $v0,0x0($s0)
|
||||
.L0001cb3c:
|
||||
/* 1cb3c: 24110001 */ addiu $s1,$zero,0x1
|
||||
/* 1cb40: 304e00ff */ andi $t6,$v0,0xff
|
||||
/* 1cb44: 25cfffff */ addiu $t7,$t6,-1
|
||||
/* 1cb48: 2de10018 */ sltiu $at,$t7,0x18
|
||||
/* 1cb4c: 10200015 */ beqz $at,.L0001cba4
|
||||
/* 1cb50: 000f7880 */ sll $t7,$t7,0x2
|
||||
/* 1cb54: 3c017005 */ lui $at,%hi(var70054324)
|
||||
/* 1cb58: 002f0821 */ addu $at,$at,$t7
|
||||
/* 1cb5c: 8c2f4324 */ lw $t7,%lo(var70054324)($at)
|
||||
/* 1cb60: 01e00008 */ jr $t7
|
||||
/* 1cb64: 00000000 */ nop
|
||||
/* 1cb68: 1000000e */ b .L0001cba4
|
||||
/* 1cb6c: 00008825 */ or $s1,$zero,$zero
|
||||
/* 1cb70: 02402025 */ or $a0,$s2,$zero
|
||||
/* 1cb74: 0c007199 */ jal func0001c664
|
||||
/* 1cb78: 02002825 */ or $a1,$s0,$zero
|
||||
/* 1cb7c: 10000009 */ b .L0001cba4
|
||||
/* 1cb80: 00000000 */ nop
|
||||
/* 1cb84: 02402025 */ or $a0,$s2,$zero
|
||||
/* 1cb88: 0c007254 */ jal func0001c950
|
||||
/* 1cb8c: 02002825 */ or $a1,$s0,$zero
|
||||
/* 1cb90: 10000004 */ b .L0001cba4
|
||||
/* 1cb94: 00000000 */ nop
|
||||
/* 1cb98: 02402025 */ or $a0,$s2,$zero
|
||||
/* 1cb9c: 0c007207 */ jal modelAttachHead
|
||||
/* 1cba0: 02002825 */ or $a1,$s0,$zero
|
||||
.L0001cba4:
|
||||
/* 1cba4: 12200006 */ beqz $s1,.L0001cbc0
|
||||
/* 1cba8: 00000000 */ nop
|
||||
/* 1cbac: 8e020014 */ lw $v0,0x14($s0)
|
||||
/* 1cbb0: 10400003 */ beqz $v0,.L0001cbc0
|
||||
/* 1cbb4: 00000000 */ nop
|
||||
/* 1cbb8: 10000010 */ b .L0001cbfc
|
||||
/* 1cbbc: 00408025 */ or $s0,$v0,$zero
|
||||
.L0001cbc0:
|
||||
/* 1cbc0: 1200000e */ beqz $s0,.L0001cbfc
|
||||
/* 1cbc4: 00000000 */ nop
|
||||
/* 1cbc8: 8e630008 */ lw $v1,0x8($s3)
|
||||
.L0001cbcc:
|
||||
/* 1cbcc: 56030004 */ bnel $s0,$v1,.L0001cbe0
|
||||
/* 1cbd0: 8e02000c */ lw $v0,0xc($s0)
|
||||
/* 1cbd4: 10000009 */ b .L0001cbfc
|
||||
/* 1cbd8: 00008025 */ or $s0,$zero,$zero
|
||||
/* 1cbdc: 8e02000c */ lw $v0,0xc($s0)
|
||||
.L0001cbe0:
|
||||
/* 1cbe0: 50400004 */ beqzl $v0,.L0001cbf4
|
||||
/* 1cbe4: 8e100008 */ lw $s0,0x8($s0)
|
||||
/* 1cbe8: 10000004 */ b .L0001cbfc
|
||||
/* 1cbec: 00408025 */ or $s0,$v0,$zero
|
||||
/* 1cbf0: 8e100008 */ lw $s0,0x8($s0)
|
||||
.L0001cbf4:
|
||||
/* 1cbf4: 1600fff5 */ bnez $s0,.L0001cbcc
|
||||
/* 1cbf8: 00000000 */ nop
|
||||
.L0001cbfc:
|
||||
/* 1cbfc: 5600ffcf */ bnezl $s0,.L0001cb3c
|
||||
/* 1cc00: 96020000 */ lhu $v0,0x0($s0)
|
||||
/* 1cc04: 8fbf0024 */ lw $ra,0x24($sp)
|
||||
.L0001cc08:
|
||||
/* 1cc08: 8fb00014 */ lw $s0,0x14($sp)
|
||||
/* 1cc0c: 8fb10018 */ lw $s1,0x18($sp)
|
||||
/* 1cc10: 8fb2001c */ lw $s2,0x1c($sp)
|
||||
/* 1cc14: 8fb30020 */ lw $s3,0x20($sp)
|
||||
/* 1cc18: 03e00008 */ jr $ra
|
||||
/* 1cc1c: 27bd0028 */ addiu $sp,$sp,0x28
|
||||
);
|
||||
void func0001cb0c(struct model *model, struct modelnode *parent)
|
||||
{
|
||||
struct modelnode *node = parent->child;
|
||||
|
||||
if (parent);
|
||||
|
||||
while (node) {
|
||||
s32 type = node->type & 0xff;
|
||||
bool dochildren = true;
|
||||
|
||||
switch (type) {
|
||||
case MODELNODETYPE_ROOT:
|
||||
case MODELNODETYPE_POSITION:
|
||||
case MODELNODETYPE_0B:
|
||||
case MODELNODETYPE_GUNFIRE:
|
||||
case MODELNODETYPE_0D:
|
||||
case MODELNODETYPE_0E:
|
||||
case MODELNODETYPE_0F:
|
||||
case MODELNODETYPE_POSITIONHELD:
|
||||
dochildren = false;
|
||||
break;
|
||||
case MODELNODETYPE_NEARFAR:
|
||||
func0001c664(model, node);
|
||||
break;
|
||||
case MODELNODETYPE_HAT:
|
||||
func0001c950(model, node);
|
||||
break;
|
||||
case MODELNODETYPE_HEADSPOT:
|
||||
modelAttachHead(model, node);
|
||||
break;
|
||||
case MODELNODETYPE_DISPLAYLIST:
|
||||
break;
|
||||
}
|
||||
|
||||
if (dochildren && node->child) {
|
||||
node = node->child;
|
||||
} else {
|
||||
while (node) {
|
||||
if (node == parent->parent) {
|
||||
node = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
if (node->next) {
|
||||
node = node->next;
|
||||
break;
|
||||
}
|
||||
|
||||
node = node->parent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0001cc20
|
||||
.late_rodata
|
||||
glabel var70054384
|
||||
.word func0001cc20+0xa0
|
||||
glabel var70054388
|
||||
.word func0001cc20+0xa0
|
||||
glabel var7005438c
|
||||
.word func0001cc20+0xa0
|
||||
glabel var70054390
|
||||
.word func0001cc20+0xa0
|
||||
glabel var70054394
|
||||
.word func0001cc20+0xa0
|
||||
glabel var70054398
|
||||
.word func0001cc20+0xa0
|
||||
glabel var7005439c
|
||||
.word func0001cc20+0xa0
|
||||
glabel var700543a0
|
||||
.word func0001cc20+0x50
|
||||
glabel var700543a4
|
||||
.word func0001cc20+0x64
|
||||
glabel var700543a8
|
||||
.word func0001cc20+0xa0
|
||||
glabel var700543ac
|
||||
.word func0001cc20+0xa0
|
||||
glabel var700543b0
|
||||
.word func0001cc20+0xa0
|
||||
glabel var700543b4
|
||||
.word func0001cc20+0xa0
|
||||
glabel var700543b8
|
||||
.word func0001cc20+0xa0
|
||||
glabel var700543bc
|
||||
.word func0001cc20+0xa0
|
||||
glabel var700543c0
|
||||
|
|
|
|||
Loading…
Reference in New Issue