Some 43F0 funcs (#286)

* Some 43F0 funcs

* Small cleanup

* PR

Co-authored-by: Ethan Roseman <ethteck@gmail.com>
This commit is contained in:
Maide 2021-04-29 18:31:16 +01:00 committed by GitHub
parent 0ec2010b9b
commit 24db21f97c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 195 additions and 749 deletions

View File

@ -85,9 +85,9 @@ typedef struct PartnerData {
} PartnerData; // size = 0x08 } PartnerData; // size = 0x08
typedef struct HeapNode { typedef struct HeapNode {
/* 0x00 */ UNK_PTR next; /* 0x00 */ struct HeapNode* next;
/* 0x04 */ s32 length; /* 0x04 */ s32 length;
/* 0x08 */ s16 allocated; /* 0x08 */ u16 allocated;
/* 0x0A */ s16 entryID; /* 0x0A */ s16 entryID;
/* 0x0C */ s32 capacity; /* 0x0C */ s32 capacity;
} HeapNode; // size = 0x10 } HeapNode; // size = 0x10

View File

@ -40,8 +40,9 @@
#define MAX_ITEM_ENTITIES 256 #define MAX_ITEM_ENTITIES 256
// Alternative to libultra's M_PI: non-float version; more digits cause issues // Alternative to libultra's M_PI: non-float version; more digits cause issues
#define PI 3.141592f #define PI 3.141592f
#define TAU 6.28318f #define PI_D 3.141592
#define TAU 6.28318f
#define SPRITE_WORLD_SCALE 0.71428573f #define SPRITE_WORLD_SCALE 0.71428573f
@ -63,6 +64,8 @@
} }
#define SQ(x) (x*x) #define SQ(x) (x*x)
#define CUBE(x) (x*x*x)
#define QUART(x) (x*x*x*x)
// Fixed-point short literal // Fixed-point short literal
#define F16(f) (s16)(f * 327.67f) #define F16(f) (s16)(f * 327.67f)

View File

@ -14,9 +14,11 @@ f32 D_80074274[] = {
0.984808f, 0.987688f, 0.990268f, 0.992546f, 0.994522f, 0.996195f, 0.997564f, 0.99863f, 0.999391f, 0.999848f, 1.0f 0.984808f, 0.987688f, 0.990268f, 0.992546f, 0.994522f, 0.996195f, 0.997564f, 0.99863f, 0.999391f, 0.999848f, 1.0f
}; };
s8 D_800743E0[] = { u8 D_800743E0[] = {
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x00, 0x00, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
}; };
@ -110,7 +112,52 @@ s32 sign(s32 val) {
return sign; return sign;
} }
INCLUDE_ASM(s32, "43F0", int_to_string); // D_800743E0 index needs to add the upper 32 bits from func_8006DDC0 ret
#ifdef NON_MATCHING
typedef struct {
u8 unk_00[39];
u8 unk_39;
} Unk_struct_43F0;
u32 func_8006DDC0(s64 arg0, s64 arg1);
u64 func_8006D800(s64 arg0, s64 arg1);
char *int_to_string(s32 arg01, char *arg1, s32 arg2) {
Unk_struct_43F0 unk_struct;
s32 phi_s4 = 0x26;
s32 phi_fp = 0;
s64 arg0 = arg01;
if (arg0 < 0) {
phi_fp = 1;
arg0 *= -1;
}
unk_struct.unk_39 = 0;
while (TRUE) {
u8 (*new_var)[];
unk_struct.unk_00[phi_s4] = (*(new_var = &D_800743E0))[func_8006DDC0(arg0, arg2)];
arg0 = func_8006D800(arg0, arg2);
if (arg0 == 0 || phi_s4 == 0) {
break;
}
phi_s4--;
}
if (phi_fp) {
phi_s4--;
unk_struct.unk_00[phi_s4] = 0x2D;
}
strcpy(arg1, &unk_struct.unk_00[phi_s4]);
return arg1;
}
#else
INCLUDE_ASM(char*, "43F0", int_to_string, s32 arg01, char *arg1, s32 arg2);
#endif
// should maybe be called bzero // should maybe be called bzero
void mem_clear(s8* data, s32 numBytes) { void mem_clear(s8* data, s32 numBytes) {
@ -300,7 +347,46 @@ f32 get_clamped_angle_diff(f32 a, f32 b) {
return b - a; return b - a;
} }
INCLUDE_ASM(f32, "43F0", atan2, f32 startX, f32 startZ, f32 endX, f32 endZ); f32 atan2(f32 startX, f32 startZ, f32 endX, f32 endZ) {
f32 xDiff = endX - startX;
f32 zDiff = endZ - startZ;
f32 absXDiff = fabsf(xDiff);
f32 absZDiff = fabsf(zDiff);
f32 temp_f20;
if (absZDiff < absXDiff) {
temp_f20 = (absZDiff / absXDiff) * 45.0f;
temp_f20 *= D_80074414[round(2.0f * temp_f20)];
if (xDiff >= 0.0f) {
if (zDiff >= 0.0f) {
return temp_f20 + 90.0f;
} else {
return 90.0f - temp_f20;
}
}
if (zDiff >= 0.0f) {
return 270.0f - temp_f20;
} else {
return temp_f20 + 270.0f;
}
} else {
if (absZDiff == 0.0f) {
return 0.0f;
}
temp_f20 = (absXDiff / absZDiff) * 45.0f;
temp_f20 *= D_80074414[round(2.0f * temp_f20)];
if (zDiff >= 0.0f) {
if (xDiff >= 0.0f) {
return 180.0f - temp_f20;
} else {
return temp_f20 + 180.0f;
}
} else if (!(xDiff >= 0.0f)) {
return 360.0f - temp_f20;
}
}
return temp_f20;
}
f32 get_player_normal_yaw(void) { f32 get_player_normal_yaw(void) {
return atan2(0, 0, gGameStatusPtr->playerTraceNormal.x, gGameStatusPtr->playerTraceNormal.z); return atan2(0, 0, gGameStatusPtr->playerTraceNormal.x, gGameStatusPtr->playerTraceNormal.z);
@ -379,34 +465,106 @@ f32 cos_deg(f32 angle) {
return coss(_wrap_trig_lookup_value(angle * 182.04445f)) * 3.051851e-05; return coss(_wrap_trig_lookup_value(angle * 182.04445f)) * 3.051851e-05;
} }
INCLUDE_ASM(f32, "43F0", update_lerp, Easing easing, f32 start, f32 end, s32 elapsed, s32 duration); f32 update_lerp(s32 easing, f32 start, f32 end, s32 elapsed, s32 duration) {
s32 val1s;
f32 temp_f4;
//void func_8002A904(u8 arg0, u8 arg1, u8 arg2, u8 arg3, u16 arg4, u16 arg5, u16 arg6, u16 arg7); if (duration == 0) {
INCLUDE_ASM(void, "43F0", func_8002A904, u8 arg0, u8 arg1, u8 arg2, u8 arg3, u16 arg4, u16 arg5, u16 arg6, return end;
u16 arg7); }
INCLUDE_ASM(s32, "43F0", func_8002AAC4); switch (easing) {
// void func_8002AAC4(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u16 arg4, u16 arg5, u16 arg6, u16 arg7) { case EASING_LINEAR:
// s16 phi_t0; return start + ((end - start) * elapsed / duration);
// s16 phi_t1; case EASING_QUADRATIC_IN:
// s16 phi_t2; return start + (SQ(elapsed) * (end - start) / SQ(duration));
// s16 phi_t3; case EASING_CUBIC_IN:
return start + (CUBE(elapsed) * (end - start) / CUBE(duration));
case EASING_QUARTIC_IN:
return start + (QUART(elapsed) * (end - start) / QUART(duration));
case EASING_COS_SLOW_OVERSHOOT:
return end - (((end - start) * cos_rad(((f32)elapsed / duration) * PI_D * 4.0) * (duration - elapsed) * (duration - elapsed)) / SQ((f32)duration));
case EASING_COS_FAST_OVERSHOOT:
return end - (((end - start) * cos_rad((((f32)SQ(elapsed) / duration) * PI_D * 4.0) / 15.0) * (duration - elapsed) * (duration - elapsed)) / SQ((f32)duration));
case EASING_QUADRATIC_OUT:
val1s = duration - elapsed;
return (start + (end - start)) - ((SQ(val1s) * (end - start))) / SQ(duration);
case EASING_CUBIC_OUT:
val1s = duration - elapsed;
return (start + (end - start)) - ((CUBE(val1s) * (end - start))) / CUBE(duration);
case EASING_QUARTIC_OUT:
val1s = duration - elapsed;
return (start + (end - start)) - ((QUART(val1s) * (end - start))) / QUART(duration);
case EASING_COS_BOUNCE:
temp_f4 = cos_rad((((f32)SQ(elapsed) / duration) * PI_D * 4.0) / 40.0) * (duration - elapsed) * (duration - elapsed) / SQ((f32)duration);
if (temp_f4 < 0.0f) {
temp_f4 = -temp_f4;
}
return end - ((end - start) * temp_f4);
case EASING_COS_IN_OUT:
return start + ((end - start) * (1.0 - cos_rad(((f32)elapsed * PI_D) / (f32)duration)) * 0.5);
case EASING_SIN_OUT:
return start + ((end - start) * sin_rad(((f32)elapsed * 1.570796) / (f32)duration));
case EASING_COS_IN:
return start + ((end - start) * (1.0 - cos_rad(((f32)elapsed * 1.570796) / (f32)duration)));
}
// phi_t0 = arg0; return 0.0f;
// phi_t2 = arg2; }
// if (arg2 < arg0) {
// phi_t0 = arg2;
// phi_t2 = arg0;
// }
// phi_t1 = arg1; void func_8002A904(u8 r, u8 g, u8 b, u8 a, u16 left, u16 top, u16 right, u16 bottom) {
// phi_t3 = arg3; gDPPipeSync(gMasterGfxPos++);
// if (arg3 < arg1) { gSPDisplayList(gMasterGfxPos++, D_80074580);
// phi_t1 = arg3;
// phi_t3 = arg1;
// }
// func_8002A904(arg4, arg5, arg6, arg7, phi_t0, phi_t1, phi_t2, phi_t3); if (a == 255) {
// } gDPSetRenderMode(gMasterGfxPos++, G_RM_OPA_SURF, G_RM_OPA_SURF2);
gDPSetCombineLERP(gMasterGfxPos++, 0, 0, 0, PRIMITIVE, 0, 0, 0, 1, 0, 0, 0, PRIMITIVE, 0, 0, 0, 1);
} else {
gDPSetRenderMode(gMasterGfxPos++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
gDPSetCombineMode(gMasterGfxPos++, G_CC_PRIMITIVE, G_CC_PRIMITIVE);
}
INCLUDE_ASM(s32, "43F0", func_8002AB5C); gDPSetPrimColor(gMasterGfxPos++, 0, 0, r, g, b, a);
gDPFillRectangle(gMasterGfxPos++, left, top, right, bottom);
gDPPipeSync(gMasterGfxPos++);
gDPSetRenderMode(gMasterGfxPos++, G_RM_TEX_EDGE, G_RM_TEX_EDGE2);
gDPSetCombineMode(gMasterGfxPos++, G_CC_DECALRGBA, G_CC_DECALRGBA);
}
void func_8002AAC4(s16 left, s16 top, s16 right, s16 bottom, u16 r, u16 g, u16 b, u16 a) {
u16 temp;
if (right < left) {
temp = right;
right = left;
left = temp;
}
if (bottom < top) {
temp = bottom;
bottom = top;
top = temp;
}
func_8002A904(r, g, b, a, left, top, right, bottom);
}
void func_8002AB5C(s16 left, s16 top, s16 right, s16 bottom, u16 r, u16 g, u16 b, u16 a) {
u16 temp;
if (right < left) {
temp = right;
right = left;
left = temp;
}
if (bottom < top) {
temp = bottom;
bottom = top;
top = temp;
}
func_8002A904(r, g, b, a, left, top, right, bottom);
}

View File

@ -1,114 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel atan2
/* 5080 80029C80 44863000 */ mtc1 $a2, $f6
/* 5084 80029C84 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 5088 80029C88 F7BA0030 */ sdc1 $f26, 0x30($sp)
/* 508C 80029C8C 460C3681 */ sub.s $f26, $f6, $f12
/* 5090 80029C90 44873000 */ mtc1 $a3, $f6
/* 5094 80029C94 AFBF0010 */ sw $ra, 0x10($sp)
/* 5098 80029C98 F7B80028 */ sdc1 $f24, 0x28($sp)
/* 509C 80029C9C 460E3601 */ sub.s $f24, $f6, $f14
/* 50A0 80029CA0 F7B60020 */ sdc1 $f22, 0x20($sp)
/* 50A4 80029CA4 F7B40018 */ sdc1 $f20, 0x18($sp)
/* 50A8 80029CA8 4600D105 */ abs.s $f4, $f26
/* 50AC 80029CAC 4600C005 */ abs.s $f0, $f24
/* 50B0 80029CB0 4604003C */ c.lt.s $f0, $f4
/* 50B4 80029CB4 00000000 */ nop
/* 50B8 80029CB8 45000029 */ bc1f .L80029D60
/* 50BC 80029CBC 00000000 */ nop
/* 50C0 80029CC0 3C014234 */ lui $at, 0x4234
/* 50C4 80029CC4 44811000 */ mtc1 $at, $f2
/* 50C8 80029CC8 46040003 */ div.s $f0, $f0, $f4
/* 50CC 80029CCC 46020502 */ mul.s $f20, $f0, $f2
/* 50D0 80029CD0 00000000 */ nop
/* 50D4 80029CD4 0C00A6B1 */ jal round
/* 50D8 80029CD8 4614A300 */ add.s $f12, $f20, $f20
/* 50DC 80029CDC 00021080 */ sll $v0, $v0, 2
/* 50E0 80029CE0 3C018007 */ lui $at, %hi(D_80074414)
/* 50E4 80029CE4 00220821 */ addu $at, $at, $v0
/* 50E8 80029CE8 C4204414 */ lwc1 $f0, %lo(D_80074414)($at)
/* 50EC 80029CEC 4600A502 */ mul.s $f20, $f20, $f0
/* 50F0 80029CF0 00000000 */ nop
/* 50F4 80029CF4 44800000 */ mtc1 $zero, $f0
/* 50F8 80029CF8 00000000 */ nop
/* 50FC 80029CFC 461A003E */ c.le.s $f0, $f26
/* 5100 80029D00 00000000 */ nop
/* 5104 80029D04 4500000D */ bc1f .L80029D3C
/* 5108 80029D08 00000000 */ nop
/* 510C 80029D0C 4618003E */ c.le.s $f0, $f24
/* 5110 80029D10 00000000 */ nop
/* 5114 80029D14 45000005 */ bc1f .L80029D2C
/* 5118 80029D18 00000000 */ nop
/* 511C 80029D1C 3C0142B4 */ lui $at, 0x42b4
/* 5120 80029D20 44810000 */ mtc1 $at, $f0
/* 5124 80029D24 0800A781 */ j .L80029E04
/* 5128 80029D28 4600A000 */ add.s $f0, $f20, $f0
.L80029D2C:
/* 512C 80029D2C 3C0142B4 */ lui $at, 0x42b4
/* 5130 80029D30 44810000 */ mtc1 $at, $f0
/* 5134 80029D34 0800A781 */ j .L80029E04
/* 5138 80029D38 46140001 */ sub.s $f0, $f0, $f20
.L80029D3C:
/* 513C 80029D3C 4618003E */ c.le.s $f0, $f24
/* 5140 80029D40 3C014387 */ lui $at, 0x4387
/* 5144 80029D44 44810000 */ mtc1 $at, $f0
/* 5148 80029D48 4503002E */ bc1tl .L80029E04
/* 514C 80029D4C 46140001 */ sub.s $f0, $f0, $f20
/* 5150 80029D50 3C014387 */ lui $at, 0x4387
/* 5154 80029D54 44810000 */ mtc1 $at, $f0
/* 5158 80029D58 0800A781 */ j .L80029E04
/* 515C 80029D5C 4600A000 */ add.s $f0, $f20, $f0
.L80029D60:
/* 5160 80029D60 4480B000 */ mtc1 $zero, $f22
/* 5164 80029D64 00000000 */ nop
/* 5168 80029D68 46160032 */ c.eq.s $f0, $f22
/* 516C 80029D6C 00000000 */ nop
/* 5170 80029D70 45020003 */ bc1fl .L80029D80
/* 5174 80029D74 46002003 */ div.s $f0, $f4, $f0
/* 5178 80029D78 0800A781 */ j .L80029E04
/* 517C 80029D7C 4600B006 */ mov.s $f0, $f22
.L80029D80:
/* 5180 80029D80 3C014234 */ lui $at, 0x4234
/* 5184 80029D84 44811000 */ mtc1 $at, $f2
/* 5188 80029D88 00000000 */ nop
/* 518C 80029D8C 46020502 */ mul.s $f20, $f0, $f2
/* 5190 80029D90 00000000 */ nop
/* 5194 80029D94 0C00A6B1 */ jal round
/* 5198 80029D98 4614A300 */ add.s $f12, $f20, $f20
/* 519C 80029D9C 00021080 */ sll $v0, $v0, 2
/* 51A0 80029DA0 3C018007 */ lui $at, %hi(D_80074414)
/* 51A4 80029DA4 00220821 */ addu $at, $at, $v0
/* 51A8 80029DA8 C4204414 */ lwc1 $f0, %lo(D_80074414)($at)
/* 51AC 80029DAC 4618B03E */ c.le.s $f22, $f24
/* 51B0 80029DB0 4600A502 */ mul.s $f20, $f20, $f0
/* 51B4 80029DB4 00000000 */ nop
/* 51B8 80029DB8 4500000A */ bc1f .L80029DE4
/* 51BC 80029DBC 00000000 */ nop
/* 51C0 80029DC0 461AB03E */ c.le.s $f22, $f26
/* 51C4 80029DC4 3C014334 */ lui $at, 0x4334
/* 51C8 80029DC8 44810000 */ mtc1 $at, $f0
/* 51CC 80029DCC 4503000D */ bc1tl .L80029E04
/* 51D0 80029DD0 46140001 */ sub.s $f0, $f0, $f20
/* 51D4 80029DD4 3C014334 */ lui $at, 0x4334
/* 51D8 80029DD8 44810000 */ mtc1 $at, $f0
/* 51DC 80029DDC 0800A781 */ j .L80029E04
/* 51E0 80029DE0 4600A000 */ add.s $f0, $f20, $f0
.L80029DE4:
/* 51E4 80029DE4 461AB03E */ c.le.s $f22, $f26
/* 51E8 80029DE8 00000000 */ nop
/* 51EC 80029DEC 45010005 */ bc1t .L80029E04
/* 51F0 80029DF0 4600A006 */ mov.s $f0, $f20
/* 51F4 80029DF4 3C0143B4 */ lui $at, 0x43b4
/* 51F8 80029DF8 44810000 */ mtc1 $at, $f0
/* 51FC 80029DFC 00000000 */ nop
/* 5200 80029E00 46140001 */ sub.s $f0, $f0, $f20
.L80029E04:
/* 5204 80029E04 8FBF0010 */ lw $ra, 0x10($sp)
/* 5208 80029E08 D7BA0030 */ ldc1 $f26, 0x30($sp)
/* 520C 80029E0C D7B80028 */ ldc1 $f24, 0x28($sp)
/* 5210 80029E10 D7B60020 */ ldc1 $f22, 0x20($sp)
/* 5214 80029E14 D7B40018 */ ldc1 $f20, 0x18($sp)
/* 5218 80029E18 03E00008 */ jr $ra
/* 521C 80029E1C 27BD0038 */ addiu $sp, $sp, 0x38

View File

@ -1,118 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8002A904
/* 5D04 8002A904 27BDFFF8 */ addiu $sp, $sp, -8
/* 5D08 8002A908 0080602D */ daddu $t4, $a0, $zero
/* 5D0C 8002A90C 00A0682D */ daddu $t5, $a1, $zero
/* 5D10 8002A910 00E0582D */ daddu $t3, $a3, $zero
/* 5D14 8002A914 3C08800A */ lui $t0, %hi(gMasterGfxPos)
/* 5D18 8002A918 2508A66C */ addiu $t0, $t0, %lo(gMasterGfxPos)
/* 5D1C 8002A91C 3C02E700 */ lui $v0, 0xe700
/* 5D20 8002A920 AFB00000 */ sw $s0, ($sp)
/* 5D24 8002A924 8D070000 */ lw $a3, ($t0)
/* 5D28 8002A928 97B9001A */ lhu $t9, 0x1a($sp)
/* 5D2C 8002A92C 97B0001E */ lhu $s0, 0x1e($sp)
/* 5D30 8002A930 97AF0022 */ lhu $t7, 0x22($sp)
/* 5D34 8002A934 97B80026 */ lhu $t8, 0x26($sp)
/* 5D38 8002A938 00E0182D */ daddu $v1, $a3, $zero
/* 5D3C 8002A93C 24E70008 */ addiu $a3, $a3, 8
/* 5D40 8002A940 AD070000 */ sw $a3, ($t0)
/* 5D44 8002A944 AC620000 */ sw $v0, ($v1)
/* 5D48 8002A948 24E20008 */ addiu $v0, $a3, 8
/* 5D4C 8002A94C AC600004 */ sw $zero, 4($v1)
/* 5D50 8002A950 AD020000 */ sw $v0, ($t0)
/* 5D54 8002A954 3C02DE00 */ lui $v0, 0xde00
/* 5D58 8002A958 ACE20000 */ sw $v0, ($a3)
/* 5D5C 8002A95C 3C028007 */ lui $v0, %hi(D_80074580)
/* 5D60 8002A960 24424580 */ addiu $v0, $v0, %lo(D_80074580)
/* 5D64 8002A964 316300FF */ andi $v1, $t3, 0xff
/* 5D68 8002A968 ACE20004 */ sw $v0, 4($a3)
/* 5D6C 8002A96C 240200FF */ addiu $v0, $zero, 0xff
/* 5D70 8002A970 1462000A */ bne $v1, $v0, .L8002A99C
/* 5D74 8002A974 00C0702D */ daddu $t6, $a2, $zero
/* 5D78 8002A978 3C05E200 */ lui $a1, 0xe200
/* 5D7C 8002A97C 34A5001C */ ori $a1, $a1, 0x1c
/* 5D80 8002A980 3C030F0A */ lui $v1, 0xf0a
/* 5D84 8002A984 34634000 */ ori $v1, $v1, 0x4000
/* 5D88 8002A988 3C06FCFF */ lui $a2, 0xfcff
/* 5D8C 8002A98C 34C6FFFF */ ori $a2, $a2, 0xffff
/* 5D90 8002A990 3C04FFFD */ lui $a0, 0xfffd
/* 5D94 8002A994 0800AA6F */ j .L8002A9BC
/* 5D98 8002A998 3484FCFE */ ori $a0, $a0, 0xfcfe
.L8002A99C:
/* 5D9C 8002A99C 3C05E200 */ lui $a1, 0xe200
/* 5DA0 8002A9A0 34A5001C */ ori $a1, $a1, 0x1c
/* 5DA4 8002A9A4 3C030050 */ lui $v1, 0x50
/* 5DA8 8002A9A8 34634240 */ ori $v1, $v1, 0x4240
/* 5DAC 8002A9AC 3C06FCFF */ lui $a2, 0xfcff
/* 5DB0 8002A9B0 34C6FFFF */ ori $a2, $a2, 0xffff
/* 5DB4 8002A9B4 3C04FFFD */ lui $a0, 0xfffd
/* 5DB8 8002A9B8 3484F6FB */ ori $a0, $a0, 0xf6fb
.L8002A9BC:
/* 5DBC 8002A9BC 24E20010 */ addiu $v0, $a3, 0x10
/* 5DC0 8002A9C0 AD020000 */ sw $v0, ($t0)
/* 5DC4 8002A9C4 24E20018 */ addiu $v0, $a3, 0x18
/* 5DC8 8002A9C8 ACE50008 */ sw $a1, 8($a3)
/* 5DCC 8002A9CC ACE3000C */ sw $v1, 0xc($a3)
/* 5DD0 8002A9D0 AD020000 */ sw $v0, ($t0)
/* 5DD4 8002A9D4 ACE60010 */ sw $a2, 0x10($a3)
/* 5DD8 8002A9D8 ACE40014 */ sw $a0, 0x14($a3)
/* 5DDC 8002A9DC 3C09E200 */ lui $t1, 0xe200
/* 5DE0 8002A9E0 3529001C */ ori $t1, $t1, 0x1c
/* 5DE4 8002A9E4 3C070F0A */ lui $a3, 0xf0a
/* 5DE8 8002A9E8 34E77008 */ ori $a3, $a3, 0x7008
/* 5DEC 8002A9EC 3C0AFCFF */ lui $t2, 0xfcff
/* 5DF0 8002A9F0 354AFFFF */ ori $t2, $t2, 0xffff
/* 5DF4 8002A9F4 3C08FFFC */ lui $t0, 0xfffc
/* 5DF8 8002A9F8 3C06800A */ lui $a2, %hi(gMasterGfxPos)
/* 5DFC 8002A9FC 24C6A66C */ addiu $a2, $a2, %lo(gMasterGfxPos)
/* 5E00 8002AA00 3508F279 */ ori $t0, $t0, 0xf279
/* 5E04 8002AA04 3C02FA00 */ lui $v0, 0xfa00
/* 5E08 8002AA08 8CC50000 */ lw $a1, ($a2)
/* 5E0C 8002AA0C 000C1E00 */ sll $v1, $t4, 0x18
/* 5E10 8002AA10 00A0202D */ daddu $a0, $a1, $zero
/* 5E14 8002AA14 24A50008 */ addiu $a1, $a1, 8
/* 5E18 8002AA18 ACC50000 */ sw $a1, ($a2)
/* 5E1C 8002AA1C AC820000 */ sw $v0, ($a0)
/* 5E20 8002AA20 31A200FF */ andi $v0, $t5, 0xff
/* 5E24 8002AA24 00021400 */ sll $v0, $v0, 0x10
/* 5E28 8002AA28 00621825 */ or $v1, $v1, $v0
/* 5E2C 8002AA2C 31C200FF */ andi $v0, $t6, 0xff
/* 5E30 8002AA30 00021200 */ sll $v0, $v0, 8
/* 5E34 8002AA34 00621825 */ or $v1, $v1, $v0
/* 5E38 8002AA38 316200FF */ andi $v0, $t3, 0xff
/* 5E3C 8002AA3C 00621825 */ or $v1, $v1, $v0
/* 5E40 8002AA40 24A20008 */ addiu $v0, $a1, 8
/* 5E44 8002AA44 AC830004 */ sw $v1, 4($a0)
/* 5E48 8002AA48 31E403FF */ andi $a0, $t7, 0x3ff
/* 5E4C 8002AA4C 00042380 */ sll $a0, $a0, 0xe
/* 5E50 8002AA50 ACC20000 */ sw $v0, ($a2)
/* 5E54 8002AA54 330203FF */ andi $v0, $t8, 0x3ff
/* 5E58 8002AA58 00021080 */ sll $v0, $v0, 2
/* 5E5C 8002AA5C 3C03F600 */ lui $v1, 0xf600
/* 5E60 8002AA60 00431025 */ or $v0, $v0, $v1
/* 5E64 8002AA64 00822025 */ or $a0, $a0, $v0
/* 5E68 8002AA68 332303FF */ andi $v1, $t9, 0x3ff
/* 5E6C 8002AA6C 00031B80 */ sll $v1, $v1, 0xe
/* 5E70 8002AA70 320203FF */ andi $v0, $s0, 0x3ff
/* 5E74 8002AA74 00021080 */ sll $v0, $v0, 2
/* 5E78 8002AA78 00621825 */ or $v1, $v1, $v0
/* 5E7C 8002AA7C 24A20010 */ addiu $v0, $a1, 0x10
/* 5E80 8002AA80 ACA40000 */ sw $a0, ($a1)
/* 5E84 8002AA84 ACA30004 */ sw $v1, 4($a1)
/* 5E88 8002AA88 ACC20000 */ sw $v0, ($a2)
/* 5E8C 8002AA8C 3C02E700 */ lui $v0, 0xe700
/* 5E90 8002AA90 ACA20008 */ sw $v0, 8($a1)
/* 5E94 8002AA94 24A20018 */ addiu $v0, $a1, 0x18
/* 5E98 8002AA98 ACA0000C */ sw $zero, 0xc($a1)
/* 5E9C 8002AA9C ACC20000 */ sw $v0, ($a2)
/* 5EA0 8002AAA0 24A20020 */ addiu $v0, $a1, 0x20
/* 5EA4 8002AAA4 ACA90010 */ sw $t1, 0x10($a1)
/* 5EA8 8002AAA8 ACA70014 */ sw $a3, 0x14($a1)
/* 5EAC 8002AAAC ACC20000 */ sw $v0, ($a2)
/* 5EB0 8002AAB0 ACAA0018 */ sw $t2, 0x18($a1)
/* 5EB4 8002AAB4 ACA8001C */ sw $t0, 0x1c($a1)
/* 5EB8 8002AAB8 8FB00000 */ lw $s0, ($sp)
/* 5EBC 8002AABC 03E00008 */ jr $ra
/* 5EC0 8002AAC0 27BD0008 */ addiu $sp, $sp, 8

View File

@ -1,44 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8002AAC4
/* 5EC4 8002AAC4 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 5EC8 8002AAC8 0080402D */ daddu $t0, $a0, $zero
/* 5ECC 8002AACC 00A0482D */ daddu $t1, $a1, $zero
/* 5ED0 8002AAD0 00C0502D */ daddu $t2, $a2, $zero
/* 5ED4 8002AAD4 00E0582D */ daddu $t3, $a3, $zero
/* 5ED8 8002AAD8 00061C00 */ sll $v1, $a2, 0x10
/* 5EDC 8002AADC 00041400 */ sll $v0, $a0, 0x10
/* 5EE0 8002AAE0 97AC003A */ lhu $t4, 0x3a($sp)
/* 5EE4 8002AAE4 97AD003E */ lhu $t5, 0x3e($sp)
/* 5EE8 8002AAE8 97AE0042 */ lhu $t6, 0x42($sp)
/* 5EEC 8002AAEC 97AF0046 */ lhu $t7, 0x46($sp)
/* 5EF0 8002AAF0 0062182A */ slt $v1, $v1, $v0
/* 5EF4 8002AAF4 10600003 */ beqz $v1, .L8002AB04
/* 5EF8 8002AAF8 AFBF0020 */ sw $ra, 0x20($sp)
/* 5EFC 8002AAFC 0080502D */ daddu $t2, $a0, $zero
/* 5F00 8002AB00 00C0402D */ daddu $t0, $a2, $zero
.L8002AB04:
/* 5F04 8002AB04 00071400 */ sll $v0, $a3, 0x10
/* 5F08 8002AB08 00051C00 */ sll $v1, $a1, 0x10
/* 5F0C 8002AB0C 0043102A */ slt $v0, $v0, $v1
/* 5F10 8002AB10 10400003 */ beqz $v0, .L8002AB20
/* 5F14 8002AB14 3102FFFF */ andi $v0, $t0, 0xffff
/* 5F18 8002AB18 00A0582D */ daddu $t3, $a1, $zero
/* 5F1C 8002AB1C 00E0482D */ daddu $t1, $a3, $zero
.L8002AB20:
/* 5F20 8002AB20 AFA20010 */ sw $v0, 0x10($sp)
/* 5F24 8002AB24 3122FFFF */ andi $v0, $t1, 0xffff
/* 5F28 8002AB28 AFA20014 */ sw $v0, 0x14($sp)
/* 5F2C 8002AB2C 3142FFFF */ andi $v0, $t2, 0xffff
/* 5F30 8002AB30 AFA20018 */ sw $v0, 0x18($sp)
/* 5F34 8002AB34 3162FFFF */ andi $v0, $t3, 0xffff
/* 5F38 8002AB38 318400FF */ andi $a0, $t4, 0xff
/* 5F3C 8002AB3C 31A500FF */ andi $a1, $t5, 0xff
/* 5F40 8002AB40 31C600FF */ andi $a2, $t6, 0xff
/* 5F44 8002AB44 31E700FF */ andi $a3, $t7, 0xff
/* 5F48 8002AB48 0C00AA41 */ jal func_8002A904
/* 5F4C 8002AB4C AFA2001C */ sw $v0, 0x1c($sp)
/* 5F50 8002AB50 8FBF0020 */ lw $ra, 0x20($sp)
/* 5F54 8002AB54 03E00008 */ jr $ra
/* 5F58 8002AB58 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,47 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8002AB5C
/* 5F5C 8002AB5C 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 5F60 8002AB60 0080402D */ daddu $t0, $a0, $zero
/* 5F64 8002AB64 00A0482D */ daddu $t1, $a1, $zero
/* 5F68 8002AB68 00C0502D */ daddu $t2, $a2, $zero
/* 5F6C 8002AB6C 00E0582D */ daddu $t3, $a3, $zero
/* 5F70 8002AB70 00061C00 */ sll $v1, $a2, 0x10
/* 5F74 8002AB74 00041400 */ sll $v0, $a0, 0x10
/* 5F78 8002AB78 97AC003A */ lhu $t4, 0x3a($sp)
/* 5F7C 8002AB7C 97AD003E */ lhu $t5, 0x3e($sp)
/* 5F80 8002AB80 97AE0042 */ lhu $t6, 0x42($sp)
/* 5F84 8002AB84 97AF0046 */ lhu $t7, 0x46($sp)
/* 5F88 8002AB88 0062182A */ slt $v1, $v1, $v0
/* 5F8C 8002AB8C 10600003 */ beqz $v1, .L8002AB9C
/* 5F90 8002AB90 AFBF0020 */ sw $ra, 0x20($sp)
/* 5F94 8002AB94 0080502D */ daddu $t2, $a0, $zero
/* 5F98 8002AB98 00C0402D */ daddu $t0, $a2, $zero
.L8002AB9C:
/* 5F9C 8002AB9C 00071400 */ sll $v0, $a3, 0x10
/* 5FA0 8002ABA0 00051C00 */ sll $v1, $a1, 0x10
/* 5FA4 8002ABA4 0043102A */ slt $v0, $v0, $v1
/* 5FA8 8002ABA8 10400003 */ beqz $v0, .L8002ABB8
/* 5FAC 8002ABAC 3102FFFF */ andi $v0, $t0, 0xffff
/* 5FB0 8002ABB0 00A0582D */ daddu $t3, $a1, $zero
/* 5FB4 8002ABB4 00E0482D */ daddu $t1, $a3, $zero
.L8002ABB8:
/* 5FB8 8002ABB8 AFA20010 */ sw $v0, 0x10($sp)
/* 5FBC 8002ABBC 3122FFFF */ andi $v0, $t1, 0xffff
/* 5FC0 8002ABC0 AFA20014 */ sw $v0, 0x14($sp)
/* 5FC4 8002ABC4 3142FFFF */ andi $v0, $t2, 0xffff
/* 5FC8 8002ABC8 AFA20018 */ sw $v0, 0x18($sp)
/* 5FCC 8002ABCC 3162FFFF */ andi $v0, $t3, 0xffff
/* 5FD0 8002ABD0 318400FF */ andi $a0, $t4, 0xff
/* 5FD4 8002ABD4 31A500FF */ andi $a1, $t5, 0xff
/* 5FD8 8002ABD8 31C600FF */ andi $a2, $t6, 0xff
/* 5FDC 8002ABDC 31E700FF */ andi $a3, $t7, 0xff
/* 5FE0 8002ABE0 0C00AA41 */ jal func_8002A904
/* 5FE4 8002ABE4 AFA2001C */ sw $v0, 0x1c($sp)
/* 5FE8 8002ABE8 8FBF0020 */ lw $ra, 0x20($sp)
/* 5FEC 8002ABEC 03E00008 */ jr $ra
/* 5FF0 8002ABF0 27BD0028 */ addiu $sp, $sp, 0x28
/* 5FF4 8002ABF4 00000000 */ nop
/* 5FF8 8002ABF8 00000000 */ nop
/* 5FFC 8002ABFC 00000000 */ nop

View File

@ -1,392 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_80097D90
.word L8002A40C_580C, L8002A438_5838, L8002A44C_584C, L8002A460_5860, L8002A5E0_59E0, L8002A620_5A20, L8002A648_5A48, L8002A4E8_58E8, L8002A534_5934, L8002A6D8_5AD8, L8002A798_5B98, L8002A820_5C20, L8002A870_5C70, 0
glabel D_80097DC8
.double 3.141592
glabel D_80097DD0
.double 3.141592
glabel D_80097DD8
.double 3.141592
glabel D_80097DE0
.double 3.141592
glabel D_80097DE8
.double 1.570796
glabel D_80097DF0
.double 1.570796, 0.0
.section .text
glabel update_lerp
/* 57B4 8002A3B4 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 57B8 8002A3B8 F7B60028 */ sdc1 $f22, 0x28($sp)
/* 57BC 8002A3BC 4485B000 */ mtc1 $a1, $f22
/* 57C0 8002A3C0 F7B80030 */ sdc1 $f24, 0x30($sp)
/* 57C4 8002A3C4 4486C000 */ mtc1 $a2, $f24
/* 57C8 8002A3C8 AFB00010 */ sw $s0, 0x10($sp)
/* 57CC 8002A3CC 8FB00048 */ lw $s0, 0x48($sp)
/* 57D0 8002A3D0 AFB10014 */ sw $s1, 0x14($sp)
/* 57D4 8002A3D4 AFBF0018 */ sw $ra, 0x18($sp)
/* 57D8 8002A3D8 F7B40020 */ sdc1 $f20, 0x20($sp)
/* 57DC 8002A3DC 16000003 */ bnez $s0, .L8002A3EC
/* 57E0 8002A3E0 00E0882D */ daddu $s1, $a3, $zero
/* 57E4 8002A3E4 0800AA39 */ j .L8002A8E4
/* 57E8 8002A3E8 4600C006 */ mov.s $f0, $f24
.L8002A3EC:
/* 57EC 8002A3EC 2C82000D */ sltiu $v0, $a0, 0xd
/* 57F0 8002A3F0 1040013B */ beqz $v0, .L8002A8E0
/* 57F4 8002A3F4 00041080 */ sll $v0, $a0, 2
/* 57F8 8002A3F8 3C018009 */ lui $at, %hi(jtbl_80097D90)
/* 57FC 8002A3FC 00220821 */ addu $at, $at, $v0
/* 5800 8002A400 8C227D90 */ lw $v0, %lo(jtbl_80097D90)($at)
/* 5804 8002A404 00400008 */ jr $v0
/* 5808 8002A408 00000000 */ nop
glabel L8002A40C_580C
/* 580C 8002A40C 4616C001 */ sub.s $f0, $f24, $f22
/* 5810 8002A410 44911000 */ mtc1 $s1, $f2
/* 5814 8002A414 00000000 */ nop
/* 5818 8002A418 468010A0 */ cvt.s.w $f2, $f2
/* 581C 8002A41C 46020002 */ mul.s $f0, $f0, $f2
/* 5820 8002A420 00000000 */ nop
/* 5824 8002A424 44901000 */ mtc1 $s0, $f2
/* 5828 8002A428 00000000 */ nop
/* 582C 8002A42C 468010A0 */ cvt.s.w $f2, $f2
/* 5830 8002A430 0800A938 */ j .L8002A4E0
/* 5834 8002A434 46020003 */ div.s $f0, $f0, $f2
glabel L8002A438_5838
/* 5838 8002A438 02310018 */ mult $s1, $s1
/* 583C 8002A43C 00004012 */ mflo $t0
/* 5840 8002A440 00000000 */ nop
/* 5844 8002A444 0800A92D */ j .L8002A4B4
/* 5848 8002A448 02100018 */ mult $s0, $s0
glabel L8002A44C_584C
/* 584C 8002A44C 02310018 */ mult $s1, $s1
/* 5850 8002A450 00004012 */ mflo $t0
/* 5854 8002A454 00000000 */ nop
/* 5858 8002A458 0800A925 */ j .L8002A494
/* 585C 8002A45C 02100018 */ mult $s0, $s0
glabel L8002A460_5860
/* 5860 8002A460 02310018 */ mult $s1, $s1
/* 5864 8002A464 00004012 */ mflo $t0
/* 5868 8002A468 00000000 */ nop
/* 586C 8002A46C 00000000 */ nop
/* 5870 8002A470 02100018 */ mult $s0, $s0
/* 5874 8002A474 00001012 */ mflo $v0
/* 5878 8002A478 00000000 */ nop
/* 587C 8002A47C 00000000 */ nop
/* 5880 8002A480 01110018 */ mult $t0, $s1
/* 5884 8002A484 00004012 */ mflo $t0
/* 5888 8002A488 00000000 */ nop
/* 588C 8002A48C 00000000 */ nop
/* 5890 8002A490 00500018 */ mult $v0, $s0
.L8002A494:
/* 5894 8002A494 00001012 */ mflo $v0
/* 5898 8002A498 00000000 */ nop
/* 589C 8002A49C 00000000 */ nop
/* 58A0 8002A4A0 01110018 */ mult $t0, $s1
/* 58A4 8002A4A4 00004012 */ mflo $t0
/* 58A8 8002A4A8 00000000 */ nop
/* 58AC 8002A4AC 00000000 */ nop
/* 58B0 8002A4B0 00500018 */ mult $v0, $s0
.L8002A4B4:
/* 58B4 8002A4B4 4616C081 */ sub.s $f2, $f24, $f22
/* 58B8 8002A4B8 44880000 */ mtc1 $t0, $f0
/* 58BC 8002A4BC 00000000 */ nop
/* 58C0 8002A4C0 46800020 */ cvt.s.w $f0, $f0
/* 58C4 8002A4C4 46020002 */ mul.s $f0, $f0, $f2
/* 58C8 8002A4C8 00000000 */ nop
/* 58CC 8002A4CC 00001012 */ mflo $v0
/* 58D0 8002A4D0 44821000 */ mtc1 $v0, $f2
/* 58D4 8002A4D4 00000000 */ nop
/* 58D8 8002A4D8 468010A0 */ cvt.s.w $f2, $f2
/* 58DC 8002A4DC 46020003 */ div.s $f0, $f0, $f2
.L8002A4E0:
/* 58E0 8002A4E0 0800AA39 */ j .L8002A8E4
/* 58E4 8002A4E4 4600B000 */ add.s $f0, $f22, $f0
glabel L8002A4E8_58E8
/* 58E8 8002A4E8 44916000 */ mtc1 $s1, $f12
/* 58EC 8002A4EC 00000000 */ nop
/* 58F0 8002A4F0 46806320 */ cvt.s.w $f12, $f12
/* 58F4 8002A4F4 4490A000 */ mtc1 $s0, $f20
/* 58F8 8002A4F8 00000000 */ nop
/* 58FC 8002A4FC 4680A520 */ cvt.s.w $f20, $f20
/* 5900 8002A500 46146303 */ div.s $f12, $f12, $f20
/* 5904 8002A504 3C018009 */ lui $at, %hi(D_80097DC8)
/* 5908 8002A508 D4207DC8 */ ldc1 $f0, %lo(D_80097DC8)($at)
/* 590C 8002A50C 46006321 */ cvt.d.s $f12, $f12
/* 5910 8002A510 46206302 */ mul.d $f12, $f12, $f0
/* 5914 8002A514 00000000 */ nop
/* 5918 8002A518 3C014010 */ lui $at, 0x4010
/* 591C 8002A51C 44810800 */ mtc1 $at, $f1
/* 5920 8002A520 44800000 */ mtc1 $zero, $f0
/* 5924 8002A524 00000000 */ nop
/* 5928 8002A528 46206302 */ mul.d $f12, $f12, $f0
/* 592C 8002A52C 0800A966 */ j .L8002A598
/* 5930 8002A530 00000000 */ nop
glabel L8002A534_5934
/* 5934 8002A534 02310018 */ mult $s1, $s1
/* 5938 8002A538 4490A000 */ mtc1 $s0, $f20
/* 593C 8002A53C 00000000 */ nop
/* 5940 8002A540 4680A520 */ cvt.s.w $f20, $f20
/* 5944 8002A544 3C018009 */ lui $at, %hi(D_80097DD0)
/* 5948 8002A548 D4207DD0 */ ldc1 $f0, %lo(D_80097DD0)($at)
/* 594C 8002A54C 00001812 */ mflo $v1
/* 5950 8002A550 44836000 */ mtc1 $v1, $f12
/* 5954 8002A554 00000000 */ nop
/* 5958 8002A558 46806320 */ cvt.s.w $f12, $f12
/* 595C 8002A55C 46146303 */ div.s $f12, $f12, $f20
/* 5960 8002A560 46006321 */ cvt.d.s $f12, $f12
/* 5964 8002A564 46206302 */ mul.d $f12, $f12, $f0
/* 5968 8002A568 00000000 */ nop
/* 596C 8002A56C 3C014010 */ lui $at, 0x4010
/* 5970 8002A570 44810800 */ mtc1 $at, $f1
/* 5974 8002A574 44800000 */ mtc1 $zero, $f0
/* 5978 8002A578 00000000 */ nop
/* 597C 8002A57C 46206302 */ mul.d $f12, $f12, $f0
/* 5980 8002A580 00000000 */ nop
/* 5984 8002A584 3C01402E */ lui $at, 0x402e
/* 5988 8002A588 44810800 */ mtc1 $at, $f1
/* 598C 8002A58C 44800000 */ mtc1 $zero, $f0
/* 5990 8002A590 00000000 */ nop
/* 5994 8002A594 46206303 */ div.d $f12, $f12, $f0
.L8002A598:
/* 5998 8002A598 0C00A874 */ jal cos_rad
/* 599C 8002A59C 46206320 */ cvt.s.d $f12, $f12
/* 59A0 8002A5A0 4614A502 */ mul.s $f20, $f20, $f20
/* 59A4 8002A5A4 00000000 */ nop
/* 59A8 8002A5A8 4616C081 */ sub.s $f2, $f24, $f22
/* 59AC 8002A5AC 46001082 */ mul.s $f2, $f2, $f0
/* 59B0 8002A5B0 00000000 */ nop
/* 59B4 8002A5B4 02111023 */ subu $v0, $s0, $s1
/* 59B8 8002A5B8 44820000 */ mtc1 $v0, $f0
/* 59BC 8002A5BC 00000000 */ nop
/* 59C0 8002A5C0 46800020 */ cvt.s.w $f0, $f0
/* 59C4 8002A5C4 46001082 */ mul.s $f2, $f2, $f0
/* 59C8 8002A5C8 00000000 */ nop
/* 59CC 8002A5CC 46001082 */ mul.s $f2, $f2, $f0
/* 59D0 8002A5D0 00000000 */ nop
/* 59D4 8002A5D4 46141083 */ div.s $f2, $f2, $f20
/* 59D8 8002A5D8 0800AA39 */ j .L8002A8E4
/* 59DC 8002A5DC 4602C001 */ sub.s $f0, $f24, $f2
glabel L8002A5E0_59E0
/* 59E0 8002A5E0 02113823 */ subu $a3, $s0, $s1
/* 59E4 8002A5E4 00E70018 */ mult $a3, $a3
/* 59E8 8002A5E8 4616C101 */ sub.s $f4, $f24, $f22
/* 59EC 8002A5EC 00001812 */ mflo $v1
/* 59F0 8002A5F0 44830000 */ mtc1 $v1, $f0
/* 59F4 8002A5F4 00000000 */ nop
/* 59F8 8002A5F8 46800020 */ cvt.s.w $f0, $f0
/* 59FC 8002A5FC 46040002 */ mul.s $f0, $f0, $f4
/* 5A00 8002A600 00000000 */ nop
/* 5A04 8002A604 02100018 */ mult $s0, $s0
/* 5A08 8002A608 00001812 */ mflo $v1
/* 5A0C 8002A60C 44831000 */ mtc1 $v1, $f2
/* 5A10 8002A610 00000000 */ nop
/* 5A14 8002A614 468010A0 */ cvt.s.w $f2, $f2
/* 5A18 8002A618 0800A9B3 */ j .L8002A6CC
/* 5A1C 8002A61C 4604B100 */ add.s $f4, $f22, $f4
glabel L8002A620_5A20
/* 5A20 8002A620 02113823 */ subu $a3, $s0, $s1
/* 5A24 8002A624 00E70018 */ mult $a3, $a3
/* 5A28 8002A628 00001012 */ mflo $v0
/* 5A2C 8002A62C 00000000 */ nop
/* 5A30 8002A630 00000000 */ nop
/* 5A34 8002A634 00470018 */ mult $v0, $a3
/* 5A38 8002A638 00004012 */ mflo $t0
/* 5A3C 8002A63C 00000000 */ nop
/* 5A40 8002A640 0800A9A4 */ j .L8002A690
/* 5A44 8002A644 02100018 */ mult $s0, $s0
glabel L8002A648_5A48
/* 5A48 8002A648 02113823 */ subu $a3, $s0, $s1
/* 5A4C 8002A64C 00E70018 */ mult $a3, $a3
/* 5A50 8002A650 00001012 */ mflo $v0
/* 5A54 8002A654 00000000 */ nop
/* 5A58 8002A658 00000000 */ nop
/* 5A5C 8002A65C 00470018 */ mult $v0, $a3
/* 5A60 8002A660 00004012 */ mflo $t0
/* 5A64 8002A664 00000000 */ nop
/* 5A68 8002A668 00000000 */ nop
/* 5A6C 8002A66C 02100018 */ mult $s0, $s0
/* 5A70 8002A670 00001012 */ mflo $v0
/* 5A74 8002A674 00000000 */ nop
/* 5A78 8002A678 00000000 */ nop
/* 5A7C 8002A67C 01070018 */ mult $t0, $a3
/* 5A80 8002A680 00004012 */ mflo $t0
/* 5A84 8002A684 00000000 */ nop
/* 5A88 8002A688 00000000 */ nop
/* 5A8C 8002A68C 00500018 */ mult $v0, $s0
.L8002A690:
/* 5A90 8002A690 4616C101 */ sub.s $f4, $f24, $f22
/* 5A94 8002A694 44880000 */ mtc1 $t0, $f0
/* 5A98 8002A698 00000000 */ nop
/* 5A9C 8002A69C 46800020 */ cvt.s.w $f0, $f0
/* 5AA0 8002A6A0 46040002 */ mul.s $f0, $f0, $f4
/* 5AA4 8002A6A4 00000000 */ nop
/* 5AA8 8002A6A8 00001012 */ mflo $v0
/* 5AAC 8002A6AC 00000000 */ nop
/* 5AB0 8002A6B0 00000000 */ nop
/* 5AB4 8002A6B4 00500018 */ mult $v0, $s0
/* 5AB8 8002A6B8 4604B100 */ add.s $f4, $f22, $f4
/* 5ABC 8002A6BC 00001012 */ mflo $v0
/* 5AC0 8002A6C0 44821000 */ mtc1 $v0, $f2
/* 5AC4 8002A6C4 00000000 */ nop
/* 5AC8 8002A6C8 468010A0 */ cvt.s.w $f2, $f2
.L8002A6CC:
/* 5ACC 8002A6CC 46020003 */ div.s $f0, $f0, $f2
/* 5AD0 8002A6D0 0800AA39 */ j .L8002A8E4
/* 5AD4 8002A6D4 46002001 */ sub.s $f0, $f4, $f0
glabel L8002A6D8_5AD8
/* 5AD8 8002A6D8 02310018 */ mult $s1, $s1
/* 5ADC 8002A6DC 4490A000 */ mtc1 $s0, $f20
/* 5AE0 8002A6E0 00000000 */ nop
/* 5AE4 8002A6E4 4680A520 */ cvt.s.w $f20, $f20
/* 5AE8 8002A6E8 3C018009 */ lui $at, %hi(D_80097DD8)
/* 5AEC 8002A6EC D4207DD8 */ ldc1 $f0, %lo(D_80097DD8)($at)
/* 5AF0 8002A6F0 00001812 */ mflo $v1
/* 5AF4 8002A6F4 44836000 */ mtc1 $v1, $f12
/* 5AF8 8002A6F8 00000000 */ nop
/* 5AFC 8002A6FC 46806320 */ cvt.s.w $f12, $f12
/* 5B00 8002A700 46146303 */ div.s $f12, $f12, $f20
/* 5B04 8002A704 46006321 */ cvt.d.s $f12, $f12
/* 5B08 8002A708 46206302 */ mul.d $f12, $f12, $f0
/* 5B0C 8002A70C 00000000 */ nop
/* 5B10 8002A710 3C014010 */ lui $at, 0x4010
/* 5B14 8002A714 44810800 */ mtc1 $at, $f1
/* 5B18 8002A718 44800000 */ mtc1 $zero, $f0
/* 5B1C 8002A71C 00000000 */ nop
/* 5B20 8002A720 46206302 */ mul.d $f12, $f12, $f0
/* 5B24 8002A724 00000000 */ nop
/* 5B28 8002A728 3C014044 */ lui $at, 0x4044
/* 5B2C 8002A72C 44810800 */ mtc1 $at, $f1
/* 5B30 8002A730 44800000 */ mtc1 $zero, $f0
/* 5B34 8002A734 00000000 */ nop
/* 5B38 8002A738 46206303 */ div.d $f12, $f12, $f0
/* 5B3C 8002A73C 0C00A874 */ jal cos_rad
/* 5B40 8002A740 46206320 */ cvt.s.d $f12, $f12
/* 5B44 8002A744 02111023 */ subu $v0, $s0, $s1
/* 5B48 8002A748 44821000 */ mtc1 $v0, $f2
/* 5B4C 8002A74C 00000000 */ nop
/* 5B50 8002A750 468010A0 */ cvt.s.w $f2, $f2
/* 5B54 8002A754 46020002 */ mul.s $f0, $f0, $f2
/* 5B58 8002A758 00000000 */ nop
/* 5B5C 8002A75C 4614A502 */ mul.s $f20, $f20, $f20
/* 5B60 8002A760 00000000 */ nop
/* 5B64 8002A764 46020002 */ mul.s $f0, $f0, $f2
/* 5B68 8002A768 00000000 */ nop
/* 5B6C 8002A76C 44801000 */ mtc1 $zero, $f2
/* 5B70 8002A770 46140103 */ div.s $f4, $f0, $f20
/* 5B74 8002A774 4602203C */ c.lt.s $f4, $f2
/* 5B78 8002A778 00000000 */ nop
/* 5B7C 8002A77C 45030001 */ bc1tl .L8002A784
/* 5B80 8002A780 46002107 */ neg.s $f4, $f4
.L8002A784:
/* 5B84 8002A784 4616C001 */ sub.s $f0, $f24, $f22
/* 5B88 8002A788 46040002 */ mul.s $f0, $f0, $f4
/* 5B8C 8002A78C 00000000 */ nop
/* 5B90 8002A790 0800AA39 */ j .L8002A8E4
/* 5B94 8002A794 4600C001 */ sub.s $f0, $f24, $f0
glabel L8002A798_5B98
/* 5B98 8002A798 44916000 */ mtc1 $s1, $f12
/* 5B9C 8002A79C 00000000 */ nop
/* 5BA0 8002A7A0 46806320 */ cvt.s.w $f12, $f12
/* 5BA4 8002A7A4 3C018009 */ lui $at, %hi(D_80097DE0)
/* 5BA8 8002A7A8 D4207DE0 */ ldc1 $f0, %lo(D_80097DE0)($at)
/* 5BAC 8002A7AC 46006321 */ cvt.d.s $f12, $f12
/* 5BB0 8002A7B0 46206302 */ mul.d $f12, $f12, $f0
/* 5BB4 8002A7B4 00000000 */ nop
/* 5BB8 8002A7B8 44900000 */ mtc1 $s0, $f0
/* 5BBC 8002A7BC 00000000 */ nop
/* 5BC0 8002A7C0 46800020 */ cvt.s.w $f0, $f0
/* 5BC4 8002A7C4 46000021 */ cvt.d.s $f0, $f0
/* 5BC8 8002A7C8 46206303 */ div.d $f12, $f12, $f0
/* 5BCC 8002A7CC 0C00A874 */ jal cos_rad
/* 5BD0 8002A7D0 46206320 */ cvt.s.d $f12, $f12
/* 5BD4 8002A7D4 4616C081 */ sub.s $f2, $f24, $f22
/* 5BD8 8002A7D8 3C013FF0 */ lui $at, 0x3ff0
/* 5BDC 8002A7DC 44812800 */ mtc1 $at, $f5
/* 5BE0 8002A7E0 44802000 */ mtc1 $zero, $f4
/* 5BE4 8002A7E4 46000021 */ cvt.d.s $f0, $f0
/* 5BE8 8002A7E8 46202101 */ sub.d $f4, $f4, $f0
/* 5BEC 8002A7EC 460010A1 */ cvt.d.s $f2, $f2
/* 5BF0 8002A7F0 46241082 */ mul.d $f2, $f2, $f4
/* 5BF4 8002A7F4 00000000 */ nop
/* 5BF8 8002A7F8 3C013FE0 */ lui $at, 0x3fe0
/* 5BFC 8002A7FC 44810800 */ mtc1 $at, $f1
/* 5C00 8002A800 44800000 */ mtc1 $zero, $f0
/* 5C04 8002A804 00000000 */ nop
/* 5C08 8002A808 46201082 */ mul.d $f2, $f2, $f0
/* 5C0C 8002A80C 00000000 */ nop
/* 5C10 8002A810 4600B021 */ cvt.d.s $f0, $f22
/* 5C14 8002A814 46220000 */ add.d $f0, $f0, $f2
/* 5C18 8002A818 0800AA39 */ j .L8002A8E4
/* 5C1C 8002A81C 46200020 */ cvt.s.d $f0, $f0
glabel L8002A820_5C20
/* 5C20 8002A820 44916000 */ mtc1 $s1, $f12
/* 5C24 8002A824 00000000 */ nop
/* 5C28 8002A828 46806320 */ cvt.s.w $f12, $f12
/* 5C2C 8002A82C 3C018009 */ lui $at, %hi(D_80097DE8)
/* 5C30 8002A830 D4207DE8 */ ldc1 $f0, %lo(D_80097DE8)($at)
/* 5C34 8002A834 46006321 */ cvt.d.s $f12, $f12
/* 5C38 8002A838 46206302 */ mul.d $f12, $f12, $f0
/* 5C3C 8002A83C 00000000 */ nop
/* 5C40 8002A840 44900000 */ mtc1 $s0, $f0
/* 5C44 8002A844 00000000 */ nop
/* 5C48 8002A848 46800020 */ cvt.s.w $f0, $f0
/* 5C4C 8002A84C 46000021 */ cvt.d.s $f0, $f0
/* 5C50 8002A850 46206303 */ div.d $f12, $f12, $f0
/* 5C54 8002A854 0C00A85B */ jal sin_rad
/* 5C58 8002A858 46206320 */ cvt.s.d $f12, $f12
/* 5C5C 8002A85C 4616C081 */ sub.s $f2, $f24, $f22
/* 5C60 8002A860 46001082 */ mul.s $f2, $f2, $f0
/* 5C64 8002A864 00000000 */ nop
/* 5C68 8002A868 0800AA39 */ j .L8002A8E4
/* 5C6C 8002A86C 4602B000 */ add.s $f0, $f22, $f2
glabel L8002A870_5C70
/* 5C70 8002A870 44916000 */ mtc1 $s1, $f12
/* 5C74 8002A874 00000000 */ nop
/* 5C78 8002A878 46806320 */ cvt.s.w $f12, $f12
/* 5C7C 8002A87C 3C018009 */ lui $at, %hi(D_80097DF0)
/* 5C80 8002A880 D4207DF0 */ ldc1 $f0, %lo(D_80097DF0)($at)
/* 5C84 8002A884 46006321 */ cvt.d.s $f12, $f12
/* 5C88 8002A888 46206302 */ mul.d $f12, $f12, $f0
/* 5C8C 8002A88C 00000000 */ nop
/* 5C90 8002A890 44900000 */ mtc1 $s0, $f0
/* 5C94 8002A894 00000000 */ nop
/* 5C98 8002A898 46800020 */ cvt.s.w $f0, $f0
/* 5C9C 8002A89C 46000021 */ cvt.d.s $f0, $f0
/* 5CA0 8002A8A0 46206303 */ div.d $f12, $f12, $f0
/* 5CA4 8002A8A4 0C00A874 */ jal cos_rad
/* 5CA8 8002A8A8 46206320 */ cvt.s.d $f12, $f12
/* 5CAC 8002A8AC 4616C101 */ sub.s $f4, $f24, $f22
/* 5CB0 8002A8B0 3C013FF0 */ lui $at, 0x3ff0
/* 5CB4 8002A8B4 44811800 */ mtc1 $at, $f3
/* 5CB8 8002A8B8 44801000 */ mtc1 $zero, $f2
/* 5CBC 8002A8BC 46000021 */ cvt.d.s $f0, $f0
/* 5CC0 8002A8C0 46201081 */ sub.d $f2, $f2, $f0
/* 5CC4 8002A8C4 46002121 */ cvt.d.s $f4, $f4
/* 5CC8 8002A8C8 46222102 */ mul.d $f4, $f4, $f2
/* 5CCC 8002A8CC 00000000 */ nop
/* 5CD0 8002A8D0 4600B021 */ cvt.d.s $f0, $f22
/* 5CD4 8002A8D4 46240000 */ add.d $f0, $f0, $f4
/* 5CD8 8002A8D8 0800AA39 */ j .L8002A8E4
/* 5CDC 8002A8DC 46200020 */ cvt.s.d $f0, $f0
.L8002A8E0:
/* 5CE0 8002A8E0 44800000 */ mtc1 $zero, $f0
.L8002A8E4:
/* 5CE4 8002A8E4 8FBF0018 */ lw $ra, 0x18($sp)
/* 5CE8 8002A8E8 8FB10014 */ lw $s1, 0x14($sp)
/* 5CEC 8002A8EC 8FB00010 */ lw $s0, 0x10($sp)
/* 5CF0 8002A8F0 D7B80030 */ ldc1 $f24, 0x30($sp)
/* 5CF4 8002A8F4 D7B60028 */ ldc1 $f22, 0x28($sp)
/* 5CF8 8002A8F8 D7B40020 */ ldc1 $f20, 0x20($sp)
/* 5CFC 8002A8FC 03E00008 */ jr $ra
/* 5D00 8002A900 27BD0038 */ addiu $sp, $sp, 0x38