Matched effects funcs (#818)

* thunderbolt_ring: Matched update and main

* snowfall_main: Matched

* shiny_flare_main: Matched

* shiny_flare_update: Matched

* thunderbolt_ring_update: clean up

* rising_bubble_main: matched

* ring_blast: Matched main and update

* quizmo_stage: Matched main and update

* ring_blast_main: Fixed warning message

* PR_818: PR clean up
This commit is contained in:
Spencer Vaughn 2022-10-12 07:39:03 -05:00 committed by GitHub
parent 5df977a353
commit fec4a513ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 425 additions and 803 deletions

View File

@ -585,20 +585,27 @@ typedef struct StarsShimmerFXData {
} StarsShimmerFXData; // size = unknown } StarsShimmerFXData; // size = unknown
typedef struct RisingBubbleFXData { typedef struct RisingBubbleFXData {
/* 0x00 */ char unk_00[0x08]; /* 0x00 */ s32 unk_00;
/* 0x08 */ f32 unk_08; /* 0x04 */ Vec3f pos;
/* 0x0C */ char unk_0C[0x04];
/* 0x10 */ f32 unk_10; /* 0x10 */ f32 unk_10;
/* 0x14 */ s32 unk_14; /* 0x14 */ s32 unk_14;
/* 0x18 */ s32 unk_18; /* 0x18 */ s32 timeLeft;
/* 0x1C */ s32 unk_1C; /* 0x1C */ s32 lifeTime;
/* 0x20 */ s32 unk_20; /* 0x20 */ s32 unk_20;
/* 0x24 */ f32 unk_24; /* 0x24 */ f32 unk_24;
} RisingBubbleFXData; // size = unknown } RisingBubbleFXData; // size = 0x28
typedef struct RingBlastFXData { typedef struct RingBlastFXData {
/* 0x00 */ char todo[0]; /* 0x00 */ u16 unk_00;
} RingBlastFXData; // size = unknown /* 0x04 */ Vec3f pos;
/* 0x10 */ f32 unk_10;
/* 0x14 */ s32 timeLeft;
/* 0x18 */ s32 lifeTime;
/* 0x1C */ s32 unk_1C;
/* 0x20 */ f32 unk_20;
/* 0x24 */ f32 unk_24;
/* 0x28 */ f32 unk_28;
} RingBlastFXData; // size = 0x2C
// Likely to be the same as GreenImpactFXData and RedImpactFXData // Likely to be the same as GreenImpactFXData and RedImpactFXData
typedef struct ShockwaveFXData { typedef struct ShockwaveFXData {
@ -1121,8 +1128,16 @@ typedef struct ConfettiFXData {
} ConfettiFXData; // size = 0x34 } ConfettiFXData; // size = 0x34
typedef struct SnowfallFXData { typedef struct SnowfallFXData {
/* 0x00 */ char todo[0]; /* 0x00 */ s32 unk_00;
} SnowfallFXData; // size = unknown /* 0x04 */ s32 unk_04;
/* 0x08 */ s32 unk_08;
/* 0x0C */ char unk_0C[0x14];
/* 0x20 */ s32 timeLeft;
/* 0x24 */ s32 lifeTime;
/* 0x28 */ s32 unk_28;
/* 0x2C */ s32 unk_2C;
/* 0x30 */ s32 unk_30;
} SnowfallFXData; // size = 0x34
typedef struct Effect46FXData { typedef struct Effect46FXData {
/* 0x00 */ s32 unk_00; /* 0x00 */ s32 unk_00;
@ -1272,10 +1287,10 @@ typedef struct ChompDropFXData {
} ChompDropFXData; // size = 0x48 } ChompDropFXData; // size = 0x48
typedef struct QuizmoStageFXData { typedef struct QuizmoStageFXData {
/* 0x00 */ char unk_00[0x4]; /* 0x00 */ s32 unk_00;
/* 0x04 */ s32 vanishTimer; /* 0x04 */ s32 vanishTimer;
/* 0x08 */ s32 lifetime; /* 0x08 */ s32 lifetime;
/* 0x10 */ Vec3f origin; /* 0x0C */ Vec3f origin;
/* 0x18 */ s32 microphoneRaiseAmt; /* 0x18 */ s32 microphoneRaiseAmt;
/* 0x1C */ s32 rearWallRaiseAmt; /* 0x1C */ s32 rearWallRaiseAmt;
/* 0x20 */ s32 leftWallRaiseAmt; /* 0x20 */ s32 leftWallRaiseAmt;
@ -1286,8 +1301,8 @@ typedef struct QuizmoStageFXData {
/* 0x34 */ s32 lightScrollDelay; /* 0x34 */ s32 lightScrollDelay;
/* 0x38 */ s32 unkEffectMode; /* 0x38 */ s32 unkEffectMode;
/* 0x3C */ s32 unk_3C; // stage hidden when == 0xFF /* 0x3C */ s32 unk_3C; // stage hidden when == 0xFF
/* 0x3C */ char unk_40[0x10]; /* 0x40 */ char unk_40[0x04];
} QuizmoStageFXData; // size ~ 0x50 (as allocated on heap) } QuizmoStageFXData; // size 0x44
typedef struct RadiatingEnergyOrbFXData { typedef struct RadiatingEnergyOrbFXData {
/* 0x00 */ char todo[0]; /* 0x00 */ char todo[0];
@ -1381,9 +1396,18 @@ typedef struct SnakingStaticFXData {
} SnakingStaticFXData; // size = unknown } SnakingStaticFXData; // size = unknown
typedef struct ThunderboltRingFXData { typedef struct ThunderboltRingFXData {
/* 0x00 */ char unk_00[0x30]; /* 0x00 */ s32 unk_00;
/* 0x04 */ Vec3f pos;
/* 0x10 */ s32 timeLeft;
/* 0x14 */ s32 lifeTime;
/* 0x18 */ s32 unk_18;
/* 0x1C */ s32 unk_1C;
/* 0x20 */ s32 unk_20;
/* 0x24 */ s32 unk_24;
/* 0x28 */ f32 unk_28;
/* 0x2C */ f32 unk_2C;
/* 0x30 */ s32 unk_30; /* 0x30 */ s32 unk_30;
} ThunderboltRingFXData; // size = ? } ThunderboltRingFXData; // size = 0x34
typedef struct SquirtFXData { typedef struct SquirtFXData {
/* 0x00 */ char todo[0]; /* 0x00 */ char todo[0];
@ -1672,8 +1696,17 @@ typedef struct TattleWindowFXData {
} TattleWindowFXData; // size = 0x38 } TattleWindowFXData; // size = 0x38
typedef struct ShinyFlareFXData { typedef struct ShinyFlareFXData {
/* 0x00 */ char todo[0]; /* 0x00 */ s32 unk_00;
} ShinyFlareFXData; // size = unknown /* 0x04 */ Vec3f pos;
/* 0x10 */ s32 timeLeft;
/* 0x14 */ s32 lifeTime;
/* 0x18 */ s32 unk_18;
/* 0x1C */ s32 unk_1C;
/* 0x20 */ s32 unk_20;
/* 0x24 */ s32 unk_24;
/* 0x28 */ f32 unk_28;
/* 0x2C */ f32 unk_2C;
} ShinyFlareFXData; // size = 0x30
typedef struct HuffPuffBreathFXData { typedef struct HuffPuffBreathFXData {
/* 0x00 */ s32 unk_00; /* 0x00 */ s32 unk_00;
@ -1764,18 +1797,18 @@ typedef struct HieroglyphsFXData {
} HieroglyphsFXData; // size = 0x3C } HieroglyphsFXData; // size = 0x3C
typedef struct MiscParticlesFXData { typedef struct MiscParticlesFXData {
char unk_00[0x4]; /* 0x00 */ char unk_00[0x4];
Vec3f pos; /* 0x04 */ Vec3f pos;
f32 scaleX; /* 0x10 */ f32 scaleX;
f32 scaleY; /* 0x14 */ f32 scaleY;
char unk_18[0x20]; /* 0x18 */ char unk_18[0x20];
s32 unk_38; /* 0x38 */ s32 unk_38;
s32 unk_3C; /* 0x3C */ s32 unk_3C;
s32 unk_40; /* 0x40 */ s32 unk_40;
char unk_44[0x4]; /* 0x44 */ char unk_44[0x4];
s32 unk_48; /* 0x48 */ s32 unk_48;
s32 unk_4C; /* 0x4C */ s32 unk_4C;
s32 unk_50; /* 0x50 */ s32 unk_50;
} MiscParticlesFXData; // size = ? } MiscParticlesFXData; // size = ?
typedef struct StaticStatusFXData { typedef struct StaticStatusFXData {

View File

@ -67,8 +67,8 @@ FX_MAIN(purple_ring_main);
FX_MAIN(flame_main); FX_MAIN(flame_main);
void stars_burst_main(s32, f32, f32, f32, f32, f32, s32); void stars_burst_main(s32, f32, f32, f32, f32, f32, s32);
FX_MAIN(stars_shimmer_main); FX_MAIN(stars_shimmer_main);
FX_MAIN(rising_bubble_main); void rising_bubble_main(s32, f32, f32, f32, f32);
FX_MAIN(ring_blast_main); void ring_blast_main(s32, f32, f32, f32, f32, s32);
void shockwave_main(s32, f32, f32, f32); void shockwave_main(s32, f32, f32, f32);
void music_note_main(s32, f32, f32, f32); void music_note_main(s32, f32, f32, f32);
void smoke_burst_main(s32, f32, f32, f32, f32, s32); void smoke_burst_main(s32, f32, f32, f32, f32, s32);
@ -100,7 +100,7 @@ EffectInstance* disable_x_main(s32, f32, f32, f32, s32);
EffectInstance* bombette_breaking_main(s32, s32, s32, f32, s32, s32); EffectInstance* bombette_breaking_main(s32, s32, s32, f32, s32, s32);
FX_MAIN(firework_main); FX_MAIN(firework_main);
FX_MAIN(confetti_main); FX_MAIN(confetti_main);
FX_MAIN(snowfall_main); EffectInstance* snowfall_main(s32, s32);
FX_MAIN(fx_46_main); FX_MAIN(fx_46_main);
EffectInstance* gather_magic_main(s32, f32, f32, f32, f32, s32); EffectInstance* gather_magic_main(s32, f32, f32, f32, f32, s32);
EffectInstance* attack_result_text_main(s32, f32, f32, f32, f32, s32); EffectInstance* attack_result_text_main(s32, f32, f32, f32, f32, s32);
@ -109,7 +109,7 @@ EffectInstance* flashing_box_shockwave_main(s32, f32, f32, f32, f32, f32);
EffectInstance* balloon_main(s32, f32, f32, f32, f32, s32); EffectInstance* balloon_main(s32, f32, f32, f32, f32, s32);
EffectInstance* floating_rock_main(s32, f32, f32, f32, f32, f32, f32, f32, s32); EffectInstance* floating_rock_main(s32, f32, f32, f32, f32, f32, f32, f32, s32);
EffectInstance* chomp_drop_main(s32, f32, f32, f32, f32, s32, f32, s32, f32, s32); EffectInstance* chomp_drop_main(s32, f32, f32, f32, f32, s32, f32, s32, f32, s32);
FX_MAIN(quizmo_stage_main); EffectInstance* quizmo_stage_main(s32, f32, f32, f32);
FX_MAIN(radiating_energy_orb_main); FX_MAIN(radiating_energy_orb_main);
FX_MAIN(quizmo_answer_main); FX_MAIN(quizmo_answer_main);
FX_MAIN(motion_blur_flame_main); FX_MAIN(motion_blur_flame_main);
@ -119,7 +119,7 @@ FX_MAIN(quizmo_audience_main);
EffectInstance* butterflies_main(s32, f32, f32, f32); EffectInstance* butterflies_main(s32, f32, f32, f32);
EffectInstance* stat_change_main(s32, f32, f32, f32, f32, s32); EffectInstance* stat_change_main(s32, f32, f32, f32, f32, s32);
EffectInstance* snaking_static_main(s32, f32, f32, f32, f32, s32); EffectInstance* snaking_static_main(s32, f32, f32, f32, f32, s32);
FX_MAIN(thunderbolt_ring_main); EffectInstance* thunderbolt_ring_main(s32, f32, f32, f32, f32, s32);
FX_MAIN(squirt_main); FX_MAIN(squirt_main);
FX_MAIN(water_block_main); FX_MAIN(water_block_main);
FX_MAIN(waterfall_main); FX_MAIN(waterfall_main);
@ -139,7 +139,7 @@ EffectInstance* red_impact_main(s32, f32, f32, f32, f32);
EffectInstance* floating_cloud_puff_main(s32, f32, f32, f32, f32, s32); EffectInstance* floating_cloud_puff_main(s32, f32, f32, f32, f32, s32);
FX_MAIN(energy_in_out_main); FX_MAIN(energy_in_out_main);
EffectInstance* tattle_window_main(s32, f32, f32, f32, f32, s32); EffectInstance* tattle_window_main(s32, f32, f32, f32, f32, s32);
FX_MAIN(shiny_flare_main); EffectInstance* shiny_flare_main(s32, f32, f32, f32, f32);
EffectInstance* huff_puff_breath_main(s32, f32, f32, f32, f32, f32, f32, s32); EffectInstance* huff_puff_breath_main(s32, f32, f32, f32, f32, f32, f32, s32);
EffectInstance* cold_breath_main(s32, f32, f32, f32, f32, s32); EffectInstance* cold_breath_main(s32, f32, f32, f32, f32, s32);
EffectInstance* embers_main(s32, f32, f32, f32, f32, f32, f32, s32, s32, f32, f32); EffectInstance* embers_main(s32, f32, f32, f32, f32, f32, f32, s32, s32, f32, f32);

View File

@ -3,12 +3,81 @@
void quizmo_stage_appendGfx(void* effect); void quizmo_stage_appendGfx(void* effect);
INCLUDE_ASM(s32, "effects/quizmo_stage", quizmo_stage_main); void quizmo_stage_init(EffectInstance* effect);
void quizmo_stage_update(EffectInstance* effect);
void quizmo_stage_render(EffectInstance* effect);
void quizmo_stage_init(void) { EffectInstance* quizmo_stage_main(s32 arg0, f32 posX, f32 posY, f32 posZ) {
EffectBlueprint effectBp;
EffectInstance* effect;
QuizmoStageFXData* data;
s32 numParts = 1;
effectBp.init = quizmo_stage_init;
effectBp.update = quizmo_stage_update;
effectBp.renderWorld = quizmo_stage_render;
effectBp.unk_00 = 0;
effectBp.unk_14 = 0;
effectBp.effectID = EFFECT_QUIZMO_STAGE;
effect = shim_create_effect_instance(&effectBp);
effect->numParts = numParts;
data = effect->data.quizmoStage = shim_general_heap_malloc(numParts * sizeof(*data));
ASSERT(data != NULL);
data->vanishTimer = 100;
data->microphoneRaiseAmt = 255;
data->rearWallRaiseAmt = 255;
data->leftWallRaiseAmt = 255;
data->rightWallRaiseAmt = 255;
data->podiumRaiseAmt = 255;
data->lightScrollIncrement = 64;
data->unk_00 = arg0;
data->origin.x = posX;
data->origin.y = posY;
data->origin.z = posZ;
data->lightScrollAmt = 0;
data->lightScrollDelay = 15;
data->unkEffectMode = 0;
data->lifetime = 0;
return effect;
} }
INCLUDE_ASM(s32, "effects/quizmo_stage", quizmo_stage_update); void quizmo_stage_init(EffectInstance* effect) {
}
void quizmo_stage_update(EffectInstance *effect) {
QuizmoStageFXData *data = effect->data.quizmoStage;
s32 lifeTime;
if (effect->flags & 16) {
effect->flags &= ~16;
data->vanishTimer = 30;
}
if (data->vanishTimer < 100) {
data->vanishTimer--;
}
data->lifetime++;
lifeTime = data->lifetime;
if (data->vanishTimer < 0) {
shim_remove_effect(effect);
return;
}
if (data->vanishTimer < 16) {
data->microphoneRaiseAmt = data->vanishTimer * 16;
}
if ((lifeTime % data->lightScrollDelay) == 0) {
data->lightScrollAmt += data->lightScrollIncrement;
if (data->lightScrollAmt >= 1025) {
data->lightScrollAmt -= 1024;
}
}
}
void quizmo_stage_render(EffectInstance* effect) { void quizmo_stage_render(EffectInstance* effect) {
RenderTask renderTask; RenderTask renderTask;

View File

@ -2,13 +2,67 @@
#include "effects_internal.h" #include "effects_internal.h"
void ring_blast_appendGfx(void* effect); void ring_blast_appendGfx(void* effect);
void ring_blast_init(EffectInstance* effect);
void ring_blast_update(EffectInstance* effect);
void ring_blast_render(EffectInstance* effect);
INCLUDE_ASM(s32, "effects/ring_blast", ring_blast_main); void ring_blast_main(s32 arg0, f32 posX, f32 posY, f32 posZ, f32 arg4, s32 arg5) {
EffectBlueprint effectBp;
EffectInstance* effect;
RingBlastFXData* data;
s32 numParts = 1;
void ring_blast_init(void) { effectBp.init = ring_blast_init;
effectBp.update = &ring_blast_update;
effectBp.renderWorld = ring_blast_render;
effectBp.unk_00 = 0;
effectBp.unk_14 = 0;
effectBp.effectID = EFFECT_RING_BLAST;
effect = shim_create_effect_instance(&effectBp);
effect->numParts = numParts;
data = effect->data.ringBlast = shim_general_heap_malloc(numParts * sizeof(*data));
ASSERT(data != NULL);
shim_mem_clear(data, numParts * sizeof(*data));
data->timeLeft = arg5;
data->lifeTime = 0;
data->unk_1C = arg5;
data->unk_20 = 0;
data->unk_00 = arg0;
data->pos.x = posX;
data->pos.y = posY;
data->pos.z = posZ;
data->unk_10 = arg4;
data->unk_24 = 0;
if (arg0 == 0) {
data->unk_28 = 0;
return;
}
data->unk_28 = 40;
} }
INCLUDE_ASM(s32, "effects/ring_blast", ring_blast_update); void ring_blast_init(EffectInstance* effect) {
}
void ring_blast_update(EffectInstance* effect) {
RingBlastFXData* data = effect->data.ringBlast;
data->unk_20 = data->lifeTime * 8.0f / data->unk_1C;
data->lifeTime++;
data->timeLeft--;
if (data->timeLeft < 0) {
shim_remove_effect(effect);
return;
}
data->unk_24 += data->unk_28;
if (data->unk_00 == 0) {
data->unk_10 += 0.1;
}
}
void ring_blast_render(EffectInstance* effect) { void ring_blast_render(EffectInstance* effect) {
RenderTask renderTask; RenderTask renderTask;

View File

@ -1,30 +1,65 @@
#include "common.h" #include "common.h"
#include "effects_internal.h" #include "effects_internal.h"
void rising_bubble_init(EffectInstance* effect);
void rising_bubble_update(EffectInstance* effect);
void rising_bubble_render(EffectInstance* effect);
void rising_bubble_appendGfx(void* effect); void rising_bubble_appendGfx(void* effect);
INCLUDE_ASM(s32, "effects/rising_bubble", rising_bubble_main); void rising_bubble_main(s32 arg0, f32 posX, f32 posY, f32 posZ, f32 arg4) {
EffectBlueprint effectBp;
EffectInstance* effect;
RisingBubbleFXData* data;
s32 numParts = 1;
void rising_bubble_init(void) { effectBp.unk_00 = 0;
effectBp.init = rising_bubble_init;
effectBp.update = rising_bubble_update;
effectBp.renderWorld = rising_bubble_render;
effectBp.unk_14 = 0;
effectBp.effectID = EFFECT_RISING_BUBBLE;
effect = shim_create_effect_instance(&effectBp);
effect->numParts = numParts;
data = effect->data.risingBubble = shim_general_heap_malloc(numParts * sizeof(*data));
ASSERT(data != NULL);
data->unk_00 = arg0;
data->pos.x = posX;
data->pos.y = posY;
data->pos.z = posZ;
data->unk_14 = 0;
data->lifeTime = 0;
if (arg4 != 0.0f) {
data->unk_10 = ((shim_rand_int(3) * 0.1) + 0.7) * 0.4;
} else {
data->unk_10 = 1.0f;
}
data->timeLeft = 32;
data->unk_20 = shim_rand_int(31);
data->unk_24 = posY + arg4;
}
void rising_bubble_init(EffectInstance* effect) {
} }
void rising_bubble_update(EffectInstance* effect) { void rising_bubble_update(EffectInstance* effect) {
RisingBubbleFXData* data = effect->data.risingBubble; RisingBubbleFXData* data = effect->data.risingBubble;
s32 temp_a2 = data->unk_18; s32 timeLeft = data->timeLeft;
if (data->unk_08 >= data->unk_24) { if (data->pos.y >= data->unk_24) {
data->unk_18--; data->timeLeft--;
data->unk_1C++; data->lifeTime++;
if (data->unk_18 < 0) { if (data->timeLeft < 0) {
shim_remove_effect(effect); shim_remove_effect(effect);
return; return;
} }
if (temp_a2 >= 6) { if (timeLeft >= 6) {
data->unk_14 += (120 - data->unk_14) * 0.3; data->unk_14 += (120 - data->unk_14) * 0.3;
} else { } else {
data->unk_14 = temp_a2 * 20; data->unk_14 = timeLeft * 20;
} }
data->unk_20++; data->unk_20++;
@ -37,8 +72,8 @@ void rising_bubble_update(EffectInstance* effect) {
} }
data->unk_14 = 255; data->unk_14 = 255;
data->unk_1C++; data->lifeTime++;
data->unk_08 += 2.0f; data->pos.y += 2.0f;
} }
void rising_bubble_render(EffectInstance* effect) { void rising_bubble_render(EffectInstance* effect) {

View File

@ -2,13 +2,70 @@
#include "effects_internal.h" #include "effects_internal.h"
void shiny_flare_appendGfx(void* effect); void shiny_flare_appendGfx(void* effect);
void shiny_flare_init(EffectInstance* effect);
void shiny_flare_update(EffectInstance* effect);
void shiny_flare_render(EffectInstance* effect);
INCLUDE_ASM(s32, "effects/shiny_flare", shiny_flare_main); EffectInstance* shiny_flare_main(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) {
EffectBlueprint effectBp;
EffectInstance* effect;
ShinyFlareFXData* data;
s32 numParts = 1;
void shiny_flare_init(void) { effectBp.init = shiny_flare_init;
effectBp.update = shiny_flare_update;
effectBp.renderWorld = shiny_flare_render;
effectBp.unk_00 = 0;
effectBp.unk_14 = 0;
effectBp.effectID = EFFECT_SHINY_FLARE;
effect = shim_create_effect_instance(&effectBp);
effect->numParts = numParts;
data = effect->data.shinyFlare = shim_general_heap_malloc(numParts * sizeof(*data));
ASSERT(data != NULL);
data->unk_00 = arg0;
data->lifeTime = 0;
data->timeLeft = 10;
data->unk_24 = 255;
data->pos.x = arg1;
data->pos.y = arg2;
data->pos.z = arg3;
data->unk_28 = arg4;
data->unk_18 = 70;
data->unk_1C = 180;
data->unk_20 = 120;
data->unk_2C = 0;
return effect;
} }
INCLUDE_ASM(s32, "effects/shiny_flare", shiny_flare_update); void shiny_flare_init(EffectInstance* effect) {
}
void shiny_flare_update(EffectInstance *effect) {
ShinyFlareFXData *data = effect->data.shinyFlare;
if (effect->flags & 16) {
effect->flags &= ~16;
data->timeLeft = 10;
}
if (data->timeLeft < 1000) {
data->timeLeft--;
}
data->lifeTime++;
if (data->timeLeft < 0) {
shim_remove_effect(effect);
return;
}
if (data->timeLeft < 4) {
data->unk_2C *= 0.5;
return;
}
data->unk_2C = data->lifeTime * 0.2f + 0.3;
}
void shiny_flare_render(EffectInstance* effect) { void shiny_flare_render(EffectInstance* effect) {
RenderTask renderTask; RenderTask renderTask;

View File

@ -1,13 +1,53 @@
#include "common.h" #include "common.h"
#include "effects_internal.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); void snowfall_appendGfx(void* effect);
INCLUDE_ASM(s32, "effects/snowfall", func_E008A000); INCLUDE_ASM(s32, "effects/snowfall", func_E008A000);
INCLUDE_ASM(s32, "effects/snowfall", snowfall_main); void func_E008A000(SnowfallFXData* data);
void snowfall_init(void) { EffectInstance* snowfall_main(s32 arg0, s32 arg1) {
EffectBlueprint effectBp;
EffectInstance* effect;
SnowfallFXData* data;
s32 numParts = arg1 + 1;
s32 i;
effectBp.init = snowfall_init;
effectBp.update = snowfall_update;
effectBp.renderWorld = snowfall_render;
effectBp.unk_00 = 0;
effectBp.unk_14 = 0;
effectBp.effectID = EFFECT_SNOWFALL;
effect = shim_create_effect_instance(&effectBp);
effect->numParts = numParts;
data = effect->data.snowfall = shim_general_heap_malloc(numParts * sizeof(*data));
ASSERT(data != NULL);
data->timeLeft = 100;
data->lifeTime = 0;
data->unk_28 = 255;
data->unk_04 = arg0;
data->unk_2C = arg1;
data->unk_00 = 1;
data++;
for (i = 0; i < arg1; i++, data++) {
func_E008A000(data);
data->unk_30 = 0;
}
return effect;
}
void snowfall_init(EffectInstance* effect) {
} }
INCLUDE_ASM(s32, "effects/snowfall", func_E008A290); INCLUDE_ASM(s32, "effects/snowfall", func_E008A290);

View File

@ -1,14 +1,85 @@
#include "common.h" #include "common.h"
#include "effects_internal.h" #include "effects_internal.h"
void thunderbolt_ring_init(EffectInstance* effect);
void thunderbolt_ring_update(EffectInstance* effect);
void thunderbolt_ring_render(EffectInstance* effect);
void thunderbolt_ring_appendGfx(void* effect); void thunderbolt_ring_appendGfx(void* effect);
INCLUDE_ASM(s32, "effects/thunderbolt_ring", thunderbolt_ring_main); EffectInstance* thunderbolt_ring_main(s32 arg0, f32 posX, f32 posY, f32 posZ, f32 arg4, s32 lifeTime) {
EffectBlueprint effectBp;
EffectInstance* effect;
ThunderboltRingFXData* data;
s32 numParts = 1;
void thunderbolt_ring_init(void) { effectBp.init = thunderbolt_ring_init;
effectBp.update = thunderbolt_ring_update;
effectBp.renderWorld = thunderbolt_ring_render;
effectBp.unk_00 = 0;
effectBp.unk_14 = 0;
effectBp.effectID = EFFECT_THUNDERBOLT_RING;
effect = shim_create_effect_instance(&effectBp);
effect->numParts = numParts;
data = effect->data.thunderboltRing = shim_general_heap_malloc(numParts * sizeof(*data));
ASSERT(data != NULL);
data->unk_00 = arg0;
data->lifeTime = 0;
if (lifeTime <= 0) {
data->timeLeft = 1000;
} else {
data->timeLeft = lifeTime;
}
data->unk_24 = 255;
data->pos.x = posX;
data->pos.y = posY;
data->pos.z = posZ;
data->unk_28 = arg4;
data->unk_18 = 255;
data->unk_1C = 230;
data->unk_20 = 50;
data->unk_30 = 0;
data->unk_2C = 1.0f;
return effect;
} }
INCLUDE_ASM(s32, "effects/thunderbolt_ring", thunderbolt_ring_update); void thunderbolt_ring_init(EffectInstance* effect) {
}
void thunderbolt_ring_update(EffectInstance *effect) {
ThunderboltRingFXData* data = effect->data.thunderboltRing;
s32 lifeTime;
s32 timeLeft;
if (effect->flags & 16) {
effect->flags &= ~16;
data->timeLeft = 16;
}
if (data->timeLeft < 1000) {
data->timeLeft--;
}
timeLeft = data->timeLeft;
data->lifeTime++;
lifeTime = data->lifeTime;
if (timeLeft < 0) {
shim_remove_effect(effect);
return;
}
if (timeLeft < 8) {
data->unk_2C += (8 - timeLeft) * 0.3;
}
if (lifeTime < 16) {
data->unk_24 = (lifeTime * 16) + 15;
}
if (timeLeft < 8) {
data->unk_24 = (timeLeft * 32) + 31;
}
}
void thunderbolt_ring_render(EffectInstance* effect) { void thunderbolt_ring_render(EffectInstance* effect) {
RenderTask renderTask; RenderTask renderTask;

View File

@ -1,70 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel quizmo_stage_main
/* 3981F0 E009C000 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 3981F4 E009C004 F7B40038 */ sdc1 $f20, 0x38($sp)
/* 3981F8 E009C008 4485A000 */ mtc1 $a1, $f20
/* 3981FC E009C00C AFB1002C */ sw $s1, 0x2c($sp)
/* 398200 E009C010 0080882D */ daddu $s1, $a0, $zero
/* 398204 E009C014 F7B60040 */ sdc1 $f22, 0x40($sp)
/* 398208 E009C018 4486B000 */ mtc1 $a2, $f22
/* 39820C E009C01C 27A40010 */ addiu $a0, $sp, 0x10
/* 398210 E009C020 F7B80048 */ sdc1 $f24, 0x48($sp)
/* 398214 E009C024 4487C000 */ mtc1 $a3, $f24
/* 398218 E009C028 3C02E00A */ lui $v0, %hi(quizmo_stage_init)
/* 39821C E009C02C 2442C100 */ addiu $v0, $v0, %lo(quizmo_stage_init)
/* 398220 E009C030 AFA20018 */ sw $v0, 0x18($sp)
/* 398224 E009C034 3C02E00A */ lui $v0, %hi(quizmo_stage_update)
/* 398228 E009C038 2442C108 */ addiu $v0, $v0, %lo(quizmo_stage_update)
/* 39822C E009C03C AFA2001C */ sw $v0, 0x1c($sp)
/* 398230 E009C040 3C02E00A */ lui $v0, %hi(quizmo_stage_render)
/* 398234 E009C044 2442C1DC */ addiu $v0, $v0, %lo(quizmo_stage_render)
/* 398238 E009C048 AFA20020 */ sw $v0, 0x20($sp)
/* 39823C E009C04C 2402004E */ addiu $v0, $zero, 0x4e
/* 398240 E009C050 AFBF0030 */ sw $ra, 0x30($sp)
/* 398244 E009C054 AFB00028 */ sw $s0, 0x28($sp)
/* 398248 E009C058 AFA00010 */ sw $zero, 0x10($sp)
/* 39824C E009C05C AFA00024 */ sw $zero, 0x24($sp)
/* 398250 E009C060 0C080124 */ jal shim_create_effect_instance
/* 398254 E009C064 AFA20014 */ sw $v0, 0x14($sp)
/* 398258 E009C068 24040044 */ addiu $a0, $zero, 0x44
/* 39825C E009C06C 24030001 */ addiu $v1, $zero, 1
/* 398260 E009C070 0040802D */ daddu $s0, $v0, $zero
/* 398264 E009C074 0C08012C */ jal shim_general_heap_malloc
/* 398268 E009C078 AE030008 */ sw $v1, 8($s0)
/* 39826C E009C07C 0040202D */ daddu $a0, $v0, $zero
/* 398270 E009C080 14800003 */ bnez $a0, .LE009C090
/* 398274 E009C084 AE02000C */ sw $v0, 0xc($s0)
.LE009C088:
/* 398278 E009C088 08027022 */ j .LE009C088
/* 39827C E009C08C 00000000 */ nop
.LE009C090:
/* 398280 E009C090 0200102D */ daddu $v0, $s0, $zero
/* 398284 E009C094 24030064 */ addiu $v1, $zero, 0x64
/* 398288 E009C098 AC830004 */ sw $v1, 4($a0)
/* 39828C E009C09C 240300FF */ addiu $v1, $zero, 0xff
/* 398290 E009C0A0 AC830018 */ sw $v1, 0x18($a0)
/* 398294 E009C0A4 AC83001C */ sw $v1, 0x1c($a0)
/* 398298 E009C0A8 AC830020 */ sw $v1, 0x20($a0)
/* 39829C E009C0AC AC830024 */ sw $v1, 0x24($a0)
/* 3982A0 E009C0B0 AC830028 */ sw $v1, 0x28($a0)
/* 3982A4 E009C0B4 24030040 */ addiu $v1, $zero, 0x40
/* 3982A8 E009C0B8 AC830030 */ sw $v1, 0x30($a0)
/* 3982AC E009C0BC 2403000F */ addiu $v1, $zero, 0xf
/* 3982B0 E009C0C0 AC910000 */ sw $s1, ($a0)
/* 3982B4 E009C0C4 E494000C */ swc1 $f20, 0xc($a0)
/* 3982B8 E009C0C8 E4960010 */ swc1 $f22, 0x10($a0)
/* 3982BC E009C0CC E4980014 */ swc1 $f24, 0x14($a0)
/* 3982C0 E009C0D0 AC80002C */ sw $zero, 0x2c($a0)
/* 3982C4 E009C0D4 AC830034 */ sw $v1, 0x34($a0)
/* 3982C8 E009C0D8 AC800038 */ sw $zero, 0x38($a0)
/* 3982CC E009C0DC AC800008 */ sw $zero, 8($a0)
/* 3982D0 E009C0E0 8FBF0030 */ lw $ra, 0x30($sp)
/* 3982D4 E009C0E4 8FB1002C */ lw $s1, 0x2c($sp)
/* 3982D8 E009C0E8 8FB00028 */ lw $s0, 0x28($sp)
/* 3982DC E009C0EC D7B80048 */ ldc1 $f24, 0x48($sp)
/* 3982E0 E009C0F0 D7B60040 */ ldc1 $f22, 0x40($sp)
/* 3982E4 E009C0F4 D7B40038 */ ldc1 $f20, 0x38($sp)
/* 3982E8 E009C0F8 03E00008 */ jr $ra
/* 3982EC E009C0FC 27BD0050 */ addiu $sp, $sp, 0x50

View File

@ -1,64 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel quizmo_stage_update
/* 3982F8 E009C108 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 3982FC E009C10C AFBF0010 */ sw $ra, 0x10($sp)
/* 398300 E009C110 8C830000 */ lw $v1, ($a0)
/* 398304 E009C114 8C85000C */ lw $a1, 0xc($a0)
/* 398308 E009C118 30620010 */ andi $v0, $v1, 0x10
/* 39830C E009C11C 10400005 */ beqz $v0, .LE009C134
/* 398310 E009C120 2402FFEF */ addiu $v0, $zero, -0x11
/* 398314 E009C124 00621024 */ and $v0, $v1, $v0
/* 398318 E009C128 AC820000 */ sw $v0, ($a0)
/* 39831C E009C12C 2402001E */ addiu $v0, $zero, 0x1e
/* 398320 E009C130 ACA20004 */ sw $v0, 4($a1)
.LE009C134:
/* 398324 E009C134 8CA30004 */ lw $v1, 4($a1)
/* 398328 E009C138 28620064 */ slti $v0, $v1, 0x64
/* 39832C E009C13C 10400002 */ beqz $v0, .LE009C148
/* 398330 E009C140 2462FFFF */ addiu $v0, $v1, -1
/* 398334 E009C144 ACA20004 */ sw $v0, 4($a1)
.LE009C148:
/* 398338 E009C148 8CA20008 */ lw $v0, 8($a1)
/* 39833C E009C14C 8CA60004 */ lw $a2, 4($a1)
/* 398340 E009C150 24430001 */ addiu $v1, $v0, 1
/* 398344 E009C154 04C10005 */ bgez $a2, .LE009C16C
/* 398348 E009C158 ACA30008 */ sw $v1, 8($a1)
/* 39834C E009C15C 0C080128 */ jal shim_remove_effect
/* 398350 E009C160 00000000 */ nop
/* 398354 E009C164 08027074 */ j .LE009C1D0
/* 398358 E009C168 00000000 */ nop
.LE009C16C:
/* 39835C E009C16C 28C20010 */ slti $v0, $a2, 0x10
/* 398360 E009C170 10400002 */ beqz $v0, .LE009C17C
/* 398364 E009C174 00061100 */ sll $v0, $a2, 4
/* 398368 E009C178 ACA20018 */ sw $v0, 0x18($a1)
.LE009C17C:
/* 39836C E009C17C 8CA20034 */ lw $v0, 0x34($a1)
/* 398370 E009C180 14400002 */ bnez $v0, .LE009C18C
/* 398374 E009C184 0062001A */ div $zero, $v1, $v0
/* 398378 E009C188 0007000D */ break 7
.LE009C18C:
/* 39837C E009C18C 2401FFFF */ addiu $at, $zero, -1
/* 398380 E009C190 14410004 */ bne $v0, $at, .LE009C1A4
/* 398384 E009C194 3C018000 */ lui $at, 0x8000
/* 398388 E009C198 14610002 */ bne $v1, $at, .LE009C1A4
/* 39838C E009C19C 00000000 */ nop
/* 398390 E009C1A0 0006000D */ break 6
.LE009C1A4:
/* 398394 E009C1A4 00001810 */ mfhi $v1
/* 398398 E009C1A8 14600009 */ bnez $v1, .LE009C1D0
/* 39839C E009C1AC 00000000 */ nop
/* 3983A0 E009C1B0 8CA2002C */ lw $v0, 0x2c($a1)
/* 3983A4 E009C1B4 8CA30030 */ lw $v1, 0x30($a1)
/* 3983A8 E009C1B8 00431821 */ addu $v1, $v0, $v1
/* 3983AC E009C1BC 28620401 */ slti $v0, $v1, 0x401
/* 3983B0 E009C1C0 14400003 */ bnez $v0, .LE009C1D0
/* 3983B4 E009C1C4 ACA3002C */ sw $v1, 0x2c($a1)
/* 3983B8 E009C1C8 2462FC00 */ addiu $v0, $v1, -0x400
/* 3983BC E009C1CC ACA2002C */ sw $v0, 0x2c($a1)
.LE009C1D0:
/* 3983C0 E009C1D0 8FBF0010 */ lw $ra, 0x10($sp)
/* 3983C4 E009C1D4 03E00008 */ jr $ra
/* 3983C8 E009C1D8 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,82 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel ring_blast_main
/* 356980 E0048000 27BDFFA8 */ addiu $sp, $sp, -0x58
/* 356984 E0048004 F7B40040 */ sdc1 $f20, 0x40($sp)
/* 356988 E0048008 4485A000 */ mtc1 $a1, $f20
/* 35698C E004800C F7B60048 */ sdc1 $f22, 0x48($sp)
/* 356990 E0048010 4486B000 */ mtc1 $a2, $f22
/* 356994 E0048014 AFB30034 */ sw $s3, 0x34($sp)
/* 356998 E0048018 0080982D */ daddu $s3, $a0, $zero
/* 35699C E004801C F7B80050 */ sdc1 $f24, 0x50($sp)
/* 3569A0 E0048020 4487C000 */ mtc1 $a3, $f24
/* 3569A4 E0048024 27A40010 */ addiu $a0, $sp, 0x10
/* 3569A8 E0048028 AFB20030 */ sw $s2, 0x30($sp)
/* 3569AC E004802C 8FB2006C */ lw $s2, 0x6c($sp)
/* 3569B0 E0048030 3C02E005 */ lui $v0, %hi(ring_blast_init)
/* 3569B4 E0048034 24428128 */ addiu $v0, $v0, %lo(ring_blast_init)
/* 3569B8 E0048038 AFA20018 */ sw $v0, 0x18($sp)
/* 3569BC E004803C 3C02E005 */ lui $v0, %hi(ring_blast_update)
/* 3569C0 E0048040 24428130 */ addiu $v0, $v0, %lo(ring_blast_update)
/* 3569C4 E0048044 AFA2001C */ sw $v0, 0x1c($sp)
/* 3569C8 E0048048 3C02E005 */ lui $v0, %hi(ring_blast_render)
/* 3569CC E004804C 244281D4 */ addiu $v0, $v0, %lo(ring_blast_render)
/* 3569D0 E0048050 AFA20020 */ sw $v0, 0x20($sp)
/* 3569D4 E0048054 24020024 */ addiu $v0, $zero, 0x24
/* 3569D8 E0048058 AFBF0038 */ sw $ra, 0x38($sp)
/* 3569DC E004805C AFB1002C */ sw $s1, 0x2c($sp)
/* 3569E0 E0048060 AFB00028 */ sw $s0, 0x28($sp)
/* 3569E4 E0048064 AFA00010 */ sw $zero, 0x10($sp)
/* 3569E8 E0048068 AFA00024 */ sw $zero, 0x24($sp)
/* 3569EC E004806C 0C080124 */ jal shim_create_effect_instance
/* 3569F0 E0048070 AFA20014 */ sw $v0, 0x14($sp)
/* 3569F4 E0048074 2404002C */ addiu $a0, $zero, 0x2c
/* 3569F8 E0048078 24110001 */ addiu $s1, $zero, 1
/* 3569FC E004807C 0040802D */ daddu $s0, $v0, $zero
/* 356A00 E0048080 0C08012C */ jal shim_general_heap_malloc
/* 356A04 E0048084 AE110008 */ sw $s1, 8($s0)
/* 356A08 E0048088 AE02000C */ sw $v0, 0xc($s0)
/* 356A0C E004808C 0040802D */ daddu $s0, $v0, $zero
/* 356A10 E0048090 16000003 */ bnez $s0, .LE00480A0
/* 356A14 E0048094 0200202D */ daddu $a0, $s0, $zero
.LE0048098:
/* 356A18 E0048098 08012026 */ j .LE0048098
/* 356A1C E004809C 00000000 */ nop
.LE00480A0:
/* 356A20 E00480A0 00112840 */ sll $a1, $s1, 1
/* 356A24 E00480A4 00B12821 */ addu $a1, $a1, $s1
/* 356A28 E00480A8 00052880 */ sll $a1, $a1, 2
/* 356A2C E00480AC 00B12823 */ subu $a1, $a1, $s1
/* 356A30 E00480B0 0C080130 */ jal shim_mem_clear
/* 356A34 E00480B4 00052880 */ sll $a1, $a1, 2
/* 356A38 E00480B8 AE120014 */ sw $s2, 0x14($s0)
/* 356A3C E00480BC AE000018 */ sw $zero, 0x18($s0)
/* 356A40 E00480C0 AE12001C */ sw $s2, 0x1c($s0)
/* 356A44 E00480C4 AE000020 */ sw $zero, 0x20($s0)
/* 356A48 E00480C8 A6130000 */ sh $s3, ($s0)
/* 356A4C E00480CC E6140004 */ swc1 $f20, 4($s0)
/* 356A50 E00480D0 E6160008 */ swc1 $f22, 8($s0)
/* 356A54 E00480D4 E618000C */ swc1 $f24, 0xc($s0)
/* 356A58 E00480D8 C7A00068 */ lwc1 $f0, 0x68($sp)
/* 356A5C E00480DC AE000024 */ sw $zero, 0x24($s0)
/* 356A60 E00480E0 16600003 */ bnez $s3, .LE00480F0
/* 356A64 E00480E4 E6000010 */ swc1 $f0, 0x10($s0)
/* 356A68 E00480E8 08012040 */ j .LE0048100
/* 356A6C E00480EC AE000028 */ sw $zero, 0x28($s0)
.LE00480F0:
/* 356A70 E00480F0 3C014220 */ lui $at, 0x4220
/* 356A74 E00480F4 44810000 */ mtc1 $at, $f0
/* 356A78 E00480F8 00000000 */ nop
/* 356A7C E00480FC E6000028 */ swc1 $f0, 0x28($s0)
.LE0048100:
/* 356A80 E0048100 8FBF0038 */ lw $ra, 0x38($sp)
/* 356A84 E0048104 8FB30034 */ lw $s3, 0x34($sp)
/* 356A88 E0048108 8FB20030 */ lw $s2, 0x30($sp)
/* 356A8C E004810C 8FB1002C */ lw $s1, 0x2c($sp)
/* 356A90 E0048110 8FB00028 */ lw $s0, 0x28($sp)
/* 356A94 E0048114 D7B80050 */ ldc1 $f24, 0x50($sp)
/* 356A98 E0048118 D7B60048 */ ldc1 $f22, 0x48($sp)
/* 356A9C E004811C D7B40040 */ ldc1 $f20, 0x40($sp)
/* 356AA0 E0048120 03E00008 */ jr $ra
/* 356AA4 E0048124 27BD0058 */ addiu $sp, $sp, 0x58

View File

@ -1,54 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_E0048A10
.double 0.1, 0.0
.section .text
glabel ring_blast_update
/* 356AB0 E0048130 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 356AB4 E0048134 AFBF0010 */ sw $ra, 0x10($sp)
/* 356AB8 E0048138 8C85000C */ lw $a1, 0xc($a0)
/* 356ABC E004813C 3C014100 */ lui $at, 0x4100
/* 356AC0 E0048140 44810000 */ mtc1 $at, $f0
/* 356AC4 E0048144 8CA20018 */ lw $v0, 0x18($a1)
/* 356AC8 E0048148 8CA30014 */ lw $v1, 0x14($a1)
/* 356ACC E004814C 44821000 */ mtc1 $v0, $f2
/* 356AD0 E0048150 00000000 */ nop
/* 356AD4 E0048154 468010A0 */ cvt.s.w $f2, $f2
/* 356AD8 E0048158 24420001 */ addiu $v0, $v0, 1
/* 356ADC E004815C 46001082 */ mul.s $f2, $f2, $f0
/* 356AE0 E0048160 00000000 */ nop
/* 356AE4 E0048164 2463FFFF */ addiu $v1, $v1, -1
/* 356AE8 E0048168 C4A0001C */ lwc1 $f0, 0x1c($a1)
/* 356AEC E004816C 46800020 */ cvt.s.w $f0, $f0
/* 356AF0 E0048170 ACA20018 */ sw $v0, 0x18($a1)
/* 356AF4 E0048174 ACA30014 */ sw $v1, 0x14($a1)
/* 356AF8 E0048178 46001083 */ div.s $f2, $f2, $f0
/* 356AFC E004817C 04610005 */ bgez $v1, .LE0048194
/* 356B00 E0048180 E4A20020 */ swc1 $f2, 0x20($a1)
/* 356B04 E0048184 0C080128 */ jal shim_remove_effect
/* 356B08 E0048188 00000000 */ nop
/* 356B0C E004818C 08012072 */ j .LE00481C8
/* 356B10 E0048190 00000000 */ nop
.LE0048194:
/* 356B14 E0048194 C4A00024 */ lwc1 $f0, 0x24($a1)
/* 356B18 E0048198 C4A20028 */ lwc1 $f2, 0x28($a1)
/* 356B1C E004819C 46020000 */ add.s $f0, $f0, $f2
/* 356B20 E00481A0 94A20000 */ lhu $v0, ($a1)
/* 356B24 E00481A4 14400008 */ bnez $v0, .LE00481C8
/* 356B28 E00481A8 E4A00024 */ swc1 $f0, 0x24($a1)
/* 356B2C E00481AC C4A00010 */ lwc1 $f0, 0x10($a1)
/* 356B30 E00481B0 3C01E005 */ lui $at, %hi(D_E0048A10)
/* 356B34 E00481B4 D4228A10 */ ldc1 $f2, %lo(D_E0048A10)($at)
/* 356B38 E00481B8 46000021 */ cvt.d.s $f0, $f0
/* 356B3C E00481BC 46220000 */ add.d $f0, $f0, $f2
/* 356B40 E00481C0 46200020 */ cvt.s.d $f0, $f0
/* 356B44 E00481C4 E4A00010 */ swc1 $f0, 0x10($a1)
.LE00481C8:
/* 356B48 E00481C8 8FBF0010 */ lw $ra, 0x10($sp)
/* 356B4C E00481CC 03E00008 */ jr $ra
/* 356B50 E00481D0 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,107 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_E0046620
.double 0.1
dlabel D_E0046628
.double 0.7
dlabel D_E0046630
.double 0.4
.section .text
glabel rising_bubble_main
/* 355EE0 E0046000 27BDFFA8 */ addiu $sp, $sp, -0x58
/* 355EE4 E0046004 F7B40038 */ sdc1 $f20, 0x38($sp)
/* 355EE8 E0046008 4485A000 */ mtc1 $a1, $f20
/* 355EEC E004600C F7B80048 */ sdc1 $f24, 0x48($sp)
/* 355EF0 E0046010 4486C000 */ mtc1 $a2, $f24
/* 355EF4 E0046014 AFB1002C */ sw $s1, 0x2c($sp)
/* 355EF8 E0046018 0080882D */ daddu $s1, $a0, $zero
/* 355EFC E004601C F7B60040 */ sdc1 $f22, 0x40($sp)
/* 355F00 E0046020 4487B000 */ mtc1 $a3, $f22
/* 355F04 E0046024 27A40010 */ addiu $a0, $sp, 0x10
/* 355F08 E0046028 F7BA0050 */ sdc1 $f26, 0x50($sp)
/* 355F0C E004602C C7BA0068 */ lwc1 $f26, 0x68($sp)
/* 355F10 E0046030 3C02E004 */ lui $v0, %hi(rising_bubble_init)
/* 355F14 E0046034 24426158 */ addiu $v0, $v0, %lo(rising_bubble_init)
/* 355F18 E0046038 AFA20018 */ sw $v0, 0x18($sp)
/* 355F1C E004603C 3C02E004 */ lui $v0, %hi(rising_bubble_update)
/* 355F20 E0046040 24426160 */ addiu $v0, $v0, %lo(rising_bubble_update)
/* 355F24 E0046044 AFA2001C */ sw $v0, 0x1c($sp)
/* 355F28 E0046048 3C02E004 */ lui $v0, %hi(rising_bubble_render)
/* 355F2C E004604C 2442627C */ addiu $v0, $v0, %lo(rising_bubble_render)
/* 355F30 E0046050 AFA20020 */ sw $v0, 0x20($sp)
/* 355F34 E0046054 24020023 */ addiu $v0, $zero, 0x23
/* 355F38 E0046058 AFBF0030 */ sw $ra, 0x30($sp)
/* 355F3C E004605C AFB00028 */ sw $s0, 0x28($sp)
/* 355F40 E0046060 AFA00010 */ sw $zero, 0x10($sp)
/* 355F44 E0046064 AFA00024 */ sw $zero, 0x24($sp)
/* 355F48 E0046068 0C080124 */ jal shim_create_effect_instance
/* 355F4C E004606C AFA20014 */ sw $v0, 0x14($sp)
/* 355F50 E0046070 24040028 */ addiu $a0, $zero, 0x28
/* 355F54 E0046074 24030001 */ addiu $v1, $zero, 1
/* 355F58 E0046078 0040802D */ daddu $s0, $v0, $zero
/* 355F5C E004607C 0C08012C */ jal shim_general_heap_malloc
/* 355F60 E0046080 AE030008 */ sw $v1, 8($s0)
/* 355F64 E0046084 AE02000C */ sw $v0, 0xc($s0)
/* 355F68 E0046088 0040802D */ daddu $s0, $v0, $zero
/* 355F6C E004608C 56000003 */ bnel $s0, $zero, .LE004609C
/* 355F70 E0046090 AE110000 */ sw $s1, ($s0)
.LE0046094:
/* 355F74 E0046094 08011825 */ j .LE0046094
/* 355F78 E0046098 00000000 */ nop
.LE004609C:
/* 355F7C E004609C 44800000 */ mtc1 $zero, $f0
/* 355F80 E00460A0 E6140004 */ swc1 $f20, 4($s0)
/* 355F84 E00460A4 E6180008 */ swc1 $f24, 8($s0)
/* 355F88 E00460A8 E616000C */ swc1 $f22, 0xc($s0)
/* 355F8C E00460AC AE000014 */ sw $zero, 0x14($s0)
/* 355F90 E00460B0 4600D032 */ c.eq.s $f26, $f0
/* 355F94 E00460B4 00000000 */ nop
/* 355F98 E00460B8 45010013 */ bc1t .LE0046108
/* 355F9C E00460BC AE00001C */ sw $zero, 0x1c($s0)
/* 355FA0 E00460C0 0C080138 */ jal shim_rand_int
/* 355FA4 E00460C4 24040003 */ addiu $a0, $zero, 3
/* 355FA8 E00460C8 3C01E004 */ lui $at, %hi(D_E0046620)
/* 355FAC E00460CC D4226620 */ ldc1 $f2, %lo(D_E0046620)($at)
/* 355FB0 E00460D0 44820000 */ mtc1 $v0, $f0
/* 355FB4 E00460D4 00000000 */ nop
/* 355FB8 E00460D8 46800021 */ cvt.d.w $f0, $f0
/* 355FBC E00460DC 46220002 */ mul.d $f0, $f0, $f2
/* 355FC0 E00460E0 00000000 */ nop
/* 355FC4 E00460E4 3C01E004 */ lui $at, %hi(D_E0046628)
/* 355FC8 E00460E8 D4226628 */ ldc1 $f2, %lo(D_E0046628)($at)
/* 355FCC E00460EC 46220000 */ add.d $f0, $f0, $f2
/* 355FD0 E00460F0 3C01E004 */ lui $at, %hi(D_E0046630)
/* 355FD4 E00460F4 D4226630 */ ldc1 $f2, %lo(D_E0046630)($at)
/* 355FD8 E00460F8 46220002 */ mul.d $f0, $f0, $f2
/* 355FDC E00460FC 00000000 */ nop
/* 355FE0 E0046100 08011845 */ j .LE0046114
/* 355FE4 E0046104 46200020 */ cvt.s.d $f0, $f0
.LE0046108:
/* 355FE8 E0046108 3C013F80 */ lui $at, 0x3f80
/* 355FEC E004610C 44810000 */ mtc1 $at, $f0
/* 355FF0 E0046110 00000000 */ nop
.LE0046114:
/* 355FF4 E0046114 E6000010 */ swc1 $f0, 0x10($s0)
/* 355FF8 E0046118 2404001F */ addiu $a0, $zero, 0x1f
/* 355FFC E004611C 24020020 */ addiu $v0, $zero, 0x20
/* 356000 E0046120 0C080138 */ jal shim_rand_int
/* 356004 E0046124 AE020018 */ sw $v0, 0x18($s0)
/* 356008 E0046128 461AC000 */ add.s $f0, $f24, $f26
/* 35600C E004612C AE020020 */ sw $v0, 0x20($s0)
/* 356010 E0046130 E6000024 */ swc1 $f0, 0x24($s0)
/* 356014 E0046134 8FBF0030 */ lw $ra, 0x30($sp)
/* 356018 E0046138 8FB1002C */ lw $s1, 0x2c($sp)
/* 35601C E004613C 8FB00028 */ lw $s0, 0x28($sp)
/* 356020 E0046140 D7BA0050 */ ldc1 $f26, 0x50($sp)
/* 356024 E0046144 D7B80048 */ ldc1 $f24, 0x48($sp)
/* 356028 E0046148 D7B60040 */ ldc1 $f22, 0x40($sp)
/* 35602C E004614C D7B40038 */ ldc1 $f20, 0x38($sp)
/* 356030 E0046150 03E00008 */ jr $ra
/* 356034 E0046154 27BD0058 */ addiu $sp, $sp, 0x58

View File

@ -1,69 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel shiny_flare_main
/* 3D7240 E00DA000 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 3D7244 E00DA004 F7B40038 */ sdc1 $f20, 0x38($sp)
/* 3D7248 E00DA008 4485A000 */ mtc1 $a1, $f20
/* 3D724C E00DA00C AFB1002C */ sw $s1, 0x2c($sp)
/* 3D7250 E00DA010 0080882D */ daddu $s1, $a0, $zero
/* 3D7254 E00DA014 F7B60040 */ sdc1 $f22, 0x40($sp)
/* 3D7258 E00DA018 4486B000 */ mtc1 $a2, $f22
/* 3D725C E00DA01C 27A40010 */ addiu $a0, $sp, 0x10
/* 3D7260 E00DA020 F7B80048 */ sdc1 $f24, 0x48($sp)
/* 3D7264 E00DA024 4487C000 */ mtc1 $a3, $f24
/* 3D7268 E00DA028 3C02E00E */ lui $v0, %hi(shiny_flare_init)
/* 3D726C E00DA02C 2442A0FC */ addiu $v0, $v0, %lo(shiny_flare_init)
/* 3D7270 E00DA030 AFA20018 */ sw $v0, 0x18($sp)
/* 3D7274 E00DA034 3C02E00E */ lui $v0, %hi(shiny_flare_update)
/* 3D7278 E00DA038 2442A104 */ addiu $v0, $v0, %lo(shiny_flare_update)
/* 3D727C E00DA03C AFA2001C */ sw $v0, 0x1c($sp)
/* 3D7280 E00DA040 3C02E00E */ lui $v0, %hi(shiny_flare_render)
/* 3D7284 E00DA044 2442A1E0 */ addiu $v0, $v0, %lo(shiny_flare_render)
/* 3D7288 E00DA048 AFA20020 */ sw $v0, 0x20($sp)
/* 3D728C E00DA04C 2402006D */ addiu $v0, $zero, 0x6d
/* 3D7290 E00DA050 AFBF0030 */ sw $ra, 0x30($sp)
/* 3D7294 E00DA054 AFB00028 */ sw $s0, 0x28($sp)
/* 3D7298 E00DA058 AFA00010 */ sw $zero, 0x10($sp)
/* 3D729C E00DA05C AFA00024 */ sw $zero, 0x24($sp)
/* 3D72A0 E00DA060 0C080124 */ jal shim_create_effect_instance
/* 3D72A4 E00DA064 AFA20014 */ sw $v0, 0x14($sp)
/* 3D72A8 E00DA068 24040030 */ addiu $a0, $zero, 0x30
/* 3D72AC E00DA06C 24030001 */ addiu $v1, $zero, 1
/* 3D72B0 E00DA070 0040802D */ daddu $s0, $v0, $zero
/* 3D72B4 E00DA074 0C08012C */ jal shim_general_heap_malloc
/* 3D72B8 E00DA078 AE030008 */ sw $v1, 8($s0)
/* 3D72BC E00DA07C 0040202D */ daddu $a0, $v0, $zero
/* 3D72C0 E00DA080 14800003 */ bnez $a0, .LE00DA090
/* 3D72C4 E00DA084 AE02000C */ sw $v0, 0xc($s0)
.LE00DA088:
/* 3D72C8 E00DA088 08036822 */ j .LE00DA088
/* 3D72CC E00DA08C 00000000 */ nop
.LE00DA090:
/* 3D72D0 E00DA090 0200102D */ daddu $v0, $s0, $zero
/* 3D72D4 E00DA094 2403000A */ addiu $v1, $zero, 0xa
/* 3D72D8 E00DA098 AC830010 */ sw $v1, 0x10($a0)
/* 3D72DC E00DA09C 240300FF */ addiu $v1, $zero, 0xff
/* 3D72E0 E00DA0A0 AC910000 */ sw $s1, ($a0)
/* 3D72E4 E00DA0A4 AC800014 */ sw $zero, 0x14($a0)
/* 3D72E8 E00DA0A8 AC830024 */ sw $v1, 0x24($a0)
/* 3D72EC E00DA0AC E4940004 */ swc1 $f20, 4($a0)
/* 3D72F0 E00DA0B0 E4960008 */ swc1 $f22, 8($a0)
/* 3D72F4 E00DA0B4 E498000C */ swc1 $f24, 0xc($a0)
/* 3D72F8 E00DA0B8 C7A00060 */ lwc1 $f0, 0x60($sp)
/* 3D72FC E00DA0BC 24030046 */ addiu $v1, $zero, 0x46
/* 3D7300 E00DA0C0 AC830018 */ sw $v1, 0x18($a0)
/* 3D7304 E00DA0C4 240300B4 */ addiu $v1, $zero, 0xb4
/* 3D7308 E00DA0C8 AC83001C */ sw $v1, 0x1c($a0)
/* 3D730C E00DA0CC 24030078 */ addiu $v1, $zero, 0x78
/* 3D7310 E00DA0D0 AC830020 */ sw $v1, 0x20($a0)
/* 3D7314 E00DA0D4 AC80002C */ sw $zero, 0x2c($a0)
/* 3D7318 E00DA0D8 E4800028 */ swc1 $f0, 0x28($a0)
/* 3D731C E00DA0DC 8FBF0030 */ lw $ra, 0x30($sp)
/* 3D7320 E00DA0E0 8FB1002C */ lw $s1, 0x2c($sp)
/* 3D7324 E00DA0E4 8FB00028 */ lw $s0, 0x28($sp)
/* 3D7328 E00DA0E8 D7B80048 */ ldc1 $f24, 0x48($sp)
/* 3D732C E00DA0EC D7B60040 */ ldc1 $f22, 0x40($sp)
/* 3D7330 E00DA0F0 D7B40038 */ ldc1 $f20, 0x38($sp)
/* 3D7334 E00DA0F4 03E00008 */ jr $ra
/* 3D7338 E00DA0F8 27BD0050 */ addiu $sp, $sp, 0x50

View File

@ -1,71 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_E00DA520
.double 0.3, 0.0
.section .text
glabel shiny_flare_update
/* 3D7344 E00DA104 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 3D7348 E00DA108 AFBF0010 */ sw $ra, 0x10($sp)
/* 3D734C E00DA10C 8C850000 */ lw $a1, ($a0)
/* 3D7350 E00DA110 8C83000C */ lw $v1, 0xc($a0)
/* 3D7354 E00DA114 30A20010 */ andi $v0, $a1, 0x10
/* 3D7358 E00DA118 10400005 */ beqz $v0, .LE00DA130
/* 3D735C E00DA11C 2402FFEF */ addiu $v0, $zero, -0x11
/* 3D7360 E00DA120 00A21024 */ and $v0, $a1, $v0
/* 3D7364 E00DA124 AC820000 */ sw $v0, ($a0)
/* 3D7368 E00DA128 2402000A */ addiu $v0, $zero, 0xa
/* 3D736C E00DA12C AC620010 */ sw $v0, 0x10($v1)
.LE00DA130:
/* 3D7370 E00DA130 8C650010 */ lw $a1, 0x10($v1)
/* 3D7374 E00DA134 28A203E8 */ slti $v0, $a1, 0x3e8
/* 3D7378 E00DA138 10400002 */ beqz $v0, .LE00DA144
/* 3D737C E00DA13C 24A2FFFF */ addiu $v0, $a1, -1
/* 3D7380 E00DA140 AC620010 */ sw $v0, 0x10($v1)
.LE00DA144:
/* 3D7384 E00DA144 8C620014 */ lw $v0, 0x14($v1)
/* 3D7388 E00DA148 8C650010 */ lw $a1, 0x10($v1)
/* 3D738C E00DA14C 24460001 */ addiu $a2, $v0, 1
/* 3D7390 E00DA150 04A10005 */ bgez $a1, .LE00DA168
/* 3D7394 E00DA154 AC660014 */ sw $a2, 0x14($v1)
/* 3D7398 E00DA158 0C080128 */ jal shim_remove_effect
/* 3D739C E00DA15C 00000000 */ nop
/* 3D73A0 E00DA160 08036875 */ j .LE00DA1D4
/* 3D73A4 E00DA164 00000000 */ nop
.LE00DA168:
/* 3D73A8 E00DA168 28A20004 */ slti $v0, $a1, 4
/* 3D73AC E00DA16C 1040000B */ beqz $v0, .LE00DA19C
/* 3D73B0 E00DA170 00000000 */ nop
/* 3D73B4 E00DA174 C460002C */ lwc1 $f0, 0x2c($v1)
/* 3D73B8 E00DA178 3C013FE0 */ lui $at, 0x3fe0
/* 3D73BC E00DA17C 44811800 */ mtc1 $at, $f3
/* 3D73C0 E00DA180 44801000 */ mtc1 $zero, $f2
/* 3D73C4 E00DA184 46000021 */ cvt.d.s $f0, $f0
/* 3D73C8 E00DA188 46220002 */ mul.d $f0, $f0, $f2
/* 3D73CC E00DA18C 00000000 */ nop
/* 3D73D0 E00DA190 46200020 */ cvt.s.d $f0, $f0
/* 3D73D4 E00DA194 08036875 */ j .LE00DA1D4
/* 3D73D8 E00DA198 E460002C */ swc1 $f0, 0x2c($v1)
.LE00DA19C:
/* 3D73DC E00DA19C 3C013E4C */ lui $at, 0x3e4c
/* 3D73E0 E00DA1A0 3421CCCD */ ori $at, $at, 0xcccd
/* 3D73E4 E00DA1A4 44810000 */ mtc1 $at, $f0
/* 3D73E8 E00DA1A8 44861000 */ mtc1 $a2, $f2
/* 3D73EC E00DA1AC 00000000 */ nop
/* 3D73F0 E00DA1B0 468010A0 */ cvt.s.w $f2, $f2
/* 3D73F4 E00DA1B4 46001082 */ mul.s $f2, $f2, $f0
/* 3D73F8 E00DA1B8 00000000 */ nop
/* 3D73FC E00DA1BC 3C01E00E */ lui $at, %hi(D_E00DA520)
/* 3D7400 E00DA1C0 D420A520 */ ldc1 $f0, %lo(D_E00DA520)($at)
/* 3D7404 E00DA1C4 460010A1 */ cvt.d.s $f2, $f2
/* 3D7408 E00DA1C8 46201080 */ add.d $f2, $f2, $f0
/* 3D740C E00DA1CC 462010A0 */ cvt.s.d $f2, $f2
/* 3D7410 E00DA1D0 E462002C */ swc1 $f2, 0x2c($v1)
.LE00DA1D4:
/* 3D7414 E00DA1D4 8FBF0010 */ lw $ra, 0x10($sp)
/* 3D7418 E00DA1D8 03E00008 */ jr $ra
/* 3D741C E00DA1DC 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,72 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snowfall_main
/* 38C778 E008A188 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 38C77C E008A18C AFB1002C */ sw $s1, 0x2c($sp)
/* 38C780 E008A190 0080882D */ daddu $s1, $a0, $zero
/* 38C784 E008A194 AFB30034 */ sw $s3, 0x34($sp)
/* 38C788 E008A198 00A0982D */ daddu $s3, $a1, $zero
/* 38C78C E008A19C 27A40010 */ addiu $a0, $sp, 0x10
/* 38C790 E008A1A0 3C02E009 */ lui $v0, %hi(snowfall_init)
/* 38C794 E008A1A4 2442A288 */ addiu $v0, $v0, %lo(snowfall_init)
/* 38C798 E008A1A8 AFA20018 */ sw $v0, 0x18($sp)
/* 38C79C E008A1AC 3C02E009 */ lui $v0, %hi(snowfall_update)
/* 38C7A0 E008A1B0 2442A53C */ addiu $v0, $v0, %lo(snowfall_update)
/* 38C7A4 E008A1B4 AFA2001C */ sw $v0, 0x1c($sp)
/* 38C7A8 E008A1B8 3C02E009 */ lui $v0, %hi(snowfall_render)
/* 38C7AC E008A1BC 2442A6E4 */ addiu $v0, $v0, %lo(snowfall_render)
/* 38C7B0 E008A1C0 AFA20020 */ sw $v0, 0x20($sp)
/* 38C7B4 E008A1C4 24020045 */ addiu $v0, $zero, 0x45
/* 38C7B8 E008A1C8 AFB00028 */ sw $s0, 0x28($sp)
/* 38C7BC E008A1CC 26700001 */ addiu $s0, $s3, 1
/* 38C7C0 E008A1D0 AFBF0038 */ sw $ra, 0x38($sp)
/* 38C7C4 E008A1D4 AFB20030 */ sw $s2, 0x30($sp)
/* 38C7C8 E008A1D8 AFA00010 */ sw $zero, 0x10($sp)
/* 38C7CC E008A1DC AFA00024 */ sw $zero, 0x24($sp)
/* 38C7D0 E008A1E0 0C080124 */ jal shim_create_effect_instance
/* 38C7D4 E008A1E4 AFA20014 */ sw $v0, 0x14($sp)
/* 38C7D8 E008A1E8 00102040 */ sll $a0, $s0, 1
/* 38C7DC E008A1EC 00902021 */ addu $a0, $a0, $s0
/* 38C7E0 E008A1F0 00042080 */ sll $a0, $a0, 2
/* 38C7E4 E008A1F4 00902021 */ addu $a0, $a0, $s0
/* 38C7E8 E008A1F8 00042080 */ sll $a0, $a0, 2
/* 38C7EC E008A1FC 0040902D */ daddu $s2, $v0, $zero
/* 38C7F0 E008A200 0C08012C */ jal shim_general_heap_malloc
/* 38C7F4 E008A204 AE500008 */ sw $s0, 8($s2)
/* 38C7F8 E008A208 0040802D */ daddu $s0, $v0, $zero
/* 38C7FC E008A20C 16000003 */ bnez $s0, .LE008A21C
/* 38C800 E008A210 AE50000C */ sw $s0, 0xc($s2)
.LE008A214:
/* 38C804 E008A214 08022885 */ j .LE008A214
/* 38C808 E008A218 00000000 */ nop
.LE008A21C:
/* 38C80C E008A21C 24020064 */ addiu $v0, $zero, 0x64
/* 38C810 E008A220 AE020020 */ sw $v0, 0x20($s0)
/* 38C814 E008A224 240200FF */ addiu $v0, $zero, 0xff
/* 38C818 E008A228 AE020028 */ sw $v0, 0x28($s0)
/* 38C81C E008A22C 24020001 */ addiu $v0, $zero, 1
/* 38C820 E008A230 AE000024 */ sw $zero, 0x24($s0)
/* 38C824 E008A234 AE110004 */ sw $s1, 4($s0)
/* 38C828 E008A238 AE13002C */ sw $s3, 0x2c($s0)
/* 38C82C E008A23C AE020000 */ sw $v0, ($s0)
/* 38C830 E008A240 26100034 */ addiu $s0, $s0, 0x34
/* 38C834 E008A244 1A600008 */ blez $s3, .LE008A268
/* 38C838 E008A248 0000882D */ daddu $s1, $zero, $zero
.LE008A24C:
/* 38C83C E008A24C 0C022800 */ jal func_E008A000
/* 38C840 E008A250 0200202D */ daddu $a0, $s0, $zero
/* 38C844 E008A254 AE000030 */ sw $zero, 0x30($s0)
/* 38C848 E008A258 26310001 */ addiu $s1, $s1, 1
/* 38C84C E008A25C 0233102A */ slt $v0, $s1, $s3
/* 38C850 E008A260 1440FFFA */ bnez $v0, .LE008A24C
/* 38C854 E008A264 26100034 */ addiu $s0, $s0, 0x34
.LE008A268:
/* 38C858 E008A268 0240102D */ daddu $v0, $s2, $zero
/* 38C85C E008A26C 8FBF0038 */ lw $ra, 0x38($sp)
/* 38C860 E008A270 8FB30034 */ lw $s3, 0x34($sp)
/* 38C864 E008A274 8FB20030 */ lw $s2, 0x30($sp)
/* 38C868 E008A278 8FB1002C */ lw $s1, 0x2c($sp)
/* 38C86C E008A27C 8FB00028 */ lw $s0, 0x28($sp)
/* 38C870 E008A280 03E00008 */ jr $ra
/* 38C874 E008A284 27BD0040 */ addiu $sp, $sp, 0x40

View File

@ -1,79 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel thunderbolt_ring_main
/* 3B3EB0 E00B0000 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 3B3EB4 E00B0004 F7B40038 */ sdc1 $f20, 0x38($sp)
/* 3B3EB8 E00B0008 4485A000 */ mtc1 $a1, $f20
/* 3B3EBC E00B000C F7B60040 */ sdc1 $f22, 0x40($sp)
/* 3B3EC0 E00B0010 4486B000 */ mtc1 $a2, $f22
/* 3B3EC4 E00B0014 AFB20030 */ sw $s2, 0x30($sp)
/* 3B3EC8 E00B0018 0080902D */ daddu $s2, $a0, $zero
/* 3B3ECC E00B001C F7B80048 */ sdc1 $f24, 0x48($sp)
/* 3B3ED0 E00B0020 4487C000 */ mtc1 $a3, $f24
/* 3B3ED4 E00B0024 27A40010 */ addiu $a0, $sp, 0x10
/* 3B3ED8 E00B0028 AFB1002C */ sw $s1, 0x2c($sp)
/* 3B3EDC E00B002C 8FB10064 */ lw $s1, 0x64($sp)
/* 3B3EE0 E00B0030 3C02E00B */ lui $v0, %hi(thunderbolt_ring_init)
/* 3B3EE4 E00B0034 2442011C */ addiu $v0, $v0, %lo(thunderbolt_ring_init)
/* 3B3EE8 E00B0038 AFA20018 */ sw $v0, 0x18($sp)
/* 3B3EEC E00B003C 3C02E00B */ lui $v0, %hi(thunderbolt_ring_update)
/* 3B3EF0 E00B0040 24420124 */ addiu $v0, $v0, %lo(thunderbolt_ring_update)
/* 3B3EF4 E00B0044 AFA2001C */ sw $v0, 0x1c($sp)
/* 3B3EF8 E00B0048 3C02E00B */ lui $v0, %hi(thunderbolt_ring_render)
/* 3B3EFC E00B004C 244201F8 */ addiu $v0, $v0, %lo(thunderbolt_ring_render)
/* 3B3F00 E00B0050 AFA20020 */ sw $v0, 0x20($sp)
/* 3B3F04 E00B0054 24020058 */ addiu $v0, $zero, 0x58
/* 3B3F08 E00B0058 AFBF0034 */ sw $ra, 0x34($sp)
/* 3B3F0C E00B005C AFB00028 */ sw $s0, 0x28($sp)
/* 3B3F10 E00B0060 AFA00010 */ sw $zero, 0x10($sp)
/* 3B3F14 E00B0064 AFA00024 */ sw $zero, 0x24($sp)
/* 3B3F18 E00B0068 0C080124 */ jal shim_create_effect_instance
/* 3B3F1C E00B006C AFA20014 */ sw $v0, 0x14($sp)
/* 3B3F20 E00B0070 24040034 */ addiu $a0, $zero, 0x34
/* 3B3F24 E00B0074 24030001 */ addiu $v1, $zero, 1
/* 3B3F28 E00B0078 0040802D */ daddu $s0, $v0, $zero
/* 3B3F2C E00B007C 0C08012C */ jal shim_general_heap_malloc
/* 3B3F30 E00B0080 AE030008 */ sw $v1, 8($s0)
/* 3B3F34 E00B0084 0040202D */ daddu $a0, $v0, $zero
/* 3B3F38 E00B0088 14800003 */ bnez $a0, .LE00B0098
/* 3B3F3C E00B008C AE02000C */ sw $v0, 0xc($s0)
.LE00B0090:
/* 3B3F40 E00B0090 0802C024 */ j .LE00B0090
/* 3B3F44 E00B0094 00000000 */ nop
.LE00B0098:
/* 3B3F48 E00B0098 AC920000 */ sw $s2, ($a0)
/* 3B3F4C E00B009C 1E200004 */ bgtz $s1, .LE00B00B0
/* 3B3F50 E00B00A0 AC800014 */ sw $zero, 0x14($a0)
/* 3B3F54 E00B00A4 240203E8 */ addiu $v0, $zero, 0x3e8
/* 3B3F58 E00B00A8 0802C02D */ j .LE00B00B4
/* 3B3F5C E00B00AC AC820010 */ sw $v0, 0x10($a0)
.LE00B00B0:
/* 3B3F60 E00B00B0 AC910010 */ sw $s1, 0x10($a0)
.LE00B00B4:
/* 3B3F64 E00B00B4 240300FF */ addiu $v1, $zero, 0xff
/* 3B3F68 E00B00B8 AC830024 */ sw $v1, 0x24($a0)
/* 3B3F6C E00B00BC E4940004 */ swc1 $f20, 4($a0)
/* 3B3F70 E00B00C0 E4960008 */ swc1 $f22, 8($a0)
/* 3B3F74 E00B00C4 E498000C */ swc1 $f24, 0xc($a0)
/* 3B3F78 E00B00C8 C7A00060 */ lwc1 $f0, 0x60($sp)
/* 3B3F7C E00B00CC 0200102D */ daddu $v0, $s0, $zero
/* 3B3F80 E00B00D0 AC830018 */ sw $v1, 0x18($a0)
/* 3B3F84 E00B00D4 240300E6 */ addiu $v1, $zero, 0xe6
/* 3B3F88 E00B00D8 AC83001C */ sw $v1, 0x1c($a0)
/* 3B3F8C E00B00DC E4800028 */ swc1 $f0, 0x28($a0)
/* 3B3F90 E00B00E0 3C013F80 */ lui $at, 0x3f80
/* 3B3F94 E00B00E4 44810000 */ mtc1 $at, $f0
/* 3B3F98 E00B00E8 24030032 */ addiu $v1, $zero, 0x32
/* 3B3F9C E00B00EC AC830020 */ sw $v1, 0x20($a0)
/* 3B3FA0 E00B00F0 AC800030 */ sw $zero, 0x30($a0)
/* 3B3FA4 E00B00F4 E480002C */ swc1 $f0, 0x2c($a0)
/* 3B3FA8 E00B00F8 8FBF0034 */ lw $ra, 0x34($sp)
/* 3B3FAC E00B00FC 8FB20030 */ lw $s2, 0x30($sp)
/* 3B3FB0 E00B0100 8FB1002C */ lw $s1, 0x2c($sp)
/* 3B3FB4 E00B0104 8FB00028 */ lw $s0, 0x28($sp)
/* 3B3FB8 E00B0108 D7B80048 */ ldc1 $f24, 0x48($sp)
/* 3B3FBC E00B010C D7B60040 */ ldc1 $f22, 0x40($sp)
/* 3B3FC0 E00B0110 D7B40038 */ ldc1 $f20, 0x38($sp)
/* 3B3FC4 E00B0114 03E00008 */ jr $ra
/* 3B3FC8 E00B0118 27BD0050 */ addiu $sp, $sp, 0x50

View File

@ -1,69 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_E00B07E0
.double 0.3
.section .text
glabel thunderbolt_ring_update
/* 3B3FD4 E00B0124 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 3B3FD8 E00B0128 AFBF0010 */ sw $ra, 0x10($sp)
/* 3B3FDC E00B012C 8C850000 */ lw $a1, ($a0)
/* 3B3FE0 E00B0130 8C83000C */ lw $v1, 0xc($a0)
/* 3B3FE4 E00B0134 30A20010 */ andi $v0, $a1, 0x10
/* 3B3FE8 E00B0138 10400005 */ beqz $v0, .LE00B0150
/* 3B3FEC E00B013C 2402FFEF */ addiu $v0, $zero, -0x11
/* 3B3FF0 E00B0140 00A21024 */ and $v0, $a1, $v0
/* 3B3FF4 E00B0144 AC820000 */ sw $v0, ($a0)
/* 3B3FF8 E00B0148 24020010 */ addiu $v0, $zero, 0x10
/* 3B3FFC E00B014C AC620010 */ sw $v0, 0x10($v1)
.LE00B0150:
/* 3B4000 E00B0150 8C650010 */ lw $a1, 0x10($v1)
/* 3B4004 E00B0154 28A203E8 */ slti $v0, $a1, 0x3e8
/* 3B4008 E00B0158 10400002 */ beqz $v0, .LE00B0164
/* 3B400C E00B015C 24A2FFFF */ addiu $v0, $a1, -1
/* 3B4010 E00B0160 AC620010 */ sw $v0, 0x10($v1)
.LE00B0164:
/* 3B4014 E00B0164 8C620014 */ lw $v0, 0x14($v1)
/* 3B4018 E00B0168 8C660010 */ lw $a2, 0x10($v1)
/* 3B401C E00B016C 24450001 */ addiu $a1, $v0, 1
/* 3B4020 E00B0170 04C10005 */ bgez $a2, .LE00B0188
/* 3B4024 E00B0174 AC650014 */ sw $a1, 0x14($v1)
/* 3B4028 E00B0178 0C080128 */ jal shim_remove_effect
/* 3B402C E00B017C 00000000 */ nop
/* 3B4030 E00B0180 0802C07B */ j .LE00B01EC
/* 3B4034 E00B0184 00000000 */ nop
.LE00B0188:
/* 3B4038 E00B0188 28C40008 */ slti $a0, $a2, 8
/* 3B403C E00B018C 1080000E */ beqz $a0, .LE00B01C8
/* 3B4040 E00B0190 24020008 */ addiu $v0, $zero, 8
/* 3B4044 E00B0194 00461023 */ subu $v0, $v0, $a2
/* 3B4048 E00B0198 3C01E00B */ lui $at, %hi(D_E00B07E0)
/* 3B404C E00B019C D42007E0 */ ldc1 $f0, %lo(D_E00B07E0)($at)
/* 3B4050 E00B01A0 44821000 */ mtc1 $v0, $f2
/* 3B4054 E00B01A4 00000000 */ nop
/* 3B4058 E00B01A8 468010A1 */ cvt.d.w $f2, $f2
/* 3B405C E00B01AC 46201082 */ mul.d $f2, $f2, $f0
/* 3B4060 E00B01B0 00000000 */ nop
/* 3B4064 E00B01B4 C460002C */ lwc1 $f0, 0x2c($v1)
/* 3B4068 E00B01B8 46000021 */ cvt.d.s $f0, $f0
/* 3B406C E00B01BC 46220000 */ add.d $f0, $f0, $f2
/* 3B4070 E00B01C0 46200020 */ cvt.s.d $f0, $f0
/* 3B4074 E00B01C4 E460002C */ swc1 $f0, 0x2c($v1)
.LE00B01C8:
/* 3B4078 E00B01C8 28A20010 */ slti $v0, $a1, 0x10
/* 3B407C E00B01CC 10400003 */ beqz $v0, .LE00B01DC
/* 3B4080 E00B01D0 00051100 */ sll $v0, $a1, 4
/* 3B4084 E00B01D4 2442000F */ addiu $v0, $v0, 0xf
/* 3B4088 E00B01D8 AC620024 */ sw $v0, 0x24($v1)
.LE00B01DC:
/* 3B408C E00B01DC 10800003 */ beqz $a0, .LE00B01EC
/* 3B4090 E00B01E0 00061140 */ sll $v0, $a2, 5
/* 3B4094 E00B01E4 2442001F */ addiu $v0, $v0, 0x1f
/* 3B4098 E00B01E8 AC620024 */ sw $v0, 0x24($v1)
.LE00B01EC:
/* 3B409C E00B01EC 8FBF0010 */ lw $ra, 0x10($sp)
/* 3B40A0 E00B01F0 03E00008 */ jr $ra
/* 3B40A4 E00B01F4 27BD0018 */ addiu $sp, $sp, 0x18