lay base for hi-res rendering

IT'S A PILE OF HACKS
This commit is contained in:
Arisotura
2019-05-03 19:28:15 +02:00
parent dc68842db4
commit 83331bc7e5
4 changed files with 62 additions and 17 deletions

View File

@ -71,7 +71,9 @@ u32 VRAMMap_TexPal[8];
u32 VRAMMap_ARM7[2];
u32 Framebuffer[256*192*2];
u32* Framebuffer;
int FBScale;
int FBScreenStride;
GPU2D* GPU2D_A;
GPU2D* GPU2D_B;
@ -83,6 +85,9 @@ bool Init()
GPU2D_B = new GPU2D(1);
if (!GPU3D::Init()) return false;
//SetFramebufferScale(1);
SetFramebufferScale(2);
return true;
}
@ -91,6 +96,8 @@ void DeInit()
delete GPU2D_A;
delete GPU2D_B;
GPU3D::DeInit();
if (Framebuffer) delete[] Framebuffer;
}
void Reset()
@ -147,13 +154,13 @@ void Reset()
GPU2D_B->Reset();
GPU3D::Reset();
GPU2D_A->SetFramebuffer(&Framebuffer[256*192]);
GPU2D_B->SetFramebuffer(&Framebuffer[256*0]);
GPU2D_A->SetFramebuffer(&Framebuffer[FBScreenStride]);
GPU2D_B->SetFramebuffer(&Framebuffer[0]);
}
void Stop()
{
memset(Framebuffer, 0, 256*192*2*4);
memset(Framebuffer, 0, FBScreenStride*2*sizeof(u32));
}
void DoSavestate(Savestate* file)
@ -208,6 +215,15 @@ void DoSavestate(Savestate* file)
GPU3D::DoSavestate(file);
}
void SetFramebufferScale(int scale)
{
FBScale = scale;
FBScreenStride = (256*scale) * (192*scale);
if (Framebuffer) delete[] Framebuffer;
Framebuffer = new u32[FBScreenStride * 2];
}
// VRAM mapping notes
//
@ -668,13 +684,13 @@ void SetPowerCnt(u32 val)
if (val & (1<<15))
{
GPU2D_A->SetFramebuffer(&Framebuffer[256*0]);
GPU2D_B->SetFramebuffer(&Framebuffer[256*192]);
GPU2D_A->SetFramebuffer(&Framebuffer[0]);
GPU2D_B->SetFramebuffer(&Framebuffer[FBScreenStride]);
}
else
{
GPU2D_A->SetFramebuffer(&Framebuffer[256*192]);
GPU2D_B->SetFramebuffer(&Framebuffer[256*0]);
GPU2D_A->SetFramebuffer(&Framebuffer[FBScreenStride]);
GPU2D_B->SetFramebuffer(&Framebuffer[0]);
}
}