mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-08-08 18:23:19 -04:00
Decompile func0f096890
This commit is contained in:
+27
-65
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user