From 8b4f6bfd389196a9391a6f952309ba2fa787b8e9 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 31 Oct 2020 22:28:50 +1000 Subject: [PATCH] Decompile func000153c4 --- src/include/types.h | 2 +- src/lib/lib_13900.c | 173 ++++++++------------------------------------ 2 files changed, 33 insertions(+), 142 deletions(-) diff --git a/src/include/types.h b/src/include/types.h index 193546750..d315779a8 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -5443,7 +5443,7 @@ struct var800a2380 { /*0x2a8*/ u32 unk2a8; /*0x2ac*/ u32 unk2ac; /*0x2b0*/ u32 unk2b0; - /*0x2b4*/ u32 unk2b4; + /*0x2b4*/ f32 unk2b4; /*0x2b8*/ u32 unk2b8; /*0x2bc*/ u32 unk2bc; /*0x2c0*/ u32 unk2c0; diff --git a/src/lib/lib_13900.c b/src/lib/lib_13900.c index cb7084241..ad879d327 100644 --- a/src/lib/lib_13900.c +++ b/src/lib/lib_13900.c @@ -995,147 +995,38 @@ void func000152d0(s8 playernum, s32 *arg1, s32 *arg2) *arg2 = -1; } -GLOBAL_ASM( -glabel func000153c4 -/* 153c4: 27bdffd8 */ addiu $sp,$sp,-40 -/* 153c8: 00043600 */ sll $a2,$a0,0x18 -/* 153cc: 00067603 */ sra $t6,$a2,0x18 -/* 153d0: 24010004 */ addiu $at,$zero,0x4 -/* 153d4: 01c03025 */ or $a2,$t6,$zero -/* 153d8: afbf0014 */ sw $ra,0x14($sp) -/* 153dc: afa40028 */ sw $a0,0x28($sp) -/* 153e0: 11c10070 */ beq $t6,$at,.L000155a4 -/* 153e4: afa5002c */ sw $a1,0x2c($sp) -/* 153e8: 000e7880 */ sll $t7,$t6,0x2 -/* 153ec: 01ee7823 */ subu $t7,$t7,$t6 -/* 153f0: 000f7880 */ sll $t7,$t7,0x2 -/* 153f4: 01ee7823 */ subu $t7,$t7,$t6 -/* 153f8: 000f7880 */ sll $t7,$t7,0x2 -/* 153fc: 01ee7821 */ addu $t7,$t7,$t6 -/* 15400: 000f7880 */ sll $t7,$t7,0x2 -/* 15404: 01ee7823 */ subu $t7,$t7,$t6 -/* 15408: 3c18800a */ lui $t8,%hi(var800a2380) -/* 1540c: 27182380 */ addiu $t8,$t8,%lo(var800a2380) -/* 15410: 000f7880 */ sll $t7,$t7,0x2 -/* 15414: 01f8c821 */ addu $t9,$t7,$t8 -/* 15418: afb9001c */ sw $t9,0x1c($sp) -/* 1541c: 8f220000 */ lw $v0,0x0($t9) -/* 15420: 24010002 */ addiu $at,$zero,0x2 -/* 15424: 1041005f */ beq $v0,$at,.L000155a4 -/* 15428: 24010003 */ addiu $at,$zero,0x3 -/* 1542c: 5041005e */ beql $v0,$at,.L000155a8 -/* 15430: 8fbf0014 */ lw $ra,0x14($sp) -/* 15434: 50a00005 */ beqzl $a1,.L0001544c -/* 15438: 24010004 */ addiu $at,$zero,0x4 -/* 1543c: 0c00543a */ jal func000150e8 -/* 15440: a3ae002b */ sb $t6,0x2b($sp) -/* 15444: 83a6002b */ lb $a2,0x2b($sp) -/* 15448: 24010004 */ addiu $at,$zero,0x4 -.L0001544c: -/* 1544c: 14c10003 */ bne $a2,$at,.L0001545c -/* 15450: 3c04800a */ lui $a0,%hi(var80099e78) -/* 15454: 10000009 */ b .L0001547c -/* 15458: 00003825 */ or $a3,$zero,$zero -.L0001545c: -/* 1545c: 00064880 */ sll $t1,$a2,0x2 -/* 15460: 01264823 */ subu $t1,$t1,$a2 -/* 15464: 00094880 */ sll $t1,$t1,0x2 -/* 15468: 01264821 */ addu $t1,$t1,$a2 -/* 1546c: 3c0a800a */ lui $t2,%hi(var800a3180) -/* 15470: 254a3180 */ addiu $t2,$t2,%lo(var800a3180) -/* 15474: 000948c0 */ sll $t1,$t1,0x3 -/* 15478: 012a3821 */ addu $a3,$t1,$t2 -.L0001547c: -/* 1547c: 24849e78 */ addiu $a0,$a0,%lo(var80099e78) -/* 15480: 00e02825 */ or $a1,$a3,$zero -/* 15484: 0c013e15 */ jal func0004f854 -/* 15488: a3a6002b */ sb $a2,0x2b($sp) -/* 1548c: 14400034 */ bnez $v0,.L00015560 -/* 15490: 83a6002b */ lb $a2,0x2b($sp) -/* 15494: 24010004 */ addiu $at,$zero,0x4 -/* 15498: 14c10003 */ bne $a2,$at,.L000154a8 -/* 1549c: 00002825 */ or $a1,$zero,$zero -/* 154a0: 10000009 */ b .L000154c8 -/* 154a4: 00003825 */ or $a3,$zero,$zero -.L000154a8: -/* 154a8: 00065880 */ sll $t3,$a2,0x2 -/* 154ac: 01665823 */ subu $t3,$t3,$a2 -/* 154b0: 000b5880 */ sll $t3,$t3,0x2 -/* 154b4: 01665821 */ addu $t3,$t3,$a2 -/* 154b8: 3c0c800a */ lui $t4,%hi(var800a3180) -/* 154bc: 258c3180 */ addiu $t4,$t4,%lo(var800a3180) -/* 154c0: 000b58c0 */ sll $t3,$t3,0x3 -/* 154c4: 016c3821 */ addu $a3,$t3,$t4 -.L000154c8: -/* 154c8: 00e02025 */ or $a0,$a3,$zero -/* 154cc: 0c013d78 */ jal func0004f5e0 -/* 154d0: a3a6002b */ sb $a2,0x2b($sp) -/* 154d4: 83a6002b */ lb $a2,0x2b($sp) -/* 154d8: 24010004 */ addiu $at,$zero,0x4 -/* 154dc: 00002825 */ or $a1,$zero,$zero -/* 154e0: 14c10003 */ bne $a2,$at,.L000154f0 -/* 154e4: 00066880 */ sll $t5,$a2,0x2 -/* 154e8: 10000008 */ b .L0001550c -/* 154ec: 00003825 */ or $a3,$zero,$zero -.L000154f0: -/* 154f0: 01a66823 */ subu $t5,$t5,$a2 -/* 154f4: 000d6880 */ sll $t5,$t5,0x2 -/* 154f8: 01a66821 */ addu $t5,$t5,$a2 -/* 154fc: 3c0e800a */ lui $t6,%hi(var800a3180) -/* 15500: 25ce3180 */ addiu $t6,$t6,%lo(var800a3180) -/* 15504: 000d68c0 */ sll $t5,$t5,0x3 -/* 15508: 01ae3821 */ addu $a3,$t5,$t6 -.L0001550c: -/* 1550c: 00e02025 */ or $a0,$a3,$zero -/* 15510: 0c013d78 */ jal func0004f5e0 -/* 15514: a3a6002b */ sb $a2,0x2b($sp) -/* 15518: 83a6002b */ lb $a2,0x2b($sp) -/* 1551c: 24010004 */ addiu $at,$zero,0x4 -/* 15520: 00002825 */ or $a1,$zero,$zero -/* 15524: 14c10003 */ bne $a2,$at,.L00015534 -/* 15528: 00067880 */ sll $t7,$a2,0x2 -/* 1552c: 10000008 */ b .L00015550 -/* 15530: 00003825 */ or $a3,$zero,$zero -.L00015534: -/* 15534: 01e67823 */ subu $t7,$t7,$a2 -/* 15538: 000f7880 */ sll $t7,$t7,0x2 -/* 1553c: 01e67821 */ addu $t7,$t7,$a2 -/* 15540: 3c18800a */ lui $t8,%hi(var800a3180) -/* 15544: 27183180 */ addiu $t8,$t8,%lo(var800a3180) -/* 15548: 000f78c0 */ sll $t7,$t7,0x3 -/* 1554c: 01f83821 */ addu $a3,$t7,$t8 -.L00015550: -/* 15550: 00e02025 */ or $a0,$a3,$zero -/* 15554: 0c013d78 */ jal func0004f5e0 -/* 15558: a3a6002b */ sb $a2,0x2b($sp) -/* 1555c: 83a6002b */ lb $a2,0x2b($sp) -.L00015560: -/* 15560: 8fb9002c */ lw $t9,0x2c($sp) -/* 15564: 53200004 */ beqzl $t9,.L00015578 -/* 15568: 8fa3001c */ lw $v1,0x1c($sp) -/* 1556c: 0c005451 */ jal func00015144 -/* 15570: a3a6002b */ sb $a2,0x2b($sp) -/* 15574: 8fa3001c */ lw $v1,0x1c($sp) -.L00015578: -/* 15578: 24010006 */ addiu $at,$zero,0x6 -/* 1557c: 8c620004 */ lw $v0,0x4($v1) -/* 15580: 10410004 */ beq $v0,$at,.L00015594 -/* 15584: 24010007 */ addiu $at,$zero,0x7 -/* 15588: 10410002 */ beq $v0,$at,.L00015594 -/* 1558c: 24080005 */ addiu $t0,$zero,0x5 -/* 15590: ac680004 */ sw $t0,0x4($v1) -.L00015594: -/* 15594: 3c01bf80 */ lui $at,0xbf80 -/* 15598: 44812000 */ mtc1 $at,$f4 -/* 1559c: 00000000 */ nop -/* 155a0: e46402b4 */ swc1 $f4,0x2b4($v1) -.L000155a4: -/* 155a4: 8fbf0014 */ lw $ra,0x14($sp) -.L000155a8: -/* 155a8: 27bd0028 */ addiu $sp,$sp,0x28 -/* 155ac: 03e00008 */ jr $ra -/* 155b0: 00000000 */ nop -); +void func000153c4(s8 arg0, s32 arg1) +{ + u32 stack; + + if (arg0 != 4) { + if (var800a2380[arg0].unk000 != 2 && var800a2380[arg0].unk000 != 3) { + if (arg1) { + func000150e8(); + } + + if (func0004f854(&var80099e78, arg0 == 4 ? NULL : &var800a3180[arg0], arg0) == 0) { + func0004f5e0(arg0 == 4 ? NULL : &var800a3180[arg0], 0); + func0004f5e0(arg0 == 4 ? NULL : &var800a3180[arg0], 0); + func0004f5e0(arg0 == 4 ? NULL : &var800a3180[arg0], 0); + } + + if (arg1) { + func00015144(); + } + + if (var800a2380[arg0].unk004 != 6 && var800a2380[arg0].unk004 != 7) { + var800a2380[arg0].unk004 = 5; + } + + var800a2380[arg0].unk2b4 = -1; + } + } + + if (arg0) { + // empty + } +} s32 func000155b4(s8 index) {