Posts for Alyosha


Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Making more progress on Linking. now GBC double speed mode linking is possible and seems to be fully functional. I also fixed a weird bug in Lego Racers where the game expected writes to palette data to fail during rendering (which incidentally also fixed the zilog screen in the CUTEDEMO I mentioned a few posts ago.) Kind of weird they wrote it that way, but whatever. @MUGG: can you try those games you mentioned and see if they are working for you in linked play?
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
MUGG wrote:
Does it mean we will be able to have 2-player Volley Fire and Tennis? Because those didn't work before.
Should be able to once I get all the bugs sorted out. It’s still not working 100% yet. Thanks for pointing these out though, it helps me test things.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Challenger wrote:
You did something that was "impossible" until now! Great stuff.
Definitely wasn't impossible, I literally copied gambatte which already has this capability. It does lay some foundation to extend beyond gambatte's capability though.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Done! There is a slim chance I'll work on Battletoads warpless later in the year if improvements to NESHawk are confirmed to make it work on console.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
One of the perks of working with BizHawk is that you can avoid the tedious and difficult tasks associated with making an emulator. It provides services for you to work with for audio and video and input, and all you have to do is implement the requirements correctly and everything just kind of works. With this in mind, I decided to see what would happen if I just hoped for the best and blatantly copied the dualgambatte code and replaced 'gambatte' with 'GBHawk' to try and get linked play support. And in only a couple of hours, it basically worked! The games aren't actually linked yet, they just run seperately for now. But basically everything else is up and running. I'm surprised how quick and painless the process actually was. Within the coming days I'm hoping to have the actual linking stuff going. I planned ahead for this so that part shouldn't be too hard. In the future it might even be possible to have 4 player support, but I'm not sure it would run at full speed. This opens the door for other things down the road like IR and maybe other addons. EDIT: Alright got it working! Initial tests are looking good. Everything seems to be nominally working without grinding to a halt in performance. needs a lot more testing of different cases though. It seems to have trouble when linking is initiated at the same time on both consoles, not sure if similar happens on hardware or not.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Congrats Sapphard and great work ! Too bad you spent so much of your time in frustration only to have a solution randomly pop up, but eh that’s how it goes sometimes. BizHawk is getting a lot of portability improvements lately, pretty cool.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I'm working on re-syncing ferret warlord's select glitch run in GBHawk. Originally the idea was just to see if the glitch behaves the same, but it turns out that metroid behavior is very timing dependent. It syncs different between BizHawk 2.3 and the dev build. So if there is a way to test runs directly on a GB, this is a good candidate to check emulation accuracy.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
creaothceann wrote:
There are also die scans here: http://siliconpr0n.org/map/nintendo/
Hey that’s a really cool website. Thanks!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I was curious about the GB boot rom, so I went to the source by neviksti. I opened the DMG ROM.txt file, but what I saw didn't resemble what the actual rom was supposed to look like, and it wasn't obvious to me how to extract the bits in the right order. So I went back to the original pics of the physical rom and stitched them together. But even then I couldn't figure out easily how the address decoding was supposed to work, and couldn't find any documentation on it. Luckily I found this site: DMG CPU decapped This had a better zoom which allowed me to see some extra structure, particularly here: So, you can see 16 lines going into the red box, which presumably is the address decoder for the actual mask rom (the yellowish blob in the top part of the image.) In the blue area, you can see 8 big doodads which probably hold the data bits. The important part is how they are grouped from lines in the mask rom. Each bit is pulled from 1 of 2 blocks. This is the hint I needed to decode the original text file. What you do is pull one bit from column 0 of block 1,3,5,7... to form a data byte. Then you go down one row and repeat to get the next data byte. Once you reach the bottom, then you go to column 1 of block 1,3,5,7.... Repeat until you are done with all 8 columns of those blocks. then go and do the same for blocks 2,4,6,8.... Anyway it seems straight forward after you look at that picture, but I stared at the raw bits for a couple hours without realizing what the algorithm was supposed to be. I didn't see this documented anywhere, so I guess it couldn't hurt to add a little detail to fill in neviksti's missing steps. It was an interesting exercise.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
My goodness these ports are horrible. That was a funny glitch shortcut though.
Post subject: Re: Updating the BizHawk Wiki
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Fortranm wrote:
Alyosha wrote:
NES accuracy tests: Most of the emulators listed in the table there are irrelevant for TAS (or now even for general use.) I'm thinking of simple removing them and leaving only NESHawk, PuNES, FCEUX, and adding Mesen. Also there are some relatively new tests to add. Any thoughts on this?
I actually like the fact that the list includes ancient emulators so that it's easy to see how much progress has been made through out the years.
I think there's a better way / place for historical stuff, but at any rate you can still find the complete table here. Realistically, Mesen has superseded basically every other emulator anyway. Once it gets TAS tools, the table itself will be more or less pointless.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Alright, I went over the obvious stuff and cleaned things up a bit. There will be more to come. A lot of the core pages only have one or 2 lines of info, maybe everything can be combined into one 'Core Information' page?
Post subject: Updating the BizHawk Wiki
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I was looking at the BizHawk wiki page and noticed it was quite out of date. I was thinking of taking some time and giving it a bit of an update. A lot of it is just adding new information or removing old and now incorrect information, but there are a few things I would like some feedback on: NES accuracy tests: Most of the emulators listed in the table there are irrelevant for TAS (or now even for general use.) I'm thinking of simple removing them and leaving only NESHawk, PuNES, FCEUX, and adding Mesen. Also there are some relatively new tests to add. Any thoughts on this? TODO page: It's a mess, mostly years old outdated stuff. What should be there now? Is it even needed? Core road map: I guess it's not even really a road map, just a list of ideas. Are there any concrete plans for any of them? Known Desyncs: last updated in 2014, is it still relevant? If anyone has any additional thoughts feel free to chime in.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Fixed a few bugs with GBC emulation so Slugfest intro now runs correctly and several more of Wilbert Pol's GBC variant tests pass. This also fixed a minor but very annoying bug in CUTEDEMO fish scene. So overall things are really moving forward quite well for GBHawk.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
It’s done! I’ve been watching the progress and it’s amazing what you were able to get out of this game. Yes vote!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
For some reason I thought the character only swinging the club forward without going back first looked really funny. I also liked hitting the flag pole. Yes vote
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Impressive improvement JigWally, especially since the previous 2 authors were AnS and McBobX.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
This is extremely impressive for a newcomer, nice work Geesk.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Subframe input on the piano roll isn’t happening. Subframe input using LUA is potentially not too hard on in house cores. But the resulting input stream would be a non-standard file, and would probably take a convincing test case to be acceptable. I’d be willing to work with someone who was interested in seeing this happen on NESHawk. Honestly though it’s probably only useful for pathological cases like SMB3. For other cases like SMS where you can inject NMIs anywhere you want , the results for games using the pause glitch would be pretty interesting (seeing 10 second intro screens go by in only a frame.) But the core isn’t ready for it, since it does scanline and not cycle level execution . So yeah, if someone was willing to do the scripting work I’d be up for modifying cores to make it possible .
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
You can now play HuC3 mapper games in GBHawk. RTC is untested and IR functions don't work, but the mapper runs just fine. Probably next will be MM001 or TAMA5.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Alright, a bit of exciting news, I finally figured out how to sync movies between Mesen and NESHawk! This took me many hours of frustration only to find that the problem was just a flag that was set differently between Mesen and NESHawk at power on. But now I should be able to do sync testing between them and look for differences in a way that actually makes sense. I already tried with Streemerz and the results are encouraging, perfect sync at similar power on state. And since Streemerz is known to be a ppu timing sensitive game, this brings fresh hope that it should be verifiable on console (once I re-make a run with the Mesen settings.) I also started implementing the new finds with $2006 writes, but so far it has minimal impact (since most games rightly stay away from this case.) But still it's an important accuracy improvement, with more edge cases still to come. Assuming these things sort out existing problems with getting basic runs to sync on console, it will finally be time to look ahead to the dreaded DMC DMA cases and games that use a reset sequence.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I'm quite bad at hearing audio issues, but generally speaking GBhawk audio will sound slightly worse then Gambatte (i.e. version 2.2.2) since GBHawk always ends frames on VBL boundaries, which is good for me since it makes logging and debugging stuff easy, but slightly worse for users since the main thing this impacts is audio fidelity.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Hey that's some really cool work there Cyorter! NESHawk and Mesen have slightly different startup timing, so any games that require ppu level sync are destined to fail for now. Not even due to accuracy really, the NES is just non-deterministic enough for these things to happen. NESHawk is tuned to a particular run of Battletoads, while Mesen is tuned to the most common case of the read_2004 test ROM I believe. Still that's a pretty good list of ones that work! Hopefully someone can take these and try them out on a console too. Awesome stuff!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
GBHawk now passes all of Wilbert Pols sprite timing tests, hurray! These tests combine x-scroll with sprites at various positions. They are pretty grueling. I'm pretty happy to have gotten them working. It means the most complicated part of the rendering pipeline is pretty solid. Now I can move on to some of the subtleties of the GBC and weird stuff that happens with LY. EDIT: Maybe this also fixes whatever is wrong with Mickey's Dangerous Chase.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
An interesting development has come up in NES emulation recently that might lead to better possibilities for console verification. You can read about the details here: http://forums.nesdev.com/viewtopic.php?f=3&t=18113 Basically, a bus conflict exists when writing to ppuaddr ($2006) which causes incorrect scrolling to happen. The most obvious effect of this is the background glitching out. But, a side effect of this is that it can effect sprite zero hit (since sprite zero hit requires a non-zero background pixel.) Any game that happened to run into this in the past would fail on console since it was completely unemulated. I'm thinking Battletoads warpless probably ran into this at some point, but haven't tested for sure. The results are still coming in but it seems completely consistent and easy to emulate. There is also the possibility that other registers (notably ppuscroll at $2005) might have similar difficulties. This is pretty exciting since console verification (at least from my perspective looking at the emulator side) was basically stuck without any leads, and now things are starting to open back up again. So expect some relatively big commits coming down the line. Overall very few games should be effected, but it may cause desyncs in some cases.