BizHawk Emulator Development


Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
When I hear "glitch" and see a game going off the rails (the illegal instructions), I immediately think the game is _supposed_ to be hanging, and only mednafen is getting it right. Does this glitch happen on hardware? Until I have proof that it does, I'm going to have to count mednafen as doing it correctly. Just because PSXfin and pSX can forge through the brokenness doesn't mean theyre right to do that. Also, tell me more about that glitch.
Banned User
Joined: 1/26/2014
Posts: 49
Location: United States
So the glitch is a "game end glitch" using arbitrary code execution originally developed by sockfolder... this was his long explanation of the glitch when first developed on PSXfin http://www.twitch.tv/sockfolder/c/3810968 Cosmo tested it on Playstation 2 Hardware https://www.youtube.com/watch?v=qc56JEd1qxA ForgoneMoose made a TAS of the glitch on PSXjin that was published http://tasvideos.org/2547M.html Then I went back and made some updates to sockfolder's work on PSXfin, so the glitch could be executed faster https://www.youtube.com/watch?v=l-boOA7nuHU So with the glitch now being able to be executed faster, I was thinking a new TAS should be made... we know that the glitch does produce some illegal opcodes even when performed correctly. The glitch has needed to be tweaked a bit from PSXfin to PSXjin to Playstation 2 Hardware, so I was expecting to have to tweak it a bit for BizHawk... that is why I was wondering if there is a way to see what illegal opcodes are being produced by the glitch so I can tweak it.
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
Thanks for the good info, but I think we need to see this proved on a PS1. There may be differences in how undocumented behaviour works on a PS2. Alternatively, the mednafen author might look at a savestate (taken in the latest mednafen) as long as there's assurances that the steps taken are identical to the PS2 glitch. Forget the other PS1 emulators. You can use mednafen to debug the game. Mednafen has a debug verbosity config value, im sure it will print illegal opcodes. I'm sorry to be so obstinate here, but this could turn into a political topic and I want to be clear that we're not going to do anything except what a PS1 actually does.
Experienced Forum User, Moderator
Joined: 8/4/2005
Posts: 5745
Location: Moscow, Russia
zeromus wrote:
I'm sorry to be so obstinate here, but this could turn into a political topic and I want to be clear that we're not going to do anything except what a PS1 actually does.
Why, nothing political about it. If something call itself a PS1 emulator it's only natural to expect it does what a PS1 does. If it were a PS2 emulator one would expect it to match PS2's behavior. Makes perfect sense to me; not sure if there's room to argue otherwise.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
moozooh wrote:
If something call itself a PS1 emulator it's only natural to expect it does what a PS1 does.
Errrrrrrrrrrrrrr no.
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, Moderator
Joined: 8/4/2005
Posts: 5745
Location: Moscow, Russia
You aren't making a point there. That page tests emulators against the behavior of PS1, which absolutely strictly denotes that matching PS1 is the expected behavior. The fact that none of them can do it 100% means they're either flawed or incomplete, which all of them obviously are. It doesn't mean matching PS1 isn't the intention.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
I am, the point is, "other psx emulators do it" is not a proof. Having touched PSX emulation world quite a bit, I know it sucks hard.
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, Moderator
Joined: 8/4/2005
Posts: 5745
Location: Moscow, Russia
feos wrote:
I am, the point is, "other psx emulators do it" is not a proof.
I never said that. I said very clearly that "PS1 does it" is the only possible proof. Are you sober?
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Banned User
Joined: 1/26/2014
Posts: 49
Location: United States
zeromus wrote:
You can use mednafen to debug the game. Mednafen has a debug verbosity config value, im sure it will print illegal opcodes.
Okay, let me do some more tinkering with Bizhawk/Mednafen... but yeah, at some point the glitch should be confirmed on actual Playstation 1 hardware.
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
event.onexit(function()

print("Script terminated.")

end)
This is supposed to run when the script is stopped. In mGBA or VBA-Next, when double clicking on the lua console entry of the script, it will run the above code block (but the script is not truly terminated in mGBA. It will only suspend the script until you unpause it, not exit it. This behavior does not happen in VBA-Next.) In mGBA or VBA-Next, when the script is active and then dragging the lua file on the lua console window it will exit the script but not run the above code block. (Also, whenever you do this, it will create additional instances see issue 513.)
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 trying to investigate running an event in Mario & Luigi from anywhere, so I'm editing some memory addresses. When I edit addresses a certain way Bizhawk seemingly always crashes. Does it not like illegal opcodes or what is the cause? It crashing every 2 minutes and me having to open up hex editor and give it the right settings (domain, size) again then going to the right address again is very time consuming and frustrating. If anyone wants to research it: --- Mario & Luigi RPG (J), VBA-Next core Stand around anywhere, without talking to anyone or being in an event already. Then edit: EWRAM $4b6c (4 bytes) needs to be 1 This starts an event. EWRAM $4acc (4 bytes) needs to be 0x08239488 (it is shown as 88 94 23 08 in the hex editor, 1 byte sizes) for Bizhawk to seemingly crash consistently. ----------------------------------------- In memory watch, when adding a new watch, then entering an address, then switching to a different domain erases the address I had typed in. Would be nicer to keep it in and trim if necessary. ----------------------------------------- In hex editor, size 1, click on an address and type in order to edit it. If you type a new value then the red marker advances to the next address accordingly. But if you type in the same value the address already had, then the red marker does not advance until you have typed in a value not equal to the one of the current address.
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
1. this hangs mGBA. You say it crashes vba-next. This is a core problem, not a bizhawk problem. Cores may always go bonkers if you break games. 2. feature request this and don't hold your breath 3. thanks for figuring that exact description, i'd been butting my head against this for a while now and hadnt cracked it. Anyway, I just 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
2. --> https://github.com/TASVideos/BizHawk/issues/525 I found a little graphical bug (?), also in memory watch. https://github.com/TASVideos/BizHawk/issues/526 edit: looks like you fixed it already. As for event.onexit, I don't know what is the real problem and how it should be. There seem to be differences between how mGBA and VBA-Next handle things. There seem to be differences in what happens if you a) double click a lua console entry (a script) b) drag and drop a lua script that was already running onto the console or onto the client c) click the refresh button in the console Maybe I'll come up with some kind of table of what I can observe. I feel like a) b) c) should all terminate the script and restart it completely, in all cases. Right now doing a) in VBA-Next seems to terminate the script properly whereas in mGBA it only suspends the script until you restart it. When doing b) in mGBA it creates an additional instance of the script that should not be there. These instances are terminated only when you close the console and reopen it. And doing c) in mGBA has a chance of causing an exception error.
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
dont pay attention to what mgba does. it's broken. no further research into the lua console is necessary. we know it's confusing and we have a plan for how to improve it.
Experienced Forum User, Published Author (2045)
Joined: 9/17/2009
Posts: 4871
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
GBA TASer of 2010
Hey, how do you disable individual graphics layers for the GBA like how one can do so on VBA?
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
You begin by writing up a ticket for someone to add that feature
Experienced Forum User
Joined: 10/23/2009
Posts: 543
Location: Where?
Hello! I just tried Bizhawk, and dI love it! Good job to all the contributors! I just opened the N64 core with a N64 game, then went to the RAS search. I didn't find the Change count. It was hidden and I had to enlarge the size of it column.(Fresh install, never used it before). Is that normal? EDIT: Alright, I played a game that is not in the gamedb apparently, it's Hydro thunder, for N64. After starting a race, it hangs: the frame counter keeps increasing, as the lag counter too. Honestly, I'm not sure if it's a good dump, nor if it does work on mupen plus. I figured I should at least mention the missing game in the database here. EDIT: Let met mess with the setting before(core, graphics, etc.). I'll write my obserbvations here after
Editor, Experienced Forum User
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
niamek wrote:
Hello! I just tried Bizhawk, and dI love it! Good job to all the contributors! I just opened the N64 core with a N64 game, then went to the RAS search. I didn't find the Change count. It was hidden and I had to enlarge the size of it column.(Fresh install, never used it before). Is that normal? EDIT: Alright, I played a game that is not in the gamedb apparently, it's Hydro thunder, for N64. After starting a race, it hangs: the frame counter keeps increasing, as the lag counter too. Honestly, I'm not sure if it's a good dump, nor if it does work on mupen plus. I figured I should at least mention the missing game in the database here. EDIT: Let met mess with the setting before(core, graphics, etc.). I'll write my obserbvations here after
Known Good SHA-1 hash: Hydro Thunder (USA) SHA1:F5D5054F97DA0D68857F9824130147EC38EE7A76 MD5:54F43E6B68782E98CAABEA5E7976B2BE The game does indeed crash after starting a race. Core: DynaRec RSP: Z64 HLE Video: Glide64 Other settings may work? Haven't tested further.
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
1. That's weird. It doesnt seem to be a bug any more. Check it again in the next release. 2. I see three hydro thunders in the gameDB. Bizhawk tells you if its known to be a good dump in the bottom left corner.
Experienced Forum User
Joined: 10/23/2009
Posts: 543
Location: Where?
1.: I will. 2.: I got this: Hydro Thunder (U) [!] SHA1:925A23A9814D523999E945BA33546FB774F93DB6 MD5:22AAD544C062FB8A2DC6B2DEB32DE188 And I can assure that I see a SMB block coin on the bottom left. Concerning Hydro Thunder, I messed with everything one by one(resetting the setting before moving to the next setting to mess), and none works. I didn't try different combination thought. I figured it would be only one of these thingy that I had to change. Note that it hangs even during the demo.
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
The SMB block coin means it wasn't found in the gameDB. It's a question mark, so we don't know if it's a good or a bad dump. Since it's malfunctioning for you, it's probably a bad dump.
Editor, Experienced Forum User
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
zeromus wrote:
The SMB block coin means it wasn't found in the gameDB. It's a question mark, so we don't know if it's a good or a bad dump. Since it's malfunctioning for you, it's probably a bad dump.
I tested against a known good dump, same issue as reported. So it's not entirely the fault of the ROM. Though, niamek's ROM is probably bad/invalid. Green Checkmark means "known Good" Dump.
When TAS does Quake 1, SDA will declare war. The Prince doth arrive he doth please.
Experienced Forum User
Joined: 10/23/2009
Posts: 543
Location: Where?
Yeah, as I said, I don't know if it's a good one, I just know that it's not on the gamedb. I noticed the green mark indeed for the other games. ^^
Experienced Forum User
Joined: 8/3/2009
Posts: 149
Hey zeromus, about that Sega CD RAM search. Is there anyway to search all the RAM areas and not segments of it? The reason is because you don't always know which one to search, so you end up searching all of them and wasting a lot of time. Can there be an option to make one search on all the RAM areas?
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
the general solution of searching several memory domains is probably not going to happen anytime soon, i think it is quite incompatible with our architecture. however we are able to make a core expose several memory domains merged quite easily, and if you dont mind having to do some math to turn them back into normal memory domain addresses, then that will work for you. make a feature request in either case but dont hold your breath for the former option