Effect work (#872)

* this effect is awful

* ice_pillar effect

* radial_shimmer done, some data migration

* snowfalls

* data & snowfall

* wip
This commit is contained in:
Ethan Roseman 2022-11-28 05:38:13 +09:00 committed by GitHub
parent 30f8879ddc
commit 2adca590f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
42 changed files with 1619 additions and 1688 deletions

View File

@ -680,8 +680,17 @@ typedef struct StarsBurstFXData {
} StarsBurstFXData; // size = 0x38
typedef struct StarsShimmerFXData {
/* 0x00 */ char todo[0];
} StarsShimmerFXData; // size = unknown
/* 0x00 */ s16 unk_00;
/* 0x02 */ s16 unk_02;
/* 0x04 */ Vec3f pos;
/* 0x10 */ f32 unk_10;
/* 0x14 */ f32 unk_14;
/* 0x18 */ f32 unk_18;
/* 0x1C */ f32 unk_1C;
/* 0x20 */ s32 lifeTime;
/* 0x24 */ s32 timeLeft;
/* 0x28 */ s32 unk_28;
} StarsShimmerFXData; // size = 0x2C
typedef struct RisingBubbleFXData {
/* 0x00 */ s32 unk_00;
@ -944,8 +953,8 @@ typedef struct RadialShimmerFXData {
/* 0x1C */ f32 unk_1C;
/* 0x20 */ f32 unk_20;
/* 0x24 */ s32 unk_24;
/* 0x28 */ s32 unk_28;
/* 0x2C */ s32 unk_2C;
/* 0x28 */ s32 timeLeft;
/* 0x2C */ s32 lifeTime;
/* 0x30 */ f32 unk_30;
/* 0x34 */ f32 unk_34;
/* 0x38 */ f32 unk_38;
@ -1355,8 +1364,12 @@ typedef struct ConfettiFXData {
typedef struct SnowfallFXData {
/* 0x00 */ s32 unk_00;
/* 0x04 */ s32 unk_04;
/* 0x08 */ s32 unk_08;
/* 0x0C */ char unk_0C[0x14];
/* 0x08 */ f32 unk_08;
/* 0x0C */ f32 unk_0C;
/* 0x10 */ f32 unk_10;
/* 0x14 */ f32 unk_14;
/* 0x18 */ f32 unk_18;
/* 0x1C */ f32 unk_1C;
/* 0x20 */ s32 timeLeft;
/* 0x24 */ s32 lifeTime;
/* 0x28 */ s32 unk_28;
@ -2526,12 +2539,18 @@ typedef struct QuizmoAssistantFXData {
} QuizmoAssistantFXData; // size = 0x20
typedef struct IcePillarFXData {
/* 0x00 */ char unk_00[0x4];
/* 0x00 */ s32 unk_00;
/* 0x04 */ Vec3f pos;
/* 0x10 */ char unk_10[0x10];
/* 0x20 */ f32 unk_20;
/* 0x24 */ char todo[0];
} IcePillarFXData; // size = unknown
/* 0x10 */ s32 timeLeft;
/* 0x14 */ s32 lifeTime;
/* 0x18 */ Color_RGBA8 prim;
/* 0x1C */ Color_RGBA8 env;
/* 0x20 */ f32 scale;
/* 0x24 */ s8 unk_24;
/* 0x25 */ s8 unk_25;
/* 0x26 */ char unk_26[0x2];
/* 0x28 */ struct EffectInstance* miscParticles;
} IcePillarFXData; // size = 0x2C
// sun shine directions
enum {

View File

@ -27,6 +27,7 @@ void shim_guTranslateF(float mf[4][4], float x, float y, float z);
void shim_guPerspectiveF(f32 mf[4][4], u16* perspNorm, f32 fovy, f32 aspect, f32 near, f32 far, f32 scale);
void shim_guPositionF(float mf[4][4], float r, float p, float h, float s, float x, float y, float z);
void shim_guOrthoF(float mf[4][4], float l, float r, float b, float t, float n, float f, float scale);
void shim_guFrustumF(float mf[4][4], float l, float r, float b, float t, float n, float f, float scale);
void shim_mem_clear(void* data, s32 numBytes);
void shim_transform_point(Matrix4f mtx, f32 inX, f32 inY, f32 inZ, f32 inS, f32* outX, f32* outY, f32* outZ, f32* outS);
s32 shim_npc_raycast_down_sides(s32, f32*, f32*, f32*, f32*);
@ -69,7 +70,7 @@ void damage_indicator_main(s32, f32, f32, f32, f32, f32, s32, EffectInstance**);
EffectInstance* purple_ring_main(s32, f32, f32, f32, f32, f32, f32, f32);
void flame_main(s32, f32, f32, f32, f32, EffectInstance**);
void stars_burst_main(s32, f32, f32, f32, f32, f32, s32);
FX_MAIN(stars_shimmer_main);
void stars_shimmer_main(s32, f32 x, f32 y, f32 z, f32, f32, s32, s32);
void rising_bubble_main(s32, f32, f32, f32, f32);
void ring_blast_main(s32, f32, f32, f32, f32, s32);
void shockwave_main(s32, f32, f32, f32);
@ -161,7 +162,7 @@ EffectInstance* something_rotating_main(s32, f32, f32, f32, f32, s32);
EffectInstance* breaking_junk_main(s32, f32, f32, f32, f32, s32);
EffectInstance* partner_buff_main(s32, f32, f32, f32, f32, s32);
EffectInstance* quizmo_assistant_main(s32, f32, f32, f32, f32, s32);
FX_MAIN(ice_pillar_main);
EffectInstance* ice_pillar_main(s32 arg0, f32 x, f32 y, f32 z, f32 arg4, s32 arg5);
EffectInstance* sun_main(s32, f32, f32, f32, f32, s32);
EffectInstance* star_spirits_energy_main(s32, f32, f32, f32, f32, s32);
EffectInstance* pink_sparkles_main(s32, f32, f32, f32, f32, f32);

View File

@ -778,7 +778,7 @@ void appendGfx_npc_actor(s32 isPartner, s32 actorIndex) {
effect->data.icePillar->pos.x = actorPosX;
effect->data.icePillar->pos.y = actorPosY;
effect->data.icePillar->pos.z = actorPosZ;
effect->data.icePillar->unk_20 = actor->size.y / 24.0;
effect->data.icePillar->scale = actor->size.y / 24.0;
} else {
effect->data.icePillar->pos.x = 0.0f;
effect->data.icePillar->pos.y = -1000.0f;
@ -1423,7 +1423,7 @@ void appendGfx_player_actor(void* arg0) {
effect->data.icePillar->pos.x = playerPosX - 8.0f;
effect->data.icePillar->pos.y = playerPosY;
effect->data.icePillar->pos.z = playerPosZ;
effect->data.icePillar->unk_20 = player->size.y / 24.0;
effect->data.icePillar->scale = player->size.y / 24.0;
} else {
effect->data.icePillar->pos.x = 0.0f;
effect->data.icePillar->pos.y = -1000.0f;

View File

@ -78,7 +78,7 @@ EffectTableEntry gEffectTable[] = {
/* 0x30 */ FX_ENTRY(big_snowflakes, effect_gfx_big_snowflakes),
/* 0x31 */ FX_ENTRY(debuff, effect_gfx_debuff),
/* 0x32 */ FX_ENTRY(green_impact, effect_gfx_green_impact),
/* 0x33 */ FX_ENTRY(radial_shimmer, _366D60),
/* 0x33 */ FX_ENTRY(radial_shimmer, effect_gfx_radial_shimmer),
/* 0x34 */ FX_ENTRY(ending_decals, effect_gfx_ending_decals),
/* 0x35 */ FX_ENTRY(light_rays, effect_gfx_light_rays),
/* 0x36 */ FX_ENTRY(lightning, effect_gfx_lightning),
@ -96,7 +96,7 @@ EffectTableEntry gEffectTable[] = {
/* 0x42 */ FX_ENTRY(bombette_breaking, effect_gfx_blast),
/* 0x43 */ FX_ENTRY(firework, effect_gfx_firework),
/* 0x44 */ FX_ENTRY(confetti, effect_gfx_confetti),
/* 0x45 */ FX_ENTRY(snowfall, _38D070),
/* 0x45 */ FX_ENTRY(snowfall, effect_gfx_snowfall),
/* 0x46 */ FX_ENTRY_NUMBERED(46, effect_gfx_effect_46),
/* 0x47 */ FX_ENTRY(gather_magic, effect_gfx_gather_magic),
/* 0x48 */ FX_ENTRY(attack_result_text, effect_gfx_attack_result_text),
@ -156,7 +156,7 @@ EffectTableEntry gEffectTable[] = {
/* 0x7E */ FX_ENTRY(breaking_junk, effect_gfx_breaking_junk),
/* 0x7F */ FX_ENTRY(partner_buff, _404F40),
/* 0x80 */ FX_ENTRY(quizmo_assistant, effect_gfx_quizmo_assistant),
/* 0x81 */ FX_ENTRY(ice_pillar, _40A1C0),
/* 0x81 */ FX_ENTRY(ice_pillar, effect_gfx_ice_pillar),
/* 0x82 */ FX_ENTRY(sun, effect_gfx_sun),
/* 0x83 */ FX_ENTRY(star_spirits_energy, effect_gfx_star_spirits_energy),
/* 0x84 */ FX_ENTRY(pink_sparkles, effect_gfx_sparkles),

View File

@ -1,7 +1,46 @@
#include "common.h"
#include "nu/nusys.h"
#include "effects_internal.h"
extern s32 D_E00789A8;
typedef struct UnkBulbGlow {
/* 0x00 */ s32 unk_00;
/* 0x04 */ s32 unk_04;
/* 0x08 */ f32 unk_08;
/* 0x0C */ f32 unk_0C;
/* 0x10 */ s32 unk_10;
/* 0x14 */ s32 unk_14;
} UnkBulbGlow; // size = 0x18
extern Gfx D_09001400_37C1D0[];
extern Gfx D_090014B8_37C288[];
extern Gfx D_09001570_37C340[];
extern Gfx D_09001618_37C3E8[];
extern Gfx D_090016C0_37C490[];
Gfx* D_E0078900[] = {
D_09001400_37C1D0, D_090014B8_37C288, D_09001570_37C340, D_09001618_37C3E8, D_090016C0_37C490, D_09001570_37C340
};
UnkBulbGlow D_E0078918[] = {
{ 0x00000080, 0x00000080, 0.5f, 0.5f, 0x00000040, 0x00000004 },
{ 0x00000040, 0x00000040, 2.0f, 2.0f, 0x00000020, 0x00000010 },
{ 0x00000040, 0x00000040, 1.0f, 1.0f, 0x00000040, 0x00000008 },
{ 0x00000040, 0x00000040, 2.0f, 2.0f, 0x00000010, 0x00000010 },
{ 0x00000040, 0x00000040, 1.0f, 1.0f, 0x00000020, 0x00000010 },
{ 0x00000040, 0x00000040, 1.0f, 1.0f, 0x00000040, 0x00000008 },
};
s32 D_E00789A8 = 0;
u8 D_E00789AC[] = {
255, 255, 255,
255, 255, 128,
255, 128, 255,
128, 255, 255,
255, 128, 128,
128, 255, 128,
128, 128, 255,
};
void bulb_glow_init(EffectInstance* effect);
void bulb_glow_update(EffectInstance* effect);
@ -26,7 +65,7 @@ void bulb_glow_main(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, EffectInst
data = effect->data.bulbGlow = shim_general_heap_malloc(numParts * sizeof(*data));
ASSERT(effect->data.bulbGlow != NULL);
data->unk_00 = arg0 & 0xFF;
data->unk_00 = arg0 & 255;
if (arg0 < 256) {
data->unk_14 = 100;
} else {
@ -112,4 +151,157 @@ void bulb_glow_render(EffectInstance* effect) {
void func_E0078274(void) {
}
// wip
#ifdef WIP
void bulb_glow_appendGfx(void* effect) {
f32 sp18;
f32 sp1C;
s32 sp20;
s32 sp24;
s32 sp28;
EffectInstance* effectTemp = effect;
BulbGlowFXData* data = effectTemp->data.bulbGlow;
Gfx* temp_a0_4;
Gfx* temp_a1;
Gfx* temp_a3;
Gfx* temp_a3_2;
Gfx* temp_v1;
UnkBulbGlow* temp_s1;
f32 temp_f0;
f32 temp_f4;
s32 temp_a0_3;
s32 temp_a2;
s32 temp_f6;
s32 temp_lo;
s32 temp_s0_2;
s32 temp_s2;
s32 temp_s2_2;
s32 temp_s3;
s32 temp_s6;
s32 temp_s6_2;
s32 temp_t0;
s32 temp_t5;
s32 var_s4;
s32 var_t2;
s32 var_t3;
s32 var_t4;
s32 var_t5;
s32 var_t7;
s32 var_v1;
s32 var_v1_2;
u32 temp_t6;
u8* temp_v0;
s32 j;
var_s4 = data->unk_10;
temp_s2 = data->unk_00;
if (var_s4 > 127) {
var_s4 = 127;
}
gDPPipeSync(gMasterGfxPos++);
gSPSegment(gMasterGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(((EffectInstance*)effect)->graphics->data));
temp_s1 = &D_E0078918[temp_s2];
temp_s6 = temp_s1->unk_10;
temp_s3 = temp_s1->unk_14;
var_v1 = shim_func_8011CFBC(data->pos.x, data->pos.y);
if (temp_s2 == 5) {
var_v1 = 1;
}
if ((var_v1 != 0) && !(sp18 < 0.0f) && !(sp1C < 0.0f) && !(sp18 >= 320.0f) && !(sp1C >= 240.0f)) {
gSPDisplayList(gMasterGfxPos++, D_E0078900[temp_s2]);
temp_v0 = D_E00789AC[data->unk_20 * 3];
temp_t0 = var_s4 * 2;
temp_f0 = (f32) temp_s6;
sp20 = (s32) (sp18 - temp_f0);
temp_a0_3 = temp_s6 * 2;
var_t7 = sp20 + temp_a0_3;
temp_f6 = (s32) (sp1C - temp_f0);
var_t4 = temp_f6 + temp_a0_3;
gDPSetPrimColor(gMasterGfxPos++, 0, 0,
(temp_v0[0] * temp_t0) / 255,
(temp_v0[1] * temp_t0) / 255,
(temp_v0[2] * temp_t0) / 255,
127
);
var_t5 = 0;
if (sp20 < 0) {
var_t5 = -sp20;
}
var_v1_2 = 0;
if (temp_f6 < 0) {
var_v1_2 = -temp_f6;
}
if (var_t7 > SCREEN_WIDTH) {
var_t7 = SCREEN_WIDTH - 1;
}
if (var_t4 > SCREEN_HEIGHT) {
var_t4 = SCREEN_HEIGHT - 1;
}
var_t3 = var_v1_2 / temp_s3;
temp_lo = (s32) (var_t4 - temp_f6) / temp_s3;
sp24 = temp_lo;
if (var_t3 < temp_lo) {
temp_s6_2 = sp20 + var_t5;
sp28 = (var_t7 - temp_s6_2) * 2;
var_t2 = (var_t3 * temp_s3) + temp_f6;
loop_19:
if ((var_t2 + temp_s3) < 0xF0) {
temp_f4 = (f32) sp20;
temp_t5 = ((temp_s6_2 * 4) & 0xFFF) << 0xC;
temp_s2_2 = (((var_t7 - 1) * 4) & 0xFFF) << 0xC;
temp_s0_2 = ((temp_s3 - 1) * 4) & 0xFFF;
temp_a3_2->words.w0 = ((((s32) (temp_f4 * temp_s1->unk_08) * 4) & 0xFFF) << 0xC) | ((((s32) ((f32) (temp_s1->unk_04 * 0x14) - ((f32) (var_t3 * temp_s1->unk_14) * temp_s1->unk_0C)) * 4) & 0xFFF) | 0xF2000000);
temp_a3_2->words.w1 = ((((s32) ((temp_f4 * temp_s1->unk_08) + (f32) temp_s1->unk_00) * 4) & 0xFFF) << 0xC) | (((s32) ((f32) (temp_s1->unk_04 * 0x15) - ((f32) (var_t3 * temp_s1->unk_14) * temp_s1->unk_0C)) * 4) & 0xFFF);
for (j = 0; j < 1; j++) {
temp_a0_4->words.w0 = 0xFD10013F;
temp_a0_4->words.w1 = (u32) (nuGfxCfb_ptr + (var_t2 * 0x280) + 0x80000000);
temp_a1->words.w0 = ((((s32) (sp28 + 7) >> 3) & 0x1FF) << 9) | 0xF5100100;
temp_a1->words.w1 = 07020090
temp_a1->unk8 = E600000000000000
temp_a2 = var_t2 + temp_s3;
temp_a1->unk10 = temp_t5 | 0xF4000000;
temp_a1->unk14 = (s32) (temp_s2_2 | (temp_s0_2 | 0x07000000));
temp_a1->unk18 = E700000000000000
temp_a1->unk20 = ((((s32) (sp28 + 7) >> 3) & 0x1FF) << 9) | 0xF5100100;
temp_a1->unk24 = 0x01020090;
temp_a1->unk28 = (s32) (temp_t5 | 0xF2000000);
temp_a1->unk2C = (s32) (temp_s2_2 | (temp_s0_2 | 0x01000000));
temp_a1->unk30 = (s32) ((((var_t7 * 4) & 0xFFF) << 0xC) | (((temp_a2 * 4) & 0xFFF) | 0xE4000000));
temp_a1->unk34 = (s32) (temp_t5 | ((var_t2 * 4) & 0xFFF));
temp_a1->unk38 = E1000000
temp_a1->unk3C = (s32) ((temp_s6_2 & 0x1FF) << 0x15);
temp_a1->unk40 = F100000004000400
temp_a1->unk48 = E700000000000000
}
var_t3 += 1;
var_t2 = temp_a2;
if (var_t3 < sp24) {
goto loop_19;
}
}
}
}
}
#else
INCLUDE_ASM(s32, "effects/bulb_glow", bulb_glow_appendGfx);
#endif

View File

@ -1,6 +1,11 @@
#include "common.h"
#include "effects_internal.h"
void confetti_init(EffectInstance* effect);
void confetti_update(EffectInstance* effect);
void confetti_render(EffectInstance* effect);
void confetti_appendGfx(void* effect);
extern Gfx D_090009E8_38C588[];
extern Gfx D_09000A00_38C5A0[];
@ -26,9 +31,7 @@ u8 D_E0088CDC[] = {
s8 D_E0088D00[] = { 0, 1, 2, 3, 2, 1, 0, 0 };
s32 D_E0088D08[] = { 0x002D003C, 0x00000000 };
void confetti_appendGfx(void* effect);
u8 D_E0088D08[] = { 0, 45, 0, 60 };
void func_E0088000(ConfettiFXData* part) {
part->unk_04 = shim_rand_int(700) * 0.1f - 35.0f;
@ -40,9 +43,130 @@ void func_E0088000(ConfettiFXData* part) {
part->unk_20 = 120;
}
INCLUDE_ASM(s32, "effects/confetti", confetti_main);
// weirdness abound
#ifdef NON_EQUIVALENT
EffectInstance* confetti_main(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5) {
EffectBlueprint bp;
EffectBlueprint* bpPtr = &bp;
f32 sp28;
ConfettiFXData* data;
EffectInstance* effect;
s32 numParts;
f32 theta;
f32 sinTheta;
f32 cosTheta;
f32 theta2;
f32 sinTheta2;
f32 cosTheta2;
f32 temp_f28;
f32 temp_f30;
s32 temp_fp;
s32 np;
s32 var_v0;
s32 i;
void confetti_init(void) {
switch (arg0) {
case 0:
case 4:
np = 12;
break;
case 1:
case 5:
np = 18;
break;
case 2:
case 6:
np = 24;
break;
default:
np = 48;
break;
}
switch (arg0) {
case 0:
case 4:
sp28 = 3.0f;
break;
case 1:
case 5:
sp28 = 4.0f;
break;
case 2:
case 3:
case 6:
default:
sp28 = 5.0f;
break;
}
numParts = np + 1;
bpPtr->init = confetti_init;
bpPtr->update = confetti_update;
bpPtr->renderWorld = confetti_render;
bpPtr->unk_00 = 0;
bpPtr->unk_14 = NULL;
bpPtr->effectID = EFFECT_CONFETTI;
effect = shim_create_effect_instance(bpPtr);
effect->numParts = numParts;
data = effect->data.fireworkRocket = shim_general_heap_malloc(numParts * sizeof(*data));
ASSERT(effect->data.fireworkRocket != NULL);
data->unk_04 = arg1;
data->unk_08 = arg2;
data->unk_0C = arg3;
data->unk_24 = 0;
data->unk_00 = arg0;
data->unk_20 = arg5;
data->unk_2C = np;
data->unk_28 = 255;
temp_fp = shim_rand_int(360);
for (i = 0; i < np; i++, data++) {
temp_f30 = sp28 * (func_E0200000(100) * 0.01f);
if ((u32) arg0 < 7U) {
}
temp_f28 = 2.0 * (sp28 * 0.5);
var_v0 = i;
if (i < 0) {
var_v0 = i + 3;
}
theta = ((i * 360.0f) / np) + temp_fp;
data->unk_30 = arg0;
theta2 = D_E0088D08[i - ((var_v0 >> 2) * 4)];
sinTheta = shim_sin_deg(theta);
cosTheta = shim_cos_deg(theta);
sinTheta2 = shim_sin_deg(theta2);
cosTheta2 = shim_cos_deg(theta2);
if (arg0 == 3) {
func_E0088000(data);
data->unk_30 = i * 3;
} else {
data->unk_0C = temp_f30 * sinTheta2;
data->unk_18 = temp_f28 * sinTheta2;
data->unk_04 = temp_f30 * sinTheta * cosTheta2;
data->unk_08 = temp_f30 * cosTheta * cosTheta2;
data->unk_10 = temp_f28 * sinTheta * cosTheta2;
data->unk_14 = (temp_f28 * cosTheta * cosTheta2) + 1.0f;
if (arg0 >= 4) {
data->unk_1C = -0.02 - (((i + 1) % 3) * 0.02);
} else {
data->unk_1C = 0.0f;
}
data->unk_30 = i & 3;
}
}
return effect;
}
#else
INCLUDE_ASM(s32, "effects/confetti", confetti_main);
#endif
void confetti_init(EffectInstance* effect) {
}
void confetti_update(EffectInstance* effect) {

View File

@ -6,6 +6,10 @@ void fx_65_update(EffectInstance* effect);
void fx_65_render(EffectInstance* effect);
void fx_65_appendGfx(void* effect);
extern Gfx D_09000400_3D15E0[];
Gfx* D_E00CACB0[] = { D_09000400_3D15E0, D_09000400_3D15E0, D_09000400_3D15E0, D_09000400_3D15E0 };
EffectInstance* fx_65_main(
s32 arg0,
f32 arg1,

View File

@ -6,6 +6,64 @@ void firework_rocket_render(EffectInstance* effect);
void firework_rocket_update(EffectInstance* effect);
void firework_rocket_appendGfx(void* effect);
typedef struct FireworkRocketUnk {
/* 0x00 */ Color_RGB8* unk_00;
/* 0x04 */ s32 num;
} FireworkRocketUnk; // size = 0x8
extern Gfx D_09000080_3E53D0[];
extern Gfx D_09000158_3E54A8[];
Gfx* D_E010ACC0[] = { D_09000158_3E54A8, D_09000158_3E54A8, D_09000158_3E54A8 };
Gfx* D_E010ACCC[] = { D_09000080_3E53D0, D_09000080_3E53D0, D_09000080_3E53D0 };
Color_RGB8 D_E010ACD8[] = {
{36, 0, 93}, {54, 216, 74}, {67, 0, 74}, {82, 220, 45}, {89, 0, 45}, {60, 190, 45}, {21, 192, 74}, {28, 171, 45},
{10, 158, 15}, {49, 170, 15}, {166, 216, 15}, {169, 237, 45}, {157, 0, 15}, {184, 203, 45}, {169, 19, 45},
{166, 40, 15}, {190, 73, 15}, {184, 53, 45}, {211, 77, 45}, {225, 94, 15}, {247, 89, 45}, {184, 53, 45},
{11, 222, 93}, {0, 0, 100}, {202, 216, 74}, {184, 203, 45}, {211, 179, 45}, {166, 216, 15}, {190, 183, 15},
{11, 222, 93}, {235, 192, 74}, {21, 192, 74}, {247, 167, 45}, {28, 171, 45}, {10, 98, 15}, {80, 198, 15},
{97, 235, 15}, {49, 170, 15}, {10, 158, 15}, {225, 162, 15}, {190, 183, 15}, {49, 86, 15}, {80, 58, 15},
{97, 21, 15}, {227, 235, 93}, {0, 0, 100}, {11, 34, 93}, {227, 21, 93}, {21, 64, 74}, {235, 64, 74}, {202, 40, 74},
{28, 85, 45}, {67, 0, 74}, {89, 0, 45}, {36, 0, 93}, {0, 0, 100}, {11, 34, 93}, {54, 40, 74}, {21, 64, 74},
{202, 40, 74}, {184, 53, 45}, {0, 0, 100}, {227, 235, 93}, {189, 0, 74}, {202, 216, 74}, {227, 21, 93}, {0, 0, 100},
{60, 190, 45}, {82, 220, 45}, {89, 0, 45}, {28, 171, 45}, {28, 171, 45}, {247, 167, 45}, {211, 179, 45},
{184, 203, 45}, {60, 66, 45}, {28, 85, 45}, {82, 36, 45}, {28, 85, 45}, {89, 0, 45}, {247, 89, 45}, {211, 77, 45},
{184, 53, 45}, {49, 86, 15}, {10, 98, 15}, {82, 36, 45}, {97, 235, 15}, {97, 21, 15}, {60, 66, 45}, {28, 85, 45},
{169, 19, 45}, {190, 73, 15}, {166, 40, 15}, {169, 237, 45}, {184, 203, 45}
};
Color_RGB8 D_E010ADF8[] = {
{208, 241, 0}, {220, 230, 22}, {211, 0, 22}, {208, 15, 0}, {220, 26, 22}, {227, 40, 0}, {220, 26, 22},
{242, 43, 22}, {0, 50, 0}, {14, 43, 22}, {8, 231, 43}, {14, 213, 22}, {36, 230, 22}, {26, 0, 43}, {0, 0, 50},
{0, 206, 0}, {29, 216, 0}, {45, 0, 22}, {29, 216, 0}, {36, 230, 22}, {14, 213, 22}, {48, 241, 0}, {45, 0, 22},
{0, 206, 0}, {14, 213, 22}, {242, 213, 22}, {227, 216, 0}, {220, 230, 22}, {29, 40, 0}, {36, 26, 22}, {48, 15, 0},
{14, 43, 22}, {45, 0, 22}, {0, 0, 50}, {8, 25, 43}, {235, 15, 43}, {14, 43, 22}, {26, 0, 43}, {45, 0, 22},
{0, 0, 50}, {8, 25, 43}, {235, 241, 43}, {0, 0, 50}, {220, 230, 22}, {8, 231, 43}, {0, 0, 50}, {235, 15, 43},
{235, 241, 43}, {220, 26, 22}, {242, 43, 22}, {220, 26, 22}, {29, 40, 0}, {0, 50, 0}, {36, 26, 22}, {48, 241, 0},
{48, 15, 0}, {14, 43, 22}, {242, 213, 22}, {208, 241, 0}, {227, 216, 0}, {14, 213, 22}, {211, 0, 22},
{220, 230, 22}, {227, 40, 0}, {208, 15, 0}, {0, 0, 0}
};
Color_RGB8 D_E010AEC0[] = {
{247, 105, 0}, {239, 87, 0}, {17, 87, 0}, {9, 105, 0}, {0, 122, 0}, {230, 69, 0}, {26, 69, 0}, {221, 52, 0},
{35, 52, 0}, {202, 49, 0}, {186, 255, 0}, {200, 241, 0}, {0, 200, 0}, {56, 241, 0}, {70, 255, 0}, {54, 49, 0},
{196, 222, 0}, {239, 191, 0}, {17, 191, 0}, {60, 222, 0}, {85, 13, 0}, {74, 46, 0}, {99, 27, 0}, {93, 43, 0},
{12, 33, 0}, {12, 22, 0}, {24, 22, 0}, {24, 33, 0}, {12, 10, 0}, {24, 10, 0}, {24, 45, 0}, {232, 33, 0},
{232, 22, 0}, {232, 45, 0}, {113, 40, 0}, {193, 203, 0}, {190, 183, 0}, {182, 46, 0}, {163, 43, 0}, {35, 182, 0},
{52, 173, 0}, {12, 45, 0}, {244, 22, 0}, {244, 33, 0}, {232, 10, 0}, {244, 10, 0}, {244, 45, 0}, {204, 173, 0},
{221, 182, 0}, {186, 164, 0}, {171, 13, 0}, {157, 27, 0}, {143, 40, 0}, {63, 203, 0}, {66, 183, 0}, {70, 164, 0}
};
FireworkRocketUnk D_E010AF68[] = {
{D_E010ACD8, ARRAY_COUNT(D_E010ACD8)},
{D_E010ADF8, ARRAY_COUNT(D_E010ADF8)},
{D_E010AEC0, ARRAY_COUNT(D_E010AEC0)}
};
s32 D_E010AF80 = 0;
s32 D_E010AF84 = 0;
EffectInstance* firework_rocket_main(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7, s32 arg8) {
EffectBlueprint bp;
EffectInstance* effect;

View File

@ -0,0 +1,17 @@
#include "effects/gfx/D_09000000_40A1C0.png.inc.c"
#include "effects/gfx/D_09000400_40A5C0.png.inc.c"
#include "effects/gfx/D_09000800_40A9C0.png.inc.c"
#include "effects/gfx/D_09000C00_40ADC0.png.inc.c"
#include "effects/gfx/D_09001000_40B1C0.gfx.inc.c"
#include "effects/gfx/D_090010A8_40B268.vtx.inc.c"
#include "effects/gfx/D_090010E8_40B2A8.vtx.inc.c"
#include "effects/gfx/D_09001128_40B2E8.vtx.inc.c"
#include "effects/gfx/D_09001168_40B328.vtx.inc.c"
char D_09001198_40B358[] = { 0xFF, 0xF0, 0x00, 0x40, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0xFF };
#include "effects/gfx/D_090011A8_40B368.gfx.inc.c"
#include "effects/gfx/D_090011C8_40B388.gfx.inc.c"
#include "effects/gfx/D_090011E8_40B3A8.gfx.inc.c"
#include "effects/gfx/D_09001208_40B3C8.gfx.inc.c"

View File

@ -0,0 +1,23 @@
#include "effects/gfx/D_09000000_366D60.png.inc.c"
#include "effects/gfx/D_09000200_366F60.png.inc.c"
#include "effects/gfx/D_09000400_367160.png.inc.c"
#include "effects/gfx/D_09000C00_367960.png.inc.c"
#include "effects/gfx/D_09000E00_367B60.png.inc.c"
#include "effects/gfx/D_09001600_368360.png.inc.c"
#include "effects/gfx/D_09001E00_368B60.png.inc.c"
#include "effects/gfx/D_09002600_369360.png.inc.c"
#include "effects/gfx/D_09002E00_369B60.png.inc.c"
#include "effects/gfx/D_09003000_369D60.vtx.inc.c"
#include "effects/gfx/D_090031A0_369F00.vtx.inc.c"
#include "effects/gfx/D_09003340_36A0A0.gfx.inc.c"
#include "effects/gfx/D_09003428_36A188.gfx.inc.c"
#include "effects/gfx/D_09003508_36A268.gfx.inc.c"
#include "effects/gfx/D_090035E8_36A348.gfx.inc.c"
#include "effects/gfx/D_090036C8_36A428.gfx.inc.c"
#include "effects/gfx/D_090037A8_36A508.gfx.inc.c"
#include "effects/gfx/D_09003830_36A590.gfx.inc.c"
#include "effects/gfx/D_090038B8_36A618.gfx.inc.c"
#include "effects/gfx/D_090039A8_36A708.gfx.inc.c"
#include "effects/gfx/D_09003A88_36A7E8.gfx.inc.c"

View File

@ -0,0 +1,13 @@
#include "effects/gfx/D_09000000_38D070.png.inc.c"
#include "effects/gfx/D_09000080_38D0F0.png.inc.c"
#include "effects/gfx/D_09000880_38D8F0.vtx.inc.c"
#include "effects/gfx/D_09000A00_38DA70.vtx.inc.c"
#include "effects/gfx/D_09000A80_38DAF0.vtx.inc.c"
// todo wut dis
u8 D_09000C00_38DC70[] = { 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x00, 0x10, 0x02, 0xFF, 0xFF, 0xFF, 0xFF };
#include "effects/gfx/D_09000C10_38DC80.gfx.inc.c"
#include "effects/gfx/D_09000D30_38DDA0.gfx.inc.c"
#include "effects/gfx/D_09000D50_38DDC0.gfx.inc.c"

View File

@ -1,14 +1,138 @@
#include "common.h"
#include "effects_internal.h"
void ice_pillar_init(EffectInstance* effect);
void ice_pillar_update(EffectInstance* effect);
void ice_pillar_render(EffectInstance* effect);
void ice_pillar_appendGfx(void* effect);
INCLUDE_ASM(s32, "effects/ice_pillar", ice_pillar_main);
extern Gfx D_09001000_40B1C0[];
extern Gfx D_090011A8_40B368[];
extern Gfx D_090011C8_40B388[];
extern Gfx D_090011E8_40B3A8[];
extern Gfx D_09001208_40B3C8[];
void ice_pillar_init(void) {
Gfx* D_E011E7F0[] = { D_090011A8_40B368, D_090011C8_40B388, D_090011E8_40B3A8, D_09001208_40B3C8 };
Gfx* D_E011E800[] = { D_09001000_40B1C0 };
EffectInstance* ice_pillar_main(s32 arg0, f32 x, f32 y, f32 z, f32 scale, s32 arg5) {
EffectBlueprint effectBp;
EffectInstance* effect;
IcePillarFXData* data;
s32 numParts = 1;
effectBp.init = ice_pillar_init;
effectBp.update = ice_pillar_update;
effectBp.renderWorld = ice_pillar_render;
effectBp.unk_00 = 0;
effectBp.unk_14 = 0;
effectBp.effectID = EFFECT_ICE_PILLAR;
effect = shim_create_effect_instance(&effectBp);
effect->numParts = numParts;
data = effect->data.icePillar = shim_general_heap_malloc(numParts * sizeof(*data));
ASSERT(data != NULL);
data->unk_00 = arg0;
data->lifeTime = 0;
if (arg5 <= 0) {
data->timeLeft = 1000;
} else {
data->timeLeft = arg5;
}
data->prim.a = 255;
data->pos.x = x;
data->pos.y = y;
data->pos.z = z;
data->scale = scale;
data->prim.r = 255;
data->prim.g = 255;
data->prim.b = 255;
data->env.r = 240;
data->env.g = 255;
data->env.b = 255;
data->env.a = 255;
data->unk_24 = data->unk_25 = 0;
shim_load_effect(EFFECT_MISC_PARTICLES);
data->miscParticles = misc_particles_main(1, x, y + 10.0f, z, 32.0f, 30.0f, scale, 4, 0);
shim_load_effect(EFFECT_COLD_BREATH);
return effect;
}
INCLUDE_ASM(s32, "effects/ice_pillar", ice_pillar_update);
void ice_pillar_init(EffectInstance* effect) {
}
void ice_pillar_update(EffectInstance* effect) {
IcePillarFXData* data = effect->data.icePillar;
s32 timeLeft;
s32 lifeTime;
s32 i;
if (effect->flags & 0x10) {
effect->flags &= ~0x10;
data->timeLeft = 16;
}
if (data->timeLeft < 1000) {
data->timeLeft--;
}
data->lifeTime++;
if (data->timeLeft < 0) {
shim_load_effect(EFFECT_ICE_SHARD);
for (i = 0; i < 20; i++) {
EffectInstance* iceShard;
iceShard = ice_shard_main(
(i - ((i / 2) * 2)) + 2,
(data->pos.x + shim_rand_int(20)) - 10.0f,
data->pos.y + (shim_rand_int(40) * data->scale),
data->pos.z + 3.0f,
(data->scale * ((shim_rand_int(10) * 0.7 * 0.1) + 0.3)),
i + 30
);
iceShard->data.iceShard->unk_44 = shim_rand_int(10) * 0.1;
iceShard->data.iceShard->unk_48 = (shim_rand_int(30) * 0.01) + 0.1;
iceShard->data.iceShard->unk_3C = shim_rand_int(359);
iceShard->data.iceShard->unk_40 = shim_rand_int(20);
iceShard->data.iceShard->unk_4C = shim_rand_int(10) - 5;
iceShard->data.iceShard->unk_50 = shim_rand_int(10) - 5;
iceShard->data.iceShard->unk_54 = 0;
iceShard->data.iceShard->unk_58 = -0.1f;
}
shim_remove_effect(data->miscParticles);
shim_remove_effect(effect);
return;
}
timeLeft = data->timeLeft;
lifeTime = data->lifeTime;
data->unk_25--;
if (data->unk_25 < 0) {
data->unk_25 = shim_rand_int(60) + 8;
}
if (data->unk_25 < 8) {
data->unk_24 = data->unk_25 / 2;
} else {
data->unk_24 = 0;
}
if (timeLeft > 16 && (lifeTime % 16) == 0) {
shim_load_effect(EFFECT_COLD_BREATH);
cold_breath_main(2, data->pos.x, data->pos.y + (data->scale * 40.0f), data->pos.z, data->scale, 30);
}
data->miscParticles->data.miscParticles->pos.x = data->pos.x;
data->miscParticles->data.miscParticles->pos.y = data->pos.y + 10.0f;
data->miscParticles->data.miscParticles->pos.z = data->pos.z;
}
void ice_pillar_render(EffectInstance* effect) {
RenderTask renderTask;
@ -23,4 +147,27 @@ void ice_pillar_render(EffectInstance* effect) {
retTask->renderMode |= RENDER_TASK_FLAG_2;
}
INCLUDE_ASM(s32, "effects/ice_pillar", ice_pillar_appendGfx);
void ice_pillar_appendGfx(void* effect) {
IcePillarFXData* data = ((EffectInstance*)effect)->data.icePillar;
s32 alpha = data->prim.a;
Matrix4f sp10, sp50;
Camera* camera;
gDPPipeSync(gMasterGfxPos++);
gSPSegment(gMasterGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(((EffectInstance*)effect)->graphics->data));
camera = &gCameras[gCurrentCameraID];
shim_guTranslateF(sp10, data->pos.x, data->pos.y, data->pos.z);
shim_guScaleF(sp50, data->scale, data->scale, data->scale);
shim_guMtxCatF(sp50, sp10, sp10);
shim_guMtxF2L(sp10, &gDisplayContext->matrixStack[gMatrixListPos]);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++],
G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPMatrix(gMasterGfxPos++, camera->unkMatrix, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gDPSetPrimColor(gMasterGfxPos++, 0, 0, data->prim.r, data->prim.g, data->prim.b, alpha);
gDPSetEnvColor(gMasterGfxPos++, data->env.r, data->env.g, data->env.b, data->env.a);
gSPDisplayList(gMasterGfxPos++, D_E011E800[0]);
gSPDisplayList(gMasterGfxPos++, D_E011E7F0[data->unk_24]);
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
}

View File

@ -6,6 +6,32 @@ void radial_shimmer_update(EffectInstance* effect);
void radial_shimmer_render(EffectInstance* effect);
void radial_shimmer_appendGfx(void* effect);
extern Gfx D_09003428_36A188[];
extern Gfx D_09003508_36A268[];
extern Gfx D_090035E8_36A348[];
extern Gfx D_090036C8_36A428[];
extern Gfx D_09003830_36A590[];
extern Gfx D_090038B8_36A618[];
extern Gfx D_090039A8_36A708[];
extern Gfx D_09003A88_36A7E8[];
Gfx* D_E0066C50[] = {
D_09003830_36A590, D_09003830_36A590, D_09003830_36A590, D_09003830_36A590, D_09003830_36A590,
D_09003830_36A590, D_09003830_36A590, D_09003830_36A590, D_09003830_36A590, D_09003830_36A590,
D_09003830_36A590, D_09003830_36A590, D_09003830_36A590, D_09003830_36A590, D_09003830_36A590
};
Gfx* D_E0066C8C[] = {
D_09003508_36A268, D_090035E8_36A348, D_09003428_36A188, D_090039A8_36A708, D_09003A88_36A7E8,
D_09003428_36A188, D_090039A8_36A708, D_09003A88_36A7E8, D_090038B8_36A618, D_09003508_36A268,
D_090038B8_36A618, D_090038B8_36A618, D_09003428_36A188, D_09003A88_36A7E8, D_090036C8_36A428,
};
// todo ??? unused
s32 D_E0066CC8[] = {
0xFFC59CFF, 0x9CFFFF73, 0xD6FF9CFF, 0xFFC57BFF, 0xB4FFDE73, 0xFFFF949C
};
EffectInstance* radial_shimmer_main(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5) {
EffectBlueprint bp;
EffectInstance* effect;
@ -26,8 +52,8 @@ EffectInstance* radial_shimmer_main(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32
ASSERT(effect->data.radialShimmer != NULL);
data->unk_00 = arg0;
data->unk_28 = arg5_2;
data->unk_24 = data->unk_2C = 0;
data->timeLeft = arg5_2;
data->unk_24 = data->lifeTime = 0;
data->unk_10 = arg1;
data->unk_14 = arg2;
data->unk_18 = arg3;
@ -186,23 +212,23 @@ void radial_shimmer_update(EffectInstance* effect) {
f32 outS;
s32 i;
part->unk_28--;
part->unk_2C++;
part->timeLeft--;
part->lifeTime++;
if (effect->flags & 0x10) {
effect->flags &= ~0x10;
part->unk_28 = 16;
part->timeLeft = 16;
}
if (part->unk_28 < 0) {
if (part->timeLeft < 0) {
shim_remove_effect(effect);
return;
}
unk_28 = part->unk_28;
unk_28 = part->timeLeft;
if (part->unk_2C < 11) {
part->unk_24 = (part->unk_2C * 255) / 10;
if (part->lifeTime <= 10) {
part->unk_24 = (part->lifeTime * 255) / 10;
}
if (unk_28 < 6) {
@ -215,7 +241,8 @@ void radial_shimmer_update(EffectInstance* effect) {
part->unk_1C = part->unk_20;
shim_transform_point(&gCameras[gCurrentCameraID].perspectiveMatrix[0], part->unk_04, part->unk_08, part->unk_0C, 1.0f, &outX, &outY, &outZ, &outS);
shim_transform_point(&gCameras[gCurrentCameraID].perspectiveMatrix[0], part->unk_04, part->unk_08, part->unk_0C,
1.0f, &outX, &outY, &outZ, &outS);
outS = 1.0f / outS;
outX *= outS;
@ -257,4 +284,89 @@ void radial_shimmer_render(EffectInstance* effect) {
retTask->renderMode |= RENDER_TASK_FLAG_2;
}
INCLUDE_ASM(s32, "effects/radial_shimmer", radial_shimmer_appendGfx);
void radial_shimmer_appendGfx(void* effect) {
Matrix4f sp20, sp60;
u16 spA0;
EffectInstance* effectTemp = effect;
RadialShimmerFXData* dataOrig = effectTemp->data.radialShimmer;
RadialShimmerFXData* data = effectTemp->data.radialShimmer;
Camera* camera = &gCameras[gCurrentCameraID];
s32 temp_f0;
s32 temp_f2;
s32 temp_f4;
s32 temp_f6;
Gfx* dlist2;
Gfx* dlist1;
s32 temp_s5;
s32 temp_t1;
s32 var_a3;
s32 alpha;
s32 other;
s32 t1;
s32 t2;
s32 i;
temp_s5 = data->unk_00;
dlist1 = D_E0066C8C[temp_s5];
dlist2 = D_E0066C50[temp_s5];
gDPPipeSync(gMasterGfxPos++);
gSPSegment(gMasterGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(((EffectInstance*)effect)->graphics->data));
shim_guTranslateF(sp20, data->unk_10, data->unk_14, data->unk_18);
shim_guScaleF(sp60, data->unk_1C, data->unk_1C, 1.0f);
shim_guMtxCatF(sp60, sp20, sp20);
shim_guPerspectiveF(sp60, &spA0, data->unk_60, (f32) camera->viewportW / camera->viewportH, 4.0f, 16384.0f, 1.0f);
shim_guMtxCatF(sp60, sp20, sp20);
shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++],
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
shim_guTranslateF(sp20, 0.0f, 0.0f, data->unk_64);
shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++],
G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
alpha = data->unk_24;
gDPSetEnvColor(gMasterGfxPos++, data->unk_6B, data->unk_6C, data->unk_6D, 127);
gSPDisplayList(gMasterGfxPos++, dlist1);
for (i = 0; i < effectTemp->numParts; i++, data++) {
gDPSetPrimColor(gMasterGfxPos++, 0, 0, data->unk_68, data->unk_69, data->unk_6A, alpha);
switch (temp_s5) {
case 0:
case 1:
other = 0x3F;
var_a3 = 0x1FF;
break;
case 8:
other = 0x3F;
var_a3 = 0x7F;
break;
case 11:
other = 0x3F;
var_a3 = 0xFF;
break;
default:
other = 0x3F;
var_a3 = 0x1FF;
break;
}
temp_f0 = data->unk_30;
temp_f2 = data->unk_40;
temp_f4 = data->unk_38;
temp_f6 = data->unk_48;
gDPSetTileSize(gMasterGfxPos++, 0, temp_f0, temp_f2, temp_f0 + other * 4, temp_f2 + var_a3 * 4);
gDPSetTileSize(gMasterGfxPos++, G_TX_MIRROR, temp_f4, temp_f6, temp_f4 + other * 4, temp_f6 + var_a3 * 4);
gSPDisplayList(gMasterGfxPos++, dlist2);
}
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->camPerspMatrix[gCurrentCameraID],
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gDPPipeSync(gMasterGfxPos++);
}

View File

@ -1,15 +1,27 @@
#include "common.h"
#include "effects_internal.h"
void snowfall_init(EffectInstance* effect);
void snowfall_update(EffectInstance* effect);
void snowfall_render(EffectInstance* effect);
void snowfall_appendGfx(void* effect);
INCLUDE_ASM(s32, "effects/snowfall", func_E008A000);
extern Gfx D_09000C00_38DC70[];
extern Gfx D_09000D50_38DDC0[];
void func_E008A000(SnowfallFXData* data);
Gfx* D_E008AA50[] = { D_09000D50_38DDC0, D_09000D50_38DDC0 };
void func_E008A000(SnowfallFXData* data) {
Camera* camera = &gCameras[gCurrentCameraID];
data->unk_08 = (camera->lookAt_eye.x + func_E0200000(2000)) - 1000.0f;
data->unk_0C = (camera->lookAt_eye.y + func_E0200000(2000)) - 1000.0f;
data->unk_10 = (camera->lookAt_eye.z + func_E0200000(2000)) - 1000.0f;
data->unk_14 = (func_E0200000(20) - 10.0f) * 0.05;
data->unk_18 = -1.2 - (func_E0200000(80) * 0.01);
data->unk_1C = (func_E0200000(20) - 10.0f) * 0.05;
data->unk_28 = 255;
}
EffectInstance* snowfall_main(s32 arg0, s32 arg1) {
EffectBlueprint effectBp;
@ -50,9 +62,90 @@ EffectInstance* snowfall_main(s32 arg0, s32 arg1) {
void snowfall_init(EffectInstance* effect) {
}
INCLUDE_ASM(s32, "effects/snowfall", func_E008A290);
void func_E008A290(SnowfallFXData* data, s32 arg1, s32 arg2, s32 arg3) {
Camera* camera = &gCameras[gCurrentCameraID];
f32 unk_08 = data->unk_08;
f32 unk_0C = data->unk_0C;
f32 unk_10 = data->unk_10;
f32 lookX = camera->lookAt_obj.x;
f32 lookY = camera->lookAt_obj.y;
f32 lookZ = camera->lookAt_obj.z;
s32 temp_f12;
s32 temp_f12_2;
s32 temp_f12_3;
INCLUDE_ASM(s32, "effects/snowfall", snowfall_update);
temp_f12 = unk_08 - lookX;
if (arg1 < temp_f12) {
temp_f12 = temp_f12 % arg1;
data->unk_08 = (lookX - arg1) + temp_f12;
} else if (-arg1 > temp_f12) {
temp_f12 = -temp_f12;
temp_f12 = temp_f12 % arg1;
data->unk_08 = (lookX + arg1) - temp_f12;
}
temp_f12_2 = unk_0C - lookY;
if (arg2 < temp_f12_2) {
temp_f12_2 = temp_f12_2 % arg2;
data->unk_0C = (lookY - arg2) + temp_f12_2;
} else if (temp_f12_2 < -arg2) {
if (arg3 < 100) {
data->unk_18 = 0;
data->unk_28 = 0;
} else {
temp_f12_2 = -temp_f12_2;
temp_f12_2 = temp_f12_2 % arg2;
data->unk_0C = (lookY + arg2) - temp_f12_2;
}
}
temp_f12_3 = unk_10 - lookZ;
if (arg1 < temp_f12_3) {
temp_f12_3 = temp_f12_3 % arg1;
data->unk_10 = (lookZ - arg1) + temp_f12_3;
} else if (temp_f12_3 < -arg1) {
temp_f12_3 = -temp_f12_3;
temp_f12_3 = temp_f12_3 % arg1;
data->unk_10 = (lookZ + arg1) - temp_f12_3;
}
}
void snowfall_update(EffectInstance* effect) {
Camera* camera = &gCameras[gCurrentCameraID];
SnowfallFXData* data = effect->data.snowfall;
s32 timeLeft;
s32 boomLength;
s32 temp_s5;
s32 temp_s6;
s32 i;
if (data->timeLeft < 100) {
data->timeLeft--;
}
if (data->timeLeft < 0) {
shim_remove_effect(effect);
return;
}
data->lifeTime++;
timeLeft = data->timeLeft;
temp_s5 = data->unk_2C;
if (timeLeft < 10) {
data->unk_28 = timeLeft * 25;
}
boomLength = camera->currentBoomLength;
temp_s6 = (boomLength * 0.3) + 1.0;
data++;
for (i = 0; i < temp_s5; i++, data++) {
if (data->unk_30 <= 0 || --data->unk_30 <= 0) {
data->unk_08 += data->unk_14;
data->unk_0C += data->unk_18;
data->unk_10 += data->unk_1C;
func_E008A290(data, boomLength, temp_s6, timeLeft);
}
}
}
void snowfall_render(EffectInstance* effect) {
RenderTask renderTask;
@ -67,4 +160,55 @@ void snowfall_render(EffectInstance* effect) {
retTask->renderMode |= RENDER_TASK_FLAG_2;
}
INCLUDE_ASM(s32, "effects/snowfall", snowfall_appendGfx);
void snowfall_appendGfx(void* effect) {
EffectInstance* effectTemp = effect;
SnowfallFXData* data = effectTemp->data.snowfall;
Matrix4f sp18;
Gfx* dlist;
Mtx* mtx;
u8 bgRGB;
u8 bgAlpha;
s32 unk_28;
s32 unk_2C;
s32 i;
if (data->unk_00 != 0) {
unk_28 = data->unk_28;
bgAlpha = 255;
unk_2C = data->unk_2C;
dlist = D_E008AA50[data->unk_04];
if (*gBgRenderTypePtr == 1) {
shim_get_background_color_blend(&bgRGB, &bgRGB, &bgRGB, &bgAlpha);
unk_28 = 255 - bgAlpha;
}
if (unk_28 != 0) {
gDPPipeSync(gMasterGfxPos++);
gSPSegment(gMasterGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(((EffectInstance*)effect)->graphics->data));
gSPDisplayList(gMasterGfxPos++, D_09000C00_38DC70);
gDPSetPrimColor(gMasterGfxPos++, 0, 0, 255, 255, 255, unk_28);
shim_guRotateF(sp18, -gCameras[gCurrentCameraID].currentYaw, 0.0f, 1.0f, 0.0f);
shim_guMtxF2L(sp18, &gDisplayContext->matrixStack[gMatrixListPos]);
mtx = &gDisplayContext->matrixStack[gMatrixListPos++];
data++;
for (i = 0; i < unk_2C; i++, data++) {
if (data->unk_30 <= 0 && data->unk_28 != 0) {
shim_guTranslateF(sp18, data->unk_08, data->unk_0C, data->unk_10);
shim_guMtxF2L(sp18, &gDisplayContext->matrixStack[gMatrixListPos]);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++],
G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPMatrix(gMasterGfxPos++, mtx,
G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gSPDisplayList(gMasterGfxPos++, dlist);
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
}
}
gDPPipeSync(gMasterGfxPos++);
}
}
}

View File

@ -4,6 +4,22 @@
extern Gfx* D_09000440_34EBB0[];
extern Gfx* D_090004E8_34EC58[];
// RGB values? unused
u8 D_E00389F0[] = {
254, 172, 172,
254, 172, 213,
254, 180, 154,
213, 180, 254,
180, 180, 254,
180, 221, 254,
180, 254, 254,
180, 254, 213,
180, 254, 180,
213, 254, 180,
254, 254, 180,
254, 213, 172,
};
void spiky_white_aura_init(EffectInstance* effect);
void spiky_white_aura_update(EffectInstance* effect);
void spiky_white_aura_render(EffectInstance* effect);

View File

@ -124,10 +124,12 @@ void star_spirits_energy_appendGfx(void* effect) {
gDPPipeSync(gMasterGfxPos++);
gSPSegment(gMasterGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(((EffectInstance*)effect)->graphics->data));
shim_guPositionF(sp20, 0.0f, -gCameras[gCurrentCameraID].currentYaw, 0.0f, data->unk_3C, data->unk_08, data->unk_0C, data->unk_10);
shim_guPositionF(sp20, 0.0f, -gCameras[gCurrentCameraID].currentYaw, 0.0f,
data->unk_3C, data->unk_08, data->unk_0C, data->unk_10);
shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++],
G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(gMasterGfxPos++, D_E0122BA4[0]);
gDPSetEnvColor(gMasterGfxPos++, data->unk_2C, data->unk_30, data->unk_34, data->unk_38);
@ -137,7 +139,8 @@ void star_spirits_energy_appendGfx(void* effect) {
shim_guPositionF(sp20, 0.0f, 0.0f, 0.0f, data->unk_40[i], 0.0f, 0.0f, 0.0f);
shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++],
G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gDPSetPrimColor(gMasterGfxPos++, 0, 0, data->unk_1C, data->unk_20, data->unk_24, data->unk_50[i]);
gSPDisplayList(gMasterGfxPos++, D_E0122B90[i]);
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);

View File

@ -3,7 +3,21 @@
extern Gfx D_090004C0_343500[];
extern Gfx D_090005E0_343620[];
extern u8 D_E0042780[];
u8 D_E0042780[] = {
254, 172, 172,
254, 172, 213,
254, 180, 154,
213, 180, 254,
180, 180, 254,
180, 221, 254,
180, 254, 254,
180, 254, 213,
180, 254, 180,
213, 254, 180,
254, 254, 180,
254, 213, 172,
};
void stars_burst_init(EffectInstance* effect);
void stars_burst_update(EffectInstance* effect);

View File

@ -1,14 +1,292 @@
#include "common.h"
#include "effects_internal.h"
void stars_shimmer_init(EffectInstance* effect);
void stars_shimmer_update(EffectInstance* effect);
void stars_shimmer_render(EffectInstance* effect);
void stars_shimmer_appendGfx(void* effect);
INCLUDE_ASM(s32, "effects/stars_shimmer", stars_shimmer_main);
extern Gfx D_09000F20[];
extern Gfx D_09001210[];
extern Gfx D_09001228[];
extern Gfx D_09001240[];
extern Gfx D_09001258[];
extern Gfx D_09001270[];
extern Gfx D_090011C8[];
extern Gfx D_090011E0[];
extern Gfx D_090011F8[];
void stars_shimmer_init(void) {
Gfx* D_E0044DB0[] = {
D_09001210, D_09001228, D_09001240, D_09001258, D_09001270, D_090011C8, D_090011E0, D_090011F8
};
u8 D_E0044DD0[][3] = {
{ 254, 172, 172 },
{ 254, 172, 213 },
{ 254, 180, 154 },
{ 213, 180, 254 },
{ 180, 180, 254 },
{ 180, 221, 254 },
{ 180, 254, 254 },
{ 180, 254, 213 },
{ 180, 254, 180 },
{ 213, 254, 180 },
{ 254, 254, 180 },
{ 254, 213, 172 },
};
u8 D_E0044DF4[] = {
30, 60, 90, 100, 104, 106, 108, 110, 112, 113, 113, 110, 107, 103, 0x00, 0x00
};
u8 D_E0044E04[] = {
30, 60, 90, 100, 104, 106, 108, 110, 112, 113, 113, 110, 107, 103, 0x00, 0x00
};
// ordering crap
#ifdef NON_EQUIVALENT
void stars_shimmer_main(s32 type, f32 x, f32 y, f32 z, f32 arg4, f32 arg5, s32 arg6, s32 arg7) {
EffectBlueprint bp;
EffectBlueprint* bpPtr = &bp;
EffectInstance* effect;
StarsShimmerFXData* part;
s32 numParts = arg6;
f32 theta;
f32 cosTheta;
f32 sinTheta;
f32 temp_f22;
f32 temp_f8;
f32 temp_ft;
f32 sinT3;
f32 temp5;
f32 t3;
s32 i;
numParts = arg6 + 1;
bpPtr->init = stars_shimmer_init;
bpPtr->update = stars_shimmer_update;
bpPtr->renderWorld = stars_shimmer_render;
bpPtr->unk_00 = 0;
bpPtr->unk_14 = NULL;
bpPtr->effectID = EFFECT_STARS_SHIMMER;
effect = shim_create_effect_instance(bpPtr);
effect->numParts = numParts;
part = effect->data.starsBurst = shim_general_heap_malloc(numParts * sizeof(*part));
ASSERT(effect->data.starsBurst != NULL);
if (type == 6) {
part->unk_00 = 1;
type = 3;
} else {
part->unk_00 = 0;
}
part->pos.x = x;
part->pos.y = y;
part->pos.z = z;
part->lifeTime = 0;
part->unk_02 = type;
part->timeLeft = arg7;
part++;
for (i = 1; i < numParts; i++, part++) {
temp_f22 = (360.0f / (numParts - 1)) * i;
if (type > 1) {
theta = temp_f22 + shim_rand_int(359);
} else {
theta = temp_f22 + 0.0f;
}
t3 = (temp_f22 * 10.0f) - 90.0f;
sinTheta = shim_sin_deg(theta);
cosTheta = shim_cos_deg(theta);
sinT3 = shim_sin_deg(t3);
temp_f8 = (arg4 * 0.4) - (arg4 * 0.1 * sinT3);
temp_ft = (arg5 * 0.4) - (arg5 * 0.1 * sinT3);
temp5 = (arg5 / (numParts - 1)) * (i - 1);
part->timeLeft = i + 30;
part->lifeTime = 0;
part->unk_1C = 1.0f;
switch (type) {
case 0:
case 1:
part->unk_18 = 0;
part->pos.z = 0.0f;
part->unk_10 = sinTheta * temp_f8;
part->unk_14 = cosTheta * temp_ft;
break;
case 3:
part->pos.x = (sinTheta * arg4 * shim_rand_int(100)) * 0.005;
part->pos.y = (cosTheta * arg5 * shim_rand_int(100)) * 0.005;
part->pos.z = 0.0f;
part->unk_18 = part->unk_10 = part->unk_14 = 0.0f;
part->timeLeft += i * 2;
break;
case 2:
case 4:
case 5:
default:
part->unk_10 = sinTheta * temp_f8;
part->pos.y = temp5;
part->pos.z = cosTheta * temp_f8;
part->unk_14 = -shim_rand_int(10) * 0.03f;
part->unk_18 = (shim_rand_int(10) * 0.04f) + 0.01;
break;
}
}
}
#else
INCLUDE_ASM(s32, "effects/stars_shimmer", stars_shimmer_main);
#endif
void stars_shimmer_init(EffectInstance* effect) {
}
// tons of issues
#ifdef NON_EQUIVALENT
void stars_shimmer_update(EffectInstance* effect) {
StarsShimmerFXData* data = effect->data.starsShimmer;
u8** new_var = &D_E0044E04;
s32 count = 0;
f32 temp_f0;
f32 temp_f8;
f32 var_f20;
s32 temp_s3;
s32 temp_v1;
s32 temp_v1_2;
s32 new_var2;
s32 temp_v1_4;
s32 var_s2;
s32 var_v0;
s32 i;
temp_s3 = data->unk_02;
data->timeLeft--;
data->lifeTime++;
var_s2 = data->lifeTime;
new_var2 = var_s2;
if (!(temp_s3 != 0 && temp_s3 != 1) || temp_s3 == 3 || temp_s3 >= 10) {
if (data->timeLeft < 0) {
shim_remove_effect(effect);
return;
}
}
for (i = 0; i < effect->numParts - 1; i++, data++) {
var_v0 = var_s2 + i;
switch (temp_s3) {
case 0:
case 1:
temp_v1 = var_s2 - 1;
data->unk_28 = (var_s2 + i) & 7;
data->unk_18 += -0.02;
if (temp_v1 < 14) {
temp_f0 = (f32) D_E0044DF4[temp_v1] * 0.01;
data->pos.x = data->unk_10 * temp_f0;
data->pos.y = (data->unk_14 * temp_f0) + data->unk_18;
data->unk_1C = (f32) (*new_var)[var_s2 - 1] * 0.01;
} else {
var_f20 = ((360.0f / (effect->numParts - 1)) * i) + 60.0f;
if (i % 2) {
var_f20 -= 120.0f;
}
data->unk_02 = 10;
data->unk_10 = shim_sin_deg(var_f20);
data->unk_14 = shim_cos_deg(var_f20);
data->unk_18 = -0.05f;
}
break;
case 10:
case 30:
data->unk_10 *= 0.96;
data->unk_14 *= 0.96;
data->unk_14 += data->unk_18;
data->unk_28 = (var_s2 + i) & 7;
data->unk_1C += (0.1 - data->unk_1C) * 0.1;
data->pos.x += data->unk_10;
data->pos.y += data->unk_14;
break;
case 3:
data->unk_28 = (var_s2 + i + i) & 7;
if (var_s2 - 1 < 14) {
data->unk_1C = (f32) D_E0044E04[new_var2 - 1] * 0.01;
break;
}
data->unk_02 = 30;
break;
case 2:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
case 27:
case 28:
case 29:
var_v0 = var_s2 + i;
/* fallthrough */
default:
data->unk_28 = (var_v0 + i) & 7;
if (data->timeLeft < 0) {
count++;
}
data->timeLeft--;
if (data->timeLeft >= 0x1FU) {
data->unk_28 = -1;
} else {
var_s2 = data->lifeTime + 1;
data->lifeTime++;
if (data->lifeTime < 14) {
data->unk_1C = (f32) D_E0044E04[data->lifeTime] * 0.01;
if (temp_s3 == 5) {
data->unk_14 += data->unk_18;
data->pos.y += data->unk_14;
}
} else {
data->unk_14 += data->unk_18;
data->pos.y += data->unk_14;
data->unk_1C += (0.1 - data->unk_1C) * 0.1;
}
if (temp_s3 == 4) {
data->pos.x = data->unk_10 * shim_sin_deg(var_s2 * 12);
data->pos.z = data->unk_10 * shim_cos_deg(var_s2 * 12);
} else {
data->pos.x = data->unk_10;
}
data->unk_14 *= 0.96;
}
break;
}
}
if (!(temp_s3 == 0 || temp_s3 == 1) && temp_s3 != 3 && temp_s3 < 10 && (count >= effect->numParts - 1)) {
shim_remove_effect(effect);
}
}
#else
INCLUDE_ASM(s32, "effects/stars_shimmer", stars_shimmer_update);
#endif
void stars_shimmer_render(EffectInstance* effect) {
RenderTask renderTask;
@ -22,4 +300,94 @@ void stars_shimmer_render(EffectInstance* effect) {
retTask = shim_queue_render_task(&renderTask);
}
// this one sucks too
#ifdef NON_EQUIVALENT
void stars_shimmer_appendGfx(void* effect) {
Matrix4f sp18, sp58, sp98;
StarsShimmerFXData* data = ((EffectInstance*)effect)->data.starsShimmer;
s32 type;
s32 temp_s4;
s32 timeLeft;
f32 rf, gf, bf;
s32 r, g, b;
u8* var_s0;
s32 i;
type = data->unk_02;
gDPPipeSync(gMasterGfxPos++);
gSPSegment(gMasterGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(((EffectInstance*)effect)->graphics->data));
gSPDisplayList(gMasterGfxPos++, D_09000F20);
temp_s4 = (data->lifeTime - 1) * 3;
shim_guTranslateF(sp18, data->pos.x, data->pos.y, data->pos.z);
shim_guRotateF(sp58, -gCameras[gCurrentCameraID].currentYaw, 0.0f, 1.0f, 0.0f);
shim_guMtxCatF(sp58, sp18, sp98);
switch (type) {
case 0:
case 1:
case 2:
case 10:
rf = 1.0f;
gf = 0.5f;
bf = 0.1f;
break;
case 3:
case 30:
rf = 1.0f;
gf = 0.8f;
bf = 0.7f;
if (data->unk_00 != 0) {
gDPSetRenderMode(gMasterGfxPos++, G_RM_ZB_CLD_SURF, G_RM_ZB_CLD_SURF2);
}
break;
case 5:
rf = 1.4f;
gf = 1.4f;
bf = 0.7f;
break;
default:
rf = 1.4f;
gf = 0.7f;
bf = 0.7f;
break;
}
var_s0 = D_E0044DD0[temp_s4];
data++;
for (i = 0; i < ((EffectInstance*)effect)->numParts - 1; i++, data++) {
timeLeft = data->timeLeft;
if (timeLeft >= 0) {
shim_guTranslateF(sp58, data->pos.x, data->pos.y, data->pos.z);
sp58[0][0] = data->unk_1C;
shim_guMtxCatF(sp58, sp98, sp18);
shim_guMtxF2L(sp18, &gDisplayContext->matrixStack[gMatrixListPos]);
if (var_s0 >= &D_E0044DD0[36]) {
var_s0 = D_E0044DD0;
}
r = *var_s0++ * rf;
g = *var_s0++ * gf;
b = *var_s0++ * bf;
if (r > 255) {
r = 255;
}
if (g > 255) {
g = 255;
}
if (b > 255) {
b = 255;
}
gDPSetPrimColor(gMasterGfxPos++, 0, 0, r, g, b, 255);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++],
G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gSPDisplayList(gMasterGfxPos++, D_E0044DB0[timeLeft & 7]);
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
}
}
gDPPipeSync(gMasterGfxPos++);
}
#else
INCLUDE_ASM(s32, "effects/stars_shimmer", stars_shimmer_appendGfx);
#endif

View File

@ -1,5 +1,6 @@
#include "common.h"
#include "effects_internal.h"
#include "nu/nusys.h"
void underwater_init(EffectInstance* effect);
void underwater_update(EffectInstance* effect);
@ -146,4 +147,176 @@ void underwater_render(EffectInstance* effect) {
void func_E00BA618(void) {
}
extern Vtx D_09000428[];
extern Gfx D_09000528[];
extern Gfx D_09000570[];
#ifdef WIP
void underwater_appendGfx(void* effect) {
EffectInstance* effectTemp = effect;
UnderwaterFXData* data;
Matrix4f sp20;
s32 spA0;
s32 spA8;
s32 temp_a0_3;
s32 temp_a1_5;
s32 temp_a1_6;
s32 temp_a1_7;
s32 temp_a2_2;
s32 temp_s3;
s32 temp_t7;
s32 temp_t8;
s32 temp_v1_2;
s32 temp_v1_4;
s32 var_a0;
s32 var_s1;
s32 var_s2;
s32 cond;
s32 var_t3_2;
s32 var_t4;
s32 var_t9;
s32 var_v1;
u32 temp_v1_3;
s32 i;
s32 j;
data = effectTemp->data.underwater;
gDPPipeSync(gMasterGfxPos++);
gSPSegment(gMasterGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(effectTemp->graphics->data));
gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, nuGfxZBuffer);
gSPDisplayList(gMasterGfxPos++, D_09000528);
for (i = 0; i < 40; i++) {
// todo probably a composite macro?
gDPSetTextureImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, &nuGfxCfb_ptr[0xF00 * i]);
gDPSetTile(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 0x0000, G_TX_LOADTILE, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
G_TX_NOLOD);
gDPLoadSync(gMasterGfxPos++);
gDPLoadTile(gMasterGfxPos++, G_TX_LOADTILE, 0, 0, 0x04FC, 0x0014);
gDPPipeSync(gMasterGfxPos++);
gDPSetTile(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 0x0000, G_TX_RENDERTILE, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
G_TX_NOLOD);
gDPSetTileSize(gMasterGfxPos++, G_TX_RENDERTILE, 0, 0, 0x04FC, 0x0014);
gSPTextureRectangle(gMasterGfxPos++, 0, i * 0x18, 0x04FC, 20 + (i * 18), G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400);
gDPPipeSync(gMasterGfxPos++);
}
gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, nuGfxCfb_ptr);
gDPSetPrimColor(gMasterGfxPos++, 0, 0, data->unk_1C, data->unk_1D, data->unk_1E, data->unk_1F);
gDPSetCycleType(gMasterGfxPos++, G_CYC_1CYCLE);
gDPSetCombineLERP(gMasterGfxPos++, PRIMITIVE, 0, PRIMITIVE_ALPHA, TEXEL0, 0, 0, 0, SHADE, PRIMITIVE, 0,
PRIMITIVE_ALPHA, TEXEL0, 0, 0, 0, SHADE);
gDPSetTextureImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, VIRTUAL_TO_PHYSICAL(nuGfxZBuffer));
gDPSetRenderMode(gMasterGfxPos++, CVG_DST_SAVE | ZMODE_OPA | FORCE_BL | G_RM_PASS,
CVG_DST_SAVE | ZMODE_OPA | FORCE_BL | GBL_c2(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1));
gDPSetTexturePersp(gMasterGfxPos++, G_TP_PERSP);
gDPSetTextureFilter(gMasterGfxPos++, G_TF_BILERP);
shim_guFrustumF(sp20, -80.0f, 80.0f, 60.0f, -60.0f, 160.0f, 640.0f, 1.0f);
shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++],
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPClearGeometryMode(gMasterGfxPos++, G_CULL_BOTH | G_LIGHTING);
gSPSetGeometryMode(gMasterGfxPos++, G_SHADE | G_SHADING_SMOOTH);
gSPVertex(gMasterGfxPos++, D_09000428, 16, 0);
var_t9 = 0x18;
for (i = 0; i < 12; i++) {
var_s2 = 0;
if (i == 0) {
var_a0 = -4;
var_s2 = 1;
} else {
var_a0 = 0;
}
var_v1 = 0;
if (i == 11) {
var_v1 = 4;
var_s2 = 1;
}
temp_t8 = (var_t9 + var_a0) * 4;
spA0 = (temp_t8 & 0xFFF) | 0xF4000000;
temp_v1_2 = var_t9 + var_v1;
temp_s3 = (temp_v1_2 + 0x10) * 4;
spA8 = -var_s2;
for (j = 0; j < 12; j++) {
cond = FALSE;
temp_t7 = (j * 0x10) + 0x10;
if (j == 0) {
var_t3_2 = -4;
cond = TRUE;
} else {
var_t3_2 = 0;
}
var_s1 = 0;
if (j == 0x11) {
var_s1 = 4;
cond = TRUE;
}
temp_a2_2 = temp_t7 + var_s1;
temp_a0_3 = temp_t7 + var_t3_2;
temp_v1_3 = ((((s32) ((((temp_a2_2 - (temp_a0_3 - 0x10)) + 1) * 2) + 7) >> 3) & 0x1FF) << 9) | 0xF5100000;
temp_a3->words.w0 = temp_v1_3;
temp_a3->words.w1 = 0x07098260;
temp_a1_4->words.w0 = E600000000000000
temp_a1_4->unkC = (s32) (((((temp_a2_2 + 0x10) * 4) & 0xFFF) << 0xC) | ((temp_s3 & 0xFFF) | 0x07000000));
temp_a1_4->unk8 = (s32) ((((temp_a0_3 * 4) & 0xFFF) << 0xC) | spA0);
temp_a1_4->unk10 = E700000000000000
temp_a1_4->unk18 = temp_v1_3;
temp_a1_4->unk1C = 00098260
temp_a1_4->unk20 = F2000000
temp_a1_4->unk24 = (s32) (((((temp_a2_2 + 0x1F) * 4) & 0xFFF) << 0xC) | (((temp_v1_2 + 0x1F) * 4) & 0xFFF));
if (!cond || (var_t4 = 0xC, (var_s2 == 0))) {
var_t4 = 4;
if (!cond) {
var_t4 = spA8 & 8;
}
}
temp_a1_5 = j * 0xD;
temp_a0_4->words.w0 = (var_t4 * 2) | 0x02180000;
temp_a0_4->words.w1 = ((temp_t7 + var_t3_2) << 0x12) | (temp_t8 + (data + (i + temp_a1_5))->unk23);
temp_v1_4 = j * 0xD;
temp_a2_3->words.w0 = ((var_t4 + 1) * 2) | 0x02180000;
temp_a2_3->words.w1 = ((temp_t7 + var_s1 + 0x10) << 0x12) | (temp_t8 + (data + (i + temp_v1_4))->unk23);
temp_a2_3->unk8 = (s32) (((var_t4 + 2) * 2) | 0x02180000);
temp_a2_3->unkC = (s32) (((temp_t7 + var_t3_2) << 0x12) | (temp_s3 + (data + (i + (temp_a1_5 + 1)))->unk23));
temp_a1_6 = (var_t4 + 3) * 2;
temp_a2_3->unk10 = (s32) (temp_a1_6 | 0x02180000);
temp_a2_3->unk14 = (s32) (((temp_t7 + var_s1 + 0x10) << 0x12) | (temp_s3 + (data + (i + (temp_v1_4 + 1)))->unk23));
temp_a1_7 = temp_a1_6 & 0xFF;
temp_a2_3->unk18 = (s32) (((var_t4 * 2) << 0x10) | (temp_a1_7 << 8) | ((var_t4 + 1) * 2) | 0x06000000);
temp_a2_3->unk1C = (s32) (((var_t4 * 2) << 0x10) | (((var_t4 + 2) * 2) << 8) | temp_a1_7);
temp_a2_3->unk20 = E700000000000000;
}
var_t9 += 0x10;
}
gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, nuGfxZBuffer);
gSPDisplayList(gMasterGfxPos++, D_09000570);
gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, nuGfxZBuffer);
gDPPipeSync(gMasterGfxPos++);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos],
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gDPPipeSync(gMasterGfxPos++);
}
#else
INCLUDE_ASM(s32, "effects/underwater", underwater_appendGfx);
#endif

View File

@ -1,6 +0,0 @@
.include "macro.inc"
.section .data
dlabel D_E00389F0
.word 0xFEACACFE, 0xACD5FEB4, 0x9AD5B4FE, 0xB4B4FEB4, 0xDDFEB4FE, 0xFEB4FED5, 0xB4FEB4D5, 0xFEB4FEFE, 0xB4FED5AC, 0x00000000, 0x00000000, 0x00000000

View File

@ -1,6 +0,0 @@
.include "macro.inc"
.section .data
dlabel D_E0042780
.word 0xFEACACFE, 0xACD5FEB4, 0x9AD5B4FE, 0xB4B4FEB4, 0xDDFEB4FE, 0xFEB4FED5, 0xB4FEB4D5, 0xFEB4FEFE, 0xB4FED5AC, 0x00000000, 0x00000000, 0x00000000

View File

@ -1,15 +0,0 @@
.include "macro.inc"
.section .data
dlabel D_E0044DB0
.word 0x09001210, 0x09001228, 0x09001240, 0x09001258, 0x09001270, 0x090011C8, 0x090011E0, 0x090011F8
dlabel D_E0044DD0
.word 0xFEACACFE, 0xACD5FEB4, 0x9AD5B4FE, 0xB4B4FEB4, 0xDDFEB4FE, 0xFEB4FED5, 0xB4FEB4D5, 0xFEB4FEFE, 0xB4FED5AC
dlabel D_E0044DF4
.byte 0x1E, 0x3C, 0x5A, 0x64, 0x68, 0x6A, 0x6C, 0x6E, 0x70, 0x71, 0x71, 0x6E, 0x6B, 0x67, 0x00, 0x00
dlabel D_E0044E04
.ascii "<Zdhjlnpqqnkg\0\0\0\0\0\0\0\0\0\0\0\0\0\0"

View File

@ -1,9 +0,0 @@
.include "macro.inc"
.section .data
dlabel D_E0066C50
.word 0x09003830, 0x09003830, 0x09003830, 0x09003830, 0x09003830, 0x09003830, 0x09003830, 0x09003830, 0x09003830, 0x09003830, 0x09003830, 0x09003830, 0x09003830, 0x09003830, 0x09003830
dlabel D_E0066C8C
.word 0x09003508, 0x090035E8, 0x09003428, 0x090039A8, 0x09003A88, 0x09003428, 0x090039A8, 0x09003A88, 0x090038B8, 0x09003508, 0x090038B8, 0x090038B8, 0x09003428, 0x09003A88, 0x090036C8, 0xFFC59CFF, 0x9CFFFF73, 0xD6FF9CFF, 0xFFC57BFF, 0xB4FFDE73, 0xFFFF949C

View File

@ -1,15 +0,0 @@
.include "macro.inc"
.section .data
dlabel D_E0078900
.word 0x09001400, 0x090014B8, 0x09001570, 0x09001618, 0x090016C0, 0x09001570
dlabel D_E0078918
.word 0x00000080, 0x00000080, 0x3F000000, 0x3F000000, 0x00000040, 0x00000004, 0x00000040, 0x00000040, 0x40000000, 0x40000000, 0x00000020, 0x00000010, 0x00000040, 0x00000040, 0x3F800000, 0x3F800000, 0x00000040, 0x00000008, 0x00000040, 0x00000040, 0x40000000, 0x40000000, 0x00000010, 0x00000010, 0x00000040, 0x00000040, 0x3F800000, 0x3F800000, 0x00000020, 0x00000010, 0x00000040, 0x00000040, 0x3F800000, 0x3F800000, 0x00000040, 0x00000008
dlabel D_E00789A8
.word 0x00000000
dlabel D_E00789AC
.word 0xFFFFFFFF, 0xFF80FF80, 0xFF80FFFF, 0xFF808080, 0xFF808080, 0xFF000000, 0x00000000, 0x00000000, 0x00000000

View File

@ -1,6 +0,0 @@
.include "macro.inc"
.section .data
dlabel D_E008AA50
.word 0x09000D50, 0x09000D50, 0x00000000, 0x00000000

View File

@ -1,6 +0,0 @@
.include "macro.inc"
.section .data
dlabel D_E00CACB0
.word 0x09000400, 0x09000400, 0x09000400, 0x09000400

View File

@ -1,27 +0,0 @@
.include "macro.inc"
.section .data
dlabel D_E010ACC0
.word 0x09000158, 0x09000158, 0x09000158
dlabel D_E010ACCC
.word 0x09000080, 0x09000080, 0x09000080
dlabel D_E010ACD8
.word 0x24005D36, 0xD84A4300, 0x4A52DC2D, 0x59002D3C, 0xBE2D15C0, 0x4A1CAB2D, 0x0A9E0F31, 0xAA0FA6D8, 0x0FA9ED2D, 0x9D000FB8, 0xCB2DA913, 0x2DA6280F, 0xBE490FB8, 0x352DD34D, 0x2DE15E0F, 0xF7592DB8, 0x352D0BDE, 0x5D000064, 0xCAD84AB8, 0xCB2DD3B3, 0x2DA6D80F, 0xBEB70F0B, 0xDE5DEBC0, 0x4A15C04A, 0xF7A72D1C, 0xAB2D0A62, 0x0F50C60F, 0x61EB0F31, 0xAA0F0A9E, 0x0FE1A20F, 0xBEB70F31, 0x560F503A, 0x0F61150F, 0xE3EB5D00, 0x00640B22, 0x5DE3155D, 0x15404AEB, 0x404ACA28, 0x4A1C552D, 0x43004A59, 0x002D2400, 0x5D000064, 0x0B225D36, 0x284A1540, 0x4ACA284A, 0xB8352D00, 0x0064E3EB, 0x5DBD004A, 0xCAD84AE3, 0x155D0000, 0x643CBE2D, 0x52DC2D59, 0x002D1CAB, 0x2D1CAB2D, 0xF7A72DD3, 0xB32DB8CB, 0x2D3C422D, 0x1C552D52, 0x242D1C55, 0x2D59002D, 0xF7592DD3, 0x4D2DB835, 0x2D31560F, 0x0A620F52, 0x242D61EB, 0x0F61150F, 0x3C422D1C, 0x552DA913, 0x2DBE490F, 0xA6280FA9, 0xED2DB8CB, 0x2D000000
dlabel D_E010ADF8
.word 0xD0F100DC, 0xE616D300, 0x16D00F00, 0xDC1A16E3, 0x2800DC1A, 0x16F22B16, 0x0032000E, 0x2B1608E7, 0x2B0ED516, 0x24E6161A, 0x002B0000, 0x3200CE00, 0x1DD8002D, 0x00161DD8, 0x0024E616, 0x0ED51630, 0xF1002D00, 0x1600CE00, 0x0ED516F2, 0xD516E3D8, 0x00DCE616, 0x1D280024, 0x1A16300F, 0x000E2B16, 0x2D001600, 0x00320819, 0x2BEB0F2B, 0x0E2B161A, 0x002B2D00, 0x16000032, 0x08192BEB, 0xF12B0000, 0x32DCE616, 0x08E72B00, 0x0032EB0F, 0x2BEBF12B, 0xDC1A16F2, 0x2B16DC1A, 0x161D2800, 0x00320024, 0x1A1630F1, 0x00300F00, 0x0E2B16F2, 0xD516D0F1, 0x00E3D800, 0x0ED516D3, 0x0016DCE6, 0x16E32800, 0xD00F0000, 0x00000000
dlabel D_E010AEC0
.word 0xF76900EF, 0x57001157, 0x00096900, 0x007A00E6, 0x45001A45, 0x00DD3400, 0x233400CA, 0x3100BAFF, 0x00C8F100, 0x00C80038, 0xF10046FF, 0x00363100, 0xC4DE00EF, 0xBF0011BF, 0x003CDE00, 0x550D004A, 0x2E00631B, 0x005D2B00, 0x0C21000C, 0x16001816, 0x00182100, 0x0C0A0018, 0x0A00182D, 0x00E82100, 0xE81600E8, 0x2D007128, 0x00C1CB00, 0xBEB700B6, 0x2E00A32B, 0x0023B600, 0x34AD000C, 0x2D00F416, 0x00F42100, 0xE80A00F4, 0x0A00F42D, 0x00CCAD00, 0xDDB600BA, 0xA400AB0D, 0x009D1B00, 0x8F28003F, 0xCB0042B7, 0x0046A400
dlabel D_E010AF68
.word D_E010ACD8, 0x0000005F, D_E010ADF8, 0x00000042, D_E010AEC0, 0x00000038
dlabel D_E010AF80
.word 0x00000000
dlabel D_E010AF84
.word 0x00000000, 0x00000000, 0x00000000

View File

@ -1,9 +0,0 @@
.include "macro.inc"
.section .data
dlabel D_E011E7F0
.word 0x090011A8, 0x090011C8, 0x090011E8, 0x09001208
dlabel D_E011E800
.word 0x09001000, 0x00000000, 0x00000000, 0x00000000

View File

@ -4,13 +4,13 @@
.section .rodata
dlabel jtbl_E0088D30
.word LE00881F4_38AFE4, LE00881FC_38AFEC, LE0088204_38AFF4, LE008820C_38AFFC, LE00881F4_38AFE4, LE00881FC_38AFEC, LE0088204_38AFF4, 0
.word .LE00881F4_38AFE4, .LE00881FC_38AFEC, .LE0088204_38AFF4, .LE008820C_38AFFC, .LE00881F4_38AFE4, .LE00881FC_38AFEC, .LE0088204_38AFF4, 0
dlabel jtbl_E0088D50
.word LE0088230_38B020, LE0088240_38B030, LE0088250_38B040, LE0088250_38B040, LE0088230_38B020, LE0088240_38B030, LE0088250_38B040, 0
.word .LE0088230_38B020, .LE0088240_38B030, .LE0088250_38B040, .LE0088250_38B040, .LE0088230_38B020, .LE0088240_38B030, .LE0088250_38B040, 0
dlabel D_E0088D70
.word 0xE0088374, 0xE0088374, 0xE0088374, 0xE0088374, 0xE0088374, 0xE0088374, 0xE0088374, 0x00000000
dlabel jtbl_E0088D70
.word .LE0088374, .LE0088374, .LE0088374, .LE0088374, .LE0088374, .LE0088374, .LE0088374, 0x00000000
dlabel D_E0088D90
.double 0.02
@ -43,7 +43,7 @@ glabel confetti_main
/* 38AFB8 E00881C8 F7BE0080 */ sdc1 $f30, 0x80($sp)
/* 38AFBC E00881CC F7BC0078 */ sdc1 $f28, 0x78($sp)
/* 38AFC0 E00881D0 F7BA0070 */ sdc1 $f26, 0x70($sp)
/* 38AFC4 E00881D4 1040000D */ beqz $v0, LE008820C_38AFFC
/* 38AFC4 E00881D4 1040000D */ beqz $v0, .LE008820C_38AFFC
/* 38AFC8 E00881D8 27A40010 */ addiu $a0, $sp, 0x10
/* 38AFCC E00881DC 00151080 */ sll $v0, $s5, 2
/* 38AFD0 E00881E0 3C01E009 */ lui $at, %hi(jtbl_E0088D30)
@ -51,37 +51,37 @@ glabel confetti_main
/* 38AFD8 E00881E8 8C228D30 */ lw $v0, %lo(jtbl_E0088D30)($at)
/* 38AFDC E00881EC 00400008 */ jr $v0
/* 38AFE0 E00881F0 00000000 */ nop
dlabel LE00881F4_38AFE4
.LE00881F4_38AFE4:
/* 38AFE4 E00881F4 08022084 */ j .LE0088210
/* 38AFE8 E00881F8 2413000C */ addiu $s3, $zero, 0xc
dlabel LE00881FC_38AFEC
.LE00881FC_38AFEC:
/* 38AFEC E00881FC 08022084 */ j .LE0088210
/* 38AFF0 E0088200 24130012 */ addiu $s3, $zero, 0x12
dlabel LE0088204_38AFF4
.LE0088204_38AFF4:
/* 38AFF4 E0088204 08022084 */ j .LE0088210
/* 38AFF8 E0088208 24130018 */ addiu $s3, $zero, 0x18
dlabel LE008820C_38AFFC
.LE008820C_38AFFC:
/* 38AFFC E008820C 24130030 */ addiu $s3, $zero, 0x30
.LE0088210:
/* 38B000 E0088210 2EA20007 */ sltiu $v0, $s5, 7
/* 38B004 E0088214 1040000E */ beqz $v0, LE0088250_38B040
/* 38B004 E0088214 1040000E */ beqz $v0, .LE0088250_38B040
/* 38B008 E0088218 00151080 */ sll $v0, $s5, 2
/* 38B00C E008821C 3C01E009 */ lui $at, %hi(jtbl_E0088D50)
/* 38B010 E0088220 00220821 */ addu $at, $at, $v0
/* 38B014 E0088224 8C228D50 */ lw $v0, %lo(jtbl_E0088D50)($at)
/* 38B018 E0088228 00400008 */ jr $v0
/* 38B01C E008822C 00000000 */ nop
dlabel LE0088230_38B020
.LE0088230_38B020:
/* 38B020 E0088230 3C014040 */ lui $at, 0x4040
/* 38B024 E0088234 44818000 */ mtc1 $at, $f16
/* 38B028 E0088238 08022098 */ j .LE0088260
/* 38B02C E008823C E7B00028 */ swc1 $f16, 0x28($sp)
dlabel LE0088240_38B030
.LE0088240_38B030:
/* 38B030 E0088240 3C014080 */ lui $at, 0x4080
/* 38B034 E0088244 44818000 */ mtc1 $at, $f16
/* 38B038 E0088248 08022098 */ j .LE0088260
/* 38B03C E008824C E7B00028 */ swc1 $f16, 0x28($sp)
dlabel LE0088250_38B040
.LE0088250_38B040:
/* 38B040 E0088250 3C0140A0 */ lui $at, 0x40a0
/* 38B044 E0088254 44818000 */ mtc1 $at, $f16
/* 38B048 E0088258 00000000 */ nop
@ -133,8 +133,8 @@ dlabel LE0088250_38B040
/* 38B0F4 E0088304 0000882D */ daddu $s1, $zero, $zero
/* 38B0F8 E0088308 12600092 */ beqz $s3, .LE0088554
/* 38B0FC E008830C 0040F02D */ daddu $fp, $v0, $zero
/* 38B100 E0088310 3C03E009 */ lui $v1, %hi(D_E0088D70)
/* 38B104 E0088314 24638D70 */ addiu $v1, $v1, %lo(D_E0088D70)
/* 38B100 E0088310 3C03E009 */ lui $v1, %hi(jtbl_E0088D70)
/* 38B104 E0088314 24638D70 */ addiu $v1, $v1, %lo(jtbl_E0088D70)
/* 38B108 E0088318 00151080 */ sll $v0, $s5, 2
/* 38B10C E008831C 0043B821 */ addu $s7, $v0, $v1
/* 38B110 E0088320 26500030 */ addiu $s0, $s2, 0x30
@ -159,6 +159,7 @@ dlabel LE0088250_38B040
/* 38B158 E0088368 8EE20000 */ lw $v0, ($s7)
/* 38B15C E008836C 080220DF */ j .LE008837C
/* 38B160 E0088370 00000000 */ nop
.LE0088374:
/* 38B164 E0088374 C7B00028 */ lwc1 $f16, 0x28($sp)
/* 38B168 E0088378 46008021 */ cvt.d.s $f0, $f16
.LE008837C:

View File

@ -1,162 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel ice_pillar_appendGfx
/* 409F08 E011E578 27BDFF50 */ addiu $sp, $sp, -0xb0
/* 409F0C E011E57C 0080302D */ daddu $a2, $a0, $zero
/* 409F10 E011E580 3C07DB06 */ lui $a3, 0xdb06
/* 409F14 E011E584 34E70024 */ ori $a3, $a3, 0x24
/* 409F18 E011E588 27A40010 */ addiu $a0, $sp, 0x10
/* 409F1C E011E58C AFB500A4 */ sw $s5, 0xa4($sp)
/* 409F20 E011E590 3C150001 */ lui $s5, 1
/* 409F24 E011E594 36B51630 */ ori $s5, $s5, 0x1630
/* 409F28 E011E598 AFB3009C */ sw $s3, 0x9c($sp)
/* 409F2C E011E59C 3C13800A */ lui $s3, %hi(gMasterGfxPos)
/* 409F30 E011E5A0 2673A66C */ addiu $s3, $s3, %lo(gMasterGfxPos)
/* 409F34 E011E5A4 3C02E700 */ lui $v0, 0xe700
/* 409F38 E011E5A8 AFBF00AC */ sw $ra, 0xac($sp)
/* 409F3C E011E5AC AFB600A8 */ sw $s6, 0xa8($sp)
/* 409F40 E011E5B0 AFB400A0 */ sw $s4, 0xa0($sp)
/* 409F44 E011E5B4 AFB20098 */ sw $s2, 0x98($sp)
/* 409F48 E011E5B8 AFB10094 */ sw $s1, 0x94($sp)
/* 409F4C E011E5BC AFB00090 */ sw $s0, 0x90($sp)
/* 409F50 E011E5C0 8E650000 */ lw $a1, ($s3)
/* 409F54 E011E5C4 8CD2000C */ lw $s2, 0xc($a2)
/* 409F58 E011E5C8 00A0182D */ daddu $v1, $a1, $zero
/* 409F5C E011E5CC 9256001B */ lbu $s6, 0x1b($s2)
/* 409F60 E011E5D0 24A50008 */ addiu $a1, $a1, 8
/* 409F64 E011E5D4 AE650000 */ sw $a1, ($s3)
/* 409F68 E011E5D8 AC620000 */ sw $v0, ($v1)
/* 409F6C E011E5DC AC600004 */ sw $zero, 4($v1)
/* 409F70 E011E5E0 ACA70000 */ sw $a3, ($a1)
/* 409F74 E011E5E4 8CC30010 */ lw $v1, 0x10($a2)
/* 409F78 E011E5E8 24A20008 */ addiu $v0, $a1, 8
/* 409F7C E011E5EC AE620000 */ sw $v0, ($s3)
/* 409F80 E011E5F0 8C62001C */ lw $v0, 0x1c($v1)
/* 409F84 E011E5F4 3C038000 */ lui $v1, 0x8000
/* 409F88 E011E5F8 00431021 */ addu $v0, $v0, $v1
/* 409F8C E011E5FC 3C03800B */ lui $v1, %hi(gCameras)
/* 409F90 E011E600 24631D80 */ addiu $v1, $v1, %lo(gCameras)
/* 409F94 E011E604 ACA20004 */ sw $v0, 4($a1)
/* 409F98 E011E608 8E450004 */ lw $a1, 4($s2)
/* 409F9C E011E60C 8E460008 */ lw $a2, 8($s2)
/* 409FA0 E011E610 3C028007 */ lui $v0, %hi(gCurrentCameraID)
/* 409FA4 E011E614 8C427410 */ lw $v0, %lo(gCurrentCameraID)($v0)
/* 409FA8 E011E618 8E47000C */ lw $a3, 0xc($s2)
/* 409FAC E011E61C 00028080 */ sll $s0, $v0, 2
/* 409FB0 E011E620 02028021 */ addu $s0, $s0, $v0
/* 409FB4 E011E624 00108080 */ sll $s0, $s0, 2
/* 409FB8 E011E628 02028023 */ subu $s0, $s0, $v0
/* 409FBC E011E62C 001010C0 */ sll $v0, $s0, 3
/* 409FC0 E011E630 02028021 */ addu $s0, $s0, $v0
/* 409FC4 E011E634 001080C0 */ sll $s0, $s0, 3
/* 409FC8 E011E638 0C080108 */ jal shim_guTranslateF
/* 409FCC E011E63C 02038021 */ addu $s0, $s0, $v1
/* 409FD0 E011E640 27B10050 */ addiu $s1, $sp, 0x50
/* 409FD4 E011E644 8E450020 */ lw $a1, 0x20($s2)
/* 409FD8 E011E648 0220202D */ daddu $a0, $s1, $zero
/* 409FDC E011E64C 00A0302D */ daddu $a2, $a1, $zero
/* 409FE0 E011E650 0C080110 */ jal shim_guScaleF
/* 409FE4 E011E654 00A0382D */ daddu $a3, $a1, $zero
/* 409FE8 E011E658 0220202D */ daddu $a0, $s1, $zero
/* 409FEC E011E65C 27A50010 */ addiu $a1, $sp, 0x10
/* 409FF0 E011E660 0C080114 */ jal shim_guMtxCatF
/* 409FF4 E011E664 00A0302D */ daddu $a2, $a1, $zero
/* 409FF8 E011E668 27A40010 */ addiu $a0, $sp, 0x10
/* 409FFC E011E66C 3C118007 */ lui $s1, %hi(gMatrixListPos)
/* 40A000 E011E670 263141F0 */ addiu $s1, $s1, %lo(gMatrixListPos)
/* 40A004 E011E674 3C14800A */ lui $s4, %hi(gDisplayContext)
/* 40A008 E011E678 2694A674 */ addiu $s4, $s4, %lo(gDisplayContext)
/* 40A00C E011E67C 96250000 */ lhu $a1, ($s1)
/* 40A010 E011E680 8E820000 */ lw $v0, ($s4)
/* 40A014 E011E684 00052980 */ sll $a1, $a1, 6
/* 40A018 E011E688 00B52821 */ addu $a1, $a1, $s5
/* 40A01C E011E68C 0C080118 */ jal shim_guMtxF2L
/* 40A020 E011E690 00452821 */ addu $a1, $v0, $a1
/* 40A024 E011E694 3C03DA38 */ lui $v1, 0xda38
/* 40A028 E011E698 34630002 */ ori $v1, $v1, 2
/* 40A02C E011E69C 3C06DA38 */ lui $a2, 0xda38
/* 40A030 E011E6A0 34C60001 */ ori $a2, $a2, 1
/* 40A034 E011E6A4 3C07DE00 */ lui $a3, 0xde00
/* 40A038 E011E6A8 8E640000 */ lw $a0, ($s3)
/* 40A03C E011E6AC 96220000 */ lhu $v0, ($s1)
/* 40A040 E011E6B0 0080282D */ daddu $a1, $a0, $zero
/* 40A044 E011E6B4 24840008 */ addiu $a0, $a0, 8
/* 40A048 E011E6B8 AE640000 */ sw $a0, ($s3)
/* 40A04C E011E6BC ACA30000 */ sw $v1, ($a1)
/* 40A050 E011E6C0 24430001 */ addiu $v1, $v0, 1
/* 40A054 E011E6C4 3042FFFF */ andi $v0, $v0, 0xffff
/* 40A058 E011E6C8 00021180 */ sll $v0, $v0, 6
/* 40A05C E011E6CC A6230000 */ sh $v1, ($s1)
/* 40A060 E011E6D0 8E830000 */ lw $v1, ($s4)
/* 40A064 E011E6D4 00551021 */ addu $v0, $v0, $s5
/* 40A068 E011E6D8 00621821 */ addu $v1, $v1, $v0
/* 40A06C E011E6DC 24820008 */ addiu $v0, $a0, 8
/* 40A070 E011E6E0 ACA30004 */ sw $v1, 4($a1)
/* 40A074 E011E6E4 AE620000 */ sw $v0, ($s3)
/* 40A078 E011E6E8 24820010 */ addiu $v0, $a0, 0x10
/* 40A07C E011E6EC AC860000 */ sw $a2, ($a0)
/* 40A080 E011E6F0 AE620000 */ sw $v0, ($s3)
/* 40A084 E011E6F4 8E030204 */ lw $v1, 0x204($s0)
/* 40A088 E011E6F8 3C02FA00 */ lui $v0, 0xfa00
/* 40A08C E011E6FC AC820008 */ sw $v0, 8($a0)
/* 40A090 E011E700 AC830004 */ sw $v1, 4($a0)
/* 40A094 E011E704 92420018 */ lbu $v0, 0x18($s2)
/* 40A098 E011E708 92450019 */ lbu $a1, 0x19($s2)
/* 40A09C E011E70C 9246001A */ lbu $a2, 0x1a($s2)
/* 40A0A0 E011E710 24830018 */ addiu $v1, $a0, 0x18
/* 40A0A4 E011E714 AE630000 */ sw $v1, ($s3)
/* 40A0A8 E011E718 3C03FB00 */ lui $v1, 0xfb00
/* 40A0AC E011E71C AC830010 */ sw $v1, 0x10($a0)
/* 40A0B0 E011E720 00021600 */ sll $v0, $v0, 0x18
/* 40A0B4 E011E724 00052C00 */ sll $a1, $a1, 0x10
/* 40A0B8 E011E728 00451025 */ or $v0, $v0, $a1
/* 40A0BC E011E72C 00063200 */ sll $a2, $a2, 8
/* 40A0C0 E011E730 00461025 */ or $v0, $v0, $a2
/* 40A0C4 E011E734 00561025 */ or $v0, $v0, $s6
/* 40A0C8 E011E738 AC82000C */ sw $v0, 0xc($a0)
/* 40A0CC E011E73C 9242001C */ lbu $v0, 0x1c($s2)
/* 40A0D0 E011E740 9245001D */ lbu $a1, 0x1d($s2)
/* 40A0D4 E011E744 9246001E */ lbu $a2, 0x1e($s2)
/* 40A0D8 E011E748 9248001F */ lbu $t0, 0x1f($s2)
/* 40A0DC E011E74C 24830020 */ addiu $v1, $a0, 0x20
/* 40A0E0 E011E750 AE630000 */ sw $v1, ($s3)
/* 40A0E4 E011E754 AC870018 */ sw $a3, 0x18($a0)
/* 40A0E8 E011E758 00021600 */ sll $v0, $v0, 0x18
/* 40A0EC E011E75C 00052C00 */ sll $a1, $a1, 0x10
/* 40A0F0 E011E760 00451025 */ or $v0, $v0, $a1
/* 40A0F4 E011E764 00063200 */ sll $a2, $a2, 8
/* 40A0F8 E011E768 00461025 */ or $v0, $v0, $a2
/* 40A0FC E011E76C 00481025 */ or $v0, $v0, $t0
/* 40A100 E011E770 AC820014 */ sw $v0, 0x14($a0)
/* 40A104 E011E774 3C03E012 */ lui $v1, %hi(D_E011E800)
/* 40A108 E011E778 8C63E800 */ lw $v1, %lo(D_E011E800)($v1)
/* 40A10C E011E77C 24820028 */ addiu $v0, $a0, 0x28
/* 40A110 E011E780 AE620000 */ sw $v0, ($s3)
/* 40A114 E011E784 AC870020 */ sw $a3, 0x20($a0)
/* 40A118 E011E788 AC83001C */ sw $v1, 0x1c($a0)
/* 40A11C E011E78C 82420024 */ lb $v0, 0x24($s2)
/* 40A120 E011E790 3C03D838 */ lui $v1, 0xd838
/* 40A124 E011E794 00021080 */ sll $v0, $v0, 2
/* 40A128 E011E798 3C01E012 */ lui $at, %hi(D_E011E7F0)
/* 40A12C E011E79C 00220821 */ addu $at, $at, $v0
/* 40A130 E011E7A0 8C22E7F0 */ lw $v0, %lo(D_E011E7F0)($at)
/* 40A134 E011E7A4 34630002 */ ori $v1, $v1, 2
/* 40A138 E011E7A8 AC820024 */ sw $v0, 0x24($a0)
/* 40A13C E011E7AC 24820030 */ addiu $v0, $a0, 0x30
/* 40A140 E011E7B0 AE620000 */ sw $v0, ($s3)
/* 40A144 E011E7B4 24020040 */ addiu $v0, $zero, 0x40
/* 40A148 E011E7B8 AC830028 */ sw $v1, 0x28($a0)
/* 40A14C E011E7BC AC82002C */ sw $v0, 0x2c($a0)
/* 40A150 E011E7C0 8FBF00AC */ lw $ra, 0xac($sp)
/* 40A154 E011E7C4 8FB600A8 */ lw $s6, 0xa8($sp)
/* 40A158 E011E7C8 8FB500A4 */ lw $s5, 0xa4($sp)
/* 40A15C E011E7CC 8FB400A0 */ lw $s4, 0xa0($sp)
/* 40A160 E011E7D0 8FB3009C */ lw $s3, 0x9c($sp)
/* 40A164 E011E7D4 8FB20098 */ lw $s2, 0x98($sp)
/* 40A168 E011E7D8 8FB10094 */ lw $s1, 0x94($sp)
/* 40A16C E011E7DC 8FB00090 */ lw $s0, 0x90($sp)
/* 40A170 E011E7E0 03E00008 */ jr $ra
/* 40A174 E011E7E4 27BD00B0 */ addiu $sp, $sp, 0xb0
/* 40A178 E011E7E8 00000000 */ nop
/* 40A17C E011E7EC 00000000 */ nop

View File

@ -1,107 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel ice_pillar_main
/* 409990 E011E000 27BDFF88 */ addiu $sp, $sp, -0x78
/* 409994 E011E004 F7B60060 */ sdc1 $f22, 0x60($sp)
/* 409998 E011E008 4485B000 */ mtc1 $a1, $f22
/* 40999C E011E00C F7BA0070 */ sdc1 $f26, 0x70($sp)
/* 4099A0 E011E010 4486D000 */ mtc1 $a2, $f26
/* 4099A4 E011E014 F7B80068 */ sdc1 $f24, 0x68($sp)
/* 4099A8 E011E018 4487C000 */ mtc1 $a3, $f24
/* 4099AC E011E01C AFB3004C */ sw $s3, 0x4c($sp)
/* 4099B0 E011E020 0080982D */ daddu $s3, $a0, $zero
/* 4099B4 E011E024 F7B40058 */ sdc1 $f20, 0x58($sp)
/* 4099B8 E011E028 C7B40088 */ lwc1 $f20, 0x88($sp)
/* 4099BC E011E02C 27A40028 */ addiu $a0, $sp, 0x28
/* 4099C0 E011E030 AFB20048 */ sw $s2, 0x48($sp)
/* 4099C4 E011E034 8FB2008C */ lw $s2, 0x8c($sp)
/* 4099C8 E011E038 3C02E012 */ lui $v0, %hi(ice_pillar_init)
/* 4099CC E011E03C 2442E18C */ addiu $v0, $v0, %lo(ice_pillar_init)
/* 4099D0 E011E040 AFA20030 */ sw $v0, 0x30($sp)
/* 4099D4 E011E044 3C02E012 */ lui $v0, %hi(ice_pillar_update)
/* 4099D8 E011E048 2442E194 */ addiu $v0, $v0, %lo(ice_pillar_update)
/* 4099DC E011E04C AFA20034 */ sw $v0, 0x34($sp)
/* 4099E0 E011E050 3C02E012 */ lui $v0, %hi(ice_pillar_render)
/* 4099E4 E011E054 2442E530 */ addiu $v0, $v0, %lo(ice_pillar_render)
/* 4099E8 E011E058 AFA20038 */ sw $v0, 0x38($sp)
/* 4099EC E011E05C 24020081 */ addiu $v0, $zero, 0x81
/* 4099F0 E011E060 AFBF0050 */ sw $ra, 0x50($sp)
/* 4099F4 E011E064 AFB10044 */ sw $s1, 0x44($sp)
/* 4099F8 E011E068 AFB00040 */ sw $s0, 0x40($sp)
/* 4099FC E011E06C AFA00028 */ sw $zero, 0x28($sp)
/* 409A00 E011E070 AFA0003C */ sw $zero, 0x3c($sp)
/* 409A04 E011E074 0C080124 */ jal shim_create_effect_instance
/* 409A08 E011E078 AFA2002C */ sw $v0, 0x2c($sp)
/* 409A0C E011E07C 2404002C */ addiu $a0, $zero, 0x2c
/* 409A10 E011E080 24030001 */ addiu $v1, $zero, 1
/* 409A14 E011E084 0040882D */ daddu $s1, $v0, $zero
/* 409A18 E011E088 0C08012C */ jal shim_general_heap_malloc
/* 409A1C E011E08C AE230008 */ sw $v1, 8($s1)
/* 409A20 E011E090 0040802D */ daddu $s0, $v0, $zero
/* 409A24 E011E094 16000003 */ bnez $s0, .LE011E0A4
/* 409A28 E011E098 AE22000C */ sw $v0, 0xc($s1)
.LE011E09C:
/* 409A2C E011E09C 08047827 */ j .LE011E09C
/* 409A30 E011E0A0 00000000 */ nop
.LE011E0A4:
/* 409A34 E011E0A4 AE130000 */ sw $s3, ($s0)
/* 409A38 E011E0A8 1E400004 */ bgtz $s2, .LE011E0BC
/* 409A3C E011E0AC AE000014 */ sw $zero, 0x14($s0)
/* 409A40 E011E0B0 240203E8 */ addiu $v0, $zero, 0x3e8
/* 409A44 E011E0B4 08047830 */ j .LE011E0C0
/* 409A48 E011E0B8 AE020010 */ sw $v0, 0x10($s0)
.LE011E0BC:
/* 409A4C E011E0BC AE120010 */ sw $s2, 0x10($s0)
.LE011E0C0:
/* 409A50 E011E0C0 24040072 */ addiu $a0, $zero, 0x72
/* 409A54 E011E0C4 240300FF */ addiu $v1, $zero, 0xff
/* 409A58 E011E0C8 240200F0 */ addiu $v0, $zero, 0xf0
/* 409A5C E011E0CC A203001B */ sb $v1, 0x1b($s0)
/* 409A60 E011E0D0 E6160004 */ swc1 $f22, 4($s0)
/* 409A64 E011E0D4 E61A0008 */ swc1 $f26, 8($s0)
/* 409A68 E011E0D8 E618000C */ swc1 $f24, 0xc($s0)
/* 409A6C E011E0DC E6140020 */ swc1 $f20, 0x20($s0)
/* 409A70 E011E0E0 A2030018 */ sb $v1, 0x18($s0)
/* 409A74 E011E0E4 A2030019 */ sb $v1, 0x19($s0)
/* 409A78 E011E0E8 A203001A */ sb $v1, 0x1a($s0)
/* 409A7C E011E0EC A202001C */ sb $v0, 0x1c($s0)
/* 409A80 E011E0F0 A203001D */ sb $v1, 0x1d($s0)
/* 409A84 E011E0F4 A203001E */ sb $v1, 0x1e($s0)
/* 409A88 E011E0F8 A203001F */ sb $v1, 0x1f($s0)
/* 409A8C E011E0FC A2000025 */ sb $zero, 0x25($s0)
/* 409A90 E011E100 0C080150 */ jal shim_load_effect
/* 409A94 E011E104 A2000024 */ sb $zero, 0x24($s0)
/* 409A98 E011E108 24040001 */ addiu $a0, $zero, 1
/* 409A9C E011E10C 3C014120 */ lui $at, 0x4120
/* 409AA0 E011E110 44810000 */ mtc1 $at, $f0
/* 409AA4 E011E114 3C014200 */ lui $at, 0x4200
/* 409AA8 E011E118 44811000 */ mtc1 $at, $f2
/* 409AAC E011E11C 3C0141F0 */ lui $at, 0x41f0
/* 409AB0 E011E120 44812000 */ mtc1 $at, $f4
/* 409AB4 E011E124 4600D680 */ add.s $f26, $f26, $f0
/* 409AB8 E011E128 4405B000 */ mfc1 $a1, $f22
/* 409ABC E011E12C 4407C000 */ mfc1 $a3, $f24
/* 409AC0 E011E130 4406D000 */ mfc1 $a2, $f26
/* 409AC4 E011E134 24020004 */ addiu $v0, $zero, 4
/* 409AC8 E011E138 E7B40018 */ swc1 $f20, 0x18($sp)
/* 409ACC E011E13C AFA2001C */ sw $v0, 0x1c($sp)
/* 409AD0 E011E140 AFA00020 */ sw $zero, 0x20($sp)
/* 409AD4 E011E144 E7A20010 */ swc1 $f2, 0x10($sp)
/* 409AD8 E011E148 0C039000 */ jal misc_particles_main
/* 409ADC E011E14C E7A40014 */ swc1 $f4, 0x14($sp)
/* 409AE0 E011E150 2404006F */ addiu $a0, $zero, 0x6f
/* 409AE4 E011E154 0C080150 */ jal shim_load_effect
/* 409AE8 E011E158 AE020028 */ sw $v0, 0x28($s0)
/* 409AEC E011E15C 0220102D */ daddu $v0, $s1, $zero
/* 409AF0 E011E160 8FBF0050 */ lw $ra, 0x50($sp)
/* 409AF4 E011E164 8FB3004C */ lw $s3, 0x4c($sp)
/* 409AF8 E011E168 8FB20048 */ lw $s2, 0x48($sp)
/* 409AFC E011E16C 8FB10044 */ lw $s1, 0x44($sp)
/* 409B00 E011E170 8FB00040 */ lw $s0, 0x40($sp)
/* 409B04 E011E174 D7BA0070 */ ldc1 $f26, 0x70($sp)
/* 409B08 E011E178 D7B80068 */ ldc1 $f24, 0x68($sp)
/* 409B0C E011E17C D7B60060 */ ldc1 $f22, 0x60($sp)
/* 409B10 E011E180 D7B40058 */ ldc1 $f20, 0x58($sp)
/* 409B14 E011E184 03E00008 */ jr $ra
/* 409B18 E011E188 27BD0078 */ addiu $sp, $sp, 0x78

View File

@ -1,260 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_E011E810
.double 0.1
dlabel D_E011E818
.double 0.7
dlabel D_E011E820
.double 0.3
dlabel D_E011E828
.double 0.01
.section .text
glabel ice_pillar_update
/* 409B24 E011E194 27BDFFB8 */ addiu $sp, $sp, -0x48
/* 409B28 E011E198 AFB30024 */ sw $s3, 0x24($sp)
/* 409B2C E011E19C 0080982D */ daddu $s3, $a0, $zero
/* 409B30 E011E1A0 AFBF0028 */ sw $ra, 0x28($sp)
/* 409B34 E011E1A4 AFB20020 */ sw $s2, 0x20($sp)
/* 409B38 E011E1A8 AFB1001C */ sw $s1, 0x1c($sp)
/* 409B3C E011E1AC AFB00018 */ sw $s0, 0x18($sp)
/* 409B40 E011E1B0 F7B80040 */ sdc1 $f24, 0x40($sp)
/* 409B44 E011E1B4 F7B60038 */ sdc1 $f22, 0x38($sp)
/* 409B48 E011E1B8 F7B40030 */ sdc1 $f20, 0x30($sp)
/* 409B4C E011E1BC 8E630000 */ lw $v1, ($s3)
/* 409B50 E011E1C0 8E71000C */ lw $s1, 0xc($s3)
/* 409B54 E011E1C4 30620010 */ andi $v0, $v1, 0x10
/* 409B58 E011E1C8 10400005 */ beqz $v0, .LE011E1E0
/* 409B5C E011E1CC 2402FFEF */ addiu $v0, $zero, -0x11
/* 409B60 E011E1D0 00621024 */ and $v0, $v1, $v0
/* 409B64 E011E1D4 AE620000 */ sw $v0, ($s3)
/* 409B68 E011E1D8 24020010 */ addiu $v0, $zero, 0x10
/* 409B6C E011E1DC AE220010 */ sw $v0, 0x10($s1)
.LE011E1E0:
/* 409B70 E011E1E0 8E230010 */ lw $v1, 0x10($s1)
/* 409B74 E011E1E4 286203E8 */ slti $v0, $v1, 0x3e8
/* 409B78 E011E1E8 10400002 */ beqz $v0, .LE011E1F4
/* 409B7C E011E1EC 2462FFFF */ addiu $v0, $v1, -1
/* 409B80 E011E1F0 AE220010 */ sw $v0, 0x10($s1)
.LE011E1F4:
/* 409B84 E011E1F4 8E220014 */ lw $v0, 0x14($s1)
/* 409B88 E011E1F8 8E240010 */ lw $a0, 0x10($s1)
/* 409B8C E011E1FC 24430001 */ addiu $v1, $v0, 1
/* 409B90 E011E200 04810085 */ bgez $a0, .LE011E418
/* 409B94 E011E204 AE230014 */ sw $v1, 0x14($s1)
/* 409B98 E011E208 0C080150 */ jal shim_load_effect
/* 409B9C E011E20C 2404007A */ addiu $a0, $zero, 0x7a
/* 409BA0 E011E210 0000902D */ daddu $s2, $zero, $zero
/* 409BA4 E011E214 3C01E012 */ lui $at, %hi(D_E011E810)
/* 409BA8 E011E218 D438E810 */ ldc1 $f24, %lo(D_E011E810)($at)
.LE011E21C:
/* 409BAC E011E21C 0C080138 */ jal shim_rand_int
/* 409BB0 E011E220 24040014 */ addiu $a0, $zero, 0x14
/* 409BB4 E011E224 C6340004 */ lwc1 $f20, 4($s1)
/* 409BB8 E011E228 44820000 */ mtc1 $v0, $f0
/* 409BBC E011E22C 00000000 */ nop
/* 409BC0 E011E230 46800020 */ cvt.s.w $f0, $f0
/* 409BC4 E011E234 4600A500 */ add.s $f20, $f20, $f0
/* 409BC8 E011E238 3C014120 */ lui $at, 0x4120
/* 409BCC E011E23C 44810000 */ mtc1 $at, $f0
/* 409BD0 E011E240 24040028 */ addiu $a0, $zero, 0x28
/* 409BD4 E011E244 0C080138 */ jal shim_rand_int
/* 409BD8 E011E248 4600A501 */ sub.s $f20, $f20, $f0
/* 409BDC E011E24C C6220020 */ lwc1 $f2, 0x20($s1)
/* 409BE0 E011E250 44820000 */ mtc1 $v0, $f0
/* 409BE4 E011E254 00000000 */ nop
/* 409BE8 E011E258 46800020 */ cvt.s.w $f0, $f0
/* 409BEC E011E25C 46020002 */ mul.s $f0, $f0, $f2
/* 409BF0 E011E260 00000000 */ nop
/* 409BF4 E011E264 C6360008 */ lwc1 $f22, 8($s1)
/* 409BF8 E011E268 2404000A */ addiu $a0, $zero, 0xa
/* 409BFC E011E26C 0C080138 */ jal shim_rand_int
/* 409C00 E011E270 4600B580 */ add.s $f22, $f22, $f0
/* 409C04 E011E274 3C01E012 */ lui $at, %hi(D_E011E818)
/* 409C08 E011E278 D422E818 */ ldc1 $f2, %lo(D_E011E818)($at)
/* 409C0C E011E27C 44820000 */ mtc1 $v0, $f0
/* 409C10 E011E280 00000000 */ nop
/* 409C14 E011E284 46800021 */ cvt.d.w $f0, $f0
/* 409C18 E011E288 46220002 */ mul.d $f0, $f0, $f2
/* 409C1C E011E28C 00000000 */ nop
/* 409C20 E011E290 46380002 */ mul.d $f0, $f0, $f24
/* 409C24 E011E294 00000000 */ nop
/* 409C28 E011E298 001227C2 */ srl $a0, $s2, 0x1f
/* 409C2C E011E29C 02442021 */ addu $a0, $s2, $a0
/* 409C30 E011E2A0 3C01E012 */ lui $at, %hi(D_E011E820)
/* 409C34 E011E2A4 D422E820 */ ldc1 $f2, %lo(D_E011E820)($at)
/* 409C38 E011E2A8 C6240020 */ lwc1 $f4, 0x20($s1)
/* 409C3C E011E2AC 46220000 */ add.d $f0, $f0, $f2
/* 409C40 E011E2B0 00042043 */ sra $a0, $a0, 1
/* 409C44 E011E2B4 46002121 */ cvt.d.s $f4, $f4
/* 409C48 E011E2B8 46202102 */ mul.d $f4, $f4, $f0
/* 409C4C E011E2BC 00000000 */ nop
/* 409C50 E011E2C0 00042040 */ sll $a0, $a0, 1
/* 409C54 E011E2C4 02442023 */ subu $a0, $s2, $a0
/* 409C58 E011E2C8 24840002 */ addiu $a0, $a0, 2
/* 409C5C E011E2CC 4405A000 */ mfc1 $a1, $f20
/* 409C60 E011E2D0 C622000C */ lwc1 $f2, 0xc($s1)
/* 409C64 E011E2D4 3C014040 */ lui $at, 0x4040
/* 409C68 E011E2D8 44810000 */ mtc1 $at, $f0
/* 409C6C E011E2DC 4406B000 */ mfc1 $a2, $f22
/* 409C70 E011E2E0 46001080 */ add.s $f2, $f2, $f0
/* 409C74 E011E2E4 2642001E */ addiu $v0, $s2, 0x1e
/* 409C78 E011E2E8 AFA20014 */ sw $v0, 0x14($sp)
/* 409C7C E011E2EC 44071000 */ mfc1 $a3, $f2
/* 409C80 E011E2F0 46202120 */ cvt.s.d $f4, $f4
/* 409C84 E011E2F4 0C044000 */ jal ice_shard_main
/* 409C88 E011E2F8 E7A40010 */ swc1 $f4, 0x10($sp)
/* 409C8C E011E2FC 2404000A */ addiu $a0, $zero, 0xa
/* 409C90 E011E300 0C080138 */ jal shim_rand_int
/* 409C94 E011E304 0040802D */ daddu $s0, $v0, $zero
/* 409C98 E011E308 44820000 */ mtc1 $v0, $f0
/* 409C9C E011E30C 00000000 */ nop
/* 409CA0 E011E310 46800021 */ cvt.d.w $f0, $f0
/* 409CA4 E011E314 46380002 */ mul.d $f0, $f0, $f24
/* 409CA8 E011E318 00000000 */ nop
/* 409CAC E011E31C 2404001E */ addiu $a0, $zero, 0x1e
/* 409CB0 E011E320 8E02000C */ lw $v0, 0xc($s0)
/* 409CB4 E011E324 46200020 */ cvt.s.d $f0, $f0
/* 409CB8 E011E328 0C080138 */ jal shim_rand_int
/* 409CBC E011E32C E4400044 */ swc1 $f0, 0x44($v0)
/* 409CC0 E011E330 3C01E012 */ lui $at, %hi(D_E011E828)
/* 409CC4 E011E334 D422E828 */ ldc1 $f2, %lo(D_E011E828)($at)
/* 409CC8 E011E338 44820000 */ mtc1 $v0, $f0
/* 409CCC E011E33C 00000000 */ nop
/* 409CD0 E011E340 46800021 */ cvt.d.w $f0, $f0
/* 409CD4 E011E344 46220002 */ mul.d $f0, $f0, $f2
/* 409CD8 E011E348 00000000 */ nop
/* 409CDC E011E34C 46380000 */ add.d $f0, $f0, $f24
/* 409CE0 E011E350 24040167 */ addiu $a0, $zero, 0x167
/* 409CE4 E011E354 8E02000C */ lw $v0, 0xc($s0)
/* 409CE8 E011E358 46200020 */ cvt.s.d $f0, $f0
/* 409CEC E011E35C 0C080138 */ jal shim_rand_int
/* 409CF0 E011E360 E4400048 */ swc1 $f0, 0x48($v0)
/* 409CF4 E011E364 24040014 */ addiu $a0, $zero, 0x14
/* 409CF8 E011E368 8E03000C */ lw $v1, 0xc($s0)
/* 409CFC E011E36C 44820000 */ mtc1 $v0, $f0
/* 409D00 E011E370 00000000 */ nop
/* 409D04 E011E374 46800020 */ cvt.s.w $f0, $f0
/* 409D08 E011E378 0C080138 */ jal shim_rand_int
/* 409D0C E011E37C E460003C */ swc1 $f0, 0x3c($v1)
/* 409D10 E011E380 2404000A */ addiu $a0, $zero, 0xa
/* 409D14 E011E384 8E03000C */ lw $v1, 0xc($s0)
/* 409D18 E011E388 44820000 */ mtc1 $v0, $f0
/* 409D1C E011E38C 00000000 */ nop
/* 409D20 E011E390 46800020 */ cvt.s.w $f0, $f0
/* 409D24 E011E394 0C080138 */ jal shim_rand_int
/* 409D28 E011E398 E4600040 */ swc1 $f0, 0x40($v1)
/* 409D2C E011E39C 2404000A */ addiu $a0, $zero, 0xa
/* 409D30 E011E3A0 2442FFFB */ addiu $v0, $v0, -5
/* 409D34 E011E3A4 8E03000C */ lw $v1, 0xc($s0)
/* 409D38 E011E3A8 44820000 */ mtc1 $v0, $f0
/* 409D3C E011E3AC 00000000 */ nop
/* 409D40 E011E3B0 46800020 */ cvt.s.w $f0, $f0
/* 409D44 E011E3B4 0C080138 */ jal shim_rand_int
/* 409D48 E011E3B8 E460004C */ swc1 $f0, 0x4c($v1)
/* 409D4C E011E3BC 2442FFFB */ addiu $v0, $v0, -5
/* 409D50 E011E3C0 8E03000C */ lw $v1, 0xc($s0)
/* 409D54 E011E3C4 44820000 */ mtc1 $v0, $f0
/* 409D58 E011E3C8 00000000 */ nop
/* 409D5C E011E3CC 46800020 */ cvt.s.w $f0, $f0
/* 409D60 E011E3D0 E4600050 */ swc1 $f0, 0x50($v1)
/* 409D64 E011E3D4 8E02000C */ lw $v0, 0xc($s0)
/* 409D68 E011E3D8 3C01BDCC */ lui $at, 0xbdcc
/* 409D6C E011E3DC 3421CCCD */ ori $at, $at, 0xcccd
/* 409D70 E011E3E0 44810000 */ mtc1 $at, $f0
/* 409D74 E011E3E4 AC400054 */ sw $zero, 0x54($v0)
/* 409D78 E011E3E8 8E02000C */ lw $v0, 0xc($s0)
/* 409D7C E011E3EC 26520001 */ addiu $s2, $s2, 1
/* 409D80 E011E3F0 E4400058 */ swc1 $f0, 0x58($v0)
/* 409D84 E011E3F4 2A420014 */ slti $v0, $s2, 0x14
/* 409D88 E011E3F8 1440FF88 */ bnez $v0, .LE011E21C
/* 409D8C E011E3FC 00000000 */ nop
/* 409D90 E011E400 0C080128 */ jal shim_remove_effect
/* 409D94 E011E404 8E240028 */ lw $a0, 0x28($s1)
/* 409D98 E011E408 0C080128 */ jal shim_remove_effect
/* 409D9C E011E40C 0260202D */ daddu $a0, $s3, $zero
/* 409DA0 E011E410 08047942 */ j .LE011E508
/* 409DA4 E011E414 00000000 */ nop
.LE011E418:
/* 409DA8 E011E418 0080802D */ daddu $s0, $a0, $zero
/* 409DAC E011E41C 92220025 */ lbu $v0, 0x25($s1)
/* 409DB0 E011E420 2442FFFF */ addiu $v0, $v0, -1
/* 409DB4 E011E424 A2220025 */ sb $v0, 0x25($s1)
/* 409DB8 E011E428 00021600 */ sll $v0, $v0, 0x18
/* 409DBC E011E42C 04410005 */ bgez $v0, .LE011E444
/* 409DC0 E011E430 0060902D */ daddu $s2, $v1, $zero
/* 409DC4 E011E434 0C080138 */ jal shim_rand_int
/* 409DC8 E011E438 2404003C */ addiu $a0, $zero, 0x3c
/* 409DCC E011E43C 24420008 */ addiu $v0, $v0, 8
/* 409DD0 E011E440 A2220025 */ sb $v0, 0x25($s1)
.LE011E444:
/* 409DD4 E011E444 92220025 */ lbu $v0, 0x25($s1)
/* 409DD8 E011E448 00022600 */ sll $a0, $v0, 0x18
/* 409DDC E011E44C 00041E03 */ sra $v1, $a0, 0x18
/* 409DE0 E011E450 28620008 */ slti $v0, $v1, 8
/* 409DE4 E011E454 10400005 */ beqz $v0, .LE011E46C
/* 409DE8 E011E458 000417C2 */ srl $v0, $a0, 0x1f
/* 409DEC E011E45C 00621021 */ addu $v0, $v1, $v0
/* 409DF0 E011E460 00021043 */ sra $v0, $v0, 1
/* 409DF4 E011E464 0804791C */ j .LE011E470
/* 409DF8 E011E468 A2220024 */ sb $v0, 0x24($s1)
.LE011E46C:
/* 409DFC E011E46C A2200024 */ sb $zero, 0x24($s1)
.LE011E470:
/* 409E00 E011E470 2A020011 */ slti $v0, $s0, 0x11
/* 409E04 E011E474 14400015 */ bnez $v0, .LE011E4CC
/* 409E08 E011E478 3242000F */ andi $v0, $s2, 0xf
/* 409E0C E011E47C 14400013 */ bnez $v0, .LE011E4CC
/* 409E10 E011E480 00000000 */ nop
/* 409E14 E011E484 0C080150 */ jal shim_load_effect
/* 409E18 E011E488 2404006F */ addiu $a0, $zero, 0x6f
/* 409E1C E011E48C C6220020 */ lwc1 $f2, 0x20($s1)
/* 409E20 E011E490 3C014220 */ lui $at, 0x4220
/* 409E24 E011E494 44810000 */ mtc1 $at, $f0
/* 409E28 E011E498 00000000 */ nop
/* 409E2C E011E49C 46001002 */ mul.s $f0, $f2, $f0
/* 409E30 E011E4A0 00000000 */ nop
/* 409E34 E011E4A4 C6240008 */ lwc1 $f4, 8($s1)
/* 409E38 E011E4A8 2402001E */ addiu $v0, $zero, 0x1e
/* 409E3C E011E4AC AFA20014 */ sw $v0, 0x14($sp)
/* 409E40 E011E4B0 E7A20010 */ swc1 $f2, 0x10($sp)
/* 409E44 E011E4B4 46002100 */ add.s $f4, $f4, $f0
/* 409E48 E011E4B8 8E250004 */ lw $a1, 4($s1)
/* 409E4C E011E4BC 8E27000C */ lw $a3, 0xc($s1)
/* 409E50 E011E4C0 44062000 */ mfc1 $a2, $f4
/* 409E54 E011E4C4 0C037800 */ jal cold_breath_main
/* 409E58 E011E4C8 24040002 */ addiu $a0, $zero, 2
.LE011E4CC:
/* 409E5C E011E4CC 8E220028 */ lw $v0, 0x28($s1)
/* 409E60 E011E4D0 C6200004 */ lwc1 $f0, 4($s1)
/* 409E64 E011E4D4 3C014120 */ lui $at, 0x4120
/* 409E68 E011E4D8 44811000 */ mtc1 $at, $f2
/* 409E6C E011E4DC 8C42000C */ lw $v0, 0xc($v0)
/* 409E70 E011E4E0 E4400004 */ swc1 $f0, 4($v0)
/* 409E74 E011E4E4 C6200008 */ lwc1 $f0, 8($s1)
/* 409E78 E011E4E8 8E220028 */ lw $v0, 0x28($s1)
/* 409E7C E011E4EC 46020000 */ add.s $f0, $f0, $f2
/* 409E80 E011E4F0 8C42000C */ lw $v0, 0xc($v0)
/* 409E84 E011E4F4 E4400008 */ swc1 $f0, 8($v0)
/* 409E88 E011E4F8 8E220028 */ lw $v0, 0x28($s1)
/* 409E8C E011E4FC C620000C */ lwc1 $f0, 0xc($s1)
/* 409E90 E011E500 8C42000C */ lw $v0, 0xc($v0)
/* 409E94 E011E504 E440000C */ swc1 $f0, 0xc($v0)
.LE011E508:
/* 409E98 E011E508 8FBF0028 */ lw $ra, 0x28($sp)
/* 409E9C E011E50C 8FB30024 */ lw $s3, 0x24($sp)
/* 409EA0 E011E510 8FB20020 */ lw $s2, 0x20($sp)
/* 409EA4 E011E514 8FB1001C */ lw $s1, 0x1c($sp)
/* 409EA8 E011E518 8FB00018 */ lw $s0, 0x18($sp)
/* 409EAC E011E51C D7B80040 */ ldc1 $f24, 0x40($sp)
/* 409EB0 E011E520 D7B60038 */ ldc1 $f22, 0x38($sp)
/* 409EB4 E011E524 D7B40030 */ ldc1 $f20, 0x30($sp)
/* 409EB8 E011E528 03E00008 */ jr $ra
/* 409EBC E011E52C 27BD0048 */ addiu $sp, $sp, 0x48

View File

@ -1,321 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel radial_shimmer_appendGfx
/* 3667A0 E0066770 27BDFF28 */ addiu $sp, $sp, -0xd8
/* 3667A4 E0066774 AFB700C4 */ sw $s7, 0xc4($sp)
/* 3667A8 E0066778 0080B82D */ daddu $s7, $a0, $zero
/* 3667AC E006677C 3C06DB06 */ lui $a2, 0xdb06
/* 3667B0 E0066780 34C60024 */ ori $a2, $a2, 0x24
/* 3667B4 E0066784 27A40020 */ addiu $a0, $sp, 0x20
/* 3667B8 E0066788 AFB200B0 */ sw $s2, 0xb0($sp)
/* 3667BC E006678C 3C120001 */ lui $s2, 1
/* 3667C0 E0066790 36521630 */ ori $s2, $s2, 0x1630
/* 3667C4 E0066794 AFB600C0 */ sw $s6, 0xc0($sp)
/* 3667C8 E0066798 3C16800A */ lui $s6, %hi(gMasterGfxPos)
/* 3667CC E006679C 26D6A66C */ addiu $s6, $s6, %lo(gMasterGfxPos)
/* 3667D0 E00667A0 AFBF00CC */ sw $ra, 0xcc($sp)
/* 3667D4 E00667A4 AFBE00C8 */ sw $fp, 0xc8($sp)
/* 3667D8 E00667A8 AFB500BC */ sw $s5, 0xbc($sp)
/* 3667DC E00667AC AFB400B8 */ sw $s4, 0xb8($sp)
/* 3667E0 E00667B0 AFB300B4 */ sw $s3, 0xb4($sp)
/* 3667E4 E00667B4 AFB100AC */ sw $s1, 0xac($sp)
/* 3667E8 E00667B8 AFB000A8 */ sw $s0, 0xa8($sp)
/* 3667EC E00667BC F7B400D0 */ sdc1 $f20, 0xd0($sp)
/* 3667F0 E00667C0 8EC50000 */ lw $a1, ($s6)
/* 3667F4 E00667C4 8EF4000C */ lw $s4, 0xc($s7)
/* 3667F8 E00667C8 00A0182D */ daddu $v1, $a1, $zero
/* 3667FC E00667CC 8E950000 */ lw $s5, ($s4)
/* 366800 E00667D0 24A50008 */ addiu $a1, $a1, 8
/* 366804 E00667D4 AEC50000 */ sw $a1, ($s6)
/* 366808 E00667D8 00151080 */ sll $v0, $s5, 2
/* 36680C E00667DC 3C13E006 */ lui $s3, %hi(D_E0066C8C)
/* 366810 E00667E0 02629821 */ addu $s3, $s3, $v0
/* 366814 E00667E4 8E736C8C */ lw $s3, %lo(D_E0066C8C)($s3)
/* 366818 E00667E8 3C1EE006 */ lui $fp, %hi(D_E0066C50)
/* 36681C E00667EC 03C2F021 */ addu $fp, $fp, $v0
/* 366820 E00667F0 8FDE6C50 */ lw $fp, %lo(D_E0066C50)($fp)
/* 366824 E00667F4 3C02E700 */ lui $v0, 0xe700
/* 366828 E00667F8 AC620000 */ sw $v0, ($v1)
/* 36682C E00667FC AC600004 */ sw $zero, 4($v1)
/* 366830 E0066800 ACA60000 */ sw $a2, ($a1)
/* 366834 E0066804 8EE30010 */ lw $v1, 0x10($s7)
/* 366838 E0066808 24A20008 */ addiu $v0, $a1, 8
/* 36683C E006680C AEC20000 */ sw $v0, ($s6)
/* 366840 E0066810 8C62001C */ lw $v0, 0x1c($v1)
/* 366844 E0066814 3C038000 */ lui $v1, 0x8000
/* 366848 E0066818 00431021 */ addu $v0, $v0, $v1
/* 36684C E006681C 3C03800B */ lui $v1, %hi(gCameras)
/* 366850 E0066820 24631D80 */ addiu $v1, $v1, %lo(gCameras)
/* 366854 E0066824 ACA20004 */ sw $v0, 4($a1)
/* 366858 E0066828 8E850010 */ lw $a1, 0x10($s4)
/* 36685C E006682C 8E860014 */ lw $a2, 0x14($s4)
/* 366860 E0066830 3C028007 */ lui $v0, %hi(gCurrentCameraID)
/* 366864 E0066834 8C427410 */ lw $v0, %lo(gCurrentCameraID)($v0)
/* 366868 E0066838 8E870018 */ lw $a3, 0x18($s4)
/* 36686C E006683C 00028080 */ sll $s0, $v0, 2
/* 366870 E0066840 02028021 */ addu $s0, $s0, $v0
/* 366874 E0066844 00108080 */ sll $s0, $s0, 2
/* 366878 E0066848 02028023 */ subu $s0, $s0, $v0
/* 36687C E006684C 001010C0 */ sll $v0, $s0, 3
/* 366880 E0066850 02028021 */ addu $s0, $s0, $v0
/* 366884 E0066854 001080C0 */ sll $s0, $s0, 3
/* 366888 E0066858 0C080108 */ jal shim_guTranslateF
/* 36688C E006685C 02038021 */ addu $s0, $s0, $v1
/* 366890 E0066860 27B10060 */ addiu $s1, $sp, 0x60
/* 366894 E0066864 0220202D */ daddu $a0, $s1, $zero
/* 366898 E0066868 3C013F80 */ lui $at, 0x3f80
/* 36689C E006686C 4481A000 */ mtc1 $at, $f20
/* 3668A0 E0066870 8E85001C */ lw $a1, 0x1c($s4)
/* 3668A4 E0066874 4407A000 */ mfc1 $a3, $f20
/* 3668A8 E0066878 0C080110 */ jal shim_guScaleF
/* 3668AC E006687C 00A0302D */ daddu $a2, $a1, $zero
/* 3668B0 E0066880 0220202D */ daddu $a0, $s1, $zero
/* 3668B4 E0066884 27A50020 */ addiu $a1, $sp, 0x20
/* 3668B8 E0066888 0C080114 */ jal shim_guMtxCatF
/* 3668BC E006688C 00A0302D */ daddu $a2, $a1, $zero
/* 3668C0 E0066890 8602000A */ lh $v0, 0xa($s0)
/* 3668C4 E0066894 8603000C */ lh $v1, 0xc($s0)
/* 3668C8 E0066898 3C014080 */ lui $at, 0x4080
/* 3668CC E006689C 44810000 */ mtc1 $at, $f0
/* 3668D0 E00668A0 3C014680 */ lui $at, 0x4680
/* 3668D4 E00668A4 44811000 */ mtc1 $at, $f2
/* 3668D8 E00668A8 0220202D */ daddu $a0, $s1, $zero
/* 3668DC E00668AC E7B40018 */ swc1 $f20, 0x18($sp)
/* 3668E0 E00668B0 E7A20014 */ swc1 $f2, 0x14($sp)
/* 3668E4 E00668B4 44821000 */ mtc1 $v0, $f2
/* 3668E8 E00668B8 00000000 */ nop
/* 3668EC E00668BC 468010A0 */ cvt.s.w $f2, $f2
/* 3668F0 E00668C0 E7A00010 */ swc1 $f0, 0x10($sp)
/* 3668F4 E00668C4 44830000 */ mtc1 $v1, $f0
/* 3668F8 E00668C8 00000000 */ nop
/* 3668FC E00668CC 46800020 */ cvt.s.w $f0, $f0
/* 366900 E00668D0 46001083 */ div.s $f2, $f2, $f0
/* 366904 E00668D4 8E860060 */ lw $a2, 0x60($s4)
/* 366908 E00668D8 44071000 */ mfc1 $a3, $f2
/* 36690C E00668DC 0C080160 */ jal shim_guPerspectiveF
/* 366910 E00668E0 27A500A0 */ addiu $a1, $sp, 0xa0
/* 366914 E00668E4 0220202D */ daddu $a0, $s1, $zero
/* 366918 E00668E8 27A50020 */ addiu $a1, $sp, 0x20
/* 36691C E00668EC 0C080114 */ jal shim_guMtxCatF
/* 366920 E00668F0 00A0302D */ daddu $a2, $a1, $zero
/* 366924 E00668F4 27A40020 */ addiu $a0, $sp, 0x20
/* 366928 E00668F8 3C108007 */ lui $s0, %hi(gMatrixListPos)
/* 36692C E00668FC 261041F0 */ addiu $s0, $s0, %lo(gMatrixListPos)
/* 366930 E0066900 3C11800A */ lui $s1, %hi(gDisplayContext)
/* 366934 E0066904 2631A674 */ addiu $s1, $s1, %lo(gDisplayContext)
/* 366938 E0066908 96050000 */ lhu $a1, ($s0)
/* 36693C E006690C 8E220000 */ lw $v0, ($s1)
/* 366940 E0066910 00052980 */ sll $a1, $a1, 6
/* 366944 E0066914 00B22821 */ addu $a1, $a1, $s2
/* 366948 E0066918 0C080118 */ jal shim_guMtxF2L
/* 36694C E006691C 00452821 */ addu $a1, $v0, $a1
/* 366950 E0066920 3C02DA38 */ lui $v0, 0xda38
/* 366954 E0066924 34420007 */ ori $v0, $v0, 7
/* 366958 E0066928 27A40020 */ addiu $a0, $sp, 0x20
/* 36695C E006692C 44800000 */ mtc1 $zero, $f0
/* 366960 E0066930 8EC90000 */ lw $t1, ($s6)
/* 366964 E0066934 96080000 */ lhu $t0, ($s0)
/* 366968 E0066938 0120382D */ daddu $a3, $t1, $zero
/* 36696C E006693C ACE20000 */ sw $v0, ($a3)
/* 366970 E0066940 3102FFFF */ andi $v0, $t0, 0xffff
/* 366974 E0066944 00021180 */ sll $v0, $v0, 6
/* 366978 E0066948 00521021 */ addu $v0, $v0, $s2
/* 36697C E006694C 25290008 */ addiu $t1, $t1, 8
/* 366980 E0066950 25080001 */ addiu $t0, $t0, 1
/* 366984 E0066954 8E230000 */ lw $v1, ($s1)
/* 366988 E0066958 44050000 */ mfc1 $a1, $f0
/* 36698C E006695C 00621821 */ addu $v1, $v1, $v0
/* 366990 E0066960 ACE30004 */ sw $v1, 4($a3)
/* 366994 E0066964 8E870064 */ lw $a3, 0x64($s4)
/* 366998 E0066968 00A0302D */ daddu $a2, $a1, $zero
/* 36699C E006696C AEC90000 */ sw $t1, ($s6)
/* 3669A0 E0066970 0C080108 */ jal shim_guTranslateF
/* 3669A4 E0066974 A6080000 */ sh $t0, ($s0)
/* 3669A8 E0066978 27A40020 */ addiu $a0, $sp, 0x20
/* 3669AC E006697C 96050000 */ lhu $a1, ($s0)
/* 3669B0 E0066980 8E220000 */ lw $v0, ($s1)
/* 3669B4 E0066984 00052980 */ sll $a1, $a1, 6
/* 3669B8 E0066988 00B22821 */ addu $a1, $a1, $s2
/* 3669BC E006698C 0C080118 */ jal shim_guMtxF2L
/* 3669C0 E0066990 00452821 */ addu $a1, $v0, $a1
/* 3669C4 E0066994 3C03DA38 */ lui $v1, 0xda38
/* 3669C8 E0066998 34630002 */ ori $v1, $v1, 2
/* 3669CC E006699C 0000602D */ daddu $t4, $zero, $zero
/* 3669D0 E00669A0 8EC50000 */ lw $a1, ($s6)
/* 3669D4 E00669A4 96020000 */ lhu $v0, ($s0)
/* 3669D8 E00669A8 00A0202D */ daddu $a0, $a1, $zero
/* 3669DC E00669AC 24A50008 */ addiu $a1, $a1, 8
/* 3669E0 E00669B0 AEC50000 */ sw $a1, ($s6)
/* 3669E4 E00669B4 AC830000 */ sw $v1, ($a0)
/* 3669E8 E00669B8 24430001 */ addiu $v1, $v0, 1
/* 3669EC E00669BC 3042FFFF */ andi $v0, $v0, 0xffff
/* 3669F0 E00669C0 00021180 */ sll $v0, $v0, 6
/* 3669F4 E00669C4 A6030000 */ sh $v1, ($s0)
/* 3669F8 E00669C8 8E230000 */ lw $v1, ($s1)
/* 3669FC E00669CC 00521021 */ addu $v0, $v0, $s2
/* 366A00 E00669D0 00621821 */ addu $v1, $v1, $v0
/* 366A04 E00669D4 24A20008 */ addiu $v0, $a1, 8
/* 366A08 E00669D8 AC830004 */ sw $v1, 4($a0)
/* 366A0C E00669DC AEC20000 */ sw $v0, ($s6)
/* 366A10 E00669E0 8E870024 */ lw $a3, 0x24($s4)
/* 366A14 E00669E4 3C02FB00 */ lui $v0, 0xfb00
/* 366A18 E00669E8 ACA20000 */ sw $v0, ($a1)
/* 366A1C E00669EC 9282006B */ lbu $v0, 0x6b($s4)
/* 366A20 E00669F0 9284006C */ lbu $a0, 0x6c($s4)
/* 366A24 E00669F4 9286006D */ lbu $a2, 0x6d($s4)
/* 366A28 E00669F8 3C03DE00 */ lui $v1, 0xde00
/* 366A2C E00669FC ACA30008 */ sw $v1, 8($a1)
/* 366A30 E0066A00 ACB3000C */ sw $s3, 0xc($a1)
/* 366A34 E0066A04 00021600 */ sll $v0, $v0, 0x18
/* 366A38 E0066A08 00042400 */ sll $a0, $a0, 0x10
/* 366A3C E0066A0C 00441025 */ or $v0, $v0, $a0
/* 366A40 E0066A10 00063200 */ sll $a2, $a2, 8
/* 366A44 E0066A14 00461025 */ or $v0, $v0, $a2
/* 366A48 E0066A18 3442007F */ ori $v0, $v0, 0x7f
/* 366A4C E0066A1C ACA20004 */ sw $v0, 4($a1)
/* 366A50 E0066A20 8EE20008 */ lw $v0, 8($s7)
/* 366A54 E0066A24 24A50010 */ addiu $a1, $a1, 0x10
/* 366A58 E0066A28 1840005E */ blez $v0, .LE0066BA4
/* 366A5C E0066A2C AEC50000 */ sw $a1, ($s6)
/* 366A60 E0066A30 02C0582D */ daddu $t3, $s6, $zero
/* 366A64 E0066A34 3C16FA00 */ lui $s6, 0xfa00
/* 366A68 E0066A38 30F000FF */ andi $s0, $a3, 0xff
/* 366A6C E0066A3C 24130008 */ addiu $s3, $zero, 8
/* 366A70 E0066A40 2AAF0009 */ slti $t7, $s5, 9
/* 366A74 E0066A44 2412000B */ addiu $s2, $zero, 0xb
/* 366A78 E0066A48 2AAE0002 */ slti $t6, $s5, 2
/* 366A7C E0066A4C 3C0DF200 */ lui $t5, 0xf200
/* 366A80 E0066A50 3C110100 */ lui $s1, 0x100
/* 366A84 E0066A54 268A0048 */ addiu $t2, $s4, 0x48
.LE0066A58:
/* 366A88 E0066A58 8D620000 */ lw $v0, ($t3)
/* 366A8C E0066A5C 0040282D */ daddu $a1, $v0, $zero
/* 366A90 E0066A60 24420008 */ addiu $v0, $v0, 8
/* 366A94 E0066A64 AD620000 */ sw $v0, ($t3)
/* 366A98 E0066A68 ACB60000 */ sw $s6, ($a1)
/* 366A9C E0066A6C 91420020 */ lbu $v0, 0x20($t2)
/* 366AA0 E0066A70 91440021 */ lbu $a0, 0x21($t2)
/* 366AA4 E0066A74 91430022 */ lbu $v1, 0x22($t2)
/* 366AA8 E0066A78 00021600 */ sll $v0, $v0, 0x18
/* 366AAC E0066A7C 00042400 */ sll $a0, $a0, 0x10
/* 366AB0 E0066A80 00441025 */ or $v0, $v0, $a0
/* 366AB4 E0066A84 00031A00 */ sll $v1, $v1, 8
/* 366AB8 E0066A88 00431025 */ or $v0, $v0, $v1
/* 366ABC E0066A8C 00501025 */ or $v0, $v0, $s0
/* 366AC0 E0066A90 12B30007 */ beq $s5, $s3, .LE0066AB0
/* 366AC4 E0066A94 ACA20004 */ sw $v0, 4($a1)
/* 366AC8 E0066A98 15E00008 */ bnez $t7, .LE0066ABC
/* 366ACC E0066A9C 2409003F */ addiu $t1, $zero, 0x3f
/* 366AD0 E0066AA0 12B20007 */ beq $s5, $s2, .LE0066AC0
/* 366AD4 E0066AA4 240700FF */ addiu $a3, $zero, 0xff
/* 366AD8 E0066AA8 08019AB0 */ j .LE0066AC0
/* 366ADC E0066AAC 240701FF */ addiu $a3, $zero, 0x1ff
.LE0066AB0:
/* 366AE0 E0066AB0 2409003F */ addiu $t1, $zero, 0x3f
/* 366AE4 E0066AB4 08019AB0 */ j .LE0066AC0
/* 366AE8 E0066AB8 2407007F */ addiu $a3, $zero, 0x7f
.LE0066ABC:
/* 366AEC E0066ABC 240701FF */ addiu $a3, $zero, 0x1ff
.LE0066AC0:
/* 366AF0 E0066AC0 258C0001 */ addiu $t4, $t4, 1
/* 366AF4 E0066AC4 C540FFE8 */ lwc1 $f0, -0x18($t2)
/* 366AF8 E0066AC8 C542FFF8 */ lwc1 $f2, -8($t2)
/* 366AFC E0066ACC C544FFF0 */ lwc1 $f4, -0x10($t2)
/* 366B00 E0066AD0 C5460000 */ lwc1 $f6, ($t2)
/* 366B04 E0066AD4 254A0070 */ addiu $t2, $t2, 0x70
/* 366B08 E0066AD8 00094880 */ sll $t1, $t1, 2
/* 366B0C E0066ADC 8D660000 */ lw $a2, ($t3)
/* 366B10 E0066AE0 00073880 */ sll $a3, $a3, 2
/* 366B14 E0066AE4 00C0402D */ daddu $t0, $a2, $zero
/* 366B18 E0066AE8 24C60008 */ addiu $a2, $a2, 8
/* 366B1C E0066AEC 4600020D */ trunc.w.s $f8, $f0
/* 366B20 E0066AF0 44044000 */ mfc1 $a0, $f8
/* 366B24 E0066AF4 4600120D */ trunc.w.s $f8, $f2
/* 366B28 E0066AF8 44054000 */ mfc1 $a1, $f8
/* 366B2C E0066AFC 30830FFF */ andi $v1, $a0, 0xfff
/* 366B30 E0066B00 00031B00 */ sll $v1, $v1, 0xc
/* 366B34 E0066B04 30A20FFF */ andi $v0, $a1, 0xfff
/* 366B38 E0066B08 004D1025 */ or $v0, $v0, $t5
/* 366B3C E0066B0C 00621825 */ or $v1, $v1, $v0
/* 366B40 E0066B10 00892021 */ addu $a0, $a0, $t1
/* 366B44 E0066B14 30840FFF */ andi $a0, $a0, 0xfff
/* 366B48 E0066B18 00042300 */ sll $a0, $a0, 0xc
/* 366B4C E0066B1C 00A72821 */ addu $a1, $a1, $a3
/* 366B50 E0066B20 30A50FFF */ andi $a1, $a1, 0xfff
/* 366B54 E0066B24 00852025 */ or $a0, $a0, $a1
/* 366B58 E0066B28 24C20008 */ addiu $v0, $a2, 8
/* 366B5C E0066B2C AD660000 */ sw $a2, ($t3)
/* 366B60 E0066B30 AD040004 */ sw $a0, 4($t0)
/* 366B64 E0066B34 4600220D */ trunc.w.s $f8, $f4
/* 366B68 E0066B38 44044000 */ mfc1 $a0, $f8
/* 366B6C E0066B3C 4600320D */ trunc.w.s $f8, $f6
/* 366B70 E0066B40 44054000 */ mfc1 $a1, $f8
/* 366B74 E0066B44 AD030000 */ sw $v1, ($t0)
/* 366B78 E0066B48 30830FFF */ andi $v1, $a0, 0xfff
/* 366B7C E0066B4C 00031B00 */ sll $v1, $v1, 0xc
/* 366B80 E0066B50 AD620000 */ sw $v0, ($t3)
/* 366B84 E0066B54 30A20FFF */ andi $v0, $a1, 0xfff
/* 366B88 E0066B58 004D1025 */ or $v0, $v0, $t5
/* 366B8C E0066B5C 00621825 */ or $v1, $v1, $v0
/* 366B90 E0066B60 00892021 */ addu $a0, $a0, $t1
/* 366B94 E0066B64 30840FFF */ andi $a0, $a0, 0xfff
/* 366B98 E0066B68 00042300 */ sll $a0, $a0, 0xc
/* 366B9C E0066B6C 00A72821 */ addu $a1, $a1, $a3
/* 366BA0 E0066B70 30A50FFF */ andi $a1, $a1, 0xfff
/* 366BA4 E0066B74 00B12825 */ or $a1, $a1, $s1
/* 366BA8 E0066B78 00852025 */ or $a0, $a0, $a1
/* 366BAC E0066B7C 3C02DE00 */ lui $v0, 0xde00
/* 366BB0 E0066B80 ACC30000 */ sw $v1, ($a2)
/* 366BB4 E0066B84 ACC40004 */ sw $a0, 4($a2)
/* 366BB8 E0066B88 ACC20008 */ sw $v0, 8($a2)
/* 366BBC E0066B8C ACDE000C */ sw $fp, 0xc($a2)
/* 366BC0 E0066B90 8EE20008 */ lw $v0, 8($s7)
/* 366BC4 E0066B94 24C60010 */ addiu $a2, $a2, 0x10
/* 366BC8 E0066B98 0182102A */ slt $v0, $t4, $v0
/* 366BCC E0066B9C 1440FFAE */ bnez $v0, .LE0066A58
/* 366BD0 E0066BA0 AD660000 */ sw $a2, ($t3)
.LE0066BA4:
/* 366BD4 E0066BA4 3C02D838 */ lui $v0, 0xd838
/* 366BD8 E0066BA8 34420002 */ ori $v0, $v0, 2
/* 366BDC E0066BAC 3C05800A */ lui $a1, %hi(gMasterGfxPos)
/* 366BE0 E0066BB0 24A5A66C */ addiu $a1, $a1, %lo(gMasterGfxPos)
/* 366BE4 E0066BB4 8CA40000 */ lw $a0, ($a1)
/* 366BE8 E0066BB8 3C06DA38 */ lui $a2, 0xda38
/* 366BEC E0066BBC 0080182D */ daddu $v1, $a0, $zero
/* 366BF0 E0066BC0 24840008 */ addiu $a0, $a0, 8
/* 366BF4 E0066BC4 ACA40000 */ sw $a0, ($a1)
/* 366BF8 E0066BC8 AC620000 */ sw $v0, ($v1)
/* 366BFC E0066BCC 24020040 */ addiu $v0, $zero, 0x40
/* 366C00 E0066BD0 AC620004 */ sw $v0, 4($v1)
/* 366C04 E0066BD4 3C038007 */ lui $v1, %hi(gCurrentCameraID)
/* 366C08 E0066BD8 8C637410 */ lw $v1, %lo(gCurrentCameraID)($v1)
/* 366C0C E0066BDC 24820008 */ addiu $v0, $a0, 8
/* 366C10 E0066BE0 ACA20000 */ sw $v0, ($a1)
/* 366C14 E0066BE4 3C02800A */ lui $v0, %hi(gDisplayContext)
/* 366C18 E0066BE8 8C42A674 */ lw $v0, %lo(gDisplayContext)($v0)
/* 366C1C E0066BEC 34C60007 */ ori $a2, $a2, 7
/* 366C20 E0066BF0 AC860000 */ sw $a2, ($a0)
/* 366C24 E0066BF4 00031980 */ sll $v1, $v1, 6
/* 366C28 E0066BF8 24630030 */ addiu $v1, $v1, 0x30
/* 366C2C E0066BFC 00431021 */ addu $v0, $v0, $v1
/* 366C30 E0066C00 AC820004 */ sw $v0, 4($a0)
/* 366C34 E0066C04 24820010 */ addiu $v0, $a0, 0x10
/* 366C38 E0066C08 ACA20000 */ sw $v0, ($a1)
/* 366C3C E0066C0C 3C02E700 */ lui $v0, 0xe700
/* 366C40 E0066C10 AC820008 */ sw $v0, 8($a0)
/* 366C44 E0066C14 AC80000C */ sw $zero, 0xc($a0)
/* 366C48 E0066C18 8FBF00CC */ lw $ra, 0xcc($sp)
/* 366C4C E0066C1C 8FBE00C8 */ lw $fp, 0xc8($sp)
/* 366C50 E0066C20 8FB700C4 */ lw $s7, 0xc4($sp)
/* 366C54 E0066C24 8FB600C0 */ lw $s6, 0xc0($sp)
/* 366C58 E0066C28 8FB500BC */ lw $s5, 0xbc($sp)
/* 366C5C E0066C2C 8FB400B8 */ lw $s4, 0xb8($sp)
/* 366C60 E0066C30 8FB300B4 */ lw $s3, 0xb4($sp)
/* 366C64 E0066C34 8FB200B0 */ lw $s2, 0xb0($sp)
/* 366C68 E0066C38 8FB100AC */ lw $s1, 0xac($sp)
/* 366C6C E0066C3C 8FB000A8 */ lw $s0, 0xa8($sp)
/* 366C70 E0066C40 D7B400D0 */ ldc1 $f20, 0xd0($sp)
/* 366C74 E0066C44 03E00008 */ jr $ra
/* 366C78 E0066C48 27BD00D8 */ addiu $sp, $sp, 0xd8
/* 366C7C E0066C4C 00000000 */ nop

View File

@ -1,115 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_E008AA60
.double 0.05
dlabel D_E008AA68
.double 0.01
dlabel D_E008AA70
.double -1.2
.section .text
glabel func_E008A000
/* 38C5F0 E008A000 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 38C5F4 E008A004 AFB10014 */ sw $s1, 0x14($sp)
/* 38C5F8 E008A008 0080882D */ daddu $s1, $a0, $zero
/* 38C5FC E008A00C 240407D0 */ addiu $a0, $zero, 0x7d0
/* 38C600 E008A010 3C028007 */ lui $v0, %hi(gCurrentCameraID)
/* 38C604 E008A014 8C427410 */ lw $v0, %lo(gCurrentCameraID)($v0)
/* 38C608 E008A018 3C03800B */ lui $v1, %hi(gCameras)
/* 38C60C E008A01C 24631D80 */ addiu $v1, $v1, %lo(gCameras)
/* 38C610 E008A020 AFBF0018 */ sw $ra, 0x18($sp)
/* 38C614 E008A024 AFB00010 */ sw $s0, 0x10($sp)
/* 38C618 E008A028 F7B60028 */ sdc1 $f22, 0x28($sp)
/* 38C61C E008A02C F7B40020 */ sdc1 $f20, 0x20($sp)
/* 38C620 E008A030 00028080 */ sll $s0, $v0, 2
/* 38C624 E008A034 02028021 */ addu $s0, $s0, $v0
/* 38C628 E008A038 00108080 */ sll $s0, $s0, 2
/* 38C62C E008A03C 02028023 */ subu $s0, $s0, $v0
/* 38C630 E008A040 001010C0 */ sll $v0, $s0, 3
/* 38C634 E008A044 02028021 */ addu $s0, $s0, $v0
/* 38C638 E008A048 001080C0 */ sll $s0, $s0, 3
/* 38C63C E008A04C 0C080000 */ jal func_E0200000
/* 38C640 E008A050 02038021 */ addu $s0, $s0, $v1
/* 38C644 E008A054 C600003C */ lwc1 $f0, 0x3c($s0)
/* 38C648 E008A058 44821000 */ mtc1 $v0, $f2
/* 38C64C E008A05C 00000000 */ nop
/* 38C650 E008A060 468010A0 */ cvt.s.w $f2, $f2
/* 38C654 E008A064 46020000 */ add.s $f0, $f0, $f2
/* 38C658 E008A068 3C01447A */ lui $at, 0x447a
/* 38C65C E008A06C 4481A000 */ mtc1 $at, $f20
/* 38C660 E008A070 00000000 */ nop
/* 38C664 E008A074 46140001 */ sub.s $f0, $f0, $f20
/* 38C668 E008A078 240407D0 */ addiu $a0, $zero, 0x7d0
/* 38C66C E008A07C 0C080000 */ jal func_E0200000
/* 38C670 E008A080 E6200008 */ swc1 $f0, 8($s1)
/* 38C674 E008A084 C6000040 */ lwc1 $f0, 0x40($s0)
/* 38C678 E008A088 44821000 */ mtc1 $v0, $f2
/* 38C67C E008A08C 00000000 */ nop
/* 38C680 E008A090 468010A0 */ cvt.s.w $f2, $f2
/* 38C684 E008A094 46020000 */ add.s $f0, $f0, $f2
/* 38C688 E008A098 46140001 */ sub.s $f0, $f0, $f20
/* 38C68C E008A09C 240407D0 */ addiu $a0, $zero, 0x7d0
/* 38C690 E008A0A0 0C080000 */ jal func_E0200000
/* 38C694 E008A0A4 E620000C */ swc1 $f0, 0xc($s1)
/* 38C698 E008A0A8 C6000044 */ lwc1 $f0, 0x44($s0)
/* 38C69C E008A0AC 44821000 */ mtc1 $v0, $f2
/* 38C6A0 E008A0B0 00000000 */ nop
/* 38C6A4 E008A0B4 468010A0 */ cvt.s.w $f2, $f2
/* 38C6A8 E008A0B8 46020000 */ add.s $f0, $f0, $f2
/* 38C6AC E008A0BC 46140001 */ sub.s $f0, $f0, $f20
/* 38C6B0 E008A0C0 24040014 */ addiu $a0, $zero, 0x14
/* 38C6B4 E008A0C4 0C080000 */ jal func_E0200000
/* 38C6B8 E008A0C8 E6200010 */ swc1 $f0, 0x10($s1)
/* 38C6BC E008A0CC 3C014120 */ lui $at, 0x4120
/* 38C6C0 E008A0D0 4481B000 */ mtc1 $at, $f22
/* 38C6C4 E008A0D4 44820000 */ mtc1 $v0, $f0
/* 38C6C8 E008A0D8 00000000 */ nop
/* 38C6CC E008A0DC 46800020 */ cvt.s.w $f0, $f0
/* 38C6D0 E008A0E0 46160001 */ sub.s $f0, $f0, $f22
/* 38C6D4 E008A0E4 3C01E009 */ lui $at, %hi(D_E008AA60)
/* 38C6D8 E008A0E8 D434AA60 */ ldc1 $f20, %lo(D_E008AA60)($at)
/* 38C6DC E008A0EC 46000021 */ cvt.d.s $f0, $f0
/* 38C6E0 E008A0F0 46340002 */ mul.d $f0, $f0, $f20
/* 38C6E4 E008A0F4 00000000 */ nop
/* 38C6E8 E008A0F8 24040050 */ addiu $a0, $zero, 0x50
/* 38C6EC E008A0FC 46200020 */ cvt.s.d $f0, $f0
/* 38C6F0 E008A100 0C080000 */ jal func_E0200000
/* 38C6F4 E008A104 E6200014 */ swc1 $f0, 0x14($s1)
/* 38C6F8 E008A108 3C01E009 */ lui $at, %hi(D_E008AA68)
/* 38C6FC E008A10C D420AA68 */ ldc1 $f0, %lo(D_E008AA68)($at)
/* 38C700 E008A110 44821000 */ mtc1 $v0, $f2
/* 38C704 E008A114 00000000 */ nop
/* 38C708 E008A118 468010A1 */ cvt.d.w $f2, $f2
/* 38C70C E008A11C 46201082 */ mul.d $f2, $f2, $f0
/* 38C710 E008A120 00000000 */ nop
/* 38C714 E008A124 3C01E009 */ lui $at, %hi(D_E008AA70)
/* 38C718 E008A128 D420AA70 */ ldc1 $f0, %lo(D_E008AA70)($at)
/* 38C71C E008A12C 46220001 */ sub.d $f0, $f0, $f2
/* 38C720 E008A130 24040014 */ addiu $a0, $zero, 0x14
/* 38C724 E008A134 46200020 */ cvt.s.d $f0, $f0
/* 38C728 E008A138 0C080000 */ jal func_E0200000
/* 38C72C E008A13C E6200018 */ swc1 $f0, 0x18($s1)
/* 38C730 E008A140 44820000 */ mtc1 $v0, $f0
/* 38C734 E008A144 00000000 */ nop
/* 38C738 E008A148 46800020 */ cvt.s.w $f0, $f0
/* 38C73C E008A14C 46160001 */ sub.s $f0, $f0, $f22
/* 38C740 E008A150 46000021 */ cvt.d.s $f0, $f0
/* 38C744 E008A154 46340002 */ mul.d $f0, $f0, $f20
/* 38C748 E008A158 00000000 */ nop
/* 38C74C E008A15C 240200FF */ addiu $v0, $zero, 0xff
/* 38C750 E008A160 AE220028 */ sw $v0, 0x28($s1)
/* 38C754 E008A164 46200020 */ cvt.s.d $f0, $f0
/* 38C758 E008A168 E620001C */ swc1 $f0, 0x1c($s1)
/* 38C75C E008A16C 8FBF0018 */ lw $ra, 0x18($sp)
/* 38C760 E008A170 8FB10014 */ lw $s1, 0x14($sp)
/* 38C764 E008A174 8FB00010 */ lw $s0, 0x10($sp)
/* 38C768 E008A178 D7B60028 */ ldc1 $f22, 0x28($sp)
/* 38C76C E008A17C D7B40020 */ ldc1 $f20, 0x20($sp)
/* 38C770 E008A180 03E00008 */ jr $ra
/* 38C774 E008A184 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -1,196 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_E008A290
/* 38C880 E008A290 0080402D */ daddu $t0, $a0, $zero
/* 38C884 E008A294 3C04800B */ lui $a0, %hi(gCameras)
/* 38C888 E008A298 24841D80 */ addiu $a0, $a0, %lo(gCameras)
/* 38C88C E008A29C 3C038007 */ lui $v1, %hi(gCurrentCameraID)
/* 38C890 E008A2A0 8C637410 */ lw $v1, %lo(gCurrentCameraID)($v1)
/* 38C894 E008A2A4 C5000008 */ lwc1 $f0, 8($t0)
/* 38C898 E008A2A8 C508000C */ lwc1 $f8, 0xc($t0)
/* 38C89C E008A2AC 00031080 */ sll $v0, $v1, 2
/* 38C8A0 E008A2B0 00431021 */ addu $v0, $v0, $v1
/* 38C8A4 E008A2B4 00021080 */ sll $v0, $v0, 2
/* 38C8A8 E008A2B8 00431023 */ subu $v0, $v0, $v1
/* 38C8AC E008A2BC 000218C0 */ sll $v1, $v0, 3
/* 38C8B0 E008A2C0 00431021 */ addu $v0, $v0, $v1
/* 38C8B4 E008A2C4 000210C0 */ sll $v0, $v0, 3
/* 38C8B8 E008A2C8 00441021 */ addu $v0, $v0, $a0
/* 38C8BC E008A2CC C4420048 */ lwc1 $f2, 0x48($v0)
/* 38C8C0 E008A2D0 C50A0010 */ lwc1 $f10, 0x10($t0)
/* 38C8C4 E008A2D4 46020001 */ sub.s $f0, $f0, $f2
/* 38C8C8 E008A2D8 C444004C */ lwc1 $f4, 0x4c($v0)
/* 38C8CC E008A2DC C4460050 */ lwc1 $f6, 0x50($v0)
/* 38C8D0 E008A2E0 4600030D */ trunc.w.s $f12, $f0
/* 38C8D4 E008A2E4 44046000 */ mfc1 $a0, $f12
/* 38C8D8 E008A2E8 00000000 */ nop
/* 38C8DC E008A2EC 00A4182A */ slt $v1, $a1, $a0
/* 38C8E0 E008A2F0 10600014 */ beqz $v1, .LE008A344
/* 38C8E4 E008A2F4 00051023 */ negu $v0, $a1
/* 38C8E8 E008A2F8 14A00002 */ bnez $a1, .LE008A304
/* 38C8EC E008A2FC 0085001A */ div $zero, $a0, $a1
/* 38C8F0 E008A300 0007000D */ break 7
.LE008A304:
/* 38C8F4 E008A304 2401FFFF */ addiu $at, $zero, -1
/* 38C8F8 E008A308 14A10004 */ bne $a1, $at, .LE008A31C
/* 38C8FC E008A30C 3C018000 */ lui $at, 0x8000
/* 38C900 E008A310 14810002 */ bne $a0, $at, .LE008A31C
/* 38C904 E008A314 00000000 */ nop
/* 38C908 E008A318 0006000D */ break 6
.LE008A31C:
/* 38C90C E008A31C 00002010 */ mfhi $a0
/* 38C910 E008A320 44850000 */ mtc1 $a1, $f0
/* 38C914 E008A324 00000000 */ nop
/* 38C918 E008A328 46800020 */ cvt.s.w $f0, $f0
/* 38C91C E008A32C 46001001 */ sub.s $f0, $f2, $f0
/* 38C920 E008A330 44841000 */ mtc1 $a0, $f2
/* 38C924 E008A334 00000000 */ nop
/* 38C928 E008A338 468010A0 */ cvt.s.w $f2, $f2
/* 38C92C E008A33C 080228E6 */ j .LE008A398
/* 38C930 E008A340 46020000 */ add.s $f0, $f0, $f2
.LE008A344:
/* 38C934 E008A344 0082102A */ slt $v0, $a0, $v0
/* 38C938 E008A348 10400014 */ beqz $v0, .LE008A39C
/* 38C93C E008A34C 00042023 */ negu $a0, $a0
/* 38C940 E008A350 14A00002 */ bnez $a1, .LE008A35C
/* 38C944 E008A354 0085001A */ div $zero, $a0, $a1
/* 38C948 E008A358 0007000D */ break 7
.LE008A35C:
/* 38C94C E008A35C 2401FFFF */ addiu $at, $zero, -1
/* 38C950 E008A360 14A10004 */ bne $a1, $at, .LE008A374
/* 38C954 E008A364 3C018000 */ lui $at, 0x8000
/* 38C958 E008A368 14810002 */ bne $a0, $at, .LE008A374
/* 38C95C E008A36C 00000000 */ nop
/* 38C960 E008A370 0006000D */ break 6
.LE008A374:
/* 38C964 E008A374 00002010 */ mfhi $a0
/* 38C968 E008A378 44850000 */ mtc1 $a1, $f0
/* 38C96C E008A37C 00000000 */ nop
/* 38C970 E008A380 46800020 */ cvt.s.w $f0, $f0
/* 38C974 E008A384 46001000 */ add.s $f0, $f2, $f0
/* 38C978 E008A388 44841000 */ mtc1 $a0, $f2
/* 38C97C E008A38C 00000000 */ nop
/* 38C980 E008A390 468010A0 */ cvt.s.w $f2, $f2
/* 38C984 E008A394 46020001 */ sub.s $f0, $f0, $f2
.LE008A398:
/* 38C988 E008A398 E5000008 */ swc1 $f0, 8($t0)
.LE008A39C:
/* 38C98C E008A39C 46044001 */ sub.s $f0, $f8, $f4
/* 38C990 E008A3A0 4600030D */ trunc.w.s $f12, $f0
/* 38C994 E008A3A4 44036000 */ mfc1 $v1, $f12
/* 38C998 E008A3A8 00000000 */ nop
/* 38C99C E008A3AC 00C3102A */ slt $v0, $a2, $v1
/* 38C9A0 E008A3B0 10400014 */ beqz $v0, .LE008A404
/* 38C9A4 E008A3B4 00061023 */ negu $v0, $a2
/* 38C9A8 E008A3B8 14C00002 */ bnez $a2, .LE008A3C4
/* 38C9AC E008A3BC 0066001A */ div $zero, $v1, $a2
/* 38C9B0 E008A3C0 0007000D */ break 7
.LE008A3C4:
/* 38C9B4 E008A3C4 2401FFFF */ addiu $at, $zero, -1
/* 38C9B8 E008A3C8 14C10004 */ bne $a2, $at, .LE008A3DC
/* 38C9BC E008A3CC 3C018000 */ lui $at, 0x8000
/* 38C9C0 E008A3D0 14610002 */ bne $v1, $at, .LE008A3DC
/* 38C9C4 E008A3D4 00000000 */ nop
/* 38C9C8 E008A3D8 0006000D */ break 6
.LE008A3DC:
/* 38C9CC E008A3DC 00001810 */ mfhi $v1
/* 38C9D0 E008A3E0 44860000 */ mtc1 $a2, $f0
/* 38C9D4 E008A3E4 00000000 */ nop
/* 38C9D8 E008A3E8 46800020 */ cvt.s.w $f0, $f0
/* 38C9DC E008A3EC 46002001 */ sub.s $f0, $f4, $f0
/* 38C9E0 E008A3F0 44831000 */ mtc1 $v1, $f2
/* 38C9E4 E008A3F4 00000000 */ nop
/* 38C9E8 E008A3F8 468010A0 */ cvt.s.w $f2, $f2
/* 38C9EC E008A3FC 0802291B */ j .LE008A46C
/* 38C9F0 E008A400 46020000 */ add.s $f0, $f0, $f2
.LE008A404:
/* 38C9F4 E008A404 0062102A */ slt $v0, $v1, $v0
/* 38C9F8 E008A408 10400019 */ beqz $v0, .LE008A470
/* 38C9FC E008A40C 28E20064 */ slti $v0, $a3, 0x64
/* 38CA00 E008A410 10400004 */ beqz $v0, .LE008A424
/* 38CA04 E008A414 00031823 */ negu $v1, $v1
/* 38CA08 E008A418 AD000018 */ sw $zero, 0x18($t0)
/* 38CA0C E008A41C 0802291C */ j .LE008A470
/* 38CA10 E008A420 AD000028 */ sw $zero, 0x28($t0)
.LE008A424:
/* 38CA14 E008A424 14C00002 */ bnez $a2, .LE008A430
/* 38CA18 E008A428 0066001A */ div $zero, $v1, $a2
/* 38CA1C E008A42C 0007000D */ break 7
.LE008A430:
/* 38CA20 E008A430 2401FFFF */ addiu $at, $zero, -1
/* 38CA24 E008A434 14C10004 */ bne $a2, $at, .LE008A448
/* 38CA28 E008A438 3C018000 */ lui $at, 0x8000
/* 38CA2C E008A43C 14610002 */ bne $v1, $at, .LE008A448
/* 38CA30 E008A440 00000000 */ nop
/* 38CA34 E008A444 0006000D */ break 6
.LE008A448:
/* 38CA38 E008A448 00001810 */ mfhi $v1
/* 38CA3C E008A44C 44860000 */ mtc1 $a2, $f0
/* 38CA40 E008A450 00000000 */ nop
/* 38CA44 E008A454 46800020 */ cvt.s.w $f0, $f0
/* 38CA48 E008A458 46002000 */ add.s $f0, $f4, $f0
/* 38CA4C E008A45C 44831000 */ mtc1 $v1, $f2
/* 38CA50 E008A460 00000000 */ nop
/* 38CA54 E008A464 468010A0 */ cvt.s.w $f2, $f2
/* 38CA58 E008A468 46020001 */ sub.s $f0, $f0, $f2
.LE008A46C:
/* 38CA5C E008A46C E500000C */ swc1 $f0, 0xc($t0)
.LE008A470:
/* 38CA60 E008A470 46065001 */ sub.s $f0, $f10, $f6
/* 38CA64 E008A474 4600030D */ trunc.w.s $f12, $f0
/* 38CA68 E008A478 44036000 */ mfc1 $v1, $f12
/* 38CA6C E008A47C 00000000 */ nop
/* 38CA70 E008A480 00A3102A */ slt $v0, $a1, $v1
/* 38CA74 E008A484 10400015 */ beqz $v0, .LE008A4DC
/* 38CA78 E008A488 00051023 */ negu $v0, $a1
/* 38CA7C E008A48C 14A00002 */ bnez $a1, .LE008A498
/* 38CA80 E008A490 0065001A */ div $zero, $v1, $a1
/* 38CA84 E008A494 0007000D */ break 7
.LE008A498:
/* 38CA88 E008A498 2401FFFF */ addiu $at, $zero, -1
/* 38CA8C E008A49C 14A10004 */ bne $a1, $at, .LE008A4B0
/* 38CA90 E008A4A0 3C018000 */ lui $at, 0x8000
/* 38CA94 E008A4A4 14610002 */ bne $v1, $at, .LE008A4B0
/* 38CA98 E008A4A8 00000000 */ nop
/* 38CA9C E008A4AC 0006000D */ break 6
.LE008A4B0:
/* 38CAA0 E008A4B0 00001810 */ mfhi $v1
/* 38CAA4 E008A4B4 44850000 */ mtc1 $a1, $f0
/* 38CAA8 E008A4B8 00000000 */ nop
/* 38CAAC E008A4BC 46800020 */ cvt.s.w $f0, $f0
/* 38CAB0 E008A4C0 46003001 */ sub.s $f0, $f6, $f0
/* 38CAB4 E008A4C4 44831000 */ mtc1 $v1, $f2
/* 38CAB8 E008A4C8 00000000 */ nop
/* 38CABC E008A4CC 468010A0 */ cvt.s.w $f2, $f2
/* 38CAC0 E008A4D0 46020000 */ add.s $f0, $f0, $f2
/* 38CAC4 E008A4D4 03E00008 */ jr $ra
/* 38CAC8 E008A4D8 E5000010 */ swc1 $f0, 0x10($t0)
.LE008A4DC:
/* 38CACC E008A4DC 0062102A */ slt $v0, $v1, $v0
/* 38CAD0 E008A4E0 10400014 */ beqz $v0, .LE008A534
/* 38CAD4 E008A4E4 00031823 */ negu $v1, $v1
/* 38CAD8 E008A4E8 14A00002 */ bnez $a1, .LE008A4F4
/* 38CADC E008A4EC 0065001A */ div $zero, $v1, $a1
/* 38CAE0 E008A4F0 0007000D */ break 7
.LE008A4F4:
/* 38CAE4 E008A4F4 2401FFFF */ addiu $at, $zero, -1
/* 38CAE8 E008A4F8 14A10004 */ bne $a1, $at, .LE008A50C
/* 38CAEC E008A4FC 3C018000 */ lui $at, 0x8000
/* 38CAF0 E008A500 14610002 */ bne $v1, $at, .LE008A50C
/* 38CAF4 E008A504 00000000 */ nop
/* 38CAF8 E008A508 0006000D */ break 6
.LE008A50C:
/* 38CAFC E008A50C 00001810 */ mfhi $v1
/* 38CB00 E008A510 44850000 */ mtc1 $a1, $f0
/* 38CB04 E008A514 00000000 */ nop
/* 38CB08 E008A518 46800020 */ cvt.s.w $f0, $f0
/* 38CB0C E008A51C 46003000 */ add.s $f0, $f6, $f0
/* 38CB10 E008A520 44831000 */ mtc1 $v1, $f2
/* 38CB14 E008A524 00000000 */ nop
/* 38CB18 E008A528 468010A0 */ cvt.s.w $f2, $f2
/* 38CB1C E008A52C 46020001 */ sub.s $f0, $f0, $f2
/* 38CB20 E008A530 E5000010 */ swc1 $f0, 0x10($t0)
.LE008A534:
/* 38CB24 E008A534 03E00008 */ jr $ra
/* 38CB28 E008A538 00000000 */ nop

View File

@ -1,211 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snowfall_appendGfx
/* 38CD18 E008A728 27BDFF70 */ addiu $sp, $sp, -0x90
/* 38CD1C E008A72C AFB1006C */ sw $s1, 0x6c($sp)
/* 38CD20 E008A730 0080882D */ daddu $s1, $a0, $zero
/* 38CD24 E008A734 AFBF008C */ sw $ra, 0x8c($sp)
/* 38CD28 E008A738 AFBE0088 */ sw $fp, 0x88($sp)
/* 38CD2C E008A73C AFB70084 */ sw $s7, 0x84($sp)
/* 38CD30 E008A740 AFB60080 */ sw $s6, 0x80($sp)
/* 38CD34 E008A744 AFB5007C */ sw $s5, 0x7c($sp)
/* 38CD38 E008A748 AFB40078 */ sw $s4, 0x78($sp)
/* 38CD3C E008A74C AFB30074 */ sw $s3, 0x74($sp)
/* 38CD40 E008A750 AFB20070 */ sw $s2, 0x70($sp)
/* 38CD44 E008A754 AFB00068 */ sw $s0, 0x68($sp)
/* 38CD48 E008A758 8E33000C */ lw $s3, 0xc($s1)
/* 38CD4C E008A75C 8E620000 */ lw $v0, ($s3)
/* 38CD50 E008A760 104000AF */ beqz $v0, .LE008AA20
/* 38CD54 E008A764 240200FF */ addiu $v0, $zero, 0xff
/* 38CD58 E008A768 8E690028 */ lw $t1, 0x28($s3)
/* 38CD5C E008A76C 8E630004 */ lw $v1, 4($s3)
/* 38CD60 E008A770 A3A20059 */ sb $v0, 0x59($sp)
/* 38CD64 E008A774 3C028015 */ lui $v0, %hi(gBgRenderTypePtr)
/* 38CD68 E008A778 8C4212F0 */ lw $v0, %lo(gBgRenderTypePtr)($v0)
/* 38CD6C E008A77C 8E7E002C */ lw $fp, 0x2c($s3)
/* 38CD70 E008A780 00031880 */ sll $v1, $v1, 2
/* 38CD74 E008A784 90420000 */ lbu $v0, ($v0)
/* 38CD78 E008A788 3C01E009 */ lui $at, %hi(D_E008AA50)
/* 38CD7C E008A78C 00230821 */ addu $at, $at, $v1
/* 38CD80 E008A790 8C23AA50 */ lw $v1, %lo(D_E008AA50)($at)
/* 38CD84 E008A794 24040001 */ addiu $a0, $zero, 1
/* 38CD88 E008A798 14440009 */ bne $v0, $a0, .LE008A7C0
/* 38CD8C E008A79C AFA3005C */ sw $v1, 0x5c($sp)
/* 38CD90 E008A7A0 27A40058 */ addiu $a0, $sp, 0x58
/* 38CD94 E008A7A4 0080282D */ daddu $a1, $a0, $zero
/* 38CD98 E008A7A8 0080302D */ daddu $a2, $a0, $zero
/* 38CD9C E008A7AC 0C08019C */ jal shim_get_background_color_blend
/* 38CDA0 E008A7B0 27A70059 */ addiu $a3, $sp, 0x59
/* 38CDA4 E008A7B4 93A30059 */ lbu $v1, 0x59($sp)
/* 38CDA8 E008A7B8 240200FF */ addiu $v0, $zero, 0xff
/* 38CDAC E008A7BC 00434823 */ subu $t1, $v0, $v1
.LE008A7C0:
/* 38CDB0 E008A7C0 11200097 */ beqz $t1, .LE008AA20
/* 38CDB4 E008A7C4 3C08DB06 */ lui $t0, 0xdb06
/* 38CDB8 E008A7C8 35080024 */ ori $t0, $t0, 0x24
/* 38CDBC E008A7CC 27A40018 */ addiu $a0, $sp, 0x18
/* 38CDC0 E008A7D0 3C100001 */ lui $s0, 1
/* 38CDC4 E008A7D4 36101630 */ ori $s0, $s0, 0x1630
/* 38CDC8 E008A7D8 3C16800A */ lui $s6, %hi(gMasterGfxPos)
/* 38CDCC E008A7DC 26D6A66C */ addiu $s6, $s6, %lo(gMasterGfxPos)
/* 38CDD0 E008A7E0 3C02E700 */ lui $v0, 0xe700
/* 38CDD4 E008A7E4 8EC50000 */ lw $a1, ($s6)
/* 38CDD8 E008A7E8 44800000 */ mtc1 $zero, $f0
/* 38CDDC E008A7EC 3C073F80 */ lui $a3, 0x3f80
/* 38CDE0 E008A7F0 00A0182D */ daddu $v1, $a1, $zero
/* 38CDE4 E008A7F4 44060000 */ mfc1 $a2, $f0
/* 38CDE8 E008A7F8 24A50008 */ addiu $a1, $a1, 8
/* 38CDEC E008A7FC AEC50000 */ sw $a1, ($s6)
/* 38CDF0 E008A800 AC620000 */ sw $v0, ($v1)
/* 38CDF4 E008A804 24A20008 */ addiu $v0, $a1, 8
/* 38CDF8 E008A808 AC600004 */ sw $zero, 4($v1)
/* 38CDFC E008A80C AEC20000 */ sw $v0, ($s6)
/* 38CE00 E008A810 ACA80000 */ sw $t0, ($a1)
/* 38CE04 E008A814 8E230010 */ lw $v1, 0x10($s1)
/* 38CE08 E008A818 24A20010 */ addiu $v0, $a1, 0x10
/* 38CE0C E008A81C AEC20000 */ sw $v0, ($s6)
/* 38CE10 E008A820 8C68001C */ lw $t0, 0x1c($v1)
/* 38CE14 E008A824 3C02DE00 */ lui $v0, 0xde00
/* 38CE18 E008A828 ACA20008 */ sw $v0, 8($a1)
/* 38CE1C E008A82C 3C020900 */ lui $v0, 0x900
/* 38CE20 E008A830 24420C00 */ addiu $v0, $v0, 0xc00
/* 38CE24 E008A834 ACA2000C */ sw $v0, 0xc($a1)
/* 38CE28 E008A838 3C02FA00 */ lui $v0, 0xfa00
/* 38CE2C E008A83C ACA20010 */ sw $v0, 0x10($a1)
/* 38CE30 E008A840 2402FF00 */ addiu $v0, $zero, -0x100
/* 38CE34 E008A844 01221025 */ or $v0, $t1, $v0
/* 38CE38 E008A848 ACA20014 */ sw $v0, 0x14($a1)
/* 38CE3C E008A84C 3C028000 */ lui $v0, 0x8000
/* 38CE40 E008A850 3C038007 */ lui $v1, %hi(gCurrentCameraID)
/* 38CE44 E008A854 8C637410 */ lw $v1, %lo(gCurrentCameraID)($v1)
/* 38CE48 E008A858 01024021 */ addu $t0, $t0, $v0
/* 38CE4C E008A85C 00031080 */ sll $v0, $v1, 2
/* 38CE50 E008A860 00431021 */ addu $v0, $v0, $v1
/* 38CE54 E008A864 00021080 */ sll $v0, $v0, 2
/* 38CE58 E008A868 00431023 */ subu $v0, $v0, $v1
/* 38CE5C E008A86C 000218C0 */ sll $v1, $v0, 3
/* 38CE60 E008A870 00431021 */ addu $v0, $v0, $v1
/* 38CE64 E008A874 000210C0 */ sll $v0, $v0, 3
/* 38CE68 E008A878 ACA80004 */ sw $t0, 4($a1)
/* 38CE6C E008A87C 3C01800B */ lui $at, %hi(gCameras+0x6C)
/* 38CE70 E008A880 00220821 */ addu $at, $at, $v0
/* 38CE74 E008A884 C4201DEC */ lwc1 $f0, %lo(gCameras+0x6C)($at)
/* 38CE78 E008A888 24A50018 */ addiu $a1, $a1, 0x18
/* 38CE7C E008A88C AEC50000 */ sw $a1, ($s6)
/* 38CE80 E008A890 46000007 */ neg.s $f0, $f0
/* 38CE84 E008A894 44050000 */ mfc1 $a1, $f0
/* 38CE88 E008A898 26730034 */ addiu $s3, $s3, 0x34
/* 38CE8C E008A89C 0C080104 */ jal shim_guRotateF
/* 38CE90 E008A8A0 AFA60010 */ sw $a2, 0x10($sp)
/* 38CE94 E008A8A4 27A40018 */ addiu $a0, $sp, 0x18
/* 38CE98 E008A8A8 3C128007 */ lui $s2, %hi(gMatrixListPos)
/* 38CE9C E008A8AC 265241F0 */ addiu $s2, $s2, %lo(gMatrixListPos)
/* 38CEA0 E008A8B0 3C14800A */ lui $s4, %hi(gDisplayContext)
/* 38CEA4 E008A8B4 2694A674 */ addiu $s4, $s4, %lo(gDisplayContext)
/* 38CEA8 E008A8B8 96450000 */ lhu $a1, ($s2)
/* 38CEAC E008A8BC 8E820000 */ lw $v0, ($s4)
/* 38CEB0 E008A8C0 00052980 */ sll $a1, $a1, 6
/* 38CEB4 E008A8C4 00B02821 */ addu $a1, $a1, $s0
/* 38CEB8 E008A8C8 0C080118 */ jal shim_guMtxF2L
/* 38CEBC E008A8CC 00452821 */ addu $a1, $v0, $a1
/* 38CEC0 E008A8D0 96420000 */ lhu $v0, ($s2)
/* 38CEC4 E008A8D4 0000882D */ daddu $s1, $zero, $zero
/* 38CEC8 E008A8D8 24430001 */ addiu $v1, $v0, 1
/* 38CECC E008A8DC 3042FFFF */ andi $v0, $v0, 0xffff
/* 38CED0 E008A8E0 00021180 */ sll $v0, $v0, 6
/* 38CED4 E008A8E4 A6430000 */ sh $v1, ($s2)
/* 38CED8 E008A8E8 8E830000 */ lw $v1, ($s4)
/* 38CEDC E008A8EC 00501021 */ addu $v0, $v0, $s0
/* 38CEE0 E008A8F0 00621821 */ addu $v1, $v1, $v0
/* 38CEE4 E008A8F4 1BC00041 */ blez $fp, .LE008A9FC
/* 38CEE8 E008A8F8 AFA30060 */ sw $v1, 0x60($sp)
/* 38CEEC E008A8FC 0280B82D */ daddu $s7, $s4, $zero
/* 38CEF0 E008A900 0240A82D */ daddu $s5, $s2, $zero
/* 38CEF4 E008A904 3C140001 */ lui $s4, 1
/* 38CEF8 E008A908 36941630 */ ori $s4, $s4, 0x1630
/* 38CEFC E008A90C 02C0902D */ daddu $s2, $s6, $zero
/* 38CF00 E008A910 26700010 */ addiu $s0, $s3, 0x10
.LE008A914:
/* 38CF04 E008A914 8E020020 */ lw $v0, 0x20($s0)
/* 38CF08 E008A918 5C400035 */ bgtzl $v0, .LE008A9F0
/* 38CF0C E008A91C 26310001 */ addiu $s1, $s1, 1
/* 38CF10 E008A920 8E020018 */ lw $v0, 0x18($s0)
/* 38CF14 E008A924 50400032 */ beql $v0, $zero, .LE008A9F0
/* 38CF18 E008A928 26310001 */ addiu $s1, $s1, 1
/* 38CF1C E008A92C 8E05FFF8 */ lw $a1, -8($s0)
/* 38CF20 E008A930 8E06FFFC */ lw $a2, -4($s0)
/* 38CF24 E008A934 8E070000 */ lw $a3, ($s0)
/* 38CF28 E008A938 0C080108 */ jal shim_guTranslateF
/* 38CF2C E008A93C 27A40018 */ addiu $a0, $sp, 0x18
/* 38CF30 E008A940 27A40018 */ addiu $a0, $sp, 0x18
/* 38CF34 E008A944 96A50000 */ lhu $a1, ($s5)
/* 38CF38 E008A948 8EE20000 */ lw $v0, ($s7)
/* 38CF3C E008A94C 00052980 */ sll $a1, $a1, 6
/* 38CF40 E008A950 00B42821 */ addu $a1, $a1, $s4
/* 38CF44 E008A954 0C080118 */ jal shim_guMtxF2L
/* 38CF48 E008A958 00452821 */ addu $a1, $v0, $a1
/* 38CF4C E008A95C 3C02DA38 */ lui $v0, 0xda38
/* 38CF50 E008A960 34420002 */ ori $v0, $v0, 2
/* 38CF54 E008A964 3C06DA38 */ lui $a2, 0xda38
/* 38CF58 E008A968 34C60001 */ ori $a2, $a2, 1
/* 38CF5C E008A96C 3C07D838 */ lui $a3, 0xd838
/* 38CF60 E008A970 34E70002 */ ori $a3, $a3, 2
/* 38CF64 E008A974 8E440000 */ lw $a0, ($s2)
/* 38CF68 E008A978 96A30000 */ lhu $v1, ($s5)
/* 38CF6C E008A97C 0080282D */ daddu $a1, $a0, $zero
/* 38CF70 E008A980 24840008 */ addiu $a0, $a0, 8
/* 38CF74 E008A984 AE440000 */ sw $a0, ($s2)
/* 38CF78 E008A988 ACA20000 */ sw $v0, ($a1)
/* 38CF7C E008A98C 24620001 */ addiu $v0, $v1, 1
/* 38CF80 E008A990 3063FFFF */ andi $v1, $v1, 0xffff
/* 38CF84 E008A994 00031980 */ sll $v1, $v1, 6
/* 38CF88 E008A998 A6A20000 */ sh $v0, ($s5)
/* 38CF8C E008A99C 8EE20000 */ lw $v0, ($s7)
/* 38CF90 E008A9A0 00741821 */ addu $v1, $v1, $s4
/* 38CF94 E008A9A4 00431021 */ addu $v0, $v0, $v1
/* 38CF98 E008A9A8 ACA20004 */ sw $v0, 4($a1)
/* 38CF9C E008A9AC 24820008 */ addiu $v0, $a0, 8
/* 38CFA0 E008A9B0 AE420000 */ sw $v0, ($s2)
/* 38CFA4 E008A9B4 AC860000 */ sw $a2, ($a0)
/* 38CFA8 E008A9B8 8FAA0060 */ lw $t2, 0x60($sp)
/* 38CFAC E008A9BC 24820010 */ addiu $v0, $a0, 0x10
/* 38CFB0 E008A9C0 AC8A0004 */ sw $t2, 4($a0)
/* 38CFB4 E008A9C4 AE420000 */ sw $v0, ($s2)
/* 38CFB8 E008A9C8 3C02DE00 */ lui $v0, 0xde00
/* 38CFBC E008A9CC AC820008 */ sw $v0, 8($a0)
/* 38CFC0 E008A9D0 8FAA005C */ lw $t2, 0x5c($sp)
/* 38CFC4 E008A9D4 24820018 */ addiu $v0, $a0, 0x18
/* 38CFC8 E008A9D8 AC8A000C */ sw $t2, 0xc($a0)
/* 38CFCC E008A9DC AE420000 */ sw $v0, ($s2)
/* 38CFD0 E008A9E0 24020040 */ addiu $v0, $zero, 0x40
/* 38CFD4 E008A9E4 AC870010 */ sw $a3, 0x10($a0)
/* 38CFD8 E008A9E8 AC820014 */ sw $v0, 0x14($a0)
/* 38CFDC E008A9EC 26310001 */ addiu $s1, $s1, 1
.LE008A9F0:
/* 38CFE0 E008A9F0 023E102A */ slt $v0, $s1, $fp
/* 38CFE4 E008A9F4 1440FFC7 */ bnez $v0, .LE008A914
/* 38CFE8 E008A9F8 26100034 */ addiu $s0, $s0, 0x34
.LE008A9FC:
/* 38CFEC E008A9FC 3C03800A */ lui $v1, %hi(gMasterGfxPos)
/* 38CFF0 E008AA00 2463A66C */ addiu $v1, $v1, %lo(gMasterGfxPos)
/* 38CFF4 E008AA04 8C620000 */ lw $v0, ($v1)
/* 38CFF8 E008AA08 0040202D */ daddu $a0, $v0, $zero
/* 38CFFC E008AA0C 24420008 */ addiu $v0, $v0, 8
/* 38D000 E008AA10 AC620000 */ sw $v0, ($v1)
/* 38D004 E008AA14 3C02E700 */ lui $v0, 0xe700
/* 38D008 E008AA18 AC820000 */ sw $v0, ($a0)
/* 38D00C E008AA1C AC800004 */ sw $zero, 4($a0)
.LE008AA20:
/* 38D010 E008AA20 8FBF008C */ lw $ra, 0x8c($sp)
/* 38D014 E008AA24 8FBE0088 */ lw $fp, 0x88($sp)
/* 38D018 E008AA28 8FB70084 */ lw $s7, 0x84($sp)
/* 38D01C E008AA2C 8FB60080 */ lw $s6, 0x80($sp)
/* 38D020 E008AA30 8FB5007C */ lw $s5, 0x7c($sp)
/* 38D024 E008AA34 8FB40078 */ lw $s4, 0x78($sp)
/* 38D028 E008AA38 8FB30074 */ lw $s3, 0x74($sp)
/* 38D02C E008AA3C 8FB20070 */ lw $s2, 0x70($sp)
/* 38D030 E008AA40 8FB1006C */ lw $s1, 0x6c($sp)
/* 38D034 E008AA44 8FB00068 */ lw $s0, 0x68($sp)
/* 38D038 E008AA48 03E00008 */ jr $ra
/* 38D03C E008AA4C 27BD0090 */ addiu $sp, $sp, 0x90

View File

@ -1,124 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_E008AA78
.double 0.3
.section .text
glabel snowfall_update
/* 38CB2C E008A53C 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 38CB30 E008A540 0080282D */ daddu $a1, $a0, $zero
/* 38CB34 E008A544 3C038007 */ lui $v1, %hi(gCurrentCameraID)
/* 38CB38 E008A548 8C637410 */ lw $v1, %lo(gCurrentCameraID)($v1)
/* 38CB3C E008A54C 3C04800B */ lui $a0, %hi(gCameras)
/* 38CB40 E008A550 24841D80 */ addiu $a0, $a0, %lo(gCameras)
/* 38CB44 E008A554 AFBF002C */ sw $ra, 0x2c($sp)
/* 38CB48 E008A558 AFB60028 */ sw $s6, 0x28($sp)
/* 38CB4C E008A55C AFB50024 */ sw $s5, 0x24($sp)
/* 38CB50 E008A560 AFB40020 */ sw $s4, 0x20($sp)
/* 38CB54 E008A564 AFB3001C */ sw $s3, 0x1c($sp)
/* 38CB58 E008A568 AFB20018 */ sw $s2, 0x18($sp)
/* 38CB5C E008A56C AFB10014 */ sw $s1, 0x14($sp)
/* 38CB60 E008A570 AFB00010 */ sw $s0, 0x10($sp)
/* 38CB64 E008A574 8CB1000C */ lw $s1, 0xc($a1)
/* 38CB68 E008A578 00031080 */ sll $v0, $v1, 2
/* 38CB6C E008A57C 00431021 */ addu $v0, $v0, $v1
/* 38CB70 E008A580 00021080 */ sll $v0, $v0, 2
/* 38CB74 E008A584 00431023 */ subu $v0, $v0, $v1
/* 38CB78 E008A588 000218C0 */ sll $v1, $v0, 3
/* 38CB7C E008A58C 00431021 */ addu $v0, $v0, $v1
/* 38CB80 E008A590 000210C0 */ sll $v0, $v0, 3
/* 38CB84 E008A594 8E230020 */ lw $v1, 0x20($s1)
/* 38CB88 E008A598 00442021 */ addu $a0, $v0, $a0
/* 38CB8C E008A59C 28620064 */ slti $v0, $v1, 0x64
/* 38CB90 E008A5A0 10400002 */ beqz $v0, .LE008A5AC
/* 38CB94 E008A5A4 2462FFFF */ addiu $v0, $v1, -1
/* 38CB98 E008A5A8 AE220020 */ sw $v0, 0x20($s1)
.LE008A5AC:
/* 38CB9C E008A5AC 8E220020 */ lw $v0, 0x20($s1)
/* 38CBA0 E008A5B0 04410005 */ bgez $v0, .LE008A5C8
/* 38CBA4 E008A5B4 00000000 */ nop
/* 38CBA8 E008A5B8 0C080128 */ jal shim_remove_effect
/* 38CBAC E008A5BC 00A0202D */ daddu $a0, $a1, $zero
/* 38CBB0 E008A5C0 080229AF */ j .LE008A6BC
/* 38CBB4 E008A5C4 00000000 */ nop
.LE008A5C8:
/* 38CBB8 E008A5C8 8E220024 */ lw $v0, 0x24($s1)
/* 38CBBC E008A5CC 8E330020 */ lw $s3, 0x20($s1)
/* 38CBC0 E008A5D0 8E35002C */ lw $s5, 0x2c($s1)
/* 38CBC4 E008A5D4 24420001 */ addiu $v0, $v0, 1
/* 38CBC8 E008A5D8 AE220024 */ sw $v0, 0x24($s1)
/* 38CBCC E008A5DC 2A62000A */ slti $v0, $s3, 0xa
/* 38CBD0 E008A5E0 10400005 */ beqz $v0, .LE008A5F8
/* 38CBD4 E008A5E4 00131040 */ sll $v0, $s3, 1
/* 38CBD8 E008A5E8 00531021 */ addu $v0, $v0, $s3
/* 38CBDC E008A5EC 000210C0 */ sll $v0, $v0, 3
/* 38CBE0 E008A5F0 00531021 */ addu $v0, $v0, $s3
/* 38CBE4 E008A5F4 AE220028 */ sw $v0, 0x28($s1)
.LE008A5F8:
/* 38CBE8 E008A5F8 C4800078 */ lwc1 $f0, 0x78($a0)
/* 38CBEC E008A5FC 3C01E009 */ lui $at, %hi(D_E008AA78)
/* 38CBF0 E008A600 D422AA78 */ ldc1 $f2, %lo(D_E008AA78)($at)
/* 38CBF4 E008A604 4600020D */ trunc.w.s $f8, $f0
/* 38CBF8 E008A608 44144000 */ mfc1 $s4, $f8
/* 38CBFC E008A60C 00000000 */ nop
/* 38CC00 E008A610 44940000 */ mtc1 $s4, $f0
/* 38CC04 E008A614 00000000 */ nop
/* 38CC08 E008A618 46800021 */ cvt.d.w $f0, $f0
/* 38CC0C E008A61C 46220002 */ mul.d $f0, $f0, $f2
/* 38CC10 E008A620 00000000 */ nop
/* 38CC14 E008A624 3C013FF0 */ lui $at, 0x3ff0
/* 38CC18 E008A628 44811800 */ mtc1 $at, $f3
/* 38CC1C E008A62C 44801000 */ mtc1 $zero, $f2
/* 38CC20 E008A630 00000000 */ nop
/* 38CC24 E008A634 46220000 */ add.d $f0, $f0, $f2
/* 38CC28 E008A638 26310034 */ addiu $s1, $s1, 0x34
/* 38CC2C E008A63C 4620020D */ trunc.w.d $f8, $f0
/* 38CC30 E008A640 44164000 */ mfc1 $s6, $f8
/* 38CC34 E008A644 1AA0001D */ blez $s5, .LE008A6BC
/* 38CC38 E008A648 0000902D */ daddu $s2, $zero, $zero
/* 38CC3C E008A64C 26300010 */ addiu $s0, $s1, 0x10
.LE008A650:
/* 38CC40 E008A650 8E020020 */ lw $v0, 0x20($s0)
/* 38CC44 E008A654 18400003 */ blez $v0, .LE008A664
/* 38CC48 E008A658 2442FFFF */ addiu $v0, $v0, -1
/* 38CC4C E008A65C 1C400012 */ bgtz $v0, .LE008A6A8
/* 38CC50 E008A660 AE020020 */ sw $v0, 0x20($s0)
.LE008A664:
/* 38CC54 E008A664 0220202D */ daddu $a0, $s1, $zero
/* 38CC58 E008A668 0280282D */ daddu $a1, $s4, $zero
/* 38CC5C E008A66C 02C0302D */ daddu $a2, $s6, $zero
/* 38CC60 E008A670 C606FFF8 */ lwc1 $f6, -8($s0)
/* 38CC64 E008A674 C6000004 */ lwc1 $f0, 4($s0)
/* 38CC68 E008A678 C604FFFC */ lwc1 $f4, -4($s0)
/* 38CC6C E008A67C 46003180 */ add.s $f6, $f6, $f0
/* 38CC70 E008A680 C6000008 */ lwc1 $f0, 8($s0)
/* 38CC74 E008A684 C602000C */ lwc1 $f2, 0xc($s0)
/* 38CC78 E008A688 46002100 */ add.s $f4, $f4, $f0
/* 38CC7C E008A68C C6000000 */ lwc1 $f0, ($s0)
/* 38CC80 E008A690 0260382D */ daddu $a3, $s3, $zero
/* 38CC84 E008A694 46020000 */ add.s $f0, $f0, $f2
/* 38CC88 E008A698 E606FFF8 */ swc1 $f6, -8($s0)
/* 38CC8C E008A69C E604FFFC */ swc1 $f4, -4($s0)
/* 38CC90 E008A6A0 0C0228A4 */ jal func_E008A290
/* 38CC94 E008A6A4 E6000000 */ swc1 $f0, ($s0)
.LE008A6A8:
/* 38CC98 E008A6A8 26520001 */ addiu $s2, $s2, 1
/* 38CC9C E008A6AC 26100034 */ addiu $s0, $s0, 0x34
/* 38CCA0 E008A6B0 0255102A */ slt $v0, $s2, $s5
/* 38CCA4 E008A6B4 1440FFE6 */ bnez $v0, .LE008A650
/* 38CCA8 E008A6B8 26310034 */ addiu $s1, $s1, 0x34
.LE008A6BC:
/* 38CCAC E008A6BC 8FBF002C */ lw $ra, 0x2c($sp)
/* 38CCB0 E008A6C0 8FB60028 */ lw $s6, 0x28($sp)
/* 38CCB4 E008A6C4 8FB50024 */ lw $s5, 0x24($sp)
/* 38CCB8 E008A6C8 8FB40020 */ lw $s4, 0x20($sp)
/* 38CCBC E008A6CC 8FB3001C */ lw $s3, 0x1c($sp)
/* 38CCC0 E008A6D0 8FB20018 */ lw $s2, 0x18($sp)
/* 38CCC4 E008A6D4 8FB10014 */ lw $s1, 0x14($sp)
/* 38CCC8 E008A6D8 8FB00010 */ lw $s0, 0x10($sp)
/* 38CCCC E008A6DC 03E00008 */ jr $ra
/* 38CCD0 E008A6E0 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -4,7 +4,7 @@
.section .rodata
dlabel jtbl_E0044F00
.word LE0044A74_3559D4, LE0044A74_3559D4, LE0044A74_3559D4, LE0044A98_3559F8, LE0044B14_355A74, LE0044AF4_355A54, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044A74_3559D4, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044B14_355A74, LE0044A98_3559F8, 0
.word .LE0044A74_3559D4, .LE0044A74_3559D4, .LE0044A74_3559D4, .LE0044A98_3559F8, .LE0044B14_355A74, .LE0044AF4_355A54, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044A74_3559D4, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044B14_355A74, .LE0044A98_3559F8, 0
.section .text
@ -88,14 +88,14 @@ glabel stars_shimmer_appendGfx
/* 3559AC E0044A4C 0C080114 */ jal shim_guMtxCatF
/* 3559B0 E0044A50 27A60098 */ addiu $a2, $sp, 0x98
/* 3559B4 E0044A54 2E42001F */ sltiu $v0, $s2, 0x1f
/* 3559B8 E0044A58 1040002E */ beqz $v0, LE0044B14_355A74
/* 3559B8 E0044A58 1040002E */ beqz $v0, .LE0044B14_355A74
/* 3559BC E0044A5C 00121080 */ sll $v0, $s2, 2
/* 3559C0 E0044A60 3C01E004 */ lui $at, %hi(jtbl_E0044F00)
/* 3559C4 E0044A64 00220821 */ addu $at, $at, $v0
/* 3559C8 E0044A68 8C224F00 */ lw $v0, %lo(jtbl_E0044F00)($at)
/* 3559CC E0044A6C 00400008 */ jr $v0
/* 3559D0 E0044A70 00000000 */ nop
dlabel LE0044A74_3559D4
.LE0044A74_3559D4:
/* 3559D4 E0044A74 3C013F80 */ lui $at, 0x3f80
/* 3559D8 E0044A78 4481C000 */ mtc1 $at, $f24
/* 3559DC E0044A7C 3C013F00 */ lui $at, 0x3f00
@ -105,7 +105,7 @@ dlabel LE0044A74_3559D4
/* 3559EC E0044A8C 4481A000 */ mtc1 $at, $f20
/* 3559F0 E0044A90 080112CC */ j .LE0044B30
/* 3559F4 E0044A94 00000000 */ nop
dlabel LE0044A98_3559F8
.LE0044A98_3559F8:
/* 3559F8 E0044A98 3C013F80 */ lui $at, 0x3f80
/* 3559FC E0044A9C 4481C000 */ mtc1 $at, $f24
/* 355A00 E0044AA0 3C013F4C */ lui $at, 0x3f4c
@ -129,7 +129,7 @@ dlabel LE0044A98_3559F8
/* 355A48 E0044AE8 AC660000 */ sw $a2, ($v1)
/* 355A4C E0044AEC 080112CC */ j .LE0044B30
/* 355A50 E0044AF0 AC650004 */ sw $a1, 4($v1)
dlabel LE0044AF4_355A54
.LE0044AF4_355A54:
/* 355A54 E0044AF4 3C013FB3 */ lui $at, 0x3fb3
/* 355A58 E0044AF8 34213333 */ ori $at, $at, 0x3333
/* 355A5C E0044AFC 4481B000 */ mtc1 $at, $f22
@ -138,7 +138,7 @@ dlabel LE0044AF4_355A54
/* 355A68 E0044B08 4481A000 */ mtc1 $at, $f20
/* 355A6C E0044B0C 080112CC */ j .LE0044B30
/* 355A70 E0044B10 4600B606 */ mov.s $f24, $f22
dlabel LE0044B14_355A74
.LE0044B14_355A74:
/* 355A74 E0044B14 3C013F33 */ lui $at, 0x3f33
/* 355A78 E0044B18 34213333 */ ori $at, $at, 0x3333
/* 355A7C E0044B1C 4481A000 */ mtc1 $at, $f20

View File

@ -15,8 +15,8 @@ dlabel D_E0044E30
dlabel D_E0044E38
.double 0.4
dlabel D_E0044E40
.word 0xE0044284, 0xE0044284, 0xE0044344, 0xE00442A8, 0xE0044344, 0xE0044344
dlabel jtbl_E0044E40
.word .LE0044284, .LE0044284, .LE0044344, .LE00442A8, .LE0044344, .LE0044344
dlabel D_E0044E58
.double 0.01
@ -92,8 +92,8 @@ glabel stars_shimmer_main
/* 355058 E00440F8 0232102A */ slt $v0, $s1, $s2
/* 35505C E00440FC 104000B8 */ beqz $v0, .LE00443E0
/* 355060 E0044100 2463002C */ addiu $v1, $v1, 0x2c
/* 355064 E0044104 3C15E004 */ lui $s5, %hi(D_E0044E40)
/* 355068 E0044108 26B54E40 */ addiu $s5, $s5, %lo(D_E0044E40)
/* 355064 E0044104 3C15E004 */ lui $s5, %hi(jtbl_E0044E40)
/* 355068 E0044108 26B54E40 */ addiu $s5, $s5, %lo(jtbl_E0044E40)
/* 35506C E004410C 24700018 */ addiu $s0, $v1, 0x18
/* 355070 E0044110 2654FFFF */ addiu $s4, $s2, -1
/* 355074 E0044114 44940000 */ mtc1 $s4, $f0
@ -190,6 +190,7 @@ glabel stars_shimmer_main
/* 3551D8 E0044278 8C420000 */ lw $v0, ($v0)
/* 3551DC E004427C 00400008 */ jr $v0
/* 3551E0 E0044280 00000000 */ nop
.LE0044284:
/* 3551E4 E0044284 4608B002 */ mul.s $f0, $f22, $f8
/* 3551E8 E0044288 00000000 */ nop
/* 3551EC E004428C 4604A082 */ mul.s $f2, $f20, $f4
@ -199,6 +200,7 @@ glabel stars_shimmer_main
/* 3551FC E004429C E600FFF8 */ swc1 $f0, -8($s0)
/* 355200 E00442A0 080110F4 */ j .LE00443D0
/* 355204 E00442A4 E602FFFC */ swc1 $f2, -4($s0)
.LE00442A8:
/* 355208 E00442A8 0C080138 */ jal shim_rand_int
/* 35520C E00442AC 24040064 */ addiu $a0, $zero, 0x64
/* 355210 E00442B0 C7AA0090 */ lwc1 $f10, 0x90($sp)

View File

@ -12,8 +12,8 @@ dlabel D_E0044E68
dlabel D_E0044E70
.double 0.1
dlabel D_E0044E78
.word 0xE0044514, 0xE0044514, 0xE0044704, 0xE00446B0, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE004462C, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE0044704, 0xE004462C, 0x00000000
dlabel jtbl_E0044E78
.word .LE0044514, .LE0044514, .LE0044704, .LE00446B0, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE004462C, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE0044704, .LE004462C
dlabel D_E0044EF8
.double -0.02
@ -64,8 +64,8 @@ glabel stars_shimmer_update
/* 35541C E00444BC 2442FFFF */ addiu $v0, $v0, -1
/* 355420 E00444C0 184000EA */ blez $v0, .LE004486C
/* 355424 E00444C4 0000882D */ daddu $s1, $zero, $zero
/* 355428 E00444C8 3C03E004 */ lui $v1, %hi(D_E0044E78)
/* 35542C E00444CC 24634E78 */ addiu $v1, $v1, %lo(D_E0044E78)
/* 355428 E00444C8 3C03E004 */ lui $v1, %hi(jtbl_E0044E78)
/* 35542C E00444CC 24634E78 */ addiu $v1, $v1, %lo(jtbl_E0044E78)
/* 355430 E00444D0 00131080 */ sll $v0, $s3, 2
/* 355434 E00444D4 0043F021 */ addu $fp, $v0, $v1
/* 355438 E00444D8 3C17E004 */ lui $s7, %hi(D_E0044E04)
@ -84,6 +84,7 @@ glabel stars_shimmer_update
/* 355468 E0044508 8FC20000 */ lw $v0, ($fp)
/* 35546C E004450C 00400008 */ jr $v0
/* 355470 E0044510 00000000 */ nop
.LE0044514:
/* 355474 E0044514 02511021 */ addu $v0, $s2, $s1
/* 355478 E0044518 30420007 */ andi $v0, $v0, 7
/* 35547C E004451C 2643FFFF */ addiu $v1, $s2, -1
@ -156,6 +157,7 @@ glabel stars_shimmer_update
/* 355580 E0044620 E6000000 */ swc1 $f0, ($s0)
/* 355584 E0044624 08011215 */ j .LE0044854
/* 355588 E0044628 E6020004 */ swc1 $f2, 4($s0)
.LE004462C:
/* 35558C E004462C C6020000 */ lwc1 $f2, ($s0)
/* 355590 E0044630 460010A1 */ cvt.d.s $f2, $f2
/* 355594 E0044634 463A1082 */ mul.d $f2, $f2, $f26
@ -189,6 +191,7 @@ glabel stars_shimmer_update
/* 355604 E00446A4 E6040008 */ swc1 $f4, 8($s0)
/* 355608 E00446A8 08011215 */ j .LE0044854
/* 35560C E00446AC E600FFF4 */ swc1 $f0, -0xc($s0)
.LE00446B0:
/* 355610 E00446B0 02511021 */ addu $v0, $s2, $s1
/* 355614 E00446B4 00511021 */ addu $v0, $v0, $s1
/* 355618 E00446B8 30420007 */ andi $v0, $v0, 7
@ -212,6 +215,7 @@ glabel stars_shimmer_update
/* 355658 E00446F8 2402001E */ addiu $v0, $zero, 0x1e
/* 35565C E00446FC 08011215 */ j .LE0044854
/* 355660 E0044700 A6C20002 */ sh $v0, 2($s6)
.LE0044704:
/* 355664 E0044704 02511021 */ addu $v0, $s2, $s1
.LE0044708:
/* 355668 E0044708 00511021 */ addu $v0, $v0, $s1

View File

@ -3349,7 +3349,7 @@ segments:
vram: 0xE0038000
subsegments:
- [0x34DD20, c, spiky_white_aura]
- [0x34E710, data]
- [0x34E710]
- name: effect_gfx_spiky_white_aura
dir: effects/gfx
type: code
@ -3483,7 +3483,7 @@ segments:
vram: 0xE0042000
subsegments:
- [0x3547A0, c, stars_burst]
- [0x354F20, data]
- [0x354F20]
- name: effect_stars_shimmer
dir: effects
type: code
@ -3491,7 +3491,7 @@ segments:
vram: 0xE0044000
subsegments:
- [0x354F60, c, stars_shimmer]
- [0x355D10, data]
- [0x355D10]
- name: effect_rising_bubble
dir: effects
type: code
@ -3873,8 +3873,41 @@ segments:
vram: 0xE0066000
subsegments:
- [0x366030, c, radial_shimmer]
- [0x366C80, data]
- [0x366D60, bin] # radial_shimmer gfx
- [0x366C80]
- name: effect_gfx_radial_shimmer
dir: effects/gfx
type: code
start: 0x366D60
vram: 0x09000000
symbol_name_format: $VRAM_$ROM
subsegments:
- [0x366D60, c, radial_shimmer]
- start: 0x366D60
type: .data
name: radial_shimmer
subsegments:
- [0x366D60, i4, D_09000000_366D60, 64, 16]
- [0x366F60, i4, D_09000200_366F60, 64, 16]
- [0x367160, i4, D_09000400_367160, 64, 64]
- [0x367960, i4, D_09000C00_367960, 32, 32]
- [0x367B60, i4, D_09000E00_367B60, 64, 64]
- [0x368360, i4, D_09001600_368360, 64, 64]
- [0x368B60, i4, D_09001E00_368B60, 64, 64]
- [0x369360, i4, D_09002600_369360, 64, 64]
- [0x369B60, i4, D_09002E00_369B60, 32, 32]
- [0x369D60, vtx, D_09003000_369D60]
- [0x369F00, vtx, D_090031A0_369F00]
- [0x36A0A0, gfx, D_09003340_36A0A0]
- [0x36A188, gfx, D_09003428_36A188]
- [0x36A268, gfx, D_09003508_36A268]
- [0x36A348, gfx, D_090035E8_36A348]
- [0x36A428, gfx, D_090036C8_36A428]
- [0x36A508, gfx, D_090037A8_36A508]
- [0x36A590, gfx, D_09003830_36A590]
- [0x36A618, gfx, D_090038B8_36A618]
- [0x36A708, gfx, D_090039A8_36A708]
- [0x36A7E8, gfx, D_09003A88_36A7E8]
- [0x36A8C8] # padding
- name: effect_ending_decals
dir: effects
type: code
@ -4121,7 +4154,7 @@ segments:
vram: 0xE0078000
subsegments:
- [0x37A3F0, c, bulb_glow]
- [0x37ACF0, data]
- [0x37ACF0]
- name: effect_gfx_bulb_glow
dir: effects/gfx
type: code
@ -4457,8 +4490,29 @@ segments:
vram: 0xE008A000
subsegments:
- [0x38C5F0, c, snowfall]
- [0x38D040, data]
- [0x38D070, bin] # snowfall gfx
- [0x38D040]
- name: effect_gfx_snowfall
dir: effects/gfx
type: code
start: 0x38D070
vram: 0x09000000
symbol_name_format: $VRAM_$ROM
subsegments:
- [0x38D070, c, snowfall]
- start: 0x38D070
type: .data
name: snowfall
subsegments:
- [0x38D070, i4, D_09000000_38D070, 16, 16]
- [0x38D0F0, i4, D_09000080_38D0F0, 64, 64]
- [0x38D8F0, vtx, D_09000880_38D8F0]
- [0x38DA70, vtx, D_09000A00_38DA70]
- [0x38DAF0, vtx, D_09000A80_38DAF0]
- [0x38DC70]
- [0x38DC80, gfx, D_09000C10_38DC80]
- [0x38DDA0, gfx, D_09000D30_38DDA0]
- [0x38DDC0, gfx, D_09000D50_38DDC0]
- [0x38DDF8] # padding
- name: effect_effect_46
dir: effects
type: code
@ -5395,7 +5449,7 @@ segments:
vram: 0xE00CA000
subsegments:
- [0x3D0500, c, effect_65]
- [0x3D11B0, data]
- [0x3D11B0]
- name: effect_gfx_effect_65
dir: effects/gfx
type: code
@ -5839,7 +5893,7 @@ segments:
vram: 0xE010A000
subsegments:
- [0x3E43A0, c, firework_rocket]
- [0x3E5060, data]
- [0x3E5060]
- name: effect_gfx_firework_rocket
dir: effects/gfx
type: code
@ -6361,8 +6415,34 @@ segments:
vram: 0xE011E000
subsegments:
- [0x409990, c, ice_pillar]
- [0x40A180, data]
- [0x40A1C0, bin] # ice_pillar gfx
- [0x40A180]
- name: effect_gfx_ice_pillar
dir: effects/gfx
type: code
start: 0x40A1C0
vram: 0x09000000
symbol_name_format: $VRAM_$ROM
subsegments:
- [0x40A1C0, c, ice_pillar]
- start: 0x40A1C0
type: .data
name: ice_pillar
subsegments:
- [0x40A1C0, i4, D_09000000_40A1C0, 32, 64]
- [0x40A5C0, i4, D_09000400_40A5C0, 32, 64]
- [0x40A9C0, i4, D_09000800_40A9C0, 32, 64]
- [0x40ADC0, i4, D_09000C00_40ADC0, 32, 64]
- [0x40B1C0, gfx, D_09001000_40B1C0]
- [0x40B268, vtx, D_090010A8_40B268]
- [0x40B2A8, vtx, D_090010E8_40B2A8]
- [0x40B2E8, vtx, D_09001128_40B2E8]
- [0x40B328, vtx, D_09001168_40B328]
- [0x40B358]
- [0x40B368, gfx, D_090011A8_40B368]
- [0x40B388, gfx, D_090011C8_40B388]
- [0x40B3A8, gfx, D_090011E8_40B3A8]
- [0x40B3C8, gfx, D_09001208_40B3C8]
- [0x40B3E8]
- name: effect_sun
dir: effects
type: code

View File

@ -48,6 +48,17 @@ D_09004458 = 0x09004458;
D_09004508 = 0x09004508;
D_09004600 = 0x09004600;
// effect_stars_shimmer
D_09000F20 = 0x09000F20;
D_090011C8 = 0x090011C8;
D_090011E0 = 0x090011E0;
D_090011F8 = 0x090011F8;
D_09001210 = 0x09001210;
D_09001228 = 0x09001228;
D_09001240 = 0x09001240;
D_09001258 = 0x09001258;
D_09001270 = 0x09001270;
// effect_spirit_card
D_090042E0 = 0x090042E0;