Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
I finally figured out Incredibles enough to get it to sync. The game initially turns on gamepad IRQs which makes playback difficult, but it turns them off again after the first input. So I found that having an extra start press while the game title is loading turns off the gamepad IRQs before they cause issues with the rest of the run. The code it runs at the IRQ seems like it is not entirely benign though and messes up sync for the rest of the existing movie file from RetroEdit. GBAHawk 2.0.2 had a bug where the interrupt wasn't firing at all, so the desync seems unavoidable. I resynced what I could manually, the video is below. It seems like, barring anything else being wrong, Incredibles should be console verifiable in GBAHawk 2.0.3. Link to video I also decided to test Super Monkey Ball Jr as the run is short and the 3D seemed like a good test of timing. The TAS desyncs very badly, but I got a test run of level 1 going and it made it through that. The game uses EEPROM, but doesn't appear to be too sensitive to timing. Comparing the video to emulator, it looks like the EEPROM is going somewhat faster on console, so the game spends a few extra frames on the title screen, but it doesn't effect the rest of the run: EDIT: video removed, superceded below. So good progress. I have a couple more things I want to do before releasing 2.0.3, but now that I finally figured out Incredibles I can start making progress again.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
I finished up verifying Wario Land 4. All resyncs were pretty simple. 4/4 runs verified. I'm going to try Metroid Fusion again, then move on to Metroid Zero Mission.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Link to video I was able to properly verify Metroid Fusion, so that run is verified, finally completing one of my original goals. I am working on 100% as well. The resync was done using RetroEdit's resyncing tools, which are incredible and saved me hours of effort. They should greatly speed up future verifications where simple adjustment for lag / loading times are all that is needed. EDIT: 100% done as well, cool!
GoddessMaria
She/Her
Reviewer, Experienced player (868)
Joined: 5/29/2009
Posts: 519
Location: Hell...
Alright, for my small contribution to this... I did a test of Pokémon using my Japanese copy of Ruby version to check the integrity of capability with console. I did intentionally choose to go with bad (dry) battery for this as my cart's battery is dead. From power-on up to saving, everything worked without a hitch. Unfortunately, syncing using the exact inputs from the movie broke and led me to manually check and count the frames that the inputs were off from that point and adjust the movie accordingly... Original movie: GBMV Encode (original): Link to video After having added 75 frames to the movie, the inputs for soft resetting worked, but then that also had to be tweaked in order to get it resynced. Once the Start input was put back in its correct place, everything else worked correctly as intended. Console Fixed movie: GBMV Encode: Link to video
Current projects: failing at life
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Cool! How many such soft resets would there be in a complete run? 75 frames is an inexplicably long time, not sure what's causing that, but I guess it's manageable as long as it's consistent.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
The quest to find the bug that was keeping Shrek 2 from being console verified is over! Today I found that it was a rather simple issue with timing of the case where a DMA pauses an already running DMA of lower priority. This also fixes the desync with Metroid Zero Mission. Link to video With that, I have no TASes known to desync due to emulator accuracy issues. I have to do some work to verify the fix in all edge cases, but it fixes the two desyncs and doesn't break any existing TAS, so it seems solid. At the same time I also redid part of the DMA loop, which gave a ~5% speed up due to skipping a lot of steps when no DMA is running. It's not much but I'll take every fps I can get. Once I have everything tested and verified good I'll release v2.1.0. Now that Shrek 2 is no longer stuck in the back of my mind I can focus on the long list of relatively less important edge cases like undefined / implementation defined cpu behavior, running DMA in decrement mode in ROM region, running FIFO DMAs very close together, etc. I also tried to verify Donkey Kong Country but the EEPROM timing was way off, no small or even relatively large change to the baseline timing could possibly fix it. I'm not sure what I'll do about such cases yet. Maybe just use extra blank frames since saving only happens at the very start and very end of the run, but I'd much rather have something cleaner. Anyway finally time to test some new runs!
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
I finished up verifying Metroid Zero Mission runs thanks to RetroEdit's resync script greatly speeding up the process. The new Metroid Fusion Memory Corruption run also worked on console so that was cool. That's all runs of GBA Metroid games verified along with ~50% of associated ROM hack runs, good progress. Now I will try to fix some runs where RNG doesn't work.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
I'm having no success getting any other runs to sync for games I have. Here's a quick summary: Fire Emblem: desyncs in second stage, doesn't seem fixable fixed in 2.1.1 Fire Emblem Sacred Stones: desyncs about half way through the run in the same fashion as the first game. fixed in 2.1.1 Banjo Kazooie: I can't fix the RNG of the enemies, so damage boosts don't happen. Rayman Advance: Syncs about half way through with some manual effort, but then breaks. Fixed, new run submitted. Advance Wars 2: Seems like it might sync in emulator but desyncs in a strange way on console, the game polls input in a weird way. Mario vs. Donkey Kong: See below Turok Evolution: bad enemy RNG in first stage. New run submitted, syncs on console. Mega Man Battle network 2: Bad encounter RNG So yeah, definitely hitting a road block in terms of resyncs. I did manage to console verify the Donkey Kong Country 101% run though: Link to video It turns out I had a wrong EEPROM setting which was preventing sync at the start. After that I needed to adjust timing of EEPROM writes to be about 10% faster than the GBA Tek baseline to get it to sync. GBAHawk version 2.1.1 will have a sync setting to account for this. Eventually I'll add a similar setting for Flash, but that is more complicated so just EEPROM for now. Some time ago RetroEdit sent me a resync of Donkey Kong Country 2, but I don't currently have a cart to test it, seems like it should work though.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
https://tasvideos.org/UserFiles/Info/638446788869509673 With a bit better understanding of how the lag resync script works, I was able to get a good resync of Mario Vs Donkey Kong. Unfortunately it doesn't work on console because the save time is just way too long on my cart. As far as I can tell it's like 50% longer than the stated maximum on the data sheet, which is causing sync issues. My cart uses the same Flash chip as Sonic Advance, so I'm not sure why the timings are so different, but perhaps after 20 years this is just what you get.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Link to video With some considerable effort I was able to get Fire Emblem to work on console after all! I should get the Sacred Stones run done some time this week as well.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Here is a video and movie file for a complete test run of Super Monkey Ball Jr. Master stages. It is console verified, but quite a bit slower than the published run (which doesn't sync at all.) I had previously tested one level but wanted to follow up with at least a complete test run since I was previously unable to get the skip in level 4 to work. Link to video https://tasvideos.org/UserFiles/Info/638464781749776967 I won't be working on a complete new run, at least not any time soon, a working test run was my goal and that's good enough for me.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Link to video Here is a test run of the first level of Megaman and Bass GBA. This game uses the other variety of EEPROM (8kb while the other games I tested use 512b.) As it turns out my cart has very different timings compared to the other 2 EEPROM verifications I did so far. Those were -9000 or so on the cycle timing offset while this one is +28000. This value seems pretty stable at least. Right now the only other 8kb cart I have is Ty 2, so I'll have to go back and check the timings of that one more carefully to see what kind of agreement I get.
Dimon12321
He/Him
Editor, Reviewer, Experienced player (597)
Joined: 4/5/2014
Posts: 1227
Location: Romania
I recorded a small TAS of Duke Nukem Advance: User movie #638491602391815310 The game features unusual usage of hardware. The sound chip participates in calculation and doesn't play music during the gameplay. Besides, the framerate is uncapped. So I think it will be a good accuracy test for GBAHawk, if you have the game around.
TASing is like making a film: only the best takes are shown in the final movie.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Dimon12321 wrote:
I recorded a small TAS of Duke Nukem Advance: User movie #638491602391815310 The game features unusual usage of hardware. The sound chip participates in calculation and doesn't play music during the gameplay. Besides, the framerate is uncapped. So I think it will be a good accuracy test for GBAHawk, if you have the game around.
Woah that's really interesting! I don't have a cart right now, but I'll be sure to get one when I can and give this a try, thanks!
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
It turns out sparky's SNES run can be almost directly used in the GBA version with some file editing. Having done so I managed to get past Cold Man and verified that the zip glitches also work on the GBA version. I didn't keep track of RNG so I eventually ran out of Ice Wall, but I console verified up to where I got in Astro Man's stage: Link to video Cold Man didn't have the same RNG so I had to redo part of the fight, and there are some small changes needed where the screen being slightly smaller led to some desyncs in hitting enemies, but other then that and fixing some minor desyncs the inputs are sparky's. Pretty convenient that the port matches so closely. I'm not sure if I'll work through all the necessary RNG manipulation to get the complete run to sync, it would be funny if a SNES run got verified on a GBA first though.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
I went back and tried Sonic Advance runs again, so far I managed to get the Tails run to work without much issue, not sure what I was doing wrong before. I'll try the rest of them as well. EDIT: nope other runs don't sync, maybe tails worked because it used the bios? not sure. Link to video
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Currently relevant re-sync notes: Sonic Advance: Runs that didn't use BIOS seem to desync due to RNG at the pinball boss Sonic Advance 3: Desyncs on wheel boss. FF Tactics Advance: Lag inconsistent, so script doesn't work. Might sync with a large amount of manual effort. Banjo Kazooie: I can't fix the RNG of the enemies, so damage boosts don't happen. Advance Wars 2: Seems like it might sync in emulator but desyncs in a strange way on console, the game polls input in a weird way. Mega Man Battle network 2: Bad encounter RNG Bionicle: Desyncs half way through the run. Snood: Bad RNG on the third stage. On the up side, 3-in-1 runs and Ice Age resynced easily, so that's 4 additional verified runs. Now over 40 GBA runs are verified, almost as many as GBC and slightly more than GB. There are still several runs for which I am lacking carts but have GBAHawk runs or test runs: DKC2, Duke Nukem, and Power Rangers. Also I still don't have a 32 MB dev cart for some Metroid Zero Mission ROM hacks (they always seem to be out of stock.) So getting to 50 runs verified should be easy. Still no shortage of stuff to do, hopefully the percentage of resync failures stays low.
GoddessMaria
She/Her
Reviewer, Experienced player (868)
Joined: 5/29/2009
Posts: 519
Location: Hell...
So, after trying a couple of things... I have a few things to say. So, as I mentioned before... I did use a flash cart to test Sonic Advance (USA) and it desynced in Secret Base Zone Act 2, even with the updated movie and version of GBAHawk. Then I went and tried Pokémon Ruby using my cart that has a dead (dry) battery. This synced up to where the in-game save happens and it desyncs as it does the input too early. It took adding 75 blank frames there to get the rest of it synced up. Most recently, I attempted to get the Knuckles TAS to sync again using a genuine Japanese cart as they do work interchangeably with each other when played back on emulator alongside the save data working with each other. With that being the case, there shouldn't be any issues with playback... or, at least, what I had thought. Link to video As shown in the video, it still desyncs in Secret Base Zone Act 2 like with the flash cart in the same place. I'm perplexed what could be the reason for it failing on both flash and an authentic cart. Here's a video of the same movie being played back on the Japanese ROM using the movie file from GBAHawk v2.0.2 played back on v2.1.2. Link to video --- Also, an aside... something seems amiss when it comes to the way that the RTC seeds are being handled with Pokémon as they don't exactly generate correctly.
Current projects: failing at life
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
GoddessMaria wrote:
So, after trying a couple of things... I have a few things to say. Most recently, I attempted to get the Knuckles TAS to sync again using a genuine Japanese cart as they do work interchangeably with each other when played back on emulator alongside the save data working with each other. With that being the case, there shouldn't be any issues with playback... or, at least, what I had thought. As shown in the video, it still desyncs in Secret Base Zone Act 2 like with the flash cart in the same place. I'm perplexed what could be the reason for it failing on both flash and an authentic cart. Here's a video of the same movie being played back on the Japanese ROM using the movie file from GBAHawk v2.0.2 played back on v2.1.2. --- Also, an aside... something seems amiss when it comes to the way that the RTC seeds are being handled with Pokémon as they don't exactly generate correctly.
Manual flash timings aren't implemented yet, so you won't be able to match the run to your particular cart unless you rebuild the core with a different value. (The current value is 325, if you use 425 you get the desync as in the video.) I don't know anything about the internal workings of Pokemon, what are the specifics of what is wrong?
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
I tried resyncing the Snood "Puzzle' run but it desyncs in GBAHawk and on console the same way. The run only makes it to the third level before desyncing, and does not seem to be fixable. Depending on luck, a new console accurate run may be slower. I don't have time to work on it right now, so for the time being I'll just add it to the bad RNG list.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
I was finally able to test the DKC 2 run that RetroEdit had resynced a while ago. This run desyncs in Glimmer's Galleon. This appears to be a legitimate desync caused by emulation error. I checked trivial things already. Game does not seem sensitive to EEPROM timing. Inputs are checked at normal times, not close to frame boundaries which can sometimes effect sync. I think I found where it desyncs, and there is a frame in the area that is only about 50 cycles away from being a lag frame. It's not very likely I can track down the cause of the desync this deep into the run. I also currently don't have time to dive into trace logs and figure out what's happening. So, this one will probably remain unsolved for a while. Some mysteries still remain!
Joined: 11/24/2023
Posts: 13
Sorry if posting in wrong thread. Game & Watch Gallery 4 (USA) seems to fail linking together (Boxing 2P mode) in the newest GBAHawk. Is there anything I'm doing wrong? It's my first time using this emu for GBA link play.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
BigBoyAdvance wrote:
Sorry if posting in wrong thread. Game & Watch Gallery 4 (USA) seems to fail linking together (Boxing 2P mode) in the newest GBAHawk. Is there anything I'm doing wrong? It's my first time using this emu for GBA link play.
I haven't worked on linking in some time, so it's probably just broken for that game. I'll make a github issue for it, thanks for the report.
RetroEdit
Any
Editor, Reviewer, Player (169)
Joined: 8/8/2019
Posts: 152
BigBoyAdvance wrote:
Game & Watch Gallery 4 (USA) seems to fail linking together (Boxing 2P mode) in the newest GBAHawk. Is there anything I'm doing wrong? It's my first time using this emu for GBA link play.
I actually have tested all four multiplayer modes (Boxing Modern & Classic; Donkey Kong 3 Modern & Classic) in this game and they seem to work fine. I can think of one likely issue: G&WG4 is a single-pak game, so you need to go into the multi-disk bundler and load one copy of the game (which will be the primary GBA) and one copy of the GBA BIOS (which will be the secondary GBA).
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
I was finally able to test the Duke Nukem test run that Dimon12321 made. Works fine on console. Link to video