water block effect matched (#883)

* more effects

* delete asm

* PR comments

* More PR comments

* fully match water block effect

* cleanup for PR

* PR comments

* define for components
This commit is contained in:
pixel-stuck 2022-12-12 01:13:49 -05:00 committed by GitHub
parent 29c3ffa2e0
commit ff3835672d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 333 additions and 880 deletions

View File

@ -1730,11 +1730,28 @@ typedef struct SquirtFXData {
/* 0x1D8 */ u8 unk_1D8[12];
} SquirtFXData; // size = 0x1E4
#define NUM_WATER_BLOCK_COMPONENTS 4
typedef struct WaterBlockFXData {
/* 0x00 */ char unk_00[4];
/* 0x00 */ s32 unk_00;
/* 0x04 */ Vec3f pos;
/* 0x10 */ char todo[0];
} WaterBlockFXData; // size = unknown
/* 0x10 */ s32 unk_10;
/* 0x14 */ s32 unk_14;
/* 0x18 */ s32 unk_18;
/* 0x1C */ s32 unk_1C;
/* 0x20 */ s32 unk_20;
/* 0x24 */ s32 unk_24;
/* 0x28 */ s32 unk_28;
/* 0x2C */ f32 unk_2C;
/* 0x30 */ f32 unk_30;
/* 0x34 */ f32 unk_34;
/* 0x38 */ f32 unk_38[NUM_WATER_BLOCK_COMPONENTS];
/* 0x48 */ f32 unk_48[NUM_WATER_BLOCK_COMPONENTS];
/* 0x58 */ f32 unk_58[NUM_WATER_BLOCK_COMPONENTS];
/* 0x68 */ f32 unk_68[NUM_WATER_BLOCK_COMPONENTS];
/* 0x78 */ f32 unk_78[NUM_WATER_BLOCK_COMPONENTS];
/* 0x88 */ s32 unk_88[NUM_WATER_BLOCK_COMPONENTS];
} WaterBlockFXData; // size = 0x98
typedef struct WaterfallFXData {
/* 0x00 */ s32 unk_00;

View File

@ -125,7 +125,7 @@ EffectInstance* stat_change_main(s32, f32, f32, f32, f32, s32);
EffectInstance* snaking_static_main(s32, f32, f32, f32, f32, s32);
EffectInstance* thunderbolt_ring_main(s32, f32, f32, f32, f32, s32);
EffectInstance* squirt_main(s32, f32, f32, f32, f32, f32, f32, f32, s32);
FX_MAIN(water_block_main);
EffectInstance* water_block_main(s32, f32, f32, f32, f32, s32);
EffectInstance* waterfall_main(s32, f32, f32, f32, f32, s32);
EffectInstance* water_fountain_main(s32, f32, f32, f32, f32, s32);
EffectInstance* underwater_main(s32, f32, f32, f32, f32, s32);

View File

@ -117,7 +117,7 @@ EffectTableEntry gEffectTable[] = {
/* 0x57 */ FX_ENTRY(snaking_static, effect_gfx_snaking_static),
/* 0x58 */ FX_ENTRY(thunderbolt_ring, effect_gfx_thunderbolt_ring),
/* 0x59 */ FX_ENTRY(squirt, _3B5340),
/* 0x5A */ FX_ENTRY(water_block, _3B6BF0),
/* 0x5A */ FX_ENTRY(water_block, effect_gfx_water_block),
/* 0x5B */ FX_ENTRY(waterfall, effect_gfx_waterfall),
/* 0x5C */ FX_ENTRY(water_fountain, effect_gfx_water_fountain),
/* 0x5D */ FX_ENTRY(underwater, _3B9A70),

View File

@ -0,0 +1,13 @@
#include "effects/gfx/D_09000000_3B6BF0.png.inc.c"
#include "effects/gfx/D_09000100_3B6CF0.png.inc.c"
#include "effects/gfx/D_09000300_3B6EF0.gfx.inc.c"
#include "effects/gfx/D_090003B0_3B6FA0.gfx.inc.c"
#include "effects/gfx/D_09000460_3B7050.vtx.inc.c"
#include "effects/gfx/D_090004A0_3B7090.gfx.inc.c"
u8 D_090004C0_3B70B0[] = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0x0, 0xFF, 0xFF, 0xFF, 0x0, 0xC1, 0x5A, 0x3F, 0x0, 0x0, 0x0, 0x0, 0x0
};
#include "effects/gfx/D_090004D8_3B70C8.gfx.inc.c"
#include "effects/gfx/D_09000538_3B7128.gfx.inc.c"

View File

@ -1,16 +1,203 @@
#include "common.h"
#include "effects_internal.h"
s32 D_E00B4CF0[] = { 0x1904E700, 0x04010048, 0xB0B0B000, 0x1600EA00, 0x03C30000, 0xB0B0B000, 0xEA00EA00, 0x003D0000, 0xB0B0B000, 0xE704E700, 0x00010048, 0xB0B0B000, 0x192EE700, 0x040103B7, 0xB0B0B000, 0xE72EE700, 0x000103B7, 0xB0B0B000, 0x1632EA00, 0x037A03E5, 0xAED0D800, 0xEA32EA00, 0x008503E5, 0xAED0D800, 0xEA321600, 0x008503E5, 0xAED0D800, 0x16321600, 0x037A03E5, 0xAED0D800, 0xEA00EA00, 0x00850019, 0x94A5B000, 0x1600EA00, 0x037A0019, 0x94A5B000, 0x16001600, 0x037A0019, 0x94A5B000, 0xEA001600, 0x00850019, 0x94A5B000, 0xEA321600, 0x03C303FD, 0x786E8800, 0xEA32EA00, 0x003D03FD, 0x786E8800, 0xE72EE700, 0x000003B7, 0x786E8800, 0xE72E1900, 0x040003B7, 0x786E8800, 0xE704E700, 0x00000048, 0x786E8800, 0xE7041900, 0x04000048, 0x786E8800, 0xEA00EA00, 0x003D0000, 0x786E8800, 0xEA001600, 0x03C30000, 0x786E8800, 0xEA32EA00, 0x003D03FD, 0xB0B0B000, 0x1632EA00, 0x03C303FD, 0xB0B0B000, 0x16001600, 0x03C30000, 0x786E8800, 0x1600EA00, 0x003D0000, 0x786E8800, 0x1904E700, 0x00000048, 0x786E8800, 0x19041900, 0x04000048, 0x786E8800, 0x192EE700, 0x000003B7, 0x786E8800, 0x192E1900, 0x040003B7, 0x786E8800, 0x1632EA00, 0x003D03FD, 0x786E8800, 0xEA001600, 0x003D0000, 0xF0F0F000, 0x19041900, 0x04010048, 0xF0F0F000, 0x192E1900, 0x040103B7, 0xF0F0F000, 0x16321600, 0x03C303FD, 0x786E8800, 0x16001600, 0x03C30000, 0xF0F0F000, 0xE7041900, 0x00010048, 0xF0F0F000, 0xE72E1900, 0x000103B7, 0xF0F0F000, 0x16321600, 0x03C303FD, 0xF0F0F000, 0xEA321600, 0x003D03FD, 0xF0F0F000 };
typedef struct WaterBlockVtxData {
/* 0x00 */ s8 unk_00;
/* 0x01 */ s8 unk_01;
/* 0x02 */ s8 unk_02;
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
/* 0x08 */ u8 unk_08;
/* 0x09 */ u8 unk_09;
/* 0x0A */ u8 unk_0A;
} WaterBlockVtxData; // size = 0xC
WaterBlockVtxData D_E00B4CF0[] = {
{ 25, 4, -25, 1025, 72, 176, 176, 176},
{ 22, 0, -22, 963, 0, 176, 176, 176},
{-22, 0, -22, 61, 0, 176, 176, 176},
{-25, 4, -25, 1, 72, 176, 176, 176},
{ 25, 46, -25, 1025, 951, 176, 176, 176},
{-25, 46, -25, 1, 951, 176, 176, 176},
{ 22, 50, -22, 890, 997, 174, 208, 216},
{-22, 50, -22, 133, 997, 174, 208, 216},
{-22, 50, 22, 133, 997, 174, 208, 216},
{ 22, 50, 22, 890, 997, 174, 208, 216},
{-22, 0, -22, 133, 25, 148, 165, 176},
{ 22, 0, -22, 890, 25, 148, 165, 176},
{ 22, 0, 22, 890, 25, 148, 165, 176},
{-22, 0, 22, 133, 25, 148, 165, 176},
{-22, 50, 22, 963, 1021, 120, 110, 136},
{-22, 50, -22, 61, 1021, 120, 110, 136},
{-25, 46, -25, 0, 951, 120, 110, 136},
{-25, 46, 25, 1024, 951, 120, 110, 136},
{-25, 4, -25, 0, 72, 120, 110, 136},
{-25, 4, 25, 1024, 72, 120, 110, 136},
{-22, 0, -22, 61, 0, 120, 110, 136},
{-22, 0, 22, 963, 0, 120, 110, 136},
{-22, 50, -22, 61, 1021, 176, 176, 176},
{ 22, 50, -22, 963, 1021, 176, 176, 176},
{ 22, 0, 22, 963, 0, 120, 110, 136},
{ 22, 0, -22, 61, 0, 120, 110, 136},
{ 25, 4, -25, 0, 72, 120, 110, 136},
{ 25, 4, 25, 1024, 72, 120, 110, 136},
{ 25, 46, -25, 0, 951, 120, 110, 136},
{ 25, 46, 25, 1024, 951, 120, 110, 136},
{ 22, 50, -22, 61, 1021, 120, 110, 136},
{-22, 0, 22, 61, 0, 240, 240, 240},
{ 25, 4, 25, 1025, 72, 240, 240, 240},
{ 25, 46, 25, 1025, 951, 240, 240, 240},
{ 22, 50, 22, 963, 1021, 120, 110, 136},
{ 22, 0, 22, 963, 0, 240, 240, 240},
{-25, 4, 25, 1, 72, 240, 240, 240},
{-25, 46, 25, 1, 951, 240, 240, 240},
{ 22, 50, 22, 963, 1021, 240, 240, 240},
{-22, 50, 22, 61, 1021, 240, 240, 240},
};
extern Gfx D_09000300_3B6EF0[];
extern Gfx D_090003B0_3B6FA0[];
extern Gfx D_090004A0_3B7090[];
extern Gfx D_090004D8_3B70C8[];
extern Gfx D_09000538_3B7128[];
void water_block_init(EffectInstance* effect);
void water_block_update(EffectInstance* effect);
void water_block_render(EffectInstance* effect);
void water_block_appendGfx(void* effect);
INCLUDE_ASM(s32, "effects/water_block", water_block_main);
EffectInstance* water_block_main(s32 arg0, f32 x, f32 y, f32 z, f32 arg4, s32 arg5) {
EffectBlueprint bp;
EffectBlueprint* bpPtr = &bp;
EffectInstance* effect;
WaterBlockFXData* data;
s32 i;
s32 var_a1;
s32 numParts = 1;
void water_block_init(void) {
bpPtr->init = water_block_init;
bpPtr->update = &water_block_update;
bpPtr->renderWorld = water_block_render;
bpPtr->unk_00 = 0;
bpPtr->unk_14 = NULL;
bpPtr->effectID = EFFECT_WATER_BLOCK;
effect = shim_create_effect_instance(bpPtr);
effect->numParts = numParts;
data = effect->data.waterBlock = shim_general_heap_malloc(sizeof(*data));
ASSERT(data != NULL);
data->unk_00 = arg0;
data->unk_14 = 0;
if (arg5 <= 0) {
data->unk_10 = 1000;
} else {
data->unk_10 = arg5;
}
data->unk_24 = 0;
data->pos.x = x;
data->pos.y = y;
data->pos.z = z;
data->unk_2C = arg4;
data->unk_18 = 47;
data->unk_1C = 127;
data->unk_20 = 255;
data->unk_30 = 0.0f;
data->unk_34 = 0.0f;
for (i = NUM_WATER_BLOCK_COMPONENTS - 1, var_a1 = -13; i >= 0; var_a1 += 4, i--) {
data->unk_88[i] = var_a1;
}
return effect;
}
INCLUDE_ASM(s32, "effects/water_block", water_block_update);
void water_block_init(EffectInstance* effect) {
}
void water_block_update(EffectInstance* effect) {
WaterBlockFXData *data;
f32 temp_f20;
s32 temp_a0;
s32 temp_s0;
s32 temp_v1_3;
s32 i;
data = effect->data.waterBlock;
temp_a0 = data->unk_00;
if (effect->flags & 0x10) {
if (temp_a0 == 1) {
effect->flags = effect->flags & ~0x10;
data->unk_10 = 4;
} else {
effect->flags = effect->flags & ~0x10;
data->unk_10 = 16;
}
}
if (data->unk_10 < 1000) {
data->unk_10--;
}
data->unk_14++;
if (data->unk_14 > 324000) {
data->unk_14 = 256;
}
temp_v1_3 = data->unk_10;
if (temp_v1_3 < 0) {
if (temp_a0 == 1) {
shim_load_effect(EFFECT_WATER_SPLASH);
water_splash_main(0, data->pos.x, data->pos.y + 24.0f, data->pos.z, 2.0f, 0x1E);
water_splash_main(1, data->pos.x, data->pos.y + 24.0f, data->pos.z, 2.0f, 0x1E);
}
shim_remove_effect(effect);
return;
}
temp_s0 = data->unk_14;
if (temp_a0 == 0) {
if (temp_v1_3 < 16) {
data->unk_24 = temp_v1_3 * 16;;
data->unk_28 = temp_v1_3 * 16;;
}
if (temp_s0 < 16) {
data->unk_24 = (temp_s0 * 16) + 15;
data->unk_28 = (temp_s0 * 16) + 15;
}
} else if (temp_s0 < 4) {
data->unk_24 = (temp_s0 * 64) + 63;
data->unk_28 = (temp_s0 * 64) + 63;
}
data->unk_1C = shim_sin_deg((temp_s0 * 6) + temp_s0) * 32.0f + 127.0f;
temp_f20 = (f32)temp_s0 * 0.01;
data->unk_30 = (shim_sin_deg(temp_f20 * 6.0f) * 32.0f * shim_sin_deg(temp_f20)) + 256.0f + (shim_cos_deg(2.0f * temp_f20) * 32.0f) + (shim_cos_deg(temp_f20) * 32.0f);
data->unk_34 += 0.2;
if (data->unk_34 >= 128.0f) {
data->unk_34 = 0.0f;
}
for (i = 0; i < NUM_WATER_BLOCK_COMPONENTS; i++) {
data->unk_88[i]++;
if (data->unk_88[i] >= 0) {
if (data->unk_88[i] == 0) {
data->unk_38[i] = 0.0f;
data->unk_48[i] = 240.0f;
data->unk_58[i] = (shim_rand_int(10) - 5) * 0.2;
data->unk_68[i] = shim_rand_int(10) + 2;
data->unk_78[i] = shim_rand_int(10) + 1;
}
data->unk_48[i] += data->unk_68[i];
data->unk_38[i] += data->unk_58[i];
data->unk_58[i] *= 0.97;
data->unk_68[i] += (10.0f - data->unk_68[i]) * 0.1;
if (data->unk_48[i] > 480.0f) {
data->unk_88[i] = ~shim_rand_int(10);
}
}
}
}
void water_block_render(EffectInstance* effect) {
RenderTask renderTask;
@ -28,4 +215,88 @@ void water_block_render(EffectInstance* effect) {
void func_E00B4574(void) {
}
INCLUDE_ASM(s32, "effects/water_block", water_block_appendGfx);
void water_block_appendGfx(void *effect) {
Matrix4f sp20;
Matrix4f sp60;
WaterBlockFXData* data = ((EffectInstance*)effect)->data.waterBlock;
s32 spA4 = data->unk_24;
Vtx* spA8;
EffectInstance* effectTemp = effect;
WaterBlockVtxData* var_s6;
Vtx* var_fp;
s32 temp_s0;
s32 i;
gDPPipeSync(gMasterGfxPos++);
gSPSegment(gMasterGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(effectTemp->graphics->data));
shim_guTranslateF(sp20, data->pos.x, data->pos.y, data->pos.z);
shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPBranchList(gMasterGfxPos, &gMasterGfxPos[81]);
spA8 = (Vtx*)++gMasterGfxPos;
gMasterGfxPos = &gMasterGfxPos[80];
temp_s0 = gGameStatusPtr->frameCounter * 4;
for (var_s6 = D_E00B4CF0, i = 0, var_fp = spA8; i < 40; i++, var_s6++, var_fp++) {
f32 x = var_s6->unk_00 * 10;
f32 y = var_s6->unk_01 * 10;
f32 z = var_s6->unk_02 * 10;
if (y != 0.0f) {
f32 dx = shim_sin_deg(temp_s0 + func_E0200044(1000, (x + (y * 10.0f) + (z * 100.0f)))) * 20.0f;
f32 dy = shim_sin_deg(temp_s0 + func_E0200044(1000, ((x * 10.0f) + (y * 100.0f) + z))) * 20.0f;
f32 dz = shim_sin_deg(temp_s0 + func_E0200044(1000, ((x * 100.0f) + y + (z * 10.0f)))) * 20.0f;
x += dx;
y += dy;
z += dz;
}
var_fp->v.ob[0] = x;
var_fp->v.ob[1] = y;
var_fp->v.ob[2] = z;
var_fp->v.tc[0] = var_s6->unk_04;
var_fp->v.tc[1] = var_s6->unk_06;
var_fp->v.cn[0] = var_s6->unk_08;
var_fp->v.cn[1] = var_s6->unk_09;
var_fp->v.cn[2] = var_s6->unk_0A;
var_fp->v.cn[3] = 80;
}
shim_guScaleF(sp20, 0.1f, 0.1f, 0.1f);
shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gDPSetEnvColor(gMasterGfxPos++, 0, 0, 255, data->unk_28);
gDPSetPrimColor(gMasterGfxPos++, 0, 0, 255, 255, 255, spA4);
gSPDisplayList(gMasterGfxPos++, D_090003B0_3B6FA0);
for (i = 0; i < NUM_WATER_BLOCK_COMPONENTS; i++) {
if (data->unk_88[i] >= 0) {
shim_guPositionF(sp20, 0.0f, 0.0f, 0.0f, data->unk_78[i], data->unk_38[i], data->unk_48[i], 0.0f);
shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gSPDisplayList(gMasterGfxPos++, D_090004A0_3B7090);
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
}
}
gSPDisplayList(gMasterGfxPos++, D_09000300_3B6EF0);
gDPSetPrimColor(gMasterGfxPos++, 0, 0, data->unk_18, data->unk_1C, data->unk_20, spA4 * 0.3);
gSPClearGeometryMode(gMasterGfxPos++, G_CULL_BOTH);
gSPSetGeometryMode(gMasterGfxPos++, G_CULL_BACK);
gSPVertex(gMasterGfxPos++, spA8, 30, 0);
gSPDisplayList(gMasterGfxPos++, D_090004D8_3B70C8);
gSPVertex(gMasterGfxPos++, &spA8[28], 12, 0);
gSPDisplayList(gMasterGfxPos++, D_09000538_3B7128)
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
}

View File

@ -1,493 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_E00B4EF8
.double 0.3
.section .text
glabel water_block_appendGfx
/* 3B626C E00B457C 27BDFEF8 */ addiu $sp, $sp, -0x108
/* 3B6270 E00B4580 0080282D */ daddu $a1, $a0, $zero
/* 3B6274 E00B4584 3C06DB06 */ lui $a2, 0xdb06
/* 3B6278 E00B4588 34C60024 */ ori $a2, $a2, 0x24
/* 3B627C E00B458C 27A40020 */ addiu $a0, $sp, 0x20
/* 3B6280 E00B4590 AFB300BC */ sw $s3, 0xbc($sp)
/* 3B6284 E00B4594 3C130001 */ lui $s3, 1
/* 3B6288 E00B4598 36731630 */ ori $s3, $s3, 0x1630
/* 3B628C E00B459C AFB600C8 */ sw $s6, 0xc8($sp)
/* 3B6290 E00B45A0 3C16E00B */ lui $s6, %hi(D_E00B4CF0)
/* 3B6294 E00B45A4 26D64CF0 */ addiu $s6, $s6, %lo(D_E00B4CF0)
/* 3B6298 E00B45A8 AFB100B4 */ sw $s1, 0xb4($sp)
/* 3B629C E00B45AC 3C11800A */ lui $s1, %hi(gMasterGfxPos)
/* 3B62A0 E00B45B0 2631A66C */ addiu $s1, $s1, %lo(gMasterGfxPos)
/* 3B62A4 E00B45B4 3C02E700 */ lui $v0, 0xe700
/* 3B62A8 E00B45B8 AFBF00D4 */ sw $ra, 0xd4($sp)
/* 3B62AC E00B45BC AFBE00D0 */ sw $fp, 0xd0($sp)
/* 3B62B0 E00B45C0 AFB700CC */ sw $s7, 0xcc($sp)
/* 3B62B4 E00B45C4 AFB500C4 */ sw $s5, 0xc4($sp)
/* 3B62B8 E00B45C8 AFB400C0 */ sw $s4, 0xc0($sp)
/* 3B62BC E00B45CC AFB200B8 */ sw $s2, 0xb8($sp)
/* 3B62C0 E00B45D0 AFB000B0 */ sw $s0, 0xb0($sp)
/* 3B62C4 E00B45D4 F7BE0100 */ sdc1 $f30, 0x100($sp)
/* 3B62C8 E00B45D8 F7BC00F8 */ sdc1 $f28, 0xf8($sp)
/* 3B62CC E00B45DC F7BA00F0 */ sdc1 $f26, 0xf0($sp)
/* 3B62D0 E00B45E0 F7B800E8 */ sdc1 $f24, 0xe8($sp)
/* 3B62D4 E00B45E4 F7B600E0 */ sdc1 $f22, 0xe0($sp)
/* 3B62D8 E00B45E8 F7B400D8 */ sdc1 $f20, 0xd8($sp)
/* 3B62DC E00B45EC 8E280000 */ lw $t0, ($s1)
/* 3B62E0 E00B45F0 8CAD000C */ lw $t5, 0xc($a1)
/* 3B62E4 E00B45F4 0100182D */ daddu $v1, $t0, $zero
/* 3B62E8 E00B45F8 AFAD00A0 */ sw $t5, 0xa0($sp)
/* 3B62EC E00B45FC 8DAD0024 */ lw $t5, 0x24($t5)
/* 3B62F0 E00B4600 25080008 */ addiu $t0, $t0, 8
/* 3B62F4 E00B4604 AFAD00A4 */ sw $t5, 0xa4($sp)
/* 3B62F8 E00B4608 AC620000 */ sw $v0, ($v1)
/* 3B62FC E00B460C AC600004 */ sw $zero, 4($v1)
/* 3B6300 E00B4610 AD060000 */ sw $a2, ($t0)
/* 3B6304 E00B4614 8CA20010 */ lw $v0, 0x10($a1)
/* 3B6308 E00B4618 0000B82D */ daddu $s7, $zero, $zero
/* 3B630C E00B461C AE280000 */ sw $t0, ($s1)
/* 3B6310 E00B4620 8C42001C */ lw $v0, 0x1c($v0)
/* 3B6314 E00B4624 3C038000 */ lui $v1, 0x8000
/* 3B6318 E00B4628 00431021 */ addu $v0, $v0, $v1
/* 3B631C E00B462C AD020004 */ sw $v0, 4($t0)
/* 3B6320 E00B4630 8FAD00A0 */ lw $t5, 0xa0($sp)
/* 3B6324 E00B4634 26D5000A */ addiu $s5, $s6, 0xa
/* 3B6328 E00B4638 8DA50004 */ lw $a1, 4($t5)
/* 3B632C E00B463C 8DA60008 */ lw $a2, 8($t5)
/* 3B6330 E00B4640 8DA7000C */ lw $a3, 0xc($t5)
/* 3B6334 E00B4644 25080008 */ addiu $t0, $t0, 8
/* 3B6338 E00B4648 0C080108 */ jal shim_guTranslateF
/* 3B633C E00B464C AE280000 */ sw $t0, ($s1)
/* 3B6340 E00B4650 27A40020 */ addiu $a0, $sp, 0x20
/* 3B6344 E00B4654 3C108007 */ lui $s0, %hi(gMatrixListPos)
/* 3B6348 E00B4658 261041F0 */ addiu $s0, $s0, %lo(gMatrixListPos)
/* 3B634C E00B465C 3C12800A */ lui $s2, %hi(gDisplayContext)
/* 3B6350 E00B4660 2652A674 */ addiu $s2, $s2, %lo(gDisplayContext)
/* 3B6354 E00B4664 96050000 */ lhu $a1, ($s0)
/* 3B6358 E00B4668 8E420000 */ lw $v0, ($s2)
/* 3B635C E00B466C 00052980 */ sll $a1, $a1, 6
/* 3B6360 E00B4670 00B32821 */ addu $a1, $a1, $s3
/* 3B6364 E00B4674 0C080118 */ jal shim_guMtxF2L
/* 3B6368 E00B4678 00452821 */ addu $a1, $v0, $a1
/* 3B636C E00B467C 3C02DA38 */ lui $v0, 0xda38
/* 3B6370 E00B4680 8E240000 */ lw $a0, ($s1)
/* 3B6374 E00B4684 34420002 */ ori $v0, $v0, 2
/* 3B6378 E00B4688 0080302D */ daddu $a2, $a0, $zero
/* 3B637C E00B468C 24840008 */ addiu $a0, $a0, 8
/* 3B6380 E00B4690 248D0008 */ addiu $t5, $a0, 8
/* 3B6384 E00B4694 01A0F02D */ daddu $fp, $t5, $zero
/* 3B6388 E00B4698 AFAD00A8 */ sw $t5, 0xa8($sp)
/* 3B638C E00B469C 96050000 */ lhu $a1, ($s0)
/* 3B6390 E00B46A0 24940017 */ addiu $s4, $a0, 0x17
/* 3B6394 E00B46A4 AE240000 */ sw $a0, ($s1)
/* 3B6398 E00B46A8 ACC20000 */ sw $v0, ($a2)
/* 3B639C E00B46AC 8E430000 */ lw $v1, ($s2)
/* 3B63A0 E00B46B0 30A2FFFF */ andi $v0, $a1, 0xffff
/* 3B63A4 E00B46B4 00021180 */ sll $v0, $v0, 6
/* 3B63A8 E00B46B8 00531021 */ addu $v0, $v0, $s3
/* 3B63AC E00B46BC 00621821 */ addu $v1, $v1, $v0
/* 3B63B0 E00B46C0 3C02DE01 */ lui $v0, 0xde01
/* 3B63B4 E00B46C4 ACC30004 */ sw $v1, 4($a2)
/* 3B63B8 E00B46C8 AC820000 */ sw $v0, ($a0)
/* 3B63BC E00B46CC 3C028007 */ lui $v0, %hi(gGameStatusPtr)
/* 3B63C0 E00B46D0 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0)
/* 3B63C4 E00B46D4 24830288 */ addiu $v1, $a0, 0x288
/* 3B63C8 E00B46D8 AC830004 */ sw $v1, 4($a0)
/* 3B63CC E00B46DC 94420134 */ lhu $v0, 0x134($v0)
/* 3B63D0 E00B46E0 24A50001 */ addiu $a1, $a1, 1
/* 3B63D4 E00B46E4 A6050000 */ sh $a1, ($s0)
/* 3B63D8 E00B46E8 AE230000 */ sw $v1, ($s1)
/* 3B63DC E00B46EC 00028080 */ sll $s0, $v0, 2
.LE00B46F0:
/* 3B63E0 E00B46F0 82C30000 */ lb $v1, ($s6)
/* 3B63E4 E00B46F4 4480F000 */ mtc1 $zero, $f30
/* 3B63E8 E00B46F8 00031080 */ sll $v0, $v1, 2
/* 3B63EC E00B46FC 00431021 */ addu $v0, $v0, $v1
/* 3B63F0 E00B4700 00021040 */ sll $v0, $v0, 1
/* 3B63F4 E00B4704 82A3FFF7 */ lb $v1, -9($s5)
/* 3B63F8 E00B4708 4482E000 */ mtc1 $v0, $f28
/* 3B63FC E00B470C 00000000 */ nop
/* 3B6400 E00B4710 4680E720 */ cvt.s.w $f28, $f28
/* 3B6404 E00B4714 00031080 */ sll $v0, $v1, 2
/* 3B6408 E00B4718 00431021 */ addu $v0, $v0, $v1
/* 3B640C E00B471C 00021040 */ sll $v0, $v0, 1
/* 3B6410 E00B4720 4482C000 */ mtc1 $v0, $f24
/* 3B6414 E00B4724 00000000 */ nop
/* 3B6418 E00B4728 4680C620 */ cvt.s.w $f24, $f24
/* 3B641C E00B472C 82A3FFF8 */ lb $v1, -8($s5)
/* 3B6420 E00B4730 461EC032 */ c.eq.s $f24, $f30
/* 3B6424 E00B4734 00031080 */ sll $v0, $v1, 2
/* 3B6428 E00B4738 00431021 */ addu $v0, $v0, $v1
/* 3B642C E00B473C 00021040 */ sll $v0, $v0, 1
/* 3B6430 E00B4740 4482D000 */ mtc1 $v0, $f26
/* 3B6434 E00B4744 00000000 */ nop
/* 3B6438 E00B4748 4680D6A0 */ cvt.s.w $f26, $f26
/* 3B643C E00B474C 45010052 */ bc1t .LE00B4898
/* 3B6440 E00B4750 00000000 */ nop
/* 3B6444 E00B4754 3C014120 */ lui $at, 0x4120
/* 3B6448 E00B4758 44813000 */ mtc1 $at, $f6
/* 3B644C E00B475C 00000000 */ nop
/* 3B6450 E00B4760 4606C002 */ mul.s $f0, $f24, $f6
/* 3B6454 E00B4764 00000000 */ nop
/* 3B6458 E00B4768 3C0142C8 */ lui $at, 0x42c8
/* 3B645C E00B476C 44813000 */ mtc1 $at, $f6
/* 3B6460 E00B4770 00000000 */ nop
/* 3B6464 E00B4774 4606D082 */ mul.s $f2, $f26, $f6
/* 3B6468 E00B4778 00000000 */ nop
/* 3B646C E00B477C 4600E000 */ add.s $f0, $f28, $f0
/* 3B6470 E00B4780 46020000 */ add.s $f0, $f0, $f2
/* 3B6474 E00B4784 4600018D */ trunc.w.s $f6, $f0
/* 3B6478 E00B4788 44053000 */ mfc1 $a1, $f6
/* 3B647C E00B478C 0C080011 */ jal func_E0200044
/* 3B6480 E00B4790 240403E8 */ addiu $a0, $zero, 0x3e8
/* 3B6484 E00B4794 02021021 */ addu $v0, $s0, $v0
/* 3B6488 E00B4798 44826000 */ mtc1 $v0, $f12
/* 3B648C E00B479C 00000000 */ nop
/* 3B6490 E00B47A0 0C080140 */ jal shim_sin_deg
/* 3B6494 E00B47A4 46806320 */ cvt.s.w $f12, $f12
/* 3B6498 E00B47A8 3C014120 */ lui $at, 0x4120
/* 3B649C E00B47AC 44813000 */ mtc1 $at, $f6
/* 3B64A0 E00B47B0 00000000 */ nop
/* 3B64A4 E00B47B4 4606E102 */ mul.s $f4, $f28, $f6
/* 3B64A8 E00B47B8 00000000 */ nop
/* 3B64AC E00B47BC 3C0142C8 */ lui $at, 0x42c8
/* 3B64B0 E00B47C0 44813000 */ mtc1 $at, $f6
/* 3B64B4 E00B47C4 00000000 */ nop
/* 3B64B8 E00B47C8 4606C082 */ mul.s $f2, $f24, $f6
/* 3B64BC E00B47CC 00000000 */ nop
/* 3B64C0 E00B47D0 46022100 */ add.s $f4, $f4, $f2
/* 3B64C4 E00B47D4 461A2100 */ add.s $f4, $f4, $f26
/* 3B64C8 E00B47D8 4600218D */ trunc.w.s $f6, $f4
/* 3B64CC E00B47DC 44053000 */ mfc1 $a1, $f6
/* 3B64D0 E00B47E0 3C0141A0 */ lui $at, 0x41a0
/* 3B64D4 E00B47E4 44813000 */ mtc1 $at, $f6
/* 3B64D8 E00B47E8 00000000 */ nop
/* 3B64DC E00B47EC 46060582 */ mul.s $f22, $f0, $f6
/* 3B64E0 E00B47F0 00000000 */ nop
/* 3B64E4 E00B47F4 0C080011 */ jal func_E0200044
/* 3B64E8 E00B47F8 240403E8 */ addiu $a0, $zero, 0x3e8
/* 3B64EC E00B47FC 02021021 */ addu $v0, $s0, $v0
/* 3B64F0 E00B4800 44826000 */ mtc1 $v0, $f12
/* 3B64F4 E00B4804 00000000 */ nop
/* 3B64F8 E00B4808 0C080140 */ jal shim_sin_deg
/* 3B64FC E00B480C 46806320 */ cvt.s.w $f12, $f12
/* 3B6500 E00B4810 3C0142C8 */ lui $at, 0x42c8
/* 3B6504 E00B4814 44813000 */ mtc1 $at, $f6
/* 3B6508 E00B4818 00000000 */ nop
/* 3B650C E00B481C 4606E082 */ mul.s $f2, $f28, $f6
/* 3B6510 E00B4820 00000000 */ nop
/* 3B6514 E00B4824 3C014120 */ lui $at, 0x4120
/* 3B6518 E00B4828 44813000 */ mtc1 $at, $f6
/* 3B651C E00B482C 00000000 */ nop
/* 3B6520 E00B4830 4606D102 */ mul.s $f4, $f26, $f6
/* 3B6524 E00B4834 00000000 */ nop
/* 3B6528 E00B4838 46181080 */ add.s $f2, $f2, $f24
/* 3B652C E00B483C 46041080 */ add.s $f2, $f2, $f4
/* 3B6530 E00B4840 4600118D */ trunc.w.s $f6, $f2
/* 3B6534 E00B4844 44053000 */ mfc1 $a1, $f6
/* 3B6538 E00B4848 3C0141A0 */ lui $at, 0x41a0
/* 3B653C E00B484C 44813000 */ mtc1 $at, $f6
/* 3B6540 E00B4850 00000000 */ nop
/* 3B6544 E00B4854 46060502 */ mul.s $f20, $f0, $f6
/* 3B6548 E00B4858 00000000 */ nop
/* 3B654C E00B485C 0C080011 */ jal func_E0200044
/* 3B6550 E00B4860 240403E8 */ addiu $a0, $zero, 0x3e8
/* 3B6554 E00B4864 02021021 */ addu $v0, $s0, $v0
/* 3B6558 E00B4868 44826000 */ mtc1 $v0, $f12
/* 3B655C E00B486C 00000000 */ nop
/* 3B6560 E00B4870 0C080140 */ jal shim_sin_deg
/* 3B6564 E00B4874 46806320 */ cvt.s.w $f12, $f12
/* 3B6568 E00B4878 3C0141A0 */ lui $at, 0x41a0
/* 3B656C E00B487C 44813000 */ mtc1 $at, $f6
/* 3B6570 E00B4880 00000000 */ nop
/* 3B6574 E00B4884 46060002 */ mul.s $f0, $f0, $f6
/* 3B6578 E00B4888 00000000 */ nop
/* 3B657C E00B488C 4616E700 */ add.s $f28, $f28, $f22
/* 3B6580 E00B4890 4614C600 */ add.s $f24, $f24, $f20
/* 3B6584 E00B4894 4600D680 */ add.s $f26, $f26, $f0
.LE00B4898:
/* 3B6588 E00B4898 4600E18D */ trunc.w.s $f6, $f28
/* 3B658C E00B489C 44023000 */ mfc1 $v0, $f6
/* 3B6590 E00B48A0 00000000 */ nop
/* 3B6594 E00B48A4 A7C20000 */ sh $v0, ($fp)
/* 3B6598 E00B48A8 4600C18D */ trunc.w.s $f6, $f24
/* 3B659C E00B48AC 44023000 */ mfc1 $v0, $f6
/* 3B65A0 E00B48B0 00000000 */ nop
/* 3B65A4 E00B48B4 A682FFF3 */ sh $v0, -0xd($s4)
/* 3B65A8 E00B48B8 4600D18D */ trunc.w.s $f6, $f26
/* 3B65AC E00B48BC 44023000 */ mfc1 $v0, $f6
/* 3B65B0 E00B48C0 00000000 */ nop
/* 3B65B4 E00B48C4 A682FFF5 */ sh $v0, -0xb($s4)
/* 3B65B8 E00B48C8 96A2FFFA */ lhu $v0, -6($s5)
/* 3B65BC E00B48CC A682FFF9 */ sh $v0, -7($s4)
/* 3B65C0 E00B48D0 96A2FFFC */ lhu $v0, -4($s5)
/* 3B65C4 E00B48D4 26F70001 */ addiu $s7, $s7, 1
/* 3B65C8 E00B48D8 A682FFFB */ sh $v0, -5($s4)
/* 3B65CC E00B48DC 92A2FFFE */ lbu $v0, -2($s5)
/* 3B65D0 E00B48E0 26D6000C */ addiu $s6, $s6, 0xc
/* 3B65D4 E00B48E4 A282FFFD */ sb $v0, -3($s4)
/* 3B65D8 E00B48E8 92A2FFFF */ lbu $v0, -1($s5)
/* 3B65DC E00B48EC 27DE0010 */ addiu $fp, $fp, 0x10
/* 3B65E0 E00B48F0 A282FFFE */ sb $v0, -2($s4)
/* 3B65E4 E00B48F4 92A30000 */ lbu $v1, ($s5)
/* 3B65E8 E00B48F8 26B5000C */ addiu $s5, $s5, 0xc
/* 3B65EC E00B48FC 24020050 */ addiu $v0, $zero, 0x50
/* 3B65F0 E00B4900 A2820000 */ sb $v0, ($s4)
/* 3B65F4 E00B4904 2AE20028 */ slti $v0, $s7, 0x28
/* 3B65F8 E00B4908 A283FFFF */ sb $v1, -1($s4)
/* 3B65FC E00B490C 1440FF78 */ bnez $v0, .LE00B46F0
/* 3B6600 E00B4910 26940010 */ addiu $s4, $s4, 0x10
/* 3B6604 E00B4914 27A40020 */ addiu $a0, $sp, 0x20
/* 3B6608 E00B4918 3C100001 */ lui $s0, 1
/* 3B660C E00B491C 36101630 */ ori $s0, $s0, 0x1630
/* 3B6610 E00B4920 0000B82D */ daddu $s7, $zero, $zero
/* 3B6614 E00B4924 4600F506 */ mov.s $f20, $f30
/* 3B6618 E00B4928 3C02800A */ lui $v0, %hi(gDisplayContext)
/* 3B661C E00B492C 2442A674 */ addiu $v0, $v0, %lo(gDisplayContext)
/* 3B6620 E00B4930 0040A82D */ daddu $s5, $v0, $zero
/* 3B6624 E00B4934 3C028007 */ lui $v0, %hi(gMatrixListPos)
/* 3B6628 E00B4938 244241F0 */ addiu $v0, $v0, %lo(gMatrixListPos)
/* 3B662C E00B493C 0040982D */ daddu $s3, $v0, $zero
/* 3B6630 E00B4940 3C013DCC */ lui $at, 0x3dcc
/* 3B6634 E00B4944 3421CCCD */ ori $at, $at, 0xcccd
/* 3B6638 E00B4948 44810000 */ mtc1 $at, $f0
/* 3B663C E00B494C 3C140001 */ lui $s4, 1
/* 3B6640 E00B4950 44050000 */ mfc1 $a1, $f0
/* 3B6644 E00B4954 8FB100A0 */ lw $s1, 0xa0($sp)
/* 3B6648 E00B4958 00A0302D */ daddu $a2, $a1, $zero
/* 3B664C E00B495C 0C080110 */ jal shim_guScaleF
/* 3B6650 E00B4960 00A0382D */ daddu $a3, $a1, $zero
/* 3B6654 E00B4964 27A40020 */ addiu $a0, $sp, 0x20
/* 3B6658 E00B4968 96650000 */ lhu $a1, ($s3)
/* 3B665C E00B496C 8EA20000 */ lw $v0, ($s5)
/* 3B6660 E00B4970 00052980 */ sll $a1, $a1, 6
/* 3B6664 E00B4974 00B02821 */ addu $a1, $a1, $s0
/* 3B6668 E00B4978 0C080118 */ jal shim_guMtxF2L
/* 3B666C E00B497C 00452821 */ addu $a1, $v0, $a1
/* 3B6670 E00B4980 3C02800A */ lui $v0, %hi(gMasterGfxPos)
/* 3B6674 E00B4984 2442A66C */ addiu $v0, $v0, %lo(gMasterGfxPos)
/* 3B6678 E00B4988 8C440000 */ lw $a0, ($v0)
/* 3B667C E00B498C 0040902D */ daddu $s2, $v0, $zero
/* 3B6680 E00B4990 0080282D */ daddu $a1, $a0, $zero
/* 3B6684 E00B4994 24840008 */ addiu $a0, $a0, 8
/* 3B6688 E00B4998 AE440000 */ sw $a0, ($s2)
/* 3B668C E00B499C 96620000 */ lhu $v0, ($s3)
/* 3B6690 E00B49A0 3C03DA38 */ lui $v1, 0xda38
/* 3B6694 E00B49A4 ACA30000 */ sw $v1, ($a1)
/* 3B6698 E00B49A8 24430001 */ addiu $v1, $v0, 1
/* 3B669C E00B49AC 3042FFFF */ andi $v0, $v0, 0xffff
/* 3B66A0 E00B49B0 00021180 */ sll $v0, $v0, 6
/* 3B66A4 E00B49B4 A6630000 */ sh $v1, ($s3)
/* 3B66A8 E00B49B8 8EA30000 */ lw $v1, ($s5)
/* 3B66AC E00B49BC 00501021 */ addu $v0, $v0, $s0
/* 3B66B0 E00B49C0 00621821 */ addu $v1, $v1, $v0
/* 3B66B4 E00B49C4 24820008 */ addiu $v0, $a0, 8
/* 3B66B8 E00B49C8 ACA30004 */ sw $v1, 4($a1)
/* 3B66BC E00B49CC AE420000 */ sw $v0, ($s2)
/* 3B66C0 E00B49D0 3C02FB00 */ lui $v0, 0xfb00
/* 3B66C4 E00B49D4 AC820000 */ sw $v0, ($a0)
/* 3B66C8 E00B49D8 8FAD00A0 */ lw $t5, 0xa0($sp)
/* 3B66CC E00B49DC 36941630 */ ori $s4, $s4, 0x1630
/* 3B66D0 E00B49E0 91A3002B */ lbu $v1, 0x2b($t5)
/* 3B66D4 E00B49E4 24820010 */ addiu $v0, $a0, 0x10
/* 3B66D8 E00B49E8 AE420000 */ sw $v0, ($s2)
/* 3B66DC E00B49EC 3C02FA00 */ lui $v0, 0xfa00
/* 3B66E0 E00B49F0 AC820008 */ sw $v0, 8($a0)
/* 3B66E4 E00B49F4 8FAD00A4 */ lw $t5, 0xa4($sp)
/* 3B66E8 E00B49F8 2402FF00 */ addiu $v0, $zero, -0x100
/* 3B66EC E00B49FC 01A21025 */ or $v0, $t5, $v0
/* 3B66F0 E00B4A00 AC82000C */ sw $v0, 0xc($a0)
/* 3B66F4 E00B4A04 24820018 */ addiu $v0, $a0, 0x18
/* 3B66F8 E00B4A08 AE420000 */ sw $v0, ($s2)
/* 3B66FC E00B4A0C 3C02DE00 */ lui $v0, 0xde00
/* 3B6700 E00B4A10 AC820010 */ sw $v0, 0x10($a0)
/* 3B6704 E00B4A14 3C020900 */ lui $v0, 0x900
/* 3B6708 E00B4A18 244203B0 */ addiu $v0, $v0, 0x3b0
/* 3B670C E00B4A1C 3463FF00 */ ori $v1, $v1, 0xff00
/* 3B6710 E00B4A20 AC820014 */ sw $v0, 0x14($a0)
/* 3B6714 E00B4A24 AC830004 */ sw $v1, 4($a0)
.LE00B4A28:
/* 3B6718 E00B4A28 8E220088 */ lw $v0, 0x88($s1)
/* 3B671C E00B4A2C 04420032 */ bltzl $v0, .LE00B4AF8
/* 3B6720 E00B4A30 26F70001 */ addiu $s7, $s7, 1
/* 3B6724 E00B4A34 C6200078 */ lwc1 $f0, 0x78($s1)
/* 3B6728 E00B4A38 4405A000 */ mfc1 $a1, $f20
/* 3B672C E00B4A3C 4406A000 */ mfc1 $a2, $f20
/* 3B6730 E00B4A40 4407A000 */ mfc1 $a3, $f20
/* 3B6734 E00B4A44 E7A00010 */ swc1 $f0, 0x10($sp)
/* 3B6738 E00B4A48 C6200038 */ lwc1 $f0, 0x38($s1)
/* 3B673C E00B4A4C E7A00014 */ swc1 $f0, 0x14($sp)
/* 3B6740 E00B4A50 C6200048 */ lwc1 $f0, 0x48($s1)
/* 3B6744 E00B4A54 27A40020 */ addiu $a0, $sp, 0x20
/* 3B6748 E00B4A58 E7B4001C */ swc1 $f20, 0x1c($sp)
/* 3B674C E00B4A5C 0C080180 */ jal shim_guPositionF
/* 3B6750 E00B4A60 E7A00018 */ swc1 $f0, 0x18($sp)
/* 3B6754 E00B4A64 27A40020 */ addiu $a0, $sp, 0x20
/* 3B6758 E00B4A68 96650000 */ lhu $a1, ($s3)
/* 3B675C E00B4A6C 8EA20000 */ lw $v0, ($s5)
/* 3B6760 E00B4A70 00052980 */ sll $a1, $a1, 6
/* 3B6764 E00B4A74 00B42821 */ addu $a1, $a1, $s4
/* 3B6768 E00B4A78 0C080118 */ jal shim_guMtxF2L
/* 3B676C E00B4A7C 00452821 */ addu $a1, $v0, $a1
/* 3B6770 E00B4A80 3C06D838 */ lui $a2, 0xd838
/* 3B6774 E00B4A84 8E440000 */ lw $a0, ($s2)
/* 3B6778 E00B4A88 34C60002 */ ori $a2, $a2, 2
/* 3B677C E00B4A8C 0080282D */ daddu $a1, $a0, $zero
/* 3B6780 E00B4A90 24840008 */ addiu $a0, $a0, 8
/* 3B6784 E00B4A94 AE440000 */ sw $a0, ($s2)
/* 3B6788 E00B4A98 96620000 */ lhu $v0, ($s3)
/* 3B678C E00B4A9C 3C03DA38 */ lui $v1, 0xda38
/* 3B6790 E00B4AA0 ACA30000 */ sw $v1, ($a1)
/* 3B6794 E00B4AA4 24430001 */ addiu $v1, $v0, 1
/* 3B6798 E00B4AA8 3042FFFF */ andi $v0, $v0, 0xffff
/* 3B679C E00B4AAC 00021180 */ sll $v0, $v0, 6
/* 3B67A0 E00B4AB0 A6630000 */ sh $v1, ($s3)
/* 3B67A4 E00B4AB4 8EA30000 */ lw $v1, ($s5)
/* 3B67A8 E00B4AB8 00541021 */ addu $v0, $v0, $s4
/* 3B67AC E00B4ABC 00621821 */ addu $v1, $v1, $v0
/* 3B67B0 E00B4AC0 24820008 */ addiu $v0, $a0, 8
/* 3B67B4 E00B4AC4 ACA30004 */ sw $v1, 4($a1)
/* 3B67B8 E00B4AC8 AE420000 */ sw $v0, ($s2)
/* 3B67BC E00B4ACC 3C02DE00 */ lui $v0, 0xde00
/* 3B67C0 E00B4AD0 AC820000 */ sw $v0, ($a0)
/* 3B67C4 E00B4AD4 3C020900 */ lui $v0, 0x900
/* 3B67C8 E00B4AD8 244204A0 */ addiu $v0, $v0, 0x4a0
/* 3B67CC E00B4ADC AC820004 */ sw $v0, 4($a0)
/* 3B67D0 E00B4AE0 24820010 */ addiu $v0, $a0, 0x10
/* 3B67D4 E00B4AE4 AE420000 */ sw $v0, ($s2)
/* 3B67D8 E00B4AE8 24020040 */ addiu $v0, $zero, 0x40
/* 3B67DC E00B4AEC AC860008 */ sw $a2, 8($a0)
/* 3B67E0 E00B4AF0 AC82000C */ sw $v0, 0xc($a0)
/* 3B67E4 E00B4AF4 26F70001 */ addiu $s7, $s7, 1
.LE00B4AF8:
/* 3B67E8 E00B4AF8 2AE20004 */ slti $v0, $s7, 4
/* 3B67EC E00B4AFC 1440FFCA */ bnez $v0, .LE00B4A28
/* 3B67F0 E00B4B00 26310004 */ addiu $s1, $s1, 4
/* 3B67F4 E00B4B04 3C04800A */ lui $a0, %hi(gMasterGfxPos)
/* 3B67F8 E00B4B08 2484A66C */ addiu $a0, $a0, %lo(gMasterGfxPos)
/* 3B67FC E00B4B0C 3C02DE00 */ lui $v0, 0xde00
/* 3B6800 E00B4B10 8C830000 */ lw $v1, ($a0)
/* 3B6804 E00B4B14 3C01E00B */ lui $at, %hi(D_E00B4EF8)
/* 3B6808 E00B4B18 D4224EF8 */ ldc1 $f2, %lo(D_E00B4EF8)($at)
/* 3B680C E00B4B1C 0060282D */ daddu $a1, $v1, $zero
/* 3B6810 E00B4B20 24630008 */ addiu $v1, $v1, 8
/* 3B6814 E00B4B24 AC830000 */ sw $v1, ($a0)
/* 3B6818 E00B4B28 ACA20000 */ sw $v0, ($a1)
/* 3B681C E00B4B2C C7A000A4 */ lwc1 $f0, 0xa4($sp)
/* 3B6820 E00B4B30 46800021 */ cvt.d.w $f0, $f0
/* 3B6824 E00B4B34 3C020900 */ lui $v0, 0x900
/* 3B6828 E00B4B38 24420300 */ addiu $v0, $v0, 0x300
/* 3B682C E00B4B3C ACA20004 */ sw $v0, 4($a1)
/* 3B6830 E00B4B40 24620008 */ addiu $v0, $v1, 8
/* 3B6834 E00B4B44 AC820000 */ sw $v0, ($a0)
/* 3B6838 E00B4B48 3C02FA00 */ lui $v0, 0xfa00
/* 3B683C E00B4B4C 246C0004 */ addiu $t4, $v1, 4
/* 3B6840 E00B4B50 46220002 */ mul.d $f0, $f0, $f2
/* 3B6844 E00B4B54 00000000 */ nop
/* 3B6848 E00B4B58 AC620000 */ sw $v0, ($v1)
/* 3B684C E00B4B5C 8FAD00A0 */ lw $t5, 0xa0($sp)
/* 3B6850 E00B4B60 3C0141E0 */ lui $at, 0x41e0
/* 3B6854 E00B4B64 44811800 */ mtc1 $at, $f3
/* 3B6858 E00B4B68 44801000 */ mtc1 $zero, $f2
/* 3B685C E00B4B6C 91A4001B */ lbu $a0, 0x1b($t5)
/* 3B6860 E00B4B70 91A3001F */ lbu $v1, 0x1f($t5)
/* 3B6864 E00B4B74 91A20023 */ lbu $v0, 0x23($t5)
/* 3B6868 E00B4B78 00042600 */ sll $a0, $a0, 0x18
/* 3B686C E00B4B7C 00031C00 */ sll $v1, $v1, 0x10
/* 3B6870 E00B4B80 00832025 */ or $a0, $a0, $v1
/* 3B6874 E00B4B84 00021200 */ sll $v0, $v0, 8
/* 3B6878 E00B4B88 4620103E */ c.le.d $f2, $f0
/* 3B687C E00B4B8C 00000000 */ nop
/* 3B6880 E00B4B90 45010005 */ bc1t .LE00B4BA8
/* 3B6884 E00B4B94 00825825 */ or $t3, $a0, $v0
/* 3B6888 E00B4B98 4620018D */ trunc.w.d $f6, $f0
/* 3B688C E00B4B9C 440A3000 */ mfc1 $t2, $f6
/* 3B6890 E00B4BA0 0802D2F1 */ j .LE00B4BC4
/* 3B6894 E00B4BA4 3C05D9FF */ lui $a1, 0xd9ff
.LE00B4BA8:
/* 3B6898 E00B4BA8 46220001 */ sub.d $f0, $f0, $f2
/* 3B689C E00B4BAC 3C028000 */ lui $v0, 0x8000
/* 3B68A0 E00B4BB0 4620018D */ trunc.w.d $f6, $f0
/* 3B68A4 E00B4BB4 440A3000 */ mfc1 $t2, $f6
/* 3B68A8 E00B4BB8 00000000 */ nop
/* 3B68AC E00B4BBC 01425025 */ or $t2, $t2, $v0
/* 3B68B0 E00B4BC0 3C05D9FF */ lui $a1, 0xd9ff
.LE00B4BC4:
/* 3B68B4 E00B4BC4 34A5F9FF */ ori $a1, $a1, 0xf9ff
/* 3B68B8 E00B4BC8 3C06D9FF */ lui $a2, 0xd9ff
/* 3B68BC E00B4BCC 34C6FFFF */ ori $a2, $a2, 0xffff
/* 3B68C0 E00B4BD0 3C070101 */ lui $a3, 0x101
/* 3B68C4 E00B4BD4 34E7E03C */ ori $a3, $a3, 0xe03c
/* 3B68C8 E00B4BD8 3C090100 */ lui $t1, 0x100
/* 3B68CC E00B4BDC 3529C018 */ ori $t1, $t1, 0xc018
/* 3B68D0 E00B4BE0 3C08D838 */ lui $t0, 0xd838
/* 3B68D4 E00B4BE4 35080002 */ ori $t0, $t0, 2
/* 3B68D8 E00B4BE8 3C04800A */ lui $a0, %hi(gMasterGfxPos)
/* 3B68DC E00B4BEC 2484A66C */ addiu $a0, $a0, %lo(gMasterGfxPos)
/* 3B68E0 E00B4BF0 314200FF */ andi $v0, $t2, 0xff
/* 3B68E4 E00B4BF4 8C830000 */ lw $v1, ($a0)
/* 3B68E8 E00B4BF8 01621025 */ or $v0, $t3, $v0
/* 3B68EC E00B4BFC AD820000 */ sw $v0, ($t4)
/* 3B68F0 E00B4C00 0060102D */ daddu $v0, $v1, $zero
/* 3B68F4 E00B4C04 24630008 */ addiu $v1, $v1, 8
/* 3B68F8 E00B4C08 AC830000 */ sw $v1, ($a0)
/* 3B68FC E00B4C0C AC450000 */ sw $a1, ($v0)
/* 3B6900 E00B4C10 AC400004 */ sw $zero, 4($v0)
/* 3B6904 E00B4C14 24620008 */ addiu $v0, $v1, 8
/* 3B6908 E00B4C18 AC820000 */ sw $v0, ($a0)
/* 3B690C E00B4C1C 24020400 */ addiu $v0, $zero, 0x400
/* 3B6910 E00B4C20 AC620004 */ sw $v0, 4($v1)
/* 3B6914 E00B4C24 24620010 */ addiu $v0, $v1, 0x10
/* 3B6918 E00B4C28 AC660000 */ sw $a2, ($v1)
/* 3B691C E00B4C2C AC820000 */ sw $v0, ($a0)
/* 3B6920 E00B4C30 24620018 */ addiu $v0, $v1, 0x18
/* 3B6924 E00B4C34 AC670008 */ sw $a3, 8($v1)
/* 3B6928 E00B4C38 8FAD00A8 */ lw $t5, 0xa8($sp)
/* 3B692C E00B4C3C 3C05DE00 */ lui $a1, 0xde00
/* 3B6930 E00B4C40 AC6D000C */ sw $t5, 0xc($v1)
/* 3B6934 E00B4C44 AC820000 */ sw $v0, ($a0)
/* 3B6938 E00B4C48 3C020900 */ lui $v0, 0x900
/* 3B693C E00B4C4C 244204D8 */ addiu $v0, $v0, 0x4d8
/* 3B6940 E00B4C50 AC620014 */ sw $v0, 0x14($v1)
/* 3B6944 E00B4C54 24620020 */ addiu $v0, $v1, 0x20
/* 3B6948 E00B4C58 AC650010 */ sw $a1, 0x10($v1)
/* 3B694C E00B4C5C AC820000 */ sw $v0, ($a0)
/* 3B6950 E00B4C60 AC690018 */ sw $t1, 0x18($v1)
/* 3B6954 E00B4C64 25A201C0 */ addiu $v0, $t5, 0x1c0
/* 3B6958 E00B4C68 AC62001C */ sw $v0, 0x1c($v1)
/* 3B695C E00B4C6C 24620028 */ addiu $v0, $v1, 0x28
/* 3B6960 E00B4C70 AC820000 */ sw $v0, ($a0)
/* 3B6964 E00B4C74 3C020900 */ lui $v0, 0x900
/* 3B6968 E00B4C78 24420538 */ addiu $v0, $v0, 0x538
/* 3B696C E00B4C7C AC620024 */ sw $v0, 0x24($v1)
/* 3B6970 E00B4C80 24620030 */ addiu $v0, $v1, 0x30
/* 3B6974 E00B4C84 AC650020 */ sw $a1, 0x20($v1)
/* 3B6978 E00B4C88 24050040 */ addiu $a1, $zero, 0x40
/* 3B697C E00B4C8C AC820000 */ sw $v0, ($a0)
/* 3B6980 E00B4C90 24620038 */ addiu $v0, $v1, 0x38
/* 3B6984 E00B4C94 AC680028 */ sw $t0, 0x28($v1)
/* 3B6988 E00B4C98 AC65002C */ sw $a1, 0x2c($v1)
/* 3B698C E00B4C9C AC820000 */ sw $v0, ($a0)
/* 3B6990 E00B4CA0 AC680030 */ sw $t0, 0x30($v1)
/* 3B6994 E00B4CA4 AC650034 */ sw $a1, 0x34($v1)
/* 3B6998 E00B4CA8 8FBF00D4 */ lw $ra, 0xd4($sp)
/* 3B699C E00B4CAC 8FBE00D0 */ lw $fp, 0xd0($sp)
/* 3B69A0 E00B4CB0 8FB700CC */ lw $s7, 0xcc($sp)
/* 3B69A4 E00B4CB4 8FB600C8 */ lw $s6, 0xc8($sp)
/* 3B69A8 E00B4CB8 8FB500C4 */ lw $s5, 0xc4($sp)
/* 3B69AC E00B4CBC 8FB400C0 */ lw $s4, 0xc0($sp)
/* 3B69B0 E00B4CC0 8FB300BC */ lw $s3, 0xbc($sp)
/* 3B69B4 E00B4CC4 8FB200B8 */ lw $s2, 0xb8($sp)
/* 3B69B8 E00B4CC8 8FB100B4 */ lw $s1, 0xb4($sp)
/* 3B69BC E00B4CCC 8FB000B0 */ lw $s0, 0xb0($sp)
/* 3B69C0 E00B4CD0 D7BE0100 */ ldc1 $f30, 0x100($sp)
/* 3B69C4 E00B4CD4 D7BC00F8 */ ldc1 $f28, 0xf8($sp)
/* 3B69C8 E00B4CD8 D7BA00F0 */ ldc1 $f26, 0xf0($sp)
/* 3B69CC E00B4CDC D7B800E8 */ ldc1 $f24, 0xe8($sp)
/* 3B69D0 E00B4CE0 D7B600E0 */ ldc1 $f22, 0xe0($sp)
/* 3B69D4 E00B4CE4 D7B400D8 */ ldc1 $f20, 0xd8($sp)
/* 3B69D8 E00B4CE8 03E00008 */ jr $ra
/* 3B69DC E00B4CEC 27BD0108 */ addiu $sp, $sp, 0x108

View File

@ -1,86 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel water_block_main
/* 3B5CF0 E00B4000 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 3B5CF4 E00B4004 F7B40038 */ sdc1 $f20, 0x38($sp)
/* 3B5CF8 E00B4008 4485A000 */ mtc1 $a1, $f20
/* 3B5CFC E00B400C F7B60040 */ sdc1 $f22, 0x40($sp)
/* 3B5D00 E00B4010 4486B000 */ mtc1 $a2, $f22
/* 3B5D04 E00B4014 AFB20030 */ sw $s2, 0x30($sp)
/* 3B5D08 E00B4018 0080902D */ daddu $s2, $a0, $zero
/* 3B5D0C E00B401C F7B80048 */ sdc1 $f24, 0x48($sp)
/* 3B5D10 E00B4020 4487C000 */ mtc1 $a3, $f24
/* 3B5D14 E00B4024 27A40010 */ addiu $a0, $sp, 0x10
/* 3B5D18 E00B4028 AFB1002C */ sw $s1, 0x2c($sp)
/* 3B5D1C E00B402C 8FB10064 */ lw $s1, 0x64($sp)
/* 3B5D20 E00B4030 3C02E00B */ lui $v0, %hi(water_block_init)
/* 3B5D24 E00B4034 24424134 */ addiu $v0, $v0, %lo(water_block_init)
/* 3B5D28 E00B4038 AFA20018 */ sw $v0, 0x18($sp)
/* 3B5D2C E00B403C 3C02E00B */ lui $v0, %hi(water_block_update)
/* 3B5D30 E00B4040 2442413C */ addiu $v0, $v0, %lo(water_block_update)
/* 3B5D34 E00B4044 AFA2001C */ sw $v0, 0x1c($sp)
/* 3B5D38 E00B4048 3C02E00B */ lui $v0, %hi(water_block_render)
/* 3B5D3C E00B404C 2442452C */ addiu $v0, $v0, %lo(water_block_render)
/* 3B5D40 E00B4050 AFA20020 */ sw $v0, 0x20($sp)
/* 3B5D44 E00B4054 2402005A */ addiu $v0, $zero, 0x5a
/* 3B5D48 E00B4058 AFBF0034 */ sw $ra, 0x34($sp)
/* 3B5D4C E00B405C AFB00028 */ sw $s0, 0x28($sp)
/* 3B5D50 E00B4060 AFA00010 */ sw $zero, 0x10($sp)
/* 3B5D54 E00B4064 AFA00024 */ sw $zero, 0x24($sp)
/* 3B5D58 E00B4068 0C080124 */ jal shim_create_effect_instance
/* 3B5D5C E00B406C AFA20014 */ sw $v0, 0x14($sp)
/* 3B5D60 E00B4070 24040098 */ addiu $a0, $zero, 0x98
/* 3B5D64 E00B4074 24030001 */ addiu $v1, $zero, 1
/* 3B5D68 E00B4078 0040802D */ daddu $s0, $v0, $zero
/* 3B5D6C E00B407C 0C08012C */ jal shim_general_heap_malloc
/* 3B5D70 E00B4080 AE030008 */ sw $v1, 8($s0)
/* 3B5D74 E00B4084 0040182D */ daddu $v1, $v0, $zero
/* 3B5D78 E00B4088 14600003 */ bnez $v1, .LE00B4098
/* 3B5D7C E00B408C AE02000C */ sw $v0, 0xc($s0)
.LE00B4090:
/* 3B5D80 E00B4090 0802D024 */ j .LE00B4090
/* 3B5D84 E00B4094 00000000 */ nop
.LE00B4098:
/* 3B5D88 E00B4098 AC720000 */ sw $s2, ($v1)
/* 3B5D8C E00B409C 1E200004 */ bgtz $s1, .LE00B40B0
/* 3B5D90 E00B40A0 AC600014 */ sw $zero, 0x14($v1)
/* 3B5D94 E00B40A4 240203E8 */ addiu $v0, $zero, 0x3e8
/* 3B5D98 E00B40A8 0802D02D */ j .LE00B40B4
/* 3B5D9C E00B40AC AC620010 */ sw $v0, 0x10($v1)
.LE00B40B0:
/* 3B5DA0 E00B40B0 AC710010 */ sw $s1, 0x10($v1)
.LE00B40B4:
/* 3B5DA4 E00B40B4 24060003 */ addiu $a2, $zero, 3
/* 3B5DA8 E00B40B8 2405FFF3 */ addiu $a1, $zero, -0xd
/* 3B5DAC E00B40BC 2464000C */ addiu $a0, $v1, 0xc
/* 3B5DB0 E00B40C0 AC600024 */ sw $zero, 0x24($v1)
/* 3B5DB4 E00B40C4 E4740004 */ swc1 $f20, 4($v1)
/* 3B5DB8 E00B40C8 E4760008 */ swc1 $f22, 8($v1)
/* 3B5DBC E00B40CC E478000C */ swc1 $f24, 0xc($v1)
/* 3B5DC0 E00B40D0 C7A00060 */ lwc1 $f0, 0x60($sp)
/* 3B5DC4 E00B40D4 2402002F */ addiu $v0, $zero, 0x2f
/* 3B5DC8 E00B40D8 AC620018 */ sw $v0, 0x18($v1)
/* 3B5DCC E00B40DC 2402007F */ addiu $v0, $zero, 0x7f
/* 3B5DD0 E00B40E0 AC62001C */ sw $v0, 0x1c($v1)
/* 3B5DD4 E00B40E4 240200FF */ addiu $v0, $zero, 0xff
/* 3B5DD8 E00B40E8 AC620020 */ sw $v0, 0x20($v1)
/* 3B5DDC E00B40EC AC600030 */ sw $zero, 0x30($v1)
/* 3B5DE0 E00B40F0 AC600034 */ sw $zero, 0x34($v1)
/* 3B5DE4 E00B40F4 E460002C */ swc1 $f0, 0x2c($v1)
.LE00B40F8:
/* 3B5DE8 E00B40F8 AC850088 */ sw $a1, 0x88($a0)
/* 3B5DEC E00B40FC 24A50004 */ addiu $a1, $a1, 4
/* 3B5DF0 E00B4100 24C6FFFF */ addiu $a2, $a2, -1
/* 3B5DF4 E00B4104 04C1FFFC */ bgez $a2, .LE00B40F8
/* 3B5DF8 E00B4108 2484FFFC */ addiu $a0, $a0, -4
/* 3B5DFC E00B410C 0200102D */ daddu $v0, $s0, $zero
/* 3B5E00 E00B4110 8FBF0034 */ lw $ra, 0x34($sp)
/* 3B5E04 E00B4114 8FB20030 */ lw $s2, 0x30($sp)
/* 3B5E08 E00B4118 8FB1002C */ lw $s1, 0x2c($sp)
/* 3B5E0C E00B411C 8FB00028 */ lw $s0, 0x28($sp)
/* 3B5E10 E00B4120 D7B80048 */ ldc1 $f24, 0x48($sp)
/* 3B5E14 E00B4124 D7B60040 */ ldc1 $f22, 0x40($sp)
/* 3B5E18 E00B4128 D7B40038 */ ldc1 $f20, 0x38($sp)
/* 3B5E1C E00B412C 03E00008 */ jr $ra
/* 3B5E20 E00B4130 27BD0050 */ addiu $sp, $sp, 0x50

View File

@ -1,290 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_E00B4ED0
.double 0.01
dlabel D_E00B4ED8
.double 0.2
dlabel D_E00B4EE0
.double 0.2
dlabel D_E00B4EE8
.double 0.97
dlabel D_E00B4EF0
.double 0.1
.section .text
glabel water_block_update
/* 3B5E2C E00B413C 27BDFFB8 */ addiu $sp, $sp, -0x48
/* 3B5E30 E00B4140 AFB20020 */ sw $s2, 0x20($sp)
/* 3B5E34 E00B4144 0080902D */ daddu $s2, $a0, $zero
/* 3B5E38 E00B4148 AFBF0024 */ sw $ra, 0x24($sp)
/* 3B5E3C E00B414C AFB1001C */ sw $s1, 0x1c($sp)
/* 3B5E40 E00B4150 AFB00018 */ sw $s0, 0x18($sp)
/* 3B5E44 E00B4154 F7BA0040 */ sdc1 $f26, 0x40($sp)
/* 3B5E48 E00B4158 F7B80038 */ sdc1 $f24, 0x38($sp)
/* 3B5E4C E00B415C F7B60030 */ sdc1 $f22, 0x30($sp)
/* 3B5E50 E00B4160 F7B40028 */ sdc1 $f20, 0x28($sp)
/* 3B5E54 E00B4164 8E430000 */ lw $v1, ($s2)
/* 3B5E58 E00B4168 8E51000C */ lw $s1, 0xc($s2)
/* 3B5E5C E00B416C 30620010 */ andi $v0, $v1, 0x10
/* 3B5E60 E00B4170 8E240000 */ lw $a0, ($s1)
/* 3B5E64 E00B4174 1040000B */ beqz $v0, .LE00B41A4
/* 3B5E68 E00B4178 24020001 */ addiu $v0, $zero, 1
/* 3B5E6C E00B417C 14820005 */ bne $a0, $v0, .LE00B4194
/* 3B5E70 E00B4180 2402FFEF */ addiu $v0, $zero, -0x11
/* 3B5E74 E00B4184 00621024 */ and $v0, $v1, $v0
/* 3B5E78 E00B4188 AE420000 */ sw $v0, ($s2)
/* 3B5E7C E00B418C 0802D068 */ j .LE00B41A0
/* 3B5E80 E00B4190 24020004 */ addiu $v0, $zero, 4
.LE00B4194:
/* 3B5E84 E00B4194 00621024 */ and $v0, $v1, $v0
/* 3B5E88 E00B4198 AE420000 */ sw $v0, ($s2)
/* 3B5E8C E00B419C 24020010 */ addiu $v0, $zero, 0x10
.LE00B41A0:
/* 3B5E90 E00B41A0 AE220010 */ sw $v0, 0x10($s1)
.LE00B41A4:
/* 3B5E94 E00B41A4 8E230010 */ lw $v1, 0x10($s1)
/* 3B5E98 E00B41A8 286203E8 */ slti $v0, $v1, 0x3e8
/* 3B5E9C E00B41AC 10400002 */ beqz $v0, .LE00B41B8
/* 3B5EA0 E00B41B0 2462FFFF */ addiu $v0, $v1, -1
/* 3B5EA4 E00B41B4 AE220010 */ sw $v0, 0x10($s1)
.LE00B41B8:
/* 3B5EA8 E00B41B8 3C030004 */ lui $v1, 4
/* 3B5EAC E00B41BC 8E220014 */ lw $v0, 0x14($s1)
/* 3B5EB0 E00B41C0 3463F1A0 */ ori $v1, $v1, 0xf1a0
/* 3B5EB4 E00B41C4 24420001 */ addiu $v0, $v0, 1
/* 3B5EB8 E00B41C8 0062182A */ slt $v1, $v1, $v0
/* 3B5EBC E00B41CC 10600003 */ beqz $v1, .LE00B41DC
/* 3B5EC0 E00B41D0 AE220014 */ sw $v0, 0x14($s1)
/* 3B5EC4 E00B41D4 24020100 */ addiu $v0, $zero, 0x100
/* 3B5EC8 E00B41D8 AE220014 */ sw $v0, 0x14($s1)
.LE00B41DC:
/* 3B5ECC E00B41DC 8E230010 */ lw $v1, 0x10($s1)
/* 3B5ED0 E00B41E0 04610020 */ bgez $v1, .LE00B4264
/* 3B5ED4 E00B41E4 24020001 */ addiu $v0, $zero, 1
/* 3B5ED8 E00B41E8 1482001A */ bne $a0, $v0, .LE00B4254
/* 3B5EDC E00B41EC 00000000 */ nop
/* 3B5EE0 E00B41F0 0C080150 */ jal shim_load_effect
/* 3B5EE4 E00B41F4 2404005F */ addiu $a0, $zero, 0x5f
/* 3B5EE8 E00B41F8 C6200008 */ lwc1 $f0, 8($s1)
/* 3B5EEC E00B41FC 3C0141C0 */ lui $at, 0x41c0
/* 3B5EF0 E00B4200 4481B000 */ mtc1 $at, $f22
/* 3B5EF4 E00B4204 3C014000 */ lui $at, 0x4000
/* 3B5EF8 E00B4208 4481A000 */ mtc1 $at, $f20
/* 3B5EFC E00B420C 2410001E */ addiu $s0, $zero, 0x1e
/* 3B5F00 E00B4210 AFB00014 */ sw $s0, 0x14($sp)
/* 3B5F04 E00B4214 46160000 */ add.s $f0, $f0, $f22
/* 3B5F08 E00B4218 E7B40010 */ swc1 $f20, 0x10($sp)
/* 3B5F0C E00B421C 8E250004 */ lw $a1, 4($s1)
/* 3B5F10 E00B4220 8E27000C */ lw $a3, 0xc($s1)
/* 3B5F14 E00B4224 44060000 */ mfc1 $a2, $f0
/* 3B5F18 E00B4228 0C02F800 */ jal water_splash_main
/* 3B5F1C E00B422C 0000202D */ daddu $a0, $zero, $zero
/* 3B5F20 E00B4230 C6200008 */ lwc1 $f0, 8($s1)
/* 3B5F24 E00B4234 E7B40010 */ swc1 $f20, 0x10($sp)
/* 3B5F28 E00B4238 AFB00014 */ sw $s0, 0x14($sp)
/* 3B5F2C E00B423C 46160000 */ add.s $f0, $f0, $f22
/* 3B5F30 E00B4240 8E250004 */ lw $a1, 4($s1)
/* 3B5F34 E00B4244 8E27000C */ lw $a3, 0xc($s1)
/* 3B5F38 E00B4248 44060000 */ mfc1 $a2, $f0
/* 3B5F3C E00B424C 0C02F800 */ jal water_splash_main
/* 3B5F40 E00B4250 24040001 */ addiu $a0, $zero, 1
.LE00B4254:
/* 3B5F44 E00B4254 0C080128 */ jal shim_remove_effect
/* 3B5F48 E00B4258 0240202D */ daddu $a0, $s2, $zero
/* 3B5F4C E00B425C 0802D141 */ j .LE00B4504
/* 3B5F50 E00B4260 00000000 */ nop
.LE00B4264:
/* 3B5F54 E00B4264 8E300014 */ lw $s0, 0x14($s1)
/* 3B5F58 E00B4268 1480000B */ bnez $a0, .LE00B4298
/* 3B5F5C E00B426C 2A020004 */ slti $v0, $s0, 4
/* 3B5F60 E00B4270 28620010 */ slti $v0, $v1, 0x10
/* 3B5F64 E00B4274 10400003 */ beqz $v0, .LE00B4284
/* 3B5F68 E00B4278 00031100 */ sll $v0, $v1, 4
/* 3B5F6C E00B427C AE220024 */ sw $v0, 0x24($s1)
/* 3B5F70 E00B4280 AE220028 */ sw $v0, 0x28($s1)
.LE00B4284:
/* 3B5F74 E00B4284 2A020010 */ slti $v0, $s0, 0x10
/* 3B5F78 E00B4288 10400008 */ beqz $v0, .LE00B42AC
/* 3B5F7C E00B428C 00101100 */ sll $v0, $s0, 4
/* 3B5F80 E00B4290 0802D0A9 */ j .LE00B42A4
/* 3B5F84 E00B4294 2442000F */ addiu $v0, $v0, 0xf
.LE00B4298:
/* 3B5F88 E00B4298 10400004 */ beqz $v0, .LE00B42AC
/* 3B5F8C E00B429C 00101180 */ sll $v0, $s0, 6
/* 3B5F90 E00B42A0 2442003F */ addiu $v0, $v0, 0x3f
.LE00B42A4:
/* 3B5F94 E00B42A4 AE220024 */ sw $v0, 0x24($s1)
/* 3B5F98 E00B42A8 AE220028 */ sw $v0, 0x28($s1)
.LE00B42AC:
/* 3B5F9C E00B42AC 00101040 */ sll $v0, $s0, 1
/* 3B5FA0 E00B42B0 00501021 */ addu $v0, $v0, $s0
/* 3B5FA4 E00B42B4 00021040 */ sll $v0, $v0, 1
/* 3B5FA8 E00B42B8 00501021 */ addu $v0, $v0, $s0
/* 3B5FAC E00B42BC 44826000 */ mtc1 $v0, $f12
/* 3B5FB0 E00B42C0 00000000 */ nop
/* 3B5FB4 E00B42C4 0C080140 */ jal shim_sin_deg
/* 3B5FB8 E00B42C8 46806320 */ cvt.s.w $f12, $f12
/* 3B5FBC E00B42CC 4490A000 */ mtc1 $s0, $f20
/* 3B5FC0 E00B42D0 00000000 */ nop
/* 3B5FC4 E00B42D4 4680A520 */ cvt.s.w $f20, $f20
/* 3B5FC8 E00B42D8 3C01E00B */ lui $at, %hi(D_E00B4ED0)
/* 3B5FCC E00B42DC D4224ED0 */ ldc1 $f2, %lo(D_E00B4ED0)($at)
/* 3B5FD0 E00B42E0 4600A521 */ cvt.d.s $f20, $f20
/* 3B5FD4 E00B42E4 4622A502 */ mul.d $f20, $f20, $f2
/* 3B5FD8 E00B42E8 00000000 */ nop
/* 3B5FDC E00B42EC 3C014200 */ lui $at, 0x4200
/* 3B5FE0 E00B42F0 4481C000 */ mtc1 $at, $f24
/* 3B5FE4 E00B42F4 00000000 */ nop
/* 3B5FE8 E00B42F8 46180002 */ mul.s $f0, $f0, $f24
/* 3B5FEC E00B42FC 00000000 */ nop
/* 3B5FF0 E00B4300 3C0140C0 */ lui $at, 0x40c0
/* 3B5FF4 E00B4304 44816000 */ mtc1 $at, $f12
/* 3B5FF8 E00B4308 4620A520 */ cvt.s.d $f20, $f20
/* 3B5FFC E00B430C 460CA302 */ mul.s $f12, $f20, $f12
/* 3B6000 E00B4310 00000000 */ nop
/* 3B6004 E00B4314 3C0142FE */ lui $at, 0x42fe
/* 3B6008 E00B4318 44811000 */ mtc1 $at, $f2
/* 3B600C E00B431C 00000000 */ nop
/* 3B6010 E00B4320 46020000 */ add.s $f0, $f0, $f2
/* 3B6014 E00B4324 4600038D */ trunc.w.s $f14, $f0
/* 3B6018 E00B4328 0C080140 */ jal shim_sin_deg
/* 3B601C E00B432C E62E001C */ swc1 $f14, 0x1c($s1)
/* 3B6020 E00B4330 4600A306 */ mov.s $f12, $f20
/* 3B6024 E00B4334 0C080140 */ jal shim_sin_deg
/* 3B6028 E00B4338 46000586 */ mov.s $f22, $f0
/* 3B602C E00B433C 4614A300 */ add.s $f12, $f20, $f20
/* 3B6030 E00B4340 0C080144 */ jal shim_cos_deg
/* 3B6034 E00B4344 46000686 */ mov.s $f26, $f0
/* 3B6038 E00B4348 4600A306 */ mov.s $f12, $f20
/* 3B603C E00B434C 0C080144 */ jal shim_cos_deg
/* 3B6040 E00B4350 46000506 */ mov.s $f20, $f0
/* 3B6044 E00B4354 4618B582 */ mul.s $f22, $f22, $f24
/* 3B6048 E00B4358 00000000 */ nop
/* 3B604C E00B435C 4618A502 */ mul.s $f20, $f20, $f24
/* 3B6050 E00B4360 00000000 */ nop
/* 3B6054 E00B4364 46180002 */ mul.s $f0, $f0, $f24
/* 3B6058 E00B4368 00000000 */ nop
/* 3B605C E00B436C 461AB582 */ mul.s $f22, $f22, $f26
/* 3B6060 E00B4370 00000000 */ nop
/* 3B6064 E00B4374 3C014380 */ lui $at, 0x4380
/* 3B6068 E00B4378 44811000 */ mtc1 $at, $f2
/* 3B606C E00B437C 00000000 */ nop
/* 3B6070 E00B4380 4602B580 */ add.s $f22, $f22, $f2
/* 3B6074 E00B4384 C6220034 */ lwc1 $f2, 0x34($s1)
/* 3B6078 E00B4388 3C01E00B */ lui $at, %hi(D_E00B4ED8)
/* 3B607C E00B438C D4244ED8 */ ldc1 $f4, %lo(D_E00B4ED8)($at)
/* 3B6080 E00B4390 460010A1 */ cvt.d.s $f2, $f2
/* 3B6084 E00B4394 46241080 */ add.d $f2, $f2, $f4
/* 3B6088 E00B4398 4614B580 */ add.s $f22, $f22, $f20
/* 3B608C E00B439C 3C014300 */ lui $at, 0x4300
/* 3B6090 E00B43A0 44812000 */ mtc1 $at, $f4
/* 3B6094 E00B43A4 4600B580 */ add.s $f22, $f22, $f0
/* 3B6098 E00B43A8 462010A0 */ cvt.s.d $f2, $f2
/* 3B609C E00B43AC E6220034 */ swc1 $f2, 0x34($s1)
/* 3B60A0 E00B43B0 4602203E */ c.le.s $f4, $f2
/* 3B60A4 E00B43B4 00000000 */ nop
/* 3B60A8 E00B43B8 45000002 */ bc1f .LE00B43C4
/* 3B60AC E00B43BC E6360030 */ swc1 $f22, 0x30($s1)
/* 3B60B0 E00B43C0 AE200034 */ sw $zero, 0x34($s1)
.LE00B43C4:
/* 3B60B4 E00B43C4 0000902D */ daddu $s2, $zero, $zero
/* 3B60B8 E00B43C8 0220802D */ daddu $s0, $s1, $zero
.LE00B43CC:
/* 3B60BC E00B43CC 8E020088 */ lw $v0, 0x88($s0)
/* 3B60C0 E00B43D0 24420001 */ addiu $v0, $v0, 1
/* 3B60C4 E00B43D4 04400047 */ bltz $v0, .LE00B44F4
/* 3B60C8 E00B43D8 AE020088 */ sw $v0, 0x88($s0)
/* 3B60CC E00B43DC 1440001E */ bnez $v0, .LE00B4458
/* 3B60D0 E00B43E0 2404000A */ addiu $a0, $zero, 0xa
/* 3B60D4 E00B43E4 3C014370 */ lui $at, 0x4370
/* 3B60D8 E00B43E8 44810000 */ mtc1 $at, $f0
/* 3B60DC E00B43EC AE000038 */ sw $zero, 0x38($s0)
/* 3B60E0 E00B43F0 0C080138 */ jal shim_rand_int
/* 3B60E4 E00B43F4 E6000048 */ swc1 $f0, 0x48($s0)
/* 3B60E8 E00B43F8 2442FFFB */ addiu $v0, $v0, -5
/* 3B60EC E00B43FC 3C01E00B */ lui $at, %hi(D_E00B4EE0)
/* 3B60F0 E00B4400 D4224EE0 */ ldc1 $f2, %lo(D_E00B4EE0)($at)
/* 3B60F4 E00B4404 44820000 */ mtc1 $v0, $f0
/* 3B60F8 E00B4408 00000000 */ nop
/* 3B60FC E00B440C 46800021 */ cvt.d.w $f0, $f0
/* 3B6100 E00B4410 46220002 */ mul.d $f0, $f0, $f2
/* 3B6104 E00B4414 00000000 */ nop
/* 3B6108 E00B4418 2404000A */ addiu $a0, $zero, 0xa
/* 3B610C E00B441C 46200020 */ cvt.s.d $f0, $f0
/* 3B6110 E00B4420 0C080138 */ jal shim_rand_int
/* 3B6114 E00B4424 E6000058 */ swc1 $f0, 0x58($s0)
/* 3B6118 E00B4428 2404000A */ addiu $a0, $zero, 0xa
/* 3B611C E00B442C 24420002 */ addiu $v0, $v0, 2
/* 3B6120 E00B4430 44820000 */ mtc1 $v0, $f0
/* 3B6124 E00B4434 00000000 */ nop
/* 3B6128 E00B4438 46800020 */ cvt.s.w $f0, $f0
/* 3B612C E00B443C 0C080138 */ jal shim_rand_int
/* 3B6130 E00B4440 E6000068 */ swc1 $f0, 0x68($s0)
/* 3B6134 E00B4444 24420001 */ addiu $v0, $v0, 1
/* 3B6138 E00B4448 44820000 */ mtc1 $v0, $f0
/* 3B613C E00B444C 00000000 */ nop
/* 3B6140 E00B4450 46800020 */ cvt.s.w $f0, $f0
/* 3B6144 E00B4454 E6000078 */ swc1 $f0, 0x78($s0)
.LE00B4458:
/* 3B6148 E00B4458 C6060058 */ lwc1 $f6, 0x58($s0)
/* 3B614C E00B445C 3C01E00B */ lui $at, %hi(D_E00B4EE8)
/* 3B6150 E00B4460 D4204EE8 */ ldc1 $f0, %lo(D_E00B4EE8)($at)
/* 3B6154 E00B4464 460031A1 */ cvt.d.s $f6, $f6
/* 3B6158 E00B4468 46203182 */ mul.d $f6, $f6, $f0
/* 3B615C E00B446C 00000000 */ nop
/* 3B6160 E00B4470 C6040068 */ lwc1 $f4, 0x68($s0)
/* 3B6164 E00B4474 3C014120 */ lui $at, 0x4120
/* 3B6168 E00B4478 44811000 */ mtc1 $at, $f2
/* 3B616C E00B447C 00000000 */ nop
/* 3B6170 E00B4480 46041081 */ sub.s $f2, $f2, $f4
/* 3B6174 E00B4484 3C01E00B */ lui $at, %hi(D_E00B4EF0)
/* 3B6178 E00B4488 D4204EF0 */ ldc1 $f0, %lo(D_E00B4EF0)($at)
/* 3B617C E00B448C 460010A1 */ cvt.d.s $f2, $f2
/* 3B6180 E00B4490 46201082 */ mul.d $f2, $f2, $f0
/* 3B6184 E00B4494 00000000 */ nop
/* 3B6188 E00B4498 C6080048 */ lwc1 $f8, 0x48($s0)
/* 3B618C E00B449C C60A0058 */ lwc1 $f10, 0x58($s0)
/* 3B6190 E00B44A0 46002006 */ mov.s $f0, $f4
/* 3B6194 E00B44A4 46004200 */ add.s $f8, $f8, $f0
/* 3B6198 E00B44A8 C6000038 */ lwc1 $f0, 0x38($s0)
/* 3B619C E00B44AC 460A0000 */ add.s $f0, $f0, $f10
/* 3B61A0 E00B44B0 E6080048 */ swc1 $f8, 0x48($s0)
/* 3B61A4 E00B44B4 46004286 */ mov.s $f10, $f8
/* 3B61A8 E00B44B8 3C0143F0 */ lui $at, 0x43f0
/* 3B61AC E00B44BC 44814000 */ mtc1 $at, $f8
/* 3B61B0 E00B44C0 46002121 */ cvt.d.s $f4, $f4
/* 3B61B4 E00B44C4 460A403C */ c.lt.s $f8, $f10
/* 3B61B8 E00B44C8 E6000038 */ swc1 $f0, 0x38($s0)
/* 3B61BC E00B44CC 46222100 */ add.d $f4, $f4, $f2
/* 3B61C0 E00B44D0 462031A0 */ cvt.s.d $f6, $f6
/* 3B61C4 E00B44D4 E6060058 */ swc1 $f6, 0x58($s0)
/* 3B61C8 E00B44D8 46202120 */ cvt.s.d $f4, $f4
/* 3B61CC E00B44DC 45000005 */ bc1f .LE00B44F4
/* 3B61D0 E00B44E0 E6040068 */ swc1 $f4, 0x68($s0)
/* 3B61D4 E00B44E4 0C080138 */ jal shim_rand_int
/* 3B61D8 E00B44E8 2404000A */ addiu $a0, $zero, 0xa
/* 3B61DC E00B44EC 00021027 */ nor $v0, $zero, $v0
/* 3B61E0 E00B44F0 AE020088 */ sw $v0, 0x88($s0)
.LE00B44F4:
/* 3B61E4 E00B44F4 26520001 */ addiu $s2, $s2, 1
/* 3B61E8 E00B44F8 2A420004 */ slti $v0, $s2, 4
/* 3B61EC E00B44FC 1440FFB3 */ bnez $v0, .LE00B43CC
/* 3B61F0 E00B4500 26100004 */ addiu $s0, $s0, 4
.LE00B4504:
/* 3B61F4 E00B4504 8FBF0024 */ lw $ra, 0x24($sp)
/* 3B61F8 E00B4508 8FB20020 */ lw $s2, 0x20($sp)
/* 3B61FC E00B450C 8FB1001C */ lw $s1, 0x1c($sp)
/* 3B6200 E00B4510 8FB00018 */ lw $s0, 0x18($sp)
/* 3B6204 E00B4514 D7BA0040 */ ldc1 $f26, 0x40($sp)
/* 3B6208 E00B4518 D7B80038 */ ldc1 $f24, 0x38($sp)
/* 3B620C E00B451C D7B60030 */ ldc1 $f22, 0x30($sp)
/* 3B6210 E00B4520 D7B40028 */ ldc1 $f20, 0x28($sp)
/* 3B6214 E00B4524 03E00008 */ jr $ra
/* 3B6218 E00B4528 27BD0048 */ addiu $sp, $sp, 0x48

View File

@ -5139,7 +5139,28 @@ segments:
subsegments:
- [0x3B5CF0, c, water_block]
- [0x3B69E0]
- [0x3B6BF0, bin] # water_block gfx
- name: effect_gfx_water_block
dir: effects/gfx
type: code
start: 0x3B6BF0
vram: 0x09000000
symbol_name_format: $VRAM_$ROM
subsegments:
- [0x3B6BF0, c, water_block]
- start: 0x3B6BF0
type: .data
name: water_block
subsegments:
- [0x3B6BF0, i4, D_09000000_3B6BF0, 16, 32]
- [0x3B6CF0, ia4, D_09000100_3B6CF0, 32, 32]
- [0x3B6EF0, gfx, D_09000300_3B6EF0]
- [0x3B6FA0, gfx, D_090003B0_3B6FA0]
- [0x3B7050, vtx, D_09000460_3B7050]
- [0x3B7090, gfx, D_090004A0_3B7090]
- [0x3B70B0] # unmapped
- [0x3B70C8, gfx, D_090004D8_3B70C8]
- [0x3B7128, gfx, D_09000538_3B7128]
- [0x3B7158] # padding
- name: effect_waterfall
dir: effects
type: code