Ninja Gaiden is a game that invites you to go full violence: you get a sword, you get weapons, you break things, you kill enemies. However, it is also possible to beat the game without harming anything but the end-of-stage bosses. Even the final boss --the Demon-- can be treated nicely, only killing it by hitting its heart, and not his head, tail or shrimps.
This movie accomplishes all of the above and it does so at maximum speed. The result is a highly RNG and physics-manipulated movie that optimizes global routing and local movements in attempts to save every possible frame until the very end.
The authors of this movie are listed in the order of how many saved frames they contributed. Although this is, in some cases, an approximation, the submitters believe it reflects pretty well their respective contributions. Some of the authors are credited in absentia.
The authors define the pacifist category as follows:
No Enemies, except for bosses, shall be damaged
No Scenery shall be damaged
No Projectiles shall be damaged
Demon head, tail, and all its 'shrimps' shall remain untouched.
Note: the first version of this movie was made under a stricter rule, where the button B cannot be pressed (except for Up+B which is innocuous) during non-boss stages. This rule had to be discarded when resyncing to BizHawk, as pressing B was the only way to fix some occurrences of NES's DPCM glitch.
The game is structured into acts representing the story arcs in the game with bosses at the end; stages, the different playable parts of an act, and; substages, the division of a stage into multiple NES vertically stacked 'screens' to allow for the illusion of verticality within a given stage. The nomenclature goes as follows: III-2a, represents act 3, stage 2, substage a. Timing is structured as follows:
Substage timing starts from the very first frame where Ryu is playable (typically 2 frames before he appears on screen)
Substage transitions happen when the substage number (0x006E) changes.
Stage transitions happen when game mode* (0x002D) has a non-zero value. Alternatively, the preserved value of the A register at the start of the NMI routine that happily serves this purpose quite well.
Act transitions happen when a Boss HP (0x0066) equals 0.
Since there is no preceding movie, we compare our movie against use a combination of MESHUGGAH's et al. best work in progress files:
We ignore the first frame difference, since this is attributed to using different emulators
This category is fundamentally different from any%. In particular, it uses the following techniques extensively, which are seldom employed in the any% movie:
Enemy Spawn Delay (ESD) trick: This one consists of pressing L/R alternatively just before an enemy appears. By doing this, the screen keeps scrolling, but the procedure that checks whether an enemy/item must appear is not checked. Therefore, one can use this to 'delay' an enemy spawn by a few pixels/subpixels. However, if done for enough frames, it is possible to outright prevent the appearance of said enemy. This technique allows clearing up the path out of hard-blocking enemies, without having to kill them.
RNG Manipulation: The game contains a global timer which keeps advancing through stages. This means that delaying pressing S during a cutscene can make it possible to start the next stage with a more favorable RNG.
Enemy Slot Manipulation: The game allows for having a maximum of 8 concurrent enemies on screen. When a new enemy spawns, most of its attributes are reset to its proper values. However, some values are not refreshed, leading to some crazy effects like Joecurr's pre-kill. Another value that is not refreshed is the enemy's X subpixel, which is then inherited from the previous enemy to the new enemy occupying the same slot. By altering the order in which enemies spawn or de-spawn, it is possible to assign new enemies a favorable X subpixel. This is a crucial aspect in many skips in this movie and any future movies in this category.
Acts I-V (excluding boss) Breakdown
For resources about how these acts were resolved, I suggest reading the following resources:
User file history for Ninja Gaiden. Look for comments on files by MESHUGGAH, with the 'pacifisting' keyword.
The submitted movie differs from the WIP, in that the Act V boss is killed 15 frames faster, by not waiting for a new jump cycle.
Act VI Breakdown
This act requires a detailed HP-usage routing. Ryu starts with 16 HP which is lost every time you get hit. Different enemies/projectiles remove different amounts of HP. Most enemies remove 1 HP, but birds in particular remove 3 HP (this is unfortunate because bird-skips are very useful).
Instead of planning HP usage, the previous WIP contained a purposeful death in VI-2c to replenish it. This loses a couple hundred frames. Instead, my approach was to save as much HP from the beginning (VI-1a) where I lost around 60 frames compared to the WIP. It turns out that this strategy paid off since I was able to get most skips without needing to abuse death.
This movie is pretty much a baseline for future TASers wanting to improve this category. Anyone aiming to do that should choose one of three approaches:
Start from the beginning, using the improved movie as a starting point. The difficulties to face here is that of resyncing 4-1 onwards. This is by no means an easy task, as the amount of work is maximized. However, this approach is the one with the most potential reward. You will need to use Scumtron's bird manipulation tool to solve 5-1.
Start from the ending backwards. This approach will seek to improve on my contributions (eien86). Although I used a bot to refine the execution, there is surely a lot of potential in routing the global strategy and HP management. This is possibly the easiest way to find an improvement and publish an obsoleting movie.
Starting from 6-1 backwards. This approach will seek to improve MESHUGGAH et al. execution on the latter stages. Any frame found here would have a moderate amount of resyncing work, for the latter stages.
Acknowledgements and Attributions
MESHUGGAH, feos, Marx, jprofit22: The original work until stage 5's boss.
eien86: Stage 5's boss onwards. Reused some parts of the original work.
Scumtron: For being the one constant contributor to this movie throughout the years.
The entire Ninja Gaiden speedrunning community: who give their support and are always ready to help and contribute.
I really enjoyed the run. Beware the Sliding Ninja! I'm also interested in those sound glitches when some channels go mute for some reason.
And watching this makes me curious if Pacifist No Damage run even possible...
Really pleased to see this project finally leave WIP limbo. And I appreciate the historical breakdown too.
plug: Any future NG1 TASers should also be aware of the bird manipulation tool. It could use a lot more work, and may be meaningless without working knowledge of NG1 TASing, and in hindsight it could probably have been done entirely in Lua, but it really works.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
If TASing is meta-play, TASVideos Movie Rules are meta-meta-play!
Finally the long awaited pacifist TAS was finished after all those years.
Great job bruteforcing Act VI without needing for replenish health at all, and Enemy Spawn Delay is pretty insane.
Yes vote, and my screenshot suggestion is the second one.
--Currently not much motived for TASing as before...--
But I'm still working.