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

Go to the source code of this file.

Enumerations

enum  ScreenFadeRates {
  VERY_SLOW_FADE_RATE = 2 , SLOW_FADE_RATE = 7 , SLOWER_FADE_RATE = 10 , STANDARD_FADE_RATE = 20 ,
  FAST_FADE_RATE = 50
}
 

Functions

 INCLUDE_IMG ("ui/stencil/star.png", ui_stencil_star_png)
 
 INCLUDE_IMG ("ui/stencil/mario.png", ui_stencil_mario_png)
 
 INCLUDE_IMG ("ui/stencil/sharp_circle.png", ui_stencil_sharp_circle_png)
 
 INCLUDE_IMG ("ui/stencil/blurry_circle.png", ui_stencil_blurry_circle_png)
 
void _render_transition_stencil (u8 stencilType, f32 progress, ScreenOverlay *overlay)
 
void set_screen_overlay_params_front (u8 type, f32 zoom)
 
void set_screen_overlay_params_back (u8 type, f32 zoom)
 
void get_screen_overlay_params (s32 layer, u8 *type, f32 *zoom)
 
void set_screen_overlay_color (s32 layer, u8 r, u8 g, u8 b)
 
void set_screen_overlay_center (s32 layer, s32 arg1, s32 screenPosX, s32 screenPosY)
 
void set_screen_overlay_center_worldpos (s32 layer, s32 posIdx, s32 worldPosX, s32 worldPosY, s32 worldPosZ)
 
void set_screen_overlay_alpha (s32 layer, f32 alpha)
 
void clear_screen_overlays (void)
 
void func_80138188 (void)
 
void func_80138198 (void)
 
void render_screen_overlay_frontUI (void)
 
void render_screen_overlay_backUI (void)
 
void set_map_transition_effect (ScreenTransition transition)
 
s16 update_exit_map_screen_overlay (s16 *progress)
 
s16 update_enter_map_screen_overlay (s16 *progress)
 

Variables

BSS s32 screen_overlay_frontType
 
BSS f32 screen_overlay_frontZoom
 
BSS s32 screen_overlay_backType
 
BSS f32 screen_overlay_backZoom
 
BSS s32 D_80156910
 
ScreenOverlay ScreenOverlays [2]
 
ScreenTransition CurrentScreenTransition = TRANSITION_END_DEMO_SCENE_BLACK
 
Gfx Gfx_LoadStencilTex_CommonParams []
 
Gfx Gfx_LoadStencilTex_SharpCircle []
 
Gfx Gfx_LoadStencilTex_Mario []
 
Gfx Gfx_LoadStencilTex_Star []
 
Gfx Gfx_LoadStencilTex_BlurryCircle []
 
Gfx D_8014E8F0 []
 
Gfx D_8014E9A8 []
 
Gfx D_8014EA48 []
 

Enumeration Type Documentation

◆ ScreenFadeRates

Enumerator
VERY_SLOW_FADE_RATE 
SLOW_FADE_RATE 
SLOWER_FADE_RATE 
STANDARD_FADE_RATE 
FAST_FADE_RATE 

Definition at line 498 of file screen_overlays.c.

498 {
500 SLOW_FADE_RATE = 7,
501 SLOWER_FADE_RATE = 10,
503 FAST_FADE_RATE = 50,
504};
@ SLOWER_FADE_RATE
@ SLOW_FADE_RATE
@ STANDARD_FADE_RATE
@ FAST_FADE_RATE
@ VERY_SLOW_FADE_RATE

Function Documentation

◆ INCLUDE_IMG() [1/4]

INCLUDE_IMG ( "ui/stencil/star.png" ,
ui_stencil_star_png  )

◆ INCLUDE_IMG() [2/4]

INCLUDE_IMG ( "ui/stencil/mario.png" ,
ui_stencil_mario_png  )

◆ INCLUDE_IMG() [3/4]

◆ INCLUDE_IMG() [4/4]

◆ _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().

◆ set_screen_overlay_params_front()

◆ set_screen_overlay_params_back()

void set_screen_overlay_params_back ( u8 type,
f32 zoom )

◆ get_screen_overlay_params()

void get_screen_overlay_params ( s32 layer,
u8 * type,
f32 * zoom )

Definition at line 368 of file screen_overlays.c.

368 {
369 switch (layer) {
373 break;
377 break;
378 }
379}
@ SCREEN_LAYER_FRONT
Definition enums.h:2382
@ SCREEN_LAYER_BACK
Definition enums.h:2383

Referenced by btl_update(), and create_target_list().

◆ set_screen_overlay_color()

◆ set_screen_overlay_center()

void set_screen_overlay_center ( s32 layer,
s32 arg1,
s32 screenPosX,
s32 screenPosY )

Definition at line 392 of file screen_overlays.c.

392 {
393 switch (layer) {
396 switch (arg1) {
397 case 0:
398 ScreenOverlays[layer].screenPos[0][0] = screenPosX;
399 ScreenOverlays[layer].screenPos[0][1] = screenPosY;
400 break;
401 case 1:
402 ScreenOverlays[layer].screenPos[1][0] = screenPosX;
403 ScreenOverlays[layer].screenPos[1][1] = screenPosY;
404 break;
405 }
406 break;
407 }
408}

Referenced by btl_state_update_end_battle(), draw_encounters_pre_battle(), update_enter_map_screen_overlay(), and update_exit_map_screen_overlay().

◆ set_screen_overlay_center_worldpos()

void set_screen_overlay_center_worldpos ( s32 layer,
s32 posIdx,
s32 worldPosX,
s32 worldPosY,
s32 worldPosZ )

Definition at line 410 of file screen_overlays.c.

410 {
412 f32 tx, ty, tz, tw;
413
414 switch (layer) {
417 transform_point(camera->mtxPerspective, worldPosX, worldPosY, worldPosZ, 1.0f, &tx, &ty, &tz, &tw);
418 tw = 1.0f / tw;
419 tx *= tw;
420 ty *= -tw;
421 tz *= tw;
422 tx = (((tx * camera->viewportW) + camera->viewportW) * 0.5) + camera->viewportStartX;
423 ty = (((ty * camera->viewportH) + camera->viewportH) * 0.5) + camera->viewportStartY;
424
425 switch (posIdx) {
426 case 0:
427 ScreenOverlays[layer].screenPos[0][0] = tx;
428 ScreenOverlays[layer].screenPos[0][1] = ty;
429 break;
430 case 1:
431 ScreenOverlays[layer].screenPos[1][0] = tx;
432 ScreenOverlays[layer].screenPos[1][1] = ty;
433 break;
434 }
435 break;
436 }
437}
#define transform_point

◆ set_screen_overlay_alpha()

void set_screen_overlay_alpha ( s32 layer,
f32 alpha )

Definition at line 439 of file screen_overlays.c.

439 {
440 switch (layer) {
443 ScreenOverlays[layer].alpha = alpha;
444 break;
445 }
446}

Referenced by draw_encounters_pre_battle(), and update_exit_map_screen_overlay().

◆ clear_screen_overlays()

void clear_screen_overlays ( void )

Definition at line 448 of file screen_overlays.c.

448 {
450 s32 i;
451
456
457 for (it = &ScreenOverlays[0], i = 0; i < ARRAY_COUNT(ScreenOverlays); i++, it++) {
458 it->color.b = 0;
459 it->color.g = 0;
460 it->color.r = 0;
461 it->screenPos[1][1] = 0;
462 it->screenPos[1][0] = 0;
463 it->screenPos[0][1] = 0;
464 it->screenPos[0][0] = 0;
465 it->alpha = 255.0f;
466 }
467}
@ OVERLAY_NONE
Definition enums.h:2387
#define ARRAY_COUNT(arr)
Definition macros.h:40

Referenced by load_engine_data(), state_step_demo(), state_step_intro(), and state_step_startup().

◆ func_80138188()

void func_80138188 ( void )

Definition at line 469 of file screen_overlays.c.

469 {
471}

Referenced by load_demo_battle(), and load_map_by_IDs().

◆ func_80138198()

void func_80138198 ( void )

Definition at line 473 of file screen_overlays.c.

473 {
474}

Referenced by step_game_loop().

◆ render_screen_overlay_frontUI()

void render_screen_overlay_frontUI ( void )

Definition at line 476 of file screen_overlays.c.

476 {
478 && screen_overlay_frontZoom != -1.0f
480 ) {
482 }
483}
@ CONTEXT_PAUSE
Definition enums.h:3530
void _render_transition_stencil(u8 stencilType, f32 progress, ScreenOverlay *overlay)
GameStatus * gGameStatusPtr
Definition main_loop.c:32

Referenced by gfx_draw_frame().

◆ render_screen_overlay_backUI()

void render_screen_overlay_backUI ( void )

◆ set_map_transition_effect()

void set_map_transition_effect ( ScreenTransition transition)

Definition at line 494 of file screen_overlays.c.

494 {
496}
ScreenTransition CurrentScreenTransition

Referenced by goto_map(), state_init_demo(), state_init_enter_world(), state_init_exit_file_select(), and state_step_demo().

◆ update_exit_map_screen_overlay()

s16 update_exit_map_screen_overlay ( s16 * progress)

Definition at line 506 of file screen_overlays.c.

506 {
509 u8 r = 0;
510 u8 g = 0;
511 u8 b = 0;
512 s16 t = 0;
514
515 switch (CurrentScreenTransition) {
518 break;
521 break;
525 break;
527 r = g = b = 208;
532 }
533 break;
538 break;
540 r = g = b = 208;
542 break;
546 }
547 r = g = b = 208;
550 break;
553 r = g = b = 208;
556 break;
558 r = g = b = 208;
561 break;
565 break;
567 r = g = b = 208;
571 break;
576 break;
579 r = g = b = 208;
582 break;
587 break;
592 *progress = 255;
593 return 1;
594 }
595
597 overlayColor = ((255 - *progress) * 208) / 255;
600 if (*progress == 255) {
601 return 1;
602 }
603
604 *progress += fadeRate;
605 if (*progress > 255) {
606 *progress = 255;
607 }
608 } else {
609 set_screen_overlay_color(t, r, g, b);
610
611 if (t == 0) {
613 } else {
615 }
616
617 if (*progress == 255) {
618 return 1;
619 }
620
621 *progress += fadeRate;
622 if (*progress > 255) {
623 *progress = 255;
624 }
625 }
626 return 0;
627}
@ TRANSITION_SLOW_BLUR_MOTION
Definition enums.h:2378
@ TRANSITION_END_PEACH_INTERLUDE
Definition enums.h:2374
@ TRANSITION_AFTER_SAVE_PROMPT
Definition enums.h:2373
@ TRANSITION_END_CHAPTER_INTERRUPTED
Definition enums.h:2377
@ TRANSITION_BEGIN_OR_END_CHAPTER
Definition enums.h:2368
@ TRANSITION_GET_STAR_CARD
Definition enums.h:2376
@ TRANSITION_MARIO_BLACK
Definition enums.h:2372
@ TRANSITION_END_DEMO_SCENE_BLACK
Definition enums.h:2364
@ TRANSITION_ENTER_WORLD
Definition enums.h:2370
@ TRANSITION_END_DEMO_SCENE_WHITE
Definition enums.h:2365
@ TRANSITION_BEGIN_OR_END_GAME
Definition enums.h:2366
@ TRANSITION_MARIO_WHITE
Definition enums.h:2371
@ TRANSITION_PEACH_CAPTURED
Definition enums.h:2375
@ TRANSITION_OUTRO_END_SCENE
Definition enums.h:2367
@ TRANSITION_TOY_TRAIN
Definition enums.h:2363
@ TRANSITION_STANDARD
Definition enums.h:2362
@ TRANSITION_SLOW_FADE_TO_WHITE
Definition enums.h:2369
@ DEMO_STATE_CHANGE_MAP
Definition enums.h:3536
void set_screen_overlay_params_front(u8 type, f32 zoom)
void set_screen_overlay_center(s32 layer, s32 arg1, s32 screenPosX, s32 screenPosY)
void set_screen_overlay_color(s32 layer, u8 r, u8 g, u8 b)
void set_screen_overlay_params_back(u8 type, f32 zoom)
void set_screen_overlay_alpha(s32 layer, f32 alpha)
#define LAST_DEMO_SCENE_IDX
Definition macros.h:112

Referenced by init_enter_world_shared(), state_step_change_map(), and state_step_exit_file_select().

◆ update_enter_map_screen_overlay()

s16 update_enter_map_screen_overlay ( s16 * progress)

Definition at line 629 of file screen_overlays.c.

629 {
632 u8 ret = FALSE;
633
634 switch (CurrentScreenTransition) {
638 break;
642 break;
650 break;
657 break;
661 break;
665 break;
669 break;
675 break;
676 }
677
680 }
681
682 if (*progress == 0) {
683 ret = TRUE;
684 }
685
686 *progress -= fadeRate;
687
688 if (*progress < 0) {
689 *progress = 0;
690 }
691
692 return ret;
693}

Referenced by state_step_change_map(), and state_step_enter_world().

Variable Documentation

◆ screen_overlay_frontType

◆ screen_overlay_frontZoom

◆ screen_overlay_backType

◆ screen_overlay_backZoom

◆ D_80156910

BSS s32 D_80156910

Definition at line 9 of file screen_overlays.c.

◆ ScreenOverlays

◆ CurrentScreenTransition

◆ Gfx_LoadStencilTex_CommonParams

Gfx Gfx_LoadStencilTex_CommonParams[]
Initial value:

Definition at line 24 of file screen_overlays.c.

◆ Gfx_LoadStencilTex_SharpCircle

◆ Gfx_LoadStencilTex_Mario

◆ Gfx_LoadStencilTex_Star

◆ Gfx_LoadStencilTex_BlurryCircle

Gfx Gfx_LoadStencilTex_BlurryCircle[]
Initial value:

Definition at line 65 of file screen_overlays.c.

Referenced by _render_transition_stencil().

◆ D_8014E8F0

Gfx D_8014E8F0[]
Initial value:

Definition at line 81 of file screen_overlays.c.

Referenced by _render_transition_stencil().

◆ D_8014E9A8

Gfx D_8014E9A8[]
Initial value:

Definition at line 107 of file screen_overlays.c.

Referenced by _render_transition_stencil().

◆ D_8014EA48

Gfx D_8014EA48[]

Definition at line 130 of file screen_overlays.c.

130 {
132 gsDPSetPrimDepth(20, 0),
136 gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
137 gsDPPipeSync(),
145 gsSPVertex(&vtx_stencil2, 24, 0),
147 gsSP2Triangles(0, 2, 1, 0, 3, 1, 2, 0),
149 gsSP2Triangles(2, 4, 3, 0, 5, 3, 4, 0),
151 gsSP2Triangles(4, 6, 5, 0, 7, 5, 6, 0),
153 gsSP2Triangles(6, 8, 7, 0, 9, 7, 8, 0),
155 gsSP2Triangles(8, 10, 9, 0, 11, 9, 10, 0),
157 gsSP2Triangles(10, 12, 11, 0, 13, 11, 12, 0),
159 gsSP2Triangles(12, 14, 13, 0, 15, 13, 14, 0),
161 gsSP2Triangles(14, 16, 15, 0, 17, 15, 16, 0),
163 gsSP2Triangles(16, 18, 17, 0, 19, 17, 18, 0),
165 gsSP2Triangles(18, 20, 19, 0, 21, 19, 20, 0),
167 gsSP2Triangles(20, 22, 21, 0, 23, 21, 22, 0),
168 gsDPPipeSync(),
170};
BSS s32 D_80156910

Referenced by _render_transition_stencil().