Advertisement
FractalFusion

Mega Man X RAM Map

Feb 27th, 2012
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 11.60 KB | None | 0 0
  1. <table border="1">
  2.  
  3. <tr>
  4. <td><center>Address</center></td>
  5. <td><center>Byte length</center></td>
  6. <td><center>Description</center></td>
  7. </tr>
  8.  
  9. <tr>
  10. <td>$7E:0000</td>
  11. <td>16 bytes</td>
  12. <td>Scratch RAM</td>
  13. </tr>
  14.  
  15. <tr>
  16. <td>$7E:003B</td>
  17. <td>1 byte</td>
  18. <td>Intro sequence timer for the title screen. Counts down from #$FF at the title screen. When it reaches 0, there is a fade out and the intro sequence starts again. The counter is reset to #$EA when a new option is selected.</td>
  19. </tr>
  20.  
  21. <tr>
  22. <td>$7E:003C</td>
  23. <td>1 byte</td>
  24. <td>The currently selected option on the title screen. #$00 = Start Game, #$01 = Password Screen, #$02 = Options Menu.</td>
  25. </tr>
  26.  
  27. <tr>
  28. <td>$7E:00A7</td>
  29. <td>1 byte</td>
  30. <td>Controller data 1, current frame. Format: axlr----<br>
  31. a = A; x = X; l = L; r = R, - = unused.
  32. </td>
  33. </tr>
  34.  
  35. <tr>
  36. <td>$7E:00A8</td>
  37. <td>1 byte</td>
  38. <td>Controller data 2, current frame. Format: byetUDLR<br>
  39. b = B; y = Y; e = Select; t = Start; U = Up; D = Down; L = Left; R = Right.
  40. </td>
  41. </tr>
  42.  
  43. <tr>
  44. <td>$7E:00A9</td>
  45. <td>1 byte</td>
  46. <td>Controller data 1, previous frame. Format: axlr----<br>
  47. a = A; x = X; l = L; r = R.
  48. </td>
  49. </tr>
  50.  
  51. <tr>
  52. <td>$7E:00AA</td>
  53. <td>1 byte</td>
  54. <td>Controller data 2, previous frame. Format: byetUDLR<br>
  55. b = B; y = Y; e = Select; t = Start; U = Up; D = Down; L = Left; R = Right.
  56. </td>
  57. </tr>
  58.  
  59. <tr>
  60. <td>$7E:00AB</td>
  61. <td>1 byte</td>
  62. <td>Controller data 1, button press (current frame and not previous frame). Format: axlr----<br>
  63. a = A; x = X; l = L; r = R.
  64. </td>
  65. </tr>
  66.  
  67. <tr>
  68. <td>$7E:00AC</td>
  69. <td>1 byte</td>
  70. <td>Controller data 2, button press (current frame and not previous frame). Format: byetUDLR<br>
  71. b = B; y = Y; e = Select; t = Start; U = Up; D = Down; L = Left; R = Right.
  72. </td>
  73. </tr>
  74.  
  75. <tr>
  76. <td>$7E:00B3</td>
  77. <td>1 byte</td>
  78. <td>Used as a counter for the screen's level of brightness when fading (bits 0 to 7). #$0F = full brightness, #$00 = completely faded.</td>
  79. </tr>
  80.  
  81. <tr>
  82. <td>$7E:00B4</td>
  83. <td>2 bytes</td>
  84. <td>Camera X-position, in pixels.</td>
  85. </tr>
  86.  
  87. <tr>
  88. <td>$7E:00B6</td>
  89. <td>2 bytes</td>
  90. <td>Camera Y-position, in pixels.</td>
  91. </tr>
  92.  
  93. <tr>
  94. <td>$7E:0100</td>
  95. <td>unknown</td>
  96. <td>Sound effects?</td>
  97. </tr>
  98.  
  99. <tr>
  100. <td>$7E:0300</td>
  101. <td>512 bytes(?)</td>
  102. <td>Graphics?</td>
  103. </tr>
  104.  
  105. <tr>
  106. <td>$7E:0740</td>
  107. <td>unknown</td>
  108. <td>Sound effects?</td>
  109. </tr>
  110.  
  111.  
  112. <tr>
  113. <td>$7E:0B9B</td>
  114. <td>1 byte</td>
  115. <td>Frame counter. Differs from the other two in that this one pauses during loading screens.</td>
  116. </tr>
  117.  
  118. <tr>
  119. <td>$7E:0B9C</td>
  120. <td>1 byte</td>
  121. <td>"Effective" frame counter. Stops when the player dies, among other things.</td>
  122. </tr>
  123.  
  124. <tr>
  125. <td>$7E:0B9D</td>
  126. <td>1 byte</td>
  127. <td>If the value in it is not zero, run the actual game; otherwise, loop forever. It's set to a non-zero value during NMI, and it's set to zero after the game mode has been run, so that the game runs exactly once a frame - one NMI trigger per frame.</td>
  128. </tr>
  129.  
  130. <tr>
  131. <td>$7E:0B9E</td>
  132. <td>1 byte</td>
  133. <td>"True" frame counter. Always increments once per frame.</td>
  134. </tr>
  135.  
  136. <tr>
  137. <td>$7E:0BA6</td>
  138. <td>2 bytes</td>
  139. <td>Value of Pseudo-Random Number Generator.</td>
  140. </tr>
  141.  
  142. <tr>
  143. <td>$7E:0BAC</td>
  144. <td>3 bytes</td>
  145. <td>X's X-position, in sub-pixels.</td>
  146. </tr>
  147.  
  148. <tr>
  149. <td>$7E:0BAF</td>
  150. <td>3 bytes</td>
  151. <td>X's Y-position, in sub-pixels.</td>
  152. </tr>
  153.  
  154. <tr>
  155. <td>$7E:0BBB</td>
  156. <td>1 byte</td>
  157. <td>X's blink (close and open eyes) animation timer. If X is standing still, begin the following cycle:<br>
  158. - Start with #$50, decrease by one every frame until it reaches 0;<br>
  159. - Make X blink once (#$08-frame-long blink);<br>
  160. - Set to #$30, decrease by one every frame until it reaches 0;<br>
  161. - Make X blink twice (#$04-frame-long blinks);<br>
  162. If X is moving, reset the cycle.
  163. </td>
  164. </tr>
  165.  
  166. <tr>
  167. <td>$7E:0BBF</td>
  168. <td>1 byte</td>
  169. <td>X's sprite (bits 0-7).</td>
  170. </tr>
  171.  
  172. <tr>
  173. <td>$7E:0BC2</td>
  174. <td>2 bytes</td>
  175. <td>X's X-velocity, in sub-pixels per frame.</td>
  176. </tr>
  177.  
  178. <tr>
  179. <td>$7E:0BC4</td>
  180. <td>2 bytes</td>
  181. <td>X's Y-velocity, in negative sub-pixels per frame.</td>
  182. </tr>
  183.  
  184. <tr>
  185. <td>$7E:0BC6</td>
  186. <td>1 byte</td>
  187. <td>X's Y-acceleration, in sub-pixels per frame per frame.</td>
  188. </tr>
  189.  
  190. <tr>
  191. <td>$7E:0BCF</td>
  192. <td>1 byte</td>
  193. <td>X's current health.</td>
  194. </tr>
  195.  
  196. <tr>
  197. <td>$7E:0BDB</td>
  198. <td>1 byte</td>
  199. <td>Current weapon selected. A list of values can be found <a href=http://dl.dropbox.com/u/14136904/Selected%20Weapon.html>here</a>.</td>
  200. </tr>
  201.  
  202. <tr>
  203. <td>$7E:0BDD</td>
  204. <td>1 byte</td>
  205. <td>Number of bullets (of any shot type) onscreen.</td>
  206. </tr>
  207.  
  208. <tr>
  209. <td>$7E:0BDE</td>
  210. <td>6 bytes</td>
  211. <td>Controller data. Disabled buttons (such as default X and select) are not included.</td>
  212. </tr>
  213.  
  214. <tr>
  215. <td>$7E:0BF8</td>
  216. <td>1 byte</td>
  217. <td>Timer for how long to display X's buster after shooting. Set to #$FF when X's buster isn't out, set to #$0F and decreases once per frame after shooting. Is reset to #$0F with each successive shot.</td>
  218. </tr>
  219.  
  220. <tr>
  221. <td>$7E:0BFA</td>
  222. <td>1 byte</td>
  223. <td>Dashing timer. Decreases by one every frame. Once it hits 0, X stops dashing. Freezes at the last value it was at if X stop dashing before it reaches 0.</td>
  224. </tr>
  225.  
  226. <tr>
  227. <td>$7E:0BFF</td>
  228. <td>1 byte</td>
  229. <td>Timer for the level of X's charge shot, while charging. Starts at #$95 and decreases once per frame. #$95 = green shot charged, #$4F = blue shot charged, #$01 = pink shot charged.</td>
  230. </tr>
  231.  
  232. <tr>
  233. <td>$7E:0C03</td>
  234. <td>1 byte</td>
  235. <td>Level of X's charged shot, while charging. #$00 = not charging, #$01 = pink shot charged, #$02 = blue shot charged, #$03 = green shot charged.</td>
  236. </tr>
  237.  
  238. <tr>
  239. <td>$7E:0C06</td>
  240. <td>1 byte</td>
  241. <td>Bitflags: Standing = #$04, hanging on left wall = #$02, right wall = #$01.</td>
  242. </tr>
  243.  
  244. <tr>
  245. <td>$7E:0C10</td>
  246. <td>1 byte</td>
  247. <td>X's recovery (flashing) time after a hit. Decreases by one every frame.</td>
  248. </tr>
  249.  
  250. <tr>
  251. <td>$7E:0C11</td>
  252. <td>1 byte</td>
  253. <td>X's direction. #$00 = left, #$28 = right.</td>
  254. </tr>
  255.  
  256. <tr>
  257. <td>$7E:0C30</td>
  258. <td>96 bytes</td>
  259. <td>Stuff for armor parts (position, type, and so forth). [TODO]</td>
  260. </tr>
  261.  
  262. <tr>
  263. <td>$7E:0E18</td>
  264. <td>1 byte</td>
  265. <td>Ride armor exist flag (#$00 = ride armor does not exist, #$01 = ride armor exists).</td>
  266. </tr>
  267.  
  268. <tr>
  269. <td>$7E:0E1A</td>
  270. <td>1 byte</td>
  271. <td>Ride armor's current state. (#$00 = empty, #$02 = still, #$04 = walking, #$06 = punching, #$08 = jumping, #$0E = dashing, #$14 = mount ride armor, #$16 = dismount ride armor)</td>
  272. </tr>
  273.  
  274. <tr>
  275. <td>$7E:0E1C</td>
  276. <td>3 bytes</td>
  277. <td>Ride armor's X-position, in sub-pixels.</td>
  278. </tr>
  279.  
  280. <tr>
  281. <td>$7E:0E1F</td>
  282. <td>3 bytes</td>
  283. <td>Ride armor's Y-position, in sub-pixels.</td>
  284. </tr>
  285.  
  286. <tr>
  287. <td>$7E:0E32</td>
  288. <td>2 bytes</td>
  289. <td>Ride armor's X-velocity, in sub-pixels per frame.</td>
  290. </tr>
  291.  
  292. <tr>
  293. <td>$7E:0E34</td>
  294. <td>2 bytes</td>
  295. <td>Ride armor's Y-velocity, in negative sub-pixels per frame.</td>
  296. </tr>
  297.  
  298. <tr>
  299. <td>$7E:0E36</td>
  300. <td>1 byte</td>
  301. <td>Ride armor's Y-acceleration, in sub-pixels per frame per frame</td>
  302. </tr>
  303.  
  304. <tr>
  305. <td>$7E:0E4B</td>
  306. <td>1 byte</td>
  307. <td>Ride armor's heading (#$00 = facing left, #$40 = facing right).</td>
  308. </tr>
  309.  
  310. <tr>
  311. <td>$7E:0E4E</td>
  312. <td>6 bytes</td>
  313. <td>Controller data, if ride armor is nearby. Disabled buttons (such as default X and select) are not included. Data for previous frame not included.</td>
  314. </tr>
  315.  
  316. <tr>
  317. <td>$7E:0E68</td>
  318. <td>At least 64*6 bytes</td>
  319. <td>Enemy data. Each enemy is given 64 bytes. [TODO]
  320. </td>
  321. </tr>
  322.  
  323. <tr>
  324. <td>$7E:1228</td>
  325. <td>At least 64*5 bytes</td>
  326. <td>X's shot/bullet data. Each shot is given 64 bytes. [TODO]
  327. </td>
  328. </tr>
  329.  
  330. <tr>
  331. <td>$7E:1428</td>
  332. <td>At least 64*5 bytes</td>
  333. <td>Enemy shot/bullet data. Each shot is given 64 bytes. [TODO]
  334. </td>
  335. </tr>
  336.  
  337. <tr>
  338. <td>$7E:1628</td>
  339. <td>At least 48*5 bytes</td>
  340. <td>Misc. data (such as item drops). Each item is given 48 bytes. [TODO]
  341. </td>
  342. </tr>
  343.  
  344. <tr>
  345. <td>$7E:1928</td>
  346. <td>Unknown</td>
  347. <td>Unknown data (possibly including shot impact and explosion sprites). Each datum is given 32 bytes. [TODO]
  348. </td>
  349. </tr>
  350.  
  351. <tr>
  352. <td>$7E:1ED2</td>
  353. <td>1 byte</td>
  354. <td>Current item selected on the pause menu.<br>#$00 = X Buster<br>#$01 = Homing Torpedo<br>#$02 = Chameleon Sting<br>#$03 = Rolling Shield<br>#$04 = Fire Wave<br>#$05 = Storm Tornado<br>#$06 = Electric Spark<br>#$07 = Boomerang Cutter<br>#$08 = Shotgun Ice<br>#$09 = Escape Unit<br>#$0A = Sub Tank 1<br>#$0B = Sub Tank 2<br>#$0C = Sub Tank 3<br>#$0D = Sub Tank 4</td>
  355. </tr>
  356.  
  357. <tr>
  358. <td>$7E:1F7A</td>
  359. <td>1 byte</td>
  360. <td>Current level ID.<br>#$00 = Highway/intro stage<br>#$01 = Launch Octopus<br>#$02 = Sting Chameleon<br>#$03 = Armored Armadillo<br>#$04 = Flame Mammoth<br>#$05 = Storm Eagle<br>#$06 = Spark Mandrill<br>#$07 = Boomer Kuwanger<br>#$08 = Chill Penguin<br>#$09 = Sigma Stage 1<br>#$0A = Sigma Stage 2<br>#$0B = Sigma Stage 3<br>#$0C = Sigma Stage 4</td>
  361. </tr>
  362.  
  363. <tr>
  364. <td>$7E:1F7E</td>
  365. <td>1 byte</td>
  366. <td>Increases by one each time you visit the Hadoken capsule location. It's used when determining whether or not to make the capsule appear.</td>
  367. </tr>
  368.  
  369. <tr>
  370. <td>$7E:1F80</td>
  371. <td>1 byte</td>
  372. <td>Life counter. Capped at #$09.</td>
  373. </tr>
  374.  
  375. <tr>
  376. <td>$7E:1F87</td>
  377. <td>16 bytes</td>
  378. <td>Weapon Energy. Each weapon's energy is stored as two bytes. First byte: Sub-unit amount. Second byte (bits 0 to 7): Unit amount.<br>
  379. Once unit amount is 0, sub-unit amount cannot be used even if it is not 0.<br>
  380. Usage: Homing Torpedo and Chameleon Sting: 1/2 unit; Fire Wave: 1/16 unit; Everything else: 1 unit.
  381. </td>
  382. </tr>
  383.  
  384. <tr>
  385. <td>$7E:1F99</td>
  386. <td>1 byte</td>
  387. <td>Bitflags for upgrades and sub-tanks collected. Format: dcbaZYXW <br> Upgrades: W = Head; X = Arm (Buster); Y = Body (Armor); Z = Leg (Dash).<br>
  388. Sub-tanks: a = Eagle; b = Armadillo; c = Mandrill; d = Mammoth.
  389. </td>
  390. </tr>
  391.  
  392. <tr>
  393. <td>$7E:1F9A</td>
  394. <td>1 byte</td>
  395. <td>X's maximum health. Increases by 2 per heart tank.</td>
  396. </tr>
  397.  
  398. <tr>
  399. <td>$7E:1F9C</td>
  400. <td>1 byte</td>
  401. <td>Bitflags for heart tanks collected. Format: hgfedcba <br>
  402. a = Penguin; b = Armadillo; c = Eagle; d = Chameleon; e = Mammoth; f = Kuwanger; g = Mandrill; h = Octopus.
  403. </td>
  404. </tr>
  405.  
  406. </table>
  407.  
  408. <br>
  409. <b>Enemy/Object data</b>
  410. <br>
  411.  
  412. <table border="1">
  413.  
  414. <tr>
  415. <td><center>Offset</center></td>
  416. <td><center>Byte length</center></td>
  417. <td><center>Description</center></td>
  418. </tr>
  419.  
  420. <tr>
  421. <td>#$0</td>
  422. <td> 1 byte</td>
  423. <td>Exist flag. #$00 = Object does not exist. #$01 = Object exists.</td>
  424. </tr>
  425.  
  426. <tr>
  427. <td>#$1</td>
  428. <td> 1 byte</td>
  429. <td>Object's action 1.</td>
  430. </tr>
  431.  
  432. <tr>
  433. <td>#$2</td>
  434. <td> 1 byte</td>
  435. <td>Object's action 2.</td>
  436. </tr>
  437.  
  438. <tr>
  439. <td>#$4</td>
  440. <td> 3 bytes</td>
  441. <td>Object X-position, in sub-pixels.</td>
  442. </tr>
  443.  
  444. <tr>
  445. <td>#$7</td>
  446. <td> 3 bytes</td>
  447. <td>Object Y-position, in sub-pixels.</td>
  448. </tr>
  449.  
  450. <tr>
  451. <td>#$A</td>
  452. <td> 1 byte</td>
  453. <td>Object ID.</td>
  454. </tr>
  455.  
  456. <tr>
  457. <td>#$17</td>
  458. <td> 1 byte</td>
  459. <td>Object sprite (bits 0-7).</td>
  460. </tr>
  461.  
  462. <tr>
  463. <td>#$1A</td>
  464. <td> 2 bytes</td>
  465. <td>Object X-velocity, in sub-pixels per frame.</td>
  466. </tr>
  467.  
  468. <tr>
  469. <td>#$1C</td>
  470. <td> 2 bytes</td>
  471. <td>Object Y-velocity, in negative sub-pixels per frame.</td>
  472. </tr>
  473.  
  474. <tr>
  475. <td>#$1E</td>
  476. <td> 1 byte</td>
  477. <td>Object Y-acceleration, in sub-pixels per frame per frame.</td>
  478. </tr>
  479.  
  480. <tr>
  481. <td>#$22</td>
  482. <td> 2 bytes</td>
  483. <td>Object X-position, in pixels.</td>
  484. </tr>
  485.  
  486. <tr>
  487. <td>#$24</td>
  488. <td> 2 bytes</td>
  489. <td>Object Y-position, in pixels.</td>
  490. </tr>
  491.  
  492. <tr>
  493. <td>#$27</td>
  494. <td> 1 byte</td>
  495. <td>Object's current health.</td>
  496. </tr>
  497.  
  498. <tr>
  499. <td>#$28</td>
  500. <td> 24 bytes</td>
  501. <td>Unknown. Contains further data about the object, such as recovery timers for bosses. Data may not be fixed.</td>
  502. </tr>
  503.  
  504. </table>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement