NES games have 2k RAM, thus 2048 addresses. Those addresses are divided up into 8 blocks (pages) of 256 RAM values. Typically these pages have a similar function. Each block is divided into 16 row of 16 values. Each row is usually for like functions as well.
0000 - Initializes fight (1 = fight is started, 0 if not (between rounds, etc)
0001 - Opponent ID (0-99 value)
0002 - Opp Type ID (0 = Glass Joe, 1 = King Hippo, 2 = Von Kaiser, 3 = Bald Bull, etc)
0003 - another opp ID - affecting behavior - if title bout/special moves/sprites/special KO's etc.
0004 - Fight Init. - FF is in fight, 01 is between rounds or a cut scene
0005 - Opponent Up/Down, 0 = Opponent is not knocked down, 1 = Knocked down
0006 - Current Round (changing does affect Opponent, seems to only be for opening round sequence)
0007 - Not Used (?)
0008 - Fight ID (Don1=48,KH=35,Soda=28,Von&Tyson=32,PH2&Glass=0
0009 - Fighter ID (Von=49,PH=48,Don2=35,Glass=50)
000A - # of Mac's Losses
000B - Always 0
000C - Always 0
000D - Fight init.
000E - Fight init.
000F - Not Used (?)
Row 1
0010 - 95 or B5 (unknown)
0011 - Mac X position (not actual, just appearance on screen)
0012 - Must be 0, relates to the drawing of the screen
0013 - Screen redraw offset
0014 - Set # fans, mario, menus
0015 - Mac X position (redundant to 0011)
0016 - Init. Mac Draw on screen (1 = draw mac, 0 = no mac)
0017 - Init. Opp. Draw (similar to 0016)
0018 - RNG - updates once per frame
0019 - Button ID - which button(s) is currently pressed
001A - unknown flag (always 0 or 1)
001B - Init. screen draw for menus, mario, etc. when fight begins
001C - Init. fight start sequence, 0 = in fight, 1 = not
001D - Same as 001C
001E - 0-255 Counter (unknown uses)
001F - Timer (seems to time situations when user input is not used)
Row 2
0020 - Affects on screen objects
0022 - Relates to mac's on screen position
Row 3
0030 - Flag - Init. Opp fight - sets the fighting pattern set for opponent at beginning of fight
0031 - Flag - Similar to 0030 but different number for each fighter, freezing to 14 causes opponent to be passive
0032 - Flag - Similar to 0031 but different number
0033 - Flag - Similar to 0030,0031,0032
0038 - Opp fight pattern, initializes opponent fighting patterns
0039 - Timer for opponent fighting patterns, next action will happen at 0
(VERY useful for optimizing a TAS)
003A - ID for Opp. actions, ID for what action Opp will do next (when 0039 is 0). Values not yet mapped.
003B - Global variable for set of enemy actions (115 for glass joe beginning, 150 for when he backs up
Row 4
004C - Flag for Kaisers weakness to star uppercuts (he always gets knocked down). Forcing this to 0 removes his weakness.
Row C (00C0 - 00CF)
00CB - Flag for Soda's insta-Knockdown from star. 1 when he can be knocked down by star uppercut (flagged when mac hits him in a gut before an uppercut)
Row D (00D0 - 00DF)
00D0 - Button ID for controller 1 (redundant to 06A0)
00D1 - Button ID for controller 2 (redundant to 06A1)
00D2 - Polls arrow keys
00D3 - if arrows active - 129 when pressed for 2 frames, 1 when it causes punch
00D4 - polls A 80 (hex) when pressed
00D5 - if A active 129 when pressed for 2 frames, 1 when it causes punch
00D6 - polls B 40hex when pressed
00D7 - if B active 129 when pressed for 2 frames, 1 when it causes punch
00D8 - polls Start 10hex when pressed
00D9 - if Start active 129 when pressed for 2 frames, 1 when it causes punch
00DA - polls select 20hex when pressed
00DB - if select active 129 when pressed for 2 frames, 1 when it causes punch
00DC - polls Controller 2 arrows
00DD - if C2 A active
00DE - polls C2 A o rB
00DF - if C2 A or B active
Page One (0100-01FF)
Page Two (0200-02FF)
Sprite data
Page Three (0300-03FF)
Row 0 (0300-030F) The Clock
0300 - Clock init. Flag 0 when clock is inactive (bet. Fights), 1 when active (in fight)
0301 - Clock stop flag, 1 triggers the clock to stop, 0 re-initializes
Note: the "Clock Stopping" glitch causes this to fail to re-initialize to 0
0302 - Clock Minutes
0303 - ?
0304 - Clock Tenths
0305 - Clock Seconds
0306 - partial sec not sure exactly how they function
0307 - partial sec "" ""
0308 - 4 or 5 - 4 when fight starts, moves to 5 at beg. Of round 2, rnd 3 has no affect
0309 - Not Used?
030A - Not Used?
030B - Not Used?
030C - Next Minute
030D - Next Tenth
030E - Next Second
030F - Not Used?
Row 2 (0320-032F)
0323 - Hearts (10's place)
0324 - Hearts (1's place)
Row 4 (0340-034F)
0342 - Star Punches
Row 9 (0390-039F)
0391-0393 - Mac's Health (same value in each address)
0398-039A - Opponent's Health (same value in each address)
Page Four (0400-04FF)
Page Five (0500-05FF)
Page Six (0600-06FF)
Page Seven (0700-07FF)
See also
GameResources - we have resource pages for other games too!