diff --git a/src/include/types.h b/src/include/types.h index d315779a8..fee874bc3 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -5431,7 +5431,7 @@ struct var800a2380 { /*0x278*/ u32 unk278; /*0x27c*/ u32 unk27c; /*0x280*/ u32 unk280; - /*0x284*/ u32 unk284; + /*0x284*/ s32 unk284; /*0x288*/ u32 unk288; /*0x28c*/ u32 unk28c; /*0x290*/ u32 unk290; diff --git a/src/lib/lib_13900.c b/src/lib/lib_13900.c index ad879d327..effb93094 100644 --- a/src/lib/lib_13900.c +++ b/src/lib/lib_13900.c @@ -1038,181 +1038,57 @@ s32 func000155f4(s8 index) return func000155b4(index); } +void func0001561c(void) +{ + s32 i; + + for (i = 0; i < 4; i++) { + if (var800a2380[i].unk010 == 11 && var800a2380[i].unk000 == 1) { + switch (var800a2380[i].unk004) { + case 3: + var800a2380[i].unk004 = 4; + func0004f5e0(i == 4 ? NULL : &var800a3180[i], 1); + break; + case 4: + if (var800a2380[i].unk284 != -1) { + if (var800a2380[i].unk28c == 0) { + func0004f5e0(i == 4 ? NULL : &var800a3180[i], 1); + } else if (var800a2380[i].unk284 == var800a2380[i].unk28c) { + func0004f5e0(i == 4 ? NULL : &var800a3180[i], 0); + } + + var800a2380[i].unk28c++; + + if (var800a2380[i].unk288 == var800a2380[i].unk28c) { + var800a2380[i].unk28c = 0; + } + } + + var800a2380[i].unk2b4--; + + if (var800a2380[i].unk2b4 < 0) { + var800a2380[i].unk004 = 5; + } + break; + case 5: + var800a2380[i].unk004 = 2; + func0004f5e0(i == 4 ? NULL : &var800a3180[i], 0); + break; + case 6: + func0004f5e0(i == 4 ? NULL : &var800a3180[i], 0); + var800a2380[i].unk004 = 7; + break; + case 8: + var800a2380[i].unk004 = 2; + var800a2380[i].unk2b4 = -1; + break; + } + } + } +} + GLOBAL_ASM( -glabel func0001561c -.late_rodata -glabel var700541e4 -.word 0x700156a4 -glabel var700541e8 -.word 0x700156d8 -glabel var700541ec -.word 0x700157a8 -glabel var700541f0 -.word 0x700157d8 -glabel var700541f4 -.word 0x7001581c -glabel var700541f8 -.word 0x7001580c -glabel var700541fc -.word 0x00000000 -.text -/* 1561c: 27bdffd0 */ addiu $sp,$sp,-48 -/* 15620: afb30020 */ sw $s3,0x20($sp) -/* 15624: afb00014 */ sw $s0,0x14($sp) -/* 15628: afb50028 */ sw $s5,0x28($sp) -/* 1562c: afb40024 */ sw $s4,0x24($sp) -/* 15630: afb2001c */ sw $s2,0x1c($sp) -/* 15634: afb10018 */ sw $s1,0x18($sp) -/* 15638: 3c10800a */ lui $s0,%hi(var800a2380) -/* 1563c: 3c13800a */ lui $s3,%hi(var800a3180) -/* 15640: afbf002c */ sw $ra,0x2c($sp) -/* 15644: 26733180 */ addiu $s3,$s3,%lo(var800a3180) -/* 15648: 26102380 */ addiu $s0,$s0,%lo(var800a2380) -/* 1564c: 00008825 */ or $s1,$zero,$zero -/* 15650: 24120004 */ addiu $s2,$zero,0x4 -/* 15654: 24140068 */ addiu $s4,$zero,0x68 -/* 15658: 24150002 */ addiu $s5,$zero,0x2 -.L0001565c: -/* 1565c: 8e0e0010 */ lw $t6,0x10($s0) -/* 15660: 2401000b */ addiu $at,$zero,0xb -/* 15664: 55c1006e */ bnel $t6,$at,.L00015820 -/* 15668: 26310001 */ addiu $s1,$s1,0x1 -/* 1566c: 8e0f0000 */ lw $t7,0x0($s0) -/* 15670: 24010001 */ addiu $at,$zero,0x1 -/* 15674: 55e1006a */ bnel $t7,$at,.L00015820 -/* 15678: 26310001 */ addiu $s1,$s1,0x1 -/* 1567c: 8e180004 */ lw $t8,0x4($s0) -/* 15680: 2719fffd */ addiu $t9,$t8,-3 -/* 15684: 2f210006 */ sltiu $at,$t9,0x6 -/* 15688: 10200064 */ beqz $at,.L0001581c -/* 1568c: 0019c880 */ sll $t9,$t9,0x2 -/* 15690: 3c017005 */ lui $at,%hi(var700541e4) -/* 15694: 00390821 */ addu $at,$at,$t9 -/* 15698: 8c3941e4 */ lw $t9,%lo(var700541e4)($at) -/* 1569c: 03200008 */ jr $t9 -/* 156a0: 00000000 */ nop -/* 156a4: 24080004 */ addiu $t0,$zero,0x4 -/* 156a8: 16320003 */ bne $s1,$s2,.L000156b8 -/* 156ac: ae080004 */ sw $t0,0x4($s0) -/* 156b0: 10000005 */ b .L000156c8 -/* 156b4: 00002025 */ or $a0,$zero,$zero -.L000156b8: -/* 156b8: 02340019 */ multu $s1,$s4 -/* 156bc: 00004812 */ mflo $t1 -/* 156c0: 02692021 */ addu $a0,$s3,$t1 -/* 156c4: 00000000 */ nop -.L000156c8: -/* 156c8: 0c013d78 */ jal func0004f5e0 -/* 156cc: 24050001 */ addiu $a1,$zero,0x1 -/* 156d0: 10000053 */ b .L00015820 -/* 156d4: 26310001 */ addiu $s1,$s1,0x1 -/* 156d8: 8e030284 */ lw $v1,0x284($s0) -/* 156dc: 2401ffff */ addiu $at,$zero,-1 -/* 156e0: 50610024 */ beql $v1,$at,.L00015774 -/* 156e4: 3c013f80 */ lui $at,0x3f80 -/* 156e8: 8e02028c */ lw $v0,0x28c($s0) -/* 156ec: 1440000d */ bnez $v0,.L00015724 -/* 156f0: 00000000 */ nop -/* 156f4: 16320003 */ bne $s1,$s2,.L00015704 -/* 156f8: 00000000 */ nop -/* 156fc: 10000005 */ b .L00015714 -/* 15700: 00002025 */ or $a0,$zero,$zero -.L00015704: -/* 15704: 02340019 */ multu $s1,$s4 -/* 15708: 00005012 */ mflo $t2 -/* 1570c: 026a2021 */ addu $a0,$s3,$t2 -/* 15710: 00000000 */ nop -.L00015714: -/* 15714: 0c013d78 */ jal func0004f5e0 -/* 15718: 24050001 */ addiu $a1,$zero,0x1 -/* 1571c: 1000000e */ b .L00015758 -/* 15720: 8e02028c */ lw $v0,0x28c($s0) -.L00015724: -/* 15724: 5462000d */ bnel $v1,$v0,.L0001575c -/* 15728: 8e0d0288 */ lw $t5,0x288($s0) -/* 1572c: 16320003 */ bne $s1,$s2,.L0001573c -/* 15730: 00000000 */ nop -/* 15734: 10000005 */ b .L0001574c -/* 15738: 00002025 */ or $a0,$zero,$zero -.L0001573c: -/* 1573c: 02340019 */ multu $s1,$s4 -/* 15740: 00005812 */ mflo $t3 -/* 15744: 026b2021 */ addu $a0,$s3,$t3 -/* 15748: 00000000 */ nop -.L0001574c: -/* 1574c: 0c013d78 */ jal func0004f5e0 -/* 15750: 00002825 */ or $a1,$zero,$zero -/* 15754: 8e02028c */ lw $v0,0x28c($s0) -.L00015758: -/* 15758: 8e0d0288 */ lw $t5,0x288($s0) -.L0001575c: -/* 1575c: 244c0001 */ addiu $t4,$v0,0x1 -/* 15760: ae0c028c */ sw $t4,0x28c($s0) -/* 15764: 55ac0003 */ bnel $t5,$t4,.L00015774 -/* 15768: 3c013f80 */ lui $at,0x3f80 -/* 1576c: ae00028c */ sw $zero,0x28c($s0) -/* 15770: 3c013f80 */ lui $at,0x3f80 -.L00015774: -/* 15774: 44813000 */ mtc1 $at,$f6 -/* 15778: c60402b4 */ lwc1 $f4,0x2b4($s0) -/* 1577c: 44808000 */ mtc1 $zero,$f16 -/* 15780: 240f0005 */ addiu $t7,$zero,0x5 -/* 15784: 46062201 */ sub.s $f8,$f4,$f6 -/* 15788: e60802b4 */ swc1 $f8,0x2b4($s0) -/* 1578c: c60a02b4 */ lwc1 $f10,0x2b4($s0) -/* 15790: 4610503c */ c.lt.s $f10,$f16 -/* 15794: 00000000 */ nop -/* 15798: 45020021 */ bc1fl .L00015820 -/* 1579c: 26310001 */ addiu $s1,$s1,0x1 -/* 157a0: 1000001e */ b .L0001581c -/* 157a4: ae0f0004 */ sw $t7,0x4($s0) -/* 157a8: 16320003 */ bne $s1,$s2,.L000157b8 -/* 157ac: ae150004 */ sw $s5,0x4($s0) -/* 157b0: 10000005 */ b .L000157c8 -/* 157b4: 00002025 */ or $a0,$zero,$zero -.L000157b8: -/* 157b8: 02340019 */ multu $s1,$s4 -/* 157bc: 0000c012 */ mflo $t8 -/* 157c0: 02782021 */ addu $a0,$s3,$t8 -/* 157c4: 00000000 */ nop -.L000157c8: -/* 157c8: 0c013d78 */ jal func0004f5e0 -/* 157cc: 00002825 */ or $a1,$zero,$zero -/* 157d0: 10000013 */ b .L00015820 -/* 157d4: 26310001 */ addiu $s1,$s1,0x1 -/* 157d8: 16320003 */ bne $s1,$s2,.L000157e8 -/* 157dc: 00000000 */ nop -/* 157e0: 10000005 */ b .L000157f8 -/* 157e4: 00002025 */ or $a0,$zero,$zero -.L000157e8: -/* 157e8: 02340019 */ multu $s1,$s4 -/* 157ec: 0000c812 */ mflo $t9 -/* 157f0: 02792021 */ addu $a0,$s3,$t9 -/* 157f4: 00000000 */ nop -.L000157f8: -/* 157f8: 0c013d78 */ jal func0004f5e0 -/* 157fc: 00002825 */ or $a1,$zero,$zero -/* 15800: 24080007 */ addiu $t0,$zero,0x7 -/* 15804: 10000005 */ b .L0001581c -/* 15808: ae080004 */ sw $t0,0x4($s0) -/* 1580c: 3c01bf80 */ lui $at,0xbf80 -/* 15810: 44819000 */ mtc1 $at,$f18 -/* 15814: ae150004 */ sw $s5,0x4($s0) -/* 15818: e61202b4 */ swc1 $f18,0x2b4($s0) -.L0001581c: -/* 1581c: 26310001 */ addiu $s1,$s1,0x1 -.L00015820: -/* 15820: 1632ff8e */ bne $s1,$s2,.L0001565c -/* 15824: 261002cc */ addiu $s0,$s0,0x2cc -/* 15828: 8fbf002c */ lw $ra,0x2c($sp) -/* 1582c: 8fb00014 */ lw $s0,0x14($sp) -/* 15830: 8fb10018 */ lw $s1,0x18($sp) -/* 15834: 8fb2001c */ lw $s2,0x1c($sp) -/* 15838: 8fb30020 */ lw $s3,0x20($sp) -/* 1583c: 8fb40024 */ lw $s4,0x24($sp) -/* 15840: 8fb50028 */ lw $s5,0x28($sp) -/* 15844: 03e00008 */ jr $ra -/* 15848: 27bd0030 */ addiu $sp,$sp,0x30 +glabel func0001584c /* 1584c: 00000000 */ nop /* 15850: 03e00008 */ jr $ra /* 15854: 00000000 */ nop