BizHawk Emulator Development


Post subject: BizHawk 2.2.1 Released
adelikat
He/Him
Emulator Coder, Published Author, Site Admin (4250)
Joined: 11/3/2004
Posts: 4655
Location: Tennessee
TASer of 2010NES TASer of 2010DS TASer of 2010Arcade TAS of 2010NES TASer of 2008NES TAS of 2008Funny TAS of 2008TASer of 2007NES TASer of 2007Funny TAS of 2007
Version 2.2.1 has been released! Changelog: http://tasvideos.org/Bizhawk/ReleaseHistory.html#Bizhawk221 Downloads: https://github.com/TASVideos/BizHawk/releases/tag/2.2.1 Includes major accuracy improvements to various cores such as SMS/Colecovision, SG-1000, and TI-83
Pimpin' ain't easy My Homepage My TAS projects
Experienced Forum User, Published Author (1907)
Joined: 8/29/2014
Posts: 297
GBA TAS of 2018TASer of 2016SNES TASer of 2016PSX TAS of 2016TASer of 2015Rookie of 2015SNES TASer of 2015
Would it be possible to add an option that uses hotkeys to do something like switch which folder BizHawk loads savestates from? For example, instead of always loading from the folder named "State", you would be able to toggle through it loading from "State", "State1", "State2", etc. Usually I just set up a bunch of folders with savestates in them and manually rename whichever one I need at the time to "State" so I'm not restricted to only 10 savestates when not using Tastudio, but being able to do something like that with hotkeys would be much more efficient.
Experienced Forum User, Published Author (26)
Joined: 2/16/2012
Posts: 280
I second the idea, though maybe with a different implementation. I find that I'm constantly running low on crucial save states for practice and testing. I either have to apply them judiciously, or make separate folders according to the stage of game. Really, the problem is just no straightforward way of expanding the number of "QuickSave" style slots available. Rather than working with folders, it might be easier to implement "sets" of save states, with a button to cycle between them. The set just corresponds to another digit on the actual savestate files this way.
adelikat
He/Him
Emulator Coder, Published Author, Site Admin (4250)
Joined: 11/3/2004
Posts: 4655
Location: Tennessee
TASer of 2010NES TASer of 2010DS TASer of 2010Arcade TAS of 2010NES TASer of 2008NES TAS of 2008Funny TAS of 2008TASer of 2007NES TASer of 2007Funny TAS of 2007
Omnigamer wrote:
Really, the problem is just no straightforward way of expanding the number of "QuickSave" style slots available. Rather than working with folders, it might be easier to implement "sets" of save states, with a button to cycle between them. The set just corresponds to another digit on the actual savestate files this way.
Yeah, I've had this idea before. I was thinking you have prev/next buttons that toggle the "sets" or groups of 10. So you press next, now it is slots 10-19, then 20-29, etc. At that point you would not be restricted in the total number of slots.
Pimpin' ain't easy My Homepage My TAS projects
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 is a small graphical glitch I encountered while TASing on Bizhawk-Gambatte (ver 2.2). I load a state A (this is the starting point). I advance to a certain frame*. I load state A again. The next frame, it shows the glitched sprites. The frame after that, it is normal again. If I advance to a different frame, and then load state A, it doesn't happen. I think other effects that I saw was that my character and enemies turned invisible. I'm noticing this problem especially in the current level I'm in (The Smurfs GB, level 11 "The Cliff"). I turned off the luascript and it still happens. No memory freezing or lua memory editing is going on. Seems to be graphical only. ___ *This frame will always produce the problem. The chance of landing on such a frame is really high in The Smurfs GB, level 11.
Experienced Forum User, Published Author (2045)
Joined: 9/17/2009
Posts: 4871
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
GBA TASer of 2010
Is there a way to cap the amount of memory BizHawk is using? I'm getting something like after a while of opening, closing then reopening TAStudios over and over. Currently the only "fix" is to close and reopen the emulator.
PikachuMan
He/Him
Experienced Forum User, Limited User, Published Author (14)
Joined: 9/12/2009
Posts: 1510
Location: Wichita
The transfer to disk function is supposed to happen when the set value is reached. But when I set it to 4 GB, it causes slowdown when there's less than 1 GB of memory not being used.
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/4/2016
Posts: 67
Will the environment for building Waterbox cores ever be changed to something a bit more user-friendly to configure? I've run into few minor quirks with Waterbox cores and I'm unable to do much outside of providing reproduction steps as setting up a Waterbox build environment required obtaining and properly configuring an obscure cross-compiler with minimal documentation that you can only get access to by joining an IRC and asking. I don't have any plans on developing cores, but it'd be nice to be able to submit minor fixes (I'm assuming Natt would still want to build the binary for security and integrity reasons, but it could at least allow for others to submit minor bugfixes)
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
Who can tell the future? I can only tell you that not even I have ever built a waterbox core, so it's in a pretty bad situation. I think he does it in linux, maybe the setup steps spew shit all over your system like gnuware is prone to do, so it can't even be readily uploaded?
Experienced Forum User
Joined: 5/4/2016
Posts: 67
I probably should have phrased that question as "are there any plans to make it more user friendly" rather than "will it be made more user friendly". Anyways, thanks for the response. I had looked into it a bit but setting it up required setting up midipix which appears to be an obscure cross-compiler. You then needed to merge in Natt's fork of mmglue and build the entire compiler. I found a bit of info on setting it up but it was way more effort than it was worth to submit minor bugfixes.
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 in the middle of converting and re-writing my Yoshi Topsy-Turvy script, from VBA to Bizhawk. I stumbled on a problem, where I want to draw an axis on top of Yoshi, depending on the current angle the game is tilted in. But after I finished the re-write it looks different. The x-axis looks off by a small margin. I noticed using this gives a different result in both emulators:
Language: Lua

angle = 0 -- as read from memory when not tilting AngleDegree = angle * 1.40625 -- converting from 0-255 to 0°-360° RPD = 0.0174532925 -- radians per degree print(math.cos(-(AngleDegree+90)*RPD))
VBA prints: 1.79489673697e-009 Bizhawk prints: 1.79489673696339E-09 Is this a bug?
Pokota
He/Him
Experienced Forum User
Joined: 2/5/2014
Posts: 776
Biz is using a longer degree of precision.
    VBA prints: 1.79489673697e-009 
Bizhawk prints: 1.79489673696339E-09 
Do they draw right when Yoshi's standing in the same spot?
Adventures in Lua When did I get a vest?
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
It doesn't matter where Yoshi is standing. The line gets drawn depending on the angle the game is tilted. In both screenshots above, the angle is 0. Please note I'm not very good with math things. I achieve much of what I want through trial and error.
Language: Lua

-- draw line from yoshi to this destination (*80 factor is how far the line goes) des1 = math.sin(AngleDegree*RPD)*-80 des2 = math.cos(-AngleDegree*RPD)*80 des3 = math.sin((AngleDegree+90)*RPD)*-80 des4 = math.cos(-(AngleDegree+90)*RPD)*80 gui.drawLine(Xscreen,Yscreen,Xscreen+des1,Yscreen+des2,0xFFFFFFFF) -- below yoshi gui.drawLine(Xscreen,Yscreen,Xscreen-des1,Yscreen-des2,0xFFFFFFFF) -- above yoshi gui.drawLine(Xscreen,Yscreen,Xscreen+des3,Yscreen+des4,0xFFFFFFFF) -- left of yoshi gui.drawLine(Xscreen,Yscreen,Xscreen-des3,Yscreen-des4+1,0xFFFFFFFF) -- right of yoshi (this is the line that looks off, but by adding +1 it looks as before)
I added +1 and it looks like before. This is good enough for my purposes.
Experienced Forum User
Joined: 5/4/2016
Posts: 67
There's no way built in to balance the volume so different cores output at around the same volume, right? There's a massive difference in volume levels between some cores (gambatte is super loud, bsnes is fairly quiet, GBHawk is really quiet, etc) which can get quite irritating when streaming or recording using external software as you have to re-balance the audio around the core (and if you don't do it ahead of time, you can blow your ears out from the volume differences).
Experienced Forum User
Joined: 7/17/2012
Posts: 469
Location: Switzerland
Is it planned to update the Saturnus core? Bizhawk has version 0.9.44.1, Mednafen is at 0.9.48 version, with a lot of fix for the Saturnus core.
My Citra 3DS rerecording movie files test repositery: https://cutt.ly/vdM0jzl Youtube playlist "Citra Tests": https://cutt.ly/AdM0wg9 http://www.youtube.com/user/phoenix1291
Experienced Forum User, Published Author (2045)
Joined: 9/17/2009
Posts: 4871
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
GBA TASer of 2010
I'm not sure if it's just the build I'm using, or it's like this for others, but for some reason, if I opened BizHawk and do nothing, according to Task Manager, it uses like 30% CPU. As soon as I load a GBA game (not sure of others) and pause, it immediately drops to like 2% usage. So here's 2 questions: 1. Anyone have this problem? 2. How does that even work?
Editor, Emulator Coder, Experienced Forum User, Site Developer
Joined: 5/11/2011
Posts: 1105
Location: Murka
jlun2 wrote:
I'm not sure if it's just the build I'm using, or it's like this for others, but for some reason, if I opened BizHawk and do nothing, according to Task Manager, it uses like 30% CPU. As soon as I load a GBA game (not sure of others) and pause, it immediately drops to like 2% usage. So here's 2 questions: 1. Anyone have this problem? 2. How does that even work?
The clock throttle eats a lot of CPU. The sound throttle eats very little CPU. The VSync throttle can eat a little or a lot of CPU depending on how jenga your video drivers are. For some reason that I can't quite remember right now, the clock throttle is always "used" when no game is loaded.
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
Lua functions wrote:
void gui.drawText(int x, int y, string message, [color? forecolor = null], [color? backcolor = null], [int? fontsize = null], [string fontfamily = null], [string fontstyle = null], [string horizalign = null], [string vertalign = null])
Language: Lua

while true do gui.drawText(50,60,"hillo",0xFF0000) emu.frameadvance() end
Isn't it supposed to be red text?
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
Looks like you forgot the alpha channel?
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!
Amaraticando
It/Its
Editor, Experienced Forum User, Published Author (182)
Joined: 1/10/2012
Posts: 672
Location: Brazil
TAS of 2015SNES TAS of 2015
In most emulators, the default (opaque) alhpa channel is 0, so it's not necessary to write it in the most significant bytes of the number. BizHawk oddly is the reverse: 0xFF is fully opaque and 0 is fully transparent.
Pokota
He/Him
Experienced Forum User
Joined: 2/5/2014
Posts: 776
MUGG wrote:
Isn't it supposed to be red text?
You need to assign the Alpha byte's value as well, so instead of 0xRRGGBB it's 0xAARRGGBB (Yes, this catches me off guard at times as well)
Adventures in Lua When did I get a vest?
Experienced Forum User
Joined: 12/7/2015
Posts: 3
is there any chance to make possible multiply the internal resolution of the playstation and saturn, just like ePSXe and uoYabause does?
Experienced Forum User, Published Author (26)
Joined: 2/16/2012
Posts: 280
I was browsing through this file because it's a good resource for console frame rates, but noticed that it hadn't been updated with info for a few of the recently added consoles, particularly N64 and Saturn. Does anybody have info for those?
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
Self-request: Add turbo mode getter to lua.
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!
adelikat
He/Him
Emulator Coder, Published Author, Site Admin (4250)
Joined: 11/3/2004
Posts: 4655
Location: Tennessee
TASer of 2010NES TASer of 2010DS TASer of 2010Arcade TAS of 2010NES TASer of 2008NES TAS of 2008Funny TAS of 2008TASer of 2007NES TASer of 2007Funny TAS of 2007
Omnigamer wrote:
I was browsing through this file because it's a good resource for console frame rates, but noticed that it hadn't been updated with info for a few of the recently added consoles, particularly N64 and Saturn. Does anybody have info for those?
this is a better resource. TASVideos uses these when determining movie times, they are not parsed out of a .bk2 file. The platform frames in Bizhawk are for display purposes, they are used to calculate movie times on the Play Movie dialog (the actual core may or may not run at precisely that framerate).
Pimpin' ain't easy My Homepage My TAS projects