From 4959741a4a396000561faa2655677a41001bec35 Mon Sep 17 00:00:00 2001 From: Unnunu Date: Mon, 20 Mar 2023 04:47:35 +0300 Subject: [PATCH] effect_65 (#987) * effect_65 * added pal version to coverage.py * restored files --- include/effects.h | 42 +- src/182B30.c | 2 +- src/effects/effect_65.c | 499 ++++++++-------- src/world/area_kzn/kzn_23/kzn_23_3_npc.c | 8 +- src/world/dead/area_kzn/kzn_23/kzn_23_3_npc.c | 8 +- .../effects/effect_65/effect_65_appendGfx.s | 544 ------------------ .../effects/effect_65/effect_65_appendGfx.s | 544 ------------------ 7 files changed, 276 insertions(+), 1371 deletions(-) delete mode 100644 ver/pal/asm/nonmatchings/effects/effect_65/effect_65_appendGfx.s delete mode 100644 ver/us/asm/nonmatchings/effects/effect_65/effect_65_appendGfx.s diff --git a/include/effects.h b/include/effects.h index 47b71e948f..10b2702ac6 100644 --- a/include/effects.h +++ b/include/effects.h @@ -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 { diff --git a/src/182B30.c b/src/182B30.c index dd457fe804..54f187a07a 100644 --- a/src/182B30.c +++ b/src/182B30.c @@ -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; } } diff --git a/src/effects/effect_65.c b/src/effects/effect_65.c index 4fa3a51697..2452cb3ee0 100644 --- a/src/effects/effect_65.c +++ b/src/effects/effect_65.c @@ -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 diff --git a/src/world/area_kzn/kzn_23/kzn_23_3_npc.c b/src/world/area_kzn/kzn_23/kzn_23_3_npc.c index a31a91f0ae..4e45ec5c45 100644 --- a/src/world/area_kzn/kzn_23/kzn_23_3_npc.c +++ b/src/world/area_kzn/kzn_23/kzn_23_3_npc.c @@ -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 diff --git a/src/world/dead/area_kzn/kzn_23/kzn_23_3_npc.c b/src/world/dead/area_kzn/kzn_23/kzn_23_3_npc.c index a31a91f0ae..4e45ec5c45 100644 --- a/src/world/dead/area_kzn/kzn_23/kzn_23_3_npc.c +++ b/src/world/dead/area_kzn/kzn_23/kzn_23_3_npc.c @@ -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 diff --git a/ver/pal/asm/nonmatchings/effects/effect_65/effect_65_appendGfx.s b/ver/pal/asm/nonmatchings/effects/effect_65/effect_65_appendGfx.s deleted file mode 100644 index c3174193d1..0000000000 --- a/ver/pal/asm/nonmatchings/effects/effect_65/effect_65_appendGfx.s +++ /dev/null @@ -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 diff --git a/ver/us/asm/nonmatchings/effects/effect_65/effect_65_appendGfx.s b/ver/us/asm/nonmatchings/effects/effect_65/effect_65_appendGfx.s deleted file mode 100644 index 7e3f08992c..0000000000 --- a/ver/us/asm/nonmatchings/effects/effect_65/effect_65_appendGfx.s +++ /dev/null @@ -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