The goal of this page is to document all known features (including bugs)
in GameFreak's Pulseman for Sega Genesis.
Some of these tricks are possible or even trivial to perform in realtime,
while some of them are nearly impossible to find, requiring lengthy automated
testing (i.e. a robot) to reproduce.
General Techniques
Dashing
By pressing left or right twice, you can travel a short distance (about
128 pixels) quickly (about 30 frames). Although you can't walk until the 32nd
frame, you can jump on the 30th. While dashing, you will not affect or be
affected by enemies. Dashing into a wall at a short distance will result
in a quicker charge (20-25 fr).
For shorter distances (>206 px) without any starting momentum, dashing
several times is the fastest form of movement.
Running
When running, you will reach the highest speed (5 px/fr) and become charged on the 50th frame. (The charged animation will start on the 52nd frame.)
Punching
You can punch a by pressing the A button when uncharged. This will deal 2
damage points in most circumstances. You will be able to walk on the 23rd frame
after, but may jump at any time. You can preserve your momentum by punching
from a running jump.
Flash Arrow
You can throw a projectile by pressing A while charged. This projectile will
cause 1 damage point and will often cause a frame or two of lag. It will
travel at a little less than 16 px/fr.
Volteccer
You can perform this move by pressing B while charged. You will turn into an
electrically charged ball and move around at 8 px/fr. If you don't bounce
into anything after 26 frames, you will return to your uncharged state. If
you do, you will continue to volteccer until you bounce into another wall
or lose your charge. This would be a very useful move, but there is a 34 frame
delay when first volteccering and an 8 frame delay for each bounce.
While volteccering, you can destroy enemies and are immune to damage from
enemies and spikes.
Wires
Some levels contain wires. These are long tracks which allow you to move at
volteccer speed without requiring you to be charged. You can catch onto a wire
by flashing while close enough to it. You can leave a wire at any time by
pressing any button.
RAM Values
Object System
Data for all objects are stored starting at 0xe000. Each object has
0x80 (128B) of data. Pulseman's object data are stored at 0xe000. Temporary objects
(i.e. those that aren't always on the screen) start at 0xe300. The largest observed
number of temporary objects is 25 although more may be possible. These objects
include enemies, confetti, enemy explosions, projectiles, platforms, etc.
The x and y values stored are relative to the camera. To find the absolute position,
add the camera coordinates. An object at the left edge of the camera has an x-value of 144 (0x90). Objects with an x-value of 0 or 557 (0x241) are destroyed.
offset | type | meaning |
---|
+0x00 | 1B | object type |
+0x0B | 1B | animation frame |
+0x11 | 1B | palette flags |
+0x20 | 2B | x-position (pixels) |
+0x22 | 2B | x-position (subpixels) |
+0x24 | 2B | y-position (pixels) |
+0x26 | 2B | y-position (subpixels) |
Global Values
address | type | meaning |
---|
0xfa21 | 1B | volteccer timer |
0xfa45 | 1B | flash countdown |
0xcb6e | 1B | horizontal velocity |
0xcb72 | 2B | x-position of camera (pixels) |
0xcb7a | 2B | y-position of camera (pixels) |
The volteccer timer determines the number of frames remaining in a volteccer. It starts at 26 and decreases by one each frame, unless Pulseman hits a wall, in which case it is set to 26 again.
The flash countdown determines when Pulseman can flash. After a flash, it starts af 48 and decreases. It doesn't decrement each frame, but it will decrement by 2 if it failed to decrement on the previous frame. If Pulseman punches, this value remains constant until the punch animation finishes, at which point it continues decreasing as normal.
Thanks to
nitsuja for finding the x- and y-position for Pulseman.
Glitches
Because it was one of the last games developed for the Sega Genesis, Pulseman
is rich and complex. That complexity means that there are many interactions
between different aspects of the game which the developers didn't anticipate.
These glitches are listed in increasing order of impactfulness. The first
two are merely graphical glitches that don't affect gameplay directly, while
the rest have an increasingly dramatic effect on gameplay and strategy.
Palette Glitch
When going into a Volteccer, the screen will temporarily darken. After
certain boss fights, the screen will briefly flash white. If both of these
events happen at the same time, the screen will temporarily be glitched to
a mostly white palette. This does not seem to have any effect on gameplay
and is corrected when the bonus stage screen appears.
Wire Blackout
At the very beginning of each level, the screen will flash black for a few
frames. If you catch a wire, causing the screen to darken for Volteccer
mode, the screen will be glitched to an all-black palette for the remainder
of the level. This makes gameplay difficult, but has no other effects.
Highjump Glitch
To activate this glitch, first flash or come out of a Volteccer. Punch on the
first possible frame. 4 frames after the arc formed by your punch shrinks
to its smallest size, press backwards for one frame. Wait one frame and press
A+C. Wait one more frame and press backwards again. You will now jump about
16px higher than normally possible.
The gif to the right demonstrates this glitch followed by a normal jump.
When falling onto a diagonal platform, it is possible to fall through it. The
mechanics of this are not well understood, but a naive (but properly configured)
robot can usually find a combination of button presses that will work after a few minutes. It is also possible for a human to perform this glitch by accident in
realtime or with frame-advance, but the process tedious and best left to a robot.
Under very specific circumstances, it is also possible to fall through a flat
floor. This glitch involves a combination of falling one pixel below the floor,
having the correct sub-pixel position, and flashing and moving left at the correct times. It only occurs under very uncommon circumstances. A naively-programmed robot will take 4-18 hours to find an instance of this glitch, although a more intelligent robot can find a near-optimal instance in about an hour.