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

Go to the source code of this file.

Functions

void disable_x_init (EffectInstance *effect)
 
void disable_x_update (EffectInstance *effect)
 
void disable_x_render (EffectInstance *effect)
 
void func_E0082528 (EffectInstance *effect)
 
void func_E00828B4 (EffectInstance *effect)
 
void func_E0082A84 (EffectInstance *effect)
 
EffectInstancedisable_x_main (s32 type, f32 x, f32 y, f32 z, s32 arg4)
 
void func_E0082580 (DisableXFXData *data)
 
void func_E00826C4 (DisableXFXData *data)
 

Variables

Gfx D_09002100_3884B0 []
 
Gfx D_09002198_388548 []
 
Gfx D_09002230_3885E0 []
 
Gfx D_09002250_388600 []
 
Gfx D_09002270_388620 []
 
Gfx D_09002290_388640 []
 
Gfx D_090022B0_388660 []
 
Gfx D_09002320_3886D0 []
 
Gfx D_09002360_388710 []
 
Gfx D_090023A0_388750 []
 
Gfx D_090023E0_388790 []
 
Gfx D_09002420_3887D0 []
 
Gfx D_09002460_388810 []
 
Gfx D_090024A0_388850 []
 
Gfx D_090024E0_388890 []
 
Gfx D_09002520_3888D0 []
 
Gfx D_09002560_388910 []
 
Gfx D_090025A0_388950 []
 
Gfx D_090025E0_388990 []
 
GfxD_E0082D00 []
 

Function Documentation

◆ disable_x_init()

void disable_x_init ( EffectInstance * effect)

Definition at line 99 of file disable_x.c.

99 {
100}

Referenced by disable_x_main().

◆ disable_x_update()

void disable_x_update ( EffectInstance * effect)

Definition at line 102 of file disable_x.c.

102 {
103 static const f32 D_E0082D30[12] = { 5.0f, 4.0f, 4.0f, 3.0f, 2.0f, 1.0f, 0.7f, 1.2f, 1.0f, 0.0f, 0.0f, 0.0f };
104
105 DisableXFXData* data = effect->data.disableX;
106 s32 unk_28;
107 s32 unk_2C;
108 f32 unk_34;
109 s32 unk_3C;
110 s32 unk_38;
111 u32 type;
112 s32 i;
113
114 if (effect->flags & FX_INSTANCE_FLAG_DISMISS) {
116 data->unk_28 = 21;
117 }
118
119 if (data->unk_28 < 100) {
120 data->unk_28--;
121 }
122
123 if (data->unk_28 < 0) {
124 remove_effect(effect);
125 return;
126 }
127
128 data->unk_2C++;
129 if (data->unk_2C > 324000) {
130 data->unk_2C = 256;
131 }
132
133 type = data->type;
134 unk_28 = data->unk_28;
135 unk_2C = data->unk_2C;
136 unk_38 = data->unk_38;
137 unk_34 = data->scale;
138 unk_3C = data->koDuration;
139
140 if (type == 0) {
141 if (data->unk_44 > 0) {
142 data->unk_44--;
143 } else {
144 if (data->koDuration != unk_38) {
145 if (data->koDuration < 0) {
146 unk_3C = 0;
147 }
148 if (unk_38 < unk_3C) {
149 data->unk_28 = 100;
150 data->unk_2C = 1;
151 data[1].unk_28 = 0;
152 data->unk_38++;
153 if (data->pos.y > -500.0f) {
155 }
156 } else if (unk_3C < unk_38) {
158 disable_x_main(10, data->pos.x, data->pos.y + data[1].unk_20, data->pos.z, 0);
159 data->unk_38--;
160 }
161 data->unk_44 = 8;
162 }
163 }
164 }
165
166 data++;
167 for (i = 1; i < effect->numParts; i++, data++) {
168 if (data->unk_28 < 9 && type != 10) {
169 data->unk_30 = D_E0082D30[data->unk_28];
170 } else {
171 data->unk_30 = 1.0f;
172 }
173
174 data->unk_30 *= unk_34;
175 if (type < 2) {
176 data->unk_20 = cos_deg(unk_2C * 12) * 4.0f;
177 } else {
178 data->unk_20 = 0.0f;
179 }
180
181 data->pos.x += data->unk_14;
182 data->pos.y += data->unk_18;
183 data->pos.z += data->unk_1C;
184
185 if (unk_28 == 20) {
186 data->unk_18 = 4.0f;
187 data->unk_14 = -2.0f;
188 }
189 if (unk_28 < 20) {
190 data->unk_18 += -0.5;
191 data->unk_40 += 10.0f;
192 data->unk_20 *= (f32) unk_28 * 0.05;
193 }
194 if (unk_28 < 10) {
195 data->alpha = unk_28 * 25;
196 }
197 data->unk_28++;
198 }
199}
BSS s32 PopupMenu_SelectedIndex
EffectInstance * disable_x_main(s32 type, f32 x, f32 y, f32 z, s32 arg4)
Definition disable_x.c:36
#define sfx_play_sound_at_position
#define remove_effect
#define load_effect
#define cos_deg
struct DisableXFXData * disableX
Definition effects.h:2529
EffectInstanceDataPtr data
Definition effects.h:2605
@ FX_INSTANCE_FLAG_DISMISS
Definition enums.h:3517
@ SOUND_INFLICT_KO
Definition enums.h:1545
@ SOUND_SPACE_DEFAULT
Definition enums.h:1737

Referenced by disable_x_main().

◆ disable_x_render()

void disable_x_render ( EffectInstance * effect)

Definition at line 201 of file disable_x.c.

201 {
202}

Referenced by disable_x_main().

◆ func_E0082528()

void func_E0082528 ( EffectInstance * effect)

Definition at line 204 of file disable_x.c.

204 {
205 DisableXFXData* data = effect->data.disableX;
206
207 if (data->unk_04 != 0) {
208 func_E00828B4(effect);
209 if (data->type != 1) {
210 func_E0082A84(effect);
211 }
212 }
213}
void func_E00828B4(EffectInstance *effect)
Definition disable_x.c:255
void func_E0082A84(EffectInstance *effect)
Definition disable_x.c:284

Referenced by disable_x_main().

◆ func_E00828B4()

void func_E00828B4 ( EffectInstance * effect)

Definition at line 255 of file disable_x.c.

255 {
256 DisableXFXData* data = effect->data.disableX;
257 s32 type;
258 s32 unk_38;
259 s32 i;
260
263 func_E0082580(data);
264 unk_38 = data->unk_38;
265 type = data->type;
266
267 data++;
268 for (i = 1; i < effect->numParts; i++, data++) {
269 if (unk_38 > 0 || type == 10) {
270 if (type == 1) {
272 } else {
274 }
275 func_E00826C4(data);
278 }
279 }
282}
Gfx D_09002198_388548[]
void func_E0082580(DisableXFXData *data)
Definition disable_x.c:215
Gfx D_09002230_3885E0[]
Gfx D_09002100_3884B0[]
void func_E00826C4(DisableXFXData *data)
Definition disable_x.c:227
struct EffectSharedData * shared
Definition effects.h:2606
#define VIRTUAL_TO_PHYSICAL(addr)
Definition macros.h:47
Gfx * gMainGfxPos
Definition cam_main.c:15

Referenced by func_E0082528().

◆ func_E0082A84()

void func_E0082A84 ( EffectInstance * effect)

Definition at line 284 of file disable_x.c.

284 {
285 DisableXFXData* data = effect->data.disableX;
286 s32 unk_38;
287 s32 i;
288
291 func_E0082580(data);
292 unk_38 = data->unk_38;
293
294 data++;
295 for (i = 1; i < effect->numParts; i++, data++) {
296 func_E00826C4(data);
297 if (unk_38 > 0) {
299 if (unk_38 < 10) {
302 } else {
303 s32 ones = unk_38 % 10;
304 s32 tens = unk_38 / 10;
305
311 }
312 }
314 }
317}
Gfx D_09002270_388620[]
Gfx D_09002290_388640[]
Gfx * D_E0082D00[]
Definition disable_x.c:24
Gfx D_09002250_388600[]
Gfx D_090022B0_388660[]

Referenced by func_E0082528().

◆ disable_x_main()

EffectInstance * disable_x_main ( s32 type,
f32 x,
f32 y,
f32 z,
s32 arg4 )

Definition at line 36 of file disable_x.c.

36 {
38 EffectInstance* effect;
39 DisableXFXData* data;
40 s32 numParts = 2;
41 s32 i;
42
43 bp.unk_00 = 0;
44 bp.init = disable_x_init;
45 bp.update = disable_x_update;
46 bp.renderScene = disable_x_render;
47 bp.renderUI = func_E0082528;
48 bp.effectID = EFFECT_DISABLE_X;
49
50 effect = create_effect_instance(&bp);
51 effect->numParts = numParts;
52 data = general_heap_malloc(numParts * sizeof(*data));
53 effect->data.disableX = data;
54 ASSERT(effect->data.disableX != NULL);
55
56 data->type = type;
57 data->scale = 1.0f;
58 if (type == 1) {
59 data->unk_38 = type;
60 data->koDuration = 0;
61 } else {
62 data->unk_38 = 0;
63 data->koDuration = arg4;
64 }
65
66 data->pos.x = x;
67 data->pos.y = y;
68 data->pos.z = z;
69
70 switch (type) {
71 case 0:
72 data->unk_28 = 100;
73 break;
74 case 1:
75 data->unk_28 = 100;
76 break;
77 case 10:
78 data->unk_28 = 21;
79 break;
80 }
81
82 data->unk_2C = 0;
83 data->unk_44 = 0;
84 data->unk_04 = 1;
85
86 data++;
87 for (i = 1; i < numParts; i++, data++) {
88 data->pos.x = data->pos.y = data->pos.z = 0.0f;
89 data->unk_18 = data->unk_1C = data->unk_20 = 0.0f;
90 data->unk_14 = 0.0f;
91 data->unk_40 = 0.0f;
92 data->unk_28 = 0;
93 data->alpha = 255;
94 }
95
96 return effect;
97}
void func_E0082528(EffectInstance *effect)
Definition disable_x.c:204
void disable_x_init(EffectInstance *effect)
Definition disable_x.c:99
void disable_x_update(EffectInstance *effect)
Definition disable_x.c:102
void disable_x_render(EffectInstance *effect)
Definition disable_x.c:201
#define general_heap_malloc
#define create_effect_instance
#define ASSERT(condition)

Referenced by disable_x_update().

◆ func_E0082580()

void func_E0082580 ( DisableXFXData * data)

Definition at line 215 of file disable_x.c.

215 {
217
218 guTranslateF(sp18, data->pos.x, data->pos.y, data->pos.z);
219 guScaleF(sp58, data->scale, data->scale, 1.0f);
220 guRotateF(sp58, -gCameras[gCurrentCameraID].curYaw, 0.0f, 1.0f, 0.0f);
225}
Mtx matrixStack[0x200]
f32 Matrix4f[4][4]
#define guRotateF
#define guMtxF2L
#define guTranslateF
#define guMtxCatF
#define guScaleF
Camera gCameras[4]
Definition cam_main.c:17
u16 gMatrixListPos
Definition main_loop.c:45
s32 gCurrentCameraID
Definition cam_math.c:4
DisplayContext * gDisplayContext
Definition cam_main.c:16

Referenced by func_E00828B4(), and func_E0082A84().

◆ func_E00826C4()

void func_E00826C4 ( DisableXFXData * data)

Variable Documentation

◆ D_09002100_3884B0

Gfx D_09002100_3884B0[]
extern

Referenced by func_E00828B4().

◆ D_09002198_388548

Gfx D_09002198_388548[]
extern

Referenced by func_E00828B4().

◆ D_09002230_3885E0

Gfx D_09002230_3885E0[]
extern

Referenced by func_E00828B4().

◆ D_09002250_388600

Gfx D_09002250_388600[]
extern

Referenced by func_E0082A84().

◆ D_09002270_388620

Gfx D_09002270_388620[]
extern

Referenced by func_E0082A84().

◆ D_09002290_388640

Gfx D_09002290_388640[]
extern

Referenced by func_E0082A84().

◆ D_090022B0_388660

Gfx D_090022B0_388660[]
extern

Referenced by func_E0082A84().

◆ D_09002320_3886D0

Gfx D_09002320_3886D0[]
extern

◆ D_09002360_388710

Gfx D_09002360_388710[]
extern

◆ D_090023A0_388750

Gfx D_090023A0_388750[]
extern

◆ D_090023E0_388790

Gfx D_090023E0_388790[]
extern

◆ D_09002420_3887D0

Gfx D_09002420_3887D0[]
extern

◆ D_09002460_388810

Gfx D_09002460_388810[]
extern

◆ D_090024A0_388850

Gfx D_090024A0_388850[]
extern

◆ D_090024E0_388890

Gfx D_090024E0_388890[]
extern

◆ D_09002520_3888D0

Gfx D_09002520_3888D0[]
extern

◆ D_09002560_388910

Gfx D_09002560_388910[]
extern

◆ D_090025A0_388950

Gfx D_090025A0_388950[]
extern

◆ D_090025E0_388990

Gfx D_090025E0_388990[]
extern

◆ D_E0082D00

Gfx* D_E0082D00[]