mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-08-02 00:14:10 -04:00
Decompile func0f14c1cc
This commit is contained in:
+53
-145
@@ -2084,151 +2084,59 @@ void func0f14bec8(s32 index)
|
||||
}
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f14c1cc
|
||||
.late_rodata
|
||||
glabel var7f1b7324
|
||||
.word func0f14c1cc+0x6c # f14c238
|
||||
glabel var7f1b7328
|
||||
.word func0f14c1cc+0x1c8 # f14c394
|
||||
glabel var7f1b732c
|
||||
.word func0f14c1cc+0xb4 # f14c280
|
||||
glabel var7f1b7330
|
||||
.word func0f14c1cc+0x100 # f14c2cc
|
||||
glabel var7f1b7334
|
||||
.word func0f14c1cc+0xc0 # f14c28c
|
||||
glabel var7f1b7338
|
||||
.word func0f14c1cc+0x1c8 # f14c394
|
||||
.text
|
||||
/* f14c1cc: 3c0f8008 */ lui $t7,%hi(var8007f8dc)
|
||||
/* f14c1d0: 8deff8dc */ lw $t7,%lo(var8007f8dc)($t7)
|
||||
/* f14c1d4: 00047180 */ sll $t6,$a0,0x6
|
||||
/* f14c1d8: 01c47021 */ addu $t6,$t6,$a0
|
||||
/* f14c1dc: 27bdffe0 */ addiu $sp,$sp,-32
|
||||
/* f14c1e0: 000e7080 */ sll $t6,$t6,0x2
|
||||
/* f14c1e4: afbf0014 */ sw $ra,0x14($sp)
|
||||
/* f14c1e8: 01cf5021 */ addu $t2,$t6,$t7
|
||||
/* f14c1ec: afaa001c */ sw $t2,0x1c($sp)
|
||||
/* f14c1f0: 0fc53c02 */ jal func0f14f008
|
||||
/* f14c1f4: afa40020 */ sw $a0,0x20($sp)
|
||||
/* f14c1f8: 8faa001c */ lw $t2,0x1c($sp)
|
||||
/* f14c1fc: 04410003 */ bgez $v0,.L0f14c20c
|
||||
/* f14c200: 00021843 */ sra $v1,$v0,0x1
|
||||
/* f14c204: 24410001 */ addiu $at,$v0,0x1
|
||||
/* f14c208: 00011843 */ sra $v1,$at,0x1
|
||||
.L0f14c20c:
|
||||
/* f14c20c: 8d5800f4 */ lw $t8,0xf4($t2)
|
||||
/* f14c210: 24630001 */ addiu $v1,$v1,0x1
|
||||
/* f14c214: 00605825 */ or $t3,$v1,$zero
|
||||
/* f14c218: 2f010006 */ sltiu $at,$t8,0x6
|
||||
/* f14c21c: 1020005d */ beqz $at,.L0f14c394
|
||||
/* f14c220: 0018c080 */ sll $t8,$t8,0x2
|
||||
/* f14c224: 3c017f1b */ lui $at,%hi(var7f1b7324)
|
||||
/* f14c228: 00380821 */ addu $at,$at,$t8
|
||||
/* f14c22c: 8c387324 */ lw $t8,%lo(var7f1b7324)($at)
|
||||
/* f14c230: 03000008 */ jr $t8
|
||||
/* f14c234: 00000000 */ nop
|
||||
/* f14c238: 0fc52969 */ jal func0f14a5a4
|
||||
/* f14c23c: afaa001c */ sw $t2,0x1c($sp)
|
||||
/* f14c240: 00022600 */ sll $a0,$v0,0x18
|
||||
/* f14c244: 0004ce03 */ sra $t9,$a0,0x18
|
||||
/* f14c248: 03202025 */ or $a0,$t9,$zero
|
||||
/* f14c24c: 00002825 */ or $a1,$zero,$zero
|
||||
/* f14c250: 0fc45c6d */ jal pak0f1171b4
|
||||
/* f14c254: 00003025 */ or $a2,$zero,$zero
|
||||
/* f14c258: 0fc52969 */ jal func0f14a5a4
|
||||
/* f14c25c: 00000000 */ nop
|
||||
/* f14c260: 00022600 */ sll $a0,$v0,0x18
|
||||
/* f14c264: 00046603 */ sra $t4,$a0,0x18
|
||||
/* f14c268: 0fc4756c */ jal pak0f11d5b0
|
||||
/* f14c26c: 01802025 */ or $a0,$t4,$zero
|
||||
/* f14c270: 8faa001c */ lw $t2,0x1c($sp)
|
||||
/* f14c274: 240d0001 */ addiu $t5,$zero,0x1
|
||||
/* f14c278: 10000046 */ b .L0f14c394
|
||||
/* f14c27c: ad4d00f4 */ sw $t5,0xf4($t2)
|
||||
/* f14c280: 240e0003 */ addiu $t6,$zero,0x3
|
||||
/* f14c284: 10000043 */ b .L0f14c394
|
||||
/* f14c288: ad4e00f4 */ sw $t6,0xf4($t2)
|
||||
/* f14c28c: 8d420074 */ lw $v0,0x74($t2)
|
||||
/* f14c290: 8d4f0080 */ lw $t7,0x80($t2)
|
||||
/* f14c294: 51e20040 */ beql $t7,$v0,.L0f14c398
|
||||
/* f14c298: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
/* f14c29c: 8d5800dc */ lw $t8,0xdc($t2)
|
||||
/* f14c2a0: 0002c880 */ sll $t9,$v0,0x2
|
||||
/* f14c2a4: 240e0005 */ addiu $t6,$zero,0x5
|
||||
/* f14c2a8: 03196021 */ addu $t4,$t8,$t9
|
||||
/* f14c2ac: ad800000 */ sw $zero,0x0($t4)
|
||||
/* f14c2b0: 8d4d0074 */ lw $t5,0x74($t2)
|
||||
/* f14c2b4: ad4e00f4 */ sw $t6,0xf4($t2)
|
||||
/* f14c2b8: ad4d0080 */ sw $t5,0x80($t2)
|
||||
/* f14c2bc: 0fc52f4d */ jal func0f14bd34
|
||||
/* f14c2c0: 8fa40020 */ lw $a0,0x20($sp)
|
||||
/* f14c2c4: 10000034 */ b .L0f14c398
|
||||
/* f14c2c8: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
/* f14c2cc: 240fffff */ addiu $t7,$zero,-1
|
||||
/* f14c2d0: ad4f0080 */ sw $t7,0x80($t2)
|
||||
/* f14c2d4: 1860002d */ blez $v1,.L0f14c38c
|
||||
/* f14c2d8: 00002825 */ or $a1,$zero,$zero
|
||||
/* f14c2dc: 8d460074 */ lw $a2,0x74($t2)
|
||||
/* f14c2e0: 8d4800dc */ lw $t0,0xdc($t2)
|
||||
/* f14c2e4: 240900ff */ addiu $t1,$zero,0xff
|
||||
/* f14c2e8: 00c03825 */ or $a3,$a2,$zero
|
||||
.L0f14c2ec:
|
||||
/* f14c2ec: 00c2001a */ div $zero,$a2,$v0
|
||||
/* f14c2f0: 00002010 */ mfhi $a0
|
||||
/* f14c2f4: 0004c080 */ sll $t8,$a0,0x2
|
||||
/* f14c2f8: 14400002 */ bnez $v0,.L0f14c304
|
||||
/* f14c2fc: 00000000 */ nop
|
||||
/* f14c300: 0007000d */ break 0x7
|
||||
.L0f14c304:
|
||||
/* f14c304: 2401ffff */ addiu $at,$zero,-1
|
||||
/* f14c308: 14410004 */ bne $v0,$at,.L0f14c31c
|
||||
/* f14c30c: 3c018000 */ lui $at,0x8000
|
||||
/* f14c310: 14c10002 */ bne $a2,$at,.L0f14c31c
|
||||
/* f14c314: 00000000 */ nop
|
||||
/* f14c318: 0006000d */ break 0x6
|
||||
.L0f14c31c:
|
||||
/* f14c31c: 00e01825 */ or $v1,$a3,$zero
|
||||
/* f14c320: 04e10002 */ bgez $a3,.L0f14c32c
|
||||
/* f14c324: 0118c821 */ addu $t9,$t0,$t8
|
||||
/* f14c328: 00621821 */ addu $v1,$v1,$v0
|
||||
.L0f14c32c:
|
||||
/* f14c32c: 8f2c0000 */ lw $t4,0x0($t9)
|
||||
/* f14c330: 00037880 */ sll $t7,$v1,0x2
|
||||
/* f14c334: 010fc021 */ addu $t8,$t0,$t7
|
||||
/* f14c338: 55800008 */ bnezl $t4,.L0f14c35c
|
||||
/* f14c33c: 8f190000 */ lw $t9,0x0($t8)
|
||||
/* f14c340: 01446821 */ addu $t5,$t2,$a0
|
||||
/* f14c344: 91ae00b6 */ lbu $t6,0xb6($t5)
|
||||
/* f14c348: 512e0004 */ beql $t1,$t6,.L0f14c35c
|
||||
/* f14c34c: 8f190000 */ lw $t9,0x0($t8)
|
||||
/* f14c350: 1000000e */ b .L0f14c38c
|
||||
/* f14c354: ad440080 */ sw $a0,0x80($t2)
|
||||
/* f14c358: 8f190000 */ lw $t9,0x0($t8)
|
||||
.L0f14c35c:
|
||||
/* f14c35c: 24a50001 */ addiu $a1,$a1,0x1
|
||||
/* f14c360: 24c60001 */ addiu $a2,$a2,0x1
|
||||
/* f14c364: 17200007 */ bnez $t9,.L0f14c384
|
||||
/* f14c368: 00000000 */ nop
|
||||
/* f14c36c: 01436021 */ addu $t4,$t2,$v1
|
||||
/* f14c370: 918d00b6 */ lbu $t5,0xb6($t4)
|
||||
/* f14c374: 112d0003 */ beq $t1,$t5,.L0f14c384
|
||||
/* f14c378: 00000000 */ nop
|
||||
/* f14c37c: 10000003 */ b .L0f14c38c
|
||||
/* f14c380: ad430080 */ sw $v1,0x80($t2)
|
||||
.L0f14c384:
|
||||
/* f14c384: 14abffd9 */ bne $a1,$t3,.L0f14c2ec
|
||||
/* f14c388: 24e7ffff */ addiu $a3,$a3,-1
|
||||
.L0f14c38c:
|
||||
/* f14c38c: 0fc52f4d */ jal func0f14bd34
|
||||
/* f14c390: 8fa40020 */ lw $a0,0x20($sp)
|
||||
.L0f14c394:
|
||||
/* f14c394: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
.L0f14c398:
|
||||
/* f14c398: 27bd0020 */ addiu $sp,$sp,0x20
|
||||
/* f14c39c: 03e00008 */ jr $ra
|
||||
/* f14c3a0: 00000000 */ nop
|
||||
);
|
||||
void func0f14c1cc(s32 index)
|
||||
{
|
||||
struct var8007f8dc *thing = &var8007f8dc[index];
|
||||
s32 count = func0f14f008(index);
|
||||
s32 max = count / 2 + 1;
|
||||
s32 i;
|
||||
|
||||
switch (thing->unk0f4) {
|
||||
case 0:
|
||||
pak0f1171b4(func0f14a5a4(), 0, 0);
|
||||
pak0f11d5b0(func0f14a5a4());
|
||||
thing->unk0f4 = 1;
|
||||
break;
|
||||
case 2:
|
||||
thing->unk0f4 = 3;
|
||||
break;
|
||||
case 4:
|
||||
if (thing->unk074 != thing->unk080) {
|
||||
thing->unk0dc[thing->unk074] = 0;
|
||||
thing->unk080 = thing->unk074;
|
||||
thing->unk0f4 = 5;
|
||||
|
||||
func0f14bd34(index);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
thing->unk080 = -1;
|
||||
|
||||
for (i = 0; i < max; i++) {
|
||||
s32 a = (thing->unk074 + i) % count;
|
||||
s32 b = thing->unk074 - i;
|
||||
|
||||
if (b < 0) {
|
||||
b += count;
|
||||
}
|
||||
|
||||
if (thing->unk0dc[a] == 0 && thing->unk0b6[a] != 0xff) {
|
||||
thing->unk080 = a;
|
||||
break;
|
||||
}
|
||||
|
||||
if (thing->unk0dc[b] == 0 && thing->unk0b6[b] != 0xff) {
|
||||
thing->unk080 = b;
|
||||
break;
|
||||
}
|
||||
}
|
||||
func0f14bd34(index);
|
||||
break;
|
||||
case 1:
|
||||
case 5:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func0f14c3a4(s32 index)
|
||||
{
|
||||
|
||||
@@ -70,7 +70,7 @@ u32 func0f14ec2c(void);
|
||||
u32 func0f14ecd8(void);
|
||||
u32 func0f14eeb0(void);
|
||||
u32 func0f14ef50(void);
|
||||
u32 func0f14f008(void);
|
||||
s32 func0f14f008(s32 index);
|
||||
Gfx *func0f14f07c(Gfx *gdl, s32 headorbodynum, s32 x1, s32 y1, s32 x2, s32 y2);
|
||||
u32 func0f14f4b8(void);
|
||||
u32 func0f14f4e4(void);
|
||||
|
||||
+2
-2
@@ -7496,10 +7496,10 @@ struct var8007f8dc {
|
||||
/*0x068*/ u32 unk068;
|
||||
/*0x06c*/ u32 unk06c;
|
||||
/*0x070*/ u32 unk070;
|
||||
/*0x074*/ u32 unk074;
|
||||
/*0x074*/ s32 unk074;
|
||||
/*0x078*/ u32 unk078;
|
||||
/*0x07c*/ u32 unk07c;
|
||||
/*0x080*/ u32 unk080;
|
||||
/*0x080*/ s32 unk080;
|
||||
/*0x084*/ u32 unk084;
|
||||
/*0x088*/ u32 unk088;
|
||||
/*0x08c*/ u32 unk08c;
|
||||
|
||||
Reference in New Issue
Block a user