Submission #9900: fella8's NES Celeste Mario's Zap & Dash! "101 moons" in 21:10.07

Nintendo Entertainment System
101 moons
(Submitted: 101 moons)
(Submitted: Celeste Mario.nes v1.0)
BizHawk 2.10
76330
60.0988138974405
120075
PowerOn
841c96888bf36a431a5dce3913df564f5b5cb16a
Submitted by fella8 on 9/15/2025 11:44 PM
Submission Comments

Preliminary Information

  • Emulator used: BizHawk v2.10 (Core: NesHawk)
  • ROM: Celeste Mario.nes
    • sha1:841c96888bf36a431a5dce3913df564f5b5cb16a

Game Objectives

  • Aims for 100% completion (101 moons)
  • Secondary goal: fastest completion
    • Time is sacrificed for entertainment at the end, where there are ~18 seconds of additional input after the final moon is collected. Pay no mind to the filename...
    • For future comparison, the TAS without this ending is 75246 frames if I were to end input early.
  • Takes damage to save time

Introduction

I started this project back in late 2023, after we had finished the first any% TAS for this game. I'm not sure how long it really took me, as I took many long breaks from working on it, but it's finally here! This was a solo project, but shoutouts to chbld and Riyan for their work on the any% TAS, as well as speedrunners EmilyU, controllerhead, kandowontu, and AuburnRDM for various discoveries, and of course w7n for making the hack.
By now, a deluxe version of the game has been released, featuring 11 new minigames and a new final course! However, the original release is much faster for speedrunning, as many movement techniques/glitches have been patched in the new version.
I will soon be updating the any% TAS with all the improvements I found while making this one. It is about 6 seconds faster than the original.

Techniques

Most documentation can be found in the previous submission text, but there are a few additional optimization strategies to note.

Fast Fall

Although this has been documented already, I have some notes to add. Depending on the height of the jump, there is only a certain set of frames following the release of A that will affect the fast fall. Certain jump heights are unaffected, while others have between 1-3 frames that will affect the downward acceleration if A is pressed again while midair. The duration between the A release and the start of fast fall availability is fixed, and A must be pressed on the first frame of this period for the following frames to be counted. For example, a single frame jump has a window of 3 frames before A must be regrabbed, and a 3 frame period of fast fall input, which looks like this: A _ _ _ A A A. If A is only pressed for 1 or 2 frames of fast fall, then Mario will jump slightly higher than if it is pressed for all 3.

Smallest Possible Jump

Buffering a jump by pressing A for 1 frame before Mario touches the ground (or a wall) will cause him to jump lower than a standard 1 frame jump. Pairing this with a maximum fast fall will result in a jump of the lowest possible height.

Diagonal/Vertical Dash Adjustment

After initiating a dash, there is a period of 5 frames where Mario freezes before beginning to move in the direction of the dash. Only on the 5th frame is the D-pad direction taken into account to determine which direction he will go. So what happens during the other 4 frames in between? Well, we can adjust the initial Y-speed of the dash by pressing up/down during this period. This can be used to simply fine-tune Mario's height, or to even do a sort of curved dash/fakeout if his Y-speed is set to the opposite direction of the dash.
To maximize upwards speed, simply hold up on the D-pad during these 4 frames. Pressing left or right will restrict the speed because it assumes we are doing a diagonal dash, but we can get a higher speed by not pressing the sideways direction until the 5th frame.
To maximize downwards speed, the first frame must be empty, because it initializes the speed to -3 (positive down), but an empty frame will reset it to 0. Then, the next 3 frames we can hold down.

Routing

This game is pretty linear, but in some cases death warps and save warps are used to return to an area faster after grabbing a moon. In the tutorial, some checkpoints are skipped in conjunction with a death warp to respawn Mario back a couple rooms, but this was not found to be possible anywhere else in the run.
Post-game routing may look slightly confusing, so let me explain the order here. W3 deathless is done first, since the door is right by the entrance to the room. Either B-Sides or Spiky Challenge must be done next, because we need to unlock the map tile with the save block for warping back after W2. B-Sides was found to be faster based on door-to-door movement, and the fact that the Spiky Challenge door is right next to the save warp spawn point. Thus, we do B-sides, then W2, then Spiky Challenge, W1 is last, because it would take too much time to warp through W2 and W3 to get back afterwards.

RAM Values

Some additional RAM Values that were not documented before:
AddressSizeTypeNoteDescription
0x07541 byteHexadecimalSpawn RoomActive checkpoint room
0x07581 byteHexadecimalSpawn XActive checkpoint X-pos
0x075A1 byteHexadecimalSpawn YActive checkpoint Y-pos

Improvements

Other than squeezing a few frames out here and there, there is about 6 seconds of known time save. The dash upgrade message can be canceled if the upgrade is caused by collecting a super moon, which will result in the game only playing the super moon jingle. This will save a little over 2 seconds per dash upgrade. From my discussions with EmilyU and controllerhead, we have determined that the 2nd-4th dash upgrades can be skipped by skipping certain moons in the initial playthrough and collecting them during the post-game deathless runs. This would force a different post-game route, as we would be 1 moon short of unlocking B-Sides after the W3 deathless run. I truthfully did not feel like copy/pasting sections from early to late game and vice-versa, and having to sit through the movie turbo seeking over and over again because of it, so I decided not to include this in the run. The new optimal post-game route would be to do W3 first still, then Spiky Challenge, B-Sides, then W2.
Hopefully I didn't forget anything. I didn't think very hard about what's missing from the previous documentation so I might have to update this later.

nymx: Claiming for judging.
nymx: Huh? Rick Astley!? Oh well, the run looks good. Glad there is a counter down below...I would have lost track, with as fast as you did this TAS. Congratulations!
Accepting to Standard as a new branch called "101 Moons".

inconsistent: Processing...
Last Edited by fella8 on 10/3/2025 4:27 PM
Page History Latest diff List referrers Change Log