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 172 of file screen_overlays.c.

172 {
174 u8 colR, colG, colB;
175 s32 x1, y1, x2, y2;
176 f32 alpha;
177 s16 v0;
178 s16 s0;
179 Mtx* matrixStack = gDisplayContext->matrixStack;
180
181 if (progress == 0.0f) {
182 return;
183 }
184
185 if (overlay != NULL) {
186 colR = overlay->color.r;
187 colG = overlay->color.g;
188 colB = overlay->color.b;
189 x1 = overlay->screenPos[0][0];
190 y1 = overlay->screenPos[0][1];
191 x2 = overlay->screenPos[1][0];
192 y2 = overlay->screenPos[1][1];
193 alpha = overlay->alpha;
194 } else {
195 colR = colG = colB = 0;
196 x1 = y1 = x2 = y2 = 0;
197 alpha = 0.0f;
198 }
199
200 switch (stencilType) {
206 if (progress == 255.0f) {
208 } else {
210 }
216 return;
222 if (progress == 255.0f) {
224 } else {
226 }
230 gDPFillRectangle(gMainGfxPos++, camera->viewportStartX, camera->viewportStartY,
231 camera->viewportStartX + camera->viewportW, camera->viewportStartY + camera->viewportH);
233 return;
234 }
235
236 guOrtho(&matrixStack[gMatrixListPos], 0.0f, 320.0f, 0.0f, 240.0f, -1000.0f, 1000.0f, 1.0f);
238
239 switch (stencilType) {
243 break;
247 break;
251 break;
255 break;
259 break;
263 break;
264 case OVERLAY_TYPE_2:
265 s0 = progress;
266 guTranslate(&matrixStack[gMatrixListPos], 80.0f, 120.0f, 0.0f);
268 guScale(&matrixStack[gMatrixListPos], (1.0f - s0 / 255.0f) * 0.8, (1.0f - s0 / 255.0f) * 0.8, 1.0f);
270 guRotate(&matrixStack[gMatrixListPos], s0 * 0.5f, 0.0f, 0.0f, 1.0f);
274
275 guTranslate(&matrixStack[gMatrixListPos], 240.0f, 120.0f, 0.0f);
277 guScale(&matrixStack[gMatrixListPos], (1.0f - s0 / 255.0f) * 0.8, (1.0f - s0 / 255.0f) * 0.8, 1.0f);
279 guRotate(&matrixStack[gMatrixListPos], s0 * 0.5f, 0.0f, 0.0f, 1.0f);
283
284 guTranslate(&matrixStack[gMatrixListPos], 0.0f, 0.0f, 0.0f);
288 break;
289 case OVERLAY_TYPE_9:
290 s0 = progress;
291 gDPSetPrimColor(gMainGfxPos++, 0, 0, 0, 0, 0, 0);
292 guTranslate(&matrixStack[gMatrixListPos], x1, SCREEN_HEIGHT - y1, 0.0f);
294 guScale(&matrixStack[gMatrixListPos], (1.0f - s0 / 255.0f) * 0.8, (1.0f - s0 / 255.0f) * 0.8, 1.0f);
296 guRotate(&matrixStack[gMatrixListPos], -s0, 0.0f, 0.0f, 1.0f);
300
301 guTranslate(&matrixStack[gMatrixListPos], x2, SCREEN_HEIGHT - y2, 0.0f);
303 guScale(&matrixStack[gMatrixListPos], (1.0f - s0 / 255.0f) * 0.8, (1.0f - s0 / 255.0f) * 0.8, 1.0f);
305 guRotate(&matrixStack[gMatrixListPos], -s0, 0.0f, 0.0f, 1.0f);
309
310 guTranslate(&matrixStack[gMatrixListPos], 0.0f, 0.0f, 0.0f);
312 gDPSetPrimColor(gMainGfxPos++, 0, 0, 0, 0, 0, alpha);
315 break;
317 s0 = progress;
318 gDPSetPrimColor(gMainGfxPos++, 0, 0, 0, 0, 0, 0);
319 guTranslate(&matrixStack[gMatrixListPos], x1, SCREEN_HEIGHT - y1, 0.0f);
321 guScale(&matrixStack[gMatrixListPos], (1.0f - s0 / 255.0f) * 0.8, (1.0f - s0 / 255.0f) * 0.8, 1.0f);
323 guRotate(&matrixStack[gMatrixListPos], (f32)(-s0) * 0.5, 0.0f, 0.0f, 1.0f);
327
328 guTranslate(&matrixStack[gMatrixListPos], 0.0f, 0.0f, 0.0f);
330 gDPSetPrimColor(gMainGfxPos++, 0, 0, 0, 0, 0, alpha);
333 v0 = progress + 40;
334 if (progress > 170) {
335 v0 = 170;
336 }
338 break;
342 break;
343 case OVERLAY_BLUR:
345 break;
349 break;
350 case OVERLAY_INTRO_1:
351 case OVERLAY_INTRO_2:
352 break;
353 }
354
356}
BSS s32 PopupMenu_SelectedIndex
Mtx matrixStack[0x200]
#define draw_prev_frame_buffer_at_screen_pos
#define guTranslate
@ OVERLAY_VIEWPORT_STAR
Definition enums.h:2393
@ OVERLAY_BLUR
Definition enums.h:2400
@ OVERLAY_SCREEN_MARIO
Definition enums.h:2395
@ OVERLAY_VIEWPORT_MARIO
Definition enums.h:2392
@ OVERLAY_START_BATTLE
Definition enums.h:2398
@ OVERLAY_SCREEN_SPOTLIGHT
Definition enums.h:2394
@ OVERLAY_SCREEN_COLOR
Definition enums.h:2388
@ OVERLAY_VIEWPORT_COLOR
Definition enums.h:2389
@ OVERLAY_INTRO_2
Definition enums.h:2403
@ OVERLAY_INTRO_1
Definition enums.h:2402
@ OVERLAY_BATTLE_DARKNESS
Definition enums.h:2401
@ OVERLAY_TYPE_2
Definition enums.h:2390
@ OVERLAY_WORLD_DARKNESS
Definition enums.h:2399
@ OVERLAY_VIEWPORT_SPOTLIGHT
Definition enums.h:2391
@ OVERLAY_TYPE_9
Definition enums.h:2397
@ OVERLAY_SCREEN_STAR
Definition enums.h:2396
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: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

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:287
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:14
#define sin_deg
u16 * nuGfxZBuffer
Definition main.c:46
Gfx Gfx_DarknessStencilQuad[]
Vp DarknessStencilViewport
#define PM_CC_CONST_1
Definition macros.h:515
#define PM_CC_58
Definition macros.h:501
#define PM_CC_0F
Definition macros.h:296
#define PM_CC_57
Definition macros.h:500
#define PM_CC_56
Definition macros.h:499
GameStatus * gGameStatusPtr
Definition main_loop.c:32

Referenced by _render_transition_stencil().