Decompile func0f14a06c

This commit is contained in:
Ryan Dwyer 2021-09-28 18:42:19 +10:00
parent fcc66cbb7f
commit 6112fc01ad
3 changed files with 386 additions and 81 deletions

View File

@ -19,7 +19,7 @@
#include "data.h"
#include "types.h"
u32 var800a45a0;
struct var800a45a0 *var800a45a0;
u32 var800a45a4;
u32 var800a45a8;
u32 var800a45ac;
@ -373,7 +373,7 @@ u32 var8007f8d0 = (u32)&var7f1b6088;
u32 var8007f8d4 = (u32)&var7f1b6090;
u32 var8007f8d8 = (u32)&var7f1b6098;
u32 var8007f8dc = 0x00000000;
u32 var8007f8e0 = 0x00000000;
struct var8007f8e0 *var8007f8e0 = NULL;
u32 var8007f8e4 = 0x00000000;
u32 var8007f8e8 = 0x00000008;
u32 var8007f8ec = 0x0000005a;
@ -761,78 +761,30 @@ glabel func0f14a00c
/* f14a068: 00000000 */ nop
);
GLOBAL_ASM(
glabel func0f14a06c
/* f14a06c: 2401ffff */ addiu $at,$zero,-1
/* f14a070: 14810008 */ bne $a0,$at,.L0f14a094
/* f14a074: 3c0e800a */ lui $t6,%hi(var800a45a0)
/* f14a078: 8dce45a0 */ lw $t6,%lo(var800a45a0)($t6)
/* f14a07c: 3c198008 */ lui $t9,%hi(var8007f8e0)
/* f14a080: 8f39f8e0 */ lw $t9,%lo(var8007f8e0)($t9)
/* f14a084: 8dcf016c */ lw $t7,0x16c($t6)
/* f14a088: 000fc280 */ sll $t8,$t7,0xa
/* f14a08c: 03e00008 */ jr $ra
/* f14a090: 03191021 */ addu $v0,$t8,$t9
.L0f14a094:
/* f14a094: 2401fffc */ addiu $at,$zero,-4
/* f14a098: 14810008 */ bne $a0,$at,.L0f14a0bc
/* f14a09c: 3c08800a */ lui $t0,%hi(var800a45a0)
/* f14a0a0: 8d0845a0 */ lw $t0,%lo(var800a45a0)($t0)
/* f14a0a4: 3c0b8008 */ lui $t3,%hi(var8007f8e0)
/* f14a0a8: 8d6bf8e0 */ lw $t3,%lo(var8007f8e0)($t3)
/* f14a0ac: 8d090174 */ lw $t1,0x174($t0)
/* f14a0b0: 00095280 */ sll $t2,$t1,0xa
/* f14a0b4: 03e00008 */ jr $ra
/* f14a0b8: 014b1021 */ addu $v0,$t2,$t3
.L0f14a0bc:
/* f14a0bc: 2401fffb */ addiu $at,$zero,-5
/* f14a0c0: 14810008 */ bne $a0,$at,.L0f14a0e4
/* f14a0c4: 3c0c800a */ lui $t4,%hi(var800a45a0)
/* f14a0c8: 8d8c45a0 */ lw $t4,%lo(var800a45a0)($t4)
/* f14a0cc: 3c0f8008 */ lui $t7,%hi(var8007f8e0)
/* f14a0d0: 8deff8e0 */ lw $t7,%lo(var8007f8e0)($t7)
/* f14a0d4: 8d8d0178 */ lw $t5,0x178($t4)
/* f14a0d8: 000d7280 */ sll $t6,$t5,0xa
/* f14a0dc: 03e00008 */ jr $ra
/* f14a0e0: 01cf1021 */ addu $v0,$t6,$t7
.L0f14a0e4:
/* f14a0e4: 2401fffe */ addiu $at,$zero,-2
/* f14a0e8: 1481000b */ bne $a0,$at,.L0f14a118
/* f14a0ec: 3c03800a */ lui $v1,%hi(var800a45a0)
/* f14a0f0: 8c6345a0 */ lw $v1,%lo(var800a45a0)($v1)
/* f14a0f4: 3c0b8008 */ lui $t3,%hi(var8007f8e0)
/* f14a0f8: 8d6bf8e0 */ lw $t3,%lo(var8007f8e0)($t3)
/* f14a0fc: 8c780004 */ lw $t8,0x4($v1)
/* f14a100: 0018c880 */ sll $t9,$t8,0x2
/* f14a104: 00794021 */ addu $t0,$v1,$t9
/* f14a108: 8d090014 */ lw $t1,0x14($t0)
/* f14a10c: 00095280 */ sll $t2,$t1,0xa
/* f14a110: 03e00008 */ jr $ra
/* f14a114: 014b1021 */ addu $v0,$t2,$t3
.L0f14a118:
/* f14a118: 2401fffd */ addiu $at,$zero,-3
/* f14a11c: 14810009 */ bne $a0,$at,.L0f14a144
/* f14a120: 3c18800a */ lui $t8,%hi(var800a45a0)
/* f14a124: 3c0c800a */ lui $t4,%hi(var800a45a0)
/* f14a128: 8d8c45a0 */ lw $t4,%lo(var800a45a0)($t4)
/* f14a12c: 3c0f8008 */ lui $t7,%hi(var8007f8e0)
/* f14a130: 8deff8e0 */ lw $t7,%lo(var8007f8e0)($t7)
/* f14a134: 8d8d0170 */ lw $t5,0x170($t4)
/* f14a138: 000d7280 */ sll $t6,$t5,0xa
/* f14a13c: 03e00008 */ jr $ra
/* f14a140: 01cf1021 */ addu $v0,$t6,$t7
.L0f14a144:
/* f14a144: 8f1845a0 */ lw $t8,%lo(var800a45a0)($t8)
/* f14a148: 0004c880 */ sll $t9,$a0,0x2
/* f14a14c: 3c0b8008 */ lui $t3,%hi(var8007f8e0)
/* f14a150: 03194021 */ addu $t0,$t8,$t9
/* f14a154: 8d090014 */ lw $t1,0x14($t0)
/* f14a158: 8d6bf8e0 */ lw $t3,%lo(var8007f8e0)($t3)
/* f14a15c: 00095280 */ sll $t2,$t1,0xa
/* f14a160: 014b1021 */ addu $v0,$t2,$t3
/* f14a164: 03e00008 */ jr $ra
/* f14a168: 00000000 */ nop
);
struct var8007f8e0 *func0f14a06c(s32 index)
{
if (index == -1) {
return &var8007f8e0[var800a45a0->unk16c];
}
if (index == -4) {
return &var8007f8e0[var800a45a0->unk174];
}
if (index == -5) {
return &var8007f8e0[var800a45a0->unk178];
}
if (index == -2) {
return &var8007f8e0[var800a45a0->unk014[var800a45a0->unk004]];
}
if (index == -3) {
return &var8007f8e0[var800a45a0->unk170];
}
return &var8007f8e0[var800a45a0->unk014[index]];
}
GLOBAL_ASM(
glabel func0f14a16c
@ -8235,16 +8187,16 @@ glabel func0f15015c
void phGetGuid(s32 index, struct fileguid *guid)
{
u8 *ptr = func0f14a06c(index);
struct var8007f8e0 *thing = func0f14a06c(index);
guid->fileid = *(s32 *) &ptr[0x3f8];
guid->deviceserial = *(u16 *) &ptr[0x3fc];
guid->fileid = thing->fileguid.fileid;
guid->deviceserial = thing->fileguid.deviceserial;
}
void phSetFileId(s32 fileid)
{
u8 *ptr = func0f14a06c(-1);
struct var8007f8e0 *thing = func0f14a06c(-1);
*(u16 *) &ptr[0x3fc] = 0;
*(s32 *) &ptr[0x3f8] = fileid;
thing->fileguid.deviceserial = 0;
thing->fileguid.fileid = fileid;
}

View File

@ -8,7 +8,7 @@ u32 func0f149c90(void);
u32 func0f149d58(void);
u32 func0f149e58(void);
u32 func0f14a00c(void);
void *func0f14a06c(s32 index);
struct var8007f8e0 *func0f14a06c(s32 index);
u32 func0f14a16c(void);
u32 func0f14a1cc(void);
u32 func0f14a1ec(void);

View File

@ -7125,4 +7125,357 @@ struct shotdata {
/*0x3c*/ struct hit hits[10];
};
struct var800a45a0 {
/*0x000*/ u32 unk000;
/*0x004*/ u32 unk004;
/*0x008*/ u32 unk008;
/*0x00c*/ u32 unk00c;
/*0x010*/ u32 unk010;
/*0x014*/ u32 unk014[4];
/*0x024*/ u32 unk024;
/*0x028*/ u32 unk028;
/*0x02c*/ u32 unk02c;
/*0x030*/ u32 unk030;
/*0x034*/ u32 unk034;
/*0x038*/ u32 unk038;
/*0x03c*/ u32 unk03c;
/*0x040*/ u32 unk040;
/*0x044*/ u32 unk044;
/*0x048*/ u32 unk048;
/*0x04c*/ u32 unk04c;
/*0x050*/ u32 unk050;
/*0x054*/ u32 unk054;
/*0x058*/ u32 unk058;
/*0x05c*/ u32 unk05c;
/*0x060*/ u32 unk060;
/*0x064*/ u32 unk064;
/*0x068*/ u32 unk068;
/*0x06c*/ u32 unk06c;
/*0x070*/ u32 unk070;
/*0x074*/ u32 unk074;
/*0x078*/ u32 unk078;
/*0x07c*/ u32 unk07c;
/*0x080*/ u32 unk080;
/*0x084*/ u32 unk084;
/*0x088*/ u32 unk088;
/*0x08c*/ u32 unk08c;
/*0x090*/ u32 unk090;
/*0x094*/ u32 unk094;
/*0x098*/ u32 unk098;
/*0x09c*/ u32 unk09c;
/*0x0a0*/ u32 unk0a0;
/*0x0a4*/ u32 unk0a4;
/*0x0a8*/ u32 unk0a8;
/*0x0ac*/ u32 unk0ac;
/*0x0b0*/ u32 unk0b0;
/*0x0b4*/ u32 unk0b4;
/*0x0b8*/ u32 unk0b8;
/*0x0bc*/ u32 unk0bc;
/*0x0c0*/ u32 unk0c0;
/*0x0c4*/ u32 unk0c4;
/*0x0c8*/ u32 unk0c8;
/*0x0cc*/ u32 unk0cc;
/*0x0d0*/ u32 unk0d0;
/*0x0d4*/ u32 unk0d4;
/*0x0d8*/ u32 unk0d8;
/*0x0dc*/ u32 unk0dc;
/*0x0e0*/ u32 unk0e0;
/*0x0e4*/ u32 unk0e4;
/*0x0e8*/ u32 unk0e8;
/*0x0ec*/ u32 unk0ec;
/*0x0f0*/ u32 unk0f0;
/*0x0f4*/ u32 unk0f4;
/*0x0f8*/ u32 unk0f8;
/*0x0fc*/ u32 unk0fc;
/*0x100*/ u32 unk100;
/*0x104*/ u32 unk104;
/*0x108*/ u32 unk108;
/*0x10c*/ u32 unk10c;
/*0x110*/ u32 unk110;
/*0x114*/ u32 unk114;
/*0x118*/ u32 unk118;
/*0x11c*/ u32 unk11c;
/*0x120*/ u32 unk120;
/*0x124*/ u32 unk124;
/*0x128*/ u32 unk128;
/*0x12c*/ u32 unk12c;
/*0x130*/ u32 unk130;
/*0x134*/ u32 unk134;
/*0x138*/ u32 unk138;
/*0x13c*/ u32 unk13c;
/*0x140*/ u32 unk140;
/*0x144*/ u32 unk144;
/*0x148*/ u32 unk148;
/*0x14c*/ u32 unk14c;
/*0x150*/ u32 unk150;
/*0x154*/ u32 unk154;
/*0x158*/ u32 unk158;
/*0x15c*/ u32 unk15c;
/*0x160*/ u32 unk160;
/*0x164*/ u32 unk164;
/*0x168*/ u32 unk168;
/*0x16c*/ u32 unk16c;
/*0x170*/ u32 unk170;
/*0x174*/ u32 unk174;
/*0x178*/ u32 unk178;
};
struct var8007f8e0 { // perfect head?
/*0x000*/ u32 unk000;
/*0x004*/ u32 unk004;
/*0x008*/ u32 unk008;
/*0x00c*/ u32 unk00c;
/*0x010*/ u32 unk010;
/*0x014*/ u32 unk014;
/*0x018*/ u32 unk018;
/*0x01c*/ u32 unk01c;
/*0x020*/ u32 unk020;
/*0x024*/ u32 unk024;
/*0x028*/ u32 unk028;
/*0x02c*/ u32 unk02c;
/*0x030*/ u32 unk030;
/*0x034*/ u32 unk034;
/*0x038*/ u32 unk038;
/*0x03c*/ u32 unk03c;
/*0x040*/ u32 unk040;
/*0x044*/ u32 unk044;
/*0x048*/ u32 unk048;
/*0x04c*/ u32 unk04c;
/*0x050*/ u32 unk050;
/*0x054*/ u32 unk054;
/*0x058*/ u32 unk058;
/*0x05c*/ u32 unk05c;
/*0x060*/ u32 unk060;
/*0x064*/ u32 unk064;
/*0x068*/ u32 unk068;
/*0x06c*/ u32 unk06c;
/*0x070*/ u32 unk070;
/*0x074*/ u32 unk074;
/*0x078*/ u32 unk078;
/*0x07c*/ u32 unk07c;
/*0x080*/ u32 unk080;
/*0x084*/ u32 unk084;
/*0x088*/ u32 unk088;
/*0x08c*/ u32 unk08c;
/*0x090*/ u32 unk090;
/*0x094*/ u32 unk094;
/*0x098*/ u32 unk098;
/*0x09c*/ u32 unk09c;
/*0x0a0*/ u32 unk0a0;
/*0x0a4*/ u32 unk0a4;
/*0x0a8*/ u32 unk0a8;
/*0x0ac*/ u32 unk0ac;
/*0x0b0*/ u32 unk0b0;
/*0x0b4*/ u32 unk0b4;
/*0x0b8*/ u32 unk0b8;
/*0x0bc*/ u32 unk0bc;
/*0x0c0*/ u32 unk0c0;
/*0x0c4*/ u32 unk0c4;
/*0x0c8*/ u32 unk0c8;
/*0x0cc*/ u32 unk0cc;
/*0x0d0*/ u32 unk0d0;
/*0x0d4*/ u32 unk0d4;
/*0x0d8*/ u32 unk0d8;
/*0x0dc*/ u32 unk0dc;
/*0x0e0*/ u32 unk0e0;
/*0x0e4*/ u32 unk0e4;
/*0x0e8*/ u32 unk0e8;
/*0x0ec*/ u32 unk0ec;
/*0x0f0*/ u32 unk0f0;
/*0x0f4*/ u32 unk0f4;
/*0x0f8*/ u32 unk0f8;
/*0x0fc*/ u32 unk0fc;
/*0x100*/ u32 unk100;
/*0x104*/ u32 unk104;
/*0x108*/ u32 unk108;
/*0x10c*/ u32 unk10c;
/*0x110*/ u32 unk110;
/*0x114*/ u32 unk114;
/*0x118*/ u32 unk118;
/*0x11c*/ u32 unk11c;
/*0x120*/ u32 unk120;
/*0x124*/ u32 unk124;
/*0x128*/ u32 unk128;
/*0x12c*/ u32 unk12c;
/*0x130*/ u32 unk130;
/*0x134*/ u32 unk134;
/*0x138*/ u32 unk138;
/*0x13c*/ u32 unk13c;
/*0x140*/ u32 unk140;
/*0x144*/ u32 unk144;
/*0x148*/ u32 unk148;
/*0x14c*/ u32 unk14c;
/*0x150*/ u32 unk150;
/*0x154*/ u32 unk154;
/*0x158*/ u32 unk158;
/*0x15c*/ u32 unk15c;
/*0x160*/ u32 unk160;
/*0x164*/ u32 unk164;
/*0x168*/ u32 unk168;
/*0x16c*/ u32 unk16c;
/*0x170*/ u32 unk170;
/*0x174*/ u32 unk174;
/*0x178*/ u32 unk178;
/*0x17c*/ u32 unk17c;
/*0x180*/ u32 unk180;
/*0x184*/ u32 unk184;
/*0x188*/ u32 unk188;
/*0x18c*/ u32 unk18c;
/*0x190*/ u32 unk190;
/*0x194*/ u32 unk194;
/*0x198*/ u32 unk198;
/*0x19c*/ u32 unk19c;
/*0x1a0*/ u32 unk1a0;
/*0x1a4*/ u32 unk1a4;
/*0x1a8*/ u32 unk1a8;
/*0x1ac*/ u32 unk1ac;
/*0x1b0*/ u32 unk1b0;
/*0x1b4*/ u32 unk1b4;
/*0x1b8*/ u32 unk1b8;
/*0x1bc*/ u32 unk1bc;
/*0x1c0*/ u32 unk1c0;
/*0x1c4*/ u32 unk1c4;
/*0x1c8*/ u32 unk1c8;
/*0x1cc*/ u32 unk1cc;
/*0x1d0*/ u32 unk1d0;
/*0x1d4*/ u32 unk1d4;
/*0x1d8*/ u32 unk1d8;
/*0x1dc*/ u32 unk1dc;
/*0x1e0*/ u32 unk1e0;
/*0x1e4*/ u32 unk1e4;
/*0x1e8*/ u32 unk1e8;
/*0x1ec*/ u32 unk1ec;
/*0x1f0*/ u32 unk1f0;
/*0x1f4*/ u32 unk1f4;
/*0x1f8*/ u32 unk1f8;
/*0x1fc*/ u32 unk1fc;
/*0x200*/ u32 unk200;
/*0x204*/ u32 unk204;
/*0x208*/ u32 unk208;
/*0x20c*/ u32 unk20c;
/*0x210*/ u32 unk210;
/*0x214*/ u32 unk214;
/*0x218*/ u32 unk218;
/*0x21c*/ u32 unk21c;
/*0x220*/ u32 unk220;
/*0x224*/ u32 unk224;
/*0x228*/ u32 unk228;
/*0x22c*/ u32 unk22c;
/*0x230*/ u32 unk230;
/*0x234*/ u32 unk234;
/*0x238*/ u32 unk238;
/*0x23c*/ u32 unk23c;
/*0x240*/ u32 unk240;
/*0x244*/ u32 unk244;
/*0x248*/ u32 unk248;
/*0x24c*/ u32 unk24c;
/*0x250*/ u32 unk250;
/*0x254*/ u32 unk254;
/*0x258*/ u32 unk258;
/*0x25c*/ u32 unk25c;
/*0x260*/ u32 unk260;
/*0x264*/ u32 unk264;
/*0x268*/ u32 unk268;
/*0x26c*/ u32 unk26c;
/*0x270*/ u32 unk270;
/*0x274*/ u32 unk274;
/*0x278*/ u32 unk278;
/*0x27c*/ u32 unk27c;
/*0x280*/ u32 unk280;
/*0x284*/ u32 unk284;
/*0x288*/ u32 unk288;
/*0x28c*/ u32 unk28c;
/*0x290*/ u32 unk290;
/*0x294*/ u32 unk294;
/*0x298*/ u32 unk298;
/*0x29c*/ u32 unk29c;
/*0x2a0*/ u32 unk2a0;
/*0x2a4*/ u32 unk2a4;
/*0x2a8*/ u32 unk2a8;
/*0x2ac*/ u32 unk2ac;
/*0x2b0*/ u32 unk2b0;
/*0x2b4*/ u32 unk2b4;
/*0x2b8*/ u32 unk2b8;
/*0x2bc*/ u32 unk2bc;
/*0x2c0*/ u32 unk2c0;
/*0x2c4*/ u32 unk2c4;
/*0x2c8*/ u32 unk2c8;
/*0x2cc*/ u32 unk2cc;
/*0x2d0*/ u32 unk2d0;
/*0x2d4*/ u32 unk2d4;
/*0x2d8*/ u32 unk2d8;
/*0x2dc*/ u32 unk2dc;
/*0x2e0*/ u32 unk2e0;
/*0x2e4*/ u32 unk2e4;
/*0x2e8*/ u32 unk2e8;
/*0x2ec*/ u32 unk2ec;
/*0x2f0*/ u32 unk2f0;
/*0x2f4*/ u32 unk2f4;
/*0x2f8*/ u32 unk2f8;
/*0x2fc*/ u32 unk2fc;
/*0x300*/ u32 unk300;
/*0x304*/ u32 unk304;
/*0x308*/ u32 unk308;
/*0x30c*/ u32 unk30c;
/*0x310*/ u32 unk310;
/*0x314*/ u32 unk314;
/*0x318*/ u32 unk318;
/*0x31c*/ u32 unk31c;
/*0x320*/ u32 unk320;
/*0x324*/ u32 unk324;
/*0x328*/ u32 unk328;
/*0x32c*/ u32 unk32c;
/*0x330*/ u32 unk330;
/*0x334*/ u32 unk334;
/*0x338*/ u32 unk338;
/*0x33c*/ u32 unk33c;
/*0x340*/ u32 unk340;
/*0x344*/ u32 unk344;
/*0x348*/ u32 unk348;
/*0x34c*/ u32 unk34c;
/*0x350*/ u32 unk350;
/*0x354*/ u32 unk354;
/*0x358*/ u32 unk358;
/*0x35c*/ u32 unk35c;
/*0x360*/ u32 unk360;
/*0x364*/ u32 unk364;
/*0x368*/ u32 unk368;
/*0x36c*/ u32 unk36c;
/*0x370*/ u32 unk370;
/*0x374*/ u32 unk374;
/*0x378*/ u32 unk378;
/*0x37c*/ u32 unk37c;
/*0x380*/ u32 unk380;
/*0x384*/ u32 unk384;
/*0x388*/ u32 unk388;
/*0x38c*/ u32 unk38c;
/*0x390*/ u32 unk390;
/*0x394*/ u32 unk394;
/*0x398*/ u32 unk398;
/*0x39c*/ u32 unk39c;
/*0x3a0*/ u32 unk3a0;
/*0x3a4*/ u32 unk3a4;
/*0x3a8*/ u32 unk3a8;
/*0x3ac*/ u32 unk3ac;
/*0x3b0*/ u32 unk3b0;
/*0x3b4*/ u32 unk3b4;
/*0x3b8*/ u32 unk3b8;
/*0x3bc*/ u32 unk3bc;
/*0x3c0*/ u32 unk3c0;
/*0x3c4*/ u32 unk3c4;
/*0x3c8*/ u32 unk3c8;
/*0x3cc*/ u32 unk3cc;
/*0x3d0*/ u32 unk3d0;
/*0x3d4*/ u32 unk3d4;
/*0x3d8*/ u32 unk3d8;
/*0x3dc*/ u32 unk3dc;
/*0x3e0*/ u32 unk3e0;
/*0x3e4*/ u32 unk3e4;
/*0x3e8*/ u32 unk3e8;
/*0x3ec*/ u32 unk3ec;
/*0x3f0*/ u32 unk3f0;
/*0x3f4*/ u32 unk3f4;
/*0x3f8*/ struct fileguid fileguid;
};
#endif