effect_65 (#987)

* effect_65

* added pal version to coverage.py

* restored files
This commit is contained in:
Unnunu 2023-03-20 04:47:35 +03:00 committed by GitHub
parent 42d899fd44
commit 4959741a4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 276 additions and 1371 deletions

View File

@ -1925,31 +1925,31 @@ typedef struct ThrowSpinyFXData {
} ThrowSpinyFXData; //sizeof 0x6C
typedef struct Effect65FXData {
/* 0x000 */ s32 unk_00;
/* 0x000 */ s32 variation;
/* 0x004 */ f32 unk_04;
/* 0x008 */ f32 unk_08;
/* 0x00C */ f32 unk_0C;
/* 0x010 */ s32 unk_10;
/* 0x014 */ s32 unk_14;
/* 0x018 */ s32 unk_18;
/* 0x01C */ s32 unk_1C;
/* 0x020 */ s32 unk_20;
/* 0x024 */ s32 unk_24;
/* 0x028 */ s32 unk_28;
/* 0x02C */ s32 unk_2C;
/* 0x030 */ s32 unk_30;
/* 0x034 */ f32 unk_34;
/* 0x010 */ s32 timeLeft;
/* 0x014 */ s32 lifeTime;
/* 0x018 */ s32 primR;
/* 0x01C */ s32 primG;
/* 0x020 */ s32 primB;
/* 0x024 */ s32 alpha;
/* 0x028 */ s32 envR;
/* 0x02C */ s32 envG;
/* 0x030 */ s32 envB;
/* 0x034 */ f32 scale;
/* 0x038 */ Vec3f pos;
/* 0x044 */ f32 unk_44;
/* 0x048 */ f32 unk_48;
/* 0x04C */ f32 unk_4C;
/* 0x050 */ f32 unk_50[30];
/* 0x0C8 */ f32 unk_C8[30];
/* 0x140 */ f32 unk_140[30];
/* 0x1B8 */ s32 unk_1B8[30];
/* 0x230 */ s32 unk_230[30]; // a bool
/* 0x2A8 */ s32 unk_2A8;
/* 0x2AC */ f32 unk_2AC[30];
/* 0x044 */ f32 pathJitterX;
/* 0x048 */ f32 pathJitterY;
/* 0x04C */ f32 pathJitterZ;
/* 0x050 */ f32 pathX[30];
/* 0x0C8 */ f32 pathY[30];
/* 0x140 */ f32 pathZ[30];
/* 0x1B8 */ s32 pathTimestamp[30];
/* 0x230 */ s32 pathPointEnabled[30]; // a bool
/* 0x2A8 */ s32 lastPointIndex;
/* 0x2AC */ f32 pathLength[30];
} Effect65FXData; // size = 0x324
typedef struct TubbaHeartAttackFXData {

View File

@ -3668,7 +3668,7 @@ void func_8025D71C(ActorPart* part, s32 decorationIndex) {
effect->data.unk_65->pos.x = part->currentPos.x;
effect->data.unk_65->pos.y = part->currentPos.y;
effect->data.unk_65->pos.z = part->currentPos.z;
effect->data.unk_65->unk_34 = decor->unk_8C6[decorationIndex].unk00 / 100.0f;
effect->data.unk_65->scale = decor->unk_8C6[decorationIndex].unk00 / 100.0f;
break;
}
}

View File

@ -1,6 +1,8 @@
#include "common.h"
#include "effects_internal.h"
#define MAX_POINTS (30)
void effect_65_init(EffectInstance* effect);
void effect_65_update(EffectInstance* effect);
void effect_65_render(EffectInstance* effect);
@ -11,12 +13,12 @@ extern Gfx D_09000400_3D15E0[];
Gfx* D_E00CACB0[] = { D_09000400_3D15E0, D_09000400_3D15E0, D_09000400_3D15E0, D_09000400_3D15E0 };
EffectInstance* effect_65_main(
s32 arg0,
f32 arg1,
f32 arg2,
f32 arg3,
f32 arg4,
s32 arg5
s32 variation,
f32 posX,
f32 posY,
f32 posZ,
f32 scale,
s32 duration
) {
EffectBlueprint bp;
EffectInstance* effect;
@ -36,75 +38,75 @@ EffectInstance* effect_65_main(
data = effect->data.unk_65 = shim_general_heap_malloc(numParts * sizeof(*data));
ASSERT(effect->data.unk_65 != NULL);
data->unk_00 = arg0;
data->unk_14 = 0;
if (arg5 <= 0) {
data->unk_10 = 1000;
data->variation = variation;
data->lifeTime = 0;
if (duration <= 0) {
data->timeLeft = 1000;
} else {
data->unk_10 = arg5;
data->timeLeft = duration;
}
data->unk_04 = arg1;
data->unk_08 = arg2;
data->unk_0C = arg3;
data->unk_34 = arg4;
data->unk_04 = posX;
data->unk_08 = posY;
data->unk_0C = posZ;
data->scale = scale;
switch (arg0) {
switch (variation) {
case 0:
data->unk_18 = 255;
data->unk_1C = 255;
data->unk_20 = 255;
data->unk_28 = 225;
data->unk_2C = 225;
data->unk_30 = 225;
data->unk_24 = 255;
data->primR = 255;
data->primG = 255;
data->primB = 255;
data->envR = 225;
data->envG = 225;
data->envB = 225;
data->alpha = 255;
break;
case 1:
data->unk_18 = 255;
data->unk_1C = 245;
data->unk_20 = 230;
data->unk_28 = 45;
data->unk_2C = 35;
data->unk_30 = 15;
data->unk_24 = 255;
data->primR = 255;
data->primG = 245;
data->primB = 230;
data->envR = 45;
data->envG = 35;
data->envB = 15;
data->alpha = 255;
break;
case 2:
data->unk_18 = 255;
data->unk_1C = 0;
data->unk_20 = 0;
data->unk_28 = 155;
data->unk_2C = 125;
data->unk_30 = 125;
data->unk_24 = 255;
data->primR = 255;
data->primG = 0;
data->primB = 0;
data->envR = 155;
data->envG = 125;
data->envB = 125;
data->alpha = 255;
break;
case 3:
data->unk_18 = 255;
data->unk_1C = 255;
data->unk_20 = 255;
data->unk_28 = 255;
data->unk_2C = 65;
data->unk_30 = 20;
data->unk_24 = 255;
data->primR = 255;
data->primG = 255;
data->primB = 255;
data->envR = 255;
data->envG = 65;
data->envB = 20;
data->alpha = 255;
break;
}
data->pos.x = arg1;
data->pos.y = arg2;
data->pos.z = arg3;
data->pos.x = posX;
data->pos.y = posY;
data->pos.z = posZ;
for (i = 0; i < ARRAY_COUNT(data->unk_230); i++) {
data->unk_230[i] = FALSE;
for (i = 0; i < MAX_POINTS; i++) {
data->pathPointEnabled[i] = FALSE;
}
data->unk_2A8 = 0;
data->unk_50[0] = arg1;
data->unk_C8[0] = arg2;
data->unk_140[0] = arg3;
data->unk_230[0] = TRUE;
data->unk_1B8[0] = 0;
data->unk_2AC[0] = 0;
data->unk_44 = shim_rand_int(30) + 10;
data->unk_48 = 0;
data->unk_4C = 0;
data->lastPointIndex = 0;
data->pathX[0] = posX;
data->pathY[0] = posY;
data->pathZ[0] = posZ;
data->pathPointEnabled[0] = TRUE;
data->pathTimestamp[0] = 0;
data->pathLength[0] = 0;
data->pathJitterX = shim_rand_int(30) + 10;
data->pathJitterY = 0;
data->pathJitterZ = 0;
return effect;
}
@ -114,79 +116,80 @@ void effect_65_init(EffectInstance* effect) {
void effect_65_update(EffectInstance* effect) {
Effect65FXData* data = effect->data.unk_65;
s32 unk_00 = data->unk_00;
s32 unk_14;
f32 unk_2AC;
s32 variation = data->variation;
s32 lifeTime;
f32 pathLength;
f32 posX;
f32 posY;
f32 posZ;
f32 tempX;
f32 tempY;
f32 tempZ;
f32 lastPointX;
f32 lastPointY;
f32 lastPointZ;
f32 dist;
s32 idx;
if (effect->flags & 0x10) {
effect->flags &= ~0x10;
data->unk_10 = 16;
if (effect->flags & EFFECT_INSTANCE_FLAG_10) {
effect->flags &= ~EFFECT_INSTANCE_FLAG_10;
data->timeLeft = 16;
}
if (data->unk_10 < 1000) {
data->unk_10--;
if (data->timeLeft < 1000) {
data->timeLeft--;
}
data->unk_14++;
if (data->unk_10 < 0) {
data->lifeTime++;
if (data->timeLeft < 0) {
shim_remove_effect(effect);
return;
}
unk_14 = data->unk_14;
lifeTime = data->lifeTime;
if (data->unk_10 < 16) {
data->unk_24 = data->unk_10 * 16;
if (data->timeLeft < 16) {
data->alpha = data->timeLeft * 16;
}
if (unk_00 == 3) {
data->unk_44 += shim_rand_int(10) - 5;
data->unk_48 += shim_rand_int(10) - 5;
data->pos.x += data->unk_44;
data->pos.y += data->unk_48;
data->pos.z += data->unk_4C;
if (variation == 3) {
data->pathJitterX += shim_rand_int(10) - 5;
data->pathJitterY += shim_rand_int(10) - 5;
data->pos.x += data->pathJitterX;
data->pos.y += data->pathJitterY;
data->pos.z += data->pathJitterZ;
}
idx = data->unk_2A8 % 30;
idx = data->lastPointIndex % MAX_POINTS;
posX = data->pos.x;
posY = data->pos.y;
posZ = data->pos.z;
tempX = data->unk_50[idx];
tempY = data->unk_C8[idx];
tempZ = data->unk_140[idx];
lastPointX = data->pathX[idx];
lastPointY = data->pathY[idx];
lastPointZ = data->pathZ[idx];
if (posX != tempX || posY != tempY || posZ != tempZ) {
unk_2AC = data->unk_2AC[idx];
if (posX != lastPointX || posY != lastPointY || posZ != lastPointZ) {
// add new point to the trajectory
pathLength = data->pathLength[idx];
data->unk_2A8++;
if (data->unk_2A8 >= 30) {
data->unk_2A8 = 0;
data->lastPointIndex++;
if (data->lastPointIndex >= MAX_POINTS) {
data->lastPointIndex = 0;
}
idx = data->unk_2A8;
idx = data->lastPointIndex;
data->unk_230[idx] = TRUE;
data->unk_50[idx] = posX;
data->unk_C8[idx] = posY;
data->unk_140[idx] = posZ;
data->unk_1B8[idx] = unk_14;
data->pathPointEnabled[idx] = TRUE;
data->pathX[idx] = posX;
data->pathY[idx] = posY;
data->pathZ[idx] = posZ;
data->pathTimestamp[idx] = lifeTime;
dist = SQ(posX - tempX) + SQ(posY - tempY) + SQ(posZ - tempZ);
dist = SQ(posX - lastPointX) + SQ(posY - lastPointY) + SQ(posZ - lastPointZ);
if (dist != 0.0f) {
dist = shim_sqrtf(dist);
}
data->unk_2AC[idx] = unk_2AC + dist;
data->pathLength[idx] = pathLength + dist;
}
}
@ -203,196 +206,186 @@ void effect_65_render(EffectInstance* effect) {
retTask->renderMode |= RENDER_TASK_FLAG_REFLECT_FLOOR;
}
extern int COMBINED;
extern int ENVIRONMENT;
extern int SHADE;
// floats and more
#ifdef NON_MATCHING
void effect_65_appendGfx(void* effect) {
Effect65FXData* data = ((EffectInstance*)effect)->data.unk_65; //s6
Matrix4f sp10;
f32 padding[2];
s32 sp50;
s32 sp54;
Vtx_t* sp5C;
Effect65FXData* data = ((EffectInstance*)effect)->data.unk_65;
Matrix4f mtx;
s32 lifeTime;
s32 variation;
f32 scale;
Vtx_t* vtxBuffer;
Vtx_t* vtx;
s32 sp60;
s32 sp64;
s32 sp68;
f32 temp_f0;
f32 temp_f20;
f32 sp58;
f32 temp_f22;
f32 temp_f24;
f32 temp_f26;
f32 temp_f28;
f32 temp_f2;
f32 var_f12;
f32 var_f20;
f32 var_f30;
s32 primAlpha;
s32 temp_s5_2;
s32 var_fp;
s32 temp_s1;
s32 a;
s32 r, g, b;
s32 firstPointIdx;
s32 baseTexOffset;
s32 phase;
f32 deltaY;
f32 deltaX;
s32 idx; //s3
s32 next; //v1
f32 width;
f32 pathPointX;
f32 pathPointY;
f32 pathPointZ;
f32 deltaAngle;
f32 prevAngle;
f32 nextAngle;
f32 angle;
s32 primAlpha;
s32 texOffsetX;
s32 numPoints;
s32 pathPointLifetime;
s32 r, g, b, a;
f32 deltaZ;
s32 idx;
s32 next;
s32 prev;
s32 i;
s32 fadeOutPhase;
float new_var;
primAlpha = data->unk_24;
sp50 = data->unk_14;
sp54 = data->unk_00;
sp58 = data->unk_34;
lifeTime = data->lifeTime;
primAlpha = data->alpha;
variation = data->variation;
scale = data->scale;
gDPPipeSync(gMainGfxPos++);
gSPSegment(gMainGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(((EffectInstance*)effect)->graphics->data));
shim_guTranslateF(sp10, 0.0f, 0.0f, 0.0f);
shim_guMtxF2L(sp10, &gDisplayContext->matrixStack[gMatrixListPos]);
shim_guTranslateF(mtx, 0.0f, 0.0f, 0.0f);
shim_guMtxF2L(mtx, &gDisplayContext->matrixStack[gMatrixListPos]);
gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(gMainGfxPos++, D_E00CACB0[sp54]);
gSPDisplayList(gMainGfxPos++, D_E00CACB0[variation]);
if (sp54 >= 2) {
if (variation >= 2) {
gDPSetCombineLERP(gMainGfxPos++, SHADE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, COMBINED, COMBINED, 0, PRIMITIVE, 0);
}
gDPSetPrimColor(gMainGfxPos++, 0, 0, data->unk_18, data->unk_1C, data->unk_20, primAlpha);
gDPSetEnvColor(gMainGfxPos++, data->unk_28, data->unk_2C, data->unk_30, 0);
gDPSetPrimColor(gMainGfxPos++, 0, 0, data->primR, data->primG, data->primB, primAlpha);
gDPSetEnvColor(gMainGfxPos++, data->envR, data->envG, data->envB, 0);
gSPBranchList(gMainGfxPos, gMainGfxPos + 0x79);
sp5C = (Vtx_t*) (gMainGfxPos + 1);
sp60 = -1;
sp64 = (sp50 & 0x3F) << 5;
vtxBuffer = (Vtx_t*) (gMainGfxPos + 1);
firstPointIdx = -1;
baseTexOffset = (lifeTime & 0x3F) << 5;
gMainGfxPos += 0x79;
// use i in iteration?
var_fp = 0;
for (i = 0; i < 30; i++) {
numPoints = 0;
for (i = 0; i < MAX_POINTS; i++) {
s32 a1 = i + 1;
s32 idx = (data->unk_2A8 + a1) % 30;
if (data->unk_230[idx]) {
var_fp++;
s32 idx = (data->lastPointIndex + a1) % MAX_POINTS;
if (data->pathPointEnabled[idx]) {
numPoints++;
}
}
var_fp--;
if (var_fp > 0) {
sp68 = 0;
for (i = 0; i < 30; i++) {
numPoints--;
if (numPoints > 0) {
phase = 0;
for (i = 0; i < MAX_POINTS; i++) {
s32 a1 = i + 1;
vtx = &sp5C[i * 2];
prev = sp68 / var_fp;
idx = (data->unk_2A8 + a1) % 30;
a = shim_sin_deg(prev) * 255.0f;
vtx = &vtxBuffer[i * 2];
fadeOutPhase = phase / numPoints;
idx = (data->lastPointIndex + a1) % MAX_POINTS;
a = shim_sin_deg(fadeOutPhase) * 255.0f;
if (a > 200) {
a = 200;
}
if (data->unk_230[idx]) {
if (sp60 == -1) {
do {
next = idx + 1;
if (next >= 30) {
next = 0;
}
sp60 = i;
var_f30 = -shim_atan2(data->unk_C8[next], -data->unk_50[next], data->unk_C8[idx], -data->unk_50[idx]);
} while (0); // TODO required to match
} else {
if (i != 29) {
next = idx + 1;
prev = idx - 1;
if (next >= 30) {
next = 0;
}
if (prev < 0) {
prev = 29;
}
var_f20 = -shim_atan2(data->unk_C8[next], -data->unk_50[next], data->unk_C8[idx], -data->unk_50[idx]);
var_f12 = -shim_atan2(data->unk_C8[idx], -data->unk_50[idx], data->unk_C8[prev], -data->unk_50[prev]);
temp_f2 = var_f12 - var_f20;
if (temp_f2 > 180.0f) {
var_f20 += 360.0f;
} else if (temp_f2 < -180.0f) {
var_f12 += 360.0f;
}
var_f30 = (var_f20 + var_f12);
var_f30 *= 0.5;
}
}
temp_f24 = data->unk_50[idx];
temp_f26 = data->unk_C8[idx];
temp_f28 = data->unk_140[idx];
new_var = 24.0f;
//temp_v1 = data->unk_1B8[idx];
temp_s1 = sp50 - data->unk_1B8[idx];
temp_f22 = (shim_sin_deg((sp50 - data->unk_1B8[idx] * 80) * 4) * 3.0f + 16.0f + temp_s1);
temp_f22 *= sp58;
temp_s5_2 = sp64;
temp_s5_2 = (data->unk_2AC[idx] * new_var) + temp_s5_2;
do {} while (0);
r = 255;
g = 255;
b = 255 - temp_s1 * 100;
if (b < 0) {
g = (f32) b * 0.8 + 255.0;
b = 0;
if (g < 0) {
r = (f32) g * 0.4 + 255.0;
g = 0;
sp54 = r < 0;
if (sp54) {
r = 0;
}
}
}
temp_f20 = temp_f22 * shim_sin_deg(var_f30);
temp_f0 = temp_f22 * shim_cos_deg(var_f30);
vtx->ob[0] = temp_f24 + temp_f20;
vtx->ob[1] = temp_f26 + temp_f0;
vtx->ob[2] = temp_f28 + 0.0f;
vtx->tc[0] = temp_s5_2;
vtx->tc[1] = 0x400;
vtx->cn[0] = r;
vtx->cn[1] = g;
vtx->cn[2] = b;
vtx->cn[3] = a;
vtx++;
vtx->ob[0] = temp_f24 - temp_f20;
vtx->ob[1] = temp_f26 - temp_f0;
vtx->ob[2] = temp_f28 + 0.0f;
vtx->tc[0] = temp_s5_2;
vtx->tc[1] = 0;
vtx->cn[0] = r;
vtx->cn[1] = g;
vtx->cn[2] = b;
vtx->cn[3] = a;
vtx++;
sp68 += 180;
if (!data->pathPointEnabled[idx]) {
continue;
}
if (firstPointIdx == -1) {
next = idx + 1;
if (next >= MAX_POINTS) {
next = 0;
}
firstPointIdx = i;
angle = -shim_atan2(data->pathY[next], -data->pathX[next], data->pathY[idx], -data->pathX[idx]);
} else {
if (i != MAX_POINTS - 1) {
next = idx + 1;
prev = idx - 1;
if (next >= MAX_POINTS) {
next = 0;
}
if (prev < 0) {
prev = MAX_POINTS - 1;
}
nextAngle = -shim_atan2(data->pathY[next], -data->pathX[next], data->pathY[idx], -data->pathX[idx]);
prevAngle = -shim_atan2(data->pathY[idx], -data->pathX[idx], data->pathY[prev], -data->pathX[prev]);
deltaAngle = prevAngle - nextAngle;
if (deltaAngle > 180.0f) {
nextAngle += 360.0f;
} else if (deltaAngle < -180.0f) {
prevAngle += 360.0f;
}
angle = nextAngle + prevAngle;
angle *= 0.5;
}
}
pathPointX = data->pathX[idx];
pathPointY = data->pathY[idx];
pathPointZ = data->pathZ[idx];
pathPointLifetime = lifeTime - data->pathTimestamp[idx];
width = shim_sin_deg((lifeTime - data->pathTimestamp[idx] * 80) * 4) * 3.0f + 16.0f + pathPointLifetime;
width *= scale;
if (variation >= 0) {
texOffsetX = (data->pathLength[idx] * 24.0f) + baseTexOffset;
} else {
texOffsetX = (data->pathLength[idx] * 24.0f) + baseTexOffset;
}
r = 255;
g = 255;
b = 255 - pathPointLifetime * 100;
if (b < 0) {
g = (f32) b * 0.8 + 255.0;
b = 0;
if (g < 0) {
r = (f32) g * 0.4 + 255.0;
g = 0;
if (r < 0) {
r = 0;
}
}
}
deltaX = width * shim_sin_deg(angle);
deltaY = width * shim_cos_deg(angle);
deltaZ = 0.0f;
vtx->ob[0] = pathPointX + deltaX;
vtx->ob[1] = pathPointY + deltaY;
vtx->ob[2] = pathPointZ + deltaZ;
vtx->tc[0] = texOffsetX;
vtx->tc[1] = 0x400;
vtx->cn[0] = r;
vtx->cn[1] = g;
vtx->cn[2] = b;
vtx->cn[3] = a;
vtx++;
vtx->ob[0] = pathPointX - deltaX;
vtx->ob[1] = pathPointY - deltaY;
vtx->ob[2] = pathPointZ + deltaZ;
vtx->tc[0] = texOffsetX;
vtx->tc[1] = 0;
vtx->cn[0] = r;
vtx->cn[1] = g;
vtx->cn[2] = b;
vtx->cn[3] = a;
vtx++;
phase += 180;
}
for (i = sp60; i < 29; i++) {
gSPVertex(gMainGfxPos++, &sp5C[i * 2], 4, 0);
for (i = firstPointIdx; i < MAX_POINTS - 1; i++) {
gSPVertex(gMainGfxPos++, &vtxBuffer[i * 2], 4, 0);
gSP2Triangles(gMainGfxPos++, 0, 2, 1, 0, 1, 2, 3, 0);
}
}
gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
}
#else
INCLUDE_ASM(s32, "effects/effect_65", effect_65_appendGfx);
#endif

View File

@ -161,19 +161,19 @@ EvtScript N(EVS_SpawnPyroclasts) = {
EVT_EXEC(N(EVS_PlayPyroclastSounds))
EVT_SWITCH(LVar0)
EVT_CASE_EQ(0)
EVT_PLAY_EFFECT(EFFECT_65, 2, 50, 2650, -20, 1)
EVT_PLAY_EFFECT(EFFECT_65, 2, 50, 2650, -20, 1, 0)
EVT_SET(LVarE, LVarF)
EVT_CALL(LoadPath, 15, EVT_PTR(N(PyroclastPathA)), ARRAY_COUNT(N(PyroclastPathA)), EASING_QUADRATIC_OUT)
EVT_CASE_EQ(1)
EVT_PLAY_EFFECT(EFFECT_65, 2, -20, 2650, -20, 1)
EVT_PLAY_EFFECT(EFFECT_65, 2, -20, 2650, -20, 1, 0)
EVT_SET(LVarE, LVarF)
EVT_CALL(LoadPath, 10, EVT_PTR(N(PyroclastPathB)), ARRAY_COUNT(N(PyroclastPathB)), EASING_QUADRATIC_OUT)
EVT_CASE_EQ(2)
EVT_PLAY_EFFECT(EFFECT_65, 2, 10, 2650, -20, 1)
EVT_PLAY_EFFECT(EFFECT_65, 2, 10, 2650, -20, 1, 0)
EVT_SET(LVarE, LVarF)
EVT_CALL(LoadPath, 15, EVT_PTR(N(PyroclastPathC)), ARRAY_COUNT(N(PyroclastPathC)), EASING_QUADRATIC_OUT)
EVT_CASE_EQ(3)
EVT_PLAY_EFFECT(EFFECT_65, 2, -50, 2650, -20, 1)
EVT_PLAY_EFFECT(EFFECT_65, 2, -50, 2650, -20, 1, 0)
EVT_SET(LVarE, LVarF)
EVT_CALL(LoadPath, 20, EVT_PTR(N(PyroclastPathD)), ARRAY_COUNT(N(PyroclastPathD)), EASING_QUADRATIC_OUT)
EVT_END_SWITCH

View File

@ -161,19 +161,19 @@ EvtScript N(EVS_SpawnPyroclasts) = {
EVT_EXEC(N(EVS_PlayPyroclastSounds))
EVT_SWITCH(LVar0)
EVT_CASE_EQ(0)
EVT_PLAY_EFFECT(EFFECT_65, 2, 50, 2650, -20, 1)
EVT_PLAY_EFFECT(EFFECT_65, 2, 50, 2650, -20, 1, 0)
EVT_SET(LVarE, LVarF)
EVT_CALL(LoadPath, 15, EVT_PTR(N(PyroclastPathA)), ARRAY_COUNT(N(PyroclastPathA)), EASING_QUADRATIC_OUT)
EVT_CASE_EQ(1)
EVT_PLAY_EFFECT(EFFECT_65, 2, -20, 2650, -20, 1)
EVT_PLAY_EFFECT(EFFECT_65, 2, -20, 2650, -20, 1, 0)
EVT_SET(LVarE, LVarF)
EVT_CALL(LoadPath, 10, EVT_PTR(N(PyroclastPathB)), ARRAY_COUNT(N(PyroclastPathB)), EASING_QUADRATIC_OUT)
EVT_CASE_EQ(2)
EVT_PLAY_EFFECT(EFFECT_65, 2, 10, 2650, -20, 1)
EVT_PLAY_EFFECT(EFFECT_65, 2, 10, 2650, -20, 1, 0)
EVT_SET(LVarE, LVarF)
EVT_CALL(LoadPath, 15, EVT_PTR(N(PyroclastPathC)), ARRAY_COUNT(N(PyroclastPathC)), EASING_QUADRATIC_OUT)
EVT_CASE_EQ(3)
EVT_PLAY_EFFECT(EFFECT_65, 2, -50, 2650, -20, 1)
EVT_PLAY_EFFECT(EFFECT_65, 2, -50, 2650, -20, 1, 0)
EVT_SET(LVarE, LVarF)
EVT_CALL(LoadPath, 20, EVT_PTR(N(PyroclastPathD)), ARRAY_COUNT(N(PyroclastPathD)), EASING_QUADRATIC_OUT)
EVT_END_SWITCH

View File

@ -1,544 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_E00CACC0
.double 0.8
dlabel D_E00CACC8
.double 255.0
dlabel D_E00CACD0
.double 0.4
dlabel D_E00CACD8
.double 255.0
.section .text
glabel fx_65_appendGfx
/* 3D09CC E00CA4CC 27BDFF38 */ addiu $sp, $sp, -0xc8
/* 3D09D0 E00CA4D0 0080482D */ daddu $t1, $a0, $zero
/* 3D09D4 E00CA4D4 3C0ADB06 */ lui $t2, 0xdb06
/* 3D09D8 E00CA4D8 354A0024 */ ori $t2, $t2, 0x24
/* 3D09DC E00CA4DC 27A40010 */ addiu $a0, $sp, 0x10
/* 3D09E0 E00CA4E0 AFB20078 */ sw $s2, 0x78($sp)
/* 3D09E4 E00CA4E4 3C120001 */ lui $s2, 1
/* 3D09E8 E00CA4E8 44800000 */ mtc1 $zero, $f0
/* 3D09EC E00CA4EC 36521630 */ ori $s2, $s2, 0x2230
/* 3D09F0 E00CA4F0 AFB3007C */ sw $s3, 0x7c($sp)
/* 3D09F4 E00CA4F4 3C13800A */ lui $s3, %hi(gMainGfxPos)
/* 3D09F8 E00CA4F8 2673A66C */ addiu $s3, $s3, %lo(gMainGfxPos)
/* 3D09FC E00CA4FC AFBF0094 */ sw $ra, 0x94($sp)
/* 3D0A00 E00CA500 AFBE0090 */ sw $fp, 0x90($sp)
/* 3D0A04 E00CA504 AFB7008C */ sw $s7, 0x8c($sp)
/* 3D0A08 E00CA508 AFB60088 */ sw $s6, 0x88($sp)
/* 3D0A0C E00CA50C AFB50084 */ sw $s5, 0x84($sp)
/* 3D0A10 E00CA510 AFB40080 */ sw $s4, 0x80($sp)
/* 3D0A14 E00CA514 AFB10074 */ sw $s1, 0x74($sp)
/* 3D0A18 E00CA518 AFB00070 */ sw $s0, 0x70($sp)
/* 3D0A1C E00CA51C F7BE00C0 */ sdc1 $f30, 0xc0($sp)
/* 3D0A20 E00CA520 F7BC00B8 */ sdc1 $f28, 0xb8($sp)
/* 3D0A24 E00CA524 F7BA00B0 */ sdc1 $f26, 0xb0($sp)
/* 3D0A28 E00CA528 F7B800A8 */ sdc1 $f24, 0xa8($sp)
/* 3D0A2C E00CA52C F7B600A0 */ sdc1 $f22, 0xa0($sp)
/* 3D0A30 E00CA530 F7B40098 */ sdc1 $f20, 0x98($sp)
/* 3D0A34 E00CA534 8E680000 */ lw $t0, ($s3)
/* 3D0A38 E00CA538 8D36000C */ lw $s6, 0xc($t1)
/* 3D0A3C E00CA53C 0100182D */ daddu $v1, $t0, $zero
/* 3D0A40 E00CA540 44050000 */ mfc1 $a1, $f0
/* 3D0A44 E00CA544 25080008 */ addiu $t0, $t0, 8
/* 3D0A48 E00CA548 AE680000 */ sw $t0, ($s3)
/* 3D0A4C E00CA54C 8ECB0014 */ lw $t3, 0x14($s6)
/* 3D0A50 E00CA550 3C02E700 */ lui $v0, 0xe700
/* 3D0A54 E00CA554 AFAB0050 */ sw $t3, 0x50($sp)
/* 3D0A58 E00CA558 8ED50024 */ lw $s5, 0x24($s6)
/* 3D0A5C E00CA55C 8ECB0000 */ lw $t3, ($s6)
/* 3D0A60 E00CA560 00A0302D */ daddu $a2, $a1, $zero
/* 3D0A64 E00CA564 AFAB0054 */ sw $t3, 0x54($sp)
/* 3D0A68 E00CA568 C6C60034 */ lwc1 $f6, 0x34($s6)
/* 3D0A6C E00CA56C 00A0382D */ daddu $a3, $a1, $zero
/* 3D0A70 E00CA570 E7A60058 */ swc1 $f6, 0x58($sp)
/* 3D0A74 E00CA574 AC620000 */ sw $v0, ($v1)
/* 3D0A78 E00CA578 AC600004 */ sw $zero, 4($v1)
/* 3D0A7C E00CA57C AD0A0000 */ sw $t2, ($t0)
/* 3D0A80 E00CA580 8D230010 */ lw $v1, 0x10($t1)
/* 3D0A84 E00CA584 25020008 */ addiu $v0, $t0, 8
/* 3D0A88 E00CA588 AE620000 */ sw $v0, ($s3)
/* 3D0A8C E00CA58C 8C62001C */ lw $v0, 0x1c($v1)
/* 3D0A90 E00CA590 3C038000 */ lui $v1, 0x8000
/* 3D0A94 E00CA594 00431021 */ addu $v0, $v0, $v1
/* 3D0A98 E00CA598 0C080108 */ jal shim_guTranslateF
/* 3D0A9C E00CA59C AD020004 */ sw $v0, 4($t0)
/* 3D0AA0 E00CA5A0 27A40010 */ addiu $a0, $sp, 0x10
/* 3D0AA4 E00CA5A4 3C108007 */ lui $s0, %hi(gMatrixListPos)
/* 3D0AA8 E00CA5A8 261041F0 */ addiu $s0, $s0, %lo(gMatrixListPos)
/* 3D0AAC E00CA5AC 3C11800A */ lui $s1, %hi(gDisplayContext)
/* 3D0AB0 E00CA5B0 2631A674 */ addiu $s1, $s1, %lo(gDisplayContext)
/* 3D0AB4 E00CA5B4 96050000 */ lhu $a1, ($s0)
/* 3D0AB8 E00CA5B8 8E220000 */ lw $v0, ($s1)
/* 3D0ABC E00CA5BC 00052980 */ sll $a1, $a1, 6
/* 3D0AC0 E00CA5C0 00B22821 */ addu $a1, $a1, $s2
/* 3D0AC4 E00CA5C4 0C080118 */ jal shim_guMtxF2L
/* 3D0AC8 E00CA5C8 00452821 */ addu $a1, $v0, $a1
/* 3D0ACC E00CA5CC 3C03DA38 */ lui $v1, 0xda38
/* 3D0AD0 E00CA5D0 34630002 */ ori $v1, $v1, 2
/* 3D0AD4 E00CA5D4 8E650000 */ lw $a1, ($s3)
/* 3D0AD8 E00CA5D8 96020000 */ lhu $v0, ($s0)
/* 3D0ADC E00CA5DC 00A0202D */ daddu $a0, $a1, $zero
/* 3D0AE0 E00CA5E0 24A50008 */ addiu $a1, $a1, 8
/* 3D0AE4 E00CA5E4 AE650000 */ sw $a1, ($s3)
/* 3D0AE8 E00CA5E8 AC830000 */ sw $v1, ($a0)
/* 3D0AEC E00CA5EC 24430001 */ addiu $v1, $v0, 1
/* 3D0AF0 E00CA5F0 3042FFFF */ andi $v0, $v0, 0xffff
/* 3D0AF4 E00CA5F4 00021180 */ sll $v0, $v0, 6
/* 3D0AF8 E00CA5F8 A6030000 */ sh $v1, ($s0)
/* 3D0AFC E00CA5FC 8E230000 */ lw $v1, ($s1)
/* 3D0B00 E00CA600 00521021 */ addu $v0, $v0, $s2
/* 3D0B04 E00CA604 00621821 */ addu $v1, $v1, $v0
/* 3D0B08 E00CA608 3C02DE00 */ lui $v0, 0xde00
/* 3D0B0C E00CA60C AC830004 */ sw $v1, 4($a0)
/* 3D0B10 E00CA610 ACA20000 */ sw $v0, ($a1)
/* 3D0B14 E00CA614 8FAB0054 */ lw $t3, 0x54($sp)
/* 3D0B18 E00CA618 000B1080 */ sll $v0, $t3, 2
/* 3D0B1C E00CA61C 3C03E00D */ lui $v1, %hi(D_E00CACB0)
/* 3D0B20 E00CA620 00621821 */ addu $v1, $v1, $v0
/* 3D0B24 E00CA624 8C63ACB0 */ lw $v1, %lo(D_E00CACB0)($v1)
/* 3D0B28 E00CA628 24A20008 */ addiu $v0, $a1, 8
/* 3D0B2C E00CA62C AE620000 */ sw $v0, ($s3)
/* 3D0B30 E00CA630 29620002 */ slti $v0, $t3, 2
/* 3D0B34 E00CA634 14400009 */ bnez $v0, .LE00CA65C
/* 3D0B38 E00CA638 ACA30004 */ sw $v1, 4($a1)
/* 3D0B3C E00CA63C 3C04FC40 */ lui $a0, 0xfc40
/* 3D0B40 E00CA640 348499FF */ ori $a0, $a0, 0x99ff
/* 3D0B44 E00CA644 3C035F0E */ lui $v1, 0x5f0e
/* 3D0B48 E00CA648 3463FE3F */ ori $v1, $v1, 0xfe3f
/* 3D0B4C E00CA64C 24A20010 */ addiu $v0, $a1, 0x10
/* 3D0B50 E00CA650 AE620000 */ sw $v0, ($s3)
/* 3D0B54 E00CA654 ACA40008 */ sw $a0, 8($a1)
/* 3D0B58 E00CA658 ACA3000C */ sw $v1, 0xc($a1)
.LE00CA65C:
/* 3D0B5C E00CA65C 240BFFFF */ addiu $t3, $zero, -1
/* 3D0B60 E00CA660 0000F02D */ daddu $fp, $zero, $zero
/* 3D0B64 E00CA664 03C0A02D */ daddu $s4, $fp, $zero
/* 3D0B68 E00CA668 3C088888 */ lui $t0, 0x8888
/* 3D0B6C E00CA66C AFAB0060 */ sw $t3, 0x60($sp)
/* 3D0B70 E00CA670 8FAB0050 */ lw $t3, 0x50($sp)
/* 3D0B74 E00CA674 35088889 */ ori $t0, $t0, 0x8889
/* 3D0B78 E00CA678 3162003F */ andi $v0, $t3, 0x3f
/* 3D0B7C E00CA67C 00021140 */ sll $v0, $v0, 5
/* 3D0B80 E00CA680 AFA20064 */ sw $v0, 0x64($sp)
/* 3D0B84 E00CA684 8E660000 */ lw $a2, ($s3)
/* 3D0B88 E00CA688 3C02FA00 */ lui $v0, 0xfa00
/* 3D0B8C E00CA68C 00C0382D */ daddu $a3, $a2, $zero
/* 3D0B90 E00CA690 24C60008 */ addiu $a2, $a2, 8
/* 3D0B94 E00CA694 24CB0010 */ addiu $t3, $a2, 0x10
/* 3D0B98 E00CA698 AFAB005C */ sw $t3, 0x5c($sp)
/* 3D0B9C E00CA69C AE660000 */ sw $a2, ($s3)
/* 3D0BA0 E00CA6A0 ACE20000 */ sw $v0, ($a3)
/* 3D0BA4 E00CA6A4 92C2001B */ lbu $v0, 0x1b($s6)
/* 3D0BA8 E00CA6A8 92C4001F */ lbu $a0, 0x1f($s6)
/* 3D0BAC E00CA6AC 92C50023 */ lbu $a1, 0x23($s6)
/* 3D0BB0 E00CA6B0 24C30008 */ addiu $v1, $a2, 8
/* 3D0BB4 E00CA6B4 AE630000 */ sw $v1, ($s3)
/* 3D0BB8 E00CA6B8 32A300FF */ andi $v1, $s5, 0xff
/* 3D0BBC E00CA6BC 00021600 */ sll $v0, $v0, 0x18
/* 3D0BC0 E00CA6C0 00042400 */ sll $a0, $a0, 0x10
/* 3D0BC4 E00CA6C4 00441025 */ or $v0, $v0, $a0
/* 3D0BC8 E00CA6C8 00052A00 */ sll $a1, $a1, 8
/* 3D0BCC E00CA6CC 00451025 */ or $v0, $v0, $a1
/* 3D0BD0 E00CA6D0 00431025 */ or $v0, $v0, $v1
/* 3D0BD4 E00CA6D4 ACE20004 */ sw $v0, 4($a3)
/* 3D0BD8 E00CA6D8 3C02FB00 */ lui $v0, 0xfb00
/* 3D0BDC E00CA6DC ACC20000 */ sw $v0, ($a2)
/* 3D0BE0 E00CA6E0 92C3002B */ lbu $v1, 0x2b($s6)
/* 3D0BE4 E00CA6E4 92C4002F */ lbu $a0, 0x2f($s6)
/* 3D0BE8 E00CA6E8 92C50033 */ lbu $a1, 0x33($s6)
/* 3D0BEC E00CA6EC 3C02DE01 */ lui $v0, 0xde01
/* 3D0BF0 E00CA6F0 ACC20008 */ sw $v0, 8($a2)
/* 3D0BF4 E00CA6F4 24C203D0 */ addiu $v0, $a2, 0x3d0
/* 3D0BF8 E00CA6F8 ACC2000C */ sw $v0, 0xc($a2)
/* 3D0BFC E00CA6FC AE620000 */ sw $v0, ($s3)
/* 3D0C00 E00CA700 00031E00 */ sll $v1, $v1, 0x18
/* 3D0C04 E00CA704 00042400 */ sll $a0, $a0, 0x10
/* 3D0C08 E00CA708 00641825 */ or $v1, $v1, $a0
/* 3D0C0C E00CA70C 00052A00 */ sll $a1, $a1, 8
/* 3D0C10 E00CA710 00651825 */ or $v1, $v1, $a1
/* 3D0C14 E00CA714 ACC30004 */ sw $v1, 4($a2)
/* 3D0C18 E00CA718 8EC602A8 */ lw $a2, 0x2a8($s6)
/* 3D0C1C E00CA71C 26850001 */ addiu $a1, $s4, 1
.LE00CA720:
/* 3D0C20 E00CA720 00C52021 */ addu $a0, $a2, $a1
/* 3D0C24 E00CA724 00880018 */ mult $a0, $t0
/* 3D0C28 E00CA728 00041FC3 */ sra $v1, $a0, 0x1f
/* 3D0C2C E00CA72C 00005810 */ mfhi $t3
/* 3D0C30 E00CA730 01641021 */ addu $v0, $t3, $a0
/* 3D0C34 E00CA734 00021103 */ sra $v0, $v0, 4
/* 3D0C38 E00CA738 00431823 */ subu $v1, $v0, $v1
/* 3D0C3C E00CA73C 00031100 */ sll $v0, $v1, 4
/* 3D0C40 E00CA740 00431023 */ subu $v0, $v0, $v1
/* 3D0C44 E00CA744 00021040 */ sll $v0, $v0, 1
/* 3D0C48 E00CA748 00821823 */ subu $v1, $a0, $v0
/* 3D0C4C E00CA74C 00031080 */ sll $v0, $v1, 2
/* 3D0C50 E00CA750 02C21021 */ addu $v0, $s6, $v0
/* 3D0C54 E00CA754 8C420230 */ lw $v0, 0x230($v0)
/* 3D0C58 E00CA758 54400001 */ bnel $v0, $zero, .LE00CA760
/* 3D0C5C E00CA75C 27DE0001 */ addiu $fp, $fp, 1
.LE00CA760:
/* 3D0C60 E00CA760 00A0A02D */ daddu $s4, $a1, $zero
/* 3D0C64 E00CA764 2A82001E */ slti $v0, $s4, 0x1e
/* 3D0C68 E00CA768 1440FFED */ bnez $v0, .LE00CA720
/* 3D0C6C E00CA76C 26850001 */ addiu $a1, $s4, 1
/* 3D0C70 E00CA770 27DEFFFF */ addiu $fp, $fp, -1
/* 3D0C74 E00CA774 1BC00130 */ blez $fp, .LE00CAC38
/* 3D0C78 E00CA778 0000A02D */ daddu $s4, $zero, $zero
/* 3D0C7C E00CA77C AFA00068 */ sw $zero, 0x68($sp)
.LE00CA780:
/* 3D0C80 E00CA780 8FAB0068 */ lw $t3, 0x68($sp)
/* 3D0C84 E00CA784 17C00002 */ bnez $fp, .LE00CA790
/* 3D0C88 E00CA788 017E001A */ div $zero, $t3, $fp
/* 3D0C8C E00CA78C 0007000D */ break 7
.LE00CA790:
/* 3D0C90 E00CA790 2401FFFF */ addiu $at, $zero, -1
/* 3D0C94 E00CA794 17C10004 */ bne $fp, $at, .LE00CA7A8
/* 3D0C98 E00CA798 3C018000 */ lui $at, 0x8000
/* 3D0C9C E00CA79C 15610002 */ bne $t3, $at, .LE00CA7A8
/* 3D0CA0 E00CA7A0 00000000 */ nop
/* 3D0CA4 E00CA7A4 0006000D */ break 6
.LE00CA7A8:
/* 3D0CA8 E00CA7A8 00002812 */ mflo $a1
/* 3D0CAC E00CA7AC 3C038888 */ lui $v1, 0x8888
/* 3D0CB0 E00CA7B0 34638889 */ ori $v1, $v1, 0x8889
/* 3D0CB4 E00CA7B4 8EC402A8 */ lw $a0, 0x2a8($s6)
/* 3D0CB8 E00CA7B8 26820001 */ addiu $v0, $s4, 1
/* 3D0CBC E00CA7BC 00822021 */ addu $a0, $a0, $v0
/* 3D0CC0 E00CA7C0 00830018 */ mult $a0, $v1
/* 3D0CC4 E00CA7C4 8FAB005C */ lw $t3, 0x5c($sp)
/* 3D0CC8 E00CA7C8 00141140 */ sll $v0, $s4, 5
/* 3D0CCC E00CA7CC 01629021 */ addu $s2, $t3, $v0
/* 3D0CD0 E00CA7D0 00001810 */ mfhi $v1
/* 3D0CD4 E00CA7D4 00641021 */ addu $v0, $v1, $a0
/* 3D0CD8 E00CA7D8 00021103 */ sra $v0, $v0, 4
/* 3D0CDC E00CA7DC 00041FC3 */ sra $v1, $a0, 0x1f
/* 3D0CE0 E00CA7E0 00439823 */ subu $s3, $v0, $v1
/* 3D0CE4 E00CA7E4 00131100 */ sll $v0, $s3, 4
/* 3D0CE8 E00CA7E8 00531023 */ subu $v0, $v0, $s3
/* 3D0CEC E00CA7EC 00021040 */ sll $v0, $v0, 1
/* 3D0CF0 E00CA7F0 44856000 */ mtc1 $a1, $f12
/* 3D0CF4 E00CA7F4 00000000 */ nop
/* 3D0CF8 E00CA7F8 46806320 */ cvt.s.w $f12, $f12
/* 3D0CFC E00CA7FC 0C080140 */ jal shim_sin_deg
/* 3D0D00 E00CA800 00829823 */ subu $s3, $a0, $v0
/* 3D0D04 E00CA804 3C01437F */ lui $at, 0x437f
/* 3D0D08 E00CA808 44811000 */ mtc1 $at, $f2
/* 3D0D0C E00CA80C 00000000 */ nop
/* 3D0D10 E00CA810 46020002 */ mul.s $f0, $f0, $f2
/* 3D0D14 E00CA814 00000000 */ nop
/* 3D0D18 E00CA818 4600018D */ trunc.w.s $f6, $f0
/* 3D0D1C E00CA81C 44173000 */ mfc1 $s7, $f6
/* 3D0D20 E00CA820 00000000 */ nop
/* 3D0D24 E00CA824 2AE200C9 */ slti $v0, $s7, 0xc9
/* 3D0D28 E00CA828 50400001 */ beql $v0, $zero, .LE00CA830
/* 3D0D2C E00CA82C 241700C8 */ addiu $s7, $zero, 0xc8
.LE00CA830:
/* 3D0D30 E00CA830 00131080 */ sll $v0, $s3, 2
/* 3D0D34 E00CA834 02C28021 */ addu $s0, $s6, $v0
/* 3D0D38 E00CA838 8E020230 */ lw $v0, 0x230($s0)
/* 3D0D3C E00CA83C 504000DF */ beql $v0, $zero, .LE00CABBC
/* 3D0D40 E00CA840 26940001 */ addiu $s4, $s4, 1
/* 3D0D44 E00CA844 8FAB0060 */ lw $t3, 0x60($sp)
/* 3D0D48 E00CA848 2402FFFF */ addiu $v0, $zero, -1
/* 3D0D4C E00CA84C 15620012 */ bne $t3, $v0, .LE00CA898
/* 3D0D50 E00CA850 2402001D */ addiu $v0, $zero, 0x1d
/* 3D0D54 E00CA854 26630001 */ addiu $v1, $s3, 1
/* 3D0D58 E00CA858 2862001E */ slti $v0, $v1, 0x1e
/* 3D0D5C E00CA85C 50400001 */ beql $v0, $zero, .LE00CA864
/* 3D0D60 E00CA860 0000182D */ daddu $v1, $zero, $zero
.LE00CA864:
/* 3D0D64 E00CA864 00031080 */ sll $v0, $v1, 2
/* 3D0D68 E00CA868 02C21021 */ addu $v0, $s6, $v0
/* 3D0D6C E00CA86C AFB40060 */ sw $s4, 0x60($sp)
/* 3D0D70 E00CA870 C44C00C8 */ lwc1 $f12, 0xc8($v0)
/* 3D0D74 E00CA874 8E0600C8 */ lw $a2, 0xc8($s0)
/* 3D0D78 E00CA878 C6000050 */ lwc1 $f0, 0x50($s0)
/* 3D0D7C E00CA87C C44E0050 */ lwc1 $f14, 0x50($v0)
/* 3D0D80 E00CA880 46000007 */ neg.s $f0, $f0
/* 3D0D84 E00CA884 44070000 */ mfc1 $a3, $f0
/* 3D0D88 E00CA888 0C080148 */ jal shim_atan2
/* 3D0D8C E00CA88C 46007387 */ neg.s $f14, $f14
/* 3D0D90 E00CA890 08032A63 */ j .LE00CA98C
/* 3D0D94 E00CA894 46000787 */ neg.s $f30, $f0
.LE00CA898:
/* 3D0D98 E00CA898 1282003C */ beq $s4, $v0, .LE00CA98C
/* 3D0D9C E00CA89C 26630001 */ addiu $v1, $s3, 1
/* 3D0DA0 E00CA8A0 2862001E */ slti $v0, $v1, 0x1e
/* 3D0DA4 E00CA8A4 14400002 */ bnez $v0, .LE00CA8B0
/* 3D0DA8 E00CA8A8 2671FFFF */ addiu $s1, $s3, -1
/* 3D0DAC E00CA8AC 0000182D */ daddu $v1, $zero, $zero
.LE00CA8B0:
/* 3D0DB0 E00CA8B0 06220001 */ bltzl $s1, .LE00CA8B8
/* 3D0DB4 E00CA8B4 2411001D */ addiu $s1, $zero, 0x1d
.LE00CA8B8:
/* 3D0DB8 E00CA8B8 00031080 */ sll $v0, $v1, 2
/* 3D0DBC E00CA8BC 02C21021 */ addu $v0, $s6, $v0
/* 3D0DC0 E00CA8C0 C44C00C8 */ lwc1 $f12, 0xc8($v0)
/* 3D0DC4 E00CA8C4 8E0600C8 */ lw $a2, 0xc8($s0)
/* 3D0DC8 E00CA8C8 C6000050 */ lwc1 $f0, 0x50($s0)
/* 3D0DCC E00CA8CC C44E0050 */ lwc1 $f14, 0x50($v0)
/* 3D0DD0 E00CA8D0 46000007 */ neg.s $f0, $f0
/* 3D0DD4 E00CA8D4 44070000 */ mfc1 $a3, $f0
/* 3D0DD8 E00CA8D8 0C080148 */ jal shim_atan2
/* 3D0DDC E00CA8DC 46007387 */ neg.s $f14, $f14
/* 3D0DE0 E00CA8E0 00111080 */ sll $v0, $s1, 2
/* 3D0DE4 E00CA8E4 02C21021 */ addu $v0, $s6, $v0
/* 3D0DE8 E00CA8E8 C60C00C8 */ lwc1 $f12, 0xc8($s0)
/* 3D0DEC E00CA8EC 8C4600C8 */ lw $a2, 0xc8($v0)
/* 3D0DF0 E00CA8F0 46000507 */ neg.s $f20, $f0
/* 3D0DF4 E00CA8F4 C4400050 */ lwc1 $f0, 0x50($v0)
/* 3D0DF8 E00CA8F8 C60E0050 */ lwc1 $f14, 0x50($s0)
/* 3D0DFC E00CA8FC 46000007 */ neg.s $f0, $f0
/* 3D0E00 E00CA900 44070000 */ mfc1 $a3, $f0
/* 3D0E04 E00CA904 0C080148 */ jal shim_atan2
/* 3D0E08 E00CA908 46007387 */ neg.s $f14, $f14
/* 3D0E0C E00CA90C 46000307 */ neg.s $f12, $f0
/* 3D0E10 E00CA910 46146081 */ sub.s $f2, $f12, $f20
/* 3D0E14 E00CA914 3C014334 */ lui $at, 0x4334
/* 3D0E18 E00CA918 44810000 */ mtc1 $at, $f0
/* 3D0E1C E00CA91C 00000000 */ nop
/* 3D0E20 E00CA920 4602003C */ c.lt.s $f0, $f2
/* 3D0E24 E00CA924 00000000 */ nop
/* 3D0E28 E00CA928 45000005 */ bc1f .LE00CA940
/* 3D0E2C E00CA92C 00000000 */ nop
/* 3D0E30 E00CA930 3C0143B4 */ lui $at, 0x43b4
/* 3D0E34 E00CA934 44813000 */ mtc1 $at, $f6
/* 3D0E38 E00CA938 08032A5B */ j .LE00CA96C
/* 3D0E3C E00CA93C 4606A500 */ add.s $f20, $f20, $f6
.LE00CA940:
/* 3D0E40 E00CA940 3C01C334 */ lui $at, 0xc334
/* 3D0E44 E00CA944 44810000 */ mtc1 $at, $f0
/* 3D0E48 E00CA948 00000000 */ nop
/* 3D0E4C E00CA94C 4600103C */ c.lt.s $f2, $f0
/* 3D0E50 E00CA950 00000000 */ nop
/* 3D0E54 E00CA954 45020006 */ bc1fl .LE00CA970
/* 3D0E58 E00CA958 460CA780 */ add.s $f30, $f20, $f12
/* 3D0E5C E00CA95C 3C0143B4 */ lui $at, 0x43b4
/* 3D0E60 E00CA960 44813000 */ mtc1 $at, $f6
/* 3D0E64 E00CA964 00000000 */ nop
/* 3D0E68 E00CA968 46066300 */ add.s $f12, $f12, $f6
.LE00CA96C:
/* 3D0E6C E00CA96C 460CA780 */ add.s $f30, $f20, $f12
.LE00CA970:
/* 3D0E70 E00CA970 3C013FE0 */ lui $at, 0x3fe0
/* 3D0E74 E00CA974 44811800 */ mtc1 $at, $f3
/* 3D0E78 E00CA978 44801000 */ mtc1 $zero, $f2
/* 3D0E7C E00CA97C 4600F021 */ cvt.d.s $f0, $f30
/* 3D0E80 E00CA980 46220002 */ mul.d $f0, $f0, $f2
/* 3D0E84 E00CA984 00000000 */ nop
/* 3D0E88 E00CA988 462007A0 */ cvt.s.d $f30, $f0
.LE00CA98C:
/* 3D0E8C E00CA98C 00131080 */ sll $v0, $s3, 2
/* 3D0E90 E00CA990 02C28021 */ addu $s0, $s6, $v0
/* 3D0E94 E00CA994 8E0301B8 */ lw $v1, 0x1b8($s0)
/* 3D0E98 E00CA998 8FAB0050 */ lw $t3, 0x50($sp)
/* 3D0E9C E00CA99C C6180050 */ lwc1 $f24, 0x50($s0)
/* 3D0EA0 E00CA9A0 C61A00C8 */ lwc1 $f26, 0xc8($s0)
/* 3D0EA4 E00CA9A4 C61C0140 */ lwc1 $f28, 0x140($s0)
/* 3D0EA8 E00CA9A8 00031080 */ sll $v0, $v1, 2
/* 3D0EAC E00CA9AC 00431021 */ addu $v0, $v0, $v1
/* 3D0EB0 E00CA9B0 00021100 */ sll $v0, $v0, 4
/* 3D0EB4 E00CA9B4 01621023 */ subu $v0, $t3, $v0
/* 3D0EB8 E00CA9B8 00021080 */ sll $v0, $v0, 2
/* 3D0EBC E00CA9BC 44826000 */ mtc1 $v0, $f12
/* 3D0EC0 E00CA9C0 00000000 */ nop
/* 3D0EC4 E00CA9C4 46806320 */ cvt.s.w $f12, $f12
/* 3D0EC8 E00CA9C8 0C080140 */ jal shim_sin_deg
/* 3D0ECC E00CA9CC 01638823 */ subu $s1, $t3, $v1
/* 3D0ED0 E00CA9D0 3C014040 */ lui $at, 0x4040
/* 3D0ED4 E00CA9D4 44811000 */ mtc1 $at, $f2
/* 3D0ED8 E00CA9D8 00000000 */ nop
/* 3D0EDC E00CA9DC 46020002 */ mul.s $f0, $f0, $f2
/* 3D0EE0 E00CA9E0 00000000 */ nop
/* 3D0EE4 E00CA9E4 3C014180 */ lui $at, 0x4180
/* 3D0EE8 E00CA9E8 44811000 */ mtc1 $at, $f2
/* 3D0EEC E00CA9EC 00000000 */ nop
/* 3D0EF0 E00CA9F0 46020000 */ add.s $f0, $f0, $f2
/* 3D0EF4 E00CA9F4 44911000 */ mtc1 $s1, $f2
/* 3D0EF8 E00CA9F8 00000000 */ nop
/* 3D0EFC E00CA9FC 468010A0 */ cvt.s.w $f2, $f2
/* 3D0F00 E00CAA00 46020580 */ add.s $f22, $f0, $f2
/* 3D0F04 E00CAA04 C7A60058 */ lwc1 $f6, 0x58($sp)
/* 3D0F08 E00CAA08 8FAB0054 */ lw $t3, 0x54($sp)
/* 3D0F0C E00CAA0C 4606B582 */ mul.s $f22, $f22, $f6
/* 3D0F10 E00CAA10 00000000 */ nop
/* 3D0F14 E00CAA14 C60002AC */ lwc1 $f0, 0x2ac($s0)
/* 3D0F18 E00CAA18 3C0141C0 */ lui $at, 0x41c0
/* 3D0F1C E00CAA1C 44813000 */ mtc1 $at, $f6
/* 3D0F20 E00CAA20 00000000 */ nop
/* 3D0F24 E00CAA24 46060002 */ mul.s $f0, $f0, $f6
/* 3D0F28 E00CAA28 00000000 */ nop
/* 3D0F2C E00CAA2C C7A20064 */ lwc1 $f2, 0x64($sp)
/* 3D0F30 E00CAA30 468010A0 */ cvt.s.w $f2, $f2
/* 3D0F34 E00CAA34 46020000 */ add.s $f0, $f0, $f2
/* 3D0F38 E00CAA38 4600018D */ trunc.w.s $f6, $f0
/* 3D0F3C E00CAA3C 44153000 */ mfc1 $s5, $f6
/* 3D0F40 E00CAA40 241300FF */ addiu $s3, $zero, 0xff
/* 3D0F44 E00CAA44 0260802D */ daddu $s0, $s3, $zero
/* 3D0F48 E00CAA48 00111040 */ sll $v0, $s1, 1
/* 3D0F4C E00CAA4C 00511021 */ addu $v0, $v0, $s1
/* 3D0F50 E00CAA50 000210C0 */ sll $v0, $v0, 3
/* 3D0F54 E00CAA54 00511021 */ addu $v0, $v0, $s1
/* 3D0F58 E00CAA58 00021080 */ sll $v0, $v0, 2
/* 3D0F5C E00CAA5C 02028823 */ subu $s1, $s0, $v0
/* 3D0F60 E00CAA60 06210022 */ bgez $s1, .LE00CAAEC
/* 3D0F64 E00CAA64 00000000 */ nop
/* 3D0F68 E00CAA68 44910000 */ mtc1 $s1, $f0
/* 3D0F6C E00CAA6C 00000000 */ nop
/* 3D0F70 E00CAA70 46800020 */ cvt.s.w $f0, $f0
/* 3D0F74 E00CAA74 3C01E00D */ lui $at, %hi(D_E00CACC0)
/* 3D0F78 E00CAA78 D422ACC0 */ ldc1 $f2, %lo(D_E00CACC0)($at)
/* 3D0F7C E00CAA7C 46000021 */ cvt.d.s $f0, $f0
/* 3D0F80 E00CAA80 46220002 */ mul.d $f0, $f0, $f2
/* 3D0F84 E00CAA84 00000000 */ nop
/* 3D0F88 E00CAA88 3C01E00D */ lui $at, %hi(D_E00CACC8)
/* 3D0F8C E00CAA8C D426ACC8 */ ldc1 $f6, %lo(D_E00CACC8)($at)
/* 3D0F90 E00CAA90 46260000 */ add.d $f0, $f0, $f6
/* 3D0F94 E00CAA94 4620018D */ trunc.w.d $f6, $f0
/* 3D0F98 E00CAA98 44103000 */ mfc1 $s0, $f6
/* 3D0F9C E00CAA9C 00000000 */ nop
/* 3D0FA0 E00CAAA0 06010012 */ bgez $s0, .LE00CAAEC
/* 3D0FA4 E00CAAA4 0000882D */ daddu $s1, $zero, $zero
/* 3D0FA8 E00CAAA8 44900000 */ mtc1 $s0, $f0
/* 3D0FAC E00CAAAC 00000000 */ nop
/* 3D0FB0 E00CAAB0 46800020 */ cvt.s.w $f0, $f0
/* 3D0FB4 E00CAAB4 3C01E00D */ lui $at, %hi(D_E00CACD0)
/* 3D0FB8 E00CAAB8 D422ACD0 */ ldc1 $f2, %lo(D_E00CACD0)($at)
/* 3D0FBC E00CAABC 46000021 */ cvt.d.s $f0, $f0
/* 3D0FC0 E00CAAC0 46220002 */ mul.d $f0, $f0, $f2
/* 3D0FC4 E00CAAC4 00000000 */ nop
/* 3D0FC8 E00CAAC8 3C01E00D */ lui $at, %hi(D_E00CACD8)
/* 3D0FCC E00CAACC D426ACD8 */ ldc1 $f6, %lo(D_E00CACD8)($at)
/* 3D0FD0 E00CAAD0 46260000 */ add.d $f0, $f0, $f6
/* 3D0FD4 E00CAAD4 4620018D */ trunc.w.d $f6, $f0
/* 3D0FD8 E00CAAD8 44133000 */ mfc1 $s3, $f6
/* 3D0FDC E00CAADC 00000000 */ nop
/* 3D0FE0 E00CAAE0 06610002 */ bgez $s3, .LE00CAAEC
/* 3D0FE4 E00CAAE4 0220802D */ daddu $s0, $s1, $zero
/* 3D0FE8 E00CAAE8 0220982D */ daddu $s3, $s1, $zero
.LE00CAAEC:
/* 3D0FEC E00CAAEC 0C080140 */ jal shim_sin_deg
/* 3D0FF0 E00CAAF0 4600F306 */ mov.s $f12, $f30
/* 3D0FF4 E00CAAF4 4600B502 */ mul.s $f20, $f22, $f0
/* 3D0FF8 E00CAAF8 00000000 */ nop
/* 3D0FFC E00CAAFC 0C080144 */ jal shim_cos_deg
/* 3D1000 E00CAB00 4600F306 */ mov.s $f12, $f30
/* 3D1004 E00CAB04 4600B002 */ mul.s $f0, $f22, $f0
/* 3D1008 E00CAB08 00000000 */ nop
/* 3D100C E00CAB0C 24020400 */ addiu $v0, $zero, 0x400
/* 3D1010 E00CAB10 8FAB0068 */ lw $t3, 0x68($sp)
/* 3D1014 E00CAB14 44803000 */ mtc1 $zero, $f6
/* 3D1018 E00CAB18 256B00B4 */ addiu $t3, $t3, 0xb4
/* 3D101C E00CAB1C 4606E080 */ add.s $f2, $f28, $f6
/* 3D1020 E00CAB20 AFAB0068 */ sw $t3, 0x68($sp)
/* 3D1024 E00CAB24 A6550008 */ sh $s5, 8($s2)
/* 3D1028 E00CAB28 A642000A */ sh $v0, 0xa($s2)
/* 3D102C E00CAB2C 4614C100 */ add.s $f4, $f24, $f20
/* 3D1030 E00CAB30 A253000C */ sb $s3, 0xc($s2)
/* 3D1034 E00CAB34 4600118D */ trunc.w.s $f6, $f2
/* 3D1038 E00CAB38 44033000 */ mfc1 $v1, $f6
/* 3D103C E00CAB3C 4600D080 */ add.s $f2, $f26, $f0
/* 3D1040 E00CAB40 A250000D */ sb $s0, 0xd($s2)
/* 3D1044 E00CAB44 A251000E */ sb $s1, 0xe($s2)
/* 3D1048 E00CAB48 4614C501 */ sub.s $f20, $f24, $f20
/* 3D104C E00CAB4C A257000F */ sb $s7, 0xf($s2)
/* 3D1050 E00CAB50 A6430004 */ sh $v1, 4($s2)
/* 3D1054 E00CAB54 4600D001 */ sub.s $f0, $f26, $f0
/* 3D1058 E00CAB58 4600218D */ trunc.w.s $f6, $f4
/* 3D105C E00CAB5C 44023000 */ mfc1 $v0, $f6
/* 3D1060 E00CAB60 00000000 */ nop
/* 3D1064 E00CAB64 A6420000 */ sh $v0, ($s2)
/* 3D1068 E00CAB68 4600118D */ trunc.w.s $f6, $f2
/* 3D106C E00CAB6C 44023000 */ mfc1 $v0, $f6
/* 3D1070 E00CAB70 00000000 */ nop
/* 3D1074 E00CAB74 A6420002 */ sh $v0, 2($s2)
/* 3D1078 E00CAB78 26520010 */ addiu $s2, $s2, 0x10
/* 3D107C E00CAB7C 4600A18D */ trunc.w.s $f6, $f20
/* 3D1080 E00CAB80 44023000 */ mfc1 $v0, $f6
/* 3D1084 E00CAB84 00000000 */ nop
/* 3D1088 E00CAB88 A6420000 */ sh $v0, ($s2)
/* 3D108C E00CAB8C 4600018D */ trunc.w.s $f6, $f0
/* 3D1090 E00CAB90 44023000 */ mfc1 $v0, $f6
/* 3D1094 E00CAB94 00000000 */ nop
/* 3D1098 E00CAB98 A6420002 */ sh $v0, 2($s2)
/* 3D109C E00CAB9C A6430004 */ sh $v1, 4($s2)
/* 3D10A0 E00CABA0 A6550008 */ sh $s5, 8($s2)
/* 3D10A4 E00CABA4 A640000A */ sh $zero, 0xa($s2)
/* 3D10A8 E00CABA8 A253000C */ sb $s3, 0xc($s2)
/* 3D10AC E00CABAC A250000D */ sb $s0, 0xd($s2)
/* 3D10B0 E00CABB0 A251000E */ sb $s1, 0xe($s2)
/* 3D10B4 E00CABB4 A257000F */ sb $s7, 0xf($s2)
/* 3D10B8 E00CABB8 26940001 */ addiu $s4, $s4, 1
.LE00CABBC:
/* 3D10BC E00CABBC 2A82001E */ slti $v0, $s4, 0x1e
/* 3D10C0 E00CABC0 1440FEEF */ bnez $v0, .LE00CA780
/* 3D10C4 E00CABC4 00000000 */ nop
/* 3D10C8 E00CABC8 8FB40060 */ lw $s4, 0x60($sp)
/* 3D10CC E00CABCC 2A82001D */ slti $v0, $s4, 0x1d
/* 3D10D0 E00CABD0 10400019 */ beqz $v0, .LE00CAC38
/* 3D10D4 E00CABD4 3C050002 */ lui $a1, 2
/* 3D10D8 E00CABD8 3C04800A */ lui $a0, %hi(gMainGfxPos)
/* 3D10DC E00CABDC 2484A66C */ addiu $a0, $a0, %lo(gMainGfxPos)
/* 3D10E0 E00CABE0 3C080100 */ lui $t0, 0x100
/* 3D10E4 E00CABE4 35084008 */ ori $t0, $t0, 0x4008
/* 3D10E8 E00CABE8 3C070600 */ lui $a3, 0x600
/* 3D10EC E00CABEC 34E70402 */ ori $a3, $a3, 0x402
/* 3D10F0 E00CABF0 34A50406 */ ori $a1, $a1, 0x406
/* 3D10F4 E00CABF4 8FAB005C */ lw $t3, 0x5c($sp)
/* 3D10F8 E00CABF8 00141140 */ sll $v0, $s4, 5
/* 3D10FC E00CABFC 004B3021 */ addu $a2, $v0, $t3
.LE00CAC00:
/* 3D1100 E00CAC00 8C830000 */ lw $v1, ($a0)
/* 3D1104 E00CAC04 26940001 */ addiu $s4, $s4, 1
/* 3D1108 E00CAC08 0060102D */ daddu $v0, $v1, $zero
/* 3D110C E00CAC0C 24630008 */ addiu $v1, $v1, 8
/* 3D1110 E00CAC10 AC460004 */ sw $a2, 4($v0)
/* 3D1114 E00CAC14 24C60020 */ addiu $a2, $a2, 0x20
/* 3D1118 E00CAC18 AC830000 */ sw $v1, ($a0)
/* 3D111C E00CAC1C AC480000 */ sw $t0, ($v0)
/* 3D1120 E00CAC20 24620008 */ addiu $v0, $v1, 8
/* 3D1124 E00CAC24 AC820000 */ sw $v0, ($a0)
/* 3D1128 E00CAC28 2A82001D */ slti $v0, $s4, 0x1d
/* 3D112C E00CAC2C AC670000 */ sw $a3, ($v1)
/* 3D1130 E00CAC30 1440FFF3 */ bnez $v0, .LE00CAC00
/* 3D1134 E00CAC34 AC650004 */ sw $a1, 4($v1)
.LE00CAC38:
/* 3D1138 E00CAC38 3C05D838 */ lui $a1, 0xd838
/* 3D113C E00CAC3C 3C03800A */ lui $v1, %hi(gMainGfxPos)
/* 3D1140 E00CAC40 2463A66C */ addiu $v1, $v1, %lo(gMainGfxPos)
/* 3D1144 E00CAC44 8C620000 */ lw $v0, ($v1)
/* 3D1148 E00CAC48 34A50002 */ ori $a1, $a1, 2
/* 3D114C E00CAC4C 0040202D */ daddu $a0, $v0, $zero
/* 3D1150 E00CAC50 24420008 */ addiu $v0, $v0, 8
/* 3D1154 E00CAC54 AC620000 */ sw $v0, ($v1)
/* 3D1158 E00CAC58 24020040 */ addiu $v0, $zero, 0x40
/* 3D115C E00CAC5C AC850000 */ sw $a1, ($a0)
/* 3D1160 E00CAC60 AC820004 */ sw $v0, 4($a0)
/* 3D1164 E00CAC64 8FBF0094 */ lw $ra, 0x94($sp)
/* 3D1168 E00CAC68 8FBE0090 */ lw $fp, 0x90($sp)
/* 3D116C E00CAC6C 8FB7008C */ lw $s7, 0x8c($sp)
/* 3D1170 E00CAC70 8FB60088 */ lw $s6, 0x88($sp)
/* 3D1174 E00CAC74 8FB50084 */ lw $s5, 0x84($sp)
/* 3D1178 E00CAC78 8FB40080 */ lw $s4, 0x80($sp)
/* 3D117C E00CAC7C 8FB3007C */ lw $s3, 0x7c($sp)
/* 3D1180 E00CAC80 8FB20078 */ lw $s2, 0x78($sp)
/* 3D1184 E00CAC84 8FB10074 */ lw $s1, 0x74($sp)
/* 3D1188 E00CAC88 8FB00070 */ lw $s0, 0x70($sp)
/* 3D118C E00CAC8C D7BE00C0 */ ldc1 $f30, 0xc0($sp)
/* 3D1190 E00CAC90 D7BC00B8 */ ldc1 $f28, 0xb8($sp)
/* 3D1194 E00CAC94 D7BA00B0 */ ldc1 $f26, 0xb0($sp)
/* 3D1198 E00CAC98 D7B800A8 */ ldc1 $f24, 0xa8($sp)
/* 3D119C E00CAC9C D7B600A0 */ ldc1 $f22, 0xa0($sp)
/* 3D11A0 E00CACA0 D7B40098 */ ldc1 $f20, 0x98($sp)
/* 3D11A4 E00CACA4 03E00008 */ jr $ra
/* 3D11A8 E00CACA8 27BD00C8 */ addiu $sp, $sp, 0xc8
/* 3D11AC E00CACAC 00000000 */ nop

View File

@ -1,544 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_E00CACC0
.double 0.8
dlabel D_E00CACC8
.double 255.0
dlabel D_E00CACD0
.double 0.4
dlabel D_E00CACD8
.double 255.0
.section .text
glabel effect_65_appendGfx
/* 3D09CC E00CA4CC 27BDFF38 */ addiu $sp, $sp, -0xc8
/* 3D09D0 E00CA4D0 0080482D */ daddu $t1, $a0, $zero
/* 3D09D4 E00CA4D4 3C0ADB06 */ lui $t2, 0xdb06
/* 3D09D8 E00CA4D8 354A0024 */ ori $t2, $t2, 0x24
/* 3D09DC E00CA4DC 27A40010 */ addiu $a0, $sp, 0x10
/* 3D09E0 E00CA4E0 AFB20078 */ sw $s2, 0x78($sp)
/* 3D09E4 E00CA4E4 3C120001 */ lui $s2, 1
/* 3D09E8 E00CA4E8 44800000 */ mtc1 $zero, $f0
/* 3D09EC E00CA4EC 36521630 */ ori $s2, $s2, 0x1630
/* 3D09F0 E00CA4F0 AFB3007C */ sw $s3, 0x7c($sp)
/* 3D09F4 E00CA4F4 3C13800A */ lui $s3, %hi(gMainGfxPos)
/* 3D09F8 E00CA4F8 2673A66C */ addiu $s3, $s3, %lo(gMainGfxPos)
/* 3D09FC E00CA4FC AFBF0094 */ sw $ra, 0x94($sp)
/* 3D0A00 E00CA500 AFBE0090 */ sw $fp, 0x90($sp)
/* 3D0A04 E00CA504 AFB7008C */ sw $s7, 0x8c($sp)
/* 3D0A08 E00CA508 AFB60088 */ sw $s6, 0x88($sp)
/* 3D0A0C E00CA50C AFB50084 */ sw $s5, 0x84($sp)
/* 3D0A10 E00CA510 AFB40080 */ sw $s4, 0x80($sp)
/* 3D0A14 E00CA514 AFB10074 */ sw $s1, 0x74($sp)
/* 3D0A18 E00CA518 AFB00070 */ sw $s0, 0x70($sp)
/* 3D0A1C E00CA51C F7BE00C0 */ sdc1 $f30, 0xc0($sp)
/* 3D0A20 E00CA520 F7BC00B8 */ sdc1 $f28, 0xb8($sp)
/* 3D0A24 E00CA524 F7BA00B0 */ sdc1 $f26, 0xb0($sp)
/* 3D0A28 E00CA528 F7B800A8 */ sdc1 $f24, 0xa8($sp)
/* 3D0A2C E00CA52C F7B600A0 */ sdc1 $f22, 0xa0($sp)
/* 3D0A30 E00CA530 F7B40098 */ sdc1 $f20, 0x98($sp)
/* 3D0A34 E00CA534 8E680000 */ lw $t0, ($s3)
/* 3D0A38 E00CA538 8D36000C */ lw $s6, 0xc($t1)
/* 3D0A3C E00CA53C 0100182D */ daddu $v1, $t0, $zero
/* 3D0A40 E00CA540 44050000 */ mfc1 $a1, $f0
/* 3D0A44 E00CA544 25080008 */ addiu $t0, $t0, 8
/* 3D0A48 E00CA548 AE680000 */ sw $t0, ($s3)
/* 3D0A4C E00CA54C 8ECB0014 */ lw $t3, 0x14($s6)
/* 3D0A50 E00CA550 3C02E700 */ lui $v0, 0xe700
/* 3D0A54 E00CA554 AFAB0050 */ sw $t3, 0x50($sp)
/* 3D0A58 E00CA558 8ED50024 */ lw $s5, 0x24($s6)
/* 3D0A5C E00CA55C 8ECB0000 */ lw $t3, ($s6)
/* 3D0A60 E00CA560 00A0302D */ daddu $a2, $a1, $zero
/* 3D0A64 E00CA564 AFAB0054 */ sw $t3, 0x54($sp)
/* 3D0A68 E00CA568 C6C60034 */ lwc1 $f6, 0x34($s6)
/* 3D0A6C E00CA56C 00A0382D */ daddu $a3, $a1, $zero
/* 3D0A70 E00CA570 E7A60058 */ swc1 $f6, 0x58($sp)
/* 3D0A74 E00CA574 AC620000 */ sw $v0, ($v1)
/* 3D0A78 E00CA578 AC600004 */ sw $zero, 4($v1)
/* 3D0A7C E00CA57C AD0A0000 */ sw $t2, ($t0)
/* 3D0A80 E00CA580 8D230010 */ lw $v1, 0x10($t1)
/* 3D0A84 E00CA584 25020008 */ addiu $v0, $t0, 8
/* 3D0A88 E00CA588 AE620000 */ sw $v0, ($s3)
/* 3D0A8C E00CA58C 8C62001C */ lw $v0, 0x1c($v1)
/* 3D0A90 E00CA590 3C038000 */ lui $v1, 0x8000
/* 3D0A94 E00CA594 00431021 */ addu $v0, $v0, $v1
/* 3D0A98 E00CA598 0C080108 */ jal shim_guTranslateF
/* 3D0A9C E00CA59C AD020004 */ sw $v0, 4($t0)
/* 3D0AA0 E00CA5A0 27A40010 */ addiu $a0, $sp, 0x10
/* 3D0AA4 E00CA5A4 3C108007 */ lui $s0, %hi(gMatrixListPos)
/* 3D0AA8 E00CA5A8 261041F0 */ addiu $s0, $s0, %lo(gMatrixListPos)
/* 3D0AAC E00CA5AC 3C11800A */ lui $s1, %hi(gDisplayContext)
/* 3D0AB0 E00CA5B0 2631A674 */ addiu $s1, $s1, %lo(gDisplayContext)
/* 3D0AB4 E00CA5B4 96050000 */ lhu $a1, ($s0)
/* 3D0AB8 E00CA5B8 8E220000 */ lw $v0, ($s1)
/* 3D0ABC E00CA5BC 00052980 */ sll $a1, $a1, 6
/* 3D0AC0 E00CA5C0 00B22821 */ addu $a1, $a1, $s2
/* 3D0AC4 E00CA5C4 0C080118 */ jal shim_guMtxF2L
/* 3D0AC8 E00CA5C8 00452821 */ addu $a1, $v0, $a1
/* 3D0ACC E00CA5CC 3C03DA38 */ lui $v1, 0xda38
/* 3D0AD0 E00CA5D0 34630002 */ ori $v1, $v1, 2
/* 3D0AD4 E00CA5D4 8E650000 */ lw $a1, ($s3)
/* 3D0AD8 E00CA5D8 96020000 */ lhu $v0, ($s0)
/* 3D0ADC E00CA5DC 00A0202D */ daddu $a0, $a1, $zero
/* 3D0AE0 E00CA5E0 24A50008 */ addiu $a1, $a1, 8
/* 3D0AE4 E00CA5E4 AE650000 */ sw $a1, ($s3)
/* 3D0AE8 E00CA5E8 AC830000 */ sw $v1, ($a0)
/* 3D0AEC E00CA5EC 24430001 */ addiu $v1, $v0, 1
/* 3D0AF0 E00CA5F0 3042FFFF */ andi $v0, $v0, 0xffff
/* 3D0AF4 E00CA5F4 00021180 */ sll $v0, $v0, 6
/* 3D0AF8 E00CA5F8 A6030000 */ sh $v1, ($s0)
/* 3D0AFC E00CA5FC 8E230000 */ lw $v1, ($s1)
/* 3D0B00 E00CA600 00521021 */ addu $v0, $v0, $s2
/* 3D0B04 E00CA604 00621821 */ addu $v1, $v1, $v0
/* 3D0B08 E00CA608 3C02DE00 */ lui $v0, 0xde00
/* 3D0B0C E00CA60C AC830004 */ sw $v1, 4($a0)
/* 3D0B10 E00CA610 ACA20000 */ sw $v0, ($a1)
/* 3D0B14 E00CA614 8FAB0054 */ lw $t3, 0x54($sp)
/* 3D0B18 E00CA618 000B1080 */ sll $v0, $t3, 2
/* 3D0B1C E00CA61C 3C03E00D */ lui $v1, %hi(D_E00CACB0)
/* 3D0B20 E00CA620 00621821 */ addu $v1, $v1, $v0
/* 3D0B24 E00CA624 8C63ACB0 */ lw $v1, %lo(D_E00CACB0)($v1)
/* 3D0B28 E00CA628 24A20008 */ addiu $v0, $a1, 8
/* 3D0B2C E00CA62C AE620000 */ sw $v0, ($s3)
/* 3D0B30 E00CA630 29620002 */ slti $v0, $t3, 2
/* 3D0B34 E00CA634 14400009 */ bnez $v0, .LE00CA65C
/* 3D0B38 E00CA638 ACA30004 */ sw $v1, 4($a1)
/* 3D0B3C E00CA63C 3C04FC40 */ lui $a0, 0xfc40
/* 3D0B40 E00CA640 348499FF */ ori $a0, $a0, 0x99ff
/* 3D0B44 E00CA644 3C035F0E */ lui $v1, 0x5f0e
/* 3D0B48 E00CA648 3463FE3F */ ori $v1, $v1, 0xfe3f
/* 3D0B4C E00CA64C 24A20010 */ addiu $v0, $a1, 0x10
/* 3D0B50 E00CA650 AE620000 */ sw $v0, ($s3)
/* 3D0B54 E00CA654 ACA40008 */ sw $a0, 8($a1)
/* 3D0B58 E00CA658 ACA3000C */ sw $v1, 0xc($a1)
.LE00CA65C:
/* 3D0B5C E00CA65C 240BFFFF */ addiu $t3, $zero, -1
/* 3D0B60 E00CA660 0000F02D */ daddu $fp, $zero, $zero
/* 3D0B64 E00CA664 03C0A02D */ daddu $s4, $fp, $zero
/* 3D0B68 E00CA668 3C088888 */ lui $t0, 0x8888
/* 3D0B6C E00CA66C AFAB0060 */ sw $t3, 0x60($sp)
/* 3D0B70 E00CA670 8FAB0050 */ lw $t3, 0x50($sp)
/* 3D0B74 E00CA674 35088889 */ ori $t0, $t0, 0x8889
/* 3D0B78 E00CA678 3162003F */ andi $v0, $t3, 0x3f
/* 3D0B7C E00CA67C 00021140 */ sll $v0, $v0, 5
/* 3D0B80 E00CA680 AFA20064 */ sw $v0, 0x64($sp)
/* 3D0B84 E00CA684 8E660000 */ lw $a2, ($s3)
/* 3D0B88 E00CA688 3C02FA00 */ lui $v0, 0xfa00
/* 3D0B8C E00CA68C 00C0382D */ daddu $a3, $a2, $zero
/* 3D0B90 E00CA690 24C60008 */ addiu $a2, $a2, 8
/* 3D0B94 E00CA694 24CB0010 */ addiu $t3, $a2, 0x10
/* 3D0B98 E00CA698 AFAB005C */ sw $t3, 0x5c($sp)
/* 3D0B9C E00CA69C AE660000 */ sw $a2, ($s3)
/* 3D0BA0 E00CA6A0 ACE20000 */ sw $v0, ($a3)
/* 3D0BA4 E00CA6A4 92C2001B */ lbu $v0, 0x1b($s6)
/* 3D0BA8 E00CA6A8 92C4001F */ lbu $a0, 0x1f($s6)
/* 3D0BAC E00CA6AC 92C50023 */ lbu $a1, 0x23($s6)
/* 3D0BB0 E00CA6B0 24C30008 */ addiu $v1, $a2, 8
/* 3D0BB4 E00CA6B4 AE630000 */ sw $v1, ($s3)
/* 3D0BB8 E00CA6B8 32A300FF */ andi $v1, $s5, 0xff
/* 3D0BBC E00CA6BC 00021600 */ sll $v0, $v0, 0x18
/* 3D0BC0 E00CA6C0 00042400 */ sll $a0, $a0, 0x10
/* 3D0BC4 E00CA6C4 00441025 */ or $v0, $v0, $a0
/* 3D0BC8 E00CA6C8 00052A00 */ sll $a1, $a1, 8
/* 3D0BCC E00CA6CC 00451025 */ or $v0, $v0, $a1
/* 3D0BD0 E00CA6D0 00431025 */ or $v0, $v0, $v1
/* 3D0BD4 E00CA6D4 ACE20004 */ sw $v0, 4($a3)
/* 3D0BD8 E00CA6D8 3C02FB00 */ lui $v0, 0xfb00
/* 3D0BDC E00CA6DC ACC20000 */ sw $v0, ($a2)
/* 3D0BE0 E00CA6E0 92C3002B */ lbu $v1, 0x2b($s6)
/* 3D0BE4 E00CA6E4 92C4002F */ lbu $a0, 0x2f($s6)
/* 3D0BE8 E00CA6E8 92C50033 */ lbu $a1, 0x33($s6)
/* 3D0BEC E00CA6EC 3C02DE01 */ lui $v0, 0xde01
/* 3D0BF0 E00CA6F0 ACC20008 */ sw $v0, 8($a2)
/* 3D0BF4 E00CA6F4 24C203D0 */ addiu $v0, $a2, 0x3d0
/* 3D0BF8 E00CA6F8 ACC2000C */ sw $v0, 0xc($a2)
/* 3D0BFC E00CA6FC AE620000 */ sw $v0, ($s3)
/* 3D0C00 E00CA700 00031E00 */ sll $v1, $v1, 0x18
/* 3D0C04 E00CA704 00042400 */ sll $a0, $a0, 0x10
/* 3D0C08 E00CA708 00641825 */ or $v1, $v1, $a0
/* 3D0C0C E00CA70C 00052A00 */ sll $a1, $a1, 8
/* 3D0C10 E00CA710 00651825 */ or $v1, $v1, $a1
/* 3D0C14 E00CA714 ACC30004 */ sw $v1, 4($a2)
/* 3D0C18 E00CA718 8EC602A8 */ lw $a2, 0x2a8($s6)
/* 3D0C1C E00CA71C 26850001 */ addiu $a1, $s4, 1
.LE00CA720:
/* 3D0C20 E00CA720 00C52021 */ addu $a0, $a2, $a1
/* 3D0C24 E00CA724 00880018 */ mult $a0, $t0
/* 3D0C28 E00CA728 00041FC3 */ sra $v1, $a0, 0x1f
/* 3D0C2C E00CA72C 00005810 */ mfhi $t3
/* 3D0C30 E00CA730 01641021 */ addu $v0, $t3, $a0
/* 3D0C34 E00CA734 00021103 */ sra $v0, $v0, 4
/* 3D0C38 E00CA738 00431823 */ subu $v1, $v0, $v1
/* 3D0C3C E00CA73C 00031100 */ sll $v0, $v1, 4
/* 3D0C40 E00CA740 00431023 */ subu $v0, $v0, $v1
/* 3D0C44 E00CA744 00021040 */ sll $v0, $v0, 1
/* 3D0C48 E00CA748 00821823 */ subu $v1, $a0, $v0
/* 3D0C4C E00CA74C 00031080 */ sll $v0, $v1, 2
/* 3D0C50 E00CA750 02C21021 */ addu $v0, $s6, $v0
/* 3D0C54 E00CA754 8C420230 */ lw $v0, 0x230($v0)
/* 3D0C58 E00CA758 54400001 */ bnel $v0, $zero, .LE00CA760
/* 3D0C5C E00CA75C 27DE0001 */ addiu $fp, $fp, 1
.LE00CA760:
/* 3D0C60 E00CA760 00A0A02D */ daddu $s4, $a1, $zero
/* 3D0C64 E00CA764 2A82001E */ slti $v0, $s4, 0x1e
/* 3D0C68 E00CA768 1440FFED */ bnez $v0, .LE00CA720
/* 3D0C6C E00CA76C 26850001 */ addiu $a1, $s4, 1
/* 3D0C70 E00CA770 27DEFFFF */ addiu $fp, $fp, -1
/* 3D0C74 E00CA774 1BC00130 */ blez $fp, .LE00CAC38
/* 3D0C78 E00CA778 0000A02D */ daddu $s4, $zero, $zero
/* 3D0C7C E00CA77C AFA00068 */ sw $zero, 0x68($sp)
.LE00CA780:
/* 3D0C80 E00CA780 8FAB0068 */ lw $t3, 0x68($sp)
/* 3D0C84 E00CA784 17C00002 */ bnez $fp, .LE00CA790
/* 3D0C88 E00CA788 017E001A */ div $zero, $t3, $fp
/* 3D0C8C E00CA78C 0007000D */ break 7
.LE00CA790:
/* 3D0C90 E00CA790 2401FFFF */ addiu $at, $zero, -1
/* 3D0C94 E00CA794 17C10004 */ bne $fp, $at, .LE00CA7A8
/* 3D0C98 E00CA798 3C018000 */ lui $at, 0x8000
/* 3D0C9C E00CA79C 15610002 */ bne $t3, $at, .LE00CA7A8
/* 3D0CA0 E00CA7A0 00000000 */ nop
/* 3D0CA4 E00CA7A4 0006000D */ break 6
.LE00CA7A8:
/* 3D0CA8 E00CA7A8 00002812 */ mflo $a1
/* 3D0CAC E00CA7AC 3C038888 */ lui $v1, 0x8888
/* 3D0CB0 E00CA7B0 34638889 */ ori $v1, $v1, 0x8889
/* 3D0CB4 E00CA7B4 8EC402A8 */ lw $a0, 0x2a8($s6)
/* 3D0CB8 E00CA7B8 26820001 */ addiu $v0, $s4, 1
/* 3D0CBC E00CA7BC 00822021 */ addu $a0, $a0, $v0
/* 3D0CC0 E00CA7C0 00830018 */ mult $a0, $v1
/* 3D0CC4 E00CA7C4 8FAB005C */ lw $t3, 0x5c($sp)
/* 3D0CC8 E00CA7C8 00141140 */ sll $v0, $s4, 5
/* 3D0CCC E00CA7CC 01629021 */ addu $s2, $t3, $v0
/* 3D0CD0 E00CA7D0 00001810 */ mfhi $v1
/* 3D0CD4 E00CA7D4 00641021 */ addu $v0, $v1, $a0
/* 3D0CD8 E00CA7D8 00021103 */ sra $v0, $v0, 4
/* 3D0CDC E00CA7DC 00041FC3 */ sra $v1, $a0, 0x1f
/* 3D0CE0 E00CA7E0 00439823 */ subu $s3, $v0, $v1
/* 3D0CE4 E00CA7E4 00131100 */ sll $v0, $s3, 4
/* 3D0CE8 E00CA7E8 00531023 */ subu $v0, $v0, $s3
/* 3D0CEC E00CA7EC 00021040 */ sll $v0, $v0, 1
/* 3D0CF0 E00CA7F0 44856000 */ mtc1 $a1, $f12
/* 3D0CF4 E00CA7F4 00000000 */ nop
/* 3D0CF8 E00CA7F8 46806320 */ cvt.s.w $f12, $f12
/* 3D0CFC E00CA7FC 0C080140 */ jal shim_sin_deg
/* 3D0D00 E00CA800 00829823 */ subu $s3, $a0, $v0
/* 3D0D04 E00CA804 3C01437F */ lui $at, 0x437f
/* 3D0D08 E00CA808 44811000 */ mtc1 $at, $f2
/* 3D0D0C E00CA80C 00000000 */ nop
/* 3D0D10 E00CA810 46020002 */ mul.s $f0, $f0, $f2
/* 3D0D14 E00CA814 00000000 */ nop
/* 3D0D18 E00CA818 4600018D */ trunc.w.s $f6, $f0
/* 3D0D1C E00CA81C 44173000 */ mfc1 $s7, $f6
/* 3D0D20 E00CA820 00000000 */ nop
/* 3D0D24 E00CA824 2AE200C9 */ slti $v0, $s7, 0xc9
/* 3D0D28 E00CA828 50400001 */ beql $v0, $zero, .LE00CA830
/* 3D0D2C E00CA82C 241700C8 */ addiu $s7, $zero, 0xc8
.LE00CA830:
/* 3D0D30 E00CA830 00131080 */ sll $v0, $s3, 2
/* 3D0D34 E00CA834 02C28021 */ addu $s0, $s6, $v0
/* 3D0D38 E00CA838 8E020230 */ lw $v0, 0x230($s0)
/* 3D0D3C E00CA83C 504000DF */ beql $v0, $zero, .LE00CABBC
/* 3D0D40 E00CA840 26940001 */ addiu $s4, $s4, 1
/* 3D0D44 E00CA844 8FAB0060 */ lw $t3, 0x60($sp)
/* 3D0D48 E00CA848 2402FFFF */ addiu $v0, $zero, -1
/* 3D0D4C E00CA84C 15620012 */ bne $t3, $v0, .LE00CA898
/* 3D0D50 E00CA850 2402001D */ addiu $v0, $zero, 0x1d
/* 3D0D54 E00CA854 26630001 */ addiu $v1, $s3, 1
/* 3D0D58 E00CA858 2862001E */ slti $v0, $v1, 0x1e
/* 3D0D5C E00CA85C 50400001 */ beql $v0, $zero, .LE00CA864
/* 3D0D60 E00CA860 0000182D */ daddu $v1, $zero, $zero
.LE00CA864:
/* 3D0D64 E00CA864 00031080 */ sll $v0, $v1, 2
/* 3D0D68 E00CA868 02C21021 */ addu $v0, $s6, $v0
/* 3D0D6C E00CA86C AFB40060 */ sw $s4, 0x60($sp)
/* 3D0D70 E00CA870 C44C00C8 */ lwc1 $f12, 0xc8($v0)
/* 3D0D74 E00CA874 8E0600C8 */ lw $a2, 0xc8($s0)
/* 3D0D78 E00CA878 C6000050 */ lwc1 $f0, 0x50($s0)
/* 3D0D7C E00CA87C C44E0050 */ lwc1 $f14, 0x50($v0)
/* 3D0D80 E00CA880 46000007 */ neg.s $f0, $f0
/* 3D0D84 E00CA884 44070000 */ mfc1 $a3, $f0
/* 3D0D88 E00CA888 0C080148 */ jal shim_atan2
/* 3D0D8C E00CA88C 46007387 */ neg.s $f14, $f14
/* 3D0D90 E00CA890 08032A63 */ j .LE00CA98C
/* 3D0D94 E00CA894 46000787 */ neg.s $f30, $f0
.LE00CA898:
/* 3D0D98 E00CA898 1282003C */ beq $s4, $v0, .LE00CA98C
/* 3D0D9C E00CA89C 26630001 */ addiu $v1, $s3, 1
/* 3D0DA0 E00CA8A0 2862001E */ slti $v0, $v1, 0x1e
/* 3D0DA4 E00CA8A4 14400002 */ bnez $v0, .LE00CA8B0
/* 3D0DA8 E00CA8A8 2671FFFF */ addiu $s1, $s3, -1
/* 3D0DAC E00CA8AC 0000182D */ daddu $v1, $zero, $zero
.LE00CA8B0:
/* 3D0DB0 E00CA8B0 06220001 */ bltzl $s1, .LE00CA8B8
/* 3D0DB4 E00CA8B4 2411001D */ addiu $s1, $zero, 0x1d
.LE00CA8B8:
/* 3D0DB8 E00CA8B8 00031080 */ sll $v0, $v1, 2
/* 3D0DBC E00CA8BC 02C21021 */ addu $v0, $s6, $v0
/* 3D0DC0 E00CA8C0 C44C00C8 */ lwc1 $f12, 0xc8($v0)
/* 3D0DC4 E00CA8C4 8E0600C8 */ lw $a2, 0xc8($s0)
/* 3D0DC8 E00CA8C8 C6000050 */ lwc1 $f0, 0x50($s0)
/* 3D0DCC E00CA8CC C44E0050 */ lwc1 $f14, 0x50($v0)
/* 3D0DD0 E00CA8D0 46000007 */ neg.s $f0, $f0
/* 3D0DD4 E00CA8D4 44070000 */ mfc1 $a3, $f0
/* 3D0DD8 E00CA8D8 0C080148 */ jal shim_atan2
/* 3D0DDC E00CA8DC 46007387 */ neg.s $f14, $f14
/* 3D0DE0 E00CA8E0 00111080 */ sll $v0, $s1, 2
/* 3D0DE4 E00CA8E4 02C21021 */ addu $v0, $s6, $v0
/* 3D0DE8 E00CA8E8 C60C00C8 */ lwc1 $f12, 0xc8($s0)
/* 3D0DEC E00CA8EC 8C4600C8 */ lw $a2, 0xc8($v0)
/* 3D0DF0 E00CA8F0 46000507 */ neg.s $f20, $f0
/* 3D0DF4 E00CA8F4 C4400050 */ lwc1 $f0, 0x50($v0)
/* 3D0DF8 E00CA8F8 C60E0050 */ lwc1 $f14, 0x50($s0)
/* 3D0DFC E00CA8FC 46000007 */ neg.s $f0, $f0
/* 3D0E00 E00CA900 44070000 */ mfc1 $a3, $f0
/* 3D0E04 E00CA904 0C080148 */ jal shim_atan2
/* 3D0E08 E00CA908 46007387 */ neg.s $f14, $f14
/* 3D0E0C E00CA90C 46000307 */ neg.s $f12, $f0
/* 3D0E10 E00CA910 46146081 */ sub.s $f2, $f12, $f20
/* 3D0E14 E00CA914 3C014334 */ lui $at, 0x4334
/* 3D0E18 E00CA918 44810000 */ mtc1 $at, $f0
/* 3D0E1C E00CA91C 00000000 */ nop
/* 3D0E20 E00CA920 4602003C */ c.lt.s $f0, $f2
/* 3D0E24 E00CA924 00000000 */ nop
/* 3D0E28 E00CA928 45000005 */ bc1f .LE00CA940
/* 3D0E2C E00CA92C 00000000 */ nop
/* 3D0E30 E00CA930 3C0143B4 */ lui $at, 0x43b4
/* 3D0E34 E00CA934 44813000 */ mtc1 $at, $f6
/* 3D0E38 E00CA938 08032A5B */ j .LE00CA96C
/* 3D0E3C E00CA93C 4606A500 */ add.s $f20, $f20, $f6
.LE00CA940:
/* 3D0E40 E00CA940 3C01C334 */ lui $at, 0xc334
/* 3D0E44 E00CA944 44810000 */ mtc1 $at, $f0
/* 3D0E48 E00CA948 00000000 */ nop
/* 3D0E4C E00CA94C 4600103C */ c.lt.s $f2, $f0
/* 3D0E50 E00CA950 00000000 */ nop
/* 3D0E54 E00CA954 45020006 */ bc1fl .LE00CA970
/* 3D0E58 E00CA958 460CA780 */ add.s $f30, $f20, $f12
/* 3D0E5C E00CA95C 3C0143B4 */ lui $at, 0x43b4
/* 3D0E60 E00CA960 44813000 */ mtc1 $at, $f6
/* 3D0E64 E00CA964 00000000 */ nop
/* 3D0E68 E00CA968 46066300 */ add.s $f12, $f12, $f6
.LE00CA96C:
/* 3D0E6C E00CA96C 460CA780 */ add.s $f30, $f20, $f12
.LE00CA970:
/* 3D0E70 E00CA970 3C013FE0 */ lui $at, 0x3fe0
/* 3D0E74 E00CA974 44811800 */ mtc1 $at, $f3
/* 3D0E78 E00CA978 44801000 */ mtc1 $zero, $f2
/* 3D0E7C E00CA97C 4600F021 */ cvt.d.s $f0, $f30
/* 3D0E80 E00CA980 46220002 */ mul.d $f0, $f0, $f2
/* 3D0E84 E00CA984 00000000 */ nop
/* 3D0E88 E00CA988 462007A0 */ cvt.s.d $f30, $f0
.LE00CA98C:
/* 3D0E8C E00CA98C 00131080 */ sll $v0, $s3, 2
/* 3D0E90 E00CA990 02C28021 */ addu $s0, $s6, $v0
/* 3D0E94 E00CA994 8E0301B8 */ lw $v1, 0x1b8($s0)
/* 3D0E98 E00CA998 8FAB0050 */ lw $t3, 0x50($sp)
/* 3D0E9C E00CA99C C6180050 */ lwc1 $f24, 0x50($s0)
/* 3D0EA0 E00CA9A0 C61A00C8 */ lwc1 $f26, 0xc8($s0)
/* 3D0EA4 E00CA9A4 C61C0140 */ lwc1 $f28, 0x140($s0)
/* 3D0EA8 E00CA9A8 00031080 */ sll $v0, $v1, 2
/* 3D0EAC E00CA9AC 00431021 */ addu $v0, $v0, $v1
/* 3D0EB0 E00CA9B0 00021100 */ sll $v0, $v0, 4
/* 3D0EB4 E00CA9B4 01621023 */ subu $v0, $t3, $v0
/* 3D0EB8 E00CA9B8 00021080 */ sll $v0, $v0, 2
/* 3D0EBC E00CA9BC 44826000 */ mtc1 $v0, $f12
/* 3D0EC0 E00CA9C0 00000000 */ nop
/* 3D0EC4 E00CA9C4 46806320 */ cvt.s.w $f12, $f12
/* 3D0EC8 E00CA9C8 0C080140 */ jal shim_sin_deg
/* 3D0ECC E00CA9CC 01638823 */ subu $s1, $t3, $v1
/* 3D0ED0 E00CA9D0 3C014040 */ lui $at, 0x4040
/* 3D0ED4 E00CA9D4 44811000 */ mtc1 $at, $f2
/* 3D0ED8 E00CA9D8 00000000 */ nop
/* 3D0EDC E00CA9DC 46020002 */ mul.s $f0, $f0, $f2
/* 3D0EE0 E00CA9E0 00000000 */ nop
/* 3D0EE4 E00CA9E4 3C014180 */ lui $at, 0x4180
/* 3D0EE8 E00CA9E8 44811000 */ mtc1 $at, $f2
/* 3D0EEC E00CA9EC 00000000 */ nop
/* 3D0EF0 E00CA9F0 46020000 */ add.s $f0, $f0, $f2
/* 3D0EF4 E00CA9F4 44911000 */ mtc1 $s1, $f2
/* 3D0EF8 E00CA9F8 00000000 */ nop
/* 3D0EFC E00CA9FC 468010A0 */ cvt.s.w $f2, $f2
/* 3D0F00 E00CAA00 46020580 */ add.s $f22, $f0, $f2
/* 3D0F04 E00CAA04 C7A60058 */ lwc1 $f6, 0x58($sp)
/* 3D0F08 E00CAA08 8FAB0054 */ lw $t3, 0x54($sp)
/* 3D0F0C E00CAA0C 4606B582 */ mul.s $f22, $f22, $f6
/* 3D0F10 E00CAA10 00000000 */ nop
/* 3D0F14 E00CAA14 C60002AC */ lwc1 $f0, 0x2ac($s0)
/* 3D0F18 E00CAA18 3C0141C0 */ lui $at, 0x41c0
/* 3D0F1C E00CAA1C 44813000 */ mtc1 $at, $f6
/* 3D0F20 E00CAA20 00000000 */ nop
/* 3D0F24 E00CAA24 46060002 */ mul.s $f0, $f0, $f6
/* 3D0F28 E00CAA28 00000000 */ nop
/* 3D0F2C E00CAA2C C7A20064 */ lwc1 $f2, 0x64($sp)
/* 3D0F30 E00CAA30 468010A0 */ cvt.s.w $f2, $f2
/* 3D0F34 E00CAA34 46020000 */ add.s $f0, $f0, $f2
/* 3D0F38 E00CAA38 4600018D */ trunc.w.s $f6, $f0
/* 3D0F3C E00CAA3C 44153000 */ mfc1 $s5, $f6
/* 3D0F40 E00CAA40 241300FF */ addiu $s3, $zero, 0xff
/* 3D0F44 E00CAA44 0260802D */ daddu $s0, $s3, $zero
/* 3D0F48 E00CAA48 00111040 */ sll $v0, $s1, 1
/* 3D0F4C E00CAA4C 00511021 */ addu $v0, $v0, $s1
/* 3D0F50 E00CAA50 000210C0 */ sll $v0, $v0, 3
/* 3D0F54 E00CAA54 00511021 */ addu $v0, $v0, $s1
/* 3D0F58 E00CAA58 00021080 */ sll $v0, $v0, 2
/* 3D0F5C E00CAA5C 02028823 */ subu $s1, $s0, $v0
/* 3D0F60 E00CAA60 06210022 */ bgez $s1, .LE00CAAEC
/* 3D0F64 E00CAA64 00000000 */ nop
/* 3D0F68 E00CAA68 44910000 */ mtc1 $s1, $f0
/* 3D0F6C E00CAA6C 00000000 */ nop
/* 3D0F70 E00CAA70 46800020 */ cvt.s.w $f0, $f0
/* 3D0F74 E00CAA74 3C01E00D */ lui $at, %hi(D_E00CACC0)
/* 3D0F78 E00CAA78 D422ACC0 */ ldc1 $f2, %lo(D_E00CACC0)($at)
/* 3D0F7C E00CAA7C 46000021 */ cvt.d.s $f0, $f0
/* 3D0F80 E00CAA80 46220002 */ mul.d $f0, $f0, $f2
/* 3D0F84 E00CAA84 00000000 */ nop
/* 3D0F88 E00CAA88 3C01E00D */ lui $at, %hi(D_E00CACC8)
/* 3D0F8C E00CAA8C D426ACC8 */ ldc1 $f6, %lo(D_E00CACC8)($at)
/* 3D0F90 E00CAA90 46260000 */ add.d $f0, $f0, $f6
/* 3D0F94 E00CAA94 4620018D */ trunc.w.d $f6, $f0
/* 3D0F98 E00CAA98 44103000 */ mfc1 $s0, $f6
/* 3D0F9C E00CAA9C 00000000 */ nop
/* 3D0FA0 E00CAAA0 06010012 */ bgez $s0, .LE00CAAEC
/* 3D0FA4 E00CAAA4 0000882D */ daddu $s1, $zero, $zero
/* 3D0FA8 E00CAAA8 44900000 */ mtc1 $s0, $f0
/* 3D0FAC E00CAAAC 00000000 */ nop
/* 3D0FB0 E00CAAB0 46800020 */ cvt.s.w $f0, $f0
/* 3D0FB4 E00CAAB4 3C01E00D */ lui $at, %hi(D_E00CACD0)
/* 3D0FB8 E00CAAB8 D422ACD0 */ ldc1 $f2, %lo(D_E00CACD0)($at)
/* 3D0FBC E00CAABC 46000021 */ cvt.d.s $f0, $f0
/* 3D0FC0 E00CAAC0 46220002 */ mul.d $f0, $f0, $f2
/* 3D0FC4 E00CAAC4 00000000 */ nop
/* 3D0FC8 E00CAAC8 3C01E00D */ lui $at, %hi(D_E00CACD8)
/* 3D0FCC E00CAACC D426ACD8 */ ldc1 $f6, %lo(D_E00CACD8)($at)
/* 3D0FD0 E00CAAD0 46260000 */ add.d $f0, $f0, $f6
/* 3D0FD4 E00CAAD4 4620018D */ trunc.w.d $f6, $f0
/* 3D0FD8 E00CAAD8 44133000 */ mfc1 $s3, $f6
/* 3D0FDC E00CAADC 00000000 */ nop
/* 3D0FE0 E00CAAE0 06610002 */ bgez $s3, .LE00CAAEC
/* 3D0FE4 E00CAAE4 0220802D */ daddu $s0, $s1, $zero
/* 3D0FE8 E00CAAE8 0220982D */ daddu $s3, $s1, $zero
.LE00CAAEC:
/* 3D0FEC E00CAAEC 0C080140 */ jal shim_sin_deg
/* 3D0FF0 E00CAAF0 4600F306 */ mov.s $f12, $f30
/* 3D0FF4 E00CAAF4 4600B502 */ mul.s $f20, $f22, $f0
/* 3D0FF8 E00CAAF8 00000000 */ nop
/* 3D0FFC E00CAAFC 0C080144 */ jal shim_cos_deg
/* 3D1000 E00CAB00 4600F306 */ mov.s $f12, $f30
/* 3D1004 E00CAB04 4600B002 */ mul.s $f0, $f22, $f0
/* 3D1008 E00CAB08 00000000 */ nop
/* 3D100C E00CAB0C 24020400 */ addiu $v0, $zero, 0x400
/* 3D1010 E00CAB10 8FAB0068 */ lw $t3, 0x68($sp)
/* 3D1014 E00CAB14 44803000 */ mtc1 $zero, $f6
/* 3D1018 E00CAB18 256B00B4 */ addiu $t3, $t3, 0xb4
/* 3D101C E00CAB1C 4606E080 */ add.s $f2, $f28, $f6
/* 3D1020 E00CAB20 AFAB0068 */ sw $t3, 0x68($sp)
/* 3D1024 E00CAB24 A6550008 */ sh $s5, 8($s2)
/* 3D1028 E00CAB28 A642000A */ sh $v0, 0xa($s2)
/* 3D102C E00CAB2C 4614C100 */ add.s $f4, $f24, $f20
/* 3D1030 E00CAB30 A253000C */ sb $s3, 0xc($s2)
/* 3D1034 E00CAB34 4600118D */ trunc.w.s $f6, $f2
/* 3D1038 E00CAB38 44033000 */ mfc1 $v1, $f6
/* 3D103C E00CAB3C 4600D080 */ add.s $f2, $f26, $f0
/* 3D1040 E00CAB40 A250000D */ sb $s0, 0xd($s2)
/* 3D1044 E00CAB44 A251000E */ sb $s1, 0xe($s2)
/* 3D1048 E00CAB48 4614C501 */ sub.s $f20, $f24, $f20
/* 3D104C E00CAB4C A257000F */ sb $s7, 0xf($s2)
/* 3D1050 E00CAB50 A6430004 */ sh $v1, 4($s2)
/* 3D1054 E00CAB54 4600D001 */ sub.s $f0, $f26, $f0
/* 3D1058 E00CAB58 4600218D */ trunc.w.s $f6, $f4
/* 3D105C E00CAB5C 44023000 */ mfc1 $v0, $f6
/* 3D1060 E00CAB60 00000000 */ nop
/* 3D1064 E00CAB64 A6420000 */ sh $v0, ($s2)
/* 3D1068 E00CAB68 4600118D */ trunc.w.s $f6, $f2
/* 3D106C E00CAB6C 44023000 */ mfc1 $v0, $f6
/* 3D1070 E00CAB70 00000000 */ nop
/* 3D1074 E00CAB74 A6420002 */ sh $v0, 2($s2)
/* 3D1078 E00CAB78 26520010 */ addiu $s2, $s2, 0x10
/* 3D107C E00CAB7C 4600A18D */ trunc.w.s $f6, $f20
/* 3D1080 E00CAB80 44023000 */ mfc1 $v0, $f6
/* 3D1084 E00CAB84 00000000 */ nop
/* 3D1088 E00CAB88 A6420000 */ sh $v0, ($s2)
/* 3D108C E00CAB8C 4600018D */ trunc.w.s $f6, $f0
/* 3D1090 E00CAB90 44023000 */ mfc1 $v0, $f6
/* 3D1094 E00CAB94 00000000 */ nop
/* 3D1098 E00CAB98 A6420002 */ sh $v0, 2($s2)
/* 3D109C E00CAB9C A6430004 */ sh $v1, 4($s2)
/* 3D10A0 E00CABA0 A6550008 */ sh $s5, 8($s2)
/* 3D10A4 E00CABA4 A640000A */ sh $zero, 0xa($s2)
/* 3D10A8 E00CABA8 A253000C */ sb $s3, 0xc($s2)
/* 3D10AC E00CABAC A250000D */ sb $s0, 0xd($s2)
/* 3D10B0 E00CABB0 A251000E */ sb $s1, 0xe($s2)
/* 3D10B4 E00CABB4 A257000F */ sb $s7, 0xf($s2)
/* 3D10B8 E00CABB8 26940001 */ addiu $s4, $s4, 1
.LE00CABBC:
/* 3D10BC E00CABBC 2A82001E */ slti $v0, $s4, 0x1e
/* 3D10C0 E00CABC0 1440FEEF */ bnez $v0, .LE00CA780
/* 3D10C4 E00CABC4 00000000 */ nop
/* 3D10C8 E00CABC8 8FB40060 */ lw $s4, 0x60($sp)
/* 3D10CC E00CABCC 2A82001D */ slti $v0, $s4, 0x1d
/* 3D10D0 E00CABD0 10400019 */ beqz $v0, .LE00CAC38
/* 3D10D4 E00CABD4 3C050002 */ lui $a1, 2
/* 3D10D8 E00CABD8 3C04800A */ lui $a0, %hi(gMainGfxPos)
/* 3D10DC E00CABDC 2484A66C */ addiu $a0, $a0, %lo(gMainGfxPos)
/* 3D10E0 E00CABE0 3C080100 */ lui $t0, 0x100
/* 3D10E4 E00CABE4 35084008 */ ori $t0, $t0, 0x4008
/* 3D10E8 E00CABE8 3C070600 */ lui $a3, 0x600
/* 3D10EC E00CABEC 34E70402 */ ori $a3, $a3, 0x402
/* 3D10F0 E00CABF0 34A50406 */ ori $a1, $a1, 0x406
/* 3D10F4 E00CABF4 8FAB005C */ lw $t3, 0x5c($sp)
/* 3D10F8 E00CABF8 00141140 */ sll $v0, $s4, 5
/* 3D10FC E00CABFC 004B3021 */ addu $a2, $v0, $t3
.LE00CAC00:
/* 3D1100 E00CAC00 8C830000 */ lw $v1, ($a0)
/* 3D1104 E00CAC04 26940001 */ addiu $s4, $s4, 1
/* 3D1108 E00CAC08 0060102D */ daddu $v0, $v1, $zero
/* 3D110C E00CAC0C 24630008 */ addiu $v1, $v1, 8
/* 3D1110 E00CAC10 AC460004 */ sw $a2, 4($v0)
/* 3D1114 E00CAC14 24C60020 */ addiu $a2, $a2, 0x20
/* 3D1118 E00CAC18 AC830000 */ sw $v1, ($a0)
/* 3D111C E00CAC1C AC480000 */ sw $t0, ($v0)
/* 3D1120 E00CAC20 24620008 */ addiu $v0, $v1, 8
/* 3D1124 E00CAC24 AC820000 */ sw $v0, ($a0)
/* 3D1128 E00CAC28 2A82001D */ slti $v0, $s4, 0x1d
/* 3D112C E00CAC2C AC670000 */ sw $a3, ($v1)
/* 3D1130 E00CAC30 1440FFF3 */ bnez $v0, .LE00CAC00
/* 3D1134 E00CAC34 AC650004 */ sw $a1, 4($v1)
.LE00CAC38:
/* 3D1138 E00CAC38 3C05D838 */ lui $a1, 0xd838
/* 3D113C E00CAC3C 3C03800A */ lui $v1, %hi(gMainGfxPos)
/* 3D1140 E00CAC40 2463A66C */ addiu $v1, $v1, %lo(gMainGfxPos)
/* 3D1144 E00CAC44 8C620000 */ lw $v0, ($v1)
/* 3D1148 E00CAC48 34A50002 */ ori $a1, $a1, 2
/* 3D114C E00CAC4C 0040202D */ daddu $a0, $v0, $zero
/* 3D1150 E00CAC50 24420008 */ addiu $v0, $v0, 8
/* 3D1154 E00CAC54 AC620000 */ sw $v0, ($v1)
/* 3D1158 E00CAC58 24020040 */ addiu $v0, $zero, 0x40
/* 3D115C E00CAC5C AC850000 */ sw $a1, ($a0)
/* 3D1160 E00CAC60 AC820004 */ sw $v0, 4($a0)
/* 3D1164 E00CAC64 8FBF0094 */ lw $ra, 0x94($sp)
/* 3D1168 E00CAC68 8FBE0090 */ lw $fp, 0x90($sp)
/* 3D116C E00CAC6C 8FB7008C */ lw $s7, 0x8c($sp)
/* 3D1170 E00CAC70 8FB60088 */ lw $s6, 0x88($sp)
/* 3D1174 E00CAC74 8FB50084 */ lw $s5, 0x84($sp)
/* 3D1178 E00CAC78 8FB40080 */ lw $s4, 0x80($sp)
/* 3D117C E00CAC7C 8FB3007C */ lw $s3, 0x7c($sp)
/* 3D1180 E00CAC80 8FB20078 */ lw $s2, 0x78($sp)
/* 3D1184 E00CAC84 8FB10074 */ lw $s1, 0x74($sp)
/* 3D1188 E00CAC88 8FB00070 */ lw $s0, 0x70($sp)
/* 3D118C E00CAC8C D7BE00C0 */ ldc1 $f30, 0xc0($sp)
/* 3D1190 E00CAC90 D7BC00B8 */ ldc1 $f28, 0xb8($sp)
/* 3D1194 E00CAC94 D7BA00B0 */ ldc1 $f26, 0xb0($sp)
/* 3D1198 E00CAC98 D7B800A8 */ ldc1 $f24, 0xa8($sp)
/* 3D119C E00CAC9C D7B600A0 */ ldc1 $f22, 0xa0($sp)
/* 3D11A0 E00CACA0 D7B40098 */ ldc1 $f20, 0x98($sp)
/* 3D11A4 E00CACA4 03E00008 */ jr $ra
/* 3D11A8 E00CACA8 27BD00C8 */ addiu $sp, $sp, 0xc8
/* 3D11AC E00CACAC 00000000 */ nop