Attempt to decompile func0f19d5f4

This commit is contained in:
Ryan Dwyer
2020-04-11 13:11:12 +10:00
parent 81ac48cd95
commit c42c86c2c5
6 changed files with 121 additions and 39 deletions
+8 -16
View File
@@ -23,22 +23,14 @@ u8 var80088804 = 0;
u8 var80088808 = 0;
u8 var8008880c = 0;
void *var80088810 = NULL;
u32 var80088814 = 0x00d600d7;
u32 var80088818 = 0x00d900d8;
u32 var8008881c = 0x00da00db;
u32 var80088820 = 0x00dc00dd;
u32 var80088824 = 0x00de00df;
u32 var80088828 = 0x00e000e1;
u32 var8008882c = 0x00e200e3;
u32 var80088830 = 0x00e400e5;
u32 var80088834 = 0x00e600e7;
u32 var80088838 = 0x00e800e9;
u32 var8008883c = 0x00ea00eb;
u32 var80088840 = 0x00f400f3;
u32 var80088844 = 0x00f200f1;
u32 var80088848 = 0x00f000ef;
u32 var8008884c = 0x00ee00ed;
u32 var80088850 = 0x00ec0000;
u16 g_FrPads[] = {
0x00d6, 0x00d7, 0x00d9, 0x00d8, 0x00da, 0x00db, 0x00dc, 0x00dd,
0x00de, 0x00df, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5,
0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00f4, 0x00f3,
0x00f2, 0x00f1, 0x00f0, 0x00ef, 0x00ee, 0x00ed, 0x00ec,
};
u32 var80088854 = 0x00000005;
u32 var80088858 = 0x00000006;
u32 var8008885c = 0x00000007;
+80 -7
View File
@@ -901,7 +901,7 @@ glabel func0f19d5f4
/* f19d5f4: 27bdff60 */ addiu $sp,$sp,-160
/* f19d5f8: afbf003c */ sw $ra,0x3c($sp)
/* f19d5fc: 3c018009 */ lui $at,%hi(var8008880c)
/* f19d600: 3c048009 */ lui $a0,%hi(var80088814)
/* f19d600: 3c048009 */ lui $a0,%hi(g_FrPads)
/* f19d604: afb50038 */ sw $s5,0x38($sp)
/* f19d608: afb40034 */ sw $s4,0x34($sp)
/* f19d60c: afb30030 */ sw $s3,0x30($sp)
@@ -911,7 +911,7 @@ glabel func0f19d5f4
/* f19d61c: f7b60018 */ sdc1 $f22,0x18($sp)
/* f19d620: f7b40010 */ sdc1 $f20,0x10($sp)
/* f19d624: a020880c */ sb $zero,%lo(var8008880c)($at)
/* f19d628: 94848814 */ lhu $a0,%lo(var80088814)($a0)
/* f19d628: 94848814 */ lhu $a0,%lo(g_FrPads)($a0)
/* f19d62c: 27a60048 */ addiu $a2,$sp,0x48
/* f19d630: 0fc456ac */ jal padUnpack
/* f19d634: 24050002 */ addiu $a1,$zero,0x2
@@ -1019,6 +1019,79 @@ glabel func0f19d5f4
/* f19d7c8: 27bd00a0 */ addiu $sp,$sp,0xa0
);
// Mismatch due to something weird with the unk465 bitfield, plus some f32
// regalloc near pad.pos.z.
//void func0f19d5f4(void)
//{
// s32 i;
// struct pad pad;
//
// var8008880c = 0;
//
// padUnpack(g_FrPads[0], PADFIELD_POS, &pad);
//
// g_FiringRangeData.unk000 = 0;
// g_FiringRangeData.goalscore = 0;
// g_FiringRangeData.timelimit = 200;
// g_FiringRangeData.ammolimit = 255;
// g_FiringRangeData.sdgrenadelimit = 255;
// g_FiringRangeData.goalaccuracy = 0;
// g_FiringRangeData.goaltargets = 255;
// g_FiringRangeData.unk00c = 1;
//
// for (i = 0; i < 18; i++) {
// g_FiringRangeData.unk010[i].unk08.x = pad.pos.x;
// g_FiringRangeData.unk010[i].unk08.y = pad.pos.y;
// g_FiringRangeData.unk010[i].unk08.z = pad.pos.z + i * 6.0f;
//
// g_FiringRangeData.unk010[i].unk00_01 = false;
// g_FiringRangeData.unk010[i].unk00_06 = false;
// g_FiringRangeData.unk010[i].unk00_03 = false;
// g_FiringRangeData.unk010[i].unk20 = 0;
// g_FiringRangeData.unk010[i].unk21 = 0;
//
// g_FiringRangeData.unk010[i].unk1c = 0;
// g_FiringRangeData.unk010[i].unk14 = 15300;
// g_FiringRangeData.unk010[i].unk18 = 0;
//
// g_FiringRangeData.unk010[i].unk00_05 = false;
// g_FiringRangeData.unk010[i].unk24 = 0;
// g_FiringRangeData.unk010[i].unk28 = 0;
// g_FiringRangeData.unk010[i].unk2c = 0;
// g_FiringRangeData.unk010[i].unk31 = 0;
// g_FiringRangeData.unk010[i].unk32 = 0;
// g_FiringRangeData.unk010[i].unk33 = 0;
// g_FiringRangeData.unk010[i].unk38 = 0;
// g_FiringRangeData.unk010[i].unk34 = -1;
//
// func0f13e40c(g_FiringRangeData.unk010[i].unk04, false);
// func0f13e40c(g_FiringRangeData.unk010[i].unk04, true);
// }
//
// g_FiringRangeData.unk465_05 = true;
// g_FiringRangeData.timetaken = -240;
// g_FiringRangeData.unk476 = -1;
// g_FiringRangeData.score = 0;
// g_FiringRangeData.unk454 = 0;
// g_FiringRangeData.targetsdestroyed = 0;
// g_FiringRangeData.unk464 = 0;
// g_FiringRangeData.unk470 = 0;
// g_FiringRangeData.unk471 = 0;
// g_FiringRangeData.unk472 = 0;
// g_FiringRangeData.failreason = 0;
// g_FiringRangeData.numshots = 0;
// g_FiringRangeData.numhitstype4 = 0;
// g_FiringRangeData.numhitstype3 = 0;
// g_FiringRangeData.numhitstype2 = 0;
// g_FiringRangeData.numhitstype1 = 0;
// g_FiringRangeData.unk466 = 0;
// g_FiringRangeData.unk467 = 0;
// g_FiringRangeData.unk468 = 0;
// g_FiringRangeData.unk46c = 0;
// g_FiringRangeData.unk474 = 0;
// g_FiringRangeData.unk465_04 = false;
//}
struct frdata *getFiringRangeData(void)
{
return &g_FiringRangeData;
@@ -1758,7 +1831,7 @@ glabel var7f1b941c
/* f19e14c: 00403825 */ or $a3,$v0,$zero
/* f19e150: 0007c040 */ sll $t8,$a3,0x1
/* f19e154: 806d0044 */ lb $t5,0x44($v1)
/* f19e158: 3c048009 */ lui $a0,%hi(var80088814)
/* f19e158: 3c048009 */ lui $a0,%hi(g_FrPads)
/* f19e15c: 8fa8004c */ lw $t0,0x4c($sp)
/* f19e160: 144d0006 */ bne $v0,$t5,.L0f19e17c
/* f19e164: 00982021 */ addu $a0,$a0,$t8
@@ -1769,7 +1842,7 @@ glabel var7f1b941c
/* f19e178: a06f0031 */ sb $t7,0x31($v1)
.L0f19e17c:
/* f19e17c: a0670044 */ sb $a3,0x44($v1)
/* f19e180: 94848814 */ lhu $a0,%lo(var80088814)($a0)
/* f19e180: 94848814 */ lhu $a0,%lo(g_FrPads)($a0)
/* f19e184: 24050002 */ addiu $a1,$zero,0x2
/* f19e188: 27a60070 */ addiu $a2,$sp,0x70
/* f19e18c: afa30058 */ sw $v1,0x58($sp)
@@ -2017,7 +2090,7 @@ glabel var7f1b9424
/* f19e4f4: a620004c */ sh $zero,0x4c($s1)
/* f19e4f8: a6400002 */ sh $zero,0x2($s2)
/* f19e4fc: 8e0e0010 */ lw $t6,0x10($s0)
/* f19e500: 3c048009 */ lui $a0,%hi(var80088814)
/* f19e500: 3c048009 */ lui $a0,%hi(g_FrPads)
/* f19e504: 000e7fc2 */ srl $t7,$t6,0x1f
/* f19e508: 51e0003b */ beqzl $t7,.L0f19e5f8
/* f19e50c: 8e2d000c */ lw $t5,0xc($s1)
@@ -2054,7 +2127,7 @@ glabel var7f1b9424
/* f19e580: 000b6040 */ sll $t4,$t3,0x1
/* f19e584: 008c2021 */ addu $a0,$a0,$t4
/* f19e588: 0fc456ac */ jal padUnpack
/* f19e58c: 94848814 */ lhu $a0,%lo(var80088814)($a0)
/* f19e58c: 94848814 */ lhu $a0,%lo(g_FrPads)($a0)
/* f19e590: 44935000 */ mtc1 $s3,$f10
/* f19e594: c7a400dc */ lwc1 $f4,0xdc($sp)
/* f19e598: c7a800e4 */ lwc1 $f8,0xe4($sp)
@@ -4907,7 +4980,7 @@ glabel func0f1a0a70
s32 frIsInTraining(void)
{
if (g_FiringRangeData.unk464 > 0 &&
(g_FiringRangeData.unk465 == 2 || g_FiringRangeData.unk465 == 3)) {
(g_FiringRangeData.unk465_00 == 2 || g_FiringRangeData.unk465_00 == 3)) {
return true;
}
+1
View File
@@ -8,6 +8,7 @@ extern u8 var80088804;
extern u8 var80088808;
extern u8 var8008880c;
extern void *var80088810;
extern u16 g_FrPads[];
extern u32 var80088854;
extern u8 var800888a0;
extern struct chrbio g_ChrBios[10];
+1 -1
View File
@@ -24,7 +24,7 @@ void func0f19d4ec(void);
void *func0f19d560(u32 len);
void frSetDifficulty(s32 difficulty);
u32 frGetDifficulty(void);
u32 func0f19d5f4(void);
void func0f19d5f4(void);
struct frdata *getFiringRangeData(void);
u32 func0f19d7d8(void);
u32 func0f19d8a4(void);
+1 -1
View File
@@ -5,7 +5,7 @@
u32 func0f13e0e0(void);
u32 func0f13e1b0(void);
u32 func0f13e40c(void);
void func0f13e40c(u32 arg0, bool arg1);
u32 func0f13e4a8(void);
u32 func0f13e5c8(void);
u32 func0f13e640(void);
+30 -14
View File
@@ -4777,19 +4777,28 @@ struct hudmessage {
struct frdata010 {
/*0x00*/ u32 unk00_01 : 1;
/*0x00*/ u32 unk00_02 : 1;
/*0x00*/ u32 unk00_03 : 1;
/*0x00*/ u32 unk00_04 : 1;
/*0x00*/ u32 unk00_05 : 1;
/*0x00*/ u32 unk00_06 : 1;
/*0x00*/ u32 unk00_07 : 1;
/*0x00*/ u32 unk00_08 : 1;
/*0x04*/ u32 unk04;
/*0x08*/ u32 unk08;
/*0x0c*/ u32 unk0c;
/*0x10*/ u32 unk10;
/*0x08*/ struct coord unk08;
/*0x14*/ u32 unk14;
/*0x18*/ u32 unk18;
/*0x1c*/ u32 unk1c;
/*0x20*/ u32 unk20;
/*0x24*/ u32 unk24;
/*0x28*/ u32 unk28;
/*0x2c*/ u32 unk2c;
/*0x30*/ u32 unk30;
/*0x34*/ u32 unk34;
/*0x1c*/ f32 unk1c;
/*0x20*/ u8 unk20;
/*0x21*/ u8 unk21;
/*0x24*/ f32 unk24;
/*0x28*/ f32 unk28;
/*0x2c*/ f32 unk2c;
/*0x30*/ u8 unk30;
/*0x31*/ u8 unk31;
/*0x32*/ u8 unk32;
/*0x33*/ u8 unk33;
/*0x34*/ s8 unk34;
/*0x38*/ u32 unk38;
};
@@ -4802,7 +4811,7 @@ struct frdata {
/*0x006*/ u8 ammolimit;
/*0x007*/ u8 sdgrenadelimit;
/*0x008*/ u8 goalaccuracy;
/*0x00c*/ u32 unk00c;
/*0x00c*/ f32 unk00c;
/*0x010*/ struct frdata010 unk010[18];
/*0x448*/ u8 difficulty;
/*0x44c*/ s32 timetaken;
@@ -4818,13 +4827,20 @@ struct frdata {
/*0x460*/ u16 numhitstype3;
/*0x462*/ u16 numhitstype4;
/*0x464*/ s8 unk464;
/*0x465*/ u8 unk465 : 3;
/*0x465*/ u8 unk465_00 : 3;
/*0x465*/ u8 unk465_03 : 1;
/*0x465*/ u8 unk465_04 : 1;
/*0x465*/ u8 unk465_05 : 1;
/*0x465*/ u8 unk465_06 : 2;
/*0x466*/ u8 unk466;
/*0x467*/ u8 unk467;
/*0x468*/ u8 unk468;
/*0x46c*/ u32 unk46c;
/*0x470*/ u32 unk470;
/*0x474*/ u32 unk474;
/*0x470*/ u8 unk470;
/*0x471*/ u8 unk471;
/*0x472*/ u8 unk472;
/*0x474*/ u16 unk474;
/*0x476*/ s16 unk476;
/*0x478*/ u32 unk478;
/*0x47c*/ u32 unk47c;
};