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.
Authorship
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.
Category Rules
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.
Story Time
This movie has story that is almost a decade long:
The story concludes in July 2022 as follows:
The current work starts from the WIP movie from September 2016, and improves it on the following aspects:
It was resync from FCEUX to QuickNES prior to re-routing
Found a faster kill on Stage 5's boss
Re-planning, and re-optimizing all stages from 6-1 onwards
Re-worked Demon kill, where Ryu clips inside it and damages only the Demon's heart.
Work on entertainment factor, including Train Mode in 4-2, post stage 5 and 6 boss kills
A final resync from QuickNES to NesHawk for increased emulation accuracy.
Emulation
Rom Information
Name: Ninja Gaiden (U) [!]
SHA1: CA513F841D75EFEB33BB8099FB02BEEB39F6BB9C
MD5: 0C2CCCDA6BA6CAB7BEDE0FF05E7F6852
Emulator
EmuHawk 2.8.0 (Core: NesHawk)
Resynchronized from the initially submitted [EmuHawk 2.8.0 + QuickNES] movie, using Scumtron's DPCM glitch detection tool, available here.
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.
Future work
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.
arkiandruski: Looks good, The lack of weapons and powerups, and the need to avoid enemies present a lot of challenges that aren't present in the currently published run. Accepting as a new branch.
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.
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.
My homepage
--Currently not much motived for TASing as before...--
But I'm still working.
OK, through Act V, everything seems standard.
*Watches Act VI*
WTF?
Yes vote, and a mop to clean up the splatter from my head exploding trying to understand how the Act VI stuff worked.
Ouch! Just watched the encode and it's missing the entertainment moves after the boss fight. I should've been clearer that the movie to use for encoding was this one:
https://tasvideos.org/UserFiles/Info/637936734131933976