From 958e1598455be290c0c37ce9e380ca761d6ded63 Mon Sep 17 00:00:00 2001 From: dborth Date: Tue, 21 Apr 2009 21:48:22 +0000 Subject: [PATCH] allow invalid VRAM access (fixes some homebrew games), menu disabled when loading a game, video mode changes --- source/ngc/fileop.cpp | 4 ---- source/ngc/menu.cpp | 6 ++++-- source/ngc/s9xconfig.cpp | 2 +- source/ngc/video.cpp | 13 ++++--------- 4 files changed, 9 insertions(+), 16 deletions(-) diff --git a/source/ngc/fileop.cpp b/source/ngc/fileop.cpp index 9d5d21f..be0aa49 100644 --- a/source/ngc/fileop.cpp +++ b/source/ngc/fileop.cpp @@ -190,10 +190,6 @@ bool MountFAT(int method) mounted = false; else if(!fatMountSimple(name, disc)) mounted = false; -#ifdef HW_RVL - else - fatSetReadAhead(rootdir, 6, 64); -#endif } isMounted[method] = mounted; diff --git a/source/ngc/menu.cpp b/source/ngc/menu.cpp index 7e763cc..1abc9f0 100644 --- a/source/ngc/menu.cpp +++ b/source/ngc/menu.cpp @@ -400,6 +400,7 @@ ProgressWindow(char *title, char *msg) return; HaltGui(); + int oldState = mainWindow->GetState(); mainWindow->SetState(STATE_DISABLED); mainWindow->Append(&promptWindow); mainWindow->ChangeFocus(&promptWindow); @@ -431,7 +432,7 @@ ProgressWindow(char *title, char *msg) HaltGui(); mainWindow->Remove(&promptWindow); - mainWindow->SetState(STATE_DEFAULT); + mainWindow->SetState(oldState); ResumeGui(); } @@ -1009,7 +1010,8 @@ static int MenuGameSelection() mainWindow->SetState(STATE_DISABLED); if(BrowserLoadFile(GCSettings.LoadMethod)) menu = MENU_EXIT; - mainWindow->SetState(STATE_DEFAULT); + else + mainWindow->SetState(STATE_DEFAULT); } } } diff --git a/source/ngc/s9xconfig.cpp b/source/ngc/s9xconfig.cpp index b719cfb..fe36949 100644 --- a/source/ngc/s9xconfig.cpp +++ b/source/ngc/s9xconfig.cpp @@ -106,7 +106,7 @@ DefaultSettings () Settings.ShutdownMaster = true; // needs to be on for ActRaiser 2 Settings.ApplyCheats = true; - Settings.BlockInvalidVRAMAccess = true; + Settings.BlockInvalidVRAMAccess = false; Settings.HDMATimingHack = 100; // Sound defaults. On GC this is 32Khz/16bit/Stereo/InterpolatedSound diff --git a/source/ngc/video.cpp b/source/ngc/video.cpp index 293ebd7..3b6adff 100644 --- a/source/ngc/video.cpp +++ b/source/ngc/video.cpp @@ -516,14 +516,9 @@ InitGCVideo () { case VI_PAL: // 576 lines (PAL 50Hz) - // display should be centered vertically (borders) - vmode = &TVPal574IntDfScale; - vmode->xfbHeight = 480; - vmode->viYOrigin = (VI_MAX_HEIGHT_PAL - 480)/2; - vmode->viHeight = 480; vmode_60hz = 0; - // Original Video modes (forced to PAL 50hz) + // Original Video modes (forced to PAL 50Hz) // set video signal mode TV_224p.viTVMode = VI_TVMODE_PAL_DS; TV_448i.viTVMode = VI_TVMODE_PAL_INT; @@ -533,7 +528,7 @@ InitGCVideo () break; case VI_NTSC: - // 480 lines (NTSC 60hz) + // 480 lines (NTSC 60Hz) vmode_60hz = 1; // Original Video modes (forced to NTSC 60hz) @@ -591,7 +586,7 @@ InitGCVideo () VIDEO_Configure (vmode); screenheight = 480; - screenwidth = vmode->fbWidth; + screenwidth = 640; // Allocate the video buffers xfb[0] = (u32 *) MEM_K0_TO_K1 (SYS_AllocateFramebuffer (vmode)); @@ -696,7 +691,7 @@ ResetVideo_Emu () GX_SetZMode (GX_TRUE, GX_LEQUAL, GX_TRUE); GX_SetColorUpdate (GX_TRUE); - guOrtho(p, 480/2, -(480/2), -(640/2), 640/2, 100, 1000); // matrix, t, b, l, r, n, f + guOrtho(p, rmode->efbHeight/2, -(rmode->efbHeight/2), -(rmode->fbWidth/2), rmode->fbWidth/2, 100, 1000); // matrix, t, b, l, r, n, f GX_LoadProjectionMtx (p, GX_ORTHOGRAPHIC); draw_init ();