BizHawk is a multi-system emulator written in C#. BizHawk provides nice features for casual gamers such as full screen, and joypad support in addition to full rerecording and debugging tools for all system cores.
Go to file
James Groom fdc0f26ca6
Update README.md
2019-01-13 17:23:56 +10:00
Assets Add preliminary Unix compatibility (using Mono; resolves #1384) (#1380) 2019-01-04 01:50:55 +03:00
BizHawk.Client.ApiHawk CPCHawk: Initial project outline (may or may not come to something eventually) 2018-07-03 14:53:09 +01:00
BizHawk.Client.Common tastudio: allow to actually unbind markers from input, and unbind by default 2019-01-05 21:48:40 +03:00
BizHawk.Client.DBMan gamedb: added NGP/NGPC and improved homebrew detection 2018-09-21 16:10:35 +01:00
BizHawk.Client.DiscoHawk DoSettings file for all project to explicitely set language level to C#6 2018-06-23 13:06:13 -05:00
BizHawk.Client.EmuHawk tastudio: allow to actually unbind markers from input, and unbind by default 2019-01-05 21:48:40 +03:00
BizHawk.Client.MultiHawk DoSettings file for all project to explicitely set language level to C#6 2018-06-23 13:06:13 -05:00
BizHawk.Common rejigger PlatformLinkedLibSingleton so it can be used embedded in the EXE without requiring a dependency on dlls, so it can boot when dlls are relocated 2019-01-04 17:42:12 -05:00
BizHawk.Emulation.Common Add preliminary Unix compatibility (using Mono; resolves #1384) (#1380) 2019-01-04 01:50:55 +03:00
BizHawk.Emulation.Cores Fix quicknes 2019-01-06 12:16:28 -05:00
BizHawk.Emulation.DiscSystem DoSettings file for all project to explicitely set language level to C#6 2018-06-23 13:06:13 -05:00
BizHawk.Installer Update BizHawkFiles.wxs 2017-08-29 11:15:38 -04:00
Bizware remove junk accidentally added bizwareGL ClassDiagram 2018-11-30 09:08:44 -06:00
Build add a build tool command which can strip timestamps from PE files (for my own use). 2017-12-04 01:00:58 -06:00
CpuCoreGenerator Spaces -> tabs. 2017-04-15 16:37:30 -04:00
Dist include appconfigs in dist package 2017-08-03 17:08:13 -05:00
ExternalCoreProjects/Virtu Refactor ITraceable to work on TraceInfo objects that separate Disassembly and Register information. Make Tracelogger two columns. 2016-02-21 17:34:42 -05:00
LibretroBridge/vs2015 libretrobridge: fix warnings and rebuild dll 2017-06-13 16:25:15 -05:00
LuaInterface looks like i never got around to using the 64bit luaperks, so luasockets wasnt built-in as promised ever since we went 64bit. fixes #1077 2018-01-15 17:20:24 -06:00
References Add preliminary Unix compatibility (using Mono; resolves #1384) (#1380) 2019-01-04 01:50:55 +03:00
Version Lua: client.getversion() - #1314 2018-09-10 19:24:36 +03:00
attic remove all meteor and garbo stuff completely. These two GBA cores were never up to par, really. 2017-04-23 13:21:35 -04:00
blip_buf Add Blargg's "blip_buf" as an unmanaged dll. license is LGPL; if I like the way it works, I'll rewrite it with MIT code. Implement it as the new resampling output track for NES. Small (~3%)? speedup. Should sound better, especially when the emulator can't quite keep speed. 2012-12-09 03:13:47 +00:00
help Added help file 2014-07-26 21:24:27 +00:00
libgambatte Gambatte: savestate GB rgb palettes 2018-11-22 10:11:35 -06:00
libmupen64plus update gliden 2018-12-23 18:33:06 +03:00
lynx change output64 to output in some unmanaged core buildscripts 2017-06-12 16:13:54 -04:00
mgba@db0041340f mgba: update build - zero bios state bug fixed 2018-09-10 23:02:54 +03:00
miniz add Miniz-based ZipWriter. Ends up being aboot 15-20% faster than FrameworkZipWriter, but as a minus requires the entire contents of each chunk to be buffered first. Not connected until I can think of a better strategy... 2017-06-11 14:37:19 -04:00
output/dll update gliden 2018-12-23 18:33:06 +03:00
psx oops, i forgot to implement shock_Destroy. 2018-08-26 23:05:09 -05:00
quicknes change output64 to output in some unmanaged core buildscripts 2017-06-12 16:13:54 -04:00
vbanext get vbanext in the right place 2017-06-12 21:00:54 -04:00
waterbox bsnes: remove embarrassing leftover empty space from trace log 2018-05-21 22:25:34 +03:00
wonderswan change output64 to output in some unmanaged core buildscripts 2017-06-12 16:13:54 -04:00
.editorconfig add .editorconfig 2016-04-20 12:17:41 -05:00
.gitignore gitignore the .vs folder 2017-10-29 12:44:25 -05:00
.gitmodules mgba: update build - zero bios state bug fixed 2018-09-10 23:02:54 +03:00
BizHawk.sln trap more cases where n64 emulation can halt when running buggy code and shunt through my don't-halt-after-all logic. these are now all associated with error messages; it would be nice if someone knew a way to get those error messages out to c#. then again, that might make buggy code become hopelessly slow due to error spew 2018-11-03 14:04:34 -04:00
BizHawk.sln.DotSettings SxROM - some small cleanup/simplification 2018-11-01 10:27:51 -05:00
Building Other Solutions.txt Update Building Other Solutions.txt 2017-08-29 10:53:03 -04:00
CpuCoreGenerator.sln Upgrade CpuCoreGenerator solution also 2011-08-27 02:20:10 +00:00
Good Core Bad Core.txt philosophize about good cores and bad cores 2015-02-01 02:57:52 +00:00
LICENSE add MIT license to repository, since that's what it's always been, but add a long section describing what a mishmash this repository is -- fair warning. Fixes #933 2017-07-24 12:05:42 -05:00
README.md Update README.md 2019-01-13 17:23:56 +10:00
Settings.StyleCop Move VsyncNum and VsyncDen out of CoreComm and into IVideoProvider 2017-05-05 11:21:37 -05:00
subwcrev.sh Add subwcrev.sh build script for non-Windows platforms 2012-03-12 04:44:10 +00:00

README.md

BizHawk

A multi-system emulator written in C#. As well as quality-of-life features for casual players, it also has recording/playback and debugging tools, making it the first choice for TASers (Tool-Assisted Speedrunners).

unique systems emulated | 27 GitHub latest release dev builds | AppVeyor Windows prereqs | GitHub


Click the "release" button above to grab the latest stable version (changelog at TASVideos).

New user on Windows? Install the prerequisites first, click the "prereqs" button to get that and see Installing for info.

Never mix different versions of BizHawk — Keep each version in its own folder.

Jump to:

Features and systems

The BizHawk common features (across all cores) are:

  • format, region, and integrity detection for game images
  • 10 save slots with hotkeys and infinite named savestates
  • speed control, including frame stepping and rewinding
  • memory view/search/edit in all emulated hardware components
  • input recording (making TAS movies)
  • screenshotting and recording audio + video to file
  • firmware management
  • input, framerate, and more in a HUD over the game
  • emulated controllers via a comprehensive input mapper
  • Lua control over core and frontend (Windows only)
  • hotkey bindings to control the UI

Supported consoles and computers:

  • Apple II
  • Atari
    • Video Computer System / 2600
    • 7800
    • Lynx
  • Bandai WonderSwan + Color
  • CBM Commodore 64
  • Coleco Industries ColecoVision
  • Mattel IntelliVision
  • NEC
    • PC Engine / TurboGrafx-16 + SuperGrafx + CD
    • PC-FX
  • Neo Geo Pocket + Color
  • Nintendo
    • Famicom / Nintendo Entertainment System + FDS
    • Game Boy + Color
    • Game Boy Advance
    • Nintendo 64
    • Super Famicom / Super Nintendo Entertainment System
    • Virtual Boy
  • Sega
    • Game Gear
    • Genesis + 32X + CD
    • Master System
    • Pico
    • Saturn
    • SG-1000
  • Sinclair ZX Spectrum
  • Sony Playstation / PSX
  • Texas Instruments TI-83
  • Uzebox
  • More coming soon..?

See Usage below for details about specific tools and config menus.

Installing

Windows 7/8.1/10

Released binaries can be found right here on GitHub:

Windows | binaries

Click BizHawk-<version>.zip to download it. Also note the changelog, the full version of which is here at TASVideos. Don't mix different versions of BizHawk, keep each version in its own folder.

Before you start (by running EmuHawk.exe), you'll need the following Windows-only prerequisites installed. You can get them all at once with this program.

  • .NET Framework 4.6.1
  • Visual C++ Redists
    • 2010 SP1
    • 2012
    • 2015
  • Direct3D 9

BizHawk functions like a "portable" program, you may move or rename the folder containing EmuHawk.exe, even to another drive — as long as you keep all the files together, and the prerequisites are installed when you go to run it.

Win7 is supported from SP1, Win8 is supported from 8.1, and Win10 is supported from 1709 "Redstone 3", following Microsoft's support lifecycle.

A "backport" release, 1.13.2, is available for Windows XP and 32-bit users. Being in the 1.x series, many bugs remain and features are missing.

to top

GNU+Linux and macOS

Install BizHawk with your distro's package manager. The package name is given on each button below, and some buttons are links. For the changelog, see TASVideos here.

Arch Linux (AUR) | bizhawk Debian (Launchpad) | bizhawk Linux Mint (Launchpad) | bizhawk macOS (Homebrew) | bizhawk Manjaro (AUR) | bizhawk Ubuntu (Launchpad) | bizhawk

If you run EmuHawkMono.sh from a terminal, note that File > Exit (Alt+F4) doesn't terminate the process correctly, you'll need to send SIGINT (^C). The systems that currently work are: Game Boy + GBC (GBHawk), NES (NesHawk), Master System, Atari 7800, Commodore 64, ColecoVision, IntelliVision, TurboGrafx, and ZX Spectrum. See #1430 for progress.

Is your distro not there? Released binaries can be found right here on GitHub (same download as for Windows):

Misc. Linux | binaries

If you download BizHawk this way, don't mix different versions, keep each version in its own folder. Run EmuHawkMono.sh to give Mono the library and executable paths — you can run it from anywhere, so putting it in a .desktop file is fine. If running the script doesn't start EmuHawk, you may need to edit it (if you use a terminal, it will say so in the output).

Linux distros are supported if the distributor is still supporting your version, you're using Linux 4.4/4.9/4.14/4.19 LTS or 4.20 for x86_64/amd64, and there are no updates available in your package manager. Please update and reboot.

macOS is supported from 10.11 "El Capitan" (Darwin 15.6). Apple doesn't seem to care about lifecycles, so we'll go with 6 months from the last security update.

to top

Building

Windows 7/8.1/10

If you have WSL, Git BASH, or similar, clone the repo with:

git clone https://github.com/TASVideos/BizHawk.git BizHawk_master
# or ssh: git clone git@github.com:TASVideos/BizHawk.git BizHawk_master

...or use a Git GUI. Otherwise, you'll have to download an archive from GitHub.

On Windows 10, open a PowerShell window in BizHawk_master (Shift+Mouse2 in File Explorer) and run C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe /p:Configuration=Release BizHawk.sln. On older versions, a similar Command Prompt script should work. (Not sure what the right command is. Do let us know.)

For anything more complicated than building, you'll need an IDE like VS Community 2017, currently the best free C# IDE. Open BizHawk.sln with VS to start and use the toolbar to choose EmuHawk and build. See Compiling at TASVideos (somewhat outdated) for more detailed instructions.

to top

GNU+Linux and macOS

Compiling requires MSBuild and running requires Mono and WINE, but BizHawk does not run under WINE — only the bundled libraries are required.

If you use GNU+Linux, there might be a bizhawk-git package or similar in the same repo as the main package. If it's available, installing it will automate the build process.

Building is as easy as:

git clone https://github.com/TASVideos/BizHawk.git BizHawk_master && cd BizHawk_master
# or ssh: git clone git@github.com:TASVideos/BizHawk.git BizHawk_master && cd BizHawk_master
msbuild /p:Configuration=Release BizHawk.sln

Remove the /p:... flag from MSBuild if you want debugging symbols.

If your distro isn't listed under Installing above, libblip_buf probably isn't in your package repos. You can easily build it yourself.

Once built, see Installing above, substituting the repo's output folder for the download.

Again, if your distro isn't listed there, you might get an "Unknown distro" warning in the terminal, and BizHawk may not open or may show the missing dependencies dialog. You may need to add your distro to the case statement in the script, setting libpath to the location of d3dx9_43.dll.so (please do share if you get it working).

to top

Usage

Loading firmware

You may have seen a dialog saying "You are missing the needed firmware files [...]" when trying to open a rom. Pressing "Yes" opens the Firmware Manager, or you can go to Config > Firmwares....

To load firmwares, the easiest way is to click "Import" in the menubar, navigate to the dumped firmware(s), select them all, and click "Open". It's a good idea to have them copied into the Firmware folder, which is nicely organised, when prompted. If you were trying to open a rom, click "Close and reload ROM" to do that. Keep in mind some firmware is optional and some have multiple versions, only one of which needs to be set.

Identifying a good rom

With a core and game loaded, look in the very left of the status bar (View > Display Status Bar):

  • a green checkmark means you've loaded a "known good" rom;
  • a "???" (don't remember) means you've loaded a "known bad" rom, created by incorrect dumping methods; and
  • a ?-block means you've loaded something unknown, possibly a romhack or homebrew title.

Rebinding keys and controllers

TODO

Changing cores

To change which core is used for NES, SNES, GB, or GBA, go to Config > Cores. There, you'll also find the GB in SGB item, which is a checkbox that makes GB games run with the Super Game Boy, and N64 Video Plugin Settings, which you shouldn't touch.

Running Lua scripts

(Again, this feature is Windows-only for now.)

Go to Tools > Lua Console. The opened window has two parts, the loaded script list and the console output. The buttons below the menubar are shortcuts for items in the menus, hover over them to see what they do. Any script you load is added to the list, and will start running immediately.

Running scripts have a "▶️" beside their name, and stopped scripts (manually or due to an error) have a "⏹️" beside them. Using "Pause or Resume", you can temporarily pause scripts, those have a "⏸️".

"Toggle script" does just that (paused scripts are stopped). "Remove script" stops it and removes it from the list. "Reload script" stops it and loads changes to the file, running scripts are then started again.

to top

TASing

This section refers to BizHawk specifically. For resources on TASing in general, see Welcome to TASVideos. This section hasn't been written yet.

For now, the best way to learn how to TAS is to browse pages like BasicTools on TASVideos and watch tutorials like Sand_Knight and dwangoAC's.

to top

Testing

Testing bugfixes or new features can be just as helpful as making them! If code's more your thing, see Contributing below.

Dev builds are automated with AppVeyor, every green checkmark in the commit history is a successful build and clicking the check takes you straight there. The full list is here, in future use the "dev builds" button at the top of this readme.

Once you're on the build page, click "Artifacts" and download BizHawk_Developer-<datetime>-#<long hexadecimal>.zip.

to top

Cores

A core is what we call the smaller bits of software that emulate just one system or family of systems, e.g. NES/Famicom. For the most part, there's a "best" core for each system, based on accuracy, but there are a few alternative cores which are faster and less accurate.

System Core Alt. Core
Apple II Virtu
Atari 2600 Atari2600Hawk
Atari 7800 A7800Hawk
Atari Lynx Handy
Commodore 64 C64Hawk
ColecoVision ColecoHawk
Game Boy / Color GBHawk Gambatte
Game Boy Advance mGBA VBA-Next
IntelliVision IntelliHawk
N64 Mupen64Plus
Neo Geo Pocket / Color NeoPop
NES NesHawk QuickNes
PC-FX T.S.T.
Playstation (PSX) Octoshock
Sega Game Gear SMSHawk
Sega Genesis Genplus-gx
Sega Master System SMSHawk
Sega Saturn Saturnus
Sega Pico PicoDrive
SNES BSNES Snes9x
Super Game Boy BSNES SameBoy
TI-83 TI83Hawk
TurboGrafx / SuperGrafx PCEHawk
Uzebox Uzem
Virtual Boy Virtual Boyee
WonderSwan / Color Cygne
ZX Spectrum ZXHawk

Amstrad CPC, Magnavox Odyssey², and PSP emulation are works-in-progress and there is no ETA. Cores for other systems are only conceptual. If you want to help speed up development, ask on IRC (see below).

to top

Support and troubleshooting

A short FAQ is provided on the BizHawk wiki. If your problem is one of the many not answered there, and you can't find it in the issue tracker search, check the BizHawk forum at TASVideos, or ask on IRC:

IRC | chat.freenode.net #bizhawk Matrix (IRC bridge) | #freenode_#bizhawk:matrix.org freenode webchat | #bizhawk

If there's no easy solution, what you've got is a bug. Or maybe a feature request. Either way, open a new issue (you'll need a GitHub account, signup is very fast).

to top

Contributing

BizHawk is Open Source Software, so you're free to modify it however you please, and if you do, we invite you to share! Under the permissive MIT License, this is optional, just be careful with reusing cores as some have copyleft licenses.

Not a programmer? Something as simple as reproducing bugs with different software versions is still very helpful! See Testing above to learn about dev builds if you'd rather help us get the next release out.

If you'd like to fix bugs, check the issue tracker here on GitHub:

GitHub open issues counter

It's a good idea to check if anyone is already working on an issue by asking on IRC (see Support above).

If you'd like to add a feature, first search the issue tracker for it. If it's a new idea, make your own feature request issue before you start coding.

For the time being, style is not enforced in PRs, only build success is. Please use CRLF, tabs, and Allman braces in new files.

Past contrbutors to the frontend and custom-built cores are listed here. See a core's docs for its authors.

  • DeSmuME for DS/Lite — cross-platform
  • Dolphin for GameCube and (original) Wii — cross-platform
  • FCEUX for NES/Famicom — TASing is Windows-only, but it should run on Unix
  • libTAS for Linux ELF — GNU+Linux-only, also emulates other emulators
  • lsnes for GB and SNES — cross-platform
  • openMSX for MSX — cross-platform

Emulators for other systems can be found on the EmulatorResources page at TASVideos. The TASVideos GitHub page also holds copies of other emulators and plugins where development happens sometimes, their upstreams may be of use.

License

From the full text:

This repository contains original work chiefly in c# by the BizHawk team (which is all provided under the MIT License), embedded submodules from other authors with their own licenses clearly provided, other embedded submodules from other authors WITHOUT their own licenses clearly provided, customizations by the BizHawk team to many of those submodules (which is provided under the MIT license), and compiled binary executable modules from other authors without their licenses OR their origins clearly indicated.

In short, the frontend is MIT (Expat), beyond that you're on your own.