More error-handling
This commit is contained in:
parent
1f9247e587
commit
d7c138f818
1 changed files with 34 additions and 26 deletions
|
@ -156,38 +156,46 @@ RenderBackend_Surface* RenderBackend_Init(const char *window_title, int screen_w
|
||||||
// Create a 'context' (this voodoo magic can be used to undo `GX2SetColorBuffer`,
|
// Create a 'context' (this voodoo magic can be used to undo `GX2SetColorBuffer`,
|
||||||
// allowing us to draw to the screen once again)
|
// allowing us to draw to the screen once again)
|
||||||
gx2_context = (GX2ContextState*)aligned_alloc(GX2_CONTEXT_STATE_ALIGNMENT, sizeof(GX2ContextState));
|
gx2_context = (GX2ContextState*)aligned_alloc(GX2_CONTEXT_STATE_ALIGNMENT, sizeof(GX2ContextState));
|
||||||
memset(gx2_context, 0, sizeof(GX2ContextState));
|
|
||||||
GX2SetupContextStateEx(gx2_context, TRUE);
|
|
||||||
GX2SetContextState(gx2_context);
|
|
||||||
|
|
||||||
// Disable depth-test (enabled by default for some reason)
|
if (gx2_context != NULL)
|
||||||
GX2SetDepthOnlyControl(FALSE, FALSE, GX2_COMPARE_FUNC_ALWAYS);
|
|
||||||
|
|
||||||
// Calculate centred viewports
|
|
||||||
switch (GX2GetSystemTVScanMode())
|
|
||||||
{
|
{
|
||||||
case GX2_TV_SCAN_MODE_NONE: // lolwut
|
memset(gx2_context, 0, sizeof(GX2ContextState));
|
||||||
break;
|
GX2SetupContextStateEx(gx2_context, TRUE);
|
||||||
|
GX2SetContextState(gx2_context);
|
||||||
|
|
||||||
case GX2_TV_SCAN_MODE_480I:
|
// Disable depth-test (enabled by default for some reason)
|
||||||
case GX2_TV_SCAN_MODE_480P:
|
GX2SetDepthOnlyControl(FALSE, FALSE, GX2_COMPARE_FUNC_ALWAYS);
|
||||||
CalculateViewport(854, 480, &tv_viewport);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GX2_TV_SCAN_MODE_720P:
|
// Calculate centred viewports
|
||||||
case 4: // Why the hell doesn't WUT have an enum for this? It always returns this value for me!
|
switch (GX2GetSystemTVScanMode())
|
||||||
CalculateViewport(1280, 720, &tv_viewport);
|
{
|
||||||
break;
|
case GX2_TV_SCAN_MODE_NONE: // lolwut
|
||||||
|
break;
|
||||||
|
|
||||||
case GX2_TV_SCAN_MODE_1080I:
|
case GX2_TV_SCAN_MODE_480I:
|
||||||
case GX2_TV_SCAN_MODE_1080P:
|
case GX2_TV_SCAN_MODE_480P:
|
||||||
CalculateViewport(1920, 1080, &tv_viewport);
|
CalculateViewport(854, 480, &tv_viewport);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case GX2_TV_SCAN_MODE_720P:
|
||||||
|
case 4: // Why the hell doesn't WUT have an enum for this? It always returns this value for me!
|
||||||
|
CalculateViewport(1280, 720, &tv_viewport);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GX2_TV_SCAN_MODE_1080I:
|
||||||
|
case GX2_TV_SCAN_MODE_1080P:
|
||||||
|
CalculateViewport(1920, 1080, &tv_viewport);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
CalculateViewport(854, 480, &drc_viewport);
|
||||||
|
|
||||||
|
return framebuffer_surface;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Backend_PrintError("Couldn't allocate memory for the GX2 context");
|
||||||
}
|
}
|
||||||
|
|
||||||
CalculateViewport(854, 480, &drc_viewport);
|
|
||||||
|
|
||||||
return framebuffer_surface;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue