Submission Text Full Submission Page
Alwa's Awakening: The 8-Bit Edition is the NES port announced in 2020 and published by Retro-bit in 2022 of Alwa's Awakening, an NES inspired metroidvania style game developed and published by Elden Pixels that first released in 2017 for PC, 2018 for Nintendo Switch, and 2019 for Playstation 4 and XBox One. This NES port includes new areas, new music, and other new content along with modifying the existing rooms, and sprites, and enemies to fit the NES hardware limitations. Alwa's Awakening: The 8-Bit Edition was made available on physical NES cartridge and digital download.
In Alwa's Awakening, you play as a girl named Zoe is suddenly brought to the video game world of Alwa after she dozes off. It's up to her to defeat 4 bosses called the protectors, collect the items they drop, and face the evil boss Vicar to save Alwa. With the help of her trusty magical staff that she just conveniently finds along with some gemstones that provide the magical staff with special abilities, Zoe will completely ignore the 4 protectors, break out of the map, and go straight to Vicar. This TAS makes heavy use of a screen wrap and out of bounds glitch TheStrahl discovered and this TAS attempts to beat the game as quickly as possible.
The game can be purchased on itch.io, gog.com, or Steam. It can also be downloaded as free DLC to those who own the original Alwa's Awakening on Steam.

Run Notes

  • Emulator used: BizHawk 2.8
  • NESHawk Core
  • Aims for fastest time possible
  • Takes damage to save time
  • Heavy glitch abuse
  • Major skip glitch
  • Uses the NES soft reset to save time

Console Resetting

Pressing Start to go into the pause menu begins to save game progress to the game's save RAM. 6 frames after starting up the pause menu, the console can be reset to get back to the file select screen and choose the run. This can get back to the save location faster than death warping or selecting QUIT from the pause menu.

Jumping

Jumping pushes Zoe forward horizontally by 1 pixel. This is true the frame after the A button is pressed to start the jump. Jumping as often horizontally as possible tends to save time, whether by doing short hops or bonking Zoe's head on a very short ceiling to get back to the ground sooner in order to jump again.

Ladders

Ladders are used to go up and down in this game, much like in many other games. The climb speed is about 2 pixels every 3 frames, so in most cases, it is beneficial to jump to gain height before grabbing a ladder if you are going up. Ladders can be dropped off of to go down ladders faster.

Ladder Zipping

When grabbing the ladder, Zoe's X coordinate gets updated to be centered onto the ladder. This allows for free horizontal movement in many points of this run. This applies for when the ladder is in front of Zoe or if Zoe is walking on the ladder. While Zoe is walking on a ladder, the Down button must be pressed to grab onto the ladder, but to cancel the downwards movement and stay above the ladder, the Up button can be pressed on the same frame as the Down button. Ladder zipping is more beneficial than the 1 pixel push from jumping.

First Frame Ladder Jump

Zoe does a small hop after getting on top of the ladder. If Zoe is in a position where pressing the Up button for 1 more frame causes her hop above the ladder, you can instead move left or right to walk off of the ladder instead. A jump can be done one frame after pressing left or right off of the ladder.

Subpixels

Jumping/falling and ladder climbing appear to run on a cycle that impact whether a specific pixel or pixels are considered something you can land on or fall through. The jumping/falling and ladder climbing cycles also appear to impact each other. More research is likely needed to do optimal subpixel manipulation.
This has 2 main impacts on the runs. One of the impacts is landing back on the ladder after letting go on the first frame the ladder is grabbed from above rather than the expected behavior of dropping down the ladder. The other impact is landing just a little bit past a corner for 1 frame rather than falling past the corner.
For the first impact, not falling down the ladder is a detriment in all cases, as landing on the ladder after grabbing it from the top can also be performed by pressing Up and Down at the same time, which is not normally feasible on an actual NES controller. The second impact can be beneficial in both cases. Subpixel manipulation was heavily used for all of the impacts and benefits mentioned, although I currently do not know how to control the subpixel manipulation other than using the "guess and check" method.

Staff (Weapon)

The staff can be used to attack enemies and bosses. There is a cooldown between swings. If the Zoe swings the staff while on the ground, Zoe will be locked in place for the duration of the swing animation. If Zoe swings her staff in the air, she will be locked in the direction she was facing the frame before the swing started for the duration of the swing animation. Zoe is still able to move horizontally while in the air and swinging her staff, so jumping is frequently used before swinging in order to continue forward progression.

Block Spell (Green Gemstone)

The block spell lets Zoe create a block that can be used to block that can be jumped on, jumped off of, block enemies, and block some attacks. Jumping while pushing a block is slower than not jumping, although there are cases where jumping at the block to make first contact can save a frame over not jumping at the block.

Block Jump

Zoe can do a jump off of a block that is created in the air, getting more vertical and in some cases horizontal distance. To perform this, while Zoe is moving upwards from a jump, a block is created. While Zoe moves towards the block and if Zoe is at the correct height compared to the block, Zoe can land on the block long enough to jump off of it. The block jump is used to save time at frame 13618 by not having to wait for the bubbles at the tradeoff of a few frames of not moving forwards. The block jump is also used at frame 12795 to sequence break and get the bubble spell early.

Bubble Spell (Blue Gemstone)

The bubble spell lets Zoe create a bubble that she can stand on that goes upwards. After 135 frames, the bubble pops.

Bubble Hovering

If Zoe created and is on a bubble, she can jump off of the bubble as it pops, create a new bubble, and land on that bubble. This run only uses this trick once on the final boss, Vicar.

Screen Wrap Glitch

Zoe is able to wrap from the right screen to the left screen using only the bubble spell. To perform the screen wrap glitch, Zoe needs to create a bubble on the right edge of the screen and jump on the bubble. After Zoe going right enough pixels, the bubble should go through Zoe and she should be able to zip to the left side of the screen by pressing right. This then brings Zoe to the room to the left.

Out of Bounds

If Zoe goes to a room that is not a "normal" room programmed in the game, she will go out of bounds. These out of bounds rooms are in the same grid map system as the rest of the rooms, so it is possible to traverse to other rooms from out of bounds. Every tile in out of bounds rooms behave like ladders and a floor is near the bottom of the room that can be dropped under. It is possible to climb up to the room above, climb or drop down to the room below, and move to the room left and right of an out of bounds room.

Room Zipping

If Zoe is stuck in a wall, floor, or ceiling, she can quickly zip from room to room horizontally. If she is 1 pixel away from entering the room to the left or right , she can zip to the opposite side of the room by pressing the direction of that room. For example, if she is 1 pixel away from going to the room to the left while suck in a wall, pressing right will wrap her to the right side of the room and send her to the room to the right. Pressing the other direction will zip Zoe quite a few pixels towards the opposite direction, which can be seen at frames 18778 and 19044 in the last boss room.

Notes on Required Damage

It takes about 40 frames for an enemy to die and potentially drop a heart. Because of this, it's faster to ignore hearts.
  • Room 09,12 - Frame 7590 - Going to the right earlier and taking damage instead of landing on the falling block could save time, but there are 2 required hits to Zoe after this, so it's faster to not get hit here overall. Less than 40 frames will be saved by taking damage, so getting a heart later will take up time rather than save any.
  • Room 08,13 - Frame 8025 - Required Damage - Pit is 1 pixel too far to jump over without getting hit, so Zoe must take damage.
  • Room 06,14 - Frame 8794 - Required Damage - The top skeleton in this room has a very unfortunate walk cycle that requires Zoe to take damage in this run. That particular skeleton caused me a lot of time trying to route everything around beforehand in an attempt to take damage to save frames around frame 7590. Due to the amount of time and experimentation it required me to do, I have decided to consider the top skeleton the true boss of the run, or at least the first boss of the run. Before leaving the room, I do kill that skeleton get my revenge.

RNG

The RNG is a 24-bit linear feedback shift register (LFSR) at addresses 0xA2 through 0xA4 and uses the polynomial 0x1B (0b000110110), resulting in an RNG period of 16777215 values before the RNG values repeat, meaning all values but 0x000000 are possible with this RNG function.
The game changes the RNG in 2 different ways. Either by advancing the LFSR with the RNG value as the seed (I'll call this RNG advancing), or swapping the byte at address 0xA2 with the byte at address 0xA4 (I'll call this RNG swapping).
RNG advancing happens in specific rooms every frame for as long as controller input is able to be taken, like save rooms, the title screen, and the file select screen. Some rooms advance RNG once, and some advance it a few times. Some rooms also advance RNG in specific circumstances like standing in front of an Electric door. Killing an enemy advances RNG once. Each time the last boss Vicar disappears from from one phase to go to another phase causes RNG to advance once. Other bosses might advance the RNG as well, although my run does not encounter any bosses other than Vicar (ignore the joke above about the skeleton being the first boss), so I did not test for that. Explosions seem to cause RNG to advance a few times per frame, although that fact does not impact my run.
RNG swapping seems to happen in very specific settings, which seem to all be transitioning from any screen to a screen where RNG advancing happens every controller input frame.

RNG Manipulation

A console reset completely resets the RNG value. Because only the Vicar fight needs RNG manipulation in this run, RNG advances and RNG swaps only need to be tracked from the last console reset, which happens at frame 10417. More details about the Vicar Fight RNG manipulation in the Vicar Fight RNG Manipulation section.

Vicar Fight (Last Boss)

The Vicar fight starts at the bottom right of the screen every time. There are 2 types of placements for Vicar, the bottom of the screen and the top of the screen.
The bottom phases of Vicar involve Vicar being invincible for the first 41 frames of being visible. Once Vicar is hit in this phase, it will be visible for 40 frames (including the frame it got hit in) and will then disappear for 37 frames, for a total of 118 frames for 1 hit.
The top phases of Vicar involve Vicar being invincible for the first 31 frames of being visible. Once Vicar is hit in this phase, it can be hit again in 120 or more frames. Vicar can be hit 3 times in this phase using the bubble hover maneuver. Vicar will disappear after being visible for a total of 361 frames, whether hit once, twice, or three times and then will disappear for 37 frames, for a total of 398 frames for 3 hits.
Invincibility frames at the beginning of phases don't happen during the first phase of the boss when the boss battle starts. The boss fight also ends at the point where Vicar's health drops to 0, so the transition to disappearing and the frames it will disappear for don't happen during the end of the boss fight.
In theory, the fastest pattern for the final boss would be (including the guaranteed first phase at the bottom right) only bottom row phases except for the last single hit with a top phase (14 bottom and 1 top). That boss pattern could deal the last hit to Vicar at best exactly 1642 frames after the first hit to Vicar was dealt.

Vicar Position Table

After disappearing, Vicar will select a new position to go to and will show up at that position. To determine what position Vicar will go to, figure out where it is before it got hit and what RNG value is at address 0xA4 modulo 4. 1 of the 3 possible new locations is twice as likely as the other 2 possible new locations. The leftmost column in the table below is the current position of Vicar and the top row is the value at 0xA4 modulo 4. After the position is picked, the RNG is advanced.
0 1 2 3
Top Left Bottom Right Bottom Right Top Right Bottom Left
Top Right Bottom Right Top Left Bottom Left Bottom Left
Bottom Left Bottom Right Top Left Top Right Top Right
Bottom Right Top Left Top Left Top Right Bottom Left

Vicar Fight RNG Manipulation

While I said the fastest boss pattern would be 14 bottom and 1 top, we are unfortunately limited to only 16777215 RNG values, so only certain boss patterns would even be possible. Unfortunately the fastest boss pattern isn't a possible pattern without cheating. The best pattern is actually shared with 4 different RNG values and is 12 bottom phases in a row and then the top right phase. These RNG values, which I have taken to calling the "perfect 4" are, 0xC3FC0B, 0x2588DF, 0x5F107F, and 0xB964AB and each take exactly 1646 frames after the first hit to Vicar is dealt.
The next best boss patterns all take 1686 frames after the first hit to Vicar is dealt, so as long as the RNG can be manipulated to one of the "perfect 4" within 40 frames, it will be faster than any other boss pattern.
After mapping out where every RNG swap and RNG advance happened after the final console reset, I decided to use 7 specific areas to wait while advancing RNG: The Elden Pixels Screen, the Retro-bit Screen, the Title Screen, the File Select screen, the Save Room at room 23,11 (or 08,10. Either one or both can be used, as there are no RNG swaps between these 2 rooms), the Save Room at room 26,17, and the Save Room at room 32,17. After running a program I built to simulate all of the RNG modifications from the last console reset to the last phase of Vicar that take 40 or fewer frames of waiting, I found the shortest waiting time of 35 frames total, which is shown below.
Elden Pixels Screen: 15 frames waiting Retro-bit Screen: 4 frames waiting Title Screen: 2 frames waiting File Select screen: 7 frames waiting Save Room (08,10 or 23,11): 7 frames waiting Save Room (26,17): 0 frames waiting Save Room (32,17): 0 frames waiting
These waits in these screens resulted in the RNG value of 0xC3FC0B.
I decided to use Save Room 23,11 instead of 08,10 or a combination of both 08,10 and 23,11 for all 7 frames of waiting
There are 4 enemies that are killed after the last File Select Screen. Avoiding any of those enemies would have potentially lost time and none of the pathways to one of the "perfect 4" RNG values were faster than if I killed the 4 enemies.

Potential Time Saves

  • [SPECULATION!] I suspect the beginning of walking has a subpixel process as well, as there were some rooms I would go through while developing the run at the same speed whether I stopped for 1 frame while walking or just continued walking the entire time. The first frame of the walk seems to move forward 2 pixels instead of 1.
  • It might be possible to squeeze another few tiny hops into the run, although I cannot find where they could beneficially go.
  • Bubble hopping and block jumping might be possible to optimize, although I have not been able to find those optimizations.
  • Block creation at 15488 might be able to be done earlier in a way to let Zoe block jump earlier with the second block, which will allow the third block to be created and box jumped off of sooner.
  • Small optimizations in the out of bounds room movements might be possible.

Special Thanks

  • Darkman425 - Pointing out a time saves in room 25,11 by creating the first green block earlier in order to refresh the magic bar sooner, which also applied to the first time being in room 28,12. Informing me that 3 hits are possible when Vicar is on the top.
  • TheStrahl - Discovering the screenwrap glitch that allowed for out of bounds and zipping. Finding the screenwrap point at 28,12.
  • WhiteHat94 - Finding the zip route at room 27,12 and at room 40,14.
  • Rayquaza911 - Finding the zip route at the top 3 rooms of the Tomb of Closkey.
  • Brad Smith (Developer of the Alwa's Awakening: The 8-Bit Edition) - Informing me of where the RNG values were in memory along with what things in general progresses the RNG and that the last boss uses a table of 4 values with 2 values being the same to determine the next boss position.


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15582
Location: 127.0.0.1
TASVideosGrue
They/Them
Joined: 10/1/2008
Posts: 2785
Location: The dark corners of the TASVideos server
om, nom, nom... want more!