View Page Source

Back to Page
Revision (current)
Last Updated by zeromus on 9/21/2015 2:14 AM
! Speed

This topic is pretty complicated, as BizHawk is relatively highly-featured in this area. Here's a terse run-down.

BizHawk has a Speed and an Alternate Speed. Speed and Alternate Speed can be set between 25-400% in the menu. The Speed (only) currently can be set by hotkey (minus and equals by default). The Alternate Speed is used by the 'fast forward' hotkey (tab by default); therefore it doubles as a slow-motion hotkey. To change the alternate speed, ctrl+click in the menu. A fast-forward icon will show on that menu item.

You can select from one of four throttles: Clock, Audio, Vsync, and None (uncheck any of the throttles.) Clock throttle syncs the game to its real speed. Audio and scrolling may hiccup. Audio throttle syncs the game's audio output to your system; therefore scrolling may hiccup. Vsync throttling syncs the game's video output to your system's vsync. Therefore audio may hiccup and the game's speed may be wildly wrong. 

The actual VSync option is independent of all of the above. You obviously need it for the VSync throttle, but its usefulness and results may vary with other throttles. It may also still be useful for minimizing screen tearing when playing PAL games, but it will cause serious scroll juddering. It may also still be useful for minimizing screen tearing when fastforwarding or otherwise playing games at high speeds.

Besides that, at any time, you may use the Unthrottled menu item or hotkey to disable whichever throttling method you've selected. The 'Turbo' hotkey (shift+tab by default) is almost exactly the same as unthrottling (but not exactly). There is a difference in how they treat sound.

By the way, the None throttle simply runs frames without throttling. The differences between this and Unthrottled are unclear. There may be some subtle differences?

The Skip 0 and 1..9 options are supposed to affect the maximum number of frames that can be 'skipped' by the throttle subsystem in an effort to meet its target. Most people will want to set Skip to 0, but Skip 9 can be useful for high levels of turboing.

For even more massive amounts of turboing, be sure to disable sound. Unthrottling will continue generating sound unless sound is enabled.

For even still more massive amounts of turboing, use Config > Display > Misc and set to Absolute Zero. This will prevent even 1/9 of the frames from displaying and eliminate other overhead.

! Transport Controls

BizHawk follows conventions of other TASing emulators, but has striven to clarify them and demonstrate best pratices.

By default, the `Pause` key pauses emulation. 

Frame Advance is bound to `F`. Pressing it always pauses the emulator. It advances one frame when tapped; but when holding down for a second or so (this duration is configurable as FrameProgressDelayMs),  this means "Frame Progress". Emulation will proceed just as if the emulator were unpaused.

Rewind is bound to `Shift+R`. It may not work all the time; it depends on the settings at Config > Rewind & States. Tapping Rewind while the emulator is paused acts as Frame Rewind (it's the opposite of Frame Advance.) Correspondingly, holding Rewind results in... just plain rewinding. Call it "Frame Unprogress" if you want to be hilarious.

We should probably write a lot about the rewind system here and all the zany options, but maybe that should go to a Savestates section instead.

! Appendix A: Skipped Frames

Traditionally emulators 'skip frames' in order to keep up with timing demands. This means they bypass a lot of drawing operations, doing only the required CPU work. However, for many more modern emulators, the drawing is an indispensable part of the emulation; moreover, TASing emulators are less forgiving of the drawbacks to emulation accuracy which can be caused by attempting nevertheless to skip an indispensible part of emulation. So skipping frames probably doesn't work as well in BizHawk as it does in a lot of other emulators.

! Appendix B: Speed-up tips

* As written above, disable sound.

* Make sure you're not using GDI+ display method. It's slower by far than OpenGL or Direct3d, which is preferable and should be best for most cases.