Tool-assisted game movies
When human skills are just not enough

Submission #6491: ajfirecracker's NES Die Hard in 01:44.76

Console: Nintendo Entertainment System
Game name: Die Hard
Game version: USA
ROM filename: Die Hard (USA).nes
Emulator: Bizhawk 2.3.2
Movie length: 01:44.76
FrameCount: 6296
Re-record count: 3140
Author's real name: Adam Pierce
Author's nickname: ajfirecracker
Submitter: ajfirecracker
Submitted at: 2019-08-22 02:21:27
Text last edited at: 2019-08-31 08:14:38
Text last edited by: fsvgm777
Download: Download (3070 bytes)
Status: published
Click to view the actual publication
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:
This is a more optimized version of the Die Hard route, using the same glitch as the published run to reach a good ending but simply getting there much more efficiently, saving over 20 seconds.

Special thanks to kirkq for doing the rough routing which became the RTA route and is now presented here as a relatively optimized TAS.

Note that this is completed on the hardest difficulty which allows an alternate spawn location and makes the few enemy fights in the route more challenging and time-consuming. The time achieved here is equivalent to 1:47.100 RTA, which begins on difficulty select and ends on the first frame that a good ending has legible text. This specification is necessary because some cutscenes take several frames to properly load the text.

Basic explanation of the route: This movie reaches a good ending in the game by "dying" with health remaining. To die with health remaining, I activate a scripted explosion sequence on the roof of the building and stand on an area of the roof lacking the appropriate hitboxes. In order to activate the explosion sequence, I must collect C4 and a detonator. The detonator is only available from a special enemy named Heinrich once the in-game time reaches a certain point. To reach the in-game time as quickly as possible, I writhe on some broken glass then drag myself up and down the stairs repeatedly.

Detailed notes:

First, my goal is to advance the in-game time to spawn Heinrich.

Movement animations in this game take 3 frames to execute, so for most of my early movement I'm only pressing inputs once every three frames. This is the same speed as holding the inputs, but this allowed me to see clearly where I could make changes, which was otherwise confusing.

I proceed to the 33rd floor which has a glass window right next to the stairs. I fire two bullets as I enter the room, one to break the glass as quickly as possible and one to manipulate the green enemy south of me (seen as I exit the room). The extra shot prevents this enemy from coming up and shooting me while I'm damaging my feet, and prevents him from throwing a grenade whose screen-flash effect wastes 7 frames if it misses me and a ridiculous amount of time if it hits me. The game has a foot health meter (visible on the pause menu) in addition to the regular health meter. The foot health is stored in addresses x0797 and x0798 (thanks kirkq!) In order to damage my feet optimally, I press sprint+left+right every 3 frames. Left+Right simultaneously or in rapid succession causes an interesting visual glitch. Foot damage accumulates at 8 damage per 3 frames, plus 3 damage per 3-frame cycle occasionally. I wasn't able to get the extra 3 damage every cycle, but I was able to get it fairly regularly with the method I chose, far more than any method I tested where the character walked around on the broken glass. Overall, I averaged 2.95 foot damage per frame. This lower foot health will cause more in-game time to pass with each trip up or down the stairs, while the stair sequence itself is virtually unchanged in overall time consumed.

I damage my feet just enough for the in-game time to work out with the stair sequence that follows, then leave and climb up and down stairs until I reach floor 32 with 40 seconds remaining on the second lock. This is the point at which Heinrich spawns, and unfortunately if you arrive at the 31st floor at this time he will come out of the elevator which is quite far from the stairs. By allowing the appropriate time to pass while I am on the 32nd floor, when I come down to the 31st floor I will be much closer to Heinrich. My understanding based on my RTA experience was that it should be possible to spawn Heinrich in a pseudorandom location if the appropriate time passed while entering the 31st floor. Unfortunately I wasn't able to get this to work despite numerous attempts, including manipulating the difficulty select frame at the start of the game or waiting for frames to pass at other points in the route prior to reaching the 31st floor.

In any case, I reach the 31st floor with the earliest good Heinrich spawn I was able to find. The first bullet I fire in the hallway triggers Heinrich to come out into the hallway. The second bullet I fire hits Heinrich as he walks into the hallway. As I enter the door, I fire a third bullet, hitting Heinrich a second time and killing him. At the same time, the door closes on me and I am clipped into the wall, using the wall ejection to reach the first aid kit more quickly than would otherwise be possible. This first aid kit increases my foot health and thus movement speed. I pick up the detonator from Heinrich's corpse and leave the room. On the way to the stairs, one of the crooks is in my way so I shoot to knock him out of the way then carefully move around him without bumping him (which would reset his ability to target and shoot me). Additionally, I move down slightly as the crook fires in order to make his shot over-track and miss below me. This is necessary as the door will slow me down somewhat and the bullet would otherwise hit me and cause me to drop the detonator, losing time. I proceed up to the 35th floor.

On the 35th floor, I get a good enemy spawn. This is psuedorandom but I got the desired result on the first frame I was able to reach. Here, inputting movements only every 3 frames was causing the character to stop and stand still for extended periods of time (think 10-frame chunks), so I switched to using held inputs. I enter the break room on the right and kill the guard, who drops a key needed to access the roof. The guard fight here may seem suboptimal, but I hit him left and then up in order to prevent the key and radio from overlapping when he is killed. If I shoot the guard right as I enter the room, these items end up overlapped and I can't avoid picking up the radio. The radio triggers multiple additional cutscenes and loses significant time. With an inferior enemy spawn, I would have had to check the roof door in order to spawn this guard then backtrack to find and kill him. I grab the C4 next to the roof stairs, and make my way up to the roof.

Once on the roof, I dodge the enemy bullets and plant the C4 to trigger the scripted sequence that will end the game. I'm able to end input slightly early by using an enemy projectile to push me fully into the safe area. I tried to get multiple projectiles to hit me so that I could end input even earlier, but I wasn't able to get pushed far enough when I did this. Possibly a later roof entry would save time by allowing an earlier end to input.9

There is a visual glitch from frames 516 to 929. Anywhere in this window might be a good screenshot, particularly some of the broken enemy sprite sections such as frames 821-823.

Masterjun: Judging.

Masterjun: Replaced movie file with one that works on a newer version of the emulator.

Masterjun: A nice improvement. Some more optimization possibilities have been pointed out in the discussion thread, but nothing major. Accepting as an improvement to the previous run.

fsvgm777: Processing.

Similar submissions (by title and categories where applicable):