Emulator used: Gens 9.5 RKA_HitboxDisplayHack (Gens 9* compatible)

Emulator settings:

  • Controller 1: 6 button
  • Controller 2: 6 button
  • Allow Up+Down: Yes
  • Sound: Enabled, 44100KhZ Stereo, YM2612 High Quality enabled

Categories

  • Does not use warps or passwords
  • Abuses programming errors in the game
  • Manipulates luck
  • Takes no damage
  • Plays on hardest difficulty
  • Ignores time lost to bonus effects

About the Game

Rocket Knight Adventures is one of the better platformers on Sega Genesis. In it, you control Sparkster, an opossum with a sword and a jetpack, in his quest to defeat the evil pig empire.

About the Movie

This movie uses the US version of Rocket Knight Adventures. This movie makes extensive use of a few programming glitches to maintain full speed as much as possible. This movie manipulates luck to prevent bosses from using their longer attacks. This movie takes no damage. This movie ignores time loss due to bonus effects. This movie plays on the hardest difficulty.
This movie is on a different ROM version from the previous run due to the following reasons:
  • Previous movie was on a PAL version, but was not PAL optimized, so is slower and less entertaining
  • US Version has a more difficult Hard Mode.
  • The US Version is the most likely version to be familiar to viewers.
  • Deep Loner began an improvement run on the US version, and I wanted to be able to make direct comparisons.
This movie aims for fastest time.

Suggested Screenshot

Improvement Explanations

Velocity control

  • Sparkster cannot maintain maximum speed when on the ground, instead, if you hold right, his speed will alternate between 3px/frame and 2.75px/frame
  • In the air, Sparkster accelerates at the same rate as on, ground and his maximum speed when holding right is the higher of 3px/frame and the speed you had when you jumped.
  • Sparkster is able to jump immediately at the start of a new room or new level if the jump button is pressed at the right frame beforehand.
  • If Sparkster starts a horizontal rocket boost in mid-air, half of his speed will be lost immediately when it ends.
  • Half of Sparkster's speed will always be lost immediately when diagonal boosts end.
  • Better optimized diagonal boosts used in wall climbing, and navigating bumpy terrain.
  • Better optimized use of horizontal boosts.
  • Made use of jumping before ledges to save time on long falls.
  • Optimized swimming for least wasted movement, and best possible boost locations.
  • In normal levels, directional controls are disabled during sword swipes

Combat optimizations

  • Hitbox display allows better optimization of timing and placement of sword-swings
  • The damage box on a sword swipes moves from top-rear of the player to mid-low forward of the player -- in order to connect with a single target for the full length of the swipe, you or the target must be moving.
  • Sword swipes last 8 frames, and do 4 damage each frame to enemies within the area.
  • The crescent slash produced by a sword swing causes 12 damage when it impacts a target, and can damage multiple targets if it connects on the same frame
  • Orthogonal (up/down/left/right) boost charges cause 32 damage upon impact, and initiate a circular boost for the remainder of the boost time.
  • Diagonal (up-left/up-right/down-left/down-right) boost charges cause 16 damage upon impact, and initiate a circular boost for the remainder of the boost time
  • Circular (no-direction held) boost charges cause 1 damage per frame.
  • The jetpack can be charged for a charge boost while slashing continuously by releasing the attack button only for one frame between swipes.
  • With one exception, enemies that flash cause lag each time they take damage
  • Enemies with HP will continue to take damage, even while flashing
  • Enemies that are Hit-based will not take damage while flashing, but will still cause lag when hit.
  • Unlike the prior movie, I do not attack any lag-causing before they become vulnerable

Luck improvements

  • Manipulated the starting position of the Tank Turret to a most optimal one.
  • Manipulated Axle Gear And His Giant Pig Mech to walk backwards as little as possible
  • Manipulated Pig Heads in stage 6 to always drop a row of apples
  • Manipulated Axle Gear to use only the attack pattern that causes him to be vulnerable.

Level specific notes

Stage 1-1

  • This level was really amenable to bunny hopping - only one obstacle that can't be jumped over, and no ceilings limiting when and how you can jump to do so.
  • The trucks were kind of a pain, after they pass by in the background, they always reappear in the foreground a specific number of pixels off screen, so hitting them as early as possible requires travelling the same way as them, and then immediately changing direction. I think I did a pretty good job optimizing their destruction, though. Each of the two trucks has 8 hit points more than they did in the prior published version, by the way.
  • You're not supposed to be able to jump over the wall after the trucks, but if you have enough speed at the top of the rise before it, you can just barely make it.
  • Keeping speed was a challenge in the area where the pigs parachute in, because I'm actually travelling faster than the crescent slice the sword shoots out. But it's important not to have to rocketboost too early on the hills after, because otherwise I'll hit the hill sideways while jumping and loose all my speed.
  • The downward sloping branches provide a nice speed boost.
  • Unfortunately I have to lose all my built up speed to deal with the four unskippable walkers. Each of these walkers has 8 more hitpoints than they did in the prior published version, by the way.
  • The walkers were also a challenge to optimize, as they appear in different places depending on the player's location, and the third and fourth will only appear after the defeat of the first two.
  • The four unskippable pigs are defeated much more quickly than in the prior version, by swinging the sword just before they become vulnerable, so the projectile passes through the near left one (which catches the tail end of the swipe) and hits the far left one. The sword swipe ends just as I have enough charge built up to boost and catch the two pigs on the right.
  • The tank is defeated as quickly as possible here. Each time it recieves damage on the first frame that its invulnerability wears off.
  • After the bridge goes out, the tank turret's x and y position depend on sparkster's position at the time it appears. I use rocket boosts to damage it while it's still offscreen, but I had to be very careful to hit it on the trailing edge, as I did not want to change its direction because the top right corner was the most desirable place for it to come on camera.

Stage 1-2

  • Slight timesaver by boosting downward as soon as I'm lined up with the rocket item.
  • The positions of the balloons can be manipulated by changing the timing of my sword swipes, but there's enough of a delay in between that they can appear at any point and I would still be able to kill them on the first frame.
  • These balloons will all appear with the same delay in between them no matter what, but the dragon won't appear until the last balloon is offscreen. The balloons travel much faster offscreen when they are crashing after being hit.
  • The ending sequence won't happen until its head is offscreen, this can be expedited by delaying the last hit for a couple of frames so that it explodes in a different pattern.

Stage 1-3

  • I wait a bit before moving right so that my boost ends before I reach the flames on the floor, so I don't die in a fire, and can clear the first bump in the floor.
  • I boost diagonally the first moment that doing so allows me to reach the higher floor
  • Only a small part of these flame bursts can damage sparkster, and sparkster is invincible during rocket boosts
  • By boosting at the proper frame, I am able to save a frame in reaching the doorway.
  • This is the first place where the "start by jumping" trick comes in handy. It allows me to reach a good height for rocket boosting even before the screen fades back in.
  • I fall a bit before starting the third rocket boost, so that the boost ends before I overshoot the door. I still begin the boost at the first possible frame.
  • The next room is not very noteworthy. a slight bit of hopping, and slightly better boosts than the prior version.
  • I save several frames in the last room before the boss by boosting left before falling down. The boost bounces off the walls and flings me towards the door at high speed, while not significantly impacting my rate of fall.
  • This boss is the first place I lose any gameplay frames to the prior version. I have to hit the boss three extra times compared to the previous run, and it has a significant invulnerability period between hits.

Stage 2-1

  • The "start by jumping" trick saves quite a bit of time, as it actually allows me to reach the mini boss before I hit the water.
  • I'm not sure if this is the optimal boss strategy, but I do maximize sword contact on the swipes.
  • I save a great deal of time in the swimming portion by diagonally boosting as high as possible.
This is faster than boosting horizontally, because I maintain a speed of 4 pixels per frame for much longer than it is possible to maintain the horizontal boost falling speed of 5 pixels per frame.
  • The diagonal boost strategy also allows me to reach the tree vine much sooner than the previous run does.
  • I try to maximize speed gain from the sloping vines.
  • The rotating platforms that bring me behind the waterfall are always in the same position when you reach them.
  • I touch the platform which switches me in front of the water fall because I need the next platform to take me behind when I land on it.
  • At some point during the fight with the water snake, I somehow trigger a bug which allows me to hit it from the other side of the waterfall. I don't know what causes this, but I do know it saves quite a bit of time, as I need to be in front of the waterfall after the boss is destroyed.

Stage 2-2

  • In NTSC versions of the game, this first room lags for the entire time I'm underwater, because there are so many moving spiked things to keep track of.
  • Boosting upward as soon as possible, after swimming past the downward column saves more time than it takes to recharge the pack to boost diagonally past the next upward column.
  • The second room is slightly tricky to time the boost so I don't hit any of the spikes balls that make up the ceiling

Stage 2-3

  • This stage is primarily an autoscroller, but it can be prolonged by not defeating the last pig in the first set as soon as possible.
  • When hopping between mine carts, momentum preservation techniques are important to make sure you get to the next fast cart as soon as possible.
  • The second set of pigs takes the same amount of time no matter what, so I chose to let the last four pigs survive until the game kills them, as it looks funny that way.
  • Although the prior version also attacked the train non-stop, I improve this by getting as close to it as possible, in order to maximize sword contact. This saves a large amount of time. Also, the left+right glitch allows me to swing the sword left, while I'm moving right. Which saves quite a bit of time as I have to be constantly moving a little to the right so the train doesn't hit me and kill me.
  • It is possible to do one or two damage to the hand during the first stage of the boss, but it doesn't carry over to the second phase, and even if it did, it would cause more lag than it's worth.
  • The second phase is defeated as soon as (hand 1 HP + hand 2 HP) < 0. Discovering this saved me quite a bit of time as I could just boost into Hand 1 to lower its hp more, rather than going back to Hand 2 to finish it off.
  • The third phase is a little different from the first. I have to be moving left constantly to keep from getting hit, but I can't move left and swing right unless I'm in the air, so I have to keep jumping. Unfortunately even the lowest jump I can make takes me to a height where I won't hit it with the crescent projectile if I swing. Fortunately, though, by hitting jump and attack at the same time, I can shoot the projectile without having to swipe, which lets me get an extra 12 damage in, quickly.

Stage 3-1

  • I start by moving left so that I'll be able to clear the first bump when I jump after the boost ends. This lets me carry high speed quite far into the level.
  • The lava won't hurt me while I'm boosting, and I can jump the first frame I finish boosting to take no damage. This helps save time as I don't have to wait for the lava to rise and fall to get through a section with low platforms. (Note: This is not true of the fires in stage 1-3, the lava in later levels, or the large spikes in stage 5-6)
  • I did my best at carrying speed through the platforms hidden behind crystals, but I have to boost in midair on my way down in order to get past low platforms during a high lava tide faster

Stage 3-2

  • I make some much better diagonal and horizontal boosts compared to the previous version, so I never have to stop moving right.
  • The crab boss' HP is reduced to 1/4 of its current value when the large claw is defeated. The HP is reduced to 1/2 of its current value when the small claw is defeated. Its HP begins at 50. After defeating the large claw, it becomes 12. After defeating both claws it becomes 6. But it is faster to go through 6 invulnerability periods than to destroy both claws.
  • Also, the prior run wasted time damaging the boss before destroying either claw, and at least two damage must be done for the total HP after a claw is destroyed to be lowered

Stage 3-3

  • This is basically an autoscroller, but the game lags by 8 frames each time a bat is hit. So I don't hit any of the bats.

Stage 3-4

  • NTSC versions of the game lag by increasingly high amounts during the part of the fish boss where it sucks in platforms. PAL versions do not.
  • My strategy of attacking the piloting pig is slightly more optimal than the prior run's. I suspect that it is not totally optimal, but brute forcing it isn't viable, and I suspect that properly figuring out the most optimal strategy involves calculus that I haven't learned yet.

Stage 4-1

  • Because the only way to damage Captain Fleagle is to bounce his own cannon-balls back at him, and he stops throwing them for a moment whenever he is hit, I have attempted to minimize the time between the cannonballs impacting him on each cycle.
  • I also have made sure that no cannonball he throws at me does not hit him.

Stage 4-2

  • The first part of this stage was quite frustrating to improve, as the wind makes it impossible to keep speed from a rocket boost, but I saved a little bit of time by boosting through Captain Fleagle in such a way that I land on the nose of the battle ship afterward
  • Going back to the left underneath was much easier to improve, as I could make use of momentum preservation, and came up with a much faster strategy for the mini-boss

Stage 4-3

  • I preserve speed here as much as possible, but the forcefields are confounding. It is possible to manipulate them, but I am not sure what the mechanism for determining when they turn off is. There is more than likely a possible improvement here.

Stage 4-4

  • Not a whole lot to say. I attack the giant slinky pig, and Captain Fleagle much more optimally than the previous version.

Stage 5-1

  • The missiles appear only after the last pig is defeated (or otherwise offscreen), but as in stage 1-2, the pigs appear at set intervals from each other. Also as in stage 1-2 their positions can be manipulated, but also as in Stage 1-2, the manipulation is unnecessary.
  • It's the boss from gradius!! I lose a lot of time here, though, because attacking it optimally requires taking damage, which I can't do.

Stage 5-2

  • Momentum preservation wins the day once more.
  • Momentum preservation, but vertically this time.

Stage 5-3

  • Better timing of diagonal boosts allows me to get through the bumps and dips faster

Stage 5-4

  • I take out the supporting pillar a couple frames sooner
  • I start the diagonal boost at the first frame where I'll actually be let in between the ceiling and the top floor from it.

Stage 5-5

  • I stop the platform's downward motion at the highest point where ducking will let me pass under the wall.
  • I jump at the first point where the wall ejects me rightward, but not down. This saves 44 frames.
  • A few more frames are saved by boosting sooner, and jumping from a higher platform

Stage 5-6

  • I start the diagonal boost sooner, and carry momentum to the exit by hopping.

Stage 5-7

  • I get to the giant robot boxing match faster, but it doesn't matter because I have to make 3 more hits on the Axle Gear's giant pig robot, and there's a significant delay between hits being possible to land
  • I also cannot take the damage necessary to land the final hit at the first possible frame, so I have to get in to make him start swinging, dodge out to avoid being hit, and then dodge back in so that he's within punching distance.

Stage 6

  • Wave 1: I'm able to defeat each set of 5 pig heads in a single swipe, by killing the master head before it generates the rest. I also collect the apple as soon as possible so the next set appears sooner.
  • Wave 2: I defeat this set of 8 pigheads quickly by making sure each swipe kills two. I then collect the apples as quickly as possible so that wave 3 will appear.
  • Wave 3: I am not sure if the number of asteroids onscreen influences anything, but I made it a minor goal to hit every asteroid in this wave at least once.
  • Wave 3: What does matter, though, is killing the false asteroids as soon as possible, as the next one won't appear until a certain time after the current one is defeated. Similarly, the next wave only appears once the last false asteroid is blown up.
  • Wave 4: You can't see it, but this wave consists of a bunch of pig heads moving in a circle. Only one needs to be killed for the wave to end, but killing the wrong head (or the right head at the wrong time?) causes a repeat of Wave 2 before the next wave comes, whereas killing the right head causes 6 apples to appear.
  • Wave 4: The next wave won't appear until all the apples are cleared. I collect all 6 apples before they reach the center of the screen, the prior run was only able to collect 4, and had to wait for the rest to move off the screen of their own accord
  • Wave 5: This weird guy can't be damages while he's holding his shield out to the left of him. But once he's dropped it I make quick work of him by maximizing each swing's connect time. The prior run didn't defeat him until in his third cycle, despite him having less HP in that version.
  • Wave 6: This is a repeat of wave 4.
  • Wave 7: Most of the pig astronauts don't even make it onto the screen before dying.
  • Wave 7: Axle Gear isn't vulnerable until after he's left the screen after firing the huge energe beam. The previous run just caused a whole bunch of avoidable lag by attacking him while he's firing the beam.
  • Wave 7: When Axle Gear does become vulnerable, I reduce his HP by 84 before he even makes it on screen. Unfortunately this delays killing the last two pig astronauts a bit, and there may be a possible improvement along those lines.
  • Wave 8: This is a repeat of wave 4 again.
  • Boss 1: This boss is composed of a whole bunch of separate objects with at least 120 HP each. All four turrets must be destroyed before the hatch becomes vulnerable. The hatch must be destroyed before the nose becomes vulnerable.
  • Boss 1: The nose's underbelly is the only multihit-enemy in the game that does not cause lag when it takes damage.
  • Boss 1: I have to hit the front of the nose once so that I can get in and hit the separation point without dying. This may look like a wasted swing, but if not for that, I would die upon entering that hitbox.
  • Boss 2: This is the most annoying boss in the entire game. He has a 19.5 second cycle between becoming vulnerable, and I have to get one more hit in on him than the prior run did.

Stage 7-1

  • Arrive at Emperor Devligus Devotindos earlier than the prior run, thanks to momentum preservation.
  • Emperor Devotindos is only vulnerable to rocket boosts, but I still manage a faster battle due to using straight boosts, rather than diagonal ones.

Stage 7-2

  • I get through this area full of Emperor Devotindos prototypes faster by better momentum control.

Stage 7-3

  • I enjoy totally outclassing Axle Gear
  • If Sparkster is facing Axle Gear when he stops flashing from taking damage, he'll perform a different attack which significantly prolongs his invulnerability. In order to hit him the first possible frame each time, I must jump, shoot the crescent projectile on the way down, and change facing direction for 2 frames as soon as I land.
  • Axle Gear also backs up by 1 or 2 pixels each time he is hit, I have to creep forward or eventually my crescent projectile will only be able tohit his crescent projectile, and not him as well.
  • I defeat Axle Gear's second stage much more quickly through better use of boosting, maximizing sword contact, and using two tricks that allow me to fire a projectile without making a full swipe (when I jump, and when I land).

Stage 7-4

  • I lose time here because I have wait to hit one of the emperor prototypes and boost through it, rather than taking damage.

Stage 7-5

  • I saved a few frames by timing my boosts and jumps better.

Final Boss

  • I lose time here because each of this boss's stages has 1 extra hit point, there's no quicker vulnerability cycle to manipulate, and the prior run never allowed the boss to be vulnerable for more than 2 frames before hitting it.
  • I like to think I was at least more entertaining during the wait time than the prior run, though.

Escape Pod

  • Saved a couple frames over the prior run by momentum preservation after boost

Reentry

  • I can't take damage, and I can't attack the Pig Star core in any way, so I tried to mock it by mimicking it's movements. It didn't work as well as I hoped, but better than just dodging for a couple minutes with minimum movement.

Comparison Table

LevelStartEndOld StartOld EndInput LengthOld Input LengthLag LengthOld Lag LengthLevel SavingsLevel LossTotal SavingsTotal Loss
Menu0589057433936925020530453045
Stage 1 Cutscene589793574767102104102892333278
Stage 1-179343477675415324643543082791125*451157123
Stage 1-24347677654157869227923131501413491191132
Stage 1-367761149378691275643934707324180+458+3211963453
Score Tally 11149312532127571378396296277640131963466
Stage 2 Cutscene12532126881378313929511461059395122058478
Stage 2-11268815113139291724921673072258248*921*262979504
Stage 2-215113160071724918300538960356914222653401769
Stage 2-31600724753183002731580918320655695*149*403550809
Score Tally 2247532574327315283049629622827013550810
Stage 3 Cutscene25743258232830428375171863531103551820
Stage 3-1258232648728375291865897497562160133711833
Stage 3-226487291142918633007217832644495571086-1084797725
Stage 3-32911431473330073539322692295909126-14823724
Stage 3-4314733380035393376192055214527281*98*1994511923
Score Tally 3338003481637619386309639655346294513932
Stage 4 Cutscene348163518138630389701841871811533284516960
Stage 4-13518136642389704046313741418877544124560972
Stage 4-236642390614046343375222527661941465415651011028
Stage 4-3390613969843375440295625907564*36*1951371064
Stage 4-43969842078440294667422312480149165257*-853941056
Score Tally 442078431214667447708963966806831253971068
Stage 5 Cutscene431214337847708479531531541049111353981081
Stage 5-14337849138479535350052114952549395*@-218*19551801276
Stage 5-24913850033535005451680293993771371653171292
Stage 5-3500335068554516551785755997763241453411306
Stage 5-45068552960551785745021982207776591253501318
Stage 5-5529605362957450581635906477966571354071331
Stage 5-653629572245816361800351935727665531154601342
Stage 5-75722460390618006492430343019132105+125+16755851509
Score Tally 5603906142764924657979648117362-1531154321520
Stage 6 Cutscene6142761703657976605617115410587171854491538
Stage 6 Wave 16170362137660566661443055543125155741539
Stage 6 Wave 26213762370666146695423334000107056811539
Stage 6 Wave 3623706371366954684721343151800175058561539
Stage 6 Wave 46371363832684726869311922100102059581539
Stage 6 Wave 56383264462686936982963095178185*337*-9162951448
Stage 6 Wave 6644626462169829700721592430084063791448
Stage 6 Wave 7646216591070072717431062112522754663-31963581129
Stage 6 Wave 86591066221717437215530540864103264611131
Stage 6 Boss 16622170627721557674038964117510468*273*-1067341121
Stage 6 Boss 270627765477674081530588947633127+0+113067342251
Score Tally 6765477757881530823999658136556-153965812260
Stage 7 Cutscene77578778418239982648165167988221665832276
Stage 7-17784179847826488485917041897302314*314*10968972385
Stage 7-279847804428485985540522525735631769002402
Stage 7-380442835728554090846252642996041007+1871+-30587712097
Stage 7-4835728425990846914535955359272@-602087112117
Stage 7-584259846389145391825307311726141187152128
Final Boss846389328491825991598527726311971+0+131287153440
Escape Hatch9328493971991599983961862069602987173449
Reentry Cutscene93971951489983910100310921092857201387173462
Reentry951489940810100310525141815182796610011397183475
Total (Input)09828801030059007995115820978905036319(N/A)(N/A)
Total (Gameplay)09940801052519113197298827779536167324(N/A)(N/A)
Note: "Level Loss" and "Total Loss" are not simply differences in lag frame counts, I wanted to make the "loss" counts a sum of total frame loss due to version differences
"*":This level contained non-skippable enemies with higher HP in my version, I totaled the difference, and divided by average damage per frame, then added that number both to level savings, and level loss
"+":This level contained a "1-hit per cycle" boss with higher HP in my version, I took the number of frames per cycle multiplied by the number of extra cycles I had to wait on, and added that number both to level savings, and level loss
"@":On this level I lost time due to inability to take damage, but because of various uncertanties, I was unable to calculate how much time I lost due to that
Final Frame Savings: 5839
Input Frame Savings: 4717 (input is ended later than the prior movie because I need to avoid damage longer during the reentry sequence)

Possible Improvements

  • Changing difficulty -- I learned too late that the only difference hard mode makes is in terms of Boss HP, and the amount of damage Sparkster takes from enemy attacks.
  • Changing versions -- The Japanese version of hard mode allows the player to take some hits without dying, and has decreased HP on some enemies and most bosses.
  • Lag management -- the game lags quite often, and I may not have found the most optimal way to deal with it.
  • Better Boss fights -- there are a couple of boss fights, especially the lava fish, that I'm reasonably certain I didn't find the optimal attack strategy, but couldn't find anything better.

Thanks to

  • CleverDan, for making an old run I could compare to.
  • Deep Loner, for demonstrating the real TAS potential of this game, and explaining the many new tricks he found.
  • Nitsuja, for adding autohold into Gens. This really saved my fingers when I had to hold attack and a direction for long periods.
  • Nitsuja again, for helping show me how to make interesting tools for Gens, like Ram search/watch, camhacks, velocity displays, Layer toggling, and more...
  • Hawq, for developing gens trace, which allowed me to disassemble portions of the game when I needed to figure out the mechanism behind something.
  • The Sonic hacking community as a whole, for all their awesome articles on Object Status Tables, which helped immensely when I decided to make a Hitbox and HP display tool for this game
  • Moozooh, Adelikat, Cardboard, JXQ, Emu, Titus Kwok, mmbossman, ShadowJacky, Raiscan, LagDotCom, and especially Derakon (who registered on these forums just to post that my WIP looked good) for their support in the creation of this run.

NesVideoAgent: Hi! I am a robot. I took a few screenshots of this movie and placed them here. I'm not sure I got the right ROM though. Well, here goes! Feel free to clean up the list.

adelikat: Accepting for publication as an improvement to the published movie.

adelikat: Processing.