mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-07-21 05:09:46 -06:00
getting somewhere??
This commit is contained in:
18
src/GPU.cpp
18
src/GPU.cpp
@ -151,12 +151,15 @@ void Reset()
|
|||||||
VRAMMap_ARM7[0] = 0;
|
VRAMMap_ARM7[0] = 0;
|
||||||
VRAMMap_ARM7[1] = 0;
|
VRAMMap_ARM7[1] = 0;
|
||||||
|
|
||||||
for (int i = 0; i < (256*192); i++)
|
int fbsize;
|
||||||
|
if (Accelerated) fbsize = (256*3 + 2) * 192;
|
||||||
|
else fbsize = 256 * 192;
|
||||||
|
for (int i = 0; i < fbsize; i++)
|
||||||
{
|
{
|
||||||
Framebuffer[0][0][i] = 0xFFFFFFFF;
|
Framebuffer[0][0][i] = 0xFFFFFFFF;
|
||||||
Framebuffer[1][0][i] = 0xFFFFFFFF;
|
Framebuffer[1][0][i] = 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < (256*192); i++)
|
for (int i = 0; i < fbsize; i++)
|
||||||
{
|
{
|
||||||
Framebuffer[0][1][i] = 0xFFFFFFFF;
|
Framebuffer[0][1][i] = 0xFFFFFFFF;
|
||||||
Framebuffer[1][1][i] = 0xFFFFFFFF;
|
Framebuffer[1][1][i] = 0xFFFFFFFF;
|
||||||
@ -173,10 +176,13 @@ void Reset()
|
|||||||
|
|
||||||
void Stop()
|
void Stop()
|
||||||
{
|
{
|
||||||
memset(Framebuffer[0][0], 0, 256*192);
|
int fbsize;
|
||||||
memset(Framebuffer[0][1], 0, 256*192);
|
if (Accelerated) fbsize = (256*3 + 2) * 192;
|
||||||
memset(Framebuffer[1][0], 0, 256*192);
|
else fbsize = 256 * 192;
|
||||||
memset(Framebuffer[1][1], 0, 256*192);
|
memset(Framebuffer[0][0], 0, fbsize*4);
|
||||||
|
memset(Framebuffer[0][1], 0, fbsize*4);
|
||||||
|
memset(Framebuffer[1][0], 0, fbsize*4);
|
||||||
|
memset(Framebuffer[1][1], 0, fbsize*4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoSavestate(Savestate* file)
|
void DoSavestate(Savestate* file)
|
||||||
|
@ -624,6 +624,7 @@ int InitRenderer(bool hasGL)
|
|||||||
if (renderer == 0) SoftRenderer::Init();
|
if (renderer == 0) SoftRenderer::Init();
|
||||||
|
|
||||||
Renderer = renderer;
|
Renderer = renderer;
|
||||||
|
GPU::SetDisplaySettings(Renderer != 0);
|
||||||
return renderer;
|
return renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -374,14 +374,24 @@ void GLScreen_DrawScreen()
|
|||||||
int frontbuf = GPU::FrontBuffer;
|
int frontbuf = GPU::FrontBuffer;
|
||||||
glActiveTexture(GL_TEXTURE0);
|
glActiveTexture(GL_TEXTURE0);
|
||||||
glBindTexture(GL_TEXTURE_2D, GL_ScreenTexture);
|
glBindTexture(GL_TEXTURE_2D, GL_ScreenTexture);
|
||||||
/*glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 256<<ScreenScale[0], 192<<ScreenScale[0], GL_RGBA_INTEGER,
|
|
||||||
GL_UNSIGNED_BYTE, GPU::Framebuffer[frontbuf][0]);
|
if (GPU::Framebuffer[frontbuf][1])
|
||||||
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 768, 256<<ScreenScale[1], 192<<ScreenScale[1], GL_RGBA_INTEGER,
|
{
|
||||||
GL_UNSIGNED_BYTE, GPU::Framebuffer[frontbuf][1]);*/
|
if (GPU3D::Renderer == 0)
|
||||||
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 256*3 + 2, 192, GL_RGBA_INTEGER,
|
{
|
||||||
GL_UNSIGNED_BYTE, GPU::Framebuffer[frontbuf][0]);
|
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 256, 192, GL_RGBA_INTEGER,
|
||||||
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 768, 256*3 + 2, 192, GL_RGBA_INTEGER,
|
GL_UNSIGNED_BYTE, GPU::Framebuffer[frontbuf][0]);
|
||||||
GL_UNSIGNED_BYTE, GPU::Framebuffer[frontbuf][1]);
|
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 768, 256, 192, GL_RGBA_INTEGER,
|
||||||
|
GL_UNSIGNED_BYTE, GPU::Framebuffer[frontbuf][1]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 256*3 + 2, 192, GL_RGBA_INTEGER,
|
||||||
|
GL_UNSIGNED_BYTE, GPU::Framebuffer[frontbuf][0]);
|
||||||
|
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 768, 256*3 + 2, 192, GL_RGBA_INTEGER,
|
||||||
|
GL_UNSIGNED_BYTE, GPU::Framebuffer[frontbuf][1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
glActiveTexture(GL_TEXTURE1);
|
glActiveTexture(GL_TEXTURE1);
|
||||||
if (GPU3D::Renderer != 0)
|
if (GPU3D::Renderer != 0)
|
||||||
@ -661,7 +671,6 @@ int EmuThreadFunc(void* burp)
|
|||||||
{
|
{
|
||||||
uiGLMakeContextCurrent(GLContext);
|
uiGLMakeContextCurrent(GLContext);
|
||||||
GPU3D::InitRenderer(true);
|
GPU3D::InitRenderer(true);
|
||||||
GPU::SetDisplaySettings(GPU3D::Renderer != 0);
|
|
||||||
uiGLMakeContextCurrent(NULL);
|
uiGLMakeContextCurrent(NULL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -909,16 +918,15 @@ void OnAreaDraw(uiAreaHandler* handler, uiArea* area, uiAreaDrawParams* params)
|
|||||||
ScreenDrawInited = true;
|
ScreenDrawInited = true;
|
||||||
ScreenBitmap[0] = uiDrawNewBitmap(params->Context, 256, 192);
|
ScreenBitmap[0] = uiDrawNewBitmap(params->Context, 256, 192);
|
||||||
ScreenBitmap[1] = uiDrawNewBitmap(params->Context, 256, 192);
|
ScreenBitmap[1] = uiDrawNewBitmap(params->Context, 256, 192);
|
||||||
printf("D2D bitmaps inited\n");
|
|
||||||
}
|
}
|
||||||
if (!ScreenBitmap[0] || !ScreenBitmap[1]) printf("draw but no bitmaps :(\n");
|
|
||||||
|
int frontbuf = GPU::FrontBuffer;
|
||||||
if (!ScreenBitmap[0] || !ScreenBitmap[1]) return;
|
if (!ScreenBitmap[0] || !ScreenBitmap[1]) return;
|
||||||
if (!GPU::Framebuffer[0][0]) return;
|
if (!GPU::Framebuffer[frontbuf][1]) return;
|
||||||
|
|
||||||
uiRect top = {0, 0, 256, 192};
|
uiRect top = {0, 0, 256, 192};
|
||||||
uiRect bot = {0, 0, 256, 192};
|
uiRect bot = {0, 0, 256, 192};
|
||||||
|
|
||||||
int frontbuf = GPU::FrontBuffer;
|
|
||||||
uiDrawBitmapUpdate(ScreenBitmap[0], GPU::Framebuffer[frontbuf][0]);
|
uiDrawBitmapUpdate(ScreenBitmap[0], GPU::Framebuffer[frontbuf][0]);
|
||||||
uiDrawBitmapUpdate(ScreenBitmap[1], GPU::Framebuffer[frontbuf][1]);
|
uiDrawBitmapUpdate(ScreenBitmap[1], GPU::Framebuffer[frontbuf][1]);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user