Decompile func0f14159c

This commit is contained in:
Ryan Dwyer 2021-02-02 23:50:13 +10:00
parent eff3b2c1ff
commit e143552eac
3 changed files with 24 additions and 105 deletions

View File

@ -109,7 +109,7 @@ void func0f013550(void)
for (i = 0; i < var8009cc44; i++) {
var800a41b0[i].unk6d = 0;
var800a41b0[i].unk6e = 0;
var800a41b0[i].unk70 = var800a41b0[i].unk70 ^ ((var800a41b0[i].unk70 >> 4) << 4);
var800a41b0[i].unk70_00 = 0;
var800a41b0[i].unk6f_00 = 0;
var800a41b0[i].unk68 = -1;
var800a41b0[i].prop = NULL;

View File

@ -3718,107 +3718,25 @@ glabel func0f141234
/* f141598: 27bd0020 */ addiu $sp,$sp,0x20
);
GLOBAL_ASM(
glabel func0f14159c
/* f14159c: 27bdffc0 */ addiu $sp,$sp,-64
/* f1415a0: 3c03800a */ lui $v1,%hi(var8009cc44)
/* f1415a4: 8c63cc44 */ lw $v1,%lo(var8009cc44)($v1)
/* f1415a8: afb30024 */ sw $s3,0x24($sp)
/* f1415ac: afb1001c */ sw $s1,0x1c($sp)
/* f1415b0: 00809825 */ or $s3,$a0,$zero
/* f1415b4: afbf003c */ sw $ra,0x3c($sp)
/* f1415b8: afbe0038 */ sw $s8,0x38($sp)
/* f1415bc: afb70034 */ sw $s7,0x34($sp)
/* f1415c0: afb60030 */ sw $s6,0x30($sp)
/* f1415c4: afb5002c */ sw $s5,0x2c($sp)
/* f1415c8: afb40028 */ sw $s4,0x28($sp)
/* f1415cc: afb20020 */ sw $s2,0x20($sp)
/* f1415d0: afb00018 */ sw $s0,0x18($sp)
/* f1415d4: 1860003f */ blez $v1,.L0f1416d4
/* f1415d8: 00008825 */ or $s1,$zero,$zero
/* f1415dc: 3c168008 */ lui $s6,%hi(var8007f75c)
/* f1415e0: 3c14800a */ lui $s4,%hi(var800a41b0)
/* f1415e4: 269441b0 */ addiu $s4,$s4,%lo(var800a41b0)
/* f1415e8: 26d6f75c */ addiu $s6,$s6,%lo(var8007f75c)
/* f1415ec: 00009025 */ or $s2,$zero,$zero
/* f1415f0: 241e0064 */ addiu $s8,$zero,0x64
/* f1415f4: 2417000c */ addiu $s7,$zero,0xc
/* f1415f8: 24150003 */ addiu $s5,$zero,0x3
.L0f1415fc:
/* f1415fc: 8e8e0000 */ lw $t6,0x0($s4)
/* f141600: 024e8021 */ addu $s0,$s2,$t6
/* f141604: 8e02005c */ lw $v0,0x5c($s0)
/* f141608: 5040002f */ beqzl $v0,.L0f1416c8
/* f14160c: 26310001 */ addiu $s1,$s1,0x1
/* f141610: 860f0068 */ lh $t7,0x68($s0)
/* f141614: 59e0002c */ blezl $t7,.L0f1416c8
/* f141618: 26310001 */ addiu $s1,$s1,0x1
/* f14161c: 5662002a */ bnel $s3,$v0,.L0f1416c8
/* f141620: 26310001 */ addiu $s1,$s1,0x1
/* f141624: 9202006a */ lbu $v0,0x6a($s0)
/* f141628: 00570019 */ multu $v0,$s7
/* f14162c: 2841000c */ slti $at,$v0,0xc
/* f141630: 0000c012 */ mflo $t8
/* f141634: 02d8c821 */ addu $t9,$s6,$t8
/* f141638: 93280008 */ lbu $t0,0x8($t9)
/* f14163c: 56a80022 */ bnel $s5,$t0,.L0f1416c8
/* f141640: 26310001 */ addiu $s1,$s1,0x1
/* f141644: 14200003 */ bnez $at,.L0f141654
/* f141648: 2841000d */ slti $at,$v0,0xd
/* f14164c: 5420000d */ bnezl $at,.L0f141684
/* f141650: 02002025 */ or $a0,$s0,$zero
.L0f141654:
/* f141654: 0c004b70 */ jal random
/* f141658: 00000000 */ nop
/* f14165c: 005e001b */ divu $zero,$v0,$s8
/* f141660: 00004810 */ mfhi $t1
/* f141664: 2d210023 */ sltiu $at,$t1,0x23
/* f141668: 17c00002 */ bnez $s8,.L0f141674
/* f14166c: 00000000 */ nop
/* f141670: 0007000d */ break 0x7
.L0f141674:
/* f141674: 3c0a800a */ lui $t2,%hi(g_Vars+0xc)
/* f141678: 10200007 */ beqz $at,.L0f141698
/* f14167c: 3c03800a */ lui $v1,%hi(var8009cc44)
/* f141680: 02002025 */ or $a0,$s0,$zero
.L0f141684:
/* f141684: 0fc4f990 */ jal func0f13e640
/* f141688: 24050078 */ addiu $a1,$zero,0x78
/* f14168c: 3c03800a */ lui $v1,%hi(var8009cc44)
/* f141690: 1000000c */ b .L0f1416c4
/* f141694: 8c63cc44 */ lw $v1,%lo(var8009cc44)($v1)
.L0f141698:
/* f141698: 8e020070 */ lw $v0,0x70($s0)
/* f14169c: 8d4a9fcc */ lw $t2,%lo(g_Vars+0xc)($t2)
/* f1416a0: 3c010fff */ lui $at,0xfff
/* f1416a4: 3421ffff */ ori $at,$at,0xffff
/* f1416a8: 00026102 */ srl $t4,$v0,0x4
/* f1416ac: 01415824 */ and $t3,$t2,$at
/* f1416b0: 016c6826 */ xor $t5,$t3,$t4
/* f1416b4: 000d7100 */ sll $t6,$t5,0x4
/* f1416b8: 01c27826 */ xor $t7,$t6,$v0
/* f1416bc: ae0f0070 */ sw $t7,0x70($s0)
/* f1416c0: 8c63cc44 */ lw $v1,%lo(var8009cc44)($v1)
.L0f1416c4:
/* f1416c4: 26310001 */ addiu $s1,$s1,0x1
.L0f1416c8:
/* f1416c8: 0223082a */ slt $at,$s1,$v1
/* f1416cc: 1420ffcb */ bnez $at,.L0f1415fc
/* f1416d0: 2652007c */ addiu $s2,$s2,0x7c
.L0f1416d4:
/* f1416d4: 8fbf003c */ lw $ra,0x3c($sp)
/* f1416d8: 8fb00018 */ lw $s0,0x18($sp)
/* f1416dc: 8fb1001c */ lw $s1,0x1c($sp)
/* f1416e0: 8fb20020 */ lw $s2,0x20($sp)
/* f1416e4: 8fb30024 */ lw $s3,0x24($sp)
/* f1416e8: 8fb40028 */ lw $s4,0x28($sp)
/* f1416ec: 8fb5002c */ lw $s5,0x2c($sp)
/* f1416f0: 8fb60030 */ lw $s6,0x30($sp)
/* f1416f4: 8fb70034 */ lw $s7,0x34($sp)
/* f1416f8: 8fbe0038 */ lw $s8,0x38($sp)
/* f1416fc: 03e00008 */ jr $ra
/* f141700: 27bd0040 */ addiu $sp,$sp,0x40
);
void func0f14159c(struct prop *prop)
{
s32 i;
for (i = 0; i < var8009cc44; i++) {
struct var800a41b0 *thing = &var800a41b0[i];
if (thing->prop
&& thing->unk68 > 0
&& thing->prop == prop
&& var8007f75c[thing->unk6a].unk08 == 3) {
if ((thing->unk6a >= 0xc && thing->unk6a <= 0xc) || (random() % 100) < 35) {
func0f13e640(thing, 120);
} else {
thing->unk70_00 = g_Vars.lvframenum;
}
}
}
}
/**
* Find a splat and free it, I think.
@ -3839,8 +3757,8 @@ void func0f141704(struct prop *prop)
&& var8007f75c[thing->unk6a].unk08 == 3
&& thing->unk6a > 0xb
&& thing->unk6a < 0xd
&& thing->unk70 >> 4 < bestvalue) {
bestvalue = thing->unk70 >> 4;
&& thing->unk70_00 < bestvalue) {
bestvalue = thing->unk70_00;
index = i;
}
}

View File

@ -6804,7 +6804,8 @@ struct var800a41b0 {
/*0x6f*/ u8 unk6f_01 : 1;
/*0x6f*/ u8 unk6f_02 : 1;
/*0x6f*/ u8 unk6f_03 : 1;
/*0x70*/ u32 unk70;
/*0x70*/ u32 unk70_00 : 28;
/*0x70*/ u32 unk70_28 : 4;
/*0x74*/ struct var800a41b0 *prev;
/*0x78*/ u32 unk78;
};