Post subject: interlaced SNES screens
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
While encoding #4852: julius_x's SNES Yuu Yuu Hakusho (J) "Story Mode any%" in 34:53.05 I noticed that interlaced SNES screens seem to be broken... The game creates 5 files: #1: 256x224 pixels, 60.0985 fps, framecount=64 #2: 512x448 pixels, 60.0985 fps, framecount=222 (download) #3: 256x224 pixels, 60.0985 fps, framecount=83202 #4: 512x448 pixels, 60.0985 fps, framecount=6 #5: 256x224 pixels, 60.0985 fps, framecount=~77248 (depends on user) #2 slowed down looks like this: Each couple of frames contains the relevant data, but it has to be extracted:
Language: Avisynth

a = SelectEven.SeparateFields.SelectEven # get 1st frame, get even-numbered lines (field) b = SelectOdd .SeparateFields.SelectEven # get 2nd frame, get even-numbered lines (field) Interleave(a, b).Weave # interleave fields into full frames Interleave(last, last) # show each restored frame twice to get 60 fps (compatibility with the rest of the movie)
Result: Other examples, before (left) and after (right):
  • Radical Psycho Machine Racing (USA) aka RPM Racing (01 02 03 04)
  • World Class Service Super Nintendo Tester (USA) (01 02)
The only problem with these is that for some of them, variables a and b in the Interleave call have to be reversed. Probably depends on which frame the interlaced mode was activated - even or odd.
Editor, Emulator Coder
Joined: 8/7/2008
Posts: 1156
I _think_ (im not completely sure) what I was doing was trying to bob deinterleave, although the fact that it happened at higher resolution was kind of nonsense. My notes say I hadn't had a test case (although I find that hard to believe). At any rate, now I do. After more contemplation, I realized the snes wouldve been outputting 480p resolution in principle from the GPU circuitry (even though NTSC out cant handle it) so it made perfect sense to just output it as 'progressive scan' 448 scanlines. So it should be fixed for you now.