diff --git a/display.c b/display.c index 6fd502e..f6c3dc4 100644 --- a/display.c +++ b/display.c @@ -57,7 +57,7 @@ void display_init() // Start the display in progressive mode int screenHeight; - display_reset(0, &screenHeight); + display_reset(GetVideoMode(), 0, &screenHeight); // Set and enable clear color setRGB0(&draw[0], 49, 77, 121); @@ -86,10 +86,13 @@ void display_init() gte_SetGeomScreen(180); // Screen depth for FOV control. Determines the distance of the camera to the near plane. } -void display_reset(u_char interlaced, int *outScreenHeight) +void display_reset(int mode, u_char interlaced, int *outScreenHeight) { + if (mode != GetVideoMode()) + SetVideoMode(mode); + int screenHeight, yOffset; - if (GetVideoMode() == MODE_NTSC) + if (mode == MODE_NTSC) { screenHeight = SCREENHEIGHT_NTSC; yOffset = (240 - SCREENHEIGHT_NTSC) >> 1; // Vertically center the image for NTSC displays diff --git a/display.h b/display.h index fd4ded0..8ccd9bb 100644 --- a/display.h +++ b/display.h @@ -11,7 +11,7 @@ extern MATRIX vp_matrix; extern u_long *curOT; void display_init(); -void display_reset(u_char interlaced, int *outScreenHeight); +void display_reset(int mode, u_char interlaced, int *outScreenHeight); void display_start(); void display_finish(); diff --git a/input.c b/input.c index 2a60cf0..8dd5d80 100644 --- a/input.c +++ b/input.c @@ -107,7 +107,7 @@ void input_process() { dispmode_held = 1; disp_interlace = !disp_interlace; - display_reset(disp_interlace, NULL); + display_reset(!GetVideoMode(), 0, NULL); } } else