Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
overlay.h File Reference

Go to the source code of this file.

Data Structures

struct  ScreenOverlay
 

Functions

void _render_transition_stencil (u8, f32, ScreenOverlay *)
 
void appendGfx_screen_transition_stencil (s32, s32, f32, s32, s32, s32, s32, s32)
 
void appendGfx_darkness_stencil (s32, s32, s32, f32, f32)
 

Data Structure Documentation

◆ ScreenOverlay

struct ScreenOverlay
Data Fields
Color_RGB8 color
char unk_03
s32 screenPos[2][2]
f32 alpha

Function Documentation

◆ _render_transition_stencil()

void _render_transition_stencil ( u8 stencilType,
f32 progress,
ScreenOverlay * overlay )

Definition at line 174 of file screen_overlays.c.

174 {
176 u8 colR, colG, colB;
177 s32 x1, y1, x2, y2;
178 f32 alpha;
179 s16 v0;
180 s16 s0;
181 Mtx* matrixStack = gDisplayContext->matrixStack;
182
183 if (progress == 0.0f) {
184 return;
185 }
186
187 if (overlay != NULL) {
188 colR = overlay->color.r;
189 colG = overlay->color.g;
190 colB = overlay->color.b;
191 x1 = overlay->screenPos[0][0];
192 y1 = overlay->screenPos[0][1];
193 x2 = overlay->screenPos[1][0];
194 y2 = overlay->screenPos[1][1];
195 alpha = overlay->alpha;
196 } else {
197 colR = colG = colB = 0;
198 x1 = y1 = x2 = y2 = 0;
199 alpha = 0.0f;
200 }
201
202 switch (stencilType) {
208 if (progress == 255.0f) {
210 } else {
212 }
218 return;
224 if (progress == 255.0f) {
226 } else {
228 }
232 gDPFillRectangle(gMainGfxPos++, camera->viewportStartX, camera->viewportStartY,
233 camera->viewportStartX + camera->viewportW, camera->viewportStartY + camera->viewportH);
235 return;
236 }
237
238 guOrtho(&matrixStack[gMatrixListPos], 0.0f, 320.0f, 0.0f, 240.0f, -1000.0f, 1000.0f, 1.0f);
240
241 switch (stencilType) {
245 break;
249 break;
253 break;
257 break;
261 break;
265 break;
266 case OVERLAY_TYPE_2:
267 s0 = progress;
268 guTranslate(&matrixStack[gMatrixListPos], 80.0f, 120.0f, 0.0f);
270 guScale(&matrixStack[gMatrixListPos], (1.0f - s0 / 255.0f) * 0.8, (1.0f - s0 / 255.0f) * 0.8, 1.0f);
272 guRotate(&matrixStack[gMatrixListPos], s0 * 0.5f, 0.0f, 0.0f, 1.0f);
276
277 guTranslate(&matrixStack[gMatrixListPos], 240.0f, 120.0f, 0.0f);
279 guScale(&matrixStack[gMatrixListPos], (1.0f - s0 / 255.0f) * 0.8, (1.0f - s0 / 255.0f) * 0.8, 1.0f);
281 guRotate(&matrixStack[gMatrixListPos], s0 * 0.5f, 0.0f, 0.0f, 1.0f);
285
286 guTranslate(&matrixStack[gMatrixListPos], 0.0f, 0.0f, 0.0f);
290 break;
291 case OVERLAY_TYPE_9:
292 s0 = progress;
293 gDPSetPrimColor(gMainGfxPos++, 0, 0, 0, 0, 0, 0);
294 guTranslate(&matrixStack[gMatrixListPos], x1, SCREEN_HEIGHT - y1, 0.0f);
296 guScale(&matrixStack[gMatrixListPos], (1.0f - s0 / 255.0f) * 0.8, (1.0f - s0 / 255.0f) * 0.8, 1.0f);
298 guRotate(&matrixStack[gMatrixListPos], -s0, 0.0f, 0.0f, 1.0f);
302
303 guTranslate(&matrixStack[gMatrixListPos], x2, SCREEN_HEIGHT - y2, 0.0f);
305 guScale(&matrixStack[gMatrixListPos], (1.0f - s0 / 255.0f) * 0.8, (1.0f - s0 / 255.0f) * 0.8, 1.0f);
307 guRotate(&matrixStack[gMatrixListPos], -s0, 0.0f, 0.0f, 1.0f);
311
312 guTranslate(&matrixStack[gMatrixListPos], 0.0f, 0.0f, 0.0f);
314 gDPSetPrimColor(gMainGfxPos++, 0, 0, 0, 0, 0, alpha);
317 break;
319 s0 = progress;
320 gDPSetPrimColor(gMainGfxPos++, 0, 0, 0, 0, 0, 0);
321 guTranslate(&matrixStack[gMatrixListPos], x1, SCREEN_HEIGHT - y1, 0.0f);
323 guScale(&matrixStack[gMatrixListPos], (1.0f - s0 / 255.0f) * 0.8, (1.0f - s0 / 255.0f) * 0.8, 1.0f);
325 guRotate(&matrixStack[gMatrixListPos], (f32)(-s0) * 0.5, 0.0f, 0.0f, 1.0f);
329
330 guTranslate(&matrixStack[gMatrixListPos], 0.0f, 0.0f, 0.0f);
332 gDPSetPrimColor(gMainGfxPos++, 0, 0, 0, 0, 0, alpha);
335 v0 = progress + 40;
336 if (progress > 170) {
337 v0 = 170;
338 }
340 break;
344 break;
345 case OVERLAY_BLUR:
347 break;
351 break;
352 case OVERLAY_INTRO_1:
353 case OVERLAY_INTRO_2:
354 break;
355 }
356
358}
BSS s32 PopupMenu_SelectedIndex
Mtx matrixStack[0x200]
#define draw_prev_frame_buffer_at_screen_pos
#define guTranslate
@ OVERLAY_VIEWPORT_STAR
Definition enums.h:2379
@ OVERLAY_BLUR
Definition enums.h:2386
@ OVERLAY_SCREEN_MARIO
Definition enums.h:2381
@ OVERLAY_VIEWPORT_MARIO
Definition enums.h:2378
@ OVERLAY_START_BATTLE
Definition enums.h:2384
@ OVERLAY_SCREEN_SPOTLIGHT
Definition enums.h:2380
@ OVERLAY_SCREEN_COLOR
Definition enums.h:2374
@ OVERLAY_VIEWPORT_COLOR
Definition enums.h:2375
@ OVERLAY_INTRO_2
Definition enums.h:2389
@ OVERLAY_INTRO_1
Definition enums.h:2388
@ OVERLAY_BATTLE_DARKNESS
Definition enums.h:2387
@ OVERLAY_TYPE_2
Definition enums.h:2376
@ OVERLAY_WORLD_DARKNESS
Definition enums.h:2385
@ OVERLAY_VIEWPORT_SPOTLIGHT
Definition enums.h:2377
@ OVERLAY_TYPE_9
Definition enums.h:2383
@ OVERLAY_SCREEN_STAR
Definition enums.h:2382
Color_RGB8 color
Definition overlay.h:7
void appendGfx_darkness_stencil(s32, s32, s32, f32, f32)
s32 screenPos[2][2]
Definition overlay.h:9
void appendGfx_screen_transition_stencil(s32, s32, f32, s32, s32, s32, s32, s32)
Gfx D_8014E8F0[]
Gfx D_8014EA48[]
Gfx Gfx_LoadStencilTex_Star[]
Gfx Gfx_LoadStencilTex_BlurryCircle[]
Gfx Gfx_LoadStencilTex_SharpCircle[]
Gfx D_8014E9A8[]
Gfx Gfx_LoadStencilTex_Mario[]
#define SCREEN_WIDTH
Definition macros.h:109
#define SCREEN_HEIGHT
Definition macros.h:110
Camera gCameras[4]
Definition cam_main.c:16
Gfx * gMainGfxPos
Definition cam_main.c:14
u16 gMatrixListPos
Definition main_loop.c:44
s32 gCurrentCameraID
Definition cam_math.c:5
DisplayContext * gDisplayContext
Definition cam_main.c:15

Referenced by gfx_draw_frame(), render_screen_overlay_backUI(), and render_screen_overlay_frontUI().

◆ appendGfx_screen_transition_stencil()

void appendGfx_screen_transition_stencil ( s32 arg0,
s32 arg1,
f32 progress,
s32 primR,
s32 primG,
s32 primB,
s32 primA,
s32 camID )

Definition at line 246 of file screen_render_util.c.

246 {
247 s32 x1, y1, x2, y2, t5, t6;
249
250 if (camID >= 0) {
255 t5 = x1;
256 t6 = y1;
257 } else {
258 x1 = 0;
259 y1 = 0;
262 t5 = 0;
263 t6 = 0;
264 }
265
266 if (progress == 0.0f) {
267 return;
268 }
269
271 if (progress == 255.0f) {
273 }
274 gDPSetPrimColor(gMainGfxPos++, 0, 0, primR, primG, primB, primA);
275 texScale = (255.0f - progress) * 10.5f / 255.0f + 0.09; // range from
277 (t5 - arg0) * 32.0f / texScale + 16.0f + 1024.0f, (t6 - arg1) * 32.0f / texScale + 16.0f + 1024.0f,
278 1024.0f / texScale, 1024.0f / texScale);
280}
#define PM_CC_PRIM_FULL_ALPHA
Definition macros.h:296
s16 viewportStartX
s16 viewportStartY

Referenced by _render_transition_stencil().

◆ appendGfx_darkness_stencil()

void appendGfx_darkness_stencil ( s32 isWorld,
s32 posX,
s32 posY,
f32 alpha,
f32 progress )

Definition at line 129 of file screen_render_util.c.

129 {
132 s32 i;
133
134 if (alpha == 0.0f) {
135 return;
136 }
137
138 if (!isWorld) {
139 texScale = (255.0f - alpha) * 10.0f / 255.0f + 0.14;
140 } else {
141 texScale = 0.5f;
142 texScale = (255.0f - alpha) * 9.5f / 255.0f + texScale;
143 posX += (camera->viewportW / 2 - posX) * (255.0f - alpha) / 255.0f;
144 posY += (camera->viewportH / 2 - posY) * (255.0f - alpha) / 255.0f;
145 }
146
147 guOrtho(&gDisplayContext->matrixStack[gMatrixListPos], -16.0f, 0.0f, 0.0f, 16.0f, -1000.0f, 1000.0f, 1.0f);
156 guRotate(&gDisplayContext->matrixStack[gMatrixListPos], 0.0f, 0.0f, 0.0f, 1.0f);
162
163 for (i = 0; i < 2; i++) {
164 f32 f20;
165 f32 f2;
166 s32 s0 = 255;
167
168 if (i == 0) {
169 f20 = 0.9 - sin_deg(gGameStatusPtr->frameCounter) * 0.05;
170 } else {
171 f20 = 0.9 - sin_deg(gGameStatusPtr->frameCounter * 2 + i * 40) * 0.07;
172 }
173 f2 = 0;
174 if (s0 > 255) {
175 s0 = 255;
176 }
177
178 gDPSetPrimColor(gMainGfxPos++, 0, 0, 255, 255, 255, s0);
179 guRotate(&gDisplayContext->matrixStack[gMatrixListPos], i * 70 + f2, 0.0f, 0.0f, 1.0f);
185 }
186
192
193 for (i = 0; i < 4; i++) {
196 gSPTextureRectangle(gMainGfxPos++, 0, (i * 16) * 4, 64 * 4, (i * 16 + 16) * 4, G_TX_RENDERTILE, 0, 0, 0x400, 0x400);
198 }
199
201 0, G_TX_MIRROR | G_TX_CLAMP, G_TX_MIRROR | G_TX_CLAMP, 6, 6, 15, 15);
202 gDPSetTileSize(gMainGfxPos++, G_TX_RENDERTILE, 0, 0, 0x01FC, 0x01FC);
204
209 gDPFillRectangle(gMainGfxPos++, 0, 0, 63, 63);
211
219
220 if (alpha != 255.0f || isWorld == 1) {
222 } else {
224 }
225 alpha *= 0.5f;
226 gDPSetPrimColor(gMainGfxPos++, 0, 0, 0, 0, 0, alpha * 0.5f * progress / 255.0f);
227 gDPSetEnvColor(gMainGfxPos++, 255, 255, 255, (255.0f - alpha * 0.5f) * progress / 255.0f);
228
229 if (!isWorld) {
231 camera->viewportStartX * 4, camera->viewportStartY * 4,
232 (camera->viewportStartX + camera->viewportW) * 4, (camera->viewportStartY + camera->viewportH) * 4,
234 (12 - posX) * 32.0f / texScale + 16.0f + 1024.0f, (19 - posY) * 32.0f / texScale + 16.0f + 1024.0f,
235 1024.0f / texScale, 1024.0f / texScale);
236 } else {
238 camera->viewportStartX * 4, camera->viewportStartY * 4,
239 (camera->viewportStartX + camera->viewportW) * 4, (camera->viewportStartY + camera->viewportH) * 4,
241 (9 - posX) * 32.0f / texScale + 1024.0f, (32 - posY) * 32.0f / texScale + 1024.0f,
242 1024.0f / texScale, 1024.0f / texScale);
243 }
244}
u16 * nuGfxCfb_ptr
Definition cam_main.c:13
#define sin_deg
u16 * nuGfxZBuffer
Definition main.c:46
Gfx Gfx_DarknessStencilQuad[]
Vp DarknessStencilViewport
#define PM_CC_CONST_1
Definition macros.h:524
#define PM_CC_58
Definition macros.h:510
#define PM_CC_0F
Definition macros.h:305
#define PM_CC_57
Definition macros.h:509
#define PM_CC_56
Definition macros.h:508
GameStatus * gGameStatusPtr
Definition main_loop.c:31

Referenced by _render_transition_stencil().