Add explicit parameter for render targets

With the new Wii U upscaling code, 640x480 uses too much MEM1.

Honestly, maybe I should just overhaul how render targets work on the
Wii U. Surely there's a way to dynamically allocate only one colour
buffer at a time?
This commit is contained in:
Clownacy 2020-10-04 14:19:16 +01:00
parent 8eb4e29b10
commit 94dd419858
4 changed files with 14 additions and 14 deletions

View file

@ -379,7 +379,7 @@ BOOL ReloadBitmap_File(const char *name, SurfaceID surf_no)
}
// TODO - Inaccurate stack frame
BOOL MakeSurface_Generic(int bxsize, int bysize, SurfaceID surf_no, BOOL bSystem)
BOOL MakeSurface_Generic(int bxsize, int bysize, SurfaceID surf_no, BOOL bSystem, BOOL bTarget)
{
#ifdef FIX_BUGS
if (surf_no >= SURFACE_ID_MAX)
@ -391,7 +391,7 @@ BOOL MakeSurface_Generic(int bxsize, int bysize, SurfaceID surf_no, BOOL bSystem
if (surf[surf_no] != NULL)
return FALSE;
surf[surf_no] = RenderBackend_CreateSurface(bxsize * mag, bysize * mag, true);
surf[surf_no] = RenderBackend_CreateSurface(bxsize * mag, bysize * mag, bTarget);
if (surf[surf_no] == NULL)
return FALSE;

View file

@ -49,7 +49,7 @@ BOOL MakeSurface_Resource(const char *name, SurfaceID surf_no);
BOOL MakeSurface_File(const char *name, SurfaceID surf_no);
BOOL ReloadBitmap_Resource(const char *name, SurfaceID surf_no);
BOOL ReloadBitmap_File(const char *name, SurfaceID surf_no);
BOOL MakeSurface_Generic(int bxsize, int bysize, SurfaceID surf_no, BOOL bSystem);
BOOL MakeSurface_Generic(int bxsize, int bysize, SurfaceID surf_no, BOOL bSystem, BOOL bTarget);
void BackupSurface(SurfaceID surf_no, const RECT *rect);
void PutBitmap3(const RECT *rcView, int x, int y, const RECT *rect, SurfaceID surf_no);
void PutBitmap4(const RECT *rcView, int x, int y, const RECT *rect, SurfaceID surf_no);

View file

@ -191,16 +191,16 @@ BOOL LoadGenericData(void)
if (bError)
return FALSE;
MakeSurface_Generic(WINDOW_WIDTH, WINDOW_HEIGHT, SURFACE_ID_SCREEN_GRAB, TRUE);
MakeSurface_Generic(320, 240, SURFACE_ID_LEVEL_BACKGROUND, FALSE);
MakeSurface_Generic(WINDOW_WIDTH, WINDOW_HEIGHT, SURFACE_ID_MAP, TRUE);
MakeSurface_Generic(320, 240, SURFACE_ID_CASTS, FALSE);
MakeSurface_Generic(256, 256, SURFACE_ID_LEVEL_TILESET, FALSE);
MakeSurface_Generic(160, 16, SURFACE_ID_ROOM_NAME, FALSE);
MakeSurface_Generic(40, 240, SURFACE_ID_VALUE_VIEW, FALSE);
MakeSurface_Generic(320, 240, SURFACE_ID_LEVEL_SPRITESET_1, FALSE);
MakeSurface_Generic(320, 240, SURFACE_ID_LEVEL_SPRITESET_2, FALSE);
MakeSurface_Generic(320, 16 * (MAX_STRIP - 1), SURFACE_ID_CREDIT_CAST, FALSE);
MakeSurface_Generic(WINDOW_WIDTH, WINDOW_HEIGHT, SURFACE_ID_SCREEN_GRAB, TRUE, TRUE);
MakeSurface_Generic(320, 240, SURFACE_ID_LEVEL_BACKGROUND, FALSE, FALSE);
MakeSurface_Generic(WINDOW_WIDTH, WINDOW_HEIGHT, SURFACE_ID_MAP, TRUE, TRUE);
MakeSurface_Generic(320, 240, SURFACE_ID_CASTS, FALSE, FALSE);
MakeSurface_Generic(256, 256, SURFACE_ID_LEVEL_TILESET, FALSE, FALSE);
MakeSurface_Generic(160, 16, SURFACE_ID_ROOM_NAME, FALSE, TRUE);
MakeSurface_Generic(40, 240, SURFACE_ID_VALUE_VIEW, FALSE, TRUE);
MakeSurface_Generic(320, 240, SURFACE_ID_LEVEL_SPRITESET_1, FALSE, FALSE);
MakeSurface_Generic(320, 240, SURFACE_ID_LEVEL_SPRITESET_2, FALSE, FALSE);
MakeSurface_Generic(320, 16 * (MAX_STRIP - 1), SURFACE_ID_CREDIT_CAST, FALSE, TRUE);
pt_size = 0;
pt_size += MakePixToneObject(&gPtpTable[0], 2, 32);

View file

@ -68,7 +68,7 @@ BOOL InitTextScript2(void)
// Create line surfaces
for (i = 0; i < 4; ++i)
MakeSurface_Generic(gRect_line.right, gRect_line.bottom, (SurfaceID)(SURFACE_ID_TEXT_LINE1 + i), FALSE);
MakeSurface_Generic(gRect_line.right, gRect_line.bottom, (SurfaceID)(SURFACE_ID_TEXT_LINE1 + i), FALSE, TRUE);
// Clear text
memset(text, 0, sizeof(text));