Decompile func0f0150a0

This commit is contained in:
Ryan Dwyer 2020-12-27 13:27:36 +10:00
parent 6b8403ccf5
commit 54cb99e037
5 changed files with 52 additions and 98 deletions

View File

@ -1064,7 +1064,7 @@ u32 var8006ae00 = 0x00000000;
u32 var8006ae04 = 0x00000000;
u32 var8006ae08 = 0x00000000;
u32 var8006ae0c = 0x00000000;
u32 var8006ae10 = 0x00000000;
struct var8006ae10 *var8006ae10 = NULL;
u32 var8006ae14 = 0x00000000;
s8 var8006ae18 = 0;
s8 var8006ae1c = 0;

View File

@ -12,98 +12,18 @@
#include "lib/lib_317f0.h"
#include "types.h"
GLOBAL_ASM(
glabel func0f0150a0
/* f0150a0: 27bdffc8 */ addiu $sp,$sp,-56
/* f0150a4: afb70030 */ sw $s7,0x30($sp)
/* f0150a8: 3c178009 */ lui $s7,%hi(g_Is4Mb)
/* f0150ac: 26f70af0 */ addiu $s7,$s7,%lo(g_Is4Mb)
/* f0150b0: 92ee0000 */ lbu $t6,0x0($s7)
/* f0150b4: afb6002c */ sw $s6,0x2c($sp)
/* f0150b8: 24160001 */ addiu $s6,$zero,0x1
/* f0150bc: afb30020 */ sw $s3,0x20($sp)
/* f0150c0: afbf0034 */ sw $ra,0x34($sp)
/* f0150c4: afb50028 */ sw $s5,0x28($sp)
/* f0150c8: afb40024 */ sw $s4,0x24($sp)
/* f0150cc: afb2001c */ sw $s2,0x1c($sp)
/* f0150d0: afb10018 */ sw $s1,0x18($sp)
/* f0150d4: afb00014 */ sw $s0,0x14($sp)
/* f0150d8: 16ce0003 */ bne $s6,$t6,.L0f0150e8
/* f0150dc: 00009825 */ or $s3,$zero,$zero
/* f0150e0: 10000002 */ b .L0f0150ec
/* f0150e4: 2402001e */ addiu $v0,$zero,0x1e
.L0f0150e8:
/* f0150e8: 24020028 */ addiu $v0,$zero,0x28
.L0f0150ec:
/* f0150ec: 18400034 */ blez $v0,.L0f0151c0
/* f0150f0: 00138900 */ sll $s1,$s3,0x4
/* f0150f4: 02338823 */ subu $s1,$s1,$s3
/* f0150f8: 3c128007 */ lui $s2,%hi(var8006ae10)
/* f0150fc: 2652ae10 */ addiu $s2,$s2,%lo(var8006ae10)
/* f015100: 001188c0 */ sll $s1,$s1,0x3
/* f015104: 2415ffef */ addiu $s5,$zero,-17
/* f015108: 2414fffd */ addiu $s4,$zero,-3
/* f01510c: 8e4f0000 */ lw $t7,0x0($s2)
.L0f015110:
/* f015110: 01f18021 */ addu $s0,$t7,$s1
/* f015114: 96180030 */ lhu $t8,0x30($s0)
/* f015118: 33190010 */ andi $t9,$t8,0x10
/* f01511c: 5320000f */ beqzl $t9,.L0f01515c
/* f015120: 8e040000 */ lw $a0,0x0($s0)
/* f015124: 0c003ef1 */ jal func0000fbc4
/* f015128: 86040026 */ lh $a0,0x26($s0)
/* f01512c: 8e480000 */ lw $t0,0x0($s2)
/* f015130: 01118021 */ addu $s0,$t0,$s1
/* f015134: 96090030 */ lhu $t1,0x30($s0)
/* f015138: 01355024 */ and $t2,$t1,$s5
/* f01513c: a60a0030 */ sh $t2,0x30($s0)
/* f015140: 8e4b0000 */ lw $t3,0x0($s2)
/* f015144: 01718021 */ addu $s0,$t3,$s1
/* f015148: 960c0030 */ lhu $t4,0x30($s0)
/* f01514c: 01946824 */ and $t5,$t4,$s4
/* f015150: 10000011 */ b .L0f015198
/* f015154: a60d0030 */ sh $t5,0x30($s0)
/* f015158: 8e040000 */ lw $a0,0x0($s0)
.L0f01515c:
/* f01515c: 5080000f */ beqzl $a0,.L0f01519c
/* f015160: 92e90000 */ lbu $t1,0x0($s7)
/* f015164: 0c00cdfc */ jal audioIsPlaying
/* f015168: 00000000 */ nop
/* f01516c: 5040000b */ beqzl $v0,.L0f01519c
/* f015170: 92e90000 */ lbu $t1,0x0($s7)
/* f015174: 8e4e0000 */ lw $t6,0x0($s2)
/* f015178: 01d17821 */ addu $t7,$t6,$s1
/* f01517c: 0c00cec9 */ jal audioStop
/* f015180: 8de40000 */ lw $a0,0x0($t7)
/* f015184: 8e580000 */ lw $t8,0x0($s2)
/* f015188: 03118021 */ addu $s0,$t8,$s1
/* f01518c: 96190030 */ lhu $t9,0x30($s0)
/* f015190: 03344024 */ and $t0,$t9,$s4
/* f015194: a6080030 */ sh $t0,0x30($s0)
.L0f015198:
/* f015198: 92e90000 */ lbu $t1,0x0($s7)
.L0f01519c:
/* f01519c: 26730001 */ addiu $s3,$s3,0x1
/* f0151a0: 26310078 */ addiu $s1,$s1,0x78
/* f0151a4: 16c90003 */ bne $s6,$t1,.L0f0151b4
/* f0151a8: 24020028 */ addiu $v0,$zero,0x28
/* f0151ac: 10000001 */ b .L0f0151b4
/* f0151b0: 2402001e */ addiu $v0,$zero,0x1e
.L0f0151b4:
/* f0151b4: 0262082a */ slt $at,$s3,$v0
/* f0151b8: 5420ffd5 */ bnezl $at,.L0f015110
/* f0151bc: 8e4f0000 */ lw $t7,0x0($s2)
.L0f0151c0:
/* f0151c0: 8fbf0034 */ lw $ra,0x34($sp)
/* f0151c4: 8fb00014 */ lw $s0,0x14($sp)
/* f0151c8: 8fb10018 */ lw $s1,0x18($sp)
/* f0151cc: 8fb2001c */ lw $s2,0x1c($sp)
/* f0151d0: 8fb30020 */ lw $s3,0x20($sp)
/* f0151d4: 8fb40024 */ lw $s4,0x24($sp)
/* f0151d8: 8fb50028 */ lw $s5,0x28($sp)
/* f0151dc: 8fb6002c */ lw $s6,0x2c($sp)
/* f0151e0: 8fb70030 */ lw $s7,0x30($sp)
/* f0151e4: 03e00008 */ jr $ra
/* f0151e8: 27bd0038 */ addiu $sp,$sp,0x38
/* f0151ec: 00000000 */ nop
);
void func0f0150a0(void)
{
s32 i;
for (i = 0; i < (IS4MB() ? 30 : 40); i++) {
if (var8006ae10[i].unk30 & 0x0010) {
func0000fbc4(var8006ae10[i].unk26);
var8006ae10[i].unk30 &= ~0x0010;
var8006ae10[i].unk30 &= ~0x0002;
} else if (var8006ae10[i].audiohandle && audioIsPlaying(var8006ae10[i].audiohandle)) {
audioStop(var8006ae10[i].audiohandle);
var8006ae10[i].unk30 &= ~0x0002;
}
}
}

View File

@ -137,7 +137,7 @@ extern u32 var8006ad24;
extern u32 var8006ad8c;
extern u32 var8006ad90;
extern u32 var8006adf8;
extern u32 var8006ae10;
extern struct var8006ae10 *var8006ae10;
extern u32 var8006ae14;
extern s8 var8006ae18;
extern s8 var8006ae1c;

View File

@ -21,7 +21,7 @@ u32 func0000f49c(void);
u32 func0000f67c(void);
u32 func0000f804(void);
u32 func0000fba0(void);
u32 func0000fbc4(void);
void func0000fbc4(s16 arg0);
u32 func0000fc48(void);
u32 func0000fd74(void);
void func0000fd9c(struct var80094ed8 *arg0, u16 volume);

View File

@ -6696,4 +6696,38 @@ struct var800a45c4 {
/*0x68*/ u32 unk68;
};
struct var8006ae10 {
/*0x00*/ struct audiohandle *audiohandle;
/*0x04*/ u32 unk04;
/*0x08*/ u32 unk08;
/*0x0c*/ u32 unk0c;
/*0x10*/ u32 unk10;
/*0x14*/ u32 unk14;
/*0x18*/ u32 unk18;
/*0x1c*/ u32 unk1c;
/*0x20*/ u32 unk20;
/*0x24*/ u16 unk24;
/*0x26*/ s16 unk26;
/*0x28*/ u32 unk28;
/*0x2c*/ u32 unk2c;
/*0x30*/ u16 unk30;
/*0x34*/ u32 unk34;
/*0x38*/ u32 unk38;
/*0x3c*/ u32 unk3c;
/*0x40*/ u32 unk40;
/*0x44*/ u32 unk44;
/*0x48*/ u32 unk48;
/*0x4c*/ u32 unk4c;
/*0x50*/ u32 unk50;
/*0x54*/ u32 unk54;
/*0x58*/ u32 unk58;
/*0x5c*/ u32 unk5c;
/*0x60*/ u32 unk60;
/*0x64*/ u32 unk64;
/*0x68*/ u32 unk68;
/*0x6c*/ u32 unk6c;
/*0x70*/ u32 unk70;
/*0x74*/ u32 unk74;
};
#endif