Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
quizmo_stage.c
Go to the documentation of this file.
1#include "common.h"
2#include "effects_internal.h"
3
10extern Gfx D_09006F20_39FAE0[];
11extern Gfx D_09006FB0_39FB70[];
12extern Gfx D_09006FD8_39FB98[];
13extern Gfx D_09007030_39FBF0[];
14extern Gfx D_09007090_39FC50[];
15extern Gfx D_090070E8_39FCA8[];
16extern Gfx D_09007230_39FDF0[];
17
21void quizmo_stage_appendGfx(void* effect);
22
25 EffectInstance* effect;
27 s32 numParts = 1;
28
31 effectBp.renderScene = quizmo_stage_render;
32 effectBp.unk_00 = 0;
33 effectBp.renderUI = NULL;
35
37 effect->numParts = numParts;
38
39 data = effect->data.quizmoStage = general_heap_malloc(numParts * sizeof(*data));
40 ASSERT(data != NULL);
41
42 data->vanishTimer = 100;
43 data->microphoneRaiseAmt = 255;
44 data->rearWallRaiseAmt = 255;
45 data->leftWallRaiseAmt = 255;
46 data->rightWallRaiseAmt = 255;
47 data->podiumRaiseAmt = 255;
48 data->lightScrollIncrement = 64;
49 data->unk_00 = arg0;
50 data->origin.x = posX;
51 data->origin.y = posY;
52 data->origin.z = posZ;
53 data->lightScrollAmt = 0;
54 data->lightScrollDelay = 15;
55 data->unkEffectMode = 0;
56 data->lifetime = 0;
57
58 return effect;
59}
60
63
65 QuizmoStageFXData *data = effect->data.quizmoStage;
66 s32 lifeTime;
67
68 if (effect->flags & FX_INSTANCE_FLAG_DISMISS) {
70 data->vanishTimer = 30;
71 }
72
73 if (data->vanishTimer < 100) {
74 data->vanishTimer--;
75 }
76
77 data->lifetime++;
78 lifeTime = data->lifetime;
79
80 if (data->vanishTimer < 0) {
81 remove_effect(effect);
82 return;
83 }
84 if (data->vanishTimer < 16) {
85 data->microphoneRaiseAmt = data->vanishTimer * 16;
86 }
87 if ((lifeTime % data->lightScrollDelay) == 0) {
89 if (data->lightScrollAmt >= 1025) {
90 data->lightScrollAmt -= 1024;
91 }
92 }
93}
94
107
108void quizmo_stage_appendGfx(void* effect) {
109 QuizmoStageFXData* data = ((EffectInstance*)effect)->data.quizmoStage;
110 s32 microphoneRaiseAmt = data->microphoneRaiseAmt;
113
115 gSPSegment(gMainGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(((EffectInstance*)effect)->shared->graphics));
116
117 guTranslateF(sp18, data->origin.x, data->origin.y, data->origin.z);
118 guRotateF(sp58, -gCameras[gCurrentCameraID].curYaw, 0.0f, 1.0f, 0.0f);
121
123 gDPSetPrimColor(gMainGfxPos++, 0, 0, microphoneRaiseAmt, microphoneRaiseAmt, microphoneRaiseAmt, 255);
126
127 if (data->unk_3C != 255) {
129
130 guRotateF(sp18, (data->rearWallRaiseAmt * 180) / 255 - 180, 1.0f, 0.0f, 0.0f);
132
140
141 guRotateF(sp18, 90 - (data->leftWallRaiseAmt * 90) / 255, 0.0f, 0.0f, 1.0f);
143
148
149 guRotateF(sp18, (data->rightWallRaiseAmt * 90) / 255 - 90, 0.0f, 0.0f, 1.0f);
151
161
162 guRotateF(sp18, 90 - (data->podiumRaiseAmt * 90) / 255, 1.0f, 0.0f, 0.0f);
164
170 }
171
174}
BSS s32 PopupMenu_SelectedIndex
Mtx matrixStack[0x200]
f32 Matrix4f[4][4]
#define general_heap_malloc
#define guRotateF
#define queue_render_task
#define guMtxF2L
#define guTranslateF
#define guMtxCatF
#define remove_effect
#define create_effect_instance
EffectInstanceDataPtr data
Definition effects.h:2605
struct QuizmoStageFXData * quizmoStage
Definition effects.h:2542
#define ASSERT(condition)
@ FX_INSTANCE_FLAG_DISMISS
Definition enums.h:3517
@ RENDER_TASK_FLAG_REFLECT_FLOOR
Definition enums.h:3318
@ RENDER_MODE_SURFACE_OPA
Definition enums.h:3264
Gfx D_09007090_39FC50[]
Gfx D_09006DA0_39F960[]
Mtx D_09004148_39CD08[]
Gfx D_09000218_398DD8[]
Gfx D_09006FB0_39FB70[]
void quizmo_stage_render(EffectInstance *effect)
Gfx D_09007030_39FBF0[]
Gfx D_09006FD8_39FB98[]
Gfx D_090070E8_39FCA8[]
Gfx D_09006F20_39FAE0[]
void quizmo_stage_init(EffectInstance *effect)
EffectInstance * quizmo_stage_main(s32 arg0, f32 posX, f32 posY, f32 posZ)
Gfx D_09006E28_39F9E8[]
Gfx D_09001518_39A0D8[]
Gfx D_09007230_39FDF0[]
void quizmo_stage_appendGfx(void *effect)
Gfx D_09006D48_39F908[]
void quizmo_stage_update(EffectInstance *effect)
#define PM_CC2_MULTIPLY_PRIM
Definition macros.h:309
#define VIRTUAL_TO_PHYSICAL(addr)
Definition macros.h:47
void(* appendGfx)(void *)
Camera gCameras[4]
Definition cam_main.c:17
Gfx * gMainGfxPos
Definition cam_main.c:15
u16 gMatrixListPos
Definition main_loop.c:45
s32 gCurrentCameraID
Definition cam_math.c:4
DisplayContext * gDisplayContext
Definition cam_main.c:16