Posts for Alyosha

Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
I finally redid my IRQ code, and the results are much cleaner and resolve a couple of issues. One issue is when IME was being checked which would have been hard to fix with my old code but is pretty naturally following the correct timing in the new code. The other is an edge case encountered in trading in pokemon where a serial IRQ was triggered at exactly the wrong cycle to skip an IME enable. The old code had no way to follow up on this and trigger it later, but its not a problem for the new code. Below is a video of pokemon trading in action. Link to video The linked core is able to keep up at 60 fps everywhere except saving. Other games like Advance Wars 2 also don't make it to 60 fps with multi-pak linking at all, as there is simply too much code running, but at least there are no linking errors. I have some more clean ups to do before making an official release. So far in my testing there are no regressions in test ROMs, games, or TASes, so that's good (you never really know what will happen when changing something fundamental like IRQs.) The last thing I want to do is figure out cancel-irq-ie.gba, which seems to be an issue of figuring what happens when flags/enables are being set/cleared at the same time.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
I released GBAHawk version 1.6.1 mainly as a bug fix release. A major bug was saving cart RAM twice, which obviously bloats the state size needlessly, especially when playing games with 256k RAM. Besides bug fixes I also added support for Warioware Twisted. I use a different control scheme than mGBA uses, at least in the BizHawk implementation. There, mouse position corresponds to angular rate (which is what the cart ultimately reads.) In GBAHawk mouse position corresponds to angular position. So you control the game with speed of mouse movement. I actually got a cart (JPN version) just to test this out. I think I captured the feel of the real game pretty well, hysteresis and all. That brings game compatibility up to where I want it for now. Next up is a rewrite of the IRQ handler.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
In the hide and seek level you can use your ghost to collect the gems and save several seconds.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
WhiteHat94 wrote:
I did an RTA run of the NES port last year, not sure how directly similar the versions are but figured I would mention it at least. https://www.youtube.com/watch?v=HNmJgGi-7zw
The games arent directly comparable, but yuour run did make me realize that i didnt consider death abuse, which would save me a lot of time in the third and forth dungeons, so thanks for posting.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
-superseded- Here is a console verified complete test run of the game. I was really happy the verification made it all the way to the end. It turns out there are some interesting tricks and glitches in this game. The biggest one is being able to hit enemies with multiple weapons at the same time. With some precise positioning this allows me to kill several bosses very quickly, including the last boss with only a single dynamite and sword slash. The next most important glitch is enemy despawn. Occasionally enemies simply won't spawn. The most important use of this is the Bat boss refight, where I manipulate him not to spawn which saves a lot of time since this version of the boss has greatly increased health. Also if you press up against a wall while going around a corner, you get a small but noticable boost. This saves a few frames at a time, which adds up to a lot over the course of the run. Routing is pretty fixed, since you need items in each previous dungeons to complete the next one, and they are all far apart. The only real routing choice is whether or not to get the powerup and red key from the desert cave. It takes 29 seconds to cross the desert without going to the cave, and 76 seconds with the cave. The time it takes inside the cave is about the same as it would take to go out of your way to get a red key in the third dungeon if you didn't get it in the cave. So, this mean it costs 47 seconds to go to the cave and get a weapon powerup. However this time is also spent farming, since you need 100 gold by the time you reach the merchant to buy the dynamite. So I think if I greatly improve farming early game I can skip the cave. It's hard to estimate how much time the powerup saves, but I doubt it is more than 15 seconds. So I should be roughly 30 seconds ahead.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Here is a really well polished homebrew adventure game called Anguna. I made a test run of the first dungeon: https://tasvideos.org/UserFiles/Info/638263248982014754 So far it syncs on console: -supercded- I'm going to be working on it over time in between emulation improvements. Seems interesting enough but not too long.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
I released GBAHawk v1.6 with support for RTC and solar sensor. So now Pokemon RTC events should work and Boktai games can be played. I also added a setting for disabled RTC, which i guess is what pokemon speedruns use. I haven't tested pokemon linking yet, that's one of the next follow up things to work on. I believe with this the only other incompatibility is in WarioWare which needs a different kind of gyro sensor than Yoshi uses. I'll implement that eventually. Of course there are many peripherals but those hold no interest to me, so probably I'll leave it at that. Maybe the only nice thing to have would be the e-reader, but that's in the future. Time now to look at those IRQ tests, then I'll finally be caught up at the point of having to write my own test ROMs.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Pretty interesting little puzzle game, nice work!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
I released version 1.5.1 of GBAHawk which contains numerous bug fixes including initial compatibility for pokemon (though RTC still doesn't work.) I also realized I missed the 'archived' NBA tests in my accounting, where I currently fail some of the IRQ tests, seems to be some non-trivial things happening there I haven't looked at yet. I think the ppu tests are working, so current number of failed tests is 3. For now though it's finally time to finish RTC and solar sensor.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
The initial release of GBAHawk led to the uncovering of a variety of bugs. Several small bugs were cleaned up straight away. There was however one very serious bug in the cpu emulation that somehow eluded detection until now. This bug made it so that unsigned bytes could sometimes be loaded as signed bytes due to not properly clearing the flag that decides which to do. This occurred partly because I was sloppy in managing the flag, but also partly due to a much more subtle error. I was setting the flag on instruction decode, but clearing it on instruction execution. This is normally fine, but ARM instructions can be executed conditionally. So the flag could be set and then never cleared. Surprisingly this didn't cause chaos everywhere, as I only noticed this by happenstance when looking over the unreleased Another World. It could have been effecting RNG or enemy behaviour in other games which wasn't so far detectable, so I'm glad I stumbled upon this before making too many TASes. Anyway I finally got around to implementing VRAM open bus for BG fetches, resolving another test ROM, leaving only 2 that fail. It seems I should do something similar for OAM accesses, but it is not clear to me how several edge cases should be resolved, so I'll hold off for now. The next immediate thing to do though is work on the RTC so gen 3 pokemon can be played. This will probably also lead to more work on linking. EDIT: also fixed obj window test, and associated demo, so that leaves only world map not working.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
With GBAHawk now being accepted for publication, the improvements to Powerpig and Coin Fall are published and verified. An improvement to my original Feline run is also published and verified. Additionally, 2 other homebrews, Sushi the Cat and Anarchaeologist were able to be verified with the mGBA core in BizHawk. This brings the total number of current GBA console verified runs to 6. It would be 7 but Sonic Advance was improved a few months back and the improvement hasn't been verified yet. It's also worth noting that 5 of these are short homebrews. I had retested both Fire Emblem and Metroid Fusion after the latest round of accuracy improvements. Fire Emblem made it much further than before, but eventually desyncs shortly into level 1. No improvement to Metroid Fusion. It appears both desyncs occur due to one extra lag frame on console compared to emulator. RetroEdit put a lot of work into Shrek 2, revealing that every emulator tested under counts lag. This is not unexpected given the results from Fire Emblem and Metroid Fusion. I expect the resolution to come from improved prefetcher emulation, but currently there are no failing test ROMs that would point out the way to improve things. So still a lot of work to do but progress is being made.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
feos wrote:
Alyosha wrote:
Giving this a bump, I would like to submit some of the runs I have.
Please test by sending a userfile.
It works! Cool I will try to make some submissions.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
fleroviux wrote:
Hello, good job on this emulator so far. I have been following this thread for a while. It's exciting to finally see another GBA emulation project focusing on cycle accuracy.
Hello and thanks! Your test ROMs have of course been a big help in this process, so thanks for your efforts there as well. Still a lot of work to do but I have enjoyed the process so far the GBA is a pretty neat piece of hardware.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
RetroEdit wrote:
I gave it a try myself and submitted a pull request: https://github.com/TASVideos/tasvideos/pull/1601
Wow, thanks a lot! I really appreciate you taking the time to put this together.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Randomno wrote:
Why not add the parser yourself Alyosha? Should be quite simple if it's the same as bk2.
Normally I would try and copy-paste my way to success, but I currently lack the spare brain power to do so.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Alyosha wrote:
I would like to request that my Gameboy Advance emulator, GBAHawk, be supported on the site for movie uploads / submissions. It can be downloaded here: https://github.com/alyosha-tas/GBAHawk/releases It is a derivative of BizHawk, so shares a very similar (though heavily modified / stripped down) user interface. TAS tools are all the same, features like RAM watch and LUA are still supported. Movie extension is .gbmv, but is just .bk2 renamed to avoid confusion. Audio / video recording is the same. Two improvements to existing TASes already exist, and are console verified: https://www.youtube.com/watch?v=avBgeBKQ8_c, https://www.youtube.com/watch?v=rKP7X7TY1_k. Additional capabilities include subframe resets and limited support for linked play. Missing features are RTC, light sensor, and other peripherals. These will be added in future releases.
Giving this a bump, I would like to submit some of the runs I have.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Cephla wrote:
Thanks for finding these much-needed route improvements alyosha. I've started implementing the second improvement but it might be a wait before I post anything final since I'm busy with other stuff.
Additionally, the levels starting at frames 6138, 10035, and 18917 can be improved substantially by using your ghost routing in one direction to collect / deposit gems for you to avoid a lot of back and forth. You used this trick in the last level already, which was pretty clever I didn't think to try it myself, I just looked where else it could be applied.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Cool game. The level starting out 20668 has a better rout , here is a test run , which can be improved by a lot manipulating enemies more to avoid waitng: https://tasvideos.org/UserFiles/Info/638228039595713529 EDIT: https://tasvideos.org/UserFiles/Info/638228100506667353 Another level improved by a couple seconds.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
I would like to request that my Gameboy Advance emulator, GBAHawk, be supported on the site for movie uploads / submissions. It can be downloaded here: https://github.com/alyosha-tas/GBAHawk/releases It is a derivative of BizHawk, so shares a very similar (though heavily modified / stripped down) user interface. TAS tools are all the same, features like RAM watch and LUA are still supported. Movie extension is .gbmv, but is just .bk2 renamed to avoid confusion. Audio / video recording is the same. Two improvements to existing TASes already exist, and are console verified: https://www.youtube.com/watch?v=avBgeBKQ8_c, https://www.youtube.com/watch?v=rKP7X7TY1_k. Additional capabilities include subframe resets and limited support for linked play. Missing features are RTC, light sensor, and other peripherals. These will be added in future releases.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Making some progress on linking. Here is a short video demonstrating single pack linking for Mario Kart Super Circuit: Link to video EDIT: Mario Kart multi pack linking also seems to work, as does advance wars 2 single pack linking, so it's a bit more robust than just this one example, though I didn't try anything else yet. I made this using TAStudio, so at least under initial testing sync is stable, also movie playback and recording was at least at 60 fps, so surprisingly still full speed (on a modern desktop cpu anyway.) So far what I have is only very rudimentary and takes a lot of shortcuts, but its a worthwhile proof of concept. Linking for GBA is pretty well documented in GBA Tek, so getting things working is really just a matter of carefully sorting through everything there, but it is much more complicated than ordinary Gameboy as there are several modes and more shared state to keep track of. Now that I have a basic proof of concept working, refining it and improving it over time is a more approachable task. Back to accuracy improvements for now though.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
I agree with WarHippy, this should be handled differently, unless there was some external discussion, which should have been noted if that was the case.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
I've added SubGBAHawk which has (experimental) support for subframe resets. It should work exactly the same as for GBHawk, pick a cycle in the frame you wish to reset at and hit the power button. At the moment I don't plan to add subframe inputs, unless someone comes up with a specific use case. Subframe resets for save ram abuse seem to have the most utility, so hopefully this opens the door to some neat examples on GBA. I've also been fixing various bugs, though none of the remaining 3 not working test roms yet. I'm hoping in the next few weeks to do some work on actual linking, it seems like multiboot is an easy place to start.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
GJTASer2018 wrote:
Alyosha wrote:
Three or Four player at full speed is probably out of reach (unless you are a professional overclocker or something) so I don't think I'll implement that like I did for GBHawk.
Maybe out of reach with today's technology, but I still think that it would be possible sometime in the near future (late 2020s)...
Well I should say that it's out of reach for GBAHawk. Surely with mGBA you could do 4 linked instances at double or triple speed right now without a problem, even on a weak computer. Even a more accuracy focused emulator like Nanoboy Advance could do full 60 fps with 4 linked instances pretty easily on a strong modern day cpu. My core architecture is just really slow, but it also makes actually implementing linking particularly easy.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
I fixed two of the above test roms (vram mirrors and window test.) PPU open bus shouldn't be too hard, just need to be careful with keeping track of accesses. OBJ window looks like just understanding internal state updates, but I haven't looked at it carefully yet. World Map seems the most difficult, it relies on audio FIFO DMA timing not interfering with HBL IRQ code execution. I haven't looked at audio since I first got it working, so I imagine there are numerous timing errors to sort out still. Taking a break from the accuracy grind, I decided to at least put the infrastructure for linking in place, even though there is no linking logic yet. This was surprisingly not too difficult and for now at least even can run at above full speed on a modern desktop cpu. I haven't even started serial port emulation, so this is a long way from functional linked play, but it's a start. Three or Four player at full speed is probably out of reach (unless you are a professional overclocker or something) so I don't think I'll implement that like I did for GBHawk. I'm not sure what the TAS possibilities are here, maybe all the interesting ones would be 4 players. Anyway at least for 2 player it's something I will work on in between accuracy improvements.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Link to video Console verified.