Submission #1497: Scumtron's NES Ninja Gaiden 2 in 09:14.32

Console Nintendo Entertainment System Emulator FCEU0.98
Game Version USA Frame Count 33259
ROM Filename Ninja Gaiden 2 - The Dark Sword of Chaos (U).nes Frame Rate 60
Branch Rerecord Count 39973
Unknown Authors Scumtron
Game Ninja Gaiden II: The Dark Sword of Chaos
Submitted by Scumtron on 3/27/2007 10:57:40 PM

Submission Comments
  • Uses FCEU 0.98.16
  • Aims for fastest time
  • Abuses programming errors
  • Takes damage to save time

When I submitted my first NG2 run I thought I was burnt out on TASing and that it would probably be my last -- of course I kept trying to improve it and NG1 (lots of minor improvements there but most refuse to fit together into a cohesive run), as well as tinkering with Power Blade 2 (even though it has a lot of auto-scrolling sections, that game needs to be done) -- but here it is, yet another Ninja Gaiden submission from me. At 33259 frames (9:14.32), it's 237 frames (3.95s) faster than the previous version.
What made me decide this game needed a new run? I was screwing around in level 1 one day, and an enemy started wobbling and fell of a platform. Fortunately I was recording. Unfortunately, instead of switching to read-only and whipping out the memory viewer, I immediately loaded a save state and tried to reproduce it. After repeating that bit of genius a few times I figured out what had happened: changing directions on the frame before an enemy turns around at the edge of a platform, then stopping will cause it to spaz out and fall off. Combining that with moving backwards to make an enemy appear earlier than it normally would allowed me to get both shadows in the first level and a new Ninja Gaiden 2 run was born. Read on for a summary of the rest of the improvements.
  • Note: when you see Ryu slash right before getting hit (or sometimes right before not getting hit) it's to delay the hit a couple frames for more optimal positioning.
  • Other note: You may notice that I grab a few unnecessary power-ups. Sometimes this is so the shadows don't knock them down behind me (visually distracting), other times it's simply unavoidable (like when the shadow hits the mini-bomberhead near the end of 7-2 so he'll knock me over the pit).

1-1: Getting the first shadow actually wastes 13 frames but that's more than made up for on the boss. I also used the sword/hit-delay to get the second shadow without slowing down (well, except for throwing the fire wheel) saving 4 frames. 1-2: 41 frames faster thanks to having both shadows. Yay.
Act I total: -32

2-2: Jumping a few frames earlier before going through the wall in 2-2a avoids pushing against an invisible barrier and saves four frames. Another frame saved by subpixel nonsense in 2-2b. 2-3: 1 frame faster due to leaving 2-2c on an odd frame (or even, whatever). I had assumed that the apparent randomness here (and in all boss fights) was with the boss' position, but it's actually the fire wheel.
Act II total: -6

3-1: 10 frames faster. No slowing down for impermeable walls this time. 3-2c: 3 frames faster. Doing all the wall climbing on one side then passing over is quicker. Duh! 3-3: 2 frames faster just like the level 2 boss. If you jump off the ladder on the last frame of input in 3-2e, the boss won't appear until you move to the right, allowing you to get another fire wheel into him before he lands. But that turned out to be slower since you can pump out the damage faster on his way up by getting into the proper position while he rests.
Act III total: -15

4-1a, b: 3 frames faster in both areas by using an invisible platform in the wall. It's too bad there aren't more walls like that. 4-1c: A much more elegant solution to the damage-boost at the exit this time. 3 frames faster. 4-2a: Unfortunately that "elegant solution" screws up the tedious subpixel optimization I had in the previous run and partially negates the time saved by not using the invincible fire wheel to get the fire wheel (the other one, the Ryu throws) here. Oh well. (Note: At the time I made the obsoleted run I had no clue what a subpixel was and probably would have found the concept ideologically offensive) 4-2b: Waiting only 6 frames for the bird instead of 36 is 52 frames faster. You do the math. 4-2c: 15 frames faster. Subpixel optimization and a bit of waterfall climbing allowed me to maximize time spent on the fast water. 4-3: Stayed low; saved 5 frames.
Act IV total: -81

5-1b, c: Using the invincible fire wheel to pass through the spikes in 5-1b saves 3 frames and using the sword/hit-delay to get the spikes to boost me over the wall rather than waiting for the invincibility from the hit in the previous screen to wear off saves 10 frames in 5-1c. 5-2a: Hit from spider = pass through bat = no wall climbing = 3 frames faster. 5-2b: The sliding is to optimize subpixel position for the next area. 5-2c: Made the ninja appear early for a higher boost saving 6 frames. Unfortunately being almost half a pixel forward was still more than half a pixel short of getting out of here one frame sooner. I kept it in anyway because, damn it, it's optimal! Also, it allowed me to knee-slide to the exit without costing time. 5-3: 1 frame faster. Whee!
Act V total: -23

6-1: Figured out why I was 1 frame slower than FunkDOC before: subpixel position. One more frame of movement in 6-1b fixed that. I also show off an interesting (but useless, though I'd love to be proved wrong) glitch in 6-1c. It happens with objects that disappear when they hit Ryu. When such a collision occurs, the object's positional data isn't reset and it's vector at the time of the hit can be passed on to, and more interestingly, maintained by an enemy that isn't on-screen yet (I think). The number of objects on screen has something to do with it too. Anyway watch out for the speedy bat. Demonstrating this glitch with an enemy that isn't supposed to fly would've been better but I wasn't able to find a way to do that without slowing down.
Act VI total: -1

7-1a: Made the red blob appear in mid-air; saved 3 frames. 7-1c: Made the exploding fireball thing appear earlier; avoiding wall climbing. 14 frames faster. 7-1d: 1 frame faster. Would've been 2 if I'd taken a hit from the flame but that would've cost time in 7-2. 7-2a: Making the snake-cannon and the giant bat appear earlier saves 8 frames total. Requesting a new bat and waiting a bit saves 35 frames at the exit. 7-2b: 3 frames slower. Have to grab the wall since I left the previous area while in the air. Oh well. 7-2c: 1 frame faster by removing a use of the fire wheel and taking a hit instead. I wasn't going to change this since it looks a little sloppy but a later 1 frame improvement needed a companion. 7-2d: Better subpixel position. 3 frames faster. 7-2e: Subpixel position again. 1 frame faster. 7-3: The twenty-one most awesome pixels in the history of video games once again bring down Jaquio without the aid of special weapons. This is 8 frames slower than with a single use of the fire wheel as in the previous run, but that's made up for later. 7-4: 4 frames faster... except I press start a frame late after the fight to get the final boss in optimal position, so -3. 7-5: Having another fire wheel to throw at the head saves 16 frames. Slightly different strategy for the belly saves 4 frames.
Act VII total: -79

Memory info:
  • 0550= x position
  • 0538= x subpixel
  • 003A= x position
  • 0039= x subpixel
  • 0580= y position
  • 0568= y subpixel
  • 05B0= x speed
  • 05E0= y speed
  • 0080= Ryu HP
  • 060F= Boss HP
  • 0563-0567= enemy x position
  • 0593-0597= enemy y position
  • 05C3-05C7= enemy x speed
  • 05F3-05F7= enemy y speed
  • 0042= frames until wind changes direction in 2-2 (not very useful but nice to know I guess)
  • 0068= invincibility timer (counts down from 60 from the time Ryu first touches a surface after getting hit, rather than from the time of the hit as in NG1)
And a big thanks to Maximus for TAS movie editor.

adelikat: Nice improvement, accepting for publication.
Bisqwit: Processing...

Last Edited by on 1/1/2022 6:13:15 PM
Page History Latest diff List Referrers