diff --git a/bin/segment2.c b/bin/segment2.c index 207405451..b1957c6c3 100644 --- a/bin/segment2.c +++ b/bin/segment2.c @@ -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}}}, diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c index e83daead1..fbfddb50d 100644 --- a/src/game/ingame_menu.c +++ b/src/game/ingame_menu.c @@ -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) { diff --git a/src/game/segment2.h b/src/game/segment2.h index 20fd6d23b..239e21395 100644 --- a/src/game/segment2.h +++ b/src/game/segment2.h @@ -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[];