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. marcolaranja 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.
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.
Useful memory addresses
I found an obscene number of memory addresses that were essential in optimizing.
Address | Type | Name | Description |
---|---|---|---|
7E054B | b s | X-Speed | Speed along the X-axis. |
7E054A | b u | X-Subspeed | The fractional value of the player's speed. Unlike other games that only use this for acceleration, different values affect your overall speed. |
7E0522 | w u | X-Position | Player's exact position on the X-axis |
7E0BAC | w 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*. |
7E054D | b s | Y-Speed | Speed along the Y-Axis |
7E054C | b u | Y-Subspeed | The fractional value of the player's speed. |
7E0525 | w u | Y-Position | Player's exact position on the Y-Axis |
7E0526 | w u | "Y" | Similar to "X," but there appear to be no dead zones. |
7E0524 | b u | X-Region | X-Position overflow counter. |
7E0527 | b u | Y-Region | Y-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.
Enemy | Address | |
---|---|---|
1 | 7E0595 | |
2 | 7E05D0 | |
3 | 7E060B | |
4 | 7E0646 | |
5 | 7E0681 | |
6 | 7E06BC | |
7 | 7E06F7 | |
8 | 7E0732 |
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.
Address | Type | Name |
---|---|---|
7E075E | b s | Object Speed |
7E075D | b u | Object Subspeed |
7E074B | w u | Object X-Position (right) |
7E0755 | w u | Object X-Position (center) |
7E0763 | w u | Object X-Position (left) |
It is fun to enable cheats and give yourself infinite health, lives, and time.
Address | Name |
---|---|
7E1036 | # Shields |
7E1028 | # Lives |
7E1030 | # Gold |
7E1031 | Minutes |
7E1032 | Tens |
7E1033 | Seconds |
7E0FCC | Frames |
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.
Stage by stage comments
...may come later. If you have any questions, put em in the thread.