Giter VIP home page Giter VIP logo

tasemulators / bizhawk Goto Github PK

View Code? Open in Web Editor NEW
2.0K 96.0 373.0 1.11 GB

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.

Home Page: http://tasvideos.org/BizHawk.html

License: Other

C# 35.03% C++ 30.18% C 31.56% Makefile 0.17% Assembly 0.15% Batchfile 0.02% GLSL 0.04% Python 0.06% Shell 0.10% HTML 1.00% Limbo 0.04% CSS 0.01% Raku 0.02% Rust 0.38% SourcePawn 0.07% Lua 0.86% HLSL 0.05% Pawn 0.03% Nix 0.21% NASL 0.03%
c-sharp c-plus-plus winforms emulator emulation saturn dotnet speedrunning

bizhawk's Introduction

BizHawk

An emulation project.

EmuHawk is 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). More info below.

A7800Hawk, Atari2600Hawk, C64Hawk, ColecoHawk, GBHawk, IntelliHawk, NesHawk, O2Hawk, PCEHawk, SMSHawk, TI83Hawk, VectrexHawk, and ZXHawk are bespoke emulation cores written in C#. MSXHawk is a bespoke emulation core written in C++. More info below.

(latest) release | GitHub latest dev build | GitLab CI GitHub open issues counter

built with nix OpenSSF Best Practices


Jump to:

Features and systems

EmuHawk's features (common 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
  • rebindable hotkeys for controlling the frontend (keyboard+mouse+gamepad)
  • a comprehensive input mapper for the emulated gamepads and other peripherals
  • programmatic control over core and frontend with Lua or C#.NET

OoT screencap SMW screencap

Supported consoles and computers:

  • Apple II
  • Arcade machines
  • Atari
    • Video Computer System / 2600
    • 7800
    • Jaguar + CD
    • Lynx
  • Bandai WonderSwan + Color
  • CBM Commodore 64
  • Coleco Industries ColecoVision
  • GCE Vectrex
  • Magnavox Odyssey² / Videopac G7000
  • Mattel Intellivision
  • MSX
  • 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 + N64DD
    • Super Famicom / Super Nintendo Entertainment System + SGB + Satellaview
    • Virtual Boy
  • Sega
    • Game Gear
    • Genesis + 32X + CD
    • Master System
    • Saturn
    • SG-1000
  • Sinclair ZX Spectrum
  • Sony Playstation (PSX)
  • Texas Instruments TI-83
  • TIC-80
  • Uzebox
  • more coming soon..?

See Usage below for info on basic config needed to play games.

to top

Installing

Windows

Released binaries can be found right here on GitHub (also linked at the top of this readme):

Windows | binaries

Click BizHawk-<version>-win-x64.zip to download it. Also note the changelog, the full version of which is over on TASVideos. Extract it anywhere, but don't mix different versions of BizHawk, keep each version in its own folder. 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.

Run EmuHawk.exe to start. If startup is blocked by a Windows SmartScreen dialog, click "More Info" to reveal the override button. Third-party antivirus may also block startup. There are some command-line arguments you can use: see Passing command-line arguments.

EmuHawk does have some prerequisites which it can't work without (it will let you know if they're missing). The list is here, and we've made an all-in-one installer which you can get here. You should only have to run this once per machine, unless the changelog says we need something extra.

We will be following Microsoft in dropping support for old versions of Windows, that is, we reserve the right to ignore your problems unless you've updated to at least Win11 21H2 (initial release) or Win10 21H2. Read more on MSDN.

A "backport" release, 1.13.2, is available for users of Windows XP, 7, or 8.1 32-bit. It has many bugs that will never be fixed and it doesn't have all the features of the later versions.

to top

Unix

Note: There's only one dev working on Linux (@YoshiRulz)! Please have patience, and try not to bother everyone else.

Install the listed package with your package manager (some buttons are links to the relevant package). The changelog can be found over on TASVideos.

Manjaro | bizhawk-monort (AUR)

No package for your distro? Install via Nix (see below), or install manually by grabbing the latest release here on GitHub:

Misc. Linux | bizhawk-monort

If you download BizHawk this way, don't mix different versions, keep each version in its own folder. The runtime dependencies are glibc, Mono "complete", OpenAL, Lua 5.4, and lsb_release. The .NET 6 Runtime (a.k.a. .NET Core) is not a runtime dependency, only Mono. WINE is also not a runtime dependency. If you try to use WINE anyway then you're on your own.

Run EmuHawkMono.sh to start EmuHawk—you can run it from anywhere, so creating a .desktop file to wrap the script is fine. The shell script should print an error if it fails, otherwise it's safe to ignore console output. It takes mostly the same command-line arguments as on Windows: see Passing command-line arguments.

Most features and cores work, a notable omission being Mupen64Plus (N64). See the Linux thread, #1430, for a more detailed breakdown.

to top

macOS (legacy BizHawk)

EmuHawk depends on certain libraries for graphics, and these don't work on macOS. Users on macOS have three options:

  • Use another machine with Windows or Linux, or install either in a VM (WINE is not a VM).
  • Use an older 1.x release which was ported to macOS by @Sappharad (with replacements for the missing libraries). Links and more details are in this TASVideos forum thread (jump to last page for latest binaries).
  • For the technically-minded, download the source of an older 2.x release. @Sappharad put a lot of work into it but ultimately decided to stop.
    • ...or use the Nix expression as a starting point instead.

to top

Nix/NixOS

(Curious what this Nix thing is about? Start here.)

Dev builds and a few recent releases can be built with Nix, either by cloning the repo, or by fetchzip'ing a commit and importing the expression from it. (The repo isn't a Flake yet, but you should be able to IFD.) See the dedicated Nix usage readme for what attributes are exposed. If you use a non-NixOS distro with Nix installed, you just need to add one argument and your host graphics drivers will be picked up thanks to nixGL.

to top

Development builds

Development builds are made automatically whenever someone contributes. Because of this, we recommend using a release for work that requires stability (such as TASing), and only switching to a dev build if there's a specific change or addition you need.

recent dev builds | GitLab CI latest dev build | GitLab CI

Note: Due to recent changes by AppVeyor, artifact downloads are no longer available. Use the GitLab CI artifacts.

Click one of the buttons above to download a dev build (they're also at the top of this readme). AppVeyor uses Windows and GitLab CI uses Linux, but they work all the same.

  • On the AppVeyor page for a Build, click "Artifacts", then BizHawk_Developer-<datetime>-#<long hexadecimal>.zip.
  • On the GitLab CI page for a Pipeline, click "Jobs", then the download button on the right under the heading "Package". (On the Pipelines list page, there's also a download button on each Pipeline—choose package_devbuild_*:archive there.)

To find the dev builds for a specific commit, you can click the green checkmark next to it (in the commit history, for example) for a dropdown, then click either "Details" link to go to AppVeyor/GitLab.

Building

See the contributor guidelines.

tl;dr:

  • On Unix, run Dist/BuildRelease.sh (uses .NET SDK CLI). You can also use Rider or VS Code.
  • On Windows, run in VS2022. You can also use the command-line, Rider, or VS Code.

to top

Usage

Passing command-line arguments

EmuHawk takes some command-line options which aren't well-documented; you might be able to figure them out from the source.

On Windows 8.1/10, it's easiest to use PowerShell for this. For example, to pass --lua=C:\path\to\script.lua as the first argument and C:\path\to\rom.n64 as the second, navigate to the BizHawk install folder and run:

(New-Object System.Diagnostics.Process -Property @{StartInfo=(New-Object System.Diagnostics.ProcessStartInfo -Property @{FileName="$PWD\EmuHawk.exe";Arguments='"--lua=C:\path\to\script.lua" "C:\path\to\rom.n64"'})}).Start()

Note: PowerShell's cd doesn't seem to change the CWD of child processes. Just open a shell from the install folder. Don't @ me.

For char escaping tips you're on your own. It might help to split up the command so you can identify syntax errors:

$s = '"--lua=C:\path\to\script.lua" "C:\path\to\rom.n64"'
$startInfo = New-Object System.Diagnostics.ProcessStartInfo -Property @{FileName="$PWD\EmuHawk.exe";Arguments=$s}
$proc = New-Object System.Diagnostics.Process -Property @{StartInfo=$startInfo}
$proc.Start()

On Linux, you can pass arguments to EmuHawkMono.sh as expected and they will be forwarded to mono. (You can also export env. vars.) All the arguments work as on Windows, with some caveats:

  • file paths must be absolute (or relative to the install dir, EmuHawkMono.sh changes the CWD to there);
  • --mono-no-redirect: if you pass this flag as the first argument, it will be eaten by the script itself, and stdout/stderr will not be redirected to a file. (It's redirected by default.)

The same example as above would be ./EmuHawkMono.sh --lua=/path/to/script.lua /path/to/rom.n64.

For char escaping tips, see Unix StackExchange your shell's man/info page. BASH and Zsh have different rules!

Loading firmware

Put all your dumped firmware files in the /Firmware folder and everything will be automatically detected and loaded when you try to load a game (filenames and subfolders aren't enforced, you can just throw them in there). If you're missing required or optional firmware, you will see a "You are missing the needed firmware files [...]" dialog.

Keep in mind some firmware is optional, and some have multiple versions, only one of which needs to be set.

If you want to customise firmware (when there are alternative firmwares, for example) go to Config > Firmwares..., right-click the line of the firmware you want to change, click "Set Customization", and open the file.

You can change where EmuHawk looks for firmware by going to Config > Paths... and changing "Firmware" in the "Global" tab to the new location. This allows multiple installs to use the same folder.

Identifying a good rom

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

  • a green checkmark means you've loaded a "known good" rom;
  • a "!" in a red circle means you've loaded a "known bad" rom, created by incorrect dumping methods; and
  • something else, usually a ?-block, means you've loaded something that's not in the database.

Rebinding hotkeys and virtual gamepads

There are two keybind windows, Config > Controllers... and Config > Hotkeys.... These let you bind your keyboard/mouse and gamepads to virtual gamepads, and to frontend functions, respectively.

Using them is simple, click in a box next to an action and press the button (or bump the axis) you want bound to that action. If the "Auto Tab" checkbox at the bottom of the window is checked, the next box will be selected automatically and whatever button you press will be bound to that action, and so on down the list. If "Auto Tab" is unchecked, clicking a filled box will let you bind another button to the same action. Keep in mind there are multiple tabs of actions.

Selecting and configuring cores

To change which core is used where multiple cores emulate the same system (currently: NES, SNES, GB/C, SGB, and PCE/TG-16), look under Config > Cores. Under that menu, you'll also find the GB in SGB checkbox. When checked, GB/C games will be loaded using the chosen SGB core instead of the chosen GB core.

Cores have their own settings, which you can find in various windows under the system-specific menu (between Tools and Help when a rom is loaded). Some cores, like Mupen64Plus, have a labyrinth of menus while others have one.

Running Lua scripts

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. Instead of using "Open script", you can drag-and-drop .lua files onto the console or game windows.

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). "Reload script" stops it and loads changes to the file, running scripts are then started again. "Remove script" stops it and removes it from the list.

In-game saves

Games often have a "save progress" feature, which writes some save data on the cart or some sort of memory card. (Not to be confused with EmuHawk's savestates.) But when EmuHawk emulates this process, the in-game saves remain in the host system's memory (RAM) along with the rest of the virtual system, meaning it's not really saved. The save data needs to be copied to a file on disk (on the host), which we call "SaveRAM flushing".

You can simply use File > Save RAM > Flush Save Ram (default hotkey: Ctrl+S) to make EmuHawk save properly. The .SaveRAM files are in system-specific subfolders of the BizHawk install folder (configurable) for if you want to make backups, which you should.

The File > Save RAM menu is printed in bold when the virtual system does a save, which usually corresponds to pushing a "save progress" button in-game. Note that some games use SRAM for miscellaneous tasks, so it may not be strictly necessary to flush the SaveRAM every time it's changed. Can't hurt though.

EmuHawk can also flush automatically, which you can configure with Config > Customize... > Advanced > AutoSaveRAM. When closing or switching roms, EmuHawk may also try to flush SaveRAM. A disclaimer: Automatic flushing is extremely unreliable and not being maintained. It may corrupt your previous saves!

More disclaimers: Develop a habit to always flush saves manually every time you save in the game, and make backups of the flushed save files! If you don't flush saves manually and something breaks, you're on your own. If your save has been corrupted and you didn't make a backup, there's nothing we can do about it.

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 The8bitbeast's and Sand_Knight and dwangoAC's.

TAStudio

A lot of useful information is presented in the video tutorials thread on TASVideos.

Analog controls

Enter analog editing mode by double-clicking on an analog input cell. The cell color will change. There are several ways to edit values:

  • Arrow keys (see the TAStudio section in the Hotkeys menu)
  • Numeric input
  • Mouse dragging
  • Using the Virtual Pad tool while the Recording mode is enabled in TAStudio

While in analog editing mode, you can select multiple rows if you hold Shift or Control key and click on the Frame# column. That will allow you editing all those cells at once using Arrow keys or numeric input.

to top

External tools

Creating a GUI with Lua scripts is fiddly. If you know some C# (or another .NET language), you can replace your Lua script with an external tool. See the ext. tools wiki for more details.

We're looking to create a catalog of tools made by the community, share yours on IRC/Discord (links below).

Cores

A core is what we call the smaller bits of software that emulate just one system or family of systems, e.g. NesHawk for NES/Famicom. For the most part, we have one core per system, but sometimes you have the choice between speed (in terms of CPU usage) and accuracy.

In the table below, core names in bold are accuracy-focused and acceptable on TASVideos. The -Hawk cores are part of the BizHawk project. All other cores are ported, mainly from the Mednafen project.

System Cores
Apple II Virtu
Arcade MAME
Atari 2600 Atari2600Hawk
Atari 7800 A7800Hawk
Atari Jaguar Virtual Jaguar
Atari Lynx Handy
Commodore 64 C64Hawk
ColecoVision ColecoHawk
Game Boy / Color Gambatte, GBHawk, SameBoy
Game Boy Advance mGBA
Intellivision IntelliHawk
MSX MSXHawk
N64 Ares64, Mupen64Plus
NDS melonDS
Neo Geo Pocket NeoPop
NES NesHawk, quickerNES
Odyssey² O2Hawk
PC-FX T.S.T.
Playstation (PSX) Nymashock, Octoshock
Sega 32X PicoDrive
Sega Game Gear SMSHawk
Sega Genesis Genplus-gx
Sega Master System SMSHawk
Sega Saturn Saturnus
SNES BSNES, Faust, Snes9x
Super Game Boy BSNES, Gambatte
TI-83 Emu83, TI83Hawk
TIC-80 TIC-80 reference implementation
TurboGrafx HyperNyma, PCEHawk, TurboNyma
Uzebox Uzem
Vectrex VectrexHawk
Virtual Boy Virtual Boyee
WonderSwan / Color Cygne
ZX Spectrum ZXHawk

There are also works-in-progress for:

  • Amstrad CPC (home-grown core)
  • Fairchild Channel F (home-grown core)
  • others maybe (candidates)

Please don't bother core devs about these WIPs unless you're looking to contribute in some way.

to top

Support and troubleshooting

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

You can open a new issue at any time if you're logged in to GitHub. Please at the very least read the issue templates, we tend to ask the same questions for every one-line issue that's opened.

Related projects

  • Dolphin for GameCube and Wii — cross-platform
  • FCEUX for NES/Famicom — cross-platform; TASing is Windows-only
  • libTAS for ELF (Linux desktop apps) — requires GNU+Linux host; also emulates other emulators
  • lsnes for GB and SNES — cross-platform
  • melonDS for Nintendo DS — cross-platform
  • mGBA for GBA and GB/C — cross-platform

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

to top

Contributing

EmuHawk or core development

Do you want your name next to these fine people? We have many open issues with no-one to work on them. Any which would be a good fit for someone who's new to Open Source are listed here (spoilers: it's probably empty).

The contribution guidelines have more details on how to get set up, work with the code, and submit changes to us.

Don't shy away from asking about an Issue on IRC/Discord (see above)! You might be given more info about the problem—or you might find out someone is already working on it. For adding new features it's especially important, because details are often left out of the issue tracker, and we may want to make sure the new addition is future-proofed.

With regards to core development, we're not particularly interested in PRs adding cores out-of-the-blue, but if you have experience in emulator development please get in touch. We have a wishlist of cores to port, and on top of that, many of our in-house cores are without a maintainer.

to top

Testing/QA

Not a programmer? You can still be helpful by grabbing a recent dev build and reproducing old bugs, i.e. checking if they've been fixed or not.

Those with hardware or other domain knowledge may be able to help triage issues like these.

to top

Localization

Not available. Contact YoshiRulz on Discord or elsewhere if you're interested in translating.

to top

License

EmuHawk and DiscoHawk can be used by anyone for any purpose allowed by the permissive MIT License (Expat). The full text is very short.

Any developers looking to re-use code from BizHawk in their own work should understand which files the license applies to. It's included in the text, but tl;dr: anything outside /src isn't ours and we can't give you permission to share, use, or sell it. That means not all the files included with BizHawk releases or dev builds are free to share, either.

Disclaimer time! Can't have emulation software without a disclaimer...

Following the terms of our license does not make you immune from other contracts or laws. Some or all of the following may be illegal where you live: creating a copy of non-free software for backup purposes ("dumping" or "ripping"); distributing copies of non-free software; soliciting pirated copies of software; knowingly posessing pirated copies of software; importing software from the USA (GitHub and TASVideos are American entities); using a backup copy of non-free software without the original. For obvious reasons, we cannot and will not distribute dumped games or firmware that is under copyright.

to top

bizhawk's People

Contributors

alyosha-tas avatar asnivor avatar brandone avatar casualpokeplayer avatar hathor86 avatar isotarge avatar jdpurcell avatar kalimag avatar kylelyk avatar kylethomson avatar meerkov avatar micro500 avatar morilli avatar mrwint avatar nattthebear avatar pgrimsrud avatar retroedit avatar saxxonpike avatar scepheo avatar scrimpeh avatar solarplex avatar suuperw avatar taotao54321 avatar tastyfish avatar tikevin83 avatar trivial-man avatar upthorn avatar vadosnaprimer avatar yoshirulz avatar zeromus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bizhawk's Issues

Improve the implementation of turbo

Improve the implementation of turbo. Right now, the default turbo does not 
frame-skip by default. Unthrottle can (I think) but it is a toggle, not a 
button you hold down. We need a 'super turbo' hotkey, that when held down, does 
max fps, max frame-skip and any sound bypassing.

Original issue reported on code.google.com by [email protected] on 12 May 2012 at 5:54

Drawing remains drawn after removing a script

What steps will reproduce the problem?
1. Load a script that draws a shape (Tested with a rectangle).
2. Right click the script and click "Remove".

What is the expected output? What do you see instead?

I'd expect the shape to stop being drawn. Instead, it remains drawn at the 
location it was at the time of removal. The script doesn't seem to actually 
still be running as the script I used ties the rectangle to the location of a 
character, and the box remained stationary after I removed it from the Lua 
console.

What version of the product are you using? On what operating system?

r2274

Original issue reported on code.google.com by [email protected] on 11 May 2012 at 8:49

6502 - some double read/write emulation

According to some documents and FCEUX code, 6502 has some double read/write 
behavior (for example, read-modify-write operations actually write twice). 
FCEUX implements them, but BizHawk doesn't.

Unfortunately, I don't have skill to test them on real console. But I wrote a 
test ROM (I think someone may have written similar testcases already):
http://www.mediafire.com/?q8u98rcy55v6kqg
Could you test this on real console, if possible?

Original issue reported on code.google.com by [email protected] on 8 Mar 2012 at 3:54

On screen option for RAM Watch Enchancements

Add an on screen option for RAM Watch.
-A GUI interface for setting the x, y coordinates of the RAM Watch display.
-Allow each watch to be on or off screen, and on its own x, y.

Original issue reported on code.google.com by [email protected] on 12 May 2012 at 6:40

Intro music plays in Rondo of Blood title screen & next song starts to play when selected one ends in Sound Test

What steps will reproduce the problem?
1. Load Rondo of Blood
2. Let the opening run (the one after the Konami logo)

Similarly:
1. Go to Sound Test
2. Select any song

What is the expected output? What do you see instead?
No music should play in the title screen. However, the intro music plays in the 
title screen, which shouldn't happen.
Similarly, the next song starts to play when the selected one ends in the Sound 
Test.

What version of the product are you using? On what operating system?
BizHawk 1.0 on Windows 7 Home Premium x64

Please provide any additional information below.
This is on a verified good dump.
The intro music won't play on the title screen if the opening is skipped.

It is likely that the theme for the next stage will play when the theme of the 
current stage ends in-game.

Original issue reported on code.google.com by [email protected] on 7 Mar 2012 at 7:07

Main: Can take screenshot when no ROM loaded

What steps will reproduce the problem?
1. Open Bizhawk, but do not load a ROM.
2a. Open the File => Screenshot submenu and/or:
2b. Press F12 (or whatever key you've assigned to taking a screenshot).

What is the expected output? What do you see instead?
The "Screenshot" menu item is disabled, but "Screenshot as", "Screenshot -> 
Clipboard", "Make Animated GIF" and "Make Animated GIF as" are enabled. They 
should be all disabled (or enabled, please be consistent).

Furthermore, I can bypass the disabled "Screenshot" menu item by using the 
relevant accelerator (F12). The PNG is written to disk.

What version of the product are you using? On what operating system?
r2164

Please provide any additional information below.


Original issue reported on code.google.com by stop.squark on 6 Apr 2012 at 10:18

Main: GUI submenu contains unrelated menu items

What steps will reproduce the problem?
1. Open Bizhawk
2. Open the Config => GUI submenu.

What is the expected output? What do you see instead?
The GUI submenu contains many items that have nothing whatsoever to do with the 
GUI. In particular:

*"Enable Rewind", "Backup Savestates", "Auto Savestates" refer to 
enabling/disabling various emulator tools and have nothing to do with the GUI.
*"Frame advance - skip lag frames" configures how frame advance works and has 
nothing to do with the GUI.

Please place these menu items where a user is more likely to find them. (FCEUX 
places them in Config => Enable, for comparison.)

What version of the product are you using? On what operating system?
r2164

Please provide any additional information below.


Original issue reported on code.google.com by stop.squark on 6 Apr 2012 at 10:03

Program crashes when USB joypad is disconnected

What steps will reproduce the problem?
1. Start Bizhawk with an Xbox 360 controller connected.
2. While the program is running, disconnect the controller.
3. Wait one second or so.

What is the expected output? What do you see instead?
Expected output: The emulator should (obviously) be no longer able to accept 
input from that device.
Actual output: A generic "BizHawk.MultiClient has stopped working" message box 
appears, and BizHawk closes once it is dismissed.

What version of the product are you using? On what operating system?
BizHawk v1.0 (March 3, 2012)
Windows 7 Professional x64
Standard Xbox 360 Wireless Controller

Please provide any additional information below.
I don't know if this issue is specific to this controller, or to game 
controllers in general. Controller was disconnected by removing the battery 
pack.

Original issue reported on code.google.com by [email protected] on 4 Mar 2012 at 5:57

Controller/Hotkey bindings do not accept Xbox 360 controller triggers

What steps will reproduce the problem?
1. Open the "Controllers" or "Hotkeys" menu
2. Select a key to rebind
3. Press one of the analog triggers on the Xbox 360 controller

What is the expected output? What do you see instead?
Expected output: The input is bound to pressing the trigger.
Actual output: Trigger press is not detected.

What version of the product are you using? On what operating system?
BizHawk v1.0 (March 3, 2012)
Windows 7 Professional x64
Standard Xbox 360 Wireless Controller

Please provide any additional information below.
Nestopia detects trigger presses as (joy 0) +z (for left trigger) and -z (for 
right trigger), if this helps you handle the issue without access to a Xbox 360 
controller or wireless receiver.

Original issue reported on code.google.com by [email protected] on 4 Mar 2012 at 5:49

Fix loading of post movie savestates

Fix loading of post movie savestates (savestates made while in movie finished 
mode). Complete fix when in read-only.  While in read+write it throws a 
loadstate error.  This isn't ideal but at least prevents possible movie 
corruption.

Original issue reported on code.google.com by [email protected] on 12 May 2012 at 5:13

Fix prev sorting for RAM Search

Sorting by Prev only works for the option "Since last Frame". Find a way to 
integrate the various prev options.

Original issue reported on code.google.com by [email protected] on 12 May 2012 at 6:54

edit: See also #39 re: RAM Watch.

Erroneous high pitches in NES sound emulation

What steps will reproduce the problem?
1. Play a nes game like megaman 2

What is the expected output? What do you see instead?
I have very good speakers (and ears), and there is a lot of very high pitched 
notes during emulation.  It seems to happen when one of the channels is not 
playing a scheduled note.

What version of the product are you using? On what operating system?
BizHawk 1.0

Please provide any additional information below.
Perhaps until the sound emulation is fixed, a lowpass filter might be a good 
idea, ie, disallow sound output of frequencies higher than X.

Original issue reported on code.google.com by [email protected] on 4 Mar 2012 at 5:19

Main: Can open/record movie when no ROM loaded

What steps will reproduce the problem?
1. Open Bizhawk but do not load a ROM.
2. Open the File => Movie submenu.

What is the expected output? What do you see instead?
The "Play Movie" and "Record Movie" menu items and "Recent" submenu should all 
be disabled, thus preventing these actions when no ROM is loaded. Instead, I 
can select and perform all of these actions.

What version of the product are you using? On what operating system?
r2164

Please provide any additional information below.

Original issue reported on code.google.com by stop.squark on 6 Apr 2012 at 9:50

Archive dialog - prioritize rom results

WHen opening a rom from an archive (such as .7z) with multiple entries, make an 
algorithm to push the probably good results to the top and the bad ones to the 
bottom.


For instance, [b] should be at the bottom, (U) [!] patterns should be 
preferred, exact matches to the archive name are preferred, etc.

Original issue reported on code.google.com by [email protected] on 4 Mar 2012 at 2:42

Strange sound tone/Noise after fast forward

What steps will reproduce the problem?
1. (Tested with adventures of lolo 3) load LoLo 3
2. Press fast forward and a strange tone occurs


What is the expected output? What do you see instead?
Tone is not supposed to be present.

What version of the product are you using? On what operating system?

SVN 1955 (win 7 x64)

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 15 Mar 2012 at 10:02

GDI screen tearing (game gear games so far)

For some reason in GDI mode when playing game gear games in larger screen 
resolutions then  x1 i get really bad screen tearing,i tried enabling the 
"Display vsync" and that did nothing at first,had to go in the configuration 
file and manually enable it from there,now i noticed when GDI mode is disabled 
there is almost no screen tearing but theres the bilinear/antiscoptic filtering 
which i dont really like,if it the screen tearing in GDI mode can be fixed then 
then thank you greatly.

Alittle off top but also i am curious if the team is planning to maybe add in 
wonderswan/wonderswan color an the neogeo pocket/neogeo pocket color?if so then 
that would be awesome considering most of the emulators for the those four 
above systems are accurate but also abit glitchy.

Currently im using rev.r1926

My system specs are the following:
MS Windows 7 Ultimate 64-bit
AMD Phenom II X4 960T @3.6 ghz(1.3v)
4.00 GB Dual-Channel DDR3 @ 1600 mhz
AMD Radeon HD 6670 1 Gb DDR3
977GB TOSHIBA TOSHIBA MK1059GSM ATA Device (sata)
(1024x768@60Hz)

Original issue reported on code.google.com by [email protected] on 14 Mar 2012 at 5:32

TAStudio ArgumentOutOfRangeException at read-only movie end

What steps will reproduce the problem?
1. Open a movie in read-only mode. For testing purposes, I used 
http://tasvideos.org/1715M.html .
2. Open TAStudio.
3. Wait until end of input.

What is the expected output? What do you see instead?
At end of input, an ArgumentOutOfRangeException is thrown; see 
http://bayimg.com/mAndLAAdg . After closing the exception dialog, Bizhawk 
crashes.

What version of the product are you using? On what operating system?
r1957, Win7 x64

Please provide any additional information below.


Original issue reported on code.google.com by stop.squark on 19 Mar 2012 at 2:33

TAStudio enhancements

Basically, make TAStudio on par with FCEUX's TASEdit. Add the Genesis and 
Gameboy virtual pad(s).

Original issue reported on code.google.com by [email protected] on 12 May 2012 at 5:34

Lua GUI items flicker when multiple scripts are running at once

What steps will reproduce the problem?
1. Run a script that draws a shape (Tested with a rectangle).
2. Run another script that writes text on the screen.

What is the expected output? What do you see instead?

Instead of showing consistently, the rectangle flickers a lot. It's more often 
invisible than not.

What version of the product are you using? On what operating system?

r2274

Please provide any additional information below.

This also works the other way around, but it's far more noticeable with having 
the shape loaded first. You can also have two scripts that draw text or shapes 
and it will work similarly. The order in which you load them definitely has a 
connection to which flickers more / at all.

Original issue reported on code.google.com by [email protected] on 11 May 2012 at 8:58

Binary movie format

Add a binary format for .bkm to complement the text version. There are a few 
benefits to doing this, but whether or not it is worth including debatable.

Original issue reported on code.google.com by [email protected] on 12 May 2012 at 5:17

when can for to emualte palystatio

What steps will reproduce the problem?
1. open "ROM"
2. encudiar un buton
3.

What is the expected output? What do you see instead?
Can u choose ISO??


What version of the product are you using? On what operating system?
verson 1.0


Please provide any additional information below.
SARY FOR NOT ENGLIS!!!

Original issue reported on code.google.com by [email protected] on 4 Apr 2011 at 6:16

Attachments:

Strange "White noise" sound during 1943 (USA) intro

What steps will reproduce the problem?
1. Load 1943 Battle for Midway (USA)
2. During the intro a high pitch white noise sound occurs
3.

What is the expected output? What do you see instead?
Noise should not be present.

What version of the product are you using? On what operating system?
SVN1955

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 15 Mar 2012 at 10:03

Play movie: missing indication of checksum mismatch

What steps will reproduce the problem?
1. Open Super Mario Bros. 3 (U) (PRG1) [!].nes .
2. Import and play http://tasvideos.org/1558M.html . Note it the movie was made 
on version PRG0.

What is the expected output? What do you see instead?
I expected some kind of indication that the checksum of the ROM and the 
checksum of the ROM used to make the movie do not match. Instead, there is 
nothing in the UI telling me that I am using the incorrect ROM.

I recorded and then played back a native Bizhawk movie in the same way and got 
the same result.

Please also include a warning dialog stating that I should expect desyncs, do I 
wish to continue [yes, no] when I click on the "Ok" button. Right now, it is 
possible to play a SMB3 movie on a SMB1 ROM.

What version of the product are you using? On what operating system?
r2164

Please provide any additional information below.


Original issue reported on code.google.com by stop.squark on 6 Apr 2012 at 9:10

memory.registerwrite

Add memory.registerwrite to the Lua implementation. Presumably would be the 
same concept as it is in FCEUX:

memory.registerwrite(int address, [int size,] function func)

Registers a function to be called immediately whenever the given memory address 
range is written to.

size is the number of bytes to "watch". For example, if size is 100 and address 
is 0x0200, then you will register the function across all 100 bytes from 0x0200 
to 0x0263. A write to any of those bytes will trigger the function. Having 
callbacks on a large range of memory addresses can be expensive, so try to use 
the smallest range that's necessary for whatever it is you're trying to do. If 
you don't specify any size then it defaults to 1.

The callback function will receive two arguments, (address, size) indicating 
what write operation triggered the callback. If you don't care about that extra 
information then you can ignore it and define your callback function to not 
take any arguments. The value that was written is NOT passed into the callback 
function, but you can easily use any of the memory.read functions to retrieve 
it.

You may use a memory.write function from inside the callback to change the 
value that just got written. However, keep in mind that doing so will trigger 
your callback again, so you must have a "base case" such as checking to make 
sure that the value is not already what you want it to be before writing it. 
Another, more drastic option is to de-register the current callback before 
performing the write.

If func is nil that means to de-register any memory write callbacks that the 
current script has already registered on the given range of bytes.

Original issue reported on code.google.com by [email protected] on 12 May 2012 at 5:30

Sound emulation bypass for turbo

NESHawk has a sound emulation bypass (hooked up to the sound on in sound 
config). Add an option to turn this on while turboing / fast fowarding for a 
nice speed boost. Still it is debatable whether this sound emulation bypass is 
legitimate or not to begin with.

Original issue reported on code.google.com by [email protected] on 12 May 2012 at 5:53

TAStudio: default frame column size is too small

What steps will reproduce the problem?
1. Play any movie with frameCount > 10000.
2. Open TAStudio.
3. Wait until at least 10000 frames have been played.

What is the expected output? What do you see instead?
The framecount is displayed as 10..., 11..., etc. I expect to see the entire 
framecount. Increasing the column width manually by dragging in the table 
header works around this problem. The size of the column should accommodate 
movies with frameCount ~ 1e6 at least.

What version of the product are you using? On what operating system?
r2098

Please provide any additional information below.
See comments on issue 13.

Original issue reported on code.google.com by stop.squark on 30 Mar 2012 at 10:59

Text drawn by Lua on the emulator level instead of the window level

It might be a good idea to have Lua draw text on the emulator level instead of 
the window level so that the positioning / size corresponds to a resized 
window. As zeromus has said, this would require text to be drawn in the same 
way as shapes; it currently uses the OSD system. If this is not implemented, 
then the text should definitely calculate its window position based on the 
scaling and possibly change the font accordingly.

Original issue reported on code.google.com by [email protected] on 12 May 2012 at 6:45

DoUndo() fix for RAM Search

Make DoUndo() set the previous value to the current value. It would be better 
would be to keep a previous value undo list and restore that (UndoPrev), but 
this is adequate for preventing crashes.

Original issue reported on code.google.com by [email protected] on 12 May 2012 at 7:13

Save IsLag to movie files

Label lag frames as such in movie files. This is currently implemented in NES 
movies, but in the command mnemonic. It needs to be its own command.

Original issue reported on code.google.com by [email protected] on 12 May 2012 at 5:19

Aldynes (SGX) freezes during intro sequence

What steps will reproduce the problem?
1. Open Bizhawk
2. Load Aldynes ROM file (there's only one, no variants that I know of)
3. Wait for the game to start the story/intro sequence

What is the expected output? What do you see instead?
The intro sequence is supposed to play through and then fade out and go to the 
title screen. What I see is the intro behinds, and part way through the 
scrolling bombardment scene the video freezes but the music keeps playing. When 
the music finishes the screen remains frozen and the game appears to not accept 
input

What version of the product are you using? On what operating system?
1.0 on Vista 64-bit.

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 11 Mar 2012 at 3:47

Main: Add ROM information dialog

Please add a ROM information dialog to the file menu which provides filename, 
checksums, internal name, manufacturer, region and NTSC/PAL, ROM size and other 
relevant debugging information if available (compare Snes9x-rr).

Both the entire table and individual cells should be copyable -- this makes 
everybody's life easier, especially when it comes to reporting and reproducing 
bugs.

Original issue reported on code.google.com by stop.squark on 6 Apr 2012 at 9:14

emu.speedmode

Add emu.speedmode to the Lua implementation. Presumably would be the same 
concept as it is in FCEUX:

emu.speedmode(string mode)

Set the emulator to given speed. The mode argument can be one of these:
       - "normal"
       - "nothrottle" (same as turbo on fceux)
       - "turbo"
       - "maximum"

Original issue reported on code.google.com by [email protected] on 12 May 2012 at 5:28

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.