Well, they don't specialize in that EXACT kind of content. This is capture card content, so interwoven 30fps frames rather than proper 60fps frames. Not a huge difference though.
Anyway, I tweaked Gavino's script a little. SeparateFields() provides cleaner results with my source material than Bob(height=height) (any resizing can be done in VirtualDub). Also, I decided to use 0.666 and .334 instead of .75 and .25.
It works
fantastically for what I hoped it would work for - 60 Hz flicker and general onscreen movement. Unfortunately, it's not so hot for 30 Hz flicker. It's not illustrated in my 2-frame example, but Final Fantasy V actually has two simultaneous flicker effects on this screen - a 60 Hz flicker on the "target all" hand icon, and a 30 Hz flicker on the character sprites that are affected by status effects. If the timing isn't right, this kills the 30 Hz flicker.
I came up with an alternative, but it's hardly ideal. Instead of two values, I went with four values to preserve the 60 Hz flicker and kind of show a hint of the 30 Hz flicker. Hardly ideal though; I will probably end up using TASBlend as written, with an additional SeparateFields() line to make my actual console output similar to emulator output.
Code:
function AltBlend(clip c) {
c
Interleave(Layer(SelectEvery(8, 0), SelectEvery(8, 1), level=52),
\ Layer(SelectEvery(8, 2), SelectEvery(8, 3), level=156),
\ Layer(SelectEvery(8, 4), SelectEvery(8, 5), level=104),
\ Layer(SelectEvery(8, 6), SelectEvery(8, 7), level=208))
}
AviSource("...")
SeparateFields()
AltBlend()
Anyway, thanks, everyone. I've learned (or relearned :P) a few things about AVISynth in the process of screwing with this. Here is some YouTube video showing TASBlend and my slight modification at work.
http://www.youtube.com/watch?v=VxZ80dl2AiY