Submission Text Full Submission Page
This submission is an improvement over the last by more than nine minutes and is intended to completely supersede it. Time has been saved in almost every single room thanks to much more rigorous optimization. Unfortunately the ending cutscene still gets stuck in the exact same manner as before.

Game objectives

  • Reach the ending faster than the previous submission
  • Be more entertaining than the previous submission

Common Optimizations

  • Dialogue has been sped up substantially. In my previous submission I simply mashed B through dialogue 2 frames on, 2 frames off. Aside from frequently missing the soonest input frame this way, dialogue boxes also progress much faster when alternating between two buttons such as Start and B.
  • Most scenery in towns and dungeons can provide you a small boost of speed for about 3-4 frames if you push up or down against a corner while walking past. This has been abused more consistently than last time.
  • In general, it takes about three frames to turn around while walking left/right or down and left/right, but walking up and left/right you will flip instantly. The game also remembers your direction from the previous room, which will cause this delay if you begin to walk the opposite direction in the next room. By changing direction on the last input frame before entering a door, you can change your direction for the next room without any turning time.
  • It can take several frames longer to process an enemy death when they drop something. Additionally, there is a one-frame delay every time you pick up an enemy drop. Hence, effort has been made to minimize the appearance and collection of unneeded enemy drops.
  • The one-byte address $0000A5 stores the RNG seed value for seemingly all random events in the game. When it is required it is updated by adding in the Horizontal and Vertical Scanline Counters $00213C and $00213D. The outcome of an RNG update can be influenced by controller input whenever controller input is being accepted - which means it cannot be manipulated during sword techniques and other events where you lose control. This manipulation is essential to optimizing all combat in the game.
  • Accessing the game's menu takes an average of 200 frames. As a result menu accesses have been minimized as much as possible.
  • Speed of World Map travel is determined by two things: Direction and the amount of scenery on screen. Direction is stored in $001909 and is used to look up a set of X- and Y-axis speed values from a table in ROM at $80/9F84. The furthest you can travel along one axis in one "step" is 8, but the number of frames between steps is determined by scenery on screen. For more information on the World Map in game, see the FAQ I created here.

Step by Step Commentary

Title / Introduction / Arsenal / Hujia

There is a very small window of opportunity for the first input to skip the opening cutscene entirely before it begins loading. The previous submission missed this and lost a second or two to the loading time.
To save time in the Arsenal I manipulate the lizard knight into immediately jump-attacking in order to land the first hit sooner.
Before moving on to Hujia the warp star near Rysis must be activated by walking over it, so you can use it to return for the Serpent Scales later.

Storehouse

In the first combat room I lose 176 frames to kill one scorpion and the moth, which is enough to reach level 2. This saves about 140 frames of combat in the following two rooms. By killing the sentries in the second room again on the way back, however, I reach level 4 by Piercia making that fight end four hits sooner. In the end this makes the Storehouse about 270 frames faster.
As an interesting note, Alex does not touch the floor once from the moment the boss fight begins until Piercia is dead.

Hujia / Galys Pass

I skip purchasing an extra potion while in the shop as it's not needed. You still must visit the shop in order for the bombs to be finished.
No fruit is collected in Galys Pass this time as the chest game MP upgrade is skipped altogether. Moths would require four hits at this point and so can't simply be killed in passing for extra EXP. The EXP would not make an appreciable difference to begin with. Since this run never comes back through Galys pass later we don't need to collect the HP upgrade to release the switch, but the max health is still extremely important later.

Lake Area

Unlike the previous run I collect the sword technique first to better suit my intended path. Upon leaving the stump, it is slightly faster to walk backwards to Rodister's cave by about 20-30 frames. Despite the rotation time at the end to get in the door, it saves overall by keeping the walls out of your field of view while travelling to decrease scenery-rendering lag.
Inside the cave I skip collecting the Crystal in the chest to the left, as it is unnecessary. If you walk directly to a chest immediately following the dialogue it will not open, the small delay is required.

Swamp / Random Encounters

The travel to the swamp is unfortunately one of the most sloppy-looking parts of this run. The goal is to reach the swamp then enter a random encounter as quickly as possible. The random encounters follow you around the map and periodically respawn in a new location on a timer. When you walk too far from them, their timer is forced to expire and they respawn immediately. When taking a more direct path to the swamp the encounters will spawn further in, resulting in more time consumed to walk back out again. This was the best compromise I could manage.
The encounters themselves are rather painful. To begin with you have to manipulate an encounter with three of the green bug enemies, which is a rare occurrence. Secondly, some luck manipulation was needed to move them together so they can all be hit at once. They have varying invincibility timers following hits depending on their follow-up actions, resulting in some delays between hits. These enemies can thankfully be "herded" by walking or jumping into them, which will force them to jump away from you. They can only damage you during their attack animation, or by landing on you in a certain way.
Finally, the drops from these enemies had to be specific. They each drop two items, including at most one heart. In the first encounter all three had to drop one heart to maintain enough health to finish the second encounter. In the second encounter, one of the enemies had to give the "Jade Bounty" (a 1/64 chance for a world-map encountered enemy to drop 85 jade instead of their normal loot) to provide enough jade to purchase the Max HP upgrade from the wandering merchant in Casdra. Additionally one more heart was required for a sword technique to save time at the start of the Fire Cave.
These two fights replace the much more time-consuming visit to the Wet Cavern and give a 3020 EXP advantage over the previous route. The only real sacrifice is the 1000 Jade mostly used to purchase the Miraj HP Upgrade, which is not needed. Unfortunately a small amount of time is also lost thanks to this new strategy: The timer to end the encounter and return to the world map (address $006D3C) begins counting down as soon as the fight ends, but each time Alex gains a level the counter is reset and begins again. While this loss is totally insignificant compared to the time saved by the new route, the delay does not exist when levelling up indoors.
As the next destination is the Casdra-Rysis warp star which can simply be backed onto, there is no reason to turn around and walk forwards after the two random encounters.

Rysis Again

One notable event here: Accessing the menu while exiting an area to the world map somehow prevents the perspective shift that normally occurs, leaving you facing the door you just emerged from. While facing this direction does not save walking time in this case, it saves the time required for the perspective shift itself (as a menu access to select the Serpent Scales was required anyways).
Taking the warp star back to the Fire Cave is substantially faster than crossing Galys Pass again.

Fire Cave

The fire cave is largely similar to the previous run. One new addition is the damage boosts off the small fires into the left door. Taking damage generally wastes time in Dragon View, but the long post-hit delay is skipped when the damage pushes you into a doorway, allowing this trick to save 20-30 frames.
It was necessary to manipulate enough jade drops to reach 300 by the end of the Fire Cave so as to purchase the HP Upgrade in Casdra. The room with 4 enemies before the boss was crucial to this, and required extensive manipulation as those particular enemies are heavily biased to drop hearts instead of jade.
The boss, Efreet, requires 4 bombs to kill at level 13 and can be finished very quickly thanks to luck manipulation keeping him from using his charge-attack (during which he is invincible and after which he must be chased down). He can alternately be killed with 8 normal attacks or 6 sword techniques at this level. As the serpent scales are no longer needed, switching to bombs costs only one menu access instead of two and is therefore a viable option.

Casdra / Snowfield

No major changes from previous run until exiting the "Snowfield". As a menu access is required to select the fire ring the trick used at Rysis is done again to walk backwards to the Fortress, mostly saving just the perspective-shift time. The chest game is skipped altogether as the extra MP capacity is not needed.

Fortress

Extra time is taken along the way to kill gargoyles for MP stars. Five stars are needed to fight the Frozen Horror without a Crystal (saves two menu accesses as well as picking up the crystal at all). The sixth star is required to reach the Sword Upgrade in the Kiere region. As the Ice Golems never seem to drop more than one star and can only be killed quickly by spending a star, the Gargoyles are the only option to recover enough MP along the way.
The Frozen Horror could be killed in fewer hits by using bombs again, but there is no concievable way to save enough time to balance out the two extra menu accesses required to switch to bombs.

Keire

Only the minimum amount of health was collected from the Ice Fortress to finish the fight before the Giza encounter, as you are fully healed following it. The second mandatory fight in Keire is slightly slower than the previous run in order to collect enemy drops that are required this time around.

Journey to the Desert

Mostly unchanged aside from slightly better world map travel. In the Landslide the pillars are melted before taking the HP Upgrade so that the melting animation can continue through the dialogue, saving time.
On exiting the Landslide the no-perspective-shift trick is used one more time as the switch from Fire Ring to Ice Ring is needed anyways. Walking backwards initially saves a few seconds off the trip up to the bridge across the river, but this gain is entirely lost if you continue backwards the rest of the way. However, by turning around at this point, the rest of the trip to the Quicksand Cave takes the same amount of time as it normally would and the earlier savings are almost entirely preserved.

Quicksand Cave / Sandworm Hunt

The NPC in the basement of the Quicksand Cave must be spoken to to initiate the hunt for the Golden Sandworm. This NPC is not present until after speaking to Methraton in Keire.
Following the Quicksand Cave this run foregoes the trip to the Ancient Forest (to get an extra 8037 EXP and MP UP). This is one of the three largest time savings in this new run, along with the swamp emcounters and the sandworm hunt itself.
The Golden Sandworm can be found on the seventh encounter after initiating the hunt, at the earliest. Options to encounter on the first 6 fights are 1 Scorpion, 2 Scorpions, or 1 Sandworm. The Sandworms cannot be killed on the first pass at the current level, making them very slow to fight. The previous run recreated a specific series of random encounters from another playthrough that achieved the game end glitch, which consumed a large amount of time.
The six scorpion fights abuse what seems to be a bug: The specific combination of attacks used (Sword Technique up, Down-Air attack while falling and Ice Ring immediately upon landing) for whatever reason causes the Scorpion to be hit by the Ice Ring twice, which normally should not happen. As the Ice Ring does 16 or 17 damage per hit and Sword Techniques do 11 minimum (and all normal enemies have 40HP), this combo will always kill a desert Scorpion completely independent of the player's level or weapon upgrades. At level 16 (with lv. 3 sword) this combo can be done slightly faster yet by replacing the Sword Technique with a normal jump-attack, but that savings is much smaller than the time required to level to 16 by this point.
There is an embarassing delay in the middle of the string of encounters where both clouds have spawned inside the wall, and the only option is to wait for them to emerge. While it is possible to manipulate them to spawn elsewhere and avoid this, the alignment of the fights was generally convenient and I was unable to beat this time through trial-and-error.
The Golden Sandworm, unlike normal Sandworms, is not weak to the Ice Ring and so must be killed with four sword techniques. The timer to end the encounter and return to the world map (address $006D3C) does not begin counting until the chest containing the Horn is opened.

Quicksand Cave / Miraj / Under Miraj

The Wandering Merchant in Miraj is skipped this run as the extra HP capacity is not needed. Another omission is the walking-down-and-back-up-again on the left side of town before the dungeon. This was done in the previous run to deliberately set $7EBB46 to 48 to match a previous successful run. $7EBB46 stores your horizontal position in town while walking down from one screen to another and was previously found to influence the glitch.
No major changes in the rest of this segment aside from better optimization of fights and movement.

Ortah

Some parts of Ortah have lost time over the previous submission due to arriving at a lower level, most notably the first fight against the two Warlock enemies to get the Key. These losses were small and a definite improvement over clearing the first basement room in the Quicksand Cave for additional EXP, which would have taken approximately 700 frames.
The boss in Ortah requires 17 sword techniques to kill. As you do 1 damage with normal sword attacks until level 23, this is the only practical way to fight him. Performing 17 sword techniques requires you to spend 136 health and Alex's max health at this point is 80. By reaching the fight with no available health remaining and using both potions collected, we are just barely able to finish it. In theory this could be accomplished with an even lower HP capacity and two potions, but the lower HP capacity would complicate other parts of the run.
The boss will dodge your attacks nearly every time unless you wait for him to attack first, but he can still be hit in the air before he begins to land. At one point I manage to cut a cycle short by forcing him against a wall and then walking behind him, but this is difficult to reproduce.

The Glitch

Testing the glitch for the ending is definitely the most time-consuming and irritating part of the entire TAS. The plus side is thanks to some fixes in the more recent versions of BizHawk it is far less painstaking than it used to be.
Upon reaching the final room you have at least 24 possible glitch progressions, one for each possible value of $00BB37 (the timer for the torch-flicker background animation). Upon pressing a button to advance past the first text box the program will derail, eventually resulting in one of four outcomes:
  • The emulator will freeze (By far the most likely outcome)
  • The program will get stuck in an infinite loop branching on a condition that never changes (Common)
  • The program will get stuck in some other arbitrary loop that may or may not be infinite, but can go on for several minutes (rare)
  • The "wrong warp"/Game End Glitch will occur and the ending cutscene will play (obscenely rare / requires some unknown setup)
If no ending was achieved after testing the final input on all values of $00BB37, the only recourse is to go back to an earlier savestate and change something prior to entering the room. Extremely subtle changes can have a tremendous impact on the progression of the glitch (eg/ jumping or attacking before entering the room, opening the menu in a different spot, using an item, or fighting the boss differently). However, the exact mechanism by which the glitch produces the ending cutscene is still not fully understood.
In order to produce this particular Game End Glitch I employed a brute-force approach of small changes to the last few rooms of Ortah. The combination of deliberate changes that succeeded included changing the screen position of the last menu access, collecting more health from the boss fight and jump-attacking the wall shortly afterward. Still, the key to this succeess could just as easily be luck as any of these things.

RAM Watch Addresses

  • 0000a5 - RNG Seed from H/V Scanline Counters
  • 001C14 - World Map X Position (East-West) (2 bytes)
  • 001C16 - World Map Y Position (North-South) (2 bytes)
  • 001909 - World Map Orientation
  • 006D3C - Timer to End Random Encounter
  • 006F9D - Alex's X (horizontal) position on screen
  • 006FA1 - Alex's Y (depth) position on screen
  • 009BAA - Causes Ortah Glitch, set to 7F on killing Piercia
  • 00BB37 - Background Torch Flicker Timer
  • 00FBC9 - Random Encounter Cloud 1 X Posn (Coarse)
  • 00FBC2 - Random Encounter Cloud 1 X Posn (Fine)
  • 00FBCB - Random Encounter Cloud 1 Y Posn (Coarse)
  • 00FBC4 - Random Encounter Cloud 1 Y Posn (Fine)
  • 00FBDA - Random Encounter Cloud 1 Timer
  • 00FBE9 - Random Encounter Cloud 2 X Posn (Coarse)
  • 00FBE2 - Random Encounter Cloud 2 X Posn (Fine)
  • 00FBEB - Random Encounter Cloud 2 Y Posn (Coarse)
  • 00FBE4 - Random Encounter Cloud 2 Y Posn (Fine)
  • 00FBFA - Random Encounter Cloud 2 Timer

Opportunities for Improvement

It was discovered shortly after submitting that the boss fight in Ortah can be about 940 frames faster than this submission by manipulating the AI to skip the horizontal-spinning-through-the-air that normally follows every hit.
The wall on the right side of the room is not actually flat - it's wider at the bottom than at the top, and widens out in maybe two or three increments as you go down. What you need to do first is lure the Joker up a bit so that he's in line with the further-out wall, so that after you hit him against it you can then walk behind him by walking lower. If you take the first opportunity to land a hit when the fight starts, you'll be forced to wait a cycle or two to align this trick and lose time. The most efficient method I can tell is to have him immediately shift upwards and back toward the wall allowing you to start right away.
For whatever reason, being behind him while he's against the wall at his key decision-making frame (the moment he spins up to full height from the ground) will keep him from flying away horizontally like normal and he will try to attack again. With a bit of manipulation to keep him using the right attacks, you can keep smacking him into the wall theoretically indefinitely. It's also easy to accidentally lure the boss back down again between hits, this needs to be avoided to keep the combo going.

feos: Acceblishing...


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15575
Location: 127.0.0.1
This topic is for the purpose of discussing #4440: Khaz's SNES Dragon View "game end glitch" in 51:47.48
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Player (37)
Joined: 2/16/2012
Posts: 282
Great job! That's some massive improvement. Glad to see you've come a very long way since first picking the game up, both in recognizing optimizations and technical ability to dig through the code. Sucks about the ending, but at the same time it's pretty much irrelevant. Btw, I voted no on accident (mixed up tabs) but the vote should be a yes!
PJ
He/Him
Joined: 2/1/2011
Posts: 182
Location: Western NY
The final time and the notes in the submission text are extremely impressive! I, too, need an encode to watch it, but I have really high hopes for this. A preemptive great work Khaz! I'm really proud of your progress with this. :D
Active player (476)
Joined: 2/1/2014
Posts: 928
jlun2 wrote:
Requesting encode :)
Link to video encoding had some really weird resizing issues. I ended up with about 3-4 different resolutions. didnt have time to make it 720p so 360p temp is all you get this time
Joined: 8/3/2004
Posts: 325
Thanks for the encode. I watched both this and your old run side by side and it seriously puts your old run to shame. I didn't really realize while watching the old run standalone but there was a lot of time saved simply by better optimization (I noticed you skip text faster for example and saved a bunch of time even during the intro). Good run!
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Thanks! I wonder how rare it is for the game end glitch to not only work but also play the end properly? Or even warp to the ending scene directly lol
Player (54)
Joined: 11/20/2013
Posts: 103
So in my experience, I believe I have seen a warp that kept the ending intact twice (after the early runs I did that were very, very slow). Both times it looked exactly the same as PJ's original one, ie/ this screen: Every time I've achieved the ending through a different-looking glitch, the end cutscene has been broken. HOWEVER, it's worth noting that on the most recent run, I got this same exact screen a couple times only to have it crash instead of entering the series of glitched events like before. My best guess to how it works is that you need to have the RAM-destroying loop working within a specific area, such that it can overwrite the loop counter to end the loop early but NOT wreck some other essential variables that it assumes are set correctly when you reach the ending (which seems extremely unlikely). Alternately, perhaps the loop can be set up to end quickly naturally and all that's needed is to preserve a specifc block of memory. Either that or the one specific glitch progression we found earlier actually sets some numbers how they need to be prior to jumping to the ending, which could make the working ending almost impossible to reproduce. Either way, my experience is that it can take a solid week of daily grinding at the ending to achieve one ending, and that ending has maaybe a 33-50% chance of working right at the absolute best. I really can't say until I finally understand how the ending is called and what addresses that end cutscene relies on.... As far as warping to the ending scene directly, I've never seen it happen. My guess is that we can get the ending pretty easily because it is treated as a standard "event" call, which fits since it always seems to come after a series of other events (specifically, that noise you hear at 51:52 seems to happen before every warp). I'm guessing that the rest of the ending is designed to play as one whole block and skipping into the middle of it would be nearly impossible. I would very much like to end this run with an intact ending but as far as I know I may have broken whatever was necessary for that with my new route.
ars4326
He/Him
Experienced player (777)
Joined: 12/8/2012
Posts: 706
Location: Missouri, USA
Heck of an improvement, Khaz! Good job! Any plans on possibly running the prequel, Drakkhen?
"But as it is written, Eye hath not seen, nor ear heard, neither have entered into the heart of man, the things which God hath prepared for them that love him." - 1 Corinthians 2:9
Player (54)
Joined: 11/20/2013
Posts: 103
Hahahaha, not planning it. I tried to play Drakkhen back in the day, I really, really tried but I just couldn't get through it. Maybe someday. Now that I look around I'm really surprised that nobody seems to have even attempted a TAS of it yet. It seems more well known than Dragon View to me, if only for being a terrible game. Sounds like ideal TAS material! I might just look into that. >.> I still think I'd rather do a 100% run of this game first, finish what I started.
Ford
He/Him
Joined: 3/5/2013
Posts: 183
Location: California
You really did a hell of a lot of homework here. I like that you occasionally walked backwards on the world map, presumably to save the time it would've taken to turn around. I've played and beaten Drakkhen 1 before. It's not what I'd call a great game.
PJ
He/Him
Joined: 2/1/2011
Posts: 182
Location: Western NY
This is an amazing TAS! The optimization is SO MUCH better than the last submission, and it still got the game end glitch! This is a very obvious yes vote. I had a feeling something in the range of 55 minutes would be possible, but this is far beyond that! Really great work Khaz!
Experienced player (690)
Joined: 11/23/2013
Posts: 2232
Location: Guatemala
That screenshot is funny. You should take your screenshots with a much better quality, the last one wasn't so good.
Here, my YouTube channel: http://www.youtube.com/user/dekutony
Player (54)
Joined: 11/20/2013
Posts: 103
Sooooo, I hate to rain on my own parade here but I've just found out that you actually can sustain the short-cycle trick on the Ortah boss and save about 11-13 seconds... Feel free to watch: [Obsolete Video Removed] It takes some delicate setup. The wall on the right side of the room is not actually flat - it's wider at the bottom than at the top, and widens out in maybe two or three increments as you go down. What you need to do first (and why you can't go into it immediately) is lure the Joker up a bit so that he's in line with the further-out wall, so that after you hit him against it you can then walk behind him by walking lower. For whatever reason, being behind him while he's against the wall at his key decision-making frame (the moment he spins up to full height from the ground) will keep him from flying away horizontally like normal and he will try to attack again. With a bit of manipulation to keep him using the right attacks, and a lot of just-barely-possible positioning, you can keep smacking him into the wall long enough to finish the fight. I would very much like to include this development in my submission here but as previously discussed, getting the ending once again could take an hour or all month.... As such I'm not sure whether I ought to cancel it right now.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4043
If you try and re-manipulate it every time you think of just one input, you will go crazy :D Sit on it, maybe you'll find other things in the mean time, or maybe someone will figure out how the big glitch works.
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Well, either put that in the submission text as what to improve next time, or try and see if you can remanipulate the ending (and also have the last cutscene display correctly if lucky).
Player (54)
Joined: 11/20/2013
Posts: 103
Alright... I've noted this at the end of the submission description. I wasn't able to get the ending again right away so I'm not going to hold my breath. I think my time would be more constructively spent looking at the glitch itself anyways, now that I have enough examples to hopefully learn something. I would like the next submission to have a working ending, it's a shame to have it end the way it does... In the meantime, to be totally honest, I just need a bit of a break from this game.
Player (54)
Joined: 11/20/2013
Posts: 103
Just updated the video and such with a slightly better technique on the fight. You actually can start with the wall abuse right away if you manipulate him immediately into flying up and back toward the wall to align it. Time saved over this submission with the new method is about 940 frames. Link to video
Player (54)
Joined: 11/20/2013
Posts: 103
Wait! I just got it after the faster boss fight! Don't publish! One sec!
TASVideosGrue
They/Them
Joined: 10/1/2008
Posts: 2785
Location: The dark corners of the TASVideos server
om, nom, nom... sweet!