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.


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15619
Location: 127.0.0.1
This topic is for the purpose of discussing #6491: ajfirecracker's NES Die Hard in 01:44.76
Dimon12321
He/Him
Editor, Reviewer, Experienced player (597)
Joined: 4/5/2014
Posts: 1227
Location: Romania
Nice improvement! I didn't know it's possible to blow up the roof to finish the game, by "dying" with health remaining =) That was interesting to read. Unfortunately, this TAS was made using QuickNES core which is less accurate in terms of emulation. The problem is fixed now. Link to video If there were no major changes in the core, you might play it back on actual version of Bizhawk. I downloaded 1.11.6 at once.
TASing is like making a film: only the best takes are shown in the final movie.
Spikestuff
They/Them
Editor, Publisher, Expert player (2655)
Joined: 10/12/2011
Posts: 6446
Location: The land down under.
This pulls two questions from me then. - Why was this done on 1.11.6 this version is 3 years old. - Why was this done on the less accurate QuickNES?
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
ajfirecracker
He/Him
Player (63)
Joined: 10/11/2017
Posts: 32
I simply used the software I had installed for playing games. If there's some sort of issue I'd be happy to review and port the inputs to a different emulator
EZGames69
He/They
Publisher, Reviewer, Expert player (4467)
Joined: 5/29/2017
Posts: 2764
I would test it on later bizhawk if you can, and see if inputs do sync on neshawk. At the very least it could be as simple as adding a few extra frames to the beginning.
[14:15] <feos> WinDOES what DOSn't 12:33:44 PM <Mothrayas> "I got an oof with my game!" Mothrayas Today at 12:22: <Colin> thank you for supporting noble causes such as my feet MemoryTAS Today at 11:55 AM: you wouldn't know beauty if it slapped you in the face with a giant fish [Today at 4:51 PM] Mothrayas: although if you like your own tweets that's the online equivalent of sniffing your own farts and probably tells a lot about you as a person MemoryTAS Today at 7:01 PM: But I exert big staff energy honestly lol Samsara Today at 1:20 PM: wouldn't ACE in a real life TAS just stand for Actually Cease Existing
ajfirecracker
He/Him
Player (63)
Joined: 10/11/2017
Posts: 32
It syncs on Bizhawk 2.3.2 / NesHawk but requires 1 extra frame at the start of the file before the first input can be accepted. My apologies for the emulator issue Thanks very much for catching it Despite the fact that I was able to get it to sync, I am having issues trying to correct header / sync settings data in order to make a movie file that plays without any issues. Is there no easy way to convert the input file? Edit: A corrected file (one extra frame before input starts) which I believe has full NesHawk compatability is here: http://tasvideos.org/userfiles/info/57441273166623693 I had to unpack the archive and change the sync settings file to one generated with NesHawk, and now I am able to sync on the NesHawk core and play back the movie without any issues
Player (210)
Joined: 7/7/2006
Posts: 798
Location: US
Technical criticism: - Walking diagonally alternates between X,Y=4,4 and X,Y=3,3 This route walks in 3,3 more often than required, which probably loses around 20 frames over the course of the run. - I'm pretty sure you can manipulate the guy with the key to make it faster and not have the radio overlap. This probably saves around 25-30 frames. Just get him to walk left slightly after the first shot hits I think. Maybe I'm wrong. - The green crook on the bottom floor seems like he's wasting more time than required. It seems like the crook pattern on the roof isn't great. The zip to the foot power was new to me. I personally prefer "fastest ending achievement" over "fastest input ending". This movie is slightly slower to "finish the game" in exchange for "dropping the controller sooner". It's a debatable topic though. I don't have a strong opinion on publishing in the current state. It's far better than the previous run. It has minor technical shortcomings. If you want feedback in the future, feel free to reach out. For historical/timeline purposes: Flobeamer1922 originally posted this glitch Aug 20, 2017. I optimized the foot power route more in July 2018. My notes for unoptimized TAS routes (Spent maybe an hour on each) were the following: C: 4 + 240/256, 11 stairs, Don't Grab Foot Power - 6752 frames. D : 4 + 240/256, 11 stairs, Grab Foot Power - 6733 frames. Route D appears fastest non tool-assisted. Route C may or may not come out slightly ahead when rigorously optimizing movement in a tool-assisted setting. (I think the foot power probably makes this Route D TAS faster now, but it might still be worth investigating the route C.)
Active player (378)
Joined: 9/25/2011
Posts: 652
ajfirecracker wrote:
In order to damage my feet optimally...
Ha ha! Words you'll only ever find at TASVideos. Great run, absolute yes vote!
ajfirecracker
He/Him
Player (63)
Joined: 10/11/2017
Posts: 32
Kirkq wrote:
Technical criticism: - Walking diagonally alternates between X,Y=4,4 and X,Y=3,3 This route walks in 3,3 more often than required, which probably loses around 20 frames over the course of the run. - I'm pretty sure you can manipulate the guy with the key to make it faster and not have the radio overlap. This probably saves around 25-30 frames. Just get him to walk left slightly after the first shot hits I think. Maybe I'm wrong. - The green crook on the bottom floor seems like he's wasting more time than required. It seems like the crook pattern on the roof isn't great. The zip to the foot power was new to me. I personally prefer "fastest ending achievement" over "fastest input ending". This movie is slightly slower to "finish the game" in exchange for "dropping the controller sooner". It's a debatable topic though. I don't have a strong opinion on publishing in the current state. It's far better than the previous run. It has minor technical shortcomings. If you want feedback in the future, feel free to reach out. For historical/timeline purposes: Flobeamer1922 originally posted this glitch Aug 20, 2017. I optimized the foot power route more in July 2018. My notes for unoptimized TAS routes (Spent maybe an hour on each) were the following: C: 4 + 240/256, 11 stairs, Don't Grab Foot Power - 6752 frames. D : 4 + 240/256, 11 stairs, Grab Foot Power - 6733 frames. Route D appears fastest non tool-assisted. Route C may or may not come out slightly ahead when rigorously optimizing movement in a tool-assisted setting. (I think the foot power probably makes this Route D TAS faster now, but it might still be worth investigating the route C.)
I tested walking diagonally but wasn't able to save time that way in the testing I did, so I basically dismissed it. Do you have the memory addresses for X/Y position? As to the green crook on the bottom floor, I don't think I'm losing any time dealing with him. I don't get hit or stop moving left at any point... What would a more optimal section look like there?
Player (210)
Joined: 7/7/2006
Posts: 798
Location: US
Regarding the bottom floor. Walking diagonally is 3,3 or 4,4. Walking straight is 5,0 or 0,5. Walking up-left followed by down-left is slightly slower than just walking left. If the crook wasn't in the way you could just walk straight left. Also the bottom floor crook throws a flash grenade which loses a few frames. For finding memory addresses, please refer to this page, it's really easy to learn how to find character position: http://tasvideos.org/MemorySearch.html local CharX = 0x00A1 local CharY = 0x00A3 local CameraOffsetX = 0x0044 --from character local CameraOffsetY = 0x0045 local Floor = 0x0065 local CameraX = 0x006F local CameraY = 0x0070 local LifeDiff = 0x00A6 local Crooks = 0x00AB local Life = 0x00AC local Lock = 0x00AD local TimerFrames = 0x00AE local Seconds = 0x00AF local Minutes = 0x00B0 local FeetUnit = 0x0797 local Feet = 0x0798 --8 feet bad, 0 feet good
ajfirecracker
He/Him
Player (63)
Joined: 10/11/2017
Posts: 32
I appreciate it. I am familiar with the ram search but I was hoping you would already have the relevant addresses
Experienced player (877)
Joined: 11/15/2010
Posts: 267
I say yes to the improvement
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15619
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [4031] NES Die Hard by ajfirecracker in 01:44.76
ajfirecracker
He/Him
Player (63)
Joined: 10/11/2017
Posts: 32
The published movie is great, thanks very much folks. I do want to raise one small point of clarification - my movie uses the hardest difficulty (of the two available) rather than the easiest Edit: Looks like that's fixed, thanks very much :)