About Editing This Page

It might be a good idea to join the TASVideos 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

Debugging Codes

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".
Jetman The name is mentioned once in the hintbook.
ItemsManual/Official NameRecommended AliasInformation
Emerald GemGem
Single Tank of Fuel[single] tank 5000 units of fuel
Double Tank of Fueld[ouble] tank 10000 units of fuel
Monster StunnerStunner
Shield Only appears randomly
Gold Coin 10 points
Pile of Gold 25 points
Golden Vase 50 points
Extra Life 100 points in addition to the extra life
Other Features
Energy ChargerCharger adds 30 units of fuel per frame
Energy DrainDrain drains 20 units of fuel per frame
Hidden SpearSpear
Stationary SpikesSpikes
Teleporter (Yellow, Purple, Green)Y-,P-,G-tele[porter] 20 frames
Button (Red, Blue, Cyan)R-,B-,G-buttonyou can call it green instead of cyan.
Floor Switch (Red, Blue, Cyan)R-,B-,G-switchYou can call it green instead of cyan. Both enemies and Jetman toggle when they touch the switch.
Barrier (Red, Blue, Cyan)R-,B-,G-barrierYou can call it green instead of cyan.
Ladder
Moving LadderUp/Down LadderThese 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 pixels indicates the direction the ladder is scrolling. In the smaller, in-editor shots it's the end that has the white pixels.
Door/Exit Has to open fully for exiting the level. This takes a little while, which may affect routing.
Blocks Phase time/Reset time
Box/Crate 5 frames / N/A
Steel BarrierPurple 5 frames / 20 frames
Light Red Bricksl-red 26 frames / 94 frames
Dark Red Bricksd-red 56 frames / 226 frames
Stone N/A / N/A
Gold[en Block] N/A / N/A
?Panel N/A / N/A
Special Blocks Information
Moving Platform (Left)ConveyorThe direction the stripes are leaning indicates which direction the conveyor moves.
Moving Platform (Right)Conveyor
Sludgy TilesMoss/Mossy l-red, d-red or stone
Icy TilesIce/Icy l-red, d-red or stone
Mirage Bricks/Stone, Secret/Hidden Passagee.g. Mirage l-red, Mirage Panel or Hidden Passage
Rounded L-red/D-Red/StoneActually has the same hitbox as non-rounded blocks.
Reinforced L-Red/D-Red
Background/Foreground
Background
Space/Black
Column
Jungle/Vines/IvyVines
Fence
Technical:

Open Game-Related Questions

_(remove once answered and add answer to relevant section)_

Game Data

Measurements

Speeds

Acceleration:

Border cases:

Phasing

Fuel

Jetman hitbox relative to his coordinates

Misc

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 the phaser (even if not trying to phase anything) uses RNG throws. This can be used for luck manipulation. Due to the rarity of the bonus items, it is difficult to manipulate those. However, manipulating random enemy AIs is feasible. This includes trackbots and flitzers.

Enemies

NameSpeedBehavior
TrackbotHorizontal: 43 sp/f, Vertical (ladder): 33 sp/f Affected by gravity. Generally heads in your direction. It can change direction after teleporting. Makes somewhat random decisions at ladder/floor intersections - these can be manipulated through phaser usage, although some decisions cannot be changed. Being on the left/right of the bot makes it go that way at a left/right fork.
Steel Ball / MarbleHorizontal: 59 sp/f Affected by gravity. Reverses horizontal direction when it hits a wall. Does not fall through ladders. More about their movement in the section titled "Marble Movement".
SpringVertical: 50 sp/f Reverses vertical direction when it hits a surface. Takes 5 frames to reverse direction.
MissileHorizontal and vertical: 64 sp/f Does a 90 degree clockwise turn when it hits a wall.
Spikes / SpinnerHorizontal 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. The initial direction is random and must be manipulated before the previous level's exit.
FlitzerHorizontal and vertical: 11 sp/f Randomly moves in one of eight directions. Changes direction when it hits a wall, otherwise changes direction every 8 frames.
BatbotHorizontal: 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. Cannot activate switches.
HomerHorizontal 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. Cannot activate switches.

Marble Movement

Left-Right motion in a "basin".

Spring movement

Spring movement also has variable speed, caused by similar factors as in case of marbles, but simpler due to fact that springs always bounce between walls and don't feel conveyors.
The exact subpixel ranges for direction transition are not known, but from pixel collision assumption together with empirical data, one gets:
Let the spring bounce between blocks at y1 and y2, and initial position be y0.
Upper turning position is: p1 = 384 * y1 + a1 (366<=a1<=415) Lower turning position is: p2 = 384 * y2 + a2 (128<=a2<=177) Initial position is: p0 = 384 * y0 + 384
We need to solve a1 and a2 such that p0 = p1 = p2 (mod 50).
For a1: (34*y1+a1)=(34*y0+34) (mod 50) -> a1=(34*y0-34*y1+34) (mod 50) -> a1=366+(34*y0-34*y1+18)%50 For a2: (34*y2+a2)=(34*y0+34) (mod 50) -> a2=(34*y0-34*y2+34) (mod 50) -> a2=128+(34*y0-34*y2+6)%50
The distance between turning points is: p2-p1=(384*y2-384*y1)-238+((34*y0-34*y2+6)%50-(34*y0-34*y1+18)%50)
Writing W=y2-y1, Y=y0-y1: p2-p1=384*W-238+((34*Y-34*W+6)%50-(34*Y+18)%50)
The last term is -49...49. Thus the spring is fast if last term is <=0, so that:
(34Y+16W+6)%50<=(34Y+18)%50
Y is the initial position of the spring in "basin" (0 is topmost) and W is height of "basin".

Known tricks

Movement Without Fuel

If it's a troll, it's not even added on April the 1st, and is in pretty bad tastes.

Phasing

Flying

Ladders

Extreme Jumps (incomplete)

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.

Enemies

Miscellaneous

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! :) Add your name below if you want to express you're going to do one of these to avoid overlapping work.

Discussion About This Page

Additional tools used by Jetpack team

slamo

Nach

Svimmer

Expand/Collapse collapse-content-_d5861c90540c4bcbbc4c8e758b3e1106

GameResources/DOS/Jetpack last edited by adelikat on 1/17/2022 12:25 AM
Page History Latest diff List referrers View Source