0 users browsing Emulation. | 1 guest | 7 bots  
    Main » Emulation » Frame pacing in SNES games
    Pages: 1
    Posted on 21-06-15, 22:43
    Post: #21 of 21
    Since: 11-08-18

    Last post: 1254 days
    Last view: 1254 days
    I am very picky about UIs, so I spent the weekend working on a highly-customized version of OpenEmu—like RetroArch, but highly Mac-focused. The UI now works exactly the way I want it to, and this makes me very happy.

    Today, I started using it to play SNES games, and I began to notice what I would describe as "frame pacing" problems—the speed of the game is consistent, but it isn't displaying new frames at constant intervals. To remove the usual suspects, I'm playing NTSC games on a 60 fps monitor (although without variable refresh).

    Of course, I immediately assumed that my software setup was to blame—but then I took a screen recording so I could step through the frames. The thing is, in my recording, there are no duplicate frames, at least technically. At least one thing always changes, whether it's the player or an enemy or the background scrolling—but a lot of individual objects do seem to be stuttering, including the player character.

    One particular area I'm perceiving a lot of stutter are moving platforms in Super Mario All-Stars, especially when they also trigger the background to start scrolling. (E.g. 1-3 of "The Lost Levels").

    Were SNES games just always like this? I think what's happening here is I spent enough time on my custom emulator interface thing feels that it feels my baby, and I'm suddenly more perceptive to problems. But it's interesting that games are like this; Google isn't returning anything on the topic. Also, on the whole, NES games seem to feel smoother.
    Posted on 21-06-16, 02:49
    Full mod

    Post: #436 of 443
    Since: 10-30-18

    Last post: 1101 days
    Last view: 172 days
    I haven't recorded and single-framed through footage of SNES games before, but here's some thoughts:

    - SNES (and NES) games didn't target 60fps because they were aiming to be buttery smooth, they did it because NTSC TVs didn't support anything else. If they had a lot of stuff to update, it's conceivable that they might not do it every frame - perhaps they update the player on frame X, the enemies on frame X+1, backgrounds on frame X+2, then repeat?

    - If you use a software-based screen-recorder, it won't capture exactly what's on the display, it'll capture what was sent to the GPU — how the GPU chooses to group and combine those frames to send them to the monitor is a different matter.

    - "60Hz" might or might not be accurate. Some monitors support 60Hz exactly, some support 59.97Hz (NTSC frequency) which is displayed as 60Hz to keep things simple, but the SNES native frame-rate is actually 60.01Hz. Depending on how the emulator tries to pace itself, you might wind up with video tearing, duplicated frames, glitchy audio, or some combination.

    The ending of the words is ALMSIVI.
    Posted on 21-06-16, 07:05 (revision 4)

    Post: #349 of 456
    Since: 10-29-18

    Last post: 44 days
    Last view: 1 day
    SNES is 60.09, assuming progressive mode. Interlaced mode (very rarely used for anything but static screens) is very close to standard NTSC (which is 60/1.001).

    master clock frequency = 5 * 7 * 9 / 88 * 6 * 1,000,000 Hz
    1 dot = 2 pixels; dots per line = 256 (active) + 84 (blanking) = 340
    clock cycles per dot = 4
    line duration = 340 * 4 = 1360, plus "long dot" delay (4 cycles) for all lines except when line=240 + field=1 interlace=off
    lines per frame (30 Hz interlaced) = 525
    lines per frame (30 Hz progressive) = 524
    lines per field (60 Hz progressive) = 524 / 2 = 262
    cycles per field 0 (60 Hz progressive) = (262 * 1364) = 357,368
    cycles per field 1 (60 Hz progressive) = (261 * 1364) + (1 * 1360) = 357,364
    master clock frequency / cycles per field, averaged = 60.09881

    On a 60.0 Hz display that's 1 skipped field every 10.12 seconds.


    For recording videos I'd recommend BizHawk.

    My current setup: Super Famicom ("2/1/3" SNS-CPU-1CHIP-02) → SCART → OSSC → StarTech USB3HDCAP → AmaRecTV 3.10
    Pages: 1
      Main » Emulation » Frame pacing in SNES games
      This does not actually go there and I regret nothing.