BizHawk Emulator Development


Experienced Forum User
Joined: 8/3/2009
Posts: 149
Thanks. I haven't rested Genesis on bizhawk, but if all those options are available in Bizhawk, then there's no need to mess with add ons or hacks of ancient emulators :P My initial concern was mostly for Saturn and Sega CD.
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
Bizhawk's current core for Genesis doesn't have any notion of what mnemonics it executes -> no debugger or tracer.
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: 8/3/2009
Posts: 149
I see. Thanks for the suggestions then.
Pokota
He/Him
Experienced Forum User
Joined: 2/5/2014
Posts: 776
Is there a setting that I'm missing, or does BizHawk not support externalized settings files for controllers? Or am I looking for an ini file when I should be looking for something else? I run both vanilla Biz and ircluzar's RTC mod, and Biz doesn't write setting changes unless it closes cleanly, so this is something that I'd value knowing the answer to.
Adventures in Lua When did I get a vest?
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
i don't know what "externalized settings files for controllers" means. All the settings go in one file. As youve discovered, it doesnt save the settings unless it closes cleanly. Config > Save Config is what you're looking for.
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
Would be nice if programs save their config when the settings have been changed.
Editor, Emulator Coder, Experienced Forum User, Site Developer
Joined: 5/11/2011
Posts: 1105
Location: Murka
I don't see that as a particularly desirable feature. This way, you can always force kill and eliminate any not yet saved bad settings in case the application get in a funny/corrupted state. On the other hand, if the config file is always open and constantly being written to, (and not just on successful quits), there's an increased risk of getting the config file into a corrupted state.
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
It might be an option, to save config per any save of changed settings.
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!
Pokota
He/Him
Experienced Forum User
Joined: 2/5/2014
Posts: 776
"externalized settings files for controllers" Effectively, if I change my controller settings for a certain core from the default, I would like to see that saved to disk when the controller settings are set and not when the program closes cleanly. As I run the Real-Time Corruptor mod at times, I find value in not having to reset my controllers after the inevitable "The game has become so corrupt it's broken BizHawk" crash (especially given that RTC defaults to X360 buttons and I don't use my pad if I don't have to). If this already happens, what file is that so I know what to keep a backup of between versions?
Adventures in Lua When did I get a vest?
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
natt wrote:
This way, you can always force kill and eliminate any not yet saved bad settings in case the application get in a funny/corrupted state.
Which can also be done by deleting/backing up the config file.
natt wrote:
On the other hand, if the config file is always open and constantly being written to, (and not just on successful quits), there's an increased risk of getting the config file into a corrupted state.
It doesn't have to be kept open.
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
The way bizhawk's configuration and config persistence system works right now, there's no way we can tell that a setting has been changed. Configuration persistence would have to be coded specially when each config dialog is closed, and then it would be haphazard and unpredictable. Don't count on bizhawk ever working that way. I'm not sure the way it works now is really very great, but since I can save the config any time I want manually, I don't mind it much.
Experienced Forum User
Joined: 5/22/2014
Posts: 4
Any chance for using Xbox gamepad Home button (glowing thing) as a hotkey?
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
Just commited that feature. That button is weird, it takes special programming.
Experienced Forum User
Joined: 8/3/2009
Posts: 149
I have a couple of suggestions/requests for the cheat dialog. 1) As someone that makes a lot of cheats, this causes me minor annoyances. You know how an active cheat is highlighted in light-blue? Well, when you click on a cheat to select it to either turn it off or edit it, it gets dark-blue. Problem is, you can't tell if that cheat is on or off when that happens. If you only have a couple of cheats on the list, that is fine, but not when you have dozens or hundreds. It gets chaotic sometimes when you're RAM searching and you need to add hundreds of results to see which is the one that works. Would it possible to implement a checkmark or something next to the cheat-name signaling that cheat is enabled? Sort of like the VBA cheat dialog: 2) Also, would it be possible to make the cheat dialog remember the last "Domain / Size / Display As" option I selected? Personally I only use 1-2 Byte, and Hex and I constantly have to pick them every time I open the emulator. --- And a final thing, I've encountered this glitch. I can't quite recreate it, but it happens often. Sometimes if I close the emu with the cheat dialog open, next time I open the emu, the cheat dialog starts like this: Doesn't happen all the time, but it happens.
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
add all 3 items to github bug tracker, but dont expect remembering the last domain to work. it's kind of incompatible with multi-system emulator conecpts. For #1, we might show an icon instead of a checkbox
Experienced Forum User
Joined: 8/3/2009
Posts: 149
Added. Icon is just fine.
Samtastic
He/Him
Experienced Forum User, Published Author (109)
Joined: 11/30/2012
Posts: 755
Is there a way I can copy tasmovieeditor frames into tastuido psxhawk frames? I want to see if I can fix dooty's failed Abes Oddysee 100% improvement and I want to transfer his input from tasmovieditor into TASstudo.
Enjoys speedrunning, playing and TASing Oddworld games! Has TASed: Oddworld: Abe's Oddysee in 12.06.13 (with Dooty) Oddworld: Adventures II in 20.03.78 (with Dooty) Oddworld: Abe's Exoddus 100% in 2:08:28.4 (with Dooty) Oddworld: Abe's Oddysee 100% in 1:05:01.65 Oddworld: Abe's Exoddus in 37:18 Oddworld: Abe's Exoddus in 37:15 Oddworld: Abe's Exoddus 100% in 2:!5.44.12 Oddworld: Abe's Oddysee any% in 13:01.3 Oddworld: Abe's Oddysee any% in 12:59.95 Oddworld: Abe's Oddysee 100% in 1:04:16.27 Currently working on: Oddworld: Abe's Exoddus 100% (version 3.0)
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
When drag dropping Super Mario Advance 4 - Super Mario Bros 3 (U) into Bizhawk 1.11.1 and dropping user movie #22117331642628592 from Kurabupengin's user movies, EmuHawk throws a fatal exception and needs to close. Also, that same message says in the end "depending on the error, it may or may succeed". This does not happen in 1.8.3.
dekutony
He/Him
Experienced Forum User, Published Author (802)
Joined: 11/23/2013
Posts: 2117
Location: Guatemala
Did you tried using the (J) (v1.1) ROM? :P
Here, my YouTube channel: http://www.youtube.com/user/dekutony
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
The problem is new "tilt" controls have been added to the GBA core and old movies can't be loaded. Someone more familiar with the movie system will have to chime in here to say how this was intended to be handled. Old movies can be fixed readily with a regex and text editor though
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
When doing one of the following glitches in Dragonball Z Legacy of Goku in mGBA core in Bizhawk 1.11.1, the core will die until you reboot it. By die I mean, it will not work even after loading a savestate from before the glitch. - Press A+B or Start+B on the main menu's options screen, when Exit is highlighted. - Press A+Start in the debug menu, when Go to Map is highlighted. (To bring up the debug menu, go to options, highlight Text speed, hold L+R+Up and press A) Doing one of the two would cause the standalone mGBA emulator to close the game with an error or crash. I wonder why the whole core dies.. EDIT: By the way, I fixed the problem from my previous post by using the Japanese ROM with which the movie file had been created.
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
There seems to be a problem with Dragonball Z Legacy of Goku 2's sleep mode. See related post. When activating it in standalone mGBA, it will cause strange behavior explained in the linked post. When doing it in mGBA core in Bizhawk, it will awake from sleep mode even though I haven't pressed L+R+Select at all. Same thing seems to happen in the game's sequel, Buu's Fury.
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
Ever since I started using it, Bizhawk keeps crashing on me especially if I try to do certain things one after the other or when using a luascript. For example, when I play DBZ Legacy of Goku in mgba core, load a script, search for addresses, open the memory viewer and then either reset or core-reset, the emu crashes on me pretty much always. ---- When I do memory search and have got some results, but it's in 4 byte form and I want to switch to 1 byte, it doesn't refresh the results. So I click the refresh button but it seems to wipe my results completely. ---- In memory search, I can only do searches for one memory domain, apparently (which is a major drawback compared to VBA). ---- If I want to switch to a different memory domain in memory search, it does not update it until after the search is reset. It is a confusing thing for memory search to do because it doesn't indicate that it updated the memory search because it still shows the name of the old one when you switched. ---- One column of addresses is cut off in the memory viewer. http://i.imgur.com/JrpGyno.png ---- When I switch to a domain other than IWRAM (in a GBA game) in memory search, then close memory search and reopen it, it's set to IWRAM again. I would prefer if it stayed where I set it. ---- EDIT: When using lua "event.onloadstate(function() stuff end)", the stuff will be executed after the frame of the loaded state, apparently. I'm not sure if this is true and if it's a problem, but I wanted to note it here. ---- When loading a lua script, and double-clicking on the corresponding row on the lua console window to toggle the script, the toggling doesn't seem to work as it still says "1 script (1 active)" as before I double-clicked. When this happens and I click on the little refresh icon, an error occurs:

System.NotImplementedException: Die Methode oder der Vorgang ist nicht implementiert.
   bei BizHawk.Emulation.Cores.Nintendo.GBA.MGBAHawk.get_InputCallbacks()
   bei BizHawk.Client.Common.LuaFunctionList.Remove(NamedLuaFunction function)
   bei BizHawk.Client.EmuHawk.LuaConsole.ToggleScriptMenuItem_Click(Object sender, EventArgs e)
   bei BizHawk.Client.EmuHawk.LuaConsole.RefreshScriptMenuItem_Click(Object sender, EventArgs e)
   bei System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
   bei System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
   bei System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
   bei System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
   bei System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
   bei System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
   bei System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
   bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   bei System.Windows.Forms.Control.WndProc(Message& m)
   bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   bei System.Windows.Forms.ToolStrip.WndProc(Message& m)
   bei ToolStripEx.WndProc(Message& m)
   bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
MUGG wrote:
Ever since I started using it, Bizhawk keeps crashing on me especially if I try to do certain things one after the other or when using a luascript
Can you try doing those things with a core other than mgba?
MUGG wrote:
When I do memory search and have got some results, but it's in 4 byte form and I want to switch to 1 byte, it doesn't refresh the results. So I click the refresh button but it seems to wipe my results completely.
The tooltip for the reset button says "A new search needs to be started in order for these changes to take effect" because that's just how it is. Changing the byte size with an active search would have to be a feature request that I wouldnt count on seeing soon
MUGG wrote:
If I want to switch to a different memory domain in memory search, it does not update it until after the search is reset. It is a confusing thing for memory search to do because it doesn't indicate that it updated the memory search because it still shows the name of the old one when you switched.
It _did not_ update the memory search, and it still shows the name of the old one to prove it. Also it throws up the red reset button. This all makes sense to me. What do you want, alarm bells and blinking lights? Popup boxes full of warnings?
MUGG wrote:
In memory search, I can only do searches for one memory domain, apparently
There's a "Combined WRAM" memorydomain for the VBA core, we need to add it for mGBA. Please bugtrack it.
MUGG wrote:
One column of addresses is cut off in the memory viewer. http://i.imgur.com/JrpGyno.png
Good bug, please bugtrack it
MUGG wrote:
When I switch to a domain other than IWRAM (in a GBA game) in memory search, then close memory search and reopen it, it's set to IWRAM again. I would prefer if it stayed where I set it.
Good feature request, please bugtrack it. This one frequently annoys me too.
MUGG wrote:
There seems to be a problem with Dragonball Z Legacy of Goku 2's sleep mode. See related post. When activating it in standalone mGBA, it will cause strange behavior explained in the linked post. When doing it in mGBA core in Bizhawk, it will awake from sleep mode even though I haven't pressed L+R+Select at all.
Good bug and research, please bugtrack it.
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
Can you try doing those things with a core other than mgba?
It looks as though the problem I mentioned with double-clicking on the lua script entry in the lua script console only happens when using the mgba core. It doesn't happen in vba-next. When double-clicking on the entry in mgba, and then hard resetting, the emulator crashes. But it doesn't in vba-next, because when double clicking the entry in the lua console, the "(1 active)" updates correctly to "(0 active)" back and forth, whereas in mgba it does not. I can't test for other problems that seem to occur at seemingly random times. Thanks for your other replies. I will bugtrack the things you tell me to, but I will need to find the page where I can do it. The sleep mode thing may be because of how mgba handles sleep mode. Endrift has posted an explanation: http://tasvideos.org/forum/viewtopic.php?p=418979#418979