summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--default.f.glsl6
-rw-r--r--render_sdl.c10
2 files changed, 11 insertions, 5 deletions
diff --git a/default.f.glsl b/default.f.glsl
index 55b6c52..f7bb89a 100644
--- a/default.f.glsl
+++ b/default.f.glsl
@@ -6,5 +6,9 @@ varying vec2 texcoord;
void main()
{
- gl_FragColor = texture2D(textures[0], texcoord);
+ gl_FragColor = mix(
+ texture2D(textures[0], texcoord),
+ texture2D(textures[1], vec2(texcoord.x, texcoord.y - 1.0/512.0)),
+ sin((texcoord.y * 512.0 - 0.75) * 3.14159265359) / 2.0 + 0.5
+ );
}
diff --git a/render_sdl.c b/render_sdl.c
index f62ba66..ad99025 100644
--- a/render_sdl.c
+++ b/render_sdl.c
@@ -160,7 +160,7 @@ void render_alloc_surfaces(vdp_context * context)
if (i < 2) {
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 512, 256, 0, GL_BGRA, GL_UNSIGNED_BYTE, i ? context->evenbuf : context->oddbuf);
} else {
- uint32_t blank = 255;
+ uint32_t blank = 255 << 24;
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 1, 1, 0, GL_BGRA, GL_UNSIGNED_BYTE, &blank);
}
}
@@ -332,8 +332,7 @@ void render_context_gl(vdp_context * context)
glUniform1i(un_textures[0], 0);
glActiveTexture(GL_TEXTURE1);
- //TODO: Select appropriate texture based on status of interlace
- glBindTexture(GL_TEXTURE_2D, textures[1]);
+ glBindTexture(GL_TEXTURE_2D, (context->regs[REG_MODE_4] & BIT_INTERLACE) ? textures[1] : textures[2]);
glUniform1i(un_textures[1], 1);
glBindBuffer(GL_ARRAY_BUFFER, buffers[0]);
@@ -346,7 +345,10 @@ void render_context_gl(vdp_context * context)
glDisableVertexAttribArray(at_pos);
SDL_GL_SwapBuffers();
-
+ if (context->regs[REG_MODE_4] & BIT_INTERLACE)
+ {
+ context->framebuf = context->framebuf == context->oddbuf ? context->evenbuf : context->oddbuf;
+ }
}
uint32_t blankbuf[320*240];