TASVideos

Tool-assisted game movies
When human skills are just not enough

Game Resources / NES / Solar Jetman

Useful addresses

Addr Size What
004C 2 bytes Camera X (screen position)
004E 2 bytes Camera Y
005A 1 byte Volatile controller-based RNG
005B 2 bytes Bit shifting RNG (big endian)
005D 2 bytes Frame timer
00C6 2 bytes Fuel remaining
00C8 2 bytes Weapon power remaining
0374 1 byte Player facing
0336 1 byte Player X speed direction (0=right, 1=left)
029B(lo) 02BA(hi) 2 bytes Player X speed
0200(lo) 021F(hi) 2 bytes Player X pixel position
0197 1 byte Player X sub-pixel
0355 1 byte Player Y speed direction (0=up, 1=down)
02D9(lo) 02F8(hi) 2 bytes Player Y speed
025D(lo) 027C(hi) 2 bytes Player Y pixel position
023E 1 byte Player Y sub-pixel

Movement

What Max p/f Up Down Left Right
Thrust 3.0 Angles 24 to 31, 0 to 8 Angles 8 to 24 Angles 17 to 31 Angles 1 to 15
Gravity 3.0 Inverted gravity Normal gravity
Object swing 4.0

The pod's maximum speed is 4.0 pixels per frame. This can only be done by tethering an object and having it pull you along. If your thrusters or the gravity attempt to accelerate the pod in the same axis, it will instantly reduce the speed to a maximum of 3.0 if the pod is traveling faster.

Thrust

Thrusting enforces a maximum speed of 3.0 pixels/frame.

The default thrusters accelerate an unburdened pod at 16, when facing straight into some direction. Carrying an object will cut this acceleration by varying amounts depending on object mass.

Thrusting straight right (direction 8) or straight left (direction 24) will count some thrusting force upward, and will prevent reaching

Basic thrusting with default thrust or Double Strength Thrusters take 2 fuel per frame, or 16 fuel when using boosters. Efficient Engines reduce the costs to 1 or 8 fuel per frame, respectively.

Gravity

Gravity enforces a maximum downward (or upward, if reverse) speed of 3.0 pixels/frame. Even zero gravity is counted as downward with zero acceleration, and will enforce the downward maximum.

Gravity usually pulls the pod down at a constant rate, depending on the planet. There may be areas on a planet submerged under a fluid of sorts. The only affect of entering one such fluid is a change in the acceleration of gravity. There's still no friction.

Anti-Gravity completely shuts off gravity when active. Downward acceleration, speed maximum, and tethered object will not be affected by gravity with this item in use.

Angles

The pod can face 32 different directions.

Straight left (24) or straight right (8) is still counted as a thrust upwards of usually zero acceleration. If you desire to travel faster than 3.0 pixels/frame going up, avoid thrusting in these directions.

Straight down (16) or straight up (0) is not counted as thrusting either left or right. There will be no interference for horizontal momentum that exceeds 3.0 pixels/frame.

Tethered objects

The RNG

005A 1 byte Volatile controller-based RNG
005B 2 bytes Bit shifting RNG (big endian)

The value at address 005A is affected by the following:

0018 Player 1 immediate - Exact mirror of controller state
0019 Player 1 pressed - Bits are set if pressed now, but not held before
001A Player 2 immediate
001B Player 2 pressed
005D Frame timer low-byte
005E Frame timer high-byte
005F Always zero?
0060 Looks like address 005D MOD 8

The thing that matters is the fact 005A is affected by direct controller input. This includes Player 2, which has no effect anywhere else in the game. By using Player 2, it is possible to gain very strong control over how the RNG works.

The values at address 005B and 005C are left-shifted every frame. The bit shifted into 005C is an XOR of bits 0x40 and 0x08 from 005A, although it has been observed to, on rare occasion, shift in an opposite of this bit. The bit shifted out of 005C is shifted into 005B, and the bit shifted out of 005B is thrown away.

Since 005B and 005C are affected by what happens with 005A, and 005A is affected by controller input, this means you should have complete control over the RNG.

During game play, you have control every other frame, but the RNG runs every frame. As the RNG "ticks" twice for every frame you have control, this makes it somewhat difficult to set the RNG perfectly.

All three RNG addresses are used for various random events.



Combined RSS Feed
GameResources/NES/SolarJetman last edited by FatRatKnight on 2014-02-09 23:10:26
Page info and history | Latest diff | List referrers | View Source