This is an old revision of this page, as edited by
Svimmer at
6/17/2013 4:12 PM
(minor corrections, updated todo)
About Editing This Page
It might be a good idea to join
the TAS Videos IRC channel, which lets you see changes being made in real time and coordinate your work with others. Also check the ToDo section for ideas for what needs to be done, marking the item off if you're going to do it.
Game Info
- Official site - Download game for free, manual, hint book.
- Only use this freeware version from Adept Software (Adam Pederson) v1.5 - jetpak15.zip.
- Discussion thread
- Level pack to play with in level editor.
- Using this pack, you can jump directly to any level, view false blocks, play it, or even edit it.
- Game speed is not emulated properly in JPC-RR at current. All speeds are speed 8.
- Stunner or Shield items and other random drops are not used (or using them counts as a different category).
- Nach: Really? Who decided this?
- Svimmer: Slamo tried manipulating the drops, but didn't find a real way (it's on the second page of the thread). The possible logic behind not using them at all is a) it's too haphazard if they can't be properly manipulated, b) it would give the run a cheeky feel, like in some levels you're "supposed" to have no fuel. Also if it was found out how to manipulate them later, it would leave more space for that category if they weren't used here at all.
- Nach: I don't view this as a community decision. Furthermore, the "busier" levels have power-ups constantly appearing. I'm not even sure some levels can even be beaten without fuel power-ups. Even the game hint-book says to wait for fuel in some levels. Checkers is one such level that comes to mind. Maybe with TAS precision it can be beaten without extra fuel power-ups, but normal playing certainly need them.
- slamo: There was never any agreement or discussion that this would be a separate category. That being said, I'm trying to avoid picking up powerups just because it would be inconsistent and arbitrary not to. Many levels would be trivialized through the use of invincibility or fuel powerups, so why choose to use an unplanned one on later levels? Also, I don't think it's been made clear what's involved in a run that utilizes powerups to their maximum capabilities - you would have to come up with a perfect RTC time that places each powerup exactly when and where you want it, while trying to compensate for RNG advances through phasing, trackbots, flitzers, etc through 100 levels of the game. Essentially every input would be planned in advance without knowing if it would work or not. It's extremely impractical. I certainly hope there are no future levels that require these (Checkers actually seems possible through good fuel management) or this run is in trouble.
Debugging Codes
- Extra Life: TAB + 2 + L
- Fuel Refill: TAB + 2 + F
- Invincibility: TAB + 2 + I For the entire duration of the current level.
- Skip Level: TAB + 2 + S
JPC-RR Image
+IMAGEMD5 e4287f2e7f9d079de869be13eeb18642
+COMMENT(Entry: N/A N/A 20 /)
+COMMENT(Vname: 19900101000000 N/A 0 jetpack)
+COMMENT(Entry: 19900101000000 ec918833fd1032a59cda01d8d5eac55f 2306 /JETDEMO.DAT)
+COMMENT(Entry: 19900101000000 2fb5d8421b228975b622162be33a6b4d 50602 /JETLEV.DAT)
+COMMENT(Entry: 19900101000000 351d5f7893180e2925901c10b29dc1b6 141152 /JETPACK.EXE)
+COMMENT(Entry: 19900101000000 1d1d658ed7e42225be4af6ad69afca7c 43559 /JETPACK0.DAT)
+COMMENT(Entry: 19900101000000 a8f4cc17364adf2c51de655508d59eb8 30487 /JETPACK1.DAT)
+COMMENT(Entry: 19900101000000 8f0b6d6797346fffd3a3c49782787508 33739 /JETPACK2.DAT)
+COMMENT(Entry: 19900101000000 1d9472cea0da9bb049f40a27d71d9c25 38840 /JETPACK3.DAT)
+COMMENT(Entry: 19900101000000 5944201eb8e997db20f57d7c3137710b 21048 /JETPACK4.DAT)
+COMMENT(Entry: 19900101000000 70d1ab65d2807e59f76ba4cbcedd3447 17686 /JETPACK5.DAT)
+COMMENT(Entry: 19900101000000 a958ca5da57a325119d3cbac70b116e5 785 /JETPAL.DAT)
+COMMENT(Entry: 19900101000000 8a70bb766a132bed263ebb7df53ccaf0 72273 /JETSOUND.DAT)
+COMMENT(Entry: 19900101000000 4b753c31504703a90bf1bfc737f1a4fb 11182 /JSWITCH.EXE)
+COMMENT(Entry: 19900101000000 eee0c3907ac09624f7546ddd1464b266 40235 /SCLM.DAT)
+COMMENT(Entry: 19900101000000 93b885adfe0da089cdf634904fd59f71 1 /_JETP_.DAT)
+COMMENT(Entry: 19900101000000 3effbc43f424e28b2df650830ef05f9a 15 /_JETP_A.DAT)
+COMMENT(Entry: 19900101000000 1d1d658ed7e42225be4af6ad69afca7c 43559 /_JETP_A0.DAT)
+COMMENT(Entry: 19900101000000 50ae15f8c01a635f9de9e8c2a0a1c8fe 17 /_JETP_B.DAT)
+COMMENT(Entry: 19900101000000 2f17ff3db151a0bae81b0902491ca5e7 43704 /_JETP_B0.DAT)
+COMMENT(Entry: 19900101000000 0bf84430538b172a7d32530361209e4d 15 /_JETP_C.DAT)
+COMMENT(Entry: 19900101000000 4c310670bdab05b99b77de2a9b8331fd 42811 /_JETP_C0.DAT)
Naming Conventions
You're not expected to adhere to these terms 100% of the time. They're meant more as just the default option. It's always okay to spell things out fully as well.
Officially the tiles are called just that, tiles, but I think when talking about solid tiles, you can also say "block".
- the [G]RP - This (Game Resources) page.
- the Discussion Thread - linked under "Game Info"
- Enemies - also "monsters" (see Enemies section)
- phasing - phasing out blocks
- phase in/phase out - what blocks do when phased
- thrusting - or simply flying, using the jetpack
- running/walking - these are both ok
- trapping - you can trap enemies inside phasing-in blocks
| Jetman | | The name is mentioned once in the hintbook. |
Items | Manual/Official Name | Recommended Alias | Information |
---|
| Emerald Gem | Gem | Hitbox |
| Single Tank of Fuel | tank |
| Double Tank of Fuel | d-tank |
| Monster Stunner | Stunner |
| Shield |
| Gold Coin |
| Pile of Gold |
| Golden Vase |
| Extra Life |
Other Features | Manual/Official Name | Recommended Alias | Information |
---|
| Energy Charger | Charger |
| Energy Drain | Drain |
| Hidden Spear | Spear |
| Stationary Spikes | Spikes |
| Teleporter (Yellow, Purple, Green) | Y-,P-,G-tele[porter] |
| Button (Red, Blue, Cyan) | R-,B-,G-button | Call it GREEN instead of cyan |
| Floor Switch (Red, Blue, Cyan) | R-,B-,G-switch | Call it GREEN instead of cyan |
| Barrier (Red, Blue, Cyan) | R-,B-,G-barrier | Call it GREEN instead of cyan |
| Ladder | | |
| Moving Ladder | Up/Down Ladder | These look the same with the animation running in opposite directions. This makes them difficult to tell apart in screenshots. In the big .png's on the levels subpages, the end with the grey bar indicates the direction the ladder is scrolling. In the smaller, in-editor shots it's the end that has a white bar. |
| Door/Exit | | Has to open fully for exiting the level. This takes a little while, which may affect routing. |
Blocks | Manual/Official Name | Recommended Alias | Information |
---|
| | Box/Crate | |
| Steel Barrier | Purple | |
| Light Red Bricks | l-red | |
| Dark Red Bricks | d-red | |
| Stone | | |
| | Gold[en Block] | |
| ? | Panel | |
Special Blocks | Manual/Official Name | Recommended Alias | Information |
---|
| Moving Platform (Left) | Conveyor | The direction the stripes are leaning indicates which direction the conveyor moves. |
| Moving Platform (Right) | Conveyor |
| Sludgy Tiles | Moss/Mossy l-red, d-red or stone |
| Icy Tiles | Ice/Icy l-red, d-red or stone |
| Mirage Bricks/Stone, Secret/Hidden Passage | e.g. Mirage l-red or Hidden Passage | |
| | Rounded L-red/D-Red/Stone | Actually has the same hitbox as non-rounded blocks. |
| | Reinforced L-Red/D-Red | |
Background/Foreground | Manual/Official Name | Recommended Alias | Information |
---|
| | Background | |
| | Space/Black | |
| Column | | |
| Jungle/Vines/Ivy | Vines | |
| | Fence | |
Technical:
- sp/f - subpixels per frame.
- sp/f^2 - subpixels per frame squared.
- hspeed - Horizontal speed.
- vspeed - Vertical speed.
_(remove once answered and add answer to relevant section)_
- Speed when rapidly climbing a ladder/autoladder by constantly jumping?
- Also someone mentioned you walk faster when out of fuel? At what speed then?
- Nach: I don't know about walking, but jumping is certainly faster without fuel.
- Svim: If it's been measured that there's no difference, could someone remove this question?
- Can enemy movement patterns be manipulated other than by one's own positioning, i.e. through the RNG? How do trackbots "track" you exactly, what rules do they follow?
Game Data
Measurements
- 26 blocks wide.
- 16 blocks high.
- 1 block is 24 pixels.
- 1 pixel is 16 subpixels.
- Height of Jump is 565 subpixels.
- Distance of Jump is 1117 subpixels.
Speeds
- Jetpack up terminal speed: 64 sp/f.
- Fall down terminal vspeed: 64 sp/f.
- Fall down terminal hspeed: 20 sp/f.
- Jetpack terminal hspeed: 64 sp/f.
- Walking speed: 55 sp/f.
- Walking speed with conveyor: 60 sp/f.
- Walking speed against conveyor: 25 sp/f.
- Walking on moss: 32 sp/f.
- Jump initial speed up: 68 sp/f.
- Jump initial hspeed: 62 sp/f.
- Climbing ladders: 45 sp/f (normal)
- Climbing ladders: 20 sp/f (against)
- Climbing ladders: 64 sp/f (with motion)
Acceleration:
- Jump horizontal deceleration: 2 sp/f^2
- In-air horizontal acceleration: 3 sp/f^2 (hspeed >20 sp/f, can undershoot)
- In-air horizontal acceleration: 5 sp/f^2 (hspeed <=20 sp/f).
- Acceleration of gravity: 5 sp/f^2 (jumping)
- Acceleration of gravity: 6 sp/f^2 (jetpack cutoff)
- Jetpack vertical acceleration: 4 sp/f^2.
- Jetpack horizontal acceleration: 6 sp/f^2.
Border cases:
- 1st frame of running jump: 55,-68 sp/f (yes, 55, not existing hspeed).
- 2nd frame of running jump: 62,-68 sp/f
- 1st frame of jetpacking adds hspeed iff already moving horizontally.
- 1st frame of cliff runoff: 5,-64 sp/f (if holding jump, normal jump acceleration on this frame).
Phasing
- Phasing a pink block: 5 frames.
- Phasing a light red brick: 26 frames.
- Phasing a dark red brick: 56 frames.
- Phasing a crate: 5 frames.
- Return of a pink block: 20 frames.
- Return of a light red brick: 94 frames.
- Return of a dark red brick: 226 frames.
Fuel
- Full tank: 10000 units.
- Half tank: 5000 units.
- Fuel usage: 10 units/frame.
- Charger recharge rate: 10 units/frame.
- Fuel drain drain rate: 20 units/frame.
Randomness
Uses Borland C / Turbo C++'s rand() function. Which is a
LCG PRNG, which works as follows:
uint32_t seed; //Seed is 32 bits
int rand()
{
seed = seed*22695477 + 1; //Seed multiplies and adds, and possibly overflows
return (seed >> 16) & 32767; //Use bits 16-30 for requested random value
}
Using phaser (even if not trying to phase anything) seems to use RNG throws.
- Svim: what does this mean in plain language? it uses the RNG, but doesn't change it?
- Ilari: The random number sequence doesn't change, but the position of future random throws, and thus the random throws themselves, changes.
- Ilari: This can be used for luck manipulation. Due to rarity of bonus items, it is difficult to manipulate those. However, manipulating random enemy AIs should be much more feasible.
Enemies
- Any enemy affected by gravity (Trackbots and Steel Balls) has a falling speed of 64 sp/f with no acceleration (speed is achieved immediately).
| Name | Speed | Behavior |
---|
| Trackbot | Horizontal: 43 sp/f, Vertical (ladder): 33 sp/f | Affected by gravity. Generally heads in your direction. Makes random decisions at ladder/floor intersections - these can be manipulated through phaser usage, although some decisions cannot be changed. |
| Steel Ball / Marble | Horizontal: 59 sp/f | Affected by gravity. Reverses horizontal direction when it hits a wall. |
| Spring | Vertical: 50 sp/f | Reverses vertical direction when it hits a surface. Takes 5 frames to reverse direction. |
| Missile | Horizontal and vertical: 64 sp/f | Does a 90 degree clockwise turn when it hits a wall. |
| Spikes / Spinner | Horizontal and vertical: 20 sp/f | Moves diagonally at all times. Bounces at a 90 degree angle when it hits a surface, and will reverse direction completely if it hits a corner perfectly. |
| Flitzer | Horizontal and vertical: 11 sp/f | Randomly moves in one of eight directions. Changes direction when it hits a wall, otherwise changes direction every 7 frames. |
| Batbot | Horizontal: 10 sp/f, Vertical: 17 sp/f | Will head in your direction once it hits a surface, the movement is not random. Capable of moving diagonally. |
| Homer | Horizontal and vertical: 4 sp/f | Moves diagonally until it matches your x or y coordinate, then travels in a straight line at you. Can move through all blocks. |
Known tricks
Movement
- You can jump off an empty block if you started the level above it.
- You can hold down or phase horizontally while flying to keep your height.
- Phasing up/down shifts your position to directly adjacent to the block. Even in mid-air it aligns you to the grid.
- Phasing up/down stops your movement even when mid-air.
- Pressing up/down while attached to ladders also causes you to align to the grid.
Extreme Jumps
The following jumps are extreme cases of what is possible to perform. Some of them are easier if you get a running start, i.e. there is more than one block for acceleration (even though there is no acceleration for running). The format (X,Y) has distance covered horizontally and vertically in blocks (positive values are rising onto higher ground).
Onto a ladder means being able to grab a ladder in the square indicated. Onto a platform means being able to land on a platform in the square indicated.
- with no free space above
- onto a ladder
- onto a platform
- with one block of free space above
- onto a ladder
- onto a platform
- with two or more blocks of free space above
- onto a ladder
- onto a platform
Enemies
- Enemies always teleport when hitting a TP.
- Enemies trapped in blocks cannot hurt you unless released.
- Sometimes certain enemies move faster than others of their kind.
- Applies at least to: Marbles, Springs?
- Nach: Some Marbles change speed over time, not entire sure why.
- Henke37: Could be inconsistent game load? I recall the game getting slower when there are more enemies in the level.
- Svim: May have something to do with their spawn square. (unconfirmed)
Miscellaneous
- You can just phase a lred block horizontally that you have to jump to reach.
- After dying you can still finish the level by landing at/lifting to the door.
- You are invulnerable during teleportation. This cannot be repeated, there is a period of vulnerability in between two teleports even when holding down. Items may be collected during teleporting and buttons and switches are also operable.
- Teleporters may teleport to the wrong color if the level has too many of them. Unfortunately, there doesn't seem to be enough teleporters in any of the levels for this to happen.
Level Strategies
Unknown module listsubpages
ToDo
This section is useful to have so multiple people don't end up doing the same work. Just add it here and it will get done, as if by magic! :)
Use ** if you want to express you're going to do one of these to avoid overlapping work.
- Levels
- Describe what is important in each level
- Different route strategies. Add .png's (and videos?) for each.
- Naming Tables
- Correcting the formatting.
- Adding more information to some of the entries: maybe combining the table with some of the Game Data section information.
- Enemies
- Adding more information about running the game in JPC-RR. Possibly even the hd image itself, what DOS was used (where it's found), a link to a subpage containing all the WIP's and possible lua scripts, memory locations etc.
- Filling out the jumping table.
Discussion About This Page
Unknown module GameFooter