Rockman technical data

Introduction

This is technical data that has been analyzed from the Rockman game ROM for the purpose of making Rockman tool-assisted speedruns as precise as possible.
The disassembly of the game has been an invaluable help in discovering these.
All numbers on this page are hexadecimal unless otherwise mentioned.

Coordinate system

In Rockman and Rockman 2, every object of the game has the following properties:
The position of the object has 8 bits of decimal part, but only the integer part can be observed on the screen.

Vertical motion

Jump curve

Walking on lifts / magnet beam

During walking on a magnet beam or a lift, Rockman’s Y speed grows continuously as if he was falling. However the lift/beam forces his Y position (actually, only the integer part of it) to be stable.
This effect happens in Rockman, but not in Rockman 2.

Walking on solid ground

Every frame when Rockman bumps into an platform either from top or below (magnet beams and lifts don’t count), Rockman’s Y speed is set into a constant.
Top collision checked only when moving upwards, bottom collision checked only when moving downwards.
If he has an obstacle below him, his Y position is adjusted accordingly.

Magical Y coordinates

Climbing

Transforming

Horizontal motion

Jumping

Walking

Walking speed
Sliding speed
Acceleration
Deceleration

Magnet beams (Rockman 1)

There may be at maximum 5 magnet beams simultaneously active.
Every magnet beam has the following properties:

Lifecycle

Beams die when
Beams don’t die when
When a new magnet beam is created:
As long as B button is held:
When B button is no longer held:
Every frame when the beam exists:

Beam center position

Note: All numbers in this section are decimal, not hexadecimal.
As long as the player holds B, the beam center is adjusted according to Rockman’s position.
For lengths 1-65, the X position of the beam is therefore adjusted in the following ways:
 1:+24[1]M>32  17:+56[5]M>96    33:+88[9]M>160   49:+120[13]M>224 65:+152[17]M>288  
 2:+18[1]>26   18:+50[5]>90     34:+82[9]>154    50:+114[13]>218  65:+146[17]>282   
 3:+20[1]>28   19:+52[5]>92     35:+84[9]>156    51:+116[13]>220  
 4:+22[2]m>38  20:+54[6]m>102   36:+86[10]m>166  52:+118[14]m>230 
 5:+24[2]>40   21:+56[6]>104    37:+88[10]>168   53:+120[14]>232  
 6:+26[2]>42   22:+58[6]>106    38:+90[10]>170   54:+122[14]>234  
 7:+28[2]>44   23:+60[6]>108    39:+92[10]>172   55:+124[14]>236  

 8:+30[3]m>54  24:+62[7]m>118   40:+94[11]m>182  56:+126[15]m>246 
 9:+40[3]M>64  25:+72[7]M>128   41:+104[11]M>192 57:+136[15]M>256 
10:+34[3]>58   26:+66[7]>122    42:+98[11]>186   58:+130[15]>250  
11:+36[3]>60   27:+68[7]>124    43:+100[11]>188  59:+132[15]>252  
12:+38[4]m>70  28:+70[8]m>134   44:+102[12]m>198 60:+134[16]m>262 
13:+40[4]>72   29:+72[8]>136    45:+104[12]>200  61:+136[16]>264  
14:+42[4]>74   30:+74[8]>138    46:+106[12]>202  62:+138[16]>266  
15:+44[4]>76   31:+76[8]>140    47:+108[12]>204  63:+140[16]>268  
16:+46[5]m>86  32:+78[9]m>150   48:+110[13]m>214 64:+142[17]m>278 
Note: The second “65” is when the beam no longer grows. The number in [brackets] is the beam length in units.

Randomness

See the main article.

Memory addresses

Read from the disassembly.
Game Screen# X (hi,lo) Xspd (hi,lo) Y (hi,lo) Yspd (hi,lo)
Rockman 1 $460 $480:$4A0 $4C0:$4E0 $600:$620 $660:$680
Rockman 2 $440 $460:$480 $600:$620 $4A0:$4C0 $640:$660
Rockman 3 $380 $360:$340 no RAM address? $3C0:$3A0 $460:$440
Rockman 4 $348 $330:$318 no RAM address? $378:$360 $3F0:$3D8
Rockman 5
Rockman 6
The variables for object #n can be found by adding n to each address.
Boss has n=1 in RM1/2, Rockman always has n=0.

GameResources/NES/Rockman/Data last edited by Samsara on 8/7/2023 3:23 AM
Page History Latest diff List referrers View Source