Decompile func0f096890

This commit is contained in:
Ryan Dwyer
2020-12-28 13:13:06 +10:00
parent a93c63c32c
commit d1666353a8
4 changed files with 62 additions and 107 deletions
+27 -65
View File
@@ -1096,71 +1096,33 @@ u32 var8006ae80 = 0x00000000;
u32 var8006ae84 = 0x00000000;
u32 var8006ae88 = 0x00000000;
u32 var8006ae8c = 0x00000000;
u32 var8006ae90 = 0x80007eba;
u32 var8006ae94 = 0x7d747c2d;
u32 var8006ae98 = 0x7ae779a0;
u32 var8006ae9c = 0x78597711;
u32 var8006aea0 = 0x75c97480;
u32 var8006aea4 = 0x733771ec;
u32 var8006aea8 = 0x70a16f55;
u32 var8006aeac = 0x6e076cb8;
u32 var8006aeb0 = 0x6b686a17;
u32 var8006aeb4 = 0x68c46770;
u32 var8006aeb8 = 0x661a64c1;
u32 var8006aebc = 0x6367620b;
u32 var8006aec0 = 0x60ad5f4c;
u32 var8006aec4 = 0x5de95c83;
u32 var8006aec8 = 0x5b1a59ae;
u32 var8006aecc = 0x583e56cb;
u32 var8006aed0 = 0x555553db;
u32 var8006aed4 = 0x525c50d9;
u32 var8006aed8 = 0x4f514dc5;
u32 var8006aedc = 0x4c324a9a;
u32 var8006aee0 = 0x48fc4757;
u32 var8006aee4 = 0x45ab43f7;
u32 var8006aee8 = 0x423a4075;
u32 var8006aeec = 0x3ea53ccb;
u32 var8006aef0 = 0x3ae538f1;
u32 var8006aef4 = 0x36ef34dc;
u32 var8006aef8 = 0x32b7307d;
u32 var8006aefc = 0x2e2b2bbd;
u32 var8006af00 = 0x292e2678;
u32 var8006af04 = 0x2391206c;
u32 var8006af08 = 0x1cf60000;
u32 var8006af0c = 0x1cf61cbb;
u32 var8006af10 = 0x1c801c45;
u32 var8006af14 = 0x1c081bcc;
u32 var8006af18 = 0x1b8f1b51;
u32 var8006af1c = 0x1b131ad4;
u32 var8006af20 = 0x1a951a55;
u32 var8006af24 = 0x1a1419d3;
u32 var8006af28 = 0x1992194f;
u32 var8006af2c = 0x190c18c9;
u32 var8006af30 = 0x1884183f;
u32 var8006af34 = 0x17f917b3;
u32 var8006af38 = 0x176b1723;
u32 var8006af3c = 0x16da1690;
u32 var8006af40 = 0x164515f9;
u32 var8006af44 = 0x15ac155e;
u32 var8006af48 = 0x150f14be;
u32 var8006af4c = 0x146d141a;
u32 var8006af50 = 0x13c61370;
u32 var8006af54 = 0x131912c1;
u32 var8006af58 = 0x1267120b;
u32 var8006af5c = 0x11ad114e;
u32 var8006af60 = 0x10ec1088;
u32 var8006af64 = 0x10220fb9;
u32 var8006af68 = 0x0f4d0ede;
u32 var8006af6c = 0x0e6c0df7;
u32 var8006af70 = 0x0d7d0d00;
u32 var8006af74 = 0x0c7d0bf4;
u32 var8006af78 = 0x0b660ad0;
u32 var8006af7c = 0x0a310989;
u32 var8006af80 = 0x08d3080e;
u32 var8006af84 = 0x0734063d;
u32 var8006af88 = 0x0518039a;
u32 var8006af8c = 0x039a031e;
u32 var8006af90 = 0x028c01cd;
u16 var8006ae90[] = {
0x8000, 0x7eba, 0x7d74, 0x7c2d, 0x7ae7, 0x79a0, 0x7859, 0x7711,
0x75c9, 0x7480, 0x7337, 0x71ec, 0x70a1, 0x6f55, 0x6e07, 0x6cb8,
0x6b68, 0x6a17, 0x68c4, 0x6770, 0x661a, 0x64c1, 0x6367, 0x620b,
0x60ad, 0x5f4c, 0x5de9, 0x5c83, 0x5b1a, 0x59ae, 0x583e, 0x56cb,
0x5555, 0x53db, 0x525c, 0x50d9, 0x4f51, 0x4dc5, 0x4c32, 0x4a9a,
0x48fc, 0x4757, 0x45ab, 0x43f7, 0x423a, 0x4075, 0x3ea5, 0x3ccb,
0x3ae5, 0x38f1, 0x36ef, 0x34dc, 0x32b7, 0x307d, 0x2e2b, 0x2bbd,
0x292e, 0x2678, 0x2391, 0x206c, 0x1cf6, 0x0000,
};
u16 var8006af0c[] = {
0x1cf6, 0x1cbb, 0x1c80, 0x1c45, 0x1c08, 0x1bcc, 0x1b8f, 0x1b51,
0x1b13, 0x1ad4, 0x1a95, 0x1a55, 0x1a14, 0x19d3, 0x1992, 0x194f,
0x190c, 0x18c9, 0x1884, 0x183f, 0x17f9, 0x17b3, 0x176b, 0x1723,
0x16da, 0x1690, 0x1645, 0x15f9, 0x15ac, 0x155e, 0x150f, 0x14be,
0x146d, 0x141a, 0x13c6, 0x1370, 0x1319, 0x12c1, 0x1267, 0x120b,
0x11ad, 0x114e, 0x10ec, 0x1088, 0x1022, 0x0fb9, 0x0f4d, 0x0ede,
0x0e6c, 0x0df7, 0x0d7d, 0x0d00, 0x0c7d, 0x0bf4, 0x0b66, 0x0ad0,
0x0a31, 0x0989, 0x08d3, 0x080e, 0x0734, 0x063d, 0x0518, 0x039a,
};
u16 var8006af8c[] = {
0x039a, 0x031e, 0x028c, 0x01cd,
};
u32 var8006af94 = 0x00000000;
u32 var8006af98 = 0x00000000;
u32 var8006af9c = 0x00000000;
+31 -38
View File
@@ -11,44 +11,37 @@
#include "gvars/gvars.h"
#include "types.h"
GLOBAL_ASM(
glabel func0f096890
/* f096890: 28817fe0 */ slti $at,$a0,0x7fe0
/* f096894: 14200006 */ bnez $at,.L0f0968b0
/* f096898: 24030007 */ addiu $v1,$zero,0x7
/* f09689c: 3c068007 */ lui $a2,%hi(var8006af8c)
/* f0968a0: 24050003 */ addiu $a1,$zero,0x3
/* f0968a4: 24c6af8c */ addiu $a2,$a2,%lo(var8006af8c)
/* f0968a8: 1000000d */ b .L0f0968e0
/* f0968ac: 24848020 */ addiu $a0,$a0,-32736
.L0f0968b0:
/* f0968b0: 28817800 */ slti $at,$a0,0x7800
/* f0968b4: 14200007 */ bnez $at,.L0f0968d4
/* f0968b8: 240301ff */ addiu $v1,$zero,0x1ff
/* f0968bc: 3c068007 */ lui $a2,%hi(var8006af0c)
/* f0968c0: 2403001f */ addiu $v1,$zero,0x1f
/* f0968c4: 24050005 */ addiu $a1,$zero,0x5
/* f0968c8: 24c6af0c */ addiu $a2,$a2,%lo(var8006af0c)
/* f0968cc: 10000004 */ b .L0f0968e0
/* f0968d0: 24848800 */ addiu $a0,$a0,-30720
.L0f0968d4:
/* f0968d4: 3c068007 */ lui $a2,%hi(var8006ae90)
/* f0968d8: 24050009 */ addiu $a1,$zero,0x9
/* f0968dc: 24c6ae90 */ addiu $a2,$a2,%lo(var8006ae90)
.L0f0968e0:
/* f0968e0: 00a47007 */ srav $t6,$a0,$a1
/* f0968e4: 000e7840 */ sll $t7,$t6,0x1
/* f0968e8: 00cf4021 */ addu $t0,$a2,$t7
/* f0968ec: 95070000 */ lhu $a3,0x0($t0)
/* f0968f0: 95090002 */ lhu $t1,0x2($t0)
/* f0968f4: 0083c824 */ and $t9,$a0,$v1
/* f0968f8: 00e9c023 */ subu $t8,$a3,$t1
/* f0968fc: 03190019 */ multu $t8,$t9
/* f096900: 00005012 */ mflo $t2
/* f096904: 00aa5807 */ srav $t3,$t2,$a1
/* f096908: 03e00008 */ jr $ra
/* f09690c: 00eb1023 */ subu $v0,$a3,$t3
);
s32 func0f096890(s32 arg0)
{
u16 *array;
s32 shiftamount;
s32 mask;
s32 index;
s32 value;
s32 nextvalue;
if (arg0 >= 32736) {
mask = 0x07;
shiftamount = 3;
array = var8006af8c;
arg0 -= 32736;
} else if (arg0 >= 30720) {
mask = 0x1f;
shiftamount = 5;
array = var8006af0c;
arg0 -= 30720;
} else {
mask = 0x1ff;
shiftamount = 9;
array = var8006ae90;
}
index = arg0 >> shiftamount;
value = array[index];
nextvalue = array[index + 1];
return value - (((value - nextvalue) * (arg0 & mask)) >> shiftamount);
}
GLOBAL_ASM(
glabel func0f096910
+3 -3
View File
@@ -149,9 +149,9 @@ extern u32 var8006ae5c;
extern s32 g_ObjectiveLastIndex;
extern bool g_ObjectiveChecksDisabled;
extern u32 var8006ae80;
extern u32 var8006ae90;
extern u32 var8006af0c;
extern u32 var8006af8c;
extern u16 var8006ae90[];
extern u16 var8006af0c[];
extern u16 var8006af8c[];
extern u32 var8006afa0;
#endif
+1 -1
View File
@@ -3,7 +3,7 @@
#include <ultra64.h>
#include "types.h"
u32 func0f096890(void);
s32 func0f096890(s32 arg0);
u32 func0f096910(s32 value);
s32 func0f096964(s32 value);