Use FillRectangle for shade_screen (#611)

This commit is contained in:
Arceveti
2023-06-05 18:06:37 -04:00
committed by GitHub
parent 351f6f8961
commit 580fd45079
3 changed files with 25 additions and 12 deletions

View File

@@ -2328,6 +2328,23 @@ const Gfx dl_rgba16_text_end[] = {
gsSPEndDisplayList(),
};
const Gfx dl_shade_screen_begin[] = {
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_CLD_SURF, G_RM_CLD_SURF2),
gsDPSetCycleType(G_CYC_1CYCLE),
gsDPSetPrimColor(0, 0, 0, 0, 0, 127),
gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PRIMITIVE),
gsSPEndDisplayList(),
};
const Gfx dl_shade_screen_end[] = {
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),
gsDPSetPrimColor(0, 0, 255, 255, 255, 255),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPEndDisplayList(),
};
// 0x0200EDA8 - 0x0200EDE8
static const Vtx vertex_text_bg_box[] = {
{{{ 0, -80, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},

View File

@@ -1468,20 +1468,14 @@ void change_dialog_camera_angle(void) {
}
void shade_screen(void) {
create_dl_translation_matrix(MENU_MTX_PUSH, GFX_DIMENSIONS_FROM_LEFT_EDGE(0), SCREEN_HEIGHT, 0);
Gfx* dlHead = gDisplayListHead;
// This is a bit weird. It reuses the dialog text box (width 130, height -80),
// so scale to at least fit the screen.
#ifdef WIDESCREEN
create_dl_scale_matrix(MENU_MTX_NOPUSH,
GFX_DIMENSIONS_ASPECT_RATIO * SCREEN_HEIGHT / 130.0f, 3.0f, 1.0f);
#else
create_dl_scale_matrix(MENU_MTX_NOPUSH, 2.6f, 3.4f, 1.0f);
#endif
gSPDisplayList(dlHead++, dl_shade_screen_begin);
gDPFillRectangle(dlHead++, GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(0), gBorderHeight,
(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(0) - 1), ((SCREEN_HEIGHT - gBorderHeight) - 1));
gSPDisplayList(dlHead++, dl_shade_screen_end);
gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 110);
gSPDisplayList(gDisplayListHead++, dl_draw_text_bg_box);
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
gDisplayListHead = dlHead;
}
void print_animated_red_coin(s16 x, s16 y) {

View File

@@ -54,6 +54,8 @@ extern Gfx dl_ia_text_tex_settings[];
extern Gfx dl_rgba16_load_tex_block[];
extern void *main_credits_font_lut[];
extern Texture *main_hud_camera_lut[6];
extern Gfx dl_shade_screen_begin[];
extern Gfx dl_shade_screen_end[];
extern Gfx dl_draw_text_bg_box[];
extern Gfx dl_draw_triangle[];
extern void *seg2_dialog_table[];