Emulator Details

  • Snes9x 1.51
  • Left+Right, Up+Down enabled

Objectives

  • Uses hardest difficulty setting
  • Aims for fastest time
  • Takes damage to save time
  • Unlocks a secret message

Special Thanks

I want to put this section first to give recognition to someone really wonderful. laranja and I originally were coauthoring this run. I had more time to work on the run, and after several weeks of a busy schedule, Marco graciously bowed out. You will be hard pressed to find someone as friendly as Marco. He was the first to discover the quick way to the first exit, and how to beat the last level without damage boosting. Some of his input remains in level 1-2. He also was the one to notice you can beat the 2 red balls with just 1 swing, saving 10 frames over the first submission.
Other thanks to:
  • Tompa, for discovering an even better skip to the first exit
  • StarFighters76, whose maps on gamefaqs saved me the hassle of actually playing the game.
  • Nahoc, for very quickly starting to encode my first submission before I cruelly pulled it for this 10-frame improvement.

Useful memory addresses

I found an obscene number of memory addresses that were essential in optimizing.
AddressTypeNameDescription
7E054Bb sX-SpeedSpeed along the X-axis.
7E054Ab uX-SubspeedThe fractional value of the player's speed. Unlike other games that only use this for acceleration, different values affect your overall speed.
7E0522w uX-PositionPlayer's exact position on the X-axis
7E0BACw u"X"Player's approximate position. This is strange because this value has dead zones at the beginning and end of a level. Every time the least significant byte of X-position overflows, this increments*.
7E054Db sY-SpeedSpeed along the Y-Axis
7E054Cb uY-SubspeedThe fractional value of the player's speed.
7E0525w uY-PositionPlayer's exact position on the Y-Axis
7E0526w u"Y"Similar to "X," but there appear to be no dead zones.
7E0524b uX-RegionX-Position overflow counter.
7E0527b uY-RegionY-Position overflow counter.
  • In this sense it's similar to pixel and subpixel values, but you can be on different pixels for the same value of "X."
Enemies' HP works the opposite of most games. They start at 0 and go up. There usually will not be more than 4 enemies on the screen, but here are all of them.
EnemyAddress
17E0595
27E05D0
37E060B
47E0646
57E0681
67E06BC
77E06F7
87E0732
Some stages have a movable object that you have to push by running into it. To help with the last such stage, I found these addresses.
AddressTypeName
7E075Eb sObject Speed
7E075Db uObject Subspeed
7E074Bw uObject X-Position (right)
7E0755w uObject X-Position (center)
7E0763w uObject X-Position (left)
It is fun to enable cheats and give yourself infinite health, lives, and time.
AddressName
7E1036# Shields
7E1028# Lives
7E1030# Gold
7E1031Minutes
7E1032Tens
7E1033Seconds
7E0FCCFrames

Tricks Used

Damage Boost
Damage boosting appears in this game. It is best suited for giving the player a super high jump. This is used to skip large sections of levels. The Expert difficulty limits the player to one shield, meaning you can only take 1 hit before collecting another.
Speed Dampening
The player's speed gets butchered in the air. You lose 20 subspeed or more per frame until your total speed hovers around 3.6. However, during your throw or duck animations, you lose only 4 subspeed per frame. Any time you see me throw with no apparent reason, that's what's going on.
Fast Climbing
When climbing, you can start a new climb animation by repressing "up." Release as soon as you've stopped moving from one pull and your next pull will begin 5 frames faster. Over the course of the game, that's no small potatoes!
Level end abuse
There is some weird variation at the end of levels depending on whether you run through, duck, or come to an abrupt stop. These may all result in the same timer value, but some can cause the next level to start 1 or 2 frames faster. I optimized this as much as I could.

Comments

  • I get a shuriken in level 2-1. This is beneficial for a number of reasons.
    • The shuriken does the most damage of any projectile, and therefore most dps. Axe = 1, Dagger = 2, Shuriken = 3, Sword = 4.
    • The shuriken stays out longer than other projectiles.
    • The shuriken's trajectory allows you to damage boost yourself without an enemy.
  • When possible, using two projectiles is faster than using the sword once.
  • No matter how fast you reach the end of 2-1, you have to wait for the platform to go and come back. Events like this are triggered when the object enters the screen.
  • In water levels, keep in mind that bubbles hurt you. BUBBLES. You are protected by a bubble, which doesn't make a lot of sense to begin with. Yet another bubble, another pocket of air, hurts you. You got to love the logic to old school games.
  • The mage boss has 40 HP. That means for one swing only, the sword is better than 2 projectiles. All shuriken = 14*3 + 0 = 42. With sword = 12*3 + 1*4 = 40. 13 actions instead of 14.
  • In 4-1, the cloud usually follows you for 3 lightning strikes. I manage to outrun it after the first lightning strike. I liked this.
  • Near the end of 4-1 there is some lag, but it doesn't show up in the emulator's lag counter. I noticed at first because I could see it, then I noticed the timer was staying the same for consecutive frames. I minimized this. I believe 2 frames of lag made the end.
  • Singe the dragon has the same HP as the mage boss.
  • The secret message is "Dragon's Lair is modern."

Nahoc: Added YT module.
klmz: Accepted as this movie is made entertaining with a dull game.

Brandon: Publication underway.