Alyosha
He/Him
Editor, Emulator Coder, Expert player (4041)
Joined: 11/30/2014
Posts: 2875
Location: US
I've been pretty busy lately, but I'm still trying to make progress where I can. Recently I became aware of some relatively new tests: https://github.com/hades-emu/Hades-Tests Turns out GBAHawk was failing several of them, but for relatively simple reasons. I fixed those up (but one of them fails on hardware, dma latch test 4, so that one will remain failing, I opened an issue about it.) Also recently many new tests were added to the mGBA test suite, mainly focused on the serial port. I fail most of those for some reason, I think for them to work I need to have a link cable plugged in but not connected to a second GBA, maybe, I haven't had time to look into any of the details. Serial port is still low priority (its good enough for pokemon coop diploma, and that's probably one of the only use cases), so I'll kick that can down the road. More interestingly, there is a ppu background display test that fails. I thought I had that pretty well nailed down so I was pretty surprised it wasn't quite right. Anyway always more to do.
Accepting hardware donations for console verification! See my homepage for details: https://tasvideos.org/HomePages/Alyosha Monetary donations also accepted via gofundme: https://gofund.me/82aabaee
YoshiRulz
Any
Editor, Emulator Coder
Joined: 8/30/2020
Posts: 143
Location: Sydney, Australia
I went to check which suites you have, but there are no testroms in the repo—please tell me you're not running them manually.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Hey look buddy, I'm an engineer. That means I solve problems. Not problems like "What is software," because that would fall within the purview of your conundrums of philosophy. I solve practical problems. For instance, how am I gonna stop some high-wattage thread-ripping monster of a CPU dead in its tracks? The answer: use code. And if that don't work? Use more code.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (4041)
Joined: 11/30/2014
Posts: 2875
Location: US
By mGBA suite I mean this one: https://github.com/mgba-emu/suite which has many many tests in one ROM, testing many aspects of the GBA. More generally, there are many suites of GBA tests scattered around. Some of them are represented here: https://emulation.gametechwiki.com/index.php/GBA_Tests but there are others. By running them manually I assume you mean as opposed to some automated process, then yes. I'm also aware that my documentation of any of this is poor to non-existent, but there's always just too much to do.
Accepting hardware donations for console verification! See my homepage for details: https://tasvideos.org/HomePages/Alyosha Monetary donations also accepted via gofundme: https://gofund.me/82aabaee
Hâlian
He/Him
Joined: 12/26/2024
Posts: 1
Location: Central Florida
A new GBA emulator with a focus on hyperaccuracy? Hell yeah. I actually found out about this by checking the Emulation General Wiki's article on GBA accuracy tests, since a friend of mine is working on a Fire Emblem 8 hack and the community's guide to hacking on the decomp suggests using Nocash, which dates it. (Also, hi. I'm surprised I didn't already have an account here.)
Alyosha
He/Him
Editor, Emulator Coder, Expert player (4041)
Joined: 11/30/2014
Posts: 2875
Location: US
Hâlian wrote:
A new GBA emulator with a focus on hyperaccuracy? Hell yeah. I actually found out about this by checking the Emulation General Wiki's article on GBA accuracy tests, since a friend of mine is working on a Fire Emblem 8 hack and the community's guide to hacking on the decomp suggests using Nocash, which dates it. (Also, hi. I'm surprised I didn't already have an account here.)
Hi! For game / hack development, nocash has a lot of good tools. For Fire Emblem in particular, it does rely on open bus emulation to be accurately emulated for console accurate enemy movement near the bottom of the screen as I've detailed in a previous post. Not sure if nocash has this or not. If you want something more modern and accurate for game / hack development you might also consider Mesen, which has a relatively new GBA core and a lot of cool tools. GBAHawk is research and TAS focused, so admittedly has limited dev tools. This post reminds me that I should add some more info to the Github page instead of just the one line ReadMe I've had since the start.
Accepting hardware donations for console verification! See my homepage for details: https://tasvideos.org/HomePages/Alyosha Monetary donations also accepted via gofundme: https://gofund.me/82aabaee
Alyosha
He/Him
Editor, Emulator Coder, Expert player (4041)
Joined: 11/30/2014
Posts: 2875
Location: US
I finally got a dev board, this one: ( https://shop.insidegadgets.com/product/gba-32mb-512kbit-flash-save-flash-cart/ ) to test flash save timing. This was opened as an issue as GBAHawk fails test 002 of the flash save tests from here: https://github.com/jsmolka/gba-tests . However the test writes and then immediately reads from Flash, without giving time for the write to process. I asked JSMolka about this, who confirmed that the test itself was only ever tested against a EZ flash and not original hardware. So, I got the dev board to check, and indeed test 002 fails on hardware (the board has an sst39vf512 which is accurate to original carts.) I'll revise the test so that test 002 takes a reasonable amount of time and see if that version passes on the dev board as well. That will confirm it is indeed a timing issue. EDIT: With further testing updating all tests to wait for an expected time for writes to occur, the save fails on hardware on test 6 (I wasn't giving it long enough, with enough time to write all tests pass.) This is a good example of why testing on correct hardware is important.
Accepting hardware donations for console verification! See my homepage for details: https://tasvideos.org/HomePages/Alyosha Monetary donations also accepted via gofundme: https://gofund.me/82aabaee
Alyosha
He/Him
Editor, Emulator Coder, Expert player (4041)
Joined: 11/30/2014
Posts: 2875
Location: US
After a lot of additional testing, I believe I finally have a complete implementation of the LDM^ glitch. Implementing this involved basically having an extra copy of the entire ARM mode code path for the cpu to execute when the glitch is activated to avoid performance penalties, but aside from that it wasn't that bad. The glitch is somewhat simpler than originally thought, as it really just amounts to OR'ing regs together in certain instances, there are no cases of both banked and user mode reg's being written to at the same time. Also the STM* version does not seem to trigger the glitch. With that done I can start thinking about how to properly fix the mGBA suite background test.
Accepting hardware donations for console verification! See my homepage for details: https://tasvideos.org/HomePages/Alyosha Monetary donations also accepted via gofundme: https://gofund.me/82aabaee
Skilled player (1042)
Joined: 1/9/2011
Posts: 239
I donated some funds to pick up Dragan Ball Advance Adventure (JP) for the GBA.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (4041)
Joined: 11/30/2014
Posts: 2875
Location: US
WarHippy wrote:
I donated some funds to pick up Dragan Ball Advance Adventure (JP) for the GBA.
Wow thanks! I got one total cost $31.86, should be testing it next week.
Accepting hardware donations for console verification! See my homepage for details: https://tasvideos.org/HomePages/Alyosha Monetary donations also accepted via gofundme: https://gofund.me/82aabaee
Alyosha
He/Him
Editor, Emulator Coder, Expert player (4041)
Joined: 11/30/2014
Posts: 2875
Location: US
Following up on DBZ Advance adventure. The run desyncs at about 30 seconds in on GBAHawk. and in the same spot and same way on console. There are no lag frame differences to account for, so there was no resyncing, it just desyncs presumably due to some accuracy issues. The run also desyncs in current versions of BizHawk, but at a different spot further along. Link to video So it seems a run would have a chance of syncing if made on GBAHawk, but I don't know how to fix the current one or if it is fixable.
Accepting hardware donations for console verification! See my homepage for details: https://tasvideos.org/HomePages/Alyosha Monetary donations also accepted via gofundme: https://gofund.me/82aabaee
Skilled player (1042)
Joined: 1/9/2011
Posts: 239
Alyosha wrote:
So it seems a run would have a chance of syncing if made on GBAHawk, but I don't know how to fix the current one or if it is fixable.
Huh, okay. I’ll see if I can look into it later (might be a month or two until I get to a stopping point on my current project)
Alyosha
He/Him
Editor, Emulator Coder, Expert player (4041)
Joined: 11/30/2014
Posts: 2875
Location: US
I'm starting to make progress again here, and there are several new discoveries that have cropped up recently to direct work towards. One of the things that needed fixing is how / when BG scroll parameters are updated in modes 0 and 1. This is most prominent in Advance Wars where the text boxes don't display correctly if you latch the values. This is a common emulator issue, also recently fixed in Ares by png183, who provided some helpful notes about the fix. So I fixed this, and made some other miscellaneous updates thanks to a new venison of Flevoriux's ram access timing test and some helpful comments from Sour (Mesen author also now working on GBA.) I still have a few other ppu related details to work out, nothing too major though. Right now the big driver for accuracy improvements is an (NSFW) test rom called CiroteMark. This test basically times how many cycles it takes to run an intro cutscene that has various complicated ppu effects. It then gives you a count of how long it took compared to how long it takes on console. Current best is Mesen, with +133. GBAHawk 2.2.0 was -1650. As of now I am at -906. I suspect ppu details account for all of the error.
Accepting hardware donations for console verification! See my homepage for details: https://tasvideos.org/HomePages/Alyosha Monetary donations also accepted via gofundme: https://gofund.me/82aabaee
Alyosha
He/Him
Editor, Emulator Coder, Expert player (4041)
Joined: 11/30/2014
Posts: 2875
Location: US
Making substantial progress on various emulation details. - Fixed open bus emulation so that the BIOS dumper that relies on open bus emulation and correct BIOS locking behavior now works. - Fixed how rotation and scaling parameters are latched into the BG layers, which fixes display in Pinball Tycoon. - Fixed invalid sprite mode 3 which should behave like sprite mode 0, which effects a few games. The above were all pointed out by Sour in the Cirotemark issue, but none of them actually effect that test. I have been making some progress there though. I used my save state loading technique to try to narrow down where errors occur. Right now things seem to go awry in an area where HBL DMA's are happening to OAM. These occasionally collide with sprite evaluation, leading to stalls in dma execution. It turns out my conditions for disabling sprite evaluation when HBL free is set were slightly wrong. I was stopping OAM reads right at the end of allowed evaluation time, when what should happen is that all OAM reads for a sprite are completed once started. With that I'm now at -1508 on the test (I said I was at -906 above but it turns out that iteration had some bugs.) Now that I can break into the code wherever I want it's really only a matter of time until I narrow down what the other problems are, it's just a really laborious process.
Accepting hardware donations for console verification! See my homepage for details: https://tasvideos.org/HomePages/Alyosha Monetary donations also accepted via gofundme: https://gofund.me/82aabaee

1748108415