BizHawk Emulator Development


Alyosha
He/Him
Editor, Experienced Forum User, Published Author (3927)
Joined: 11/30/2014
Posts: 2388
Location: US
NES TASer of 2015
Gambatte has gotten a pretty important improvement today with a newly discovered glitch in Halt behaviour being accurately emulated. This glitch is relatively uncommon but it's impact can be fairly large, since it basically causes a second Halt to occur. So if anyone out there is working on a GB or GBC run in Gambatte, I would strongly encourage you to check out the dev build and see if it effects your run. The recent Pokemon Yellow run desynced on console due to this glitch in an otherwise unremarkable section of normal bike riding, so it is an important accuracy fix to be sure.
Aran Jaeger
He/Him
Banned User (9)
Joined: 10/29/2014
Posts: 176
Location: Bavaria, Germany
I'm not sure if this idea/request/suggestion has been mentioned yet (which it very well might have, but I didn't check the history of this thread, so please forgive me if this is redundant), but how about an additional feature or tool for Bizhawk (or technically any TASing emulator that has an input editor window) where you manually insert a given memory address together with 1 of the typical memory search filter conditions (such as a memory address value increasing or decreasing or being equal to a specific value or having changed at least n times for some chosen integer n, etc.; from 1 frame to the next frame), and once this is done, the corresponding frame lines in the input editor window/TAStudio are ran through and those for which the given memory-search-like comparison to the next frame doesn't fulfill the condition are marked as red frame line (instead of the default indication of certain frame lines with red colour, to make this indication customizable to adapt it to a given specific game). The indication wouldn't need to be a red line such as the already existing indication of frame lines in TAStudio, it could also be something parallel to it, something additional and independent from it. One idea behind this would be to quickly have an overview and identify frames with certain properties (bound to a given, chosen memory address comparison condition), such as for example some memory address value not incrementing by 1 from one frame to another for some memory address that is observed to behave or act as frame timer, to be able to comfortly detect those frames in which the game runs through an ''empty loop'' with regard to those (sub-)routines that directly correlate to making progress in the given game (such as for example the next character position update to move some character another step forwards). Maybe something like this even already exists and I just haven't found it.
collect, analyse, categorise. "Mathematics - When tool-assisted skills are just not enough" ;) Don't want to be taking up so much space adding to posts, but might be worth mentioning and letting others know for what games 1) already some TAS work has been done (ordered in decreasing amount, relative to a game completion) by me and 2) I am (in decreasing order) planning/considering to TAS them. Those would majorly be SNES games (if not, it will be indicated in the list) I'm focusing on. 1) Spanky's Quest; On the Ball/Cameltry; Musya; Super R-Type; Plok; Sutte Hakkun; The Wizard of Oz; Battletoads Doubledragon; Super Ghouls'n Ghosts; Firepower 2000; Brain Lord; Warios Woods; Super Turrican; The Humans. 2) Secret Command (SEGA); Star Force (NES); Hyperzone; Aladdin; R-Type 3; Power Blade 2 (NES); Super Turrican 2; First Samurai. (last updated: 18.03.2018)
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
Aran Jaeger, I didn't understand anything in your post, but why not just use Lua scripts? If tastudio lacks some functions such a script would need, I can add them.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting. If TASing is meta-play, TASVideos Movie Rules are meta-meta-play!
Aran Jaeger
He/Him
Banned User (9)
Joined: 10/29/2014
Posts: 176
Location: Bavaria, Germany
Well I'm not so familiar with the making of Lua scripts and their limits, and showing on the screen if the current frame fulfills some condition or doesn't (or showing the current total amount of frames that let's say don't fulfill some condition up to that point) would also help, but probably not be quite as comfortable as not only knowing if the current frame is a ''progress-wise'' / ''time-wise'' lag frame (as opposed to ''controller input'' lag frames which do not necessarily coincide with the former but are the ones that Bizhawk naturally indicates with the red highlighting, at least to my knowledge), but also seeing which frames (still) contribute to these kinds of lag frames (that one usually wants to avoid) might be even more helpful. What I am imagining is some highlighting of sorts (possibly similar to or substituting the existing case with the red frame lines) of frame lines that are sown in TAStudio / the input editor window, which for example stand for the set of frames in which the screen doesn't update and stays frozen, which could possibly be equivalent to and hence identified by some memory address that behaves like a timer that increments by 1 every ''gameplay'' frame (and maybe loops around from the maximum back to 0) but stops at these ''freeze frames''. Since there is games in which the naturally highlighted red frame lines don't correspond in any form with such ''freeze frames'' whereas these would be exactly those frames that one would want to search (currently 1 by 1, going slowly through a TAS, or checking frame count differences and comparing that to a difference of the values at start and end point of a frame counter memory address to see if it amounts to the same and if not, then one knows there have to be some ''freeze frames'' inbetween in this segment) and eliminate/reduce/avoid.
collect, analyse, categorise. "Mathematics - When tool-assisted skills are just not enough" ;) Don't want to be taking up so much space adding to posts, but might be worth mentioning and letting others know for what games 1) already some TAS work has been done (ordered in decreasing amount, relative to a game completion) by me and 2) I am (in decreasing order) planning/considering to TAS them. Those would majorly be SNES games (if not, it will be indicated in the list) I'm focusing on. 1) Spanky's Quest; On the Ball/Cameltry; Musya; Super R-Type; Plok; Sutte Hakkun; The Wizard of Oz; Battletoads Doubledragon; Super Ghouls'n Ghosts; Firepower 2000; Brain Lord; Warios Woods; Super Turrican; The Humans. 2) Secret Command (SEGA); Star Force (NES); Hyperzone; Aladdin; R-Type 3; Power Blade 2 (NES); Super Turrican 2; First Samurai. (last updated: 18.03.2018)
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
Ah wait. You need a custom lag indicator, for a game whose lack if controller poll on a frame doesn't relate to actual gameplay lag?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting. If TASing is meta-play, TASVideos Movie Rules are meta-meta-play!
DrD2k9
He/Him
Editor, Experienced Forum User, Published Author (2021)
Joined: 8/21/2016
Posts: 894
Location: US
Exotic platforms TASer of 2020First edition TAS of 2020Gameboy TAS of 2020Exotic platforms TASer of 2019Computer TASer of 2017
feos wrote:
Ah wait. You need a custom lag indicator, for a game whose lack if controller poll on a frame doesn't relate to actual gameplay lag?
That would make TASing some systems much easier. (c64 for example).
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
This is what I have for Gargoyles:
Language: lua

event.onframeend(function() emu.setislagged(memory.read_u8(0xfff6d4) == 0) end)
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting. If TASing is meta-play, TASVideos Movie Rules are meta-meta-play!
Aran Jaeger
He/Him
Banned User (9)
Joined: 10/29/2014
Posts: 176
Location: Bavaria, Germany
Ah wait. You need a custom lag indicator, for a game whose lack of controller poll on a frame doesn't relate to actual gameplay lag?
Well yes, to some extent that is what I had in mind, except instead of a concrete script made for 1 game, it probably would be more generally applicable to have a tool or add-on for which one would first be searching for a memory address (in a given game) that increments every gameplay frame that one can trust or rely on, then inserts it into some script together with a condition like ''Greater Than (before)'', and then let's say one runs through the so far worked out part of a TAS and for every pair of neighboured frames, the script checks if the value of this chosen, inserted memory address strictly increased (by 1, for example) when the movie is going from 1 frame to the next, and then accordingly colours those frame lines in TAStudio red (or adds some other indicator to the frame lines) where this doesn't happen (for which I'd assume this would occur either when the timer stays frozen for 1 frame, or the timer just looped around from the maximum back to 0).
collect, analyse, categorise. "Mathematics - When tool-assisted skills are just not enough" ;) Don't want to be taking up so much space adding to posts, but might be worth mentioning and letting others know for what games 1) already some TAS work has been done (ordered in decreasing amount, relative to a game completion) by me and 2) I am (in decreasing order) planning/considering to TAS them. Those would majorly be SNES games (if not, it will be indicated in the list) I'm focusing on. 1) Spanky's Quest; On the Ball/Cameltry; Musya; Super R-Type; Plok; Sutte Hakkun; The Wizard of Oz; Battletoads Doubledragon; Super Ghouls'n Ghosts; Firepower 2000; Brain Lord; Warios Woods; Super Turrican; The Humans. 2) Secret Command (SEGA); Star Force (NES); Hyperzone; Aladdin; R-Type 3; Power Blade 2 (NES); Super Turrican 2; First Samurai. (last updated: 18.03.2018)
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
It's impossible to generalize this for all games. Just find the address and attach this callback to it.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting. If TASing is meta-play, TASVideos Movie Rules are meta-meta-play!
Aran Jaeger
He/Him
Banned User (9)
Joined: 10/29/2014
Posts: 176
Location: Bavaria, Germany
Oh, I see. Well yes that is what I was looking for, namely something for which one could search or choose one's ''own'' memory address, then plug it in, and then get some sort of indicator with respect to that address, thanks.
collect, analyse, categorise. "Mathematics - When tool-assisted skills are just not enough" ;) Don't want to be taking up so much space adding to posts, but might be worth mentioning and letting others know for what games 1) already some TAS work has been done (ordered in decreasing amount, relative to a game completion) by me and 2) I am (in decreasing order) planning/considering to TAS them. Those would majorly be SNES games (if not, it will be indicated in the list) I'm focusing on. 1) Spanky's Quest; On the Ball/Cameltry; Musya; Super R-Type; Plok; Sutte Hakkun; The Wizard of Oz; Battletoads Doubledragon; Super Ghouls'n Ghosts; Firepower 2000; Brain Lord; Warios Woods; Super Turrican; The Humans. 2) Secret Command (SEGA); Star Force (NES); Hyperzone; Aladdin; R-Type 3; Power Blade 2 (NES); Super Turrican 2; First Samurai. (last updated: 18.03.2018)
MESHUGGAH
Other
Editor, Experienced Forum User, Published Author (2615)
Joined: 11/14/2009
Posts: 1241
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
NES TASer of 2013NES TAS of 2013NES TAS of 2012NES TAS of 2011
Regarding the lag indicator, you can also add a marker text for TAStudio in case the game has too many lags and overlaps with original lag frames. Maybe you can even color it differently.
PhD in TASing 🎓 obsoletes TASes ⏱️ guardian of the vault 🔥 uses black magic 🧙
Darth Marios
He/Him
Experienced Forum User
Joined: 5/11/2015
Posts: 95
I've tried to run newest BizHawk, but i always get the same error: it say Visual C++ 2012 runtime is missed. I've installed both 2.0 and 2.1 prerequisites, and also that 2012 runtime manually, but BizHawk still give me that error. Why?
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
Version 1.13.2 has been released! Downloads: https://github.com/TASVideos/BizHawk/releases/tag/1.13.2 Changelog: http://tasvideos.org/Bizhawk/ReleaseHistory.html#Bizhawk1132
  • It is a maintenance release compatible with Windows XP 32-bit
  • Fix Lua related crashes
  • Update GLideN64 plugin to latest master branch
  • Update mGBA core to latest 0.6 branch
  • TAStudio updates and fixes
Make sure to run the updated prerequisite installer: https://github.com/TASVideos/BizHawk-Prereqs/releases/tag/1.4
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting. If TASing is meta-play, TASVideos Movie Rules are meta-meta-play!
Experienced Forum User, Published Author (2045)
Joined: 9/17/2009
Posts: 4871
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
GBA TASer of 2010
https://ci.appveyor.com/project/zeromus/bizhawk-udexo/build/artifacts On the interim build site, it says
Artifacts older than 6 months will be deleted after June 17th, 2018. For more details see Artifacts retention policy.
Is that a concern for this project, or nah it's fine?
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
Version 2.3 has been released! Downloads: https://github.com/TASVideos/BizHawk/releases/tag/2.3 This release features a new core for emulating the ZX Spectrum Another new core is GBHawk (Gameboy and Gameboy Color) Updated GLideN64 plugin to latest master branch Updated mGBA core to latest 0.6 branch Many other core and UI fixes and updates. See the release notes for more details http://tasvideos.org/BizHawk/ReleaseHistory.html#Bizhawk23
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting. If TASing is meta-play, TASVideos Movie Rules are meta-meta-play!
Experienced Forum User
Joined: 4/17/2017
Posts: 25
Any plans on updating the N64 core to the latest?
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
arkazal wrote:
Any plans on updating the N64 core to the latest?
Everyone knows it needs to be done, and no one has the time. For the reference, the proper approach is making it a submodule, and porting over our changes within a fork, so we could in future update the core on a whim. zeromus has the commits that need to be reapplied, it just takes someone with the time (and basic skills).
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting. If TASing is meta-play, TASVideos Movie Rules are meta-meta-play!
Experienced Forum User
Joined: 4/17/2017
Posts: 25
feos wrote:
so we could in future update the core on a whim.
:O N64 emulation is still in development? I thought it was pretty dead. I would love to see better N64 emulation one day, but I know it's a very pesky console to emulate. But even getting the most recent core into Bizhawk would be something :)
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting. If TASing is meta-play, TASVideos Movie Rules are meta-meta-play!
PikachuMan
He/Him
Experienced Forum User, Limited User, Published Author (14)
Joined: 9/12/2009
Posts: 1510
Location: Wichita
Don't know how to get unlicensed PSX ISOs to work, and no, a GameShark is not the way. We could use a modding device as a boot file, but it's very experimental.
A Gameboy saveram splitter/combiner tool will be very useful for the 1st gen and 2nd gen Pokémon games.
Experienced Forum User
Joined: 5/12/2009
Posts: 746
Location: Brazil
Hey, Guys! I was playing Super Metroid and noticed there's a kinda big delay in the response from the emulator after pressing the button on Joystick. I tried both the Snes9x core and Bsnes core and had what seemed the same result. I then closed Bizhawk and tried Snes9x 1.51 and the difference was big in that regard. It's like Snes9x 1.51 gives me a 1 frame of input lag, but Bizhawk gives me 4 frames or something like that. Is there any way I can minimize that?
Experienced Forum User
Joined: 9/12/2014
Posts: 502
Location: Waterford, MI
With so many features wanted for bizhawk, it could seem overwhelming on where to begin and thus turn down motivation. The solution? Schedule time for everyday for x feature and set a start time and end time. And do it even if you don’t feel like it. It’ll be on your todos with a specific time to help stay consistent. Just a tip. I don’t do it because I’m worried about my electric bill. And am saving for laptop to solve that.
Editor, Experienced Forum User, Published Author (2799)
Joined: 5/15/2007
Posts: 3821
Location: Germany
Gameboy TASer of 2015NES TAS of 2013Gameboy TASer of 2011Gameboy TASer of 2010
I'm interested in creating a Super Mario Land 2 romhack using MooJelly. (Click green button to download, extract until you get Moojelly.zip, extract that and run the .exe, load a SML2 ROM and change stuff, then patch it.) The patch ROM created by it didn't run in Bizhawk(Gambatte) but in VBA it runs fine. I was curious why it is that way..?
Editor, Experienced Forum User, Published Author (44)
Joined: 6/22/2005
Posts: 973
MUGG wrote:
The patch ROM created by it didn't run in Bizhawk(Gambatte) but in VBA it runs fine. I was curious why it is that way..?
It might help to know what types of changes you made (new graphics, new levels, etc.).
Current Projects: TAS: NES Lemmings. Wizards & Warriors III. Other: Zook Man ZX4 ROM map.
Editor, Experienced Forum User, Published Author (2799)
Joined: 5/15/2007
Posts: 3821
Location: Germany
Gameboy TASer of 2015NES TAS of 2013Gameboy TASer of 2011Gameboy TASer of 2010
I added a few wall tiles and patched it. It doesn't seem to matter what you do, the problem probably occurs as long as you add any tile at least once and then patch it. But I have also made an IPS file. http://www.mediafire.com/file/iif6uywg88bwh3a/Mario+2+Patched.ips You can use LunarIPS to apply it to a Super Mario Land 2 (UE) v1.0 ROM to create the patched ROM.