GBA Video: Implement GL forced blank

This commit is contained in:
Vicki Pfau 2019-05-24 12:47:17 -07:00
parent 9204c61ba2
commit 4225a2b4b0
1 changed files with 45 additions and 40 deletions

View File

@ -859,10 +859,10 @@ void GBAVideoGLRendererReset(struct GBAVideoRenderer* renderer) {
glRenderer->vramDirty = 0xFFFFFF;
glRenderer->firstAffine = -1;
glRenderer->firstY = -1;
glRenderer->dispcnt = 0;
glRenderer->dispcnt = 0x0080;
glRenderer->mosaic = 0;
memset(glRenderer->shadowRegs, 0, sizeof(glRenderer->shadowRegs));
glRenderer->regsDirty = 0xFFFFFFFFFFFFULL;
glRenderer->regsDirty = 0xFFFFFFFFFFFEULL;
}
void GBAVideoGLRendererWriteVRAM(struct GBAVideoRenderer* renderer, uint32_t address) {
@ -1508,6 +1508,10 @@ void _finalizeLayers(struct GBAVideoGLRenderer* renderer) {
glBindFramebuffer(GL_FRAMEBUFFER, renderer->fbo[GBA_GL_FBO_OUTPUT]);
glViewport(0, 0, GBA_VIDEO_HORIZONTAL_PIXELS * renderer->scale, GBA_VIDEO_VERTICAL_PIXELS * renderer->scale);
glScissor(0, 0, GBA_VIDEO_HORIZONTAL_PIXELS * renderer->scale, GBA_VIDEO_VERTICAL_PIXELS * renderer->scale);
if (GBARegisterDISPCNTIsForcedBlank(renderer->dispcnt)) {
glClearColor(1.f, 1.f, 1.f, 1.f);
glClear(GL_COLOR_BUFFER_BIT);
} else {
glUseProgram(renderer->finalizeShader.program);
glBindVertexArray(renderer->finalizeShader.vao);
glActiveTexture(GL_TEXTURE0);
@ -1547,6 +1551,7 @@ void _finalizeLayers(struct GBAVideoGLRenderer* renderer) {
glUniform1i(uniforms[GBA_GL_FINALIZE_BACKDROP], 11);
glUniform1i(uniforms[GBA_GL_FINALIZE_BACKDROPFLAGS], 12);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
}
glBindFramebuffer(GL_FRAMEBUFFER, 0);
}