Decompile func0f013ba0

This commit is contained in:
Ryan Dwyer 2020-12-27 15:00:13 +10:00
parent 3cb937b1b6
commit f90be51445
5 changed files with 69 additions and 157 deletions

View File

@ -4190,58 +4190,14 @@ u32 var8007e3c0 = 0xab8d9f77;
u32 var8007e3c4 = 0x81280783;
u32 var8007e3c8 = 0x00000000;
u32 var8007e3cc = 0x00000000;
u32 var8007e3d0 = 0x00000bb8;
u32 var8007e3d4 = 0x00000078;
u32 var8007e3d8 = 0x00000bb8;
u32 var8007e3dc = 0x00000050;
u32 var8007e3e0 = 0x00000000;
u32 var8007e3e4 = 0x00000000;
u32 var8007e3e8 = 0x000001f4;
u32 var8007e3ec = 0x00000014;
u32 var8007e3f0 = 0x0000000c;
u32 var8007e3f4 = 0x00000000;
u32 var8007e3f8 = 0x00000000;
u32 var8007e3fc = 0x00000000;
u32 var8007e400 = 0x00000000;
u32 var8007e404 = 0x000005dc;
u32 var8007e408 = 0x00000028;
u32 var8007e40c = 0x000001f4;
u32 var8007e410 = 0x00000014;
u32 var8007e414 = 0x00000000;
u32 var8007e418 = 0x00000000;
u32 var8007e41c = 0x000001f4;
u32 var8007e420 = 0x00000014;
u32 var8007e424 = 0x0000000c;
u32 var8007e428 = 0x00000000;
u32 var8007e42c = 0x00000000;
u32 var8007e430 = 0x00000000;
u32 var8007e434 = 0x00000000;
u32 var8007e438 = 0x00001770;
u32 var8007e43c = 0x00000078;
u32 var8007e440 = 0x00001770;
u32 var8007e444 = 0x00000050;
u32 var8007e448 = 0x00000000;
u32 var8007e44c = 0x00000000;
u32 var8007e450 = 0x000003e8;
u32 var8007e454 = 0x00000014;
u32 var8007e458 = 0x00000004;
u32 var8007e45c = 0x00000000;
u32 var8007e460 = 0x00000000;
u32 var8007e464 = 0x00000000;
u32 var8007e468 = 0x00000000;
u32 var8007e46c = 0x000005dc;
u32 var8007e470 = 0x00000028;
u32 var8007e474 = 0x000001f4;
u32 var8007e478 = 0x00000014;
u32 var8007e47c = 0x00000000;
u32 var8007e480 = 0x00000000;
u32 var8007e484 = 0x000001f4;
u32 var8007e488 = 0x00000014;
u32 var8007e48c = 0x00000004;
u32 var8007e490 = 0x00000000;
u32 var8007e494 = 0x00000000;
u32 var8007e498 = 0x00000000;
u32 var8007e49c = 0x00000000;
struct var8007e3d0 var8007e3d0[] = {
{ 3000, 120, 3000, 80, 0, 0, 500, 20, 12, 0, 0, 0, 0 },
{ 1500, 40, 500, 20, 0, 0, 500, 20, 12, 0, 0, 0, 0 },
{ 6000, 120, 6000, 80, 0, 0, 1000, 20, 4, 0, 0, 0, 0 },
{ 1500, 40, 500, 20, 0, 0, 500, 20, 4, 0, 0, 0, 0 },
};
u32 var8007e4a0 = 0x00000000;
u32 var8007e4a4 = 0x00000000;
f32 var8007e4a8 = 1;

View File

@ -470,103 +470,35 @@ glabel func0f013b80
/* f013b9c: ac40000c */ sw $zero,0xc($v0)
);
GLOBAL_ASM(
glabel func0f013ba0
/* f013ba0: 27bdffd0 */ addiu $sp,$sp,-48
/* f013ba4: afb50028 */ sw $s5,0x28($sp)
/* f013ba8: afb40024 */ sw $s4,0x24($sp)
/* f013bac: afb2001c */ sw $s2,0x1c($sp)
/* f013bb0: 3c128008 */ lui $s2,%hi(var8007e3d0)
/* f013bb4: 3c14800a */ lui $s4,%hi(g_Vars)
/* f013bb8: 3c158008 */ lui $s5,%hi(var8007e4a0)
/* f013bbc: afbf002c */ sw $ra,0x2c($sp)
/* f013bc0: afb30020 */ sw $s3,0x20($sp)
/* f013bc4: afb10018 */ sw $s1,0x18($sp)
/* f013bc8: afb00014 */ sw $s0,0x14($sp)
/* f013bcc: 26b5e4a0 */ addiu $s5,$s5,%lo(var8007e4a0)
/* f013bd0: 26949fc0 */ addiu $s4,$s4,%lo(g_Vars)
/* f013bd4: 2652e3d0 */ addiu $s2,$s2,%lo(var8007e3d0)
.L0f013bd8:
/* f013bd8: 8e8e006c */ lw $t6,0x6c($s4)
/* f013bdc: 8e820068 */ lw $v0,0x68($s4)
/* f013be0: 8e840064 */ lw $a0,0x64($s4)
/* f013be4: 8e860070 */ lw $a2,0x70($s4)
/* f013be8: 11c00003 */ beqz $t6,.L0f013bf8
/* f013bec: 00008025 */ or $s0,$zero,$zero
/* f013bf0: 10000002 */ b .L0f013bfc
/* f013bf4: 24050001 */ addiu $a1,$zero,0x1
.L0f013bf8:
/* f013bf8: 00002825 */ or $a1,$zero,$zero
.L0f013bfc:
/* f013bfc: 10400003 */ beqz $v0,.L0f013c0c
/* f013c00: 00001825 */ or $v1,$zero,$zero
/* f013c04: 10000001 */ b .L0f013c0c
/* f013c08: 24030001 */ addiu $v1,$zero,0x1
.L0f013c0c:
/* f013c0c: 10800003 */ beqz $a0,.L0f013c1c
/* f013c10: 00001025 */ or $v0,$zero,$zero
/* f013c14: 10000002 */ b .L0f013c20
/* f013c18: 24040001 */ addiu $a0,$zero,0x1
.L0f013c1c:
/* f013c1c: 00002025 */ or $a0,$zero,$zero
.L0f013c20:
/* f013c20: 10c00003 */ beqz $a2,.L0f013c30
/* f013c24: 00000000 */ nop
/* f013c28: 10000001 */ b .L0f013c30
/* f013c2c: 24020001 */ addiu $v0,$zero,0x1
.L0f013c30:
/* f013c30: 00447821 */ addu $t7,$v0,$a0
/* f013c34: 01e3c021 */ addu $t8,$t7,$v1
/* f013c38: 0305c821 */ addu $t9,$t8,$a1
/* f013c3c: 2b210002 */ slti $at,$t9,0x2
/* f013c40: 14200004 */ bnez $at,.L0f013c54
/* f013c44: 24050004 */ addiu $a1,$zero,0x4
/* f013c48: 8e530008 */ lw $s3,0x8($s2)
/* f013c4c: 1000000a */ b .L0f013c78
/* f013c50: 8e51000c */ lw $s1,0xc($s2)
.L0f013c54:
/* f013c54: 8e8804b4 */ lw $t0,0x4b4($s4)
/* f013c58: 2901005a */ slti $at,$t0,0x5a
/* f013c5c: 54200005 */ bnezl $at,.L0f013c74
/* f013c60: 8e530000 */ lw $s3,0x0($s2)
/* f013c64: 8e530010 */ lw $s3,0x10($s2)
/* f013c68: 10000003 */ b .L0f013c78
/* f013c6c: 8e510014 */ lw $s1,0x14($s2)
/* f013c70: 8e530000 */ lw $s3,0x0($s2)
.L0f013c74:
/* f013c74: 8e510004 */ lw $s1,0x4($s2)
.L0f013c78:
/* f013c78: 1a200004 */ blez $s1,.L0f013c8c
/* f013c7c: 00000000 */ nop
/* f013c80: 0c0048f2 */ jal malloc
/* f013c84: 00112100 */ sll $a0,$s1,0x4
/* f013c88: ae420024 */ sw $v0,0x24($s2)
.L0f013c8c:
/* f013c8c: 1a200007 */ blez $s1,.L0f013cac
/* f013c90: 00001025 */ or $v0,$zero,$zero
.L0f013c94:
/* f013c94: 8e490024 */ lw $t1,0x24($s2)
/* f013c98: 26100001 */ addiu $s0,$s0,0x1
/* f013c9c: 01225021 */ addu $t2,$t1,$v0
/* f013ca0: 24420010 */ addiu $v0,$v0,0x10
/* f013ca4: 1611fffb */ bne $s0,$s1,.L0f013c94
/* f013ca8: a540000e */ sh $zero,0xe($t2)
.L0f013cac:
/* f013cac: 26520034 */ addiu $s2,$s2,0x34
/* f013cb0: ae51fffc */ sw $s1,-0x4($s2)
/* f013cb4: ae53fff4 */ sw $s3,-0xc($s2)
/* f013cb8: 1655ffc7 */ bne $s2,$s5,.L0f013bd8
/* f013cbc: ae53fff8 */ sw $s3,-0x8($s2)
/* f013cc0: 8fbf002c */ lw $ra,0x2c($sp)
/* f013cc4: 8fb00014 */ lw $s0,0x14($sp)
/* f013cc8: 8fb10018 */ lw $s1,0x18($sp)
/* f013ccc: 8fb2001c */ lw $s2,0x1c($sp)
/* f013cd0: 8fb30020 */ lw $s3,0x20($sp)
/* f013cd4: 8fb40024 */ lw $s4,0x24($sp)
/* f013cd8: 8fb50028 */ lw $s5,0x28($sp)
/* f013cdc: 03e00008 */ jr $ra
/* f013ce0: 27bd0030 */ addiu $sp,$sp,0x30
/* f013ce4: 00000000 */ nop
/* f013ce8: 00000000 */ nop
/* f013cec: 00000000 */ nop
);
void func0f013ba0(void)
{
s32 i;
s32 j;
s32 num;
s32 val;
for (i = 0; i < 4; i++) {
if (PLAYERCOUNT() >= 2) {
val = var8007e3d0[i].valifmp;
num = var8007e3d0[i].numifmp;
} else if (g_Vars.stagenum >= STAGE_TITLE) {
val = var8007e3d0[i].valifspecial;
num = var8007e3d0[i].numifspecial;
} else {
val = var8007e3d0[i].valifsp;
num = var8007e3d0[i].numifsp;
}
if (num > 0) {
var8007e3d0[i].unk24 = malloc(num * sizeof(struct var8007e3d0_data), 4);
}
for (j = 0; j < num; j++) {
var8007e3d0[i].unk24[j].unk0e = 0;
}
var8007e3d0[i].numallocated = num;
var8007e3d0[i].val1 = val;
var8007e3d0[i].val2 = val;
}
}

View File

@ -230,10 +230,10 @@ glabel func0f12939c
/* f1294f4: 03c4082a */ slt $at,$s8,$a0
/* f1294f8: 1420ffc2 */ bnez $at,.L0f129404
/* f1294fc: 26d60010 */ addiu $s6,$s6,0x10
/* f129500: 3c058008 */ lui $a1,%hi(var8007e42c)
/* f129504: 8ca5e42c */ lw $a1,%lo(var8007e42c)($a1)
/* f129508: 3c028008 */ lui $v0,%hi(var8007e430)
/* f12950c: 8c42e430 */ lw $v0,%lo(var8007e430)($v0)
/* f129500: 3c058008 */ lui $a1,%hi(var8007e3d0+0x5c)
/* f129504: 8ca5e42c */ lw $a1,%lo(var8007e3d0+0x5c)($a1)
/* f129508: 3c028008 */ lui $v0,%hi(var8007e3d0+0x60)
/* f12950c: 8c42e430 */ lw $v0,%lo(var8007e3d0+0x60)($v0)
/* f129510: 00057883 */ sra $t7,$a1,0x2
/* f129514: 01e02825 */ or $a1,$t7,$zero
.L0f129518:

View File

@ -126,7 +126,7 @@ extern u32 var8007dbe8;
extern u32 var8007dbf4;
extern u32 var8007dc00;
extern u32 var8007dc10;
extern u32 var8007e3d0;
extern struct var8007e3d0 var8007e3d0[4];
extern u32 var8007e4a0;
extern u32 var8007e4a4;
extern f32 var8007e4a8;

View File

@ -6730,4 +6730,28 @@ struct var8006ae10 {
/*0x74*/ u32 unk74;
};
struct var8007e3d0_data {
u32 unk00;
u32 unk04;
u32 unk08;
u16 unk0c;
u16 unk0e;
};
struct var8007e3d0 {
s32 valifsp;
s32 numifsp;
s32 valifmp;
s32 numifmp;
s32 valifspecial;
s32 numifspecial;
s32 unk18;
s32 unk1c;
s32 unk20;
struct var8007e3d0_data *unk24;
s32 val1;
s32 val2;
s32 numallocated;
};
#endif