Post subject: Equal Length Frames: is it preferred or not?
Judge, Skilled player (1290)
Joined: 9/12/2016
Posts: 1645
Location: Italy
I've just noticed a GBC game I'm TASing, E Mo Dao (aka Devil Island), gives different results whenever the GB setting "Equal Length Frames" is set on true or on false. The description in the windows says: "When false, emulation frames sync to vblank. Only useful for high level of TASing.". The problem is that this doesn't explain at all if this makes the emulation more accurated when "true" or when "false". Could someone please explain?
my personal page - my YouTube channel - my GitHub - my Discord: thunderaxe31 <Masterjun> if you look at the "NES" in a weird angle, it actually clearly says "GBA"
Alyosha
He/Him
Editor, Expert player (3537)
Joined: 11/30/2014
Posts: 2733
Location: US
Equal length frames effect how input is processed. If equal length frames is set to true, each input frame lasts a set amount of time, regardless of how long a video frame (i.e. time between vblanks) lasts. If it is false, each input frame lasts however long the video frame lasts. So basically, NOT having equal length frames will mean you always change input when a VBlank happens, which might be more intuitive for TASing. HAVING equal frames means you always change input roughly every 1/60 seconds. but whichever you choose makes no difference for accuracy.
Judge, Skilled player (1290)
Joined: 9/12/2016
Posts: 1645
Location: Italy
Thanks for the explaination, now it's more clear. Still, I'm not convinced there won't be any difference for accuracy. Won't be better to have the possibility to change input for every input polls? Also, won't setting Equal Length Frames to false create inconsistences with the calculation of movie length?
my personal page - my YouTube channel - my GitHub - my Discord: thunderaxe31 <Masterjun> if you look at the "NES" in a weird angle, it actually clearly says "GBA"
Masterjun
He/Him
Site Developer, Skilled player (1971)
Joined: 10/12/2010
Posts: 1179
Location: Germany
The best solution for an emulator would be to allow changing input on each poll (so when the console wants a new input). However, implementing this when the whole emulator is (video-)frame-based is insanely difficult. And this gets even more difficult when it also supports a million different cores (BizHawk). So since most games poll the input at VBlank (or with the frequency of VBlank) anyways, that's a pretty good point to allow for input changes. But you can also activate Equal Length Frames, so you can (???), so that's useful too.
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
Editor, Emulator Coder, Site Developer
Joined: 5/11/2011
Posts: 1108
Location: Murka
ThunderAxe31 wrote:
Thanks for the explaination, now it's more clear. Won't be better to have the possibility to change input for every input polls? Also, won't setting Equal Length Frames to false create inconsistences with the calculation of movie length?
1. Yes, equal length frames can be inferior in that respect. Better lineup of when the frontend asks for controller data to when the emulated game polls for controller data is the primary reason to use unequal length frames. Provided you limit yourself to inputs that both sets of frame timings can reproduce, there is no difference in accuracy. 2. Movie length should be determined by a readout from the emulator after completing emulation. GB is more pronounced than others, but most emulated systems have ways to do things with timing that constant framerate assumptions cannot handle.