Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2730
Location: US
Occasionally I look around for any homebrew or tech demos that I missed testing, and I recently came across this Yoshi's Island tech demo that I hadn't seen before and was broken in GBAHawk: It turns out I was not doing rotation and scaling correctly in this case, so I went back and redid that code. With a better understanding how it was supposed to work, the rewrite was more accurate and also quite a bit faster since I got rid of the floating point arithmetic. It gives a couple fps boost to games that use mode 7 stuff. Now the demo works correctly: I'll probably go back and do the same clean up for rotation and scaling of sprites, might get a small performance boost from that too. Now that I finally have a Metroid Zero Mission cart I will be testing that game and associated ROM hacks.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2730
Location: US
Testing with Metroid Zero Mission is going well. I already verified a couple of the ROM hack runs and the 100% run. Two of the hacks require a 32MB card which I don't have, so I'll to get one before I can do them. On the baseline run I actually got a desync. Haven't figured out the cause yet, but I can see the desync point pretty clearly and the error would have to be fairly large (~50 cycles) to get a desync in that spot. I would think such a large error at this point can only be caused by something with audio DMA, but nothing obvious sticks out at me so far. Zero Mission also revealed an emulation error in the ppu blending effect. This was an an easy fix but pretty surprising this case didn't come up before. Banjo Kazooie continues to reveal bugs as well. It turns out I missed a case of dma pausing another dma resetting access timing to be non-sequential. This happens to occur in Banjo Kazooie and was causing failures in my testing. After fixing that I can finally get past loading and the intro with correct timing. I tested up to about 4 minutes into the run and it seems RNG is still good. So maybe that game is good now, but I can't get correct enemy movement so far trying to manipulate RNG with jumping so not sure yet.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2730
Location: US
GBAHawk version 2.1.0 is released! This version comes with numerous accuracy improvements along with a small but noticeable performance improvement. With this release I was able to add console verified check marks to Shrek 2 and the baseline run of Metroid Zero Mission. I should be able to do the low % zero mission TAS this week along with the pending 6 scrolls ROM hack. I tried resyncing Fire Emblem with RetroEdit's script but it desynced at the same point as when I tried manually, so I guess RNG for that game will prevent verification of the current run as is. I also tried Turok Evolution but desynced due to RNG as well. RNG is also preventing me from making progress on Banjo Kazooie. I'm going to focus on fixing some of those RNG issues as well as making a few test TASes of different games that I haven't previously used for testing. Still a lot of work and verifications to do, with Mega Man Zero and Battle Network Series, various Castlevanias, Zelda Minish Cap and Mario Super Star Saga. I'm hoping the most tricky and time consuming emulation issues are behind me so I can focus more on the TASes.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2730
Location: US
I haven't had any luck with RNG and resyncing runs, so I'm working on a few more small accuracy issues. One of these is a known error in sprite rendering where too many pixels are rendered. I made a test for this and also a similar thing that happens when hblank interval is free: Fixing it was pretty simple, but it's possible I'll need to redo sprite rendering in the future if there are other side effects. The next thing I'll do is fix the weird behavior involving DMA in ROM area.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2730
Location: US
GBAHawk v2.1.1 is released! This version adds a sync setting for EEPROM timings, along with various bug fixes. This allows me to add a check mark to DKC 101%. I also fixed a bug in reading from BIOS while not executing in BIOS region, which is supposed to return the last fetched instruction from BIOS. I was not properly reading the correct byte when only byte sized data was asked for. I found this out when trying to figure out a desync in Fire Emblem. It turns out this game has a bug in calculating enemy movement when enemies are on the edge of the map and attacking characters also close to the edge of the map. In this case the game ends up reading from an incorrect address (in this case 0x00000007) which is in BIOS region. After fixing this I was able to get a resync of Fire Emblem to work on console. All the actual moves are the same with only small RNG adjustments needed, so I'll go ahead and give that one a check mark too. I'm half way through the same process for Sacred Stones as well, so that one will be next up for verification. It's pretty satisfying to get the Fire Emblem runs working, as when I first started testing it I couldn't even get past the first start press. Good Progress!
Dimon12321
He/Him
Active player (480)
Joined: 4/5/2014
Posts: 1126
Location: Ukraine
I wish I could have such a strong motivation to deal with my stuff! Great work once again! I went through your repository and the console-verified GBA publications and, I guess it makes sense to clarify the things. I assume a gbmv input file recorded in an elder version of GBAHawk (say, 2.06) will playback in the latest version, so there's is no point in marking them in the repository. However, you mentioned RNG manipulations for some of the games to become verified, like you had to add some blank frames here and there to make the movie successfully play on a real GBA. Does it make sense to store these input files as well, for example, in "gbmv files verified" folder? Even if this final step of input adjustment has to be done for each verifying device independently, this at least will give verifiers the right whereabouts where to add or remove blank frames.
TASing is like making a film: only the best takes are shown in the final movie.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2730
Location: US
Dimon12321 wrote:
I wish I could have such a strong motivation to deal with my stuff! Great work once again! I went through your repository and the console-verified GBA publications and, I guess it makes sense to clarify the things. I assume a gbmv input file recorded in an elder version of GBAHawk (say, 2.06) will playback in the latest version, so there's is no point in marking them in the repository. However, you mentioned RNG manipulations for some of the games to become verified, like you had to add some blank frames here and there to make the movie successfully play on a real GBA. Does it make sense to store these input files as well, for example, in "gbmv files verified" folder? Even if this final step of input adjustment has to be done for each verifying device independently, this at least will give verifiers the right whereabouts where to add or remove blank frames.
The verified movie files are played back as is, there is nothing added to adjust for console after the fact. By RNG adjustment I mean compared to the original move file on either VBA / BizHawk. The only exception to this is that occasionally I need to adjust the time stamp on the input file that GBI uses, but this is a limitation of the resolution of GBI not an accuracy issue. I do check some previously console verified movies with each new version release to make sure I didn't accidently break anything, so yeah movie files should all be forward compatible. Your post reminded me that there is one exception to this though. Feline currently desyncs in current versions. At first this didn't make much sense to me since it seemed to work on console just fine. But it turns out I dumped the movie with an old version of the GBI input script that didn't a include start up offset. By some weird coincidence of error cancellation this let it work on console. When I dump it with the current script it desyncs the same as on emulator. So at some point I need to find some frames to save to get a new movie and remedy this.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2730
Location: US
I have updated the release of GBAHawk 2.1.1 to fix a save state error when using EEPROM or FLash mappers. This error has apparently been present all along, and happens when loading a state where saving to cart is happening. So, I strongly recommend updating to the the current release of 2.1.1 to avoid sync errors.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2730
Location: US
RetroEdit pointed out a serious bug in v2.1.1 which prevented using the default core without a pre-existing config file. I fixed this issue and with a couple other minor fixes released 2.1.2. I also backported the fixes to 2.1.1, to avoid having to simply delete it altogether.