GBA Digimon Sapphire in 31:59.4 by Noxxa
Game objectives
- Emulator used: BizHawk v1.8.2
- Aims for fastest time
- Takes damage to save time
- Manipulates luck (although only for pickups, which are irrelevant anyway)
- Abuses resets
- Jumps on mid-air a lot
- Travels through floors, walls and ceilings in some stages
- Goes complete genocide on several hundreds of digital monsters at least
About the game
Digimon Sapphire is a pirate game developed by Vast Fame (creator of Zook Hero Z, Rockman DX3, among other things). As with other Vast Fame games, it actually is a legitimately good game, with nice visuals, a decent chiptune soundtrack and reasonably good gameplay. It's a fairly straightforward platformer, where you walk around, jump around, fire projectiles at and jump on enemies to progress through eight worlds consisting of three stages, with bosses awaiting you at the end of the second and third stage of each world.
The game has three playable characters: Agumon, Veemon and Guilmon, the respective partners of the main protagonists Tai/Taichi, Davis/Daisuke and Takato of Digimon Adventure, Digimon Adventure 02 and Digimon Tamers respectively. Each of them are completely identical aside from having different sprites and their attacks having different sprites (Agumon and Guilmon fire fireballs, Veemon a V-shaped projectile). In fact, it's possible to hex edit one input at the start of the run to change the selected character (without costing any time), and the run will still sync just the same. So character selection is really just preference.
Besides jumping and shooting, the Digimon have the ability to Digivolve temporarily into a larger, fully invincible Digimon. Oddly, all three playable Digimon Digivolve into WarGreymon. Unsurprisingly, the pirate game remains pretty loose with canon.
Another "feature" of the game is its hilariously terrible attempt at English dialogue before every bossfight. This dialogue is also the only thing resembling plot in this game, so...I have no clue what the plot of this game is. My headcanon just says Agumon/Veemon/Guilmon just kind of decided to go on a murderous killing spree one day, slaughtering absolutely everything in its path. Works for me.
Tricks
Stage end save+resetting
In the only known version of this game that has a ROM dump, every time a stage is cleared the game will go to the credits instead of proceeding to the next stage normally. Normally, after the credits end, the game resets and it is possible to enter the next stage by selecting Continue. However, by resetting one frame after the stage is cleared and starts fading out, it is already possible to select Continue to go to the next stage. Thus, at the end of every stage (except the last) I reset as soon as the stage ends and allows me to continue on to the next stage. (This only saves time if the BIOS screen is skipped; otherwise, the reset would actually be slightly slower).
Infinite mid-air jump
A simple trick that allows for a lot of little skips and many bigger spiks as well. By jumping one frame after firing a projectile in mid-air, it is possible to jump in mid-air. This can be easily and infinitely repeated as well, allowing for practically free aerial movement.
Ceiling clip
This is less a trick and more just abuse of a property of the Digivolved form that it ignores ceilings in collision. Normally this makes no big difference, but combined with infinite jumps it means some vertical sections are traversed through faster by Digivolving and just plowing through the platforms like they aren't there.
Boss invincibility glitch
A very convenient trick which allows me to reduce the majority of bosses to paste in mere seconds.
How it works: most bosses spawn projectile objects of some kind to attack. Normally, when you hit them (either by jumping on them or hitting them with a projectile, like any normal enemy), the projectiles are "killed" just like other enemies, complete with dropping a pickup. However, for some reason, if the boss is invincible and its projectile is it, the projectile won't die but the boss will take 1 damage instead, bypassing the boss' own invincibility.
Thus, most bossfights come down to waiting until the boss fires a projectile, then whaling at it with dozens of hits at once, typically near-instantly killing the boss. The only real exception to this is Wormmon (2-3), as he is the only boss with no projectile attack whatsoever.
Stage-by-stage comments
Warning:
Plot details and/or silly Engrish messages are spoiled in these comments. I recommend watching the movie before reading the stage-by-stage comments.
World 1
1-1 The game immediately lends a few use cases of infinite jumps to save time, about 10 seconds into gameplay. Besides that, I mostly just had fun creating chains of bouncing off enemies. Also showing off sprite wraparound around the end of the stage just for fun.
1-2 "no means the opponent of the Sakuya_monster! Return is quick quick fold hands submit to capture!" —BigMamemon
Pretty similar to 1-1. First bossfight is here, and the first boss has 10 HP. This is where you'll have the first glimpse of the game's hilariously terrible English, as well as how bosses will be dealt with throughout this run.
1-3 "Do not want again do meaningless struggled! The figures world will be taken over by Sakuya_monster!" —Impmon
Again similar to the previous stages. (Level design can be pretty repetitive in this game). I take damage in a few spots; it turned out to be just a few frames faster than Digivolving and using invincibility from that instead.
Impmon has 12 HP. It takes a while for him before he starts shooting a projectile, but after that it is over quick. (For the record, all bosses have completely fixed patterns, with only their movement being affectable a slight bit depending on camera position and player position for some bosses).
World 2
2-1 Pretty generic stage. At least I can say I think it looks very nice aesthetically, especially the background. Attentive watchers might notice something happens with the score after the end of this stage.
2-2 "Have me at here guard the pass, You do not think that again near to one step!" —RedVegiemon
Now, this stage is where the fun starts. First of all, it is the first time I use Digivolution. (Yes, all three characters Digivolve to WarGreymon, despite it making zero sense for two of the three. It's still a pirate game, continuity be damned.)
The reason I digivolve is because of WarGreymon's property of free upwards movement through ceilings, which means that on the first vertical section, I can just plough upward while the camera can't catch up. After that, I continue the fun by continuing to go upward. As I showed earlier on in 1-1, when sprites go too high they overflow and appear onscreen again. (This is purely visual; an out-of-bounds sprite can in no way interact with other in-bounds sprites, even if they visually touch each other or overlap).
So, the way I keep moving up, I end up being in fact several screen-heights above where it looks I am. So for the next vertical section, I am not Digivolved anymore but can still freely move upward simply because I am so high above it all. (I do still have to move upward to force the camera to scroll upward, and I need the camera to be high enough in order to load and progress to the next section).
When the camera has scrolled up, I then have to fall down for the next part in order to end up next to the boss when I reach it. For this bossfight (15HP), I introduce another tactic which will be seen a lot later: taking damage at the start of the bossfight. I do this so that I can be inside the projectile the boss fires, so that I can then proceed to rapid-fire it with impunity.
2-3 "Rely on you to think also and does we set against? Hahaha~ interesting! I will let you understand this is how unwise decision!"—Wormmon
More of the same vertical fun as in the last stage, except I actually am on-screen this time.
Wormmon (15HP) is an unique boss in a few ways, both of which extend this battle time by a lot: first of all, it has 128 frames of invincibility on hit, instead of the default 48 (and can extend this further during its slide attack). The second property, which is the big one, is that it is the only boss that has no projectile attack at all. Which means I can't damage it at all through invincibility.
On the bright side, this means you get to listen to the best boss music in the game during the 30-second bossfight.
World 3
3-1 I love this world. Visually great environment again, and with nice, cheerful background music to match. Oh, and there's the layers upon layers of blood-stained spikes, of course.
Besides that, there's another vertical section passed through by Digivolving. The time saved by Digivolving instead of going around the environment was absolutely minimal, with it only making a few frames difference. But hey, it was still faster.
3-2 "Irrational invader! Take my attend!" —Togemon
Moving downwards is harder to optimize than moving upwards, especially in the last downwards bit.
Togemon has 20HP, jumps and fires spikes, I think you can bet how this ends up...
3-3 "Your unknown white this district of way is my Zoukun to guard of? Not afraid and dead invader despite put the horse to come over! I can let you experience personally to experience personally the Zoukun of the terror!" —Etemon
There is a short vertical section here, where unlike 3-1, it actually turned out to be just a few frames slower to Digivolve this time around.
Etemon (20HP) makes me glad I have a way to quickly deal with bosses. For some reason, he has 192 frames of invincibilty per hit - 4 times the default. Had I not had a method to damage bosses through invincibility, this boss battle would have lasted over a minute. But hey, I do have such a method, so I just have to wait until he starts throwing an energy ball.
World 4
4-1 TODO: Write stage comments of worlds 4-8
4-2 "Take life come~ Have my improbity bear monster at here! I absolutely not can let you be out of order of the overfulfilment of the Sakuya_monster!" —WaruMonzaemon
I love the boss title "improbity bear monster". It has 25 HP.
4-3 "Take the Sakuya_monster order, Anyone into the saint zone, Shoot on sight! It is meaningless to struggle is don't useful! Darling talke life come! See my attack then then~" —Sukamon
Sukamon has 25 HP.
World 5
5-1
5-2 "Hahahahaha~ I did not listen the mistake! Knock down me? Do you think you and do and get? Go to die!" —Frigimon
Frigimon has 30 HP.
5-3 "Does the peaceful coexistence do not be very good? Why to want to kill each other? Look to did not solution you, Fight is forever did not end of a day! Don't blame me! I is also beyond control myself" —Terriermon
Terriermon has 30 HP.
World 6
6-1
6-2 "Your itinerary will soon be end! See my wheel gear on fall!" —Hagurumon
This boss' (30 HP) most annoying property is him partially blocking his dialogue due to his positioning.
6-3 "Is really not simple! Can break my troops incredibly! However next opponent is me Sadogdu_monster! Can have no so easy!" —MegaGargomon
MegaGargomon has 30 HP.
World 7
7-1
7-2 "I am the black combat wild dragon, Have the right alone combat only to can prove my esse just. Do you is my next opponent? Looking real strenght is quite good! Qualified for become my opponent!" —BlackWarGreymon
Like the "improbity bear monster" of 4-2, I think "black combat wild dragon" is a pretty cool boss title. The black combat wild dragon has 35 HP.
7-3 "True not simple! The never thought connects the black combat wild dragon Usually is no match for you! Let my fox_monster accept to accept!" —Renamon
Renamon has 40 HP.
World 8
8-1
8-2 "I can in no way let you break the Sakuya_monster to rule the wish if the figures world to hope! For the sake of the adult I want certainly to score off you!" —Imperialdramon
Imperialdramon has 45 HP.
8-3 "Hahaha~ is really fantastic, Have no idea the Property that Sakuya_monster establish hard, That one lower level digimonster broken? Connect to recruit! You must pay out the price for the everything that you do! I will let you experience personally the unprecedented obituary career~" —Sakuyamon
Sakuyamon has 50 HP.
There were a few different ways to go about the ending input; minimizing input time and aiming to start the credits the quickest were both valid options to go for. I ended up maximizing both goals, with the main priority going to fastest credits. I ended up only having to trade off 1 frame of input for optimal credits, so it is no big deal. (I could save 1 frame of input at the end, but it would mean some of the pickups dropped would cause lag, which would delay the credits by about 20 frames).
Other comments
As the character choice is entirely insignificant to the time of the run, I've left it up to a poll to decide which of the three (Agumon, Veemon, or Guilmon) would be used for the run.
So far (at the time of submission) the poll ended up a tie between Veemon and Guilmon. Veemon was my personal choice, so I'm using that for my own YouTube encode, and I put Guilmon in the submission movie file.
You can still vote, and perhaps I can still change the character for publication.
[dead link removed]
Recommended screenshot
TODO (feel free to post suggestions)
Thanks
Thanks to dekutony for providing a RAM watch file (supplementing my own RAM findings for this game).
Thanks to him as well as Anty-Lemon, exileUT, grassini, Patashu and Spikestuff for watching my WIPs, posting in the Digimon Sapphire thread and voting for the character poll.
And thanks to you for watching the run and reading this text!
Nach: Judging. Just noticed when I went to play this movie that this was Bizhawk, someone else can take it.
adelikat: I'll claim it then.
adelikat: Due to positive feedback, accepting from the Alternative tier
Spikestuff: Publishing...