Closed CasualPokePlayer closed 2 years ago
Our site policy is to not care about what a core or emulator does, and focus on what it should do. We don't want to be dependent on the details of what a core does, or will do in the future. Our fps values are based on theoretical hardware, and not specific emulator behavior.
So our SGB value is based on a LLE value, and I believe it is correct to do so.
Bizhawk Sameboy SGB and Bizhawk Bsnes SGB run at the exact same speed (excepting the boot up difference, and whatever lag differences there are). The difference here is really a frame timing thing. A real SNES runs at 60.09 FPS fixed framerate. A real SGB inside the SNES runs at a 61.17 FPS nominal framerate; it will be exactly that framerate except when the virtual LCD "display" is turned off and on.
The SGB hardware handles the difference by dropping frames once in a while when outputting to the SNES side. I honestly don't know what real SGB hardware does to handle the input timing difference; maybe it polls on vblank for a steady 60.09 input samples per second and then just duplicates some of them to the SGB side? Or maybe it has irregular polls and an emulator that included the SNES side would need subframe input to recover it all. In any event, it does something to reconcile the two.
Bizhawk Sameboy SGB is counting the 61.17 fps frames as its notion of actual elapsed time; Bizhawk Bsnes SGB is counting the 60.09 fps frames as its notion of actual elapsed time. They're counting time from different measurements, and "one frame" is not equal to "one frame" because they're one frame of different things.
There are similar problems with various notions of timing for GB and A2600, among others; "equal length frames" vs otherwise.
I don't have an opinion on what TASVideos does, but I think we should have all the facts. Reopening this for now so we can make sure all the needed discussion happens.
I honestly don't know what real SGB hardware does to handle the input timing difference; maybe it polls on vblank for a steady 60.09 input samples per second and then just duplicates some of them to the SGB side? Or maybe it has irregular polls and an emulator that included the SNES side would need subframe input to recover it all. In any event, it does something to reconcile the two.
It doesn't actually do any sort of reconciling. It just does input each SNES VBlank. By consequence, some inputs just get "dropped" so to say. Casual playing this probably doesn't mean much anyways, considering the time when the input is "dropped" would just be some SNES frame where the GB didn't try to get an input (or the inverse for the SGB2 where the GB tried to get input twice within a SNES frame).
I think you just described "polls on vblank for a steady 60.09 input samples per second and then just duplicates some of them to the SGB side" but with different words.
That means that unless you count SGB2 (which is innately slower), this SGB HLE can let you do things that aren't even possible on the real console. Which is fine with me and lines up as just a limitation of the HLE in use here.
Do the old and new site's both agree? or is this a new site specific problem?
Do the old and new site's both agree? or is this a new site specific problem?
Both the old site and new site seem to have this problem (going off userfiles at least)
So what do we want done here? @CasualPokePlayer
The old SGB SameBoy core was yoinked out in 2.8 so it probably doesn't really matter at this point (unless you care for older BizHawk versions). The newer SameBoy core is GB/C only and goes off cycle count (so works as is). Similarly Gambatte became the replacement for SGB HLE and that currently only does SGB2 which is the same frequency as the original GB/C (so cycle count again works as is). If SGB1 is supported Gambatte just needs to replace the clock rate field and that should again work (mostly).
Closing this ticket as no longer relevant
The SameBoy core in BizHawk is set to run at 2147727/35112 FPS, but it seems the site parser just uses the SNES framerate (which is correct for LLE cores like BSNES as inputs are locked to SNES VBlank like with a real SGB, but the HLE cores like SameBoy have no concept of this FPS and only use the internal framerate of the SGB).