BizHawk Emulator Development


Experienced Forum User, Published Author (2045)
Joined: 9/17/2009
Posts: 4871
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
GBA TASer of 2010
MUGG wrote:
In 1.11.6, I get this error consistently. I played a gameboy game.
System.InvalidOperationException: Lua surface is already locked: emu at
BizHawk.Client.EmuHawk.DisplayManager.LockLuaSurface(String name) at
BizHawk.Client.EmuHawk.GuiLuaLibrary.DrawNew(String name)
1. load luascript 2. close lua console while client is paused 3. drag and drop luascript on client If you close lua console while client is not paused, it doesn't give the error.
Hey, I remember getting something like that: Post #429629 http://imgur.com/ceVJHfR No idea why, but it "disappears" when I deleted everything and redownloaded BizHawk. It comes back every now and then however, and I have no clue why.
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
Another problem is happening to me right now in 1.11.6. I open Bizhawk, load a gb game and go to GB>GPU viewer, it throws an exception. GPU Viewer worked yesterday, now it doesn't anymore even after restarting the emu.
************** Ausnahmetext ************** System.Exception: 0, 255, 0 ist kein gültiger Wert für Int32. ---> System.FormatException: Die Eingabezeichenfolge hat das falsche Format. bei System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) bei System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) bei System.ComponentModel.Int32Converter.FromString(String value, NumberFormatInfo formatInfo) bei System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value) --- Ende der internen Ausnahmestapelüberwachung --- bei System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value) bei System.Drawing.ColorConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value) bei BizHawk.Client.EmuHawk.ToolManager.InstallCustomConfig(IToolForm tool, Dictionary`2 data) bei BizHawk.Client.EmuHawk.ToolManager.Load[T](String toolPath, Boolean focus) bei BizHawk.Client.EmuHawk.MainForm.GBGPUViewerMenuItem_Click(Object sender, EventArgs e) bei System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e) bei System.Windows.Forms.ToolStripMenuItem.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.ToolStripDropDown.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 System.Windows.Forms.ToolStripDropDown.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
delete your ini file. I thought that was only happening when you used an old ini file on a new version
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
Well I did carry over my ini from 1.11.5 to 1.11.6 but that was ages ago. I last used GPU viewer successfully when we talked about Gremlin 2 on irc. Deleting the ini fixed 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
Ok I looked into compiling Bizhawk so now I can test the latest build for bugs. outdated About info When opening Help > About, it brings up that one joke screen with flashy animations. In the top left corner is a "BizBox" button (for some reason) which brings up a real About window. But that window tells it's 1.11.4 from December 20 2015. Lua console bug The bug I described here still exists. Capture OSD inconcistencies OSD does not behave consistently between saving avi and saving a screenshot. I mentioned this to zeromus already.
Capture OSD off
Capture OSD on
Saving AVI/GIF
Game screen only
Game screen + game padding + client padding + all text rendered by lua (except gui.text) or the client
Saving Screenshot
Game screen + game padding
Game screen + game padding + client padding + all text rendered by lua (including gui.text) or the client
I'm saying that I think the way avi/screenshots are saved should be the same between "OSD on" and "OSD off". Also, I don't see why gui.text is treated differently. GB GPU viewer exception I stumbled across the exception I explained here on my interim build. I hadn't copypasted any ini file, but I did change some hotkeys/settings. When I find out what causes it I will post again. The GB GPU viewer did work right after I first started the interim build. After I ran the above tests, I opened it again and then it gave me the error.
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
I've explained to you why gui.text is different a billion times. It just is different, and will always be. It creates a label through the same system that the FPS and other stuff uses. If you don't like that, there's other functions for drawing text. If you dont like those other functions for drawing text, then write a bug about why they're deficient.
Experienced Forum User, Published Author (2045)
Joined: 9/17/2009
Posts: 4871
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
GBA TASer of 2010
MUGG wrote:
outdated About info When opening Help > About, it brings up that one joke screen with flashy animations. In the top left corner is a "BizBox" button (for some reason) which brings up a real About window. But that window tells it's 1.11.4 from December 20 2015.
What. I just checked now, and clicking Help > About gave me and no other screen. I'm on windows 10, if it means anything.
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
zeromus wrote:
It creates a label through the same system that the FPS and other stuff uses.
If it's the same as FPS/Framecount/Input display, then why are those displayed in the "Saving AVI, OSD on" case but gui.text isn't? And you haven't explained why gui.text differs between "Saving AVI, OSD on" and "Saving Screenshot, OSD on". And if you have, I can't remember. Here is the About I'm getting It seems it's only the 1.11.4 and December part that's out of date.
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
If you compiled the latest git code, it isn't from december 2015. its from april 2016 and contains a bug because there's 100000000000000 places dates and versions are written and it's impossible to keep them all up to date. gui.text is different between screenshot and av dump because gui.text gets cleared once a frame, at some point, and screenshots and av dumping each occur at different points, and if those points are in an unfortunate order, there's a mismatch. Don't make the mistake of trying to _understand_ this. It's all overly complicated and _broken_. There's no sense to it right now. I think the GB GPU viewer crash is related to your using a non-english operating system, which is always a mistake unless you just enjoy having buggy software (now I see why it happened for a russian guy too). I committed a fix for it, but I couldn't test it, since I don't enjoy having my OS show me WELKOMMEN DAS WINDOWS and then crash whenever I run anything.
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
Why don't you save version info to one place instead of 100000000000000 places? GB GPU viewer crash still happens on latest build, when saving avi, then reopening and opening gpu viewer. It happens because my directory has äöü characters in it. It doesn't happen when I save the avi elsewhere.
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
because it's hard. sorry, youll have to be more specific. I can't make it happen. which directory has the äöü in it? saving the avi where? It's hard to believe the gpu viewer cares what your directories are called. Avi codecs on the other hand might choke on äöü. After we smoke this out, you should stop using directories with spaces or äöü unless you really like hitting one crashing bug after another.
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 I save avi to C:\Users\Name that contains ö and space\Desktop then reopen emu, and open gpu viewer, it gives the error. Then I close emu, delete the ini, reopen emu and save avi to D:\ Reopen emu, gpu viewer works. The ö and space in the username wasn't my doing. I'm aware it causes problems and it has caused problems for me in other software, but I'm currently not willing to fix it. So if you say you're not going to bother fixing it, then so be it, I guess.
Editor, Experienced Forum User
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
MUGG wrote:
Ok I looked into compiling Bizhawk so now I can test the latest build for bugs. outdated About info When opening Help > About, it brings up that one joke screen with flashy animations. In the top left corner is a "BizBox" button (for some reason) which brings up a real About window. But that window tells it's 1.11.4 from December 20 2015.
This has been corrected in: https://github.com/TASVideos/BizHawk/commit/c575328350aa2a386448fc838fe5bf0cb055525e Though, this isn't that bad off persay. As Developer Builds does NOT use that file for actual releases.
When TAS does Quake 1, SDA will declare war. The Prince doth arrive he doth please.
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
MUGG wrote:
When I save avi to C:\Users\Name that contains ö and space\Desktop then reopen emu, and open gpu viewer, it gives the error. Then I close emu, delete the ini, reopen emu and save avi to D:\ Reopen emu, gpu viewer works.
Sorry, no bug here. Post the new gpu viewer crash stacktrace.
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
zeromus wrote:
MUGG wrote:
When I save avi to C:\Users\Name that contains ö and space\Desktop then reopen emu, and open gpu viewer, it gives the error. Then I close emu, delete the ini, reopen emu and save avi to D:\ Reopen emu, gpu viewer works.
Sorry, no bug here. Post the new gpu viewer crash stacktrace.
ok, I had restarted my computer this morning. I tried my steps on the same build I compiled (the one where you committed something about region/culture setting). Now the crash doesn't occur for avi saving, but for screenshot saving it does. I don't know why it changed. This is what I assume is the stacktrace. I took the liberty to translate german text to english, and censor out my username:
************** Exception text **************
System.Exception: 0, 255, 0 is not a valid value for Int32. ---> System.FormatException: the input character sequence had the wrong format.
   at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
   at System.ComponentModel.Int32Converter.FromString(String value, NumberFormatInfo formatInfo)
   at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
   --- end of internal exception stacktrace ---
   at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
   at System.Drawing.ColorConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
   at BizHawk.Client.EmuHawk.ToolManager.InstallCustomConfig(IToolForm tool, Dictionary`2 data) in c:\Users\name that contains ö and space\Desktop\BizhawkMaster\trunk\BizHawk.Client.EmuHawk\tools\ToolManager.cs:Zeile 329.
   at BizHawk.Client.EmuHawk.ToolManager.Load[T](String toolPath, Boolean focus) in c:\Users\name that contains ö and space\Desktop\BizhawkMaster\trunk\BizHawk.Client.EmuHawk\tools\ToolManager.cs:Zeile 161.
   at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
   at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ToolStrip.WndProc(Message& m)
   at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Also, when this message occurs and I open gb viewer a second time, it shows the gpu viewer window and an error message on top of it with this:

System.NullReferenceException: the target reference was not set to an object instance.
   at BizHawk.Client.EmuHawk.GBGPUView.ScanlineCallback(Int32 lcdc) in c:\Users\name that contains ö and space\Desktop\BizhawkMaster\trunk\BizHawk.Client.EmuHawk\tools\GB\GBGPUView.cs:line 366.
   at BizHawk.Emulation.Cores.Nintendo.Gameboy.Gameboy.FrameAdvance(Boolean render, Boolean rendersound) in c:\Users\name that contains ö and space\Desktop\BizhawkMaster\trunk\BizHawk.Emulation.Cores\Consoles\Nintendo\Gameboy\Gambatte.cs:line 366.
   at BizHawk.Client.EmuHawk.MainForm.StepRunLoop_Core(Boolean force) in c:\Users\name that contains ö and space\Desktop\BizhawkMaster\trunk\BizHawk.Client.EmuHawk\MainForm.cs:line 2839.
   at BizHawk.Client.EmuHawk.MainForm.ProgramRunLoop() in c:\Users\name that contains ö and space\Desktop\BizhawkMaster\trunk\BizHawk.Client.EmuHawk\MainForm.cs:line 525.
   at BizHawk.Client.EmuHawk.Program.SubMain(String[] args) in c:\Users\name that contains ö and spacel\Desktop\BizhawkMaster\trunk\BizHawk.Client.EmuHawk\Program.cs:line 295.
then emu closes. Edit: ok removed v
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
"loaded Assemblys" aren't needed.
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!
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
That first stacktrace doesn't have anything to do with a screenshot. The only part of this which makes sense is theres a certain similarity between screenshots and avi-writing. I dont think the situation is changed at all, I think its a complete random freak chance the bug has changed from screenshot associated to avi associated. In fact, I doubt it has to do with either at all and it's just a coincidence that it seems to be associated with avis or screenshots. The second stacktrace only happens if the GB core is completely malfunctioning. I found one other place where I needed to use an invariant culture, which might _work around_ your first problem. But considering the involvement of avi/screenshot is still a mystery, and the second problem... there's something else weird going on, I'm withholding it for now. Debugging further will require new information or teamviewering to your PC
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
MUGG wrote:
Looks like gui.text always has black stroked text regardless what the background color is or whether or not the background color is transparent.
Fixed. No bg parameter anymore for this function.
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
Just a request, but can these 2 boxes: Please allow higher values than 0xFF/255? It works nicely for small values, but for 4 byte numbers it's far too small.
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
it's a bug, write it up on github as a bug
PFMC84
He/Him
Experienced Forum User
Joined: 9/16/2015
Posts: 25
Location: Ireland
Anyone know roughly when the 1.11.7 update will be ready for release? :)
Editor, Experienced Forum User
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
Paddy wrote:
Anyone know roughly when the 1.11.7 update will be ready for release? :)
A while still.
When TAS does Quake 1, SDA will declare war. The Prince doth arrive he doth please.
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
Is it expected behavior if you run multiple lua scripts and they overwrite each other's values and functions? For example I have script A that says:
function text(x, y, text, color, style)
	if style==nil then style="regular" end
	gui.drawText(x, y, text,color,0x00000000,10,"Arial",style)
end
and script B:

function text(x, y, text, color)
	gui.drawText(x, y, text,color,0x00000000,FontTable[ Settings["MyFont"] ][1],FontTable[ Settings["MyFont"] ][2])
end
If I run script B and then A, script B font will be Arial size 10.
Amaraticando
It/Its
Editor, Experienced Forum User, Published Author (182)
Joined: 1/10/2012
Posts: 672
Location: Brazil
TAS of 2015SNES TAS of 2015
Make text local in both scripts.
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
suggestion: In hex editor when selecting multiple addresses and using "Find...", it should only search in the selected area.