diff --git a/source/gcvideo.cpp b/source/gcvideo.cpp index 0a42309..a49c654 100644 --- a/source/gcvideo.cpp +++ b/source/gcvideo.cpp @@ -563,12 +563,6 @@ static void SetupVideoMode(GXRModeObj * mode) VIDEO_Configure (mode); VIDEO_Flush(); - // Allocate the video buffers - if(xfb[0]) free(MEM_K1_TO_K0(xfb[0])); - if(xfb[1]) free(MEM_K1_TO_K0(xfb[1])); - xfb[0] = (u32 *) MEM_K0_TO_K1 (SYS_AllocateFramebuffer (mode)); - xfb[1] = (u32 *) MEM_K0_TO_K1 (SYS_AllocateFramebuffer (mode)); - // Clear framebuffers etc. VIDEO_ClearFrameBuffer (mode, xfb[0], COLOR_BLACK); VIDEO_ClearFrameBuffer (mode, xfb[1], COLOR_BLACK); @@ -598,6 +592,11 @@ void InitGCVideo () { VIDEO_Init(); + + // Allocate the video buffers + xfb[0] = (u32 *) MEM_K0_TO_K1 (memalign(32, 640*574*2)); + xfb[1] = (u32 *) MEM_K0_TO_K1 (memalign(32, 640*574*2)); + GXRModeObj *rmode = FindVideoMode(); SetupVideoMode(rmode); LWP_CreateThread (&vbthread, vbgetback, NULL, vbstack, TSTACK, 68);