Interlacing in ares and bsnes accurate PPU
When using the crt-royale or crt-royale-kurozumi shaders it's very noticeable with jittery flickering interlacing. The ares/higan/bsnes accurate PPU seems to think it's interlaced.
Yeah, the accuracy PPU runs everything at 512x480 whether it needs to be at that moment or not (IIRC, the PPU can change between high-res within a single scanline and between interlaced within a single frame and the only way to reproduce this is to provide a window/context large enough to do this at all times).
However, you can put a downsample pass in front of the other shader passes to squash the image down to 50% height and width to compensate:
#version 150
uniform sampler2D source[];
uniform vec4 sourceSize[];
uniform vec4 targetSize;
in Vertex {
vec2 texCoord;
};
out vec4 fragColor;
void main() {
vec2 one_px = texCoord.xy * sourceSize[0].zw;
fragColor = texture(source[0], texCoord - vec2(float(mod(one_px, 2.00001))));
}
and then in the manifest do:
program
filter: nearest
fragment: downsample.fs
height: 50%
width: 50%
as your first pass.
Yeah, the accuracy PPU runs everything at 512x480 whether it needs to be at that moment or not (IIRC, the PPU can change between high-res within a single scanline and between interlaced within a single frame and the only way to reproduce this is to provide a window/context large enough to do this at all times).
However, you can put a downsample pass in front of the other shader passes to squash the image down to 50% height and width to compensate:
#version 150 uniform sampler2D source[]; uniform vec4 sourceSize[]; uniform vec4 targetSize; in Vertex { vec2 texCoord; }; out vec4 fragColor; void main() { vec2 one_px = texCoord.xy * sourceSize[0].zw; fragColor = texture(source[0], texCoord - vec2(float(mod(one_px, 2.00001)))); }and then in the manifest do:
program filter: nearest fragment: downsample.fs height: 50% width: 50%as your first pass.
Thanks very much, Hizzlekizzle, works like charm. If it's alright, I put the new files in a fork specifically for the bsnes accurate PPU, Higan or ares if anybody wants them?