Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
shimmer_wave.c File Reference

Go to the source code of this file.

Functions

void shimmer_wave_init (EffectInstance *effect)
 
void shimmer_wave_update (EffectInstance *effect)
 
void shimmer_wave_render (EffectInstance *effect)
 
void shimmer_wave_appendGfx (void *effect)
 
EffectInstanceshimmer_wave_main (s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s32 arg6, s32 arg7)
 

Variables

Gfx D_09000F20_338EE0 []
 
Gfx D_090011C8_339188 []
 
Gfx D_090011E0_3391A0 []
 
Gfx D_090011F8_3391B8 []
 
Gfx D_09001210_3391D0 []
 
Gfx D_09001228_3391E8 []
 
Gfx D_09001240_339200 []
 
Gfx D_09001258_339218 []
 
Gfx D_09001270_339230 []
 
GfxD_E0074B60 []
 
f32 D_E0074B80 []
 
s32 D_E0074BD0 []
 

Function Documentation

◆ shimmer_wave_init()

void shimmer_wave_init ( EffectInstance * effect)

Definition at line 100 of file shimmer_wave.c.

100 {
101}

Referenced by shimmer_wave_main().

◆ shimmer_wave_update()

void shimmer_wave_update ( EffectInstance * effect)

Definition at line 103 of file shimmer_wave.c.

103 {
105 f32 unk_10;
106 f32 unk_14;
107 s32 i;
108
109 if (effect->flags & FX_INSTANCE_FLAG_DISMISS) {
111 part->unk_38 = 16;
112 }
113
114 if (part->unk_38 < 1000) {
115 part->unk_38--;
116 }
117
118 part->unk_3C++;
119
120 if (part->unk_38 < 0) {
121 remove_effect(effect);
122 return;
123 }
124
125 if (part->unk_38 < 8) {
126 part->unk_4C = part->unk_38 * 32;
127 }
128
129 unk_10 = part->unk_10;
130 unk_14 = part->unk_14;
131
132 part++;
133 for (i = 1; i < effect->numParts; i++, part++) {
134 part->unk_30++;
135 if (part->unk_30 >= ARRAY_COUNT(D_E0074B80)) {
136 part->unk_30 = 0;
137 }
138
139 if (part->unk_30 >= 0) {
140 if (part->unk_30 == 0) {
141 f32 rand = rand_int(359);
142 rand_int(359);
143
144 part->unk_04 = unk_10 * sin_deg(rand);
145 part->unk_08 = rand_int(unk_14) - unk_14 * 0.5;
146 part->unk_0C = unk_10 * cos_deg(rand);
147 part->unk_18 = sin_deg(rand) * 15.0f;
148 part->unk_1C = part->unk_08 * 0.4;
149 part->unk_20 = cos_deg(rand) * 15.0f;
150 part->unk_24 = part->unk_18 * 0.5;
151 part->unk_28 = part->unk_1C * 0.5;
152 part->unk_2C = part->unk_20 * 0.5;
153 part->unk_64 = rand_int(15);
154 part->unk_68 = rand_int(15);
155 part->unk_34 = 0.0f;
156 part->unk_4C = 255;
157 }
158
159 part->unk_60 = 2.0f * D_E0074B80[part->unk_30];
160 part->unk_34 += 4.0f;
161 part->unk_04 += part->unk_18;
162 part->unk_08 += part->unk_1C;
163 part->unk_0C += part->unk_20;
164 part->unk_64 += 0.2;
165 part->unk_68 += 0.6;
166 part->unk_18 += (part->unk_24 - part->unk_18) * 0.04;
167 part->unk_1C += (part->unk_28 - part->unk_1C) * 0.04;
168 part->unk_20 += (part->unk_2C - part->unk_20) * 0.04;
169 }
170 }
171}
BSS s32 PopupMenu_SelectedIndex
s8 unk_14
Definition demo_api.c:19
#define sin_deg
#define remove_effect
#define rand_int
#define cos_deg
struct ShimmerWaveFXData * shimmerWave
Definition effects.h:2522
EffectInstanceDataPtr data
Definition effects.h:2605
@ FX_INSTANCE_FLAG_DISMISS
Definition enums.h:3551
#define ARRAY_COUNT(arr)
Definition macros.h:40
f32 D_E0074B80[]

Referenced by shimmer_wave_main().

◆ shimmer_wave_render()

void shimmer_wave_render ( EffectInstance * effect)

Definition at line 173 of file shimmer_wave.c.

173 {
176
178 renderTask.appendGfxArg = effect;
179 renderTask.dist = 10;
181
184}
#define queue_render_task
@ RENDER_TASK_FLAG_REFLECT_FLOOR
Definition enums.h:3352
@ RENDER_MODE_CLOUD_NO_ZCMP
Definition enums.h:3345
void shimmer_wave_appendGfx(void *effect)
void(* appendGfx)(void *)

Referenced by shimmer_wave_main().

◆ shimmer_wave_appendGfx()

void shimmer_wave_appendGfx ( void * effect)

Definition at line 186 of file shimmer_wave.c.

186 {
187 ShimmerWaveFXData* part = ((EffectInstance*)effect)->data.shimmerWave;
188 s32 unk_50 = part->unk_50;
189 s32 unk_54 = part->unk_54;
190 s32 unk_58 = part->unk_58;
191 f32 temp_4C = part->unk_4C / 255.0f;
195 s32 i;
196
198 gSPSegment(gMainGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(((EffectInstance*)effect)->shared->graphics));
199
200 guTranslateF(sp20, part->unk_04, part->unk_08, part->unk_0C);
201 guScaleF(sp60, part->unk_60, part->unk_60, part->unk_60);
204
206 gDPSetEnvColor(gMainGfxPos++, part->unk_40, part->unk_44, part->unk_48, part->unk_5C);
208
210 gMainGfxPos++;
211
212 part++;
213 for (i = 1; i < ((EffectInstance*)effect)->numParts; i++, part++) {
214 if (part->unk_30 >= 0) {
215 guPositionF(sp20, 0.0f, 0.0f, part->unk_34, part->unk_60 * temp_4C, part->unk_04, part->unk_08, part->unk_0C);
217
219 gDPSetPrimColor(gMainGfxPos++, 0, 0, unk_50, unk_54, unk_58, part->unk_4C * temp_4C);
222 }
223 }
224
228
229 guRotateF(sp20, 120.0f, 0.0f, 1.0f, 0.0f);
231
235
236 guRotateF(sp20, -120.0f, 0.0f, 1.0f, 0.0f);
238
243}
Mtx matrixStack[0x200]
f32 Matrix4f[4][4]
#define guRotateF
#define guMtxF2L
#define guTranslateF
#define guMtxCatF
#define guPositionF
#define guScaleF
#define VIRTUAL_TO_PHYSICAL(addr)
Definition macros.h:47
Gfx D_09000F20_338EE0[]
Gfx * D_E0074B60[]
Gfx * gMainGfxPos
Definition cam_main.c:14
u16 gMatrixListPos
Definition main_loop.c:44
DisplayContext * gDisplayContext
Definition cam_main.c:15

Referenced by shimmer_wave_render().

◆ shimmer_wave_main()

EffectInstance * shimmer_wave_main ( s32 arg0,
f32 arg1,
f32 arg2,
f32 arg3,
f32 arg4,
f32 arg5,
s32 arg6,
s32 arg7 )

Definition at line 33 of file shimmer_wave.c.

42 {
44 EffectInstance* effect;
46 f32 temp;
47 s32 i;
48
49 arg6++;
50
51 bp.init = shimmer_wave_init;
52 bp.update = shimmer_wave_update;
53 bp.renderScene = shimmer_wave_render;
54 bp.unk_00 = 0;
55 bp.renderUI = NULL;
56 bp.effectID = EFFECT_SHIMMER_WAVE;
57
58 effect = create_effect_instance(&bp);
59 effect->numParts = arg6;
60 part = effect->data.shimmerWave = general_heap_malloc(arg6 * sizeof(*part));
61 ASSERT(effect->data.shimmerWave != NULL);
62
63 part->unk_00 = arg0;
64 part->unk_3C = 0;
65 if (arg7 <= 0) {
66 part->unk_38 = 1000;
67 } else {
68 part->unk_38 = arg7;
69 }
70 part->unk_4C = 255;
71 part->unk_04 = arg1;
72 part->unk_08 = arg2;
73 part->unk_0C = arg3;
74 part->unk_60 = 1.0f;
75 part->unk_10 = arg4;
76 part->unk_14 = arg5;
77 part->unk_40 = 255;
78 part->unk_44 = 255;
79 part->unk_48 = 255;
80 part->unk_50 = 255;
81 part->unk_54 = 255;
82 part->unk_58 = 127;
83 part->unk_5C = 255;
84
85 part++;
86
87 if (arg7 < 20) {
88 temp = 20.0f / (arg6 - 1);
89 } else {
90 temp = (f32) arg7 / (arg6 - 1);
91 }
92
93 for (i = 1; i < arg6; i++, part++) {
94 part->unk_30 = (s32) (-(f32) i * temp) - 1;
95 }
96
97 return effect;
98}
#define general_heap_malloc
#define create_effect_instance
#define ASSERT(condition)
void shimmer_wave_update(EffectInstance *effect)
void shimmer_wave_init(EffectInstance *effect)
void shimmer_wave_render(EffectInstance *effect)

Referenced by energy_shockwave_update().

Variable Documentation

◆ D_09000F20_338EE0

Gfx D_09000F20_338EE0[]
extern

Referenced by shimmer_wave_appendGfx().

◆ D_090011C8_339188

Gfx D_090011C8_339188[]
extern

◆ D_090011E0_3391A0

Gfx D_090011E0_3391A0[]
extern

◆ D_090011F8_3391B8

Gfx D_090011F8_3391B8[]
extern

◆ D_09001210_3391D0

Gfx D_09001210_3391D0[]
extern

◆ D_09001228_3391E8

Gfx D_09001228_3391E8[]
extern

◆ D_09001240_339200

Gfx D_09001240_339200[]
extern

◆ D_09001258_339218

Gfx D_09001258_339218[]
extern

◆ D_09001270_339230

Gfx D_09001270_339230[]
extern

◆ D_E0074B60

Gfx* D_E0074B60[]
Initial value:
= {
}
Gfx D_090011E0_3391A0[]
Gfx D_09001228_3391E8[]
Gfx D_090011C8_339188[]
Gfx D_09001210_3391D0[]
Gfx D_090011F8_3391B8[]
Gfx D_09001258_339218[]
Gfx D_09001270_339230[]
Gfx D_09001240_339200[]

Definition at line 14 of file shimmer_wave.c.

Referenced by shimmer_wave_appendGfx().

◆ D_E0074B80

f32 D_E0074B80[]
Initial value:
= {
0.2f, 0.4f, 0.8f, 1.3f, 1.5f, 1.3f, 0.9f, 0.6f, 0.4f, 0.3f,
0.2f, 0.4f, 0.8f, 1.3f, 1.5f, 1.3f, 0.9f, 0.6f, 0.4f, 0.3f
}

Definition at line 19 of file shimmer_wave.c.

19 {
20 0.2f, 0.4f, 0.8f, 1.3f, 1.5f, 1.3f, 0.9f, 0.6f, 0.4f, 0.3f,
21 0.2f, 0.4f, 0.8f, 1.3f, 1.5f, 1.3f, 0.9f, 0.6f, 0.4f, 0.3f
22};

Referenced by shimmer_wave_update().

◆ D_E0074BD0

s32 D_E0074BD0[]
Initial value:
= {
0xC8FAFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFAC8, 0x00000000, 0x00000000, 0x00000000
}

Definition at line 24 of file shimmer_wave.c.

24 {
25 0xC8FAFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFAC8, 0x00000000, 0x00000000, 0x00000000
26};