The game runs at 70 frames per second. Floating point module must NOT be loaded for the game to work properly. The default BIOS and floppy drive images are used. The input ends after a name is entered in the high score table.
- Emulator: JPC-RR r11.8 rc1 (syncs on r11.7)
- Aims for fastest time
- Uses death to save time
- Heavy luck manipulation
- Genre: Platform
Image info (some useless files were removed from the freeware installation, it is unknown if this has an effect on the sync):
NOTE: This image uses a volume label. When you import the image, check the "Volume label" box and name it jetpack
.
Type: HDD
Tracks: 16
Sides: 16
Sectors: 63
Total Sectors: 16128
MD5: e4287f2e7f9d079de869be13eeb18642
Entry: N/A N/A 20 /)
Vname: 19900101000000 N/A 0 jetpack)
Entry: 19900101000000 ec918833fd1032a59cda01d8d5eac55f 2306 /JETDEMO.DAT)
Entry: 19900101000000 2fb5d8421b228975b622162be33a6b4d 50602 /JETLEV.DAT)
Entry: 19900101000000 351d5f7893180e2925901c10b29dc1b6 141152 /JETPACK.EXE)
Entry: 19900101000000 1d1d658ed7e42225be4af6ad69afca7c 43559 /JETPACK0.DAT)
Entry: 19900101000000 a8f4cc17364adf2c51de655508d59eb8 30487 /JETPACK1.DAT)
Entry: 19900101000000 8f0b6d6797346fffd3a3c49782787508 33739 /JETPACK2.DAT)
Entry: 19900101000000 1d9472cea0da9bb049f40a27d71d9c25 38840 /JETPACK3.DAT)
Entry: 19900101000000 5944201eb8e997db20f57d7c3137710b 21048 /JETPACK4.DAT)
Entry: 19900101000000 70d1ab65d2807e59f76ba4cbcedd3447 17686 /JETPACK5.DAT)
Entry: 19900101000000 a958ca5da57a325119d3cbac70b116e5 785 /JETPAL.DAT)
Entry: 19900101000000 8a70bb766a132bed263ebb7df53ccaf0 72273 /JETSOUND.DAT)
Entry: 19900101000000 4b753c31504703a90bf1bfc737f1a4fb 11182 /JSWITCH.EXE)
Entry: 19900101000000 eee0c3907ac09624f7546ddd1464b266 40235 /SCLM.DAT)
Entry: 19900101000000 93b885adfe0da089cdf634904fd59f71 1 /_JETP_.DAT)
Entry: 19900101000000 3effbc43f424e28b2df650830ef05f9a 15 /_JETP_A.DAT)
Entry: 19900101000000 1d1d658ed7e42225be4af6ad69afca7c 43559 /_JETP_A0.DAT)
Entry: 19900101000000 50ae15f8c01a635f9de9e8c2a0a1c8fe 17 /_JETP_B.DAT)
Entry: 19900101000000 2f17ff3db151a0bae81b0902491ca5e7 43704 /_JETP_B0.DAT)
Entry: 19900101000000 0bf84430538b172a7d32530361209e4d 15 /_JETP_C.DAT)
Entry: 19900101000000 4c310670bdab05b99b77de2a9b8331fd 42811 /_JETP_C0.DAT)
After months of intense routing, the Jetpack TAS is finally completed! There are 100 levels in the full version of this game where the objective is to collect all green gems and then reach the exit.
Game Mechanics
The Jetpack
The jetpack can hold 10000 units of fuel, with 10 units being consumed for every frame of flight. Flying is necessary in most levels, as some places are unreachable by jumping, and it is almost always faster because the terminal flying velocity is higher than walking speed. Some levels introduce fuel chargers and drainers. In levels where fuel chargers are the only source of fuel, numerous tests must be done to determine if it is more time-efficient to charge and fly through certain sections or to not charge and walk instead.
Phaser
Phasing is a crucial mechanic for a few reasons. For one, it allows you to burn through certain blocks. The phaseable blocks are light and dark brick, pink blocks, and crates. The blocks return after a certain amount of time, except for crates, which are gone permanently. Phasing may also correct the player's position into the center of the nearest block, which can be used to shift momentum rapidly.
Teleporters
Teleport pads send you to another teleporter of the same color. There is a brief period of near invincibility before and after teleportation. In the delay before teleportation, gems can still be collected.
Barriers
Barriers are turned on and off by switches of the same color. There are two types of switches - buttons and floor switches. Buttons must be activated manually by the player, while floor switches toggle if they are walked over, either by the player or an enemy.
False Walls
Some blocks can be passed through and are indistingushable from regular blocks. Hidden passages are navigated with an extension of Ilari's Lua script which displays the player's position.
Exits
The exit opens up after all green gems in the level are collected. Contact with the bottom of the exit door will finish the level, even if the player is dead on arrival!
Movement
Understanding the physics in Jetpack is important in optimizing each level, and the movement in this game can be broken up into two major components: with and without fuel.
With Fuel
Flying velocity increases at a fixed rate per frame, eventually reaching a terminal velocity. When beginning to fly, velocity is built upon your initial velocity rather than being reset - starting your flying from a dead stop is slow, but getting a running start is much faster. Any mechanic that instantaneously increases velocity and ignores momentum can therefore be used to gain a significant speed boost when flying is initiated. These mechanics include:
- Walking
- Climbing ladders
- Phasing position correction
Without Fuel
Moving around without fuel simply consists of jumping and falling. The jumping height and speed curve are fixed, for all intents and purposes. The speed curve starts off quite high but ends very low, so care must be taken to stop the jump as soon as possible, either by landing or attaching to a ladder. A jumping trick called "wiggling" is important in optimizing jumps, with the main mechanic being that your horizontal velocity can instantly be reversed in midair while jumping. The velocity continues to follow the speed curve but simply changes its sign when the direction is reversed. Hitting a wall resets the horizontal velocity to zero, but careful wiggling through narrow passages can maintain the speed curve and allow for quick entry and exit of narrow corridors. Falling off ledges is also an extremely useful fuelless mechanic because terminal velocity is instantly achieved when doing so. Flying is often stopped when approaching ledges simply to take advantage of this mechanic.
RNG
Randomness takes a large role in Jetpack, but is thankfully straightforward to manipulate. Anything that calls for a random number advances the RNG - the phasing animation is randomly chosen, so phasing is used as a simple RNG advancer than doesn't waste any time to execute. The relevant random mechanics in Jetpack include:
- Powerups. These are extremely rare occurences that can make a serious impact on the time it takes to complete levels. Random fuel drops can turn levels that are intended to be fuelless into a joke, and stunners and invincibility allow you to bypass any enemy or hazard that is blocking a convenient path. Because of the extreme rarity of these powerups and the inability to advance the RNG quickly and accurately enough to cause them to appear, powerups are not manipulated in this TAS. Powerups may still appear by coincidence, and they are picked up if they save time.
- Teleporters. If there is more than one possible destination, a random pad is chosen from the remaining teleporters of the same color. The destination can be manipulated not only for the player, but for enemies entering teleporters as well.
- Trackbots. These are the enemies with treads that can climb ladders. At certain floor/ladder intersections, trackbots make a random decision about which path to take based on the player's position. Their behavior is still not fully understood, but their decisions are manipulated when possible.
- Flitzers. These enemies are blue with a red dot pointing towards their current direction. Every 8 frames, or any time they hit a wall, one of 8 directions is randomly chosen. Flitzers typically take several manipulations to move out of the way due to their low speed.
- Spinners. These are the spinning blades that move diagonally. At the beginning of each stage, their direction is randomly chosen out of the 4 diagonals. In order to manipulate them, you have to advance the RNG before exiting the previous level.
Advanced Jetpacking
I've covered all the basic mechanics for the purpose of watching this TAS, but for those who are looking for more in-depth information, we have assembled a comprehensive resources page for Jetpack that includes numerous tricks, enemy behavior, velocity and frame data, complete maps of all 100 levels, plus the programs and scripts used in the making of this project. I think I can say without a doubt it's the most complete technical resource for Jetpack on the web. Go here:
Improvements
- Powerup manipulation. Full control of powerups would be the largest time saver in the run, on the order of a few minutes. Fuel powerups would trivialize "jumping" levels, and invincibility would remove the danger of enemies and hazards.
- New tricks. As the TAS continued, more and more tricks were discovered for optimizing movement, so there are some slight further optimizations that can be made in early levels.
- Routes. All the levels in the TAS have multiple ways of completing them, whether it's major route changes or just minor room optimizations. Every level was thoroughly tested, but there may be even better routes available that were overlooked.
Special Thanks
This project was definitely not a solo effort, and here are the major contributors:
- Nach. He has been a huge driving force, always interested in the progress and always pushing me to do better when the level WIPs had room for improvement. We've had tons of crazy (and fun) routing sessions together, making inane looking route maps and tweaking each other's routes - and the end result has been quite good! He also got the resources page set up and contributed lots to it, including separating Jetpack's map file into individual levels for easy mapping. How's Popcorn, you ask? It's fast. :)
- Ilari. Without him this TAS would actually have been impossible, since he created JPC-RR in the first place! He also coded the Lua script for Jetpack, which provides some really useful information and was an invaluable resource. Ilari provided a lot of technical support to get the game and sound working properly - in fact, he's actually responsible for all input up until the beginning of the first level. He's always been interested in the run's progress and even released a new version of JPC-RR to make Lua scripts more stable. Big thanks!
- Svimmer. A major trick finder and resources page contributor. He's always on my case to add new tricks I find to the page, and sometimes I got lax on it, but the project has been better off for his persistence!
- creaothceann. Created really nice maps of all 100 levels for the resources page. Also uploaded a couple of the WIPs at half-speed.
- hegyak. Created the level editor view maps of each level, which show false walls. Some levels would be an immense pain without these - just look at level 72!
- Anyone who posted in the Jetpack thread, talked to me about the run on IRC, or even just watched some of the level WIPs on Youtube. Knowing that there are people out there that are interested in this definitely kept me going.
That's it! Enjoy the TAS, and perhaps look out for a second version at some point...
Nach: Even though I helped a lot early on in this run, much of it still surprised me, and the solutions and entertainment level of many of the later levels was not anticipated. Time and again, this TAS shows off some of the greatest heights in TASing, what with extreme route planning, having just enough fuel, pixel precision maneuvering, luck manipulation, and more.
Watching the run in slow motion, it's clear the run isn't perfect, there are slight mistakes here and there, and some of the tricks are not applied to the earlier levels. Despite that, the run really appears to be quite solid, and to the average person, this is far far beyond ordinary ability.
The responses to this run have for the most part been very positive, and I find this run to be our best TAS for the combination of action + puzzle platformer. Levels like It's not raining rain demonstrate luck manipulation and precision rarely even seen in a TAS. Many of the enemy packed levels are completed with an I control reality attitude which is only seen in our best TASs. Therefore, I am accepting for stars. Accepting.