Pokémon Red and Blue/RAM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
mNo edit summary
m (Enemy Pokemon IVs incorrectly labelled as DVs)
 
(19 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{rammap|game=Pokémon Red and Blue}}
{{rammap|game=Pokémon Red and Blue}}
Currently, many more memory addresses can be found in the Pokémon Red disassembly project ([https://github.com/pret/pokered/blob/master/wram.asm WRAM], [https://github.com/pret/pokered/blob/master/vram.asm VRAM], [https://github.com/pret/pokered/blob/master/hram.asm HRAM]).
Currently, many more memory addresses can be found in the Pokémon Red disassembly project ([https://github.com/pret/pokered/blob/master/wram.asm WRAM], [https://github.com/pret/pokered/blob/master/vram.asm VRAM], [https://github.com/pret/pokered/blob/master/hram.asm HRAM], [https://github.com/pret/pokered/blob/master/sram.asm SRAM]).
==Main==
 
  C103 - Your Picture
{{Todo|Add more addresses that are different in the Japanese version.}}
  CC2F -  
 
==Saved data (SRAM)==
===Bank 0===
Sprite decompression zone + Hall of Fame
A000 - A187 : Sprite buffer #0
A188 - A30F : Sprite buffer #1
A310 - A497 : Sprite buffer #2
 
A498 - A597 : Unused ?
 
A598 - B857 : Hall Of Fame data
 
B858 - BFFF : Unused ?
 
Note : this is the reason Missingno corrupts the HoF data : its invalid sprite, when decompressed, overwrites data past the buffers' boundaries... right into HoF data.
 
Other Pokémon with even larger corruptions reach WRAM - usually leading to crashes.
 
===Bank 1===
 
A000 - A597 : Unused ?
 
A598 - A5A2 : Player name
A5A3 - AD2B : Main data
AD2C - AF2B : Sprite data
AF2C - B0BF : Party data
B0C0 - B521 : Current box data
B522        : Tileset type
B523        : Main data checksum
 
B524 - BFFF : Unused ?
 
===Bank 2===
Pokémon boxes 1-6
A000 - A461 : Box 1
A462 - A8C3 : Box 2
A8C4 - AD25 : Box 3
AD26 - B187 : Box 4
B188 - B5E9 : Box 5
B5EA - BA4B : Box 6
BA4C        : Global checksum
BA4D - BA52 : Individual checksums
 
BA53 - BFFF : Unused
 
===Bank 3===
Pokémon boxes 7-12
A000 - A461 : Box 7
A462 - A8C3 : Box 8
A8C4 - AD25 : Box 9
AD26 - B187 : Box 10
B188 - B5E9 : Box 11
B5EA - BA4B : Box 12
BA4C        : Global checksum
BA4D - BA52 : Individual checksums
 
BA53 - BFFF : Unused
 
==Main data (WRAM)==
===Audio===
Addresses C000 to C0F2 are used by the sound engine.
 
C002 - Bit 7 : 1 if audio is muted. Other bits : if non-zero, pauses music and continues SFX until it ends.
C0DE - Volumes for all music channels (and fade for those who support it)
C0EF - Current sound bank
C0F0 - Saved sound bank
 
Bytes C0F3 to C0FF are undocumented (if used)
 
===Sprite Data===
C100 to C1FF : Data for all sprites on the current map
                Holds info for 16 sprites with $10 bytes each
                Note : player is always sprite 0
Replace x with the sprite ID
    C1x0: picture ID (fixed, loaded at map init)
    C1x1: movement status (0: uninitialized, 1: ready, 2: delayed, 3: moving)
    C1x2: sprite image index (changed on update, $ff if off screen, includes facing direction, progress in walking animation and a sprite-specific offset)
    C1x3: Y screen position delta (-1,0 or 1; added to c1x4 on each walking animation update)
    C1x4: Y screen position (in pixels, always 4 pixels above grid which makes sprites appear to be in the center of a tile)
    C1x5: X screen position delta (-1,0 or 1; added to c1x6 on each walking animation update)
    C1x6: X screen position (in pixels, snaps to grid if not currently walking)
    C1x7: intra-animation-frame counter (counting upwards to 4 until c1x8 is incremented)
    C1x8: animation frame counter (increased every 4 updates, hold four states (totalling to 16 walking frames)
    C1x9: facing direction (0: down, 4: up, 8: left, $c: right)
    C1xA to C1xF are unudocumented (if used)
 
C200 to C2FF : More data for all sprites on the current map
                Holds info for 16 sprites with $10 bytes each
                Note : player sprite is always sprite 0
    C2x0: walk animation counter (counting from $10 backwards when moving)
    C2x1:
    C2x2: Y displacement (initialized at 8, supposed to keep moving sprites from moving too far, but bugged)
    C2x3: X displacement (initialized at 8, supposed to keep moving sprites from moving too far, but bugged)
    C2x4: Y position (in 2x2 tile grid steps, topmost 2x2 tile has value 4)
    C2x5: X position (in 2x2 tile grid steps, leftmost 2x2 tile has value 4)
    C2x6: movement byte 1 (determines whether a sprite can move, $ff:not moving, $fe:random movements, others unknown)
    C2x7: (?) (set to $80 when in grass, else $0; may be used to draw grass above the sprite)
    C2x8: delay until next movement (counted downwards, status (c1x1) is set to ready if reached 0)
    C2x9 to C2xD are undocumented
    C2xE: sprite image base offset (in video ram, player always has value 1, used to compute c1x2)
    C2xF isn't documented
 
C300 to C39F : OAM DMA buffer (source for the DMA Transfer)
 
===Tile Data===
C3A0 to C507 : Buffer of all tiles onscreen
C508 to C5CF : Copy of previous buffer (used to restore tiles after closing menus)
 
===Menu Data===
  Coordinates of the position of the cursor for the top menu item (id 0)
CC24 : Y position
CC25 : X position
 
CC26 - Currently selected menu item (topmost is 0)
CC27 - Tile "hidden" by the menu cursor
CC28 - ID of the last menu item
CC29 - bitmask applied to the key port for the current menu
CC2A - ID of the previously selected menu item
CC2B - Last position of the cursor on the party / Bill's PC screen
CC2C - Last position of the cursor on the item screen
CC2D - Last position of the cursor on the START / battle menu
  CC2F - Index (in party) of the Pokémon currently sent out
CC30~CC31 - Pointer to cursor tile in C3A0 buffer
CC36 - ID of the first ''displayed'' menu item
  CC35 - Item highlighted with Select (01 = first item, 00 = no item, etc.)
  CC35 - Item highlighted with Select (01 = first item, 00 = no item, etc.)
CC3A and CC3B are unused
===Link Data===
CC3C to CC49 hold data used for Cable Club stuff
The meaning of CC47 depends on the context
CC47 - Link timeout counter
CC47 - Is player entering Cable Club ?
===Misc.===
CC97 to CCA0 : buffer for when swapping party Pokémon
===Battle===
  CCD5 - Number of turns in current battle
  CCD5 - Number of turns in current battle
CCD6 is undocumented (if used)
CCD7 - Player's Substitute HP
CCD8 - Enemy Substitute HP
CCDB - Move menu type : 0 is regular, 1 is mimic, other are text boxes (learn, PP-refill...)
CCDC - Player-selected move
CCDD - Enemy-selected move
CCE5~CCE7 - Money earned by Pay Day
Safari Zone data :
CCE8 - Opponent escaping factor
CCE9 - Opponent baiting factor
CCED - Is current Pokémon disobedient ?
CCEE - Player move that the enemy disabled
CCEF - Enemy move that the player disabled
CCF6 - Is low-health alarm disabled ?
CD05~CD06 - Amount of damage the enemy accumulated while Biding
CD1A - Player's Pokémon Attack modifier (7 means no modifier)
CD1B - Player's Pokémon Defense modifier
CD1C - Player's Pokémon Speed modifier
CD1D - Player's Pokémon Special modifier
CD1E - Player's Pokémon Accuracy modifier
CD1F - Player's Pokémon Evasion modifier
CD2D - Engaged Trainer class / legendary Pokémon ID
CD2E - Engaged Trainer roster ID / Enemy's Pokémon Attack modifier (7 means no modifier)
CD2F - Enemy's Pokémon Defense modifier
CD30 - Enemy's Pokémon Speed modifier
CD31 - Enemy's Pokémon Special modifier
CD32 - Enemy's Pokémon Accuracy modifier
CD33 - Enemy's Pokémon Evasion modifier
===Joypad simulation===
CD38 - Index for joypad input simulation. If non-zero, disables collision but does not lock player.


===Pokémon Mart===
===Pokémon Mart===
CF7B - Total Items
{| border="1" align="center" cellpadding="4" cellspacing="0" style="margin: 0 0 1em 1em; background: #f7f8ff; border: 1px #8888cc solid; border-collapse: collapse; font-size: 95%"
CF7C - Item 1
|- style=background:#ccccff
CF7D - Item 2
!JPN addr. || INT addr. || Description
CF7E - Item 3
|-
CF7F - Item 4
|CF62
CF80 - Item 5
|CF7B
CF81 - Item 6
|Total Items
CF82 - Item 7
|-
CF83 - Item 8
|CF63
CF84 - Item 9
|CF7C
CF85 - Item 10
|Item 1
|-
|CF64
|CF7D
|Item 2
|-
|CF65
|CF7E
|Item 3
|-
|CF66
|CF7F
|Item 4
|-
|CF67
|CF80
|Item 5
|-
|CF68
|CF81
|Item 6
|-
|CF69
|CF82
|Item 7
|-
|CF70
|CF83
|Item 8
|-
|CF71
|CF84
|Item 9
|-
|CF72
|CF85
|Item 10
|}


===Name Rater===
===Name Rater===
  CF92 - Which Pokémon does Name Rater Change?
  CF92 - Which Pokémon does Name Rater Change?


==Battle==
===Battle===
  CFD3 - Your Move Effect (e.g. 10h = coins scatter everywhere)
  CFD3 - Your Move Effect (e.g. 10h = coins scatter everywhere)
  CFD5 - Your Move Type
  CFD5 - Your Move Type
  CCDC - Your Move Used
  CCDC - Your Move Used


CFCC - Enemy's Move ID
{| border="1" align="center" cellpadding="4" cellspacing="0" style="margin: 0 0 1em 1em; background: #f7f8ff; border: 1px #8888cc solid; border-collapse: collapse; font-size: 95%"
CFCD - Enemy's Move Effect
|- style=background:#ccccff
CFCE - Enemy's Move Power
!JPN addr. || INT addr. || Description
CFCF - Enemy's Move Type
|-
CFD0 - Enemy's Move Accuracy
|CFB3
CFD1 - Enemy's Move Max PP
|CFCC
CFD2 - Player's Move ID
|Enemy's Move ID
CFD3 - Player's Move Effect
|-
CFD4 - Player's Move Power
|CFB4
CFD5 - Player's Move Type
|CFCD
CFD6 - Player's Move Accuracy
|Enemy's Move Effect
CFD7 - Player's Move Max PP
|-
CFD8 - Enemy's Pokémon internal ID
|CFB5
CFD9 - Player's Pokémon internal ID
|CFCE
CFDA-CFE4 - Enemy's Name
|Enemy's Move Power
CFE5 - Enemy's Pokémon internal ID
|-
CFE6-CFE7 - Enemy's HP
|CFB6
CFE8 - Enemy's Level
|CFCF
CFE9 - Enemy's Status
|Enemy's Move Type
CFEA - Enemy's Type 1
|-
CFEB - Enemy's Type 2
|CFB7
CFEC - Enemy's Catch Rate (''Unused'', only referenced by Transform script, the one actually used is at D007)
|CFD0
CFED - Enemy's Move 1
|Enemy's Move Accuracy
CFEE - Enemy's Move 2
|-
CFEF - Enemy's Move 3
|CFB8
CFF0 - Enemy's Move 4
|CFD1
CFF1 - Enemy's Attack and Defense DVs
|Enemy's Move Max PP
CFF2 - Enemy's Speed and Special DVs
|-
CFF3 - Enemy's Level
|CFB9
CFF4-CFF5 - Enemy's Max HP
|CFD2
CFF6-CFF7 - Enemy's Attack
|Player's Move ID
CFF8-CFF9 - Enemy's Defense
|-
CFFA-CFFB - Enemy's Speed
|CFBA
CFFC-CFFD - Enemy's Special
|CFD3
CFFE - Enemy's PP (First Slot)
|Player's Move Effect
CFFF - Enemy's PP (Second Slot)
|-
D000 - Enemy's PP (Third Slot)
|CFBB
D001 - Enemy's PP (Fourth Slot)
|CFD4
D002-D006 - Enemy's Base Stats
|Player's Move Power
D007 - Enemy's Catch Rate
|-
D008 - Enemy's Base Experience
|CFBC
|CFD5
|Player's Move Type
|-
|CFBD
|CFD6
|Player's Move Accuracy
|-
|CFBE
|CFD7
|Player's Move Max PP
|-
|CFBF
|CFD8
|Enemy's Pokémon internal ID
|-
|CFC0
|CFD9
|Player's Pokémon internal ID
|-
|CFC1-CFCB
|CFDA-CFE4
|Enemy's Name
|-
|CFCC
|CFE5
|Enemy's Pokémon internal ID
|-
|CFCD-CFCE
|CFE6-CFE7
|Enemy's HP
|-
|CFCF
|CFE8
|Enemy's Level
|-
|CFD0
|CFE9
|Enemy's Status
* Bit 6 : Paralyzed
* Bit 5 : Frozen
* Bit 4 : Burned
* Bit 3 : Poisoned
* Bits 0-2 : Sleep counter
|-
|CFD1
|CFEA
|Enemy's Type 1
|-
|CFD2
|CFEB
|Enemy's Type 2
|-
|CFD3
|CFEC
|Enemy's Catch Rate (''Unused'', only referenced by Transform script, the one actually used is at CFEE (JPN)/D007 (INT))
|-
|CFD4
|CFED
|Enemy's Move 1
|-
|CFD5
|CFEE
|Enemy's Move 2
|-
|CFD6
|CFEF
|Enemy's Move 3
|-
|CFD7
|CFF0
|Enemy's Move 4
|-
|CFD8
|CFF1
|Enemy's Attack and Defense IVs
|-
|CFD9
|CFF2
|Enemy's Speed and Special IVs
|-
|CFDA
|CFF3
|Enemy's Level
|-
|CFDB-CFDC
|CFF4-CFF5
|Enemy's Max HP
|-
|CFDD-CFDE
|CFF6-CFF7
|Enemy's Attack
|-
|CFDF-CFE0
|CFF8-CFF9
|Enemy's Defense
|-
|CFE1-CFE2
|CFFA-CFFB
|Enemy's Speed
|-
|CFE3-CFE4
|CFFC-CFFD
|Enemy's Special
|-
|CFE5
|CFFE
|Enemy's PP (First Slot)
|-
|CFE6
|CFFF
|Enemy's PP (Second Slot)
|-
|CFE7
|D000
|Enemy's PP (Third Slot)
|-
|CFE8
|D001
|Enemy's PP (Fourth Slot)
|-
|CFE9-CFED
|D002-D006
|Enemy's Base Stats
|-
|CFEE
|D007
|Enemy's Catch Rate
|-
|CFEF
|D008
|Enemy's Base Experience
|}


Pokémon 1st Slot (In-Battle)
Pokémon 1st Slot (In-Battle)
D009-D013 - Name
{| border="1" align="center" cellpadding="4" cellspacing="0" style="margin: 0 0 1em 1em; background: #f7f8ff; border: 1px #8888cc solid; border-collapse: collapse; font-size: 95%"
D014 - Pokémon Number
|- style=background:#ccccff
D015-D016 - Current HP
!JPN addr. || INT addr. || Description
D017 -
|-
D018 - Status
|CFF0-CFFA
D019 - Type 1
|D009-D013
D01A - Type 2
|Name
D01B -  
|-
D01C - Move #1 (First Slot)
|CFFB
D01D - Move #2 (Second Slot)
|D014
D01E - Move #3 (Third Slot)
|Pokémon Number
D01F - Move #4 (Fourth Slot)
|-
D020 - Attack and Defense DVs
|CFFC-CFFD
D021 - Speed and Special DVs
|D015-D016
D022 - Level
|Current HP
D023-D024 - Max HP
|-
D025-D026 - Attack
|CFFE
D027-D028 - Defense
|D017
D029-D02A - Speed
|
D02B-D02C - Special
|-
D02D - PP (First Slot)
|CFFF
D02E - PP (Second Slot)
|D018
D02F - PP (Third Slot)
|Status
D030 - PP (Fourth Slot)
* Bit 6 : Paralyzed
* Bit 5 : Frozen
* Bit 4 : Burned
* Bit 3 : Poisoned
* Bits 0-2 : Sleep counter
|-
|D000
|D019
|Type 1
|-
|D001
|D01A
|Type 2
|-
|D002
|D01B
|
|-
|D003
|D01C
|Move #1 (First Slot)
|-
|D004
|D01D
|Move #2 (Second Slot)
|-
|D005
|D01E
|Move #3 (Third Slot)
|-
|D006
|D01F
|Move #4 (Fourth Slot)
|-
|D007
|D020
|Attack and Defense DVs
|-
|D008
|D021
|Speed and Special DVs
|-
|D009
|D022
Level
|-
|D00A-D00B
|D023-D024
|Max HP
|-
|D00C-D00D
|D025-D026
|Attack
|-
|D00E-D00F
|D027-D028
|Defense
|-
|D010-D011
|D029-D02A
|Speed
|-
|D012-D013
|D02B-D02C
|Special
|-
|D014
|D02D
|PP (First Slot)
|-
|D015
|D02E
|PP (Second Slot)
|-
|D016
|D02F
|PP (Third Slot)
|-
|D017
|D030
|PP (Fourth Slot)
|}


  D057 - Type of battle
  D057 - Type of battle
Line 144: Line 563:
  D0D8 - Amount of damage attack is about to do. Max possible damage may appear one frame before actual damage.
  D0D8 - Amount of damage attack is about to do. Max possible damage may appear one frame before actual damage.


==Game Corner==
===Game Corner===
  D13D - 1st Game Corner Prize
  D13D - 1st Game Corner Prize
  D13E - 2nd Game Corner Prize
  D13E - 2nd Game Corner Prize
  D13F - 3rd Game Corner Prize
  D13F - 3rd Game Corner Prize


==Link Battle PRNG==
===Link Battle PRNG===
  D148-D150 - 9 Pseudo-Random Numbers used during Link Battles. Once a batch is used up, it generates a new batch with n × 5 + 1.
  D148-D150 - 9 Pseudo-Random Numbers used during Link Battles. Once a batch is used up, it generates a new batch with n × 5 + 1.


== Player ==
=== Player ===
  D158-D162 - Your Name
  D158-D162 - Your Name


Line 372: Line 791:
  D2EC-D2F6 - Nickname for 6th
  D2EC-D2F6 - Nickname for 6th


== Pokedex ==
=== Pokedex ===
:D2F7 - Own 1-8
{| border="1" align="center" cellpadding="4" cellspacing="0" style="margin: 0 0 1em 1em; background: #f7f8ff; border: 1px #8888cc solid; border-collapse: collapse; font-size: 95%"
:D2F8 - Own 9-16
|- style=background:#ccccff
:D2F9 - Own 17-24
!JPN addr. || INT addr. || Description
:D2FA - Own 25-32
|-
:D2FB - Own 33-40
|D27B
:D2FC - Own 41-48
|D2F7
:D2FD - Own 49-56
|Own 1-8
:D2FE - Own 57-64
|-
:D2FF - Own 65-72
|D27C
:D300 - Own 73-80
|D2F8
:D301 - Own 81-88
|Own 9-16
:D302 - Own 89-96
|-
:D303 - Own 97-104
|D27D
:D304 - Own 105-112
|D2F9
:D305 - Own 113-120
|Own 17-24
:D306 - Own 121-128
|-
:D307 - Own 129-136
|D27E
:D308 - Own 137-144
|D2FA
:D309 - Own 145-152  
|Own 25-32
:D30A - Seen 1-8
|-
:D30B - Seen 9-16
|D27F
:D30C - Seen 17-24
|D2FB
:D30D - Seen 25-32
|Own 33-40
:D30E - Seen 33-40
|-
:D30F - Seen 41-48
|D280
:D310 - Seen 49-56
|D2FC
:D311 - Seen 57-64
|Own 41-48
:D312 - Seen 65-72
|-
:D313 - Seen 73-80
|D281
:D314 - Seen 81-88
|D2FD
:D315 - Seen 89-96
|Own 49-56
:D316 - Seen 97-104
|-
:D317 - Seen 105-112
|D282
:D318 - Seen 113-120
|D2FE
:D319 - Seen 121-128
|Own 57-64
:D31A - Seen 129-136
|-
:D31B - Seen 137-144
|D283
:D31C - Seen 145-152
|D2FF
|Own 65-72
|-
|D284
|D300
|Own 73-80
|-
|D285
|D301
|Own 81-88
|-
|D286
|D302
|Own 89-96
|-
|D287
|D303
|Own 97-104
|-
|D288
|D304
|Own 105-112
|-
|D289
|D305
|Own 113-120
|-
|D28A
|D306
|Own 121-128
|-
|D28B
|D307
|Own 129-136
|-
|D28C
|D308
|Own 137-144
|-
|D28D
|D309
|Own 145-152
|-
|D28E
|D30A
|Seen 1-8
|-
|D28F
|D30B
|Seen 9-16
|-
|D290
|D30C
|Seen 17-24
|-
|D291
|D30D
|Seen 25-32
|-
|D292
|D30E
|Seen 33-40
|-
|D293
|D30F
|Seen 41-48
|-
|D294
|D310
|Seen 49-56
|-
|D295
|D311
|Seen 57-64
|-
|D296
|D312
|Seen 65-72
|-
|D297
|D313
|Seen 73-80
|-
|D298
|D314
|Seen 81-88
|-
|D299
|D315
|Seen 89-96
|-
|D29A
|D316
|Seen 97-104
|-
|D29B
|D317
|Seen 105-112
|-
|D29C
|D318
|Seen 113-120
|-
|D29D
|D319
|Seen 121-128
|-
|D29E
|D31A
|Seen 129-136
|-
|D29F
|D31B
|Seen 137-144
|-
|D2A0
|D31C
|Seen 145-152
|}


== Items ==
=== Items ===
:D31D - Total Items
:D31D - Total Items
:D31E - Item 1
:D31E - Item 1
Line 456: Line 993:
:D346 - Item End of List
:D346 - Item End of List


== Money ==
=== Money ===
:D347 - Money Byte 1
:D347 - Money Byte 1
:D348 - Money Byte 2
:D348 - Money Byte 2
:D349 - Money Byte 3
:D349 - Money Byte 3


== Rival ==
=== Rival ===
:D34A-D351 - Rival's Name
:D34A-D351 - Rival's Name


== Miscellaneous ==
=== Miscellaneous ===
D355 - Options
D355 - Options
:Bit 7 = Battle Animation (1 = Off, 0 = On)
:Bit 7 = Battle Animation (1 = Off, 0 = On)
Line 495: Line 1,032:
D365 = Last map location for walking through certain exits (e.g. Safari Zone gate)
D365 = Last map location for walking through certain exits (e.g. Safari Zone gate)


== Audio ==
=== Audio ===
C022 = Audio track channel 1
C022 = Audio track channel 1


Line 504: Line 1,041:
C025 = Audio track channel 4
C025 = Audio track channel 4


C0E9 = Music speed (lower values should = faster except for particularly low values)
C0E8, C0E9 = Music tempo (lower values in C0E9 may = faster except for particularly low values)
 
C0EA, C0EB = Sound effects tempo


C0EB = Audio related
C0EC, C0ED = Sound effects header pointer


C0EC = Audio related
C0EE = New sound ID


C0EF = Audio bank
C0EF = Audio bank
Line 575: Line 1,114:
::FF = Stop Sound
::FF = Stop Sound


== Map Header ==
=== Map Header ===


:D367 - 1 byte integer = Map's Tileset, 1 byte
:D367 - 1 byte integer = Map's Tileset, 1 byte
Line 589: Line 1,128:
:D392-D39C = Map's 4th Connection Data
:D392-D39C = Map's 4th Connection Data


== Tileset Header ==
=== Tileset Header ===
:D52B = Tileset Bank  
:D52B = Tileset Bank  
:D52C-D52D = Pointer to Blocks
:D52C-D52D = Pointer to Blocks
Line 597: Line 1,136:
:D535 = Grass Tile
:D535 = Grass Tile


== Tile graphics ==  
=== Tile graphics ===


Tiles are 8x8 pixels, stored in 16 bytes, with each byte representing 4 pixels.  
Tiles are 8x8 pixels, stored in 16 bytes, with each byte representing 4 pixels.  
Line 615: Line 1,154:
...  
...  


== Stored Items ==
=== Stored Items ===
:D53A - Total items in storage
{| border="1" align="center" cellpadding="4" cellspacing="0" style="margin: 0 0 1em 1em; background: #f7f8ff; border: 1px #8888cc solid; border-collapse: collapse; font-size: 95%"
:D53B - Stored Item 1
|- style=background:#ccccff
:D53C - Stored Item 1 Quantity
!JPN addr. || INT addr. || Description
:D53D - Stored Item 2
|-
:D53E - Stored Item 2 Quantity
|D4B9
:D53F - Stored Item 3
|D53A
:D540 - Stored Item 3 Quantity
|Total items in storage
:D541 - Stored Item 4
|-
:D542 - Stored Item 4 Quantity
|D4BA
:D543 - Stored Item 5
|D53B
:D544 - Stored Item 5 Quantity
|Stored Item 1
:D545 - Stored Item 6
|-
:D546 - Stored Item 6 Quantity
|D4BB
:D547 - Stored Item 7
|D53C
:D548 - Stored Item 7 Quantity
|Stored Item 1 Quantity
:D549 - Stored Item 8
|-
:D54A - Stored Item 8 Quantity
|D4BC
:D54B - Stored Item 9
|D53D
:D54C - Stored Item 9 Quantity
|Stored Item 2
:D54D - Stored Item 10
|-
:D54E - Stored Item 10 Quantity
|D4BD
:D54F - Stored Item 11
|D53E
:D550 - Stored Item 11 Quantity
|Stored Item 2 Quantity
:D551 - Stored Item 12
|-
:D552 - Stored Item 12 Quantity
|D4BE
:D553 - Stored Item 13
|D53F
:D554 - Stored Item 13 Quantity
|Stored Item 3
:D555 - Stored Item 14
|-
:D556 - Stored Item 14 Quantity
|D4BF
:D557 - Stored Item 15
|D540
:D558 - Stored Item 15 Quantity
|Stored Item 3 Quantity
:D559 - Stored Item 16
|-
:D55A - Stored Item 16 Quantity
|D4C0
:D55B - Stored Item 17
|D541
:D55C - Stored Item 17 Quantity
|Stored Item 4
:D55D - Stored Item 18
|-
:D55E - Stored Item 18 Quantity
|D4C1
:D55F - Stored Item 19
|D542
:D560 - Stored Item 19 Quantity
|Stored Item 4 Quantity
:D561 - Stored Item 20
|-
:D562 - Stored Item 20 Quantity
|D4C2
:D563 - Stored Item 21
|D543
:D564 - Stored Item 21 Quantity
|Stored Item 5
:D565 - Stored Item 22
|-
:D566 - Stored Item 22 Quantity
|D4C3
:D567 - Stored Item 23
|D544
:D568 - Stored Item 23 Quantity
|Stored Item 5 Quantity
:D569 - Stored Item 24
|-
:D56A - Stored Item 24 Quantity
|D4C4
:D56B - Stored Item 25
|D545
:D56C - Stored Item 25 Quantity
|Stored Item 6
:D56D - Stored Item 26
|-
:D56E - Stored Item 26 Quantity
|D4C5
:D56F - Stored Item 27
|D546
:D570 - Stored Item 27 Quantity
|Stored Item 6 Quantity
:D571 - Stored Item 28
|-
:D572 - Stored Item 28 Quantity
|D4C6
:D573 - Stored Item 29
|D547
:D574 - Stored Item 29 Quantity
|Stored Item 7
:D575 - Stored Item 30
|-
:D576 - Stored Item 30 Quantity
|D4C7
:D577 - Stored Item 31
|D548
:D578 - Stored Item 31 Quantity
|Stored Item 7 Quantity
:D579 - Stored Item 32
|-
:D57A - Stored Item 32 Quantity
|D4C8
:D57B - Stored Item 33
|D549
:D57C - Stored Item 33 Quantity
|Stored Item 8
:D57D - Stored Item 34
|-
:D57E - Stored Item 34 Quantity
|D4C9
:D57F - Stored Item 35
|D54A
:D580 - Stored Item 35 Quantity
|Stored Item 8 Quantity
:D581 - Stored Item 36
|-
:D582 - Stored Item 36 Quantity
|D4CA
:D583 - Stored Item 37
|D54B
:D584 - Stored Item 37 Quantity
|Stored Item 9
:D585 - Stored Item 38
|-
:D586 - Stored Item 38 Quantity
|D4CB
:D587 - Stored Item 39
|D54C
:D588 - Stored Item 39 Quantity
|Stored Item 9 Quantity
:D589 - Stored Item 40
|-
:D58A - Stored Item 40 Quantity
|D4CC
:D58B - Stored Item 41
|D54D
:D58C - Stored Item 41 Quantity
|Stored Item 10
:D58D - Stored Item 42
|-
:D58E - Stored Item 42 Quantity
|D4CD
:D58F - Stored Item 43
|D54E
:D590 - Stored Item 43 Quantity
|Stored Item 10 Quantity
:D591 - Stored Item 44
|-
:D592 - Stored Item 44 Quantity
|D4CE
:D593 - Stored Item 45
|D54F
:D594 - Stored Item 45 Quantity
|Stored Item 11
:D595 - Stored Item 46
|-
:D596 - Stored Item 46 Quantity
|D4CF
:D597 - Stored Item 47
|D550
:D598 - Stored Item 47 Quantity
|Stored Item 11 Quantity
:D599 - Stored Item 48
|-
:D59A - Stored Item 48 Quantity
|D4D0
:D59B - Stored Item 49
|D551
:D59C - Stored Item 49 Quantity
|Stored Item 12
:D59D - Stored Item 50
|-
:D59E - Stored Item 50 Quantity
|D4D1
:D59F - Stored Items End of List
|D552
|Stored Item 12 Quantity
|-
|D4D2
|D553
|Stored Item 13
|-
|D4D3
|D554
|Stored Item 13 Quantity
|-
|D4D4
|D555
|Stored Item 14
|-
|D4D5
|D556
|Stored Item 14 Quantity
|-
|D4D6
|D557
|Stored Item 15
|-
|D4D7
|D558
|Stored Item 15 Quantity
|-
|D4D8
|D559
|Stored Item 16
|-
|D4D9
|D55A
|Stored Item 16 Quantity
|-
|D4DA
|D55B
|Stored Item 17
|-
|D4DB
|D55C
|Stored Item 17 Quantity
|-
|D4DC
|D55D
|Stored Item 18
|-
|D4DD
|D55E
|Stored Item 18 Quantity
|-
|D4DE
|D55F
|Stored Item 19
|-
|D4DF
|D560
|Stored Item 19 Quantity
|-
|D4E0
|D561
|Stored Item 20
|-
|D4E1
|D562
|Stored Item 20 Quantity
|-
|D4E2
|D563
|Stored Item 21
|-
|D4E3
|D564
|Stored Item 21 Quantity
|-
|D4E4
|D565
|Stored Item 22
|-
|D4E5
|D566
|Stored Item 22 Quantity
|-
|D4E6
|D567
|Stored Item 23
|-
|D4E7
|D568
|Stored Item 23 Quantity
|-
|D4E8
|D569
|Stored Item 24
|-
|D4E9
|D56A
|Stored Item 24 Quantity
|-
|D4EA
|D56B
|Stored Item 25
|-
|D4EB
|D56C
|Stored Item 25 Quantity
|-
|D4EC
|D56D
|Stored Item 26
|-
|D4ED
|D56E
|Stored Item 26 Quantity
|-
|D4EE
|D56F
|Stored Item 27
|-
|D4EF
|D570
|Stored Item 27 Quantity
|-
|D4F0
|D571
|Stored Item 28
|-
|D4F1
|D572
|Stored Item 28 Quantity
|-
|D4F2
|D573
|Stored Item 29
|-
|D4F3
|D574
|Stored Item 29 Quantity
|-
|D4F4
|D575
|Stored Item 30
|-
|D4F5
|D576
|Stored Item 30 Quantity
|-
|D4F6
|D577
|Stored Item 31
|-
|D4F7
|D578
|Stored Item 31 Quantity
|-
|D4F8
|D579
|Stored Item 32
|-
|D4F9
|D57A
|Stored Item 32 Quantity
|-
|D4FA
|D57B
|Stored Item 33
|-
|D4FB
|D57C
|Stored Item 33 Quantity
|-
|D4FC
|D57D
|Stored Item 34
|-
|D4FD
|D57E
|Stored Item 34 Quantity
|-
|D4FE
|D57F
|Stored Item 35
|-
|D4FF
|D580
|Stored Item 35 Quantity
|-
|D500
|D581
|Stored Item 36
|-
|D501
|D582
|Stored Item 36 Quantity
|-
|D502
|D583
|Stored Item 37
|-
|D503
|D584
|Stored Item 37 Quantity
|-
|D504
|D585
|Stored Item 38
|-
|D505
|D586
|Stored Item 38 Quantity
|-
|D506
|D587
|Stored Item 39
|-
|D507
|D588
|Stored Item 39 Quantity
|-
|D508
|D589
|Stored Item 40
|-
|D509
|D58A
|Stored Item 40 Quantity
|-
|D50A
|D58B
|Stored Item 41
|-
|D50B
|D58C
|Stored Item 41 Quantity
|-
|D50C
|D58D
|Stored Item 42
|-
|D50D
|D58E
|Stored Item 42 Quantity
|-
|D50E
|D58F
|Stored Item 43
|-
|D50F
|D590
|Stored Item 43 Quantity
|-
|D510
|D591
|Stored Item 44
|-
|D511
|D592
|Stored Item 44 Quantity
|-
|D512
|D593
|Stored Item 45
|-
|D513
|D594
|Stored Item 45 Quantity
|-
|D514
|D595
|Stored Item 46
|-
|D515
|D596
|Stored Item 46 Quantity
|-
|D516
|D597
|Stored Item 47
|-
|D517
|D598
|Stored Item 47 Quantity
|-
|D518
|D599
|Stored Item 48
|-
|D519
|D59A
|Stored Item 48 Quantity
|-
|D51A
|D59B
|Stored Item 49
|-
|D51B
|D59C
|Stored Item 49 Quantity
|-
|D51C
|D59D
|Stored Item 50
|-
|D51D
|D59E
|Stored Item 50 Quantity
|-
|D51E
|D59F
|Stored Items End of List
|}


== Game Coins ==
=== Game Coins ===
:D5A4 - Casino Chips Byte 1
:D5A4 - Casino Chips Byte 1
:D5A5 - Casino Chips Byte 2
:D5A5 - Casino Chips Byte 2


== Event Flags ==
=== Event Flags ===
D5A6 to D5C5 : Missable Objects Flags (flags for every (dis)appearing sprites, like the guard in Cerulean City or the Pokéballs in Oak's Lab)
 
D5AB - Starters Back?
D5AB - Starters Back?


Line 780: Line 1,631:
D85F - Mewtwo can be caught if bit 2 clear - Needs D5C0 bit 1 clear, too
D85F - Mewtwo can be caught if bit 2 clear - Needs D5C0 bit 1 clear, too


== Wild Pokémon ==
=== Wild Pokémon ===
D887 - Wild Pokémon encounter rates
D887 - Wild Pokémon encounter rates


Line 812: Line 1,663:
:D89B - Pokémon Data Value 2
:D89B - Pokémon Data Value 2


== Opponent Trainer’s Pokémon ==
=== Opponent Trainer’s Pokémon ===
:D89C - Total enemy Pokémon
:D89C - Total enemy Pokémon
:D89D - Pokémon 1
:D89D - Pokémon 1
Line 898: Line 1,749:
:D906 - Move 3
:D906 - Move 3
:D907 - Move 4
:D907 - Move 4
:D908-D90A - Trainer ID
:D908-D909 - Trainer ID
:D90A-D90C - Experience
:D90A-D90C - Experience
:D90D-D90E - HP EV
:D90D-D90E - HP EV
Line 1,030: Line 1,881:
:DA25-DA2F - Nickname for 6th
:DA25-DA2F - Nickname for 6th


== Etc. ==
=== Etc. ===
Game Time
Game Time
:DA40 - Hours, two bytes
:DA40 - Hours, two bytes
Line 1,039: Line 1,890:
DA47 - Safari Balls
DA47 - Safari Balls


== Stored Pokémon ==
=== Stored Pokémon ===
This is for the current box that's in use.
This is for the current box that's in use.
:DA80 - Number of Pokémon in current box
:DA80 - Number of Pokémon in current box
Line 1,468: Line 2,319:
:DECC-DED6 - Nickname for 19th
:DECC-DED6 - Nickname for 19th
:DED7-DEE1 - Nickname for 20th
:DED7-DEE1 - Nickname for 20th
== Internal data (HRAM) ==
When the game boots, HRAM (FF80 to FFFE) is initialized to 0.
=== OAM DMA ===
FF80-FF89 - OAM DMA routine
=== Misc. ===
FF8A - Soft reset frame counter
Initially has value 16.
Decremented each frame START+SELECT+A+B are held down ; when 0, the game soft resets.
<!-- here is some BCD stuff I am too tired to try to comment -->
FF9F-FFA1 - Money / Coins amount (big-endian)
When holding coins amount, 0 is written to FF9F for some reason.
=== Serial ===
FFA9-FFAD - Serial status data (sync method, etc.)
=== Graphics scroll values ===
FFAE - Value copied to SCX at VBlank
FFAF - Value copied to SCY at VBlank
FFB0 - Value copied to WY  at VBlank
=== Joypad ===
FFB1 - Joypad input during previous frame
FFB2 - Released buttons on this frame
FFB3 - Pressed buttons on this frame
FFB4 - Held buttons on this frame
FFB5 - Low-sensitivity joypad output, controlled by FFB6 and FFB7.
FFB6 - If zero and A or B is held, outputs nothing. Otherwise, considers buttons held for more than half a second being pressed twelve times a second.
Has no influence if FFB7 is zero.
FFB7 - If zero, FFB5 contains newly-pressed buttons only.
=== ROM banking ===
FFB8 - Loaded ROM bank.
FFB9 - Saved ROM bank.
=== VBlank data transfer ===
FFBA - Transfer background to VRAM during VBlank ?
FFBB - Which portion of the screen to transfer ? (0-1-2 = top-middle-bottom)
FFBC-FFBD - Where to copy background to ? (does not account for FFBB offset ; low-endian address)
FFBF-FFC0 - Stack pointer save
FFC1-FFC2 - Where to copy background from ? (used during copy ; low-endian address)
FFBA is copied to FFC1 (LSB of address).
FFC3-FFC4 - Where to copy background to ? (low-endian address)
FFC5 - Number of rows to copy
FFC6 - Number of 16-byte units to copy during VBlank
FFC7-FFC8 - Source
FFC9-FFCA - Destination
FFCB - Number of 8-byte units to copy during VBlank
FFCC-FFCD - Source
FFCE-FFCF - Destination
=== VBlank 2x2 tile block redraw ===
FFD0 - What to redraw (0-1-2 = nothing-column-row)
FFD1-FFD2 - Destination
=== RNG ===
FFD3 - RandomAdd
FFD4 - RandomSub
On each call to the Random function, the value of register rDIV (roughly tracking how many bytes were executed) and the carry are '''added''' to RandomAdd, and '''subtracted''' from RandomSub.
=== VBlank interface ===
FFD5 - Frame counter (decremented each VBlank)
FFD6 - Set to 0 when a VBlank occurs
=== Misc. 2 ===
FFD7 - Tileset type (0-1-2 = indoors-cave-outside)
Nonzero values have the water animation.
Value 2 has the flower animation.
FFF3 - Battle turn (0-1 = player-opponent)
FFF8 - Joypad input
FFF9 - Diable joypad polling
{{Internal Data|game=Pokémon Red and Blue}}

Latest revision as of 04:25, 3 June 2024

Chip tiny.png The following article is a RAM map for Pokémon Red and Blue.

Currently, many more memory addresses can be found in the Pokémon Red disassembly project (WRAM, VRAM, HRAM, SRAM).

Hmmm...
To do:
Add more addresses that are different in the Japanese version.

Saved data (SRAM)

Bank 0

Sprite decompression zone + Hall of Fame

A000 - A187 : Sprite buffer #0
A188 - A30F : Sprite buffer #1
A310 - A497 : Sprite buffer #2
A498 - A597 : Unused ?
A598 - B857 : Hall Of Fame data
B858 - BFFF : Unused ?

Note : this is the reason Missingno corrupts the HoF data : its invalid sprite, when decompressed, overwrites data past the buffers' boundaries... right into HoF data.

Other Pokémon with even larger corruptions reach WRAM - usually leading to crashes.

Bank 1

A000 - A597 : Unused ?
A598 - A5A2 : Player name
A5A3 - AD2B : Main data
AD2C - AF2B : Sprite data
AF2C - B0BF : Party data
B0C0 - B521 : Current box data
B522        : Tileset type
B523        : Main data checksum
B524 - BFFF : Unused ?

Bank 2

Pokémon boxes 1-6

A000 - A461 : Box 1
A462 - A8C3 : Box 2
A8C4 - AD25 : Box 3
AD26 - B187 : Box 4
B188 - B5E9 : Box 5
B5EA - BA4B : Box 6
BA4C        : Global checksum
BA4D - BA52 : Individual checksums
BA53 - BFFF : Unused

Bank 3

Pokémon boxes 7-12

A000 - A461 : Box 7
A462 - A8C3 : Box 8
A8C4 - AD25 : Box 9
AD26 - B187 : Box 10
B188 - B5E9 : Box 11
B5EA - BA4B : Box 12
BA4C        : Global checksum
BA4D - BA52 : Individual checksums
BA53 - BFFF : Unused

Main data (WRAM)

Audio

Addresses C000 to C0F2 are used by the sound engine.

C002 - Bit 7 : 1 if audio is muted. Other bits : if non-zero, pauses music and continues SFX until it ends.
C0DE - Volumes for all music channels (and fade for those who support it)
C0EF - Current sound bank
C0F0 - Saved sound bank

Bytes C0F3 to C0FF are undocumented (if used)

Sprite Data

C100 to C1FF : Data for all sprites on the current map
               Holds info for 16 sprites with $10 bytes each
               Note : player is always sprite 0

Replace x with the sprite ID
    C1x0: picture ID (fixed, loaded at map init)
    C1x1: movement status (0: uninitialized, 1: ready, 2: delayed, 3: moving)
    C1x2: sprite image index (changed on update, $ff if off screen, includes facing direction, progress in walking animation and a sprite-specific offset)
    C1x3: Y screen position delta (-1,0 or 1; added to c1x4 on each walking animation update)
    C1x4: Y screen position (in pixels, always 4 pixels above grid which makes sprites appear to be in the center of a tile)
    C1x5: X screen position delta (-1,0 or 1; added to c1x6 on each walking animation update)
    C1x6: X screen position (in pixels, snaps to grid if not currently walking)
    C1x7: intra-animation-frame counter (counting upwards to 4 until c1x8 is incremented)
    C1x8: animation frame counter (increased every 4 updates, hold four states (totalling to 16 walking frames)
    C1x9: facing direction (0: down, 4: up, 8: left, $c: right)
    C1xA to C1xF are unudocumented (if used)
C200 to C2FF : More data for all sprites on the current map
               Holds info for 16 sprites with $10 bytes each
               Note : player sprite is always sprite 0

    C2x0: walk animation counter (counting from $10 backwards when moving)
    C2x1:
    C2x2: Y displacement (initialized at 8, supposed to keep moving sprites from moving too far, but bugged)
    C2x3: X displacement (initialized at 8, supposed to keep moving sprites from moving too far, but bugged)
    C2x4: Y position (in 2x2 tile grid steps, topmost 2x2 tile has value 4)
    C2x5: X position (in 2x2 tile grid steps, leftmost 2x2 tile has value 4)
    C2x6: movement byte 1 (determines whether a sprite can move, $ff:not moving, $fe:random movements, others unknown)
    C2x7: (?) (set to $80 when in grass, else $0; may be used to draw grass above the sprite)
    C2x8: delay until next movement (counted downwards, status (c1x1) is set to ready if reached 0)
    C2x9 to C2xD are undocumented
    C2xE: sprite image base offset (in video ram, player always has value 1, used to compute c1x2)
    C2xF isn't documented

C300 to C39F : OAM DMA buffer (source for the DMA Transfer)

Tile Data

C3A0 to C507 : Buffer of all tiles onscreen
C508 to C5CF : Copy of previous buffer (used to restore tiles after closing menus)

Menu Data

Coordinates of the position of the cursor for the top menu item (id 0)
CC24 : Y position
CC25 : X position
CC26 - Currently selected menu item (topmost is 0)
CC27 - Tile "hidden" by the menu cursor
CC28 - ID of the last menu item
CC29 - bitmask applied to the key port for the current menu
CC2A - ID of the previously selected menu item
CC2B - Last position of the cursor on the party / Bill's PC screen
CC2C - Last position of the cursor on the item screen
CC2D - Last position of the cursor on the START / battle menu
CC2F - Index (in party) of the Pokémon currently sent out
CC30~CC31 - Pointer to cursor tile in C3A0 buffer
CC36 - ID of the first displayed menu item
CC35 - Item highlighted with Select (01 = first item, 00 = no item, etc.)

CC3A and CC3B are unused

Link Data

CC3C to CC49 hold data used for Cable Club stuff

The meaning of CC47 depends on the context
CC47 - Link timeout counter
CC47 - Is player entering Cable Club ?

Misc.

CC97 to CCA0 : buffer for when swapping party Pokémon

Battle

CCD5 - Number of turns in current battle
CCD6 is undocumented (if used)
CCD7 - Player's Substitute HP
CCD8 - Enemy Substitute HP
CCDB - Move menu type : 0 is regular, 1 is mimic, other are text boxes (learn, PP-refill...)
CCDC - Player-selected move
CCDD - Enemy-selected move
CCE5~CCE7 - Money earned by Pay Day

Safari Zone data :

CCE8 - Opponent escaping factor
CCE9 - Opponent baiting factor
CCED - Is current Pokémon disobedient ?
CCEE - Player move that the enemy disabled
CCEF - Enemy move that the player disabled
CCF6 - Is low-health alarm disabled ?
CD05~CD06 - Amount of damage the enemy accumulated while Biding
CD1A - Player's Pokémon Attack modifier (7 means no modifier)
CD1B - Player's Pokémon Defense modifier
CD1C - Player's Pokémon Speed modifier
CD1D - Player's Pokémon Special modifier
CD1E - Player's Pokémon Accuracy modifier
CD1F - Player's Pokémon Evasion modifier
CD2D - Engaged Trainer class / legendary Pokémon ID
CD2E - Engaged Trainer roster ID / Enemy's Pokémon Attack modifier (7 means no modifier)
CD2F - Enemy's Pokémon Defense modifier
CD30 - Enemy's Pokémon Speed modifier
CD31 - Enemy's Pokémon Special modifier
CD32 - Enemy's Pokémon Accuracy modifier
CD33 - Enemy's Pokémon Evasion modifier

Joypad simulation

CD38 - Index for joypad input simulation. If non-zero, disables collision but does not lock player.

Pokémon Mart

JPN addr. INT addr. Description
CF62 CF7B Total Items
CF63 CF7C Item 1
CF64 CF7D Item 2
CF65 CF7E Item 3
CF66 CF7F Item 4
CF67 CF80 Item 5
CF68 CF81 Item 6
CF69 CF82 Item 7
CF70 CF83 Item 8
CF71 CF84 Item 9
CF72 CF85 Item 10

Name Rater

CF92 - Which Pokémon does Name Rater Change?

Battle

CFD3 - Your Move Effect (e.g. 10h = coins scatter everywhere)
CFD5 - Your Move Type
CCDC - Your Move Used
JPN addr. INT addr. Description
CFB3 CFCC Enemy's Move ID
CFB4 CFCD Enemy's Move Effect
CFB5 CFCE Enemy's Move Power
CFB6 CFCF Enemy's Move Type
CFB7 CFD0 Enemy's Move Accuracy
CFB8 CFD1 Enemy's Move Max PP
CFB9 CFD2 Player's Move ID
CFBA CFD3 Player's Move Effect
CFBB CFD4 Player's Move Power
CFBC CFD5 Player's Move Type
CFBD CFD6 Player's Move Accuracy
CFBE CFD7 Player's Move Max PP
CFBF CFD8 Enemy's Pokémon internal ID
CFC0 CFD9 Player's Pokémon internal ID
CFC1-CFCB CFDA-CFE4 Enemy's Name
CFCC CFE5 Enemy's Pokémon internal ID
CFCD-CFCE CFE6-CFE7 Enemy's HP
CFCF CFE8 Enemy's Level
CFD0 CFE9 Enemy's Status
  • Bit 6 : Paralyzed
  • Bit 5 : Frozen
  • Bit 4 : Burned
  • Bit 3 : Poisoned
  • Bits 0-2 : Sleep counter
CFD1 CFEA Enemy's Type 1
CFD2 CFEB Enemy's Type 2
CFD3 CFEC Enemy's Catch Rate (Unused, only referenced by Transform script, the one actually used is at CFEE (JPN)/D007 (INT))
CFD4 CFED Enemy's Move 1
CFD5 CFEE Enemy's Move 2
CFD6 CFEF Enemy's Move 3
CFD7 CFF0 Enemy's Move 4
CFD8 CFF1 Enemy's Attack and Defense IVs
CFD9 CFF2 Enemy's Speed and Special IVs
CFDA CFF3 Enemy's Level
CFDB-CFDC CFF4-CFF5 Enemy's Max HP
CFDD-CFDE CFF6-CFF7 Enemy's Attack
CFDF-CFE0 CFF8-CFF9 Enemy's Defense
CFE1-CFE2 CFFA-CFFB Enemy's Speed
CFE3-CFE4 CFFC-CFFD Enemy's Special
CFE5 CFFE Enemy's PP (First Slot)
CFE6 CFFF Enemy's PP (Second Slot)
CFE7 D000 Enemy's PP (Third Slot)
CFE8 D001 Enemy's PP (Fourth Slot)
CFE9-CFED D002-D006 Enemy's Base Stats
CFEE D007 Enemy's Catch Rate
CFEF D008 Enemy's Base Experience

Pokémon 1st Slot (In-Battle)

JPN addr. INT addr. Description
CFF0-CFFA D009-D013 Name
CFFB D014 Pokémon Number
CFFC-CFFD D015-D016 Current HP
CFFE D017
CFFF D018 Status
  • Bit 6 : Paralyzed
  • Bit 5 : Frozen
  • Bit 4 : Burned
  • Bit 3 : Poisoned
  • Bits 0-2 : Sleep counter
D000 D019 Type 1
D001 D01A Type 2
D002 D01B
D003 D01C Move #1 (First Slot)
D004 D01D Move #2 (Second Slot)
D005 D01E Move #3 (Third Slot)
D006 D01F Move #4 (Fourth Slot)
D007 D020 Attack and Defense DVs
D008 D021 Speed and Special DVs
D009 D022

Level

D00A-D00B D023-D024 Max HP
D00C-D00D D025-D026 Attack
D00E-D00F D027-D028 Defense
D010-D011 D029-D02A Speed
D012-D013 D02B-D02C Special
D014 D02D PP (First Slot)
D015 D02E PP (Second Slot)
D016 D02F PP (Third Slot)
D017 D030 PP (Fourth Slot)
D057 - Type of battle
D05A - Battle Type (Normal battle, Safari Zone, Old Man battle...)
D05C - Is Gym Leader battle music playing?
D05D - 
D05E - Critical Hit / OHKO Flag
       01 - Critical Hit!
       02 - One-hit KO!
D05F - Hooked Pokémon Flag
D062-D064 - Battle Status (Player)
          D062:
            bit 0 - Bide
            bit 1 - Thrash / petal dance
            bit 2 - Attacking multiple times (e.g. double kick)
            bit 3 - Flinch
            bit 4 - Charging up for attack
            bit 5 - Using multi-turn move (e.g. wrap)
            bit 6 - Invulnerable to normal attack (using fly/dig)
            bit 7 - Confusion
          D063:
            bit 0 - X Accuracy effect
            bit 1 - protected by "mist"
            bit 2 - focus energy effect
            bit 4 - has a substitute
            bit 5 - need to recharge
            bit 6 - rage
            bit 7 - leech seeded
          D064:
            bit 0 - toxic
            bit 1 - light screen
            bit 2 - reflect
            bit 3 - tranformed
D065 - Stat to double (CPU)
D066 - Stat to halve (CPU)
D067-D069 - Battle Status (CPU) - Includes the "Transformed" status in D069 which makes the game regard the opponent as a Ditto.
D06A - Multi-Hit Move counter (Player)
D06B - Confusion counter (Player)
D06C - Toxic counter (Player)
D06D-D06E - Disable counter (Player)
D06F - Multi-Hit Move counter (CPU)
D070 - Confusion counter (CPU)
D071 - Toxic counter (CPU)
D072 - Disable counter (CPU)
D0D8 - Amount of damage attack is about to do. Max possible damage may appear one frame before actual damage.

Game Corner

D13D - 1st Game Corner Prize
D13E - 2nd Game Corner Prize
D13F - 3rd Game Corner Prize

Link Battle PRNG

D148-D150 - 9 Pseudo-Random Numbers used during Link Battles. Once a batch is used up, it generates a new batch with n × 5 + 1.

Player

D158-D162 - Your Name
D163 - # Pokémon In Party
D164 - Pokémon 1
D165 - Pokémon 2
D166 - Pokémon 3
D167 - Pokémon 4
D168 - Pokémon 5
D169 - Pokémon 6
D16A - End of list

Pokémon 1

D16B - Pokémon (Again)
D16C-D16D - Current HP
D16E - 'Level' (not the actual level, see the notes article)
D16F - Status (Poisoned, Paralyzed, etc.)
D170 - Type 1
D171 - Type 2
D172 - Catch rate/Held item (When traded to Generation II)
D173 - Move 1
D174 - Move 2
D175 - Move 3
D176 - Move 4
D177-D178 - Trainer ID
D179-D17B - Experience
D17C-D17D - HP EV
D17E-D17F - Attack EV
D180-D181 - Defense EV
D182-D183 - Speed EV
D184-D185 - Special EV
D186 - Attack/Defense IV
D187 - Speed/Special IV
D188 - PP Move 1
D189 - PP Move 2
D18A - PP Move 3
D18B - PP Move 4
D18C - Level (actual level)
D18D-D18E - Max HP
D18F-D190 - Attack
D191-D192 - Defense
D193-D194 - Speed
D195-D196 - Special

Pokémon 2

D197 - Pokémon
D198-D199 - Current HP
D19A - 'Level' (not the actual level, see the notes article)
D19B - Status
D19C - Type 1
D19D - Type 2
D19E - Catch rate/Held item (When traded to Generation II)
D19F - Move 1
D1A0 - Move 2
D1A1 - Move 3
D1A2 - Move 4
D1A3-D1A4 - Trainer ID
D1A5-D1A7 - Experience 
D1A8-D1A9 - HP EV
D1AA-D1AB - Attack EV
D1AC-D1AD - Defense EV
D1AE-D1AF - Speed EV
D1B0-D1B1 - Special EV
D1B2 - Attack/Defense IV
D1B3 - Speed/Special IV
D1B4 - PP Move 1
D1B5 - PP Move 2
D1B6 - PP Move 3
D1B7 - PP Move 4
D1B8 - Level (actual)
D1B9-D1BA - Max HP
D1BB-D1BC - Attack
D1BD-D1BE - Defense
D1BF-D1C0 - Speed
D1C1-D1C2 - Special

Pokémon 3

D1C3 - Pokémon
D1C4-D1C5 - Current HP
D1C6 - 'Level' (not the actual level, see the notes article)
D1C7 - Status
D1C8 - Type 1
D1C9 - Type 2
D1CA - Catch rate/Held item (When traded to Generation II)
D1CB - Move 1
D1CC - Move 2
D1CD - Move 3
D1CE - Move 4
D1CF-D1D0 - Trainer ID
D1D1-D1D3 - Experience
D1D4-D1D5 - HP EV
D1D6-D1D7 - Attack EV
D1D8-D1D9 - Defense EV
D1DA-D1DB - Speed EV
D1DC-D1DD - Special EV
D1DE - Attack/Defense IV
D1DF - Speed/Special IV
D1E0 - PP Move 1
D1E1 - PP Move 2
D1E2 - PP Move 3
D1E3 - PP Move 4
D1E4 - Level
D1E5-D1E6 - Max HP
D1E7-D1E8 - Attack
D1E9-D1EA - Defense
D1EB-D1EC - Speed
D1ED-D1EE - Special

Pokémon 4

D1EF - Pokémon
D1F0-D1F1 - Current HP
D1F2 - 'Level' (not the actual level, see the notes article)
D1F3 - Status
D1F4 - Type 1
D1F5 - Type 2
D1F6 - Catch rate/Held item (When traded to Generation II)
D1F7 - Move 1
D1F8 - Move 2
D1F9 - Move 3
D1FA - Move 4
D1FB-D1FC - Trainer ID
D1FD-D1FF - Experience 
D200-D201 - HP EV
D202-D203 - Attack EV
D204-D205 - Defense EV
D206-D207 - Speed EV
D208-D209 - Special EV
D20A - Attack/Defense IV
D20B - Speed/Special IV
D20C - PP Move 1
D20D - PP Move 2
D20E - PP Move 3
D20F - PP Move 4
D210 - Level
D211-D212 - Max HP
D213-D214 - Attack
D215-D216 - Defense
D217-D218 - Speed
D219-D21A - Special

Pokémon 5

D21B - Pokémon
D21C-D21D - Current HP
D21E - 'Level' (not the actual level, see the notes article)
D21F - Status
D220 - Type 1
D221 - Type 2
D222 - Catch rate/Held item (When traded to Generation II)
D223 - Move 1
D224 - Move 2
D225 - Move 3
D226 - Move 4
D227-D228 - Trainer ID
D229-D22B - Experience 
D22C-D22D - HP EV
D22E-D22F - Attack EV
D230-D231 - Defense EV
D232-D233 - Speed EV
D234-D235 - Special EV
D236 - Attack/Defense IV
D237 - Speed/Special IV
D238 - PP Move 1
D239 - PP Move 2
D23A - PP Move 3
D23B - PP Move 4
D23C - Level
D23D-D23E - Max HP
D23F-D240 - Attack
D241-D242 - Defense
D243-D244 - Speed
D245-D246 - Special

Pokémon 6

D247 - Pokémon
D248-D249 - Current HP
D24A - 'Level' (not the actual level, see the notes article)
D24B - Status
D24C - Type 1
D24D - Type 2
D24E - Catch rate/Held item (When traded to Generation II)
D24F - Move 1
D250 - Move 2
D251 - Move 3
D252 - Move 4
D253-D254 - Trainer ID
D255-D257 - Experience 
D258-D259 - HP EV
D25A-D25B - Attack EV
D25C-D25D - Defense EV
D25E-D25F - Speed EV
D260-D261 - Special EV
D262 - Attack/Defense IV
D263 - Speed/Special IV
D264 - PP Move 1
D265 - PP Move 2
D266 - PP Move 3
D267 - PP Move 4
D268 - Level
D269-D26A - Max HP
D26B-D26C - Attack
D26D-D26E - Defense
D26F-D270 - Speed
D271-D272 - Special

Trainer Name

D273-D27D - Trainer name for 1st
D27E-D288 - Trainer name for 2nd
D289-D293 - Trainer name for 3rd
D294-D29E - Trainer name for 4th
D29F-D2A9 - Trainer name for 5th
D2AA-D2B4 - Trainer name for 6th

Nickname

D2B5-D2BF - Nickname for 1st
D2C0-D2CA - Nickname for 2nd
D2CB-D2D5 - Nickname for 3rd
D2D6-D2E0 - Nickname for 4th
D2E1-D2EB - Nickname for 5th
D2EC-D2F6 - Nickname for 6th

Pokedex

JPN addr. INT addr. Description
D27B D2F7 Own 1-8
D27C D2F8 Own 9-16
D27D D2F9 Own 17-24
D27E D2FA Own 25-32
D27F D2FB Own 33-40
D280 D2FC Own 41-48
D281 D2FD Own 49-56
D282 D2FE Own 57-64
D283 D2FF Own 65-72
D284 D300 Own 73-80
D285 D301 Own 81-88
D286 D302 Own 89-96
D287 D303 Own 97-104
D288 D304 Own 105-112
D289 D305 Own 113-120
D28A D306 Own 121-128
D28B D307 Own 129-136
D28C D308 Own 137-144
D28D D309 Own 145-152
D28E D30A Seen 1-8
D28F D30B Seen 9-16
D290 D30C Seen 17-24
D291 D30D Seen 25-32
D292 D30E Seen 33-40
D293 D30F Seen 41-48
D294 D310 Seen 49-56
D295 D311 Seen 57-64
D296 D312 Seen 65-72
D297 D313 Seen 73-80
D298 D314 Seen 81-88
D299 D315 Seen 89-96
D29A D316 Seen 97-104
D29B D317 Seen 105-112
D29C D318 Seen 113-120
D29D D319 Seen 121-128
D29E D31A Seen 129-136
D29F D31B Seen 137-144
D2A0 D31C Seen 145-152

Items

D31D - Total Items
D31E - Item 1
D31F - Item 1 Quantity
D320 - Item 2
D321 - Item 2 Quantity
D322 - Item 3
D323 - Item 3 Quantity
D324 - Item 4
D325 - Item 4 Quantity
D326 - Item 5
D327 - Item 5 Quantity
D328 - Item 6
D329 - Item 6 Quantity
D32A - Item 7
D32B - Item 7 Quantity
D32C - Item 8
D32D - Item 8 Quantity
D32E - Item 9
D32F - Item 9 Quantity
D330 - Item 10
D331 - Item 10 Quantity
D332 - Item 11
D333 - Item 11 Quantity
D334 - Item 12
D335 - Item 12 Quantity
D336 - Item 13
D337 - Item 13 Quantity
D338 - Item 14
D339 - Item 14 Quantity
D33A - Item 15
D33B - Item 15 Quantity
D33C - Item 16
D33D - Item 16 Quantity
D33E - Item 17
D33F - Item 17 Quantity
D340 - Item 18
D341 - Item 18 Quantity
D342 - Item 19
D343 - Item 19 Quantity
D344 - Item 20
D345 - Item 20 Quantity
D346 - Item End of List

Money

D347 - Money Byte 1
D348 - Money Byte 2
D349 - Money Byte 3

Rival

D34A-D351 - Rival's Name

Miscellaneous

D355 - Options

Bit 7 = Battle Animation (1 = Off, 0 = On)
Bit 6 = Battle Style (1 = Set, 0 = Shift)
Bit 5-4 = probably unused
Low Nybble = Text Speed (0x0 = fastest, 0xF = slowest)
Fast = 1
Medium = 3
Slow = 5

D356 = Badges (Binary Switches)

D358 = If bit0 = 0, delay is limited to 1 frame between each letter. If bit1 = 0, no delay during text printing. Overrides previous setting.

D359 = Player ID [1] (Multiple of 256) D35A = Player ID [2] (...+1-255)

D35B = Audio track (See Audio section) D35C = Audio bank (See Audio section)

D35D = Controls the map's palette. Usually 0, but is set to 6 when Flash is required.

D35E = Current Map Number

D35F-D360 = Event Displacement (view Notes, for more info)
D361 - 1 byte integer = Current Player Y-Position
D362 - 1 byte integer = Current Player X-Position
D363 = Current Player Y-Position (Current Block)
D364 = Current Player X-Position (Current Block)

D365 = Last map location for walking through certain exits (e.g. Safari Zone gate)

Audio

C022 = Audio track channel 1

C023 = Audio track channel 2

C024 = Audio track channel 3

C025 = Audio track channel 4

C0E8, C0E9 = Music tempo (lower values in C0E9 may = faster except for particularly low values)

C0EA, C0EB = Sound effects tempo

C0EC, C0ED = Sound effects header pointer

C0EE = New sound ID

C0EF = Audio bank

C0F0 = Audio bank

D35B = Audio track in current map

D35C = Audio bank in current map

Bank 02
B3 = Validate
B4 = Bump
B5 = Exit of a house
B6 = Save Game
B8 = Pokéflute
B9 = Ding Dong
BA = PalletTown
BD = Pokecenter
C0 = Gym
C3 = Viridian City, Pewter City, Saffron City
C7 = Cerulean City, Fuchsia City
CA = Celadon City
CD = Cinnabar City
D0 = Vermilion City
D4 = Lavender Town
D8 = SS Anne
DB = Meet Oak
DE = Meet Blue
E1 = Follow me
E5 = Safari Zone / Evolution
E8 = Pokémon Healding
EB = Road 1, 2
EF = Road 24, 25
F3 = Road 3, 4, 5, 6, 7, 8, 9, 10, 16, 17, 18, 19, 20, 21, 22
F7 = Road 11, 12, 13, 14, 15
FB = Indigo Plateau
Bank 08
EA = Gym Leader Battle
ED = Trainer Battle
F0 = Wild Battle
F3 = Final Battle
F6 = Defeated Trainer
F9 = Defeated Wild Pokemon
FC = Defeated Champion / Gym
Bank 1F
C3 = Title Screen
C7 = Credits
CA = Hall of fame
CD = Oak's Lab
D0 = Jigglypuff Song
D2 = Bike Riding
D6 = Surfing
D9 = Came Corner
DC = Intro Game
DF = Power Plant, Unknown Dungeon, Rocket HQ
E3 = Viridian Forest, Seafoam Islands
E7 = Mt. Moon, Rock Tunnel, Victory Road
EB = Cinnabar City Mansion
EF = Pokemon Tower
F2 = Silph Co.
F5 = Eye contact Evil Trainer
F8 = Eye contact Female Trainer
FB = Eye contact Male Trainer
FF = Stop Sound

Map Header

D367 - 1 byte integer = Map's Tileset, 1 byte
D368 - 1 byte integer = Map's Height (Blocks)
D369 - 1 byte integer = Map's Width (Blocks)
D36A-D36B = Map's Data
D36C-D36D = Map's Text Pointer Table (For Each NPC) Location
D36E-D36F = Map's Level-Script Pointer
D370 = Map's Connection Byte
D371-D37B = Map's 1st Connection Data
D37C-D386 = Map's 2nd Connection Data
D387-D391 = Map's 3rd Connection Data
D392-D39C = Map's 4th Connection Data

Tileset Header

D52B = Tileset Bank
D52C-D52D = Pointer to Blocks
D52E-D52F = Pointer to GFX
D530-D531 = Pointer to Collision Data
D532-D534 = "Talking-Over" Tiles
D535 = Grass Tile

Tile graphics

Tiles are 8x8 pixels, stored in 16 bytes, with each byte representing 4 pixels.

For size comparison, the player is 16x16 pixels, therefore, 4 tiles.

"Active" tiles are stored sequentially in RAM, starting at address 0x8000. From address 0x8000 to 0x9000 there are 256 tiles which make up the player in all orientations, and some commonly used stuff. The real map tiles are from 0x9000 to 0x9600.

8000 - 16 byte tile graphic struct = tile 0 (often the top left player tile)
8010 - 16 byte tile graphic struct = tile 1 (often the top right player tile)
8020 - 16 byte tile graphic struct = tile 2 (often the bottom left player tile)

...

9000 - 16 byte tile graphic struct = map tile 0 (often blank)
9010 - 16 byte tile graphic struct = map tile 1
9020 - 16 byte tile graphic struct = map tile 2

...

Stored Items

JPN addr. INT addr. Description
D4B9 D53A Total items in storage
D4BA D53B Stored Item 1
D4BB D53C Stored Item 1 Quantity
D4BC D53D Stored Item 2
D4BD D53E Stored Item 2 Quantity
D4BE D53F Stored Item 3
D4BF D540 Stored Item 3 Quantity
D4C0 D541 Stored Item 4
D4C1 D542 Stored Item 4 Quantity
D4C2 D543 Stored Item 5
D4C3 D544 Stored Item 5 Quantity
D4C4 D545 Stored Item 6
D4C5 D546 Stored Item 6 Quantity
D4C6 D547 Stored Item 7
D4C7 D548 Stored Item 7 Quantity
D4C8 D549 Stored Item 8
D4C9 D54A Stored Item 8 Quantity
D4CA D54B Stored Item 9
D4CB D54C Stored Item 9 Quantity
D4CC D54D Stored Item 10
D4CD D54E Stored Item 10 Quantity
D4CE D54F Stored Item 11
D4CF D550 Stored Item 11 Quantity
D4D0 D551 Stored Item 12
D4D1 D552 Stored Item 12 Quantity
D4D2 D553 Stored Item 13
D4D3 D554 Stored Item 13 Quantity
D4D4 D555 Stored Item 14
D4D5 D556 Stored Item 14 Quantity
D4D6 D557 Stored Item 15
D4D7 D558 Stored Item 15 Quantity
D4D8 D559 Stored Item 16
D4D9 D55A Stored Item 16 Quantity
D4DA D55B Stored Item 17
D4DB D55C Stored Item 17 Quantity
D4DC D55D Stored Item 18
D4DD D55E Stored Item 18 Quantity
D4DE D55F Stored Item 19
D4DF D560 Stored Item 19 Quantity
D4E0 D561 Stored Item 20
D4E1 D562 Stored Item 20 Quantity
D4E2 D563 Stored Item 21
D4E3 D564 Stored Item 21 Quantity
D4E4 D565 Stored Item 22
D4E5 D566 Stored Item 22 Quantity
D4E6 D567 Stored Item 23
D4E7 D568 Stored Item 23 Quantity
D4E8 D569 Stored Item 24
D4E9 D56A Stored Item 24 Quantity
D4EA D56B Stored Item 25
D4EB D56C Stored Item 25 Quantity
D4EC D56D Stored Item 26
D4ED D56E Stored Item 26 Quantity
D4EE D56F Stored Item 27
D4EF D570 Stored Item 27 Quantity
D4F0 D571 Stored Item 28
D4F1 D572 Stored Item 28 Quantity
D4F2 D573 Stored Item 29
D4F3 D574 Stored Item 29 Quantity
D4F4 D575 Stored Item 30
D4F5 D576 Stored Item 30 Quantity
D4F6 D577 Stored Item 31
D4F7 D578 Stored Item 31 Quantity
D4F8 D579 Stored Item 32
D4F9 D57A Stored Item 32 Quantity
D4FA D57B Stored Item 33
D4FB D57C Stored Item 33 Quantity
D4FC D57D Stored Item 34
D4FD D57E Stored Item 34 Quantity
D4FE D57F Stored Item 35
D4FF D580 Stored Item 35 Quantity
D500 D581 Stored Item 36
D501 D582 Stored Item 36 Quantity
D502 D583 Stored Item 37
D503 D584 Stored Item 37 Quantity
D504 D585 Stored Item 38
D505 D586 Stored Item 38 Quantity
D506 D587 Stored Item 39
D507 D588 Stored Item 39 Quantity
D508 D589 Stored Item 40
D509 D58A Stored Item 40 Quantity
D50A D58B Stored Item 41
D50B D58C Stored Item 41 Quantity
D50C D58D Stored Item 42
D50D D58E Stored Item 42 Quantity
D50E D58F Stored Item 43
D50F D590 Stored Item 43 Quantity
D510 D591 Stored Item 44
D511 D592 Stored Item 44 Quantity
D512 D593 Stored Item 45
D513 D594 Stored Item 45 Quantity
D514 D595 Stored Item 46
D515 D596 Stored Item 46 Quantity
D516 D597 Stored Item 47
D517 D598 Stored Item 47 Quantity
D518 D599 Stored Item 48
D519 D59A Stored Item 48 Quantity
D51A D59B Stored Item 49
D51B D59C Stored Item 49 Quantity
D51C D59D Stored Item 50
D51D D59E Stored Item 50 Quantity
D51E D59F Stored Items End of List

Game Coins

D5A4 - Casino Chips Byte 1
D5A5 - Casino Chips Byte 2

Event Flags

D5A6 to D5C5 : Missable Objects Flags (flags for every (dis)appearing sprites, like the guard in Cerulean City or the Pokéballs in Oak's Lab)

D5AB - Starters Back?

D5C0(bit 1) - 0=Mewtwo appears, 1=Doesn't (See D85F)

D5F3 - Have Town map?

D60D - Have Oak's Parcel?

D700 - Bike Speed

D70B - Fly Anywhere Byte 1
D70C - Fly Anywhere Byte 2
D70D - Safari Zone Time Byte 1
D70E - Safari Zone Time Byte 2

D710 - Fossilized Pokémon?

D714 - Position in Air

D72E - Did you get Lapras Yet?

D732 - Debug New Game

D751 - Fought Giovanni Yet?

D755 - Fought Brock Yet?

D75E - Fought Misty Yet?

D773 - Fought Lt. Surge Yet?

D77C - Fought Erika Yet?

D782 - Fought Articuno Yet?

D790 - If bit 7 is set, Safari Game over

D792 - Fought Koga Yet?

D79A - Fought Blaine Yet?

D7B3 - Fought Sabrina Yet?

D7D4 - Fought Zapdos Yet?

D7D8 - Fought Snorlax Yet (Vermilion)

D7E0 - Fought Snorlax Yet? (Celadon)

D7EE - Fought Moltres Yet?

D803 - Is SS Anne here?

D85F - Mewtwo can be caught if bit 2 clear - Needs D5C0 bit 1 clear, too

Wild Pokémon

D887 - Wild Pokémon encounter rates

Common Battles:

D888 - Level of Encounter 1
D889 - Pokémon Data Value 1
D88A - Level of Encounter 2
D88B - Pokémon Data Value 2
D88C - Level of Encounter 3
D88D - Pokémon Data Value 3
D88E - Level of Encounter 4
D88F - Pokémon Data Value 4

Uncommon Battles:

D890 - Level of Encounter 1
D891 - Pokémon Data Value 1
D892 - Level of Encounter 2
D893 - Pokémon Data Value 2
D894 - Level of Encounter 3
D895 - Pokémon Data Value 3
D896 - Level of Encounter 4
D897 - Pokémon Data Value 4

Rare Battles:

D898 - Level of Encounter 1
D899 - Pokémon Data Value 1
D89A - Level of Encounter 2
D89B - Pokémon Data Value 2

Opponent Trainer’s Pokémon

D89C - Total enemy Pokémon
D89D - Pokémon 1
D89E - Pokémon 2
D89F - Pokémon 3
D8A0 - Pokémon 4
D8A1 - Pokémon 5
D8A2 - Pokémon 6
D8A3 - End of list

Pokémon 1

D8A4 - Pokémon
D8A5-D8A6 - Current HP
D8A7 -
D8A8 - Status
D8A9 - Type 1
D8AA - Type 2
D8AB -
D8AC - Move 1
D8AD - Move 2
D8AE - Move 3
D8AF - Move 4
D8B0-D8B1 - Trainer ID
D8B2-D8B4 - Experience
D8B5-D8B6 - HP EV
D8B7-D8B8 - Attack EV
D8B9-D8BA - Defense EV
D8BB-D8BC - Speed EV
D8BD-D8BE - Special EV
D8BF - Attack/Defense IV
D8C0 - Speed/Special IV
D8C1 - PP Move 1
D8C2 - PP Move 2
D8C3 - PP Move 3
D8C4 - PP Move 4
D8C5 - Level
D8C6-D8C7 - Max HP
D8C8-D8C9 - Attack
D8CA-D8CB - Defense
D8CC-D8CD - Speed
D8CE-D8CF - Special

Pokémon 2

D8D0 - Pokémon
D8D1-D8D2 - Current HP
D8D3 -
D8D4 - Status
D8D5 - Type 1
D8D6 - Type 2
D8D7 -
D8D8 - Move 1
D8D9 - Move 2
D8DA - Move 3
D8DB - Move 4
D8DC-D8DD - Trainer ID
D8DE-D8E0 - Experience
D8E1-D8E2 - HP EV
D8E3-D8E4 - Attack EV
D8E5-D8E6 - Defense EV
D8E7-D8E8 - Speed EV
D8E9-D8EA - Special EV
D8EB - Attack/Defense IV
D8EC - Speed/Special IV
D8ED - PP Move 1
D8EE - PP Move 2
D8EF - PP Move 3
D8F0 - PP Move 4
D8F1 - Level
D8F2-D8F3 - Max HP
D8F4-D8F5 - Attack
D8F6-D8F7 - Defense
D8F8-D8F9 - Speed
D8FA-D8FB - Special

Pokémon 3

D8FC - Pokémon
D8FD-D8FE - Current HP
D8FF -
D900 - Status
D901 - Type 1
D902 - Type 2
D903 -
D904 - Move 1
D905 - Move 2
D906 - Move 3
D907 - Move 4
D908-D909 - Trainer ID
D90A-D90C - Experience
D90D-D90E - HP EV
D90F-D910 - Attack EV
D911-D912 - Defense EV
D913-D914 - Speed EV
D915-D916 - Special EV
D917 - Attack/Defense IV
D918 - Speed/Special IV
D919 - PP Move 1
D91A - PP Move 2
D91B - PP Move 3
D91C - PP Move 4
D91D - Level
D91E-D91F - Max HP
D920-D921 - Attack
D922-D923 - Defense
D924-D925 - Speed
D926-D927 - Special

Pokémon 4

D928 - Pokémon
D929-D92A - Current HP
D92B -
D92C - Status
D92D - Type 1
D92E - Type 2
D92F -
D930 - Move 1
D931 - Move 2
D932 - Move 3
D933 - Move 4
D934-D935 - Trainer ID
D936-D938 - Experience
D939-D93A - HP EV
D93B-D93C - Attack EV
D93D-D93E - Defense EV
D93F-D940 - Speed EV
D941-D942 - Special EV
D943 - Attack/Defense IV
D944 - Speed/Special IV
D945 - PP Move 1
D946 - PP Move 2
D947 - PP Move 3
D948 - PP Move 4
D949 - Level
D94A-D94B - Max HP
D94C-D94D - Attack
D94E-D94F - Defense
D950-D951 - Speed
D952-D953 - Special

Pokémon 5

D954 - Pokémon
D955-D956 - Current HP
D957 -
D958 - Status
D959 - Type 1
D95A - Type 2
D95B -
D95C - Move 1
D95D - Move 2
D95E - Move 3
D95F - Move 4
D960-D961 - Trainer ID
D962-D964 - Experience
D965-D966 - HP EV
D967-D968 - Attack EV
D969-D96A - Defense EV
D96B-D96C - Speed EV
D96D-D96E - Special EV
D96F - Attack/Defense IV
D970 - Speed/Special IV
D971 - PP Move 1
D972 - PP Move 2
D973 - PP Move 3
D974 - PP Move 4
D975 - Level
D976-D977 - Max HP
D978-D979 - Attack
D97A-D97B - Defense
D97C-D97D - Speed
D97E-D97F - Special

Pokémon 6

D980 - Pokémon
D981-D982 - Current HP
D983 -
D984 - Status
D985 - Type 1
D986 - Type 2
D987 -
D988 - Move 1
D989 - Move 2
D98A - Move 3
D98B - Move 4
D98C-D98D - Trainer ID
D98E-D990 - Experience
D991-D992 - HP EV
D993-D994 - Attack EV
D995-D996 - Defense EV
D997-D998 - Speed EV
D999-D99A - Special EV
D99B - Attack/Defense IV
D99C - Speed/Special IV
D99D - PP Move 1
D99E - PP Move 2
D99F - PP Move 3
D9A0 - PP Move 4
D9A1 - Level
D9A2-D9A3 - Max HP
D9A4-D9A5 - Attack
D9A6-D9A7 - Defense
D9A8-D9A9 - Speed
D9AA-D9AB - Special

Trainer Name

D9AC-D9B6 - Trainer name for 1st
D9B7-D9C1 - Trainer name for 2nd
D9C2-D9CC - Trainer name for 3rd
D9CD-D9D7 - Trainer name for 4th
D9D8-D9E2 - Trainer name for 5th
D9E3-D9ED - Trainer name for 6th

Nickname

D9EE-D9F8 - Nickname for 1st
D9F9-DA03 - Nickname for 2nd
DA04-DA0E - Nickname for 3rd
DA0F-DA19 - Nickname for 4th
DA1A-DA24 - Nickname for 5th
DA25-DA2F - Nickname for 6th

Etc.

Game Time

DA40 - Hours, two bytes
DA42 - Minutes, two bytes
DA44 - Seconds, one byte
DA45 - Frames, one byte

DA47 - Safari Balls

Stored Pokémon

This is for the current box that's in use.

DA80 - Number of Pokémon in current box
DA81-CA94 - Pokémon 1-20
DA95 - End of list

Pokémon 1

DA96 - Pokémon
DA97-DA98 - HP
DA99 - Level
DA9A - Status
DA9B-DA9C - Types
DA9D - Held Item (When traded to Generation II)
DA9E-DAA1 - Moves
DAA2-DAA3 - Trainer ID
DAA4-DAA6 - Experience
DAA7-DAA8 - HP EV
DAA9-DAAA - Attack EV
DAAB-DAAC - Defense EV
DAAD-DAAE - Speed EV
DAAF-DAB0 - Special EV
DAB1 - Attack/Defense IV
DAB2 - Speed/Special IV
DAB3-DAB6 - PP Moves

Pokémon 2

DAB7 - Pokémon
DAB8-DAB9 - HP
DABA - Level
DABB - Status
DABC-DABD - Types
DABE - Held Item (When traded to Generation II)
DABF-DAC2 - Moves
DAC2-DAC4 - Trainer ID
DAC4-DAC7 - Experience
DAC8-DAC9 - HP EV
DACA-DACB - Attack EV
DACC-DACD - Defense EV
DACE-DACF - Speed EV
DAD0-DAD1 - Special EV
DAD2 - Attack/Defense IV
DAD3 - Speed/Special IV
DAD4-DAD7 - PP Moves

Pokémon 3

DAD8 - Pokémon
DAD9-DADA - HP
DADB - Level
DADC - Status
DADD-DADE - Types
DADF - Held Item (When traded to Generation II)
DAE0-DAE3 - Moves
DAE4-DAE5 - Trainer ID
DAE6-DAE8 - Experience
DAE9-DAEA - HP EV
DAEB-DAEC - Attack EV
DAED-DAEE - Defense EV
DAEF-DAF0 - Speed EV
DAF1-DAF2 - Special EV
DAF3 - Attack/Defense IV
DAF4 - Speed/Special IV
DAF5-DAF8 - PP Moves

Pokémon 4

DAF9 - Pokémon
DAFA-DAFB - HP
DAFC - Level
DAFD - Status
DAFE-DAFF - Types
DB00 - Held Item (When traded to Generation II)
DB01-DB04 - Moves
DB05-DB06 - Trainer ID
DB07-DB09 - Experience
DB0A-DB0B - HP EV
DB0C-DB0D - Attack EV
DB0E-DB0F - Defense EV
DB10-DB11 - Speed EV
DB12-DB13 - Special EV
DB14 - Attack/Defense IV
DB15 - Speed/Special IV
DB16-DB19 - PP Moves

Pokémon 5

DB1A - Pokémon
DB1B-DB1C - HP
DB1D - Level
DB1E - Status
DB1F-DB20 - Types
DB21 - Held Item (When traded to Generation II)
DB22-DB25 - Moves
DB26-DB27 - Trainer ID
DB28-DB2A - Experience
DB2B-DB2C - HP EV
DB2D-DB2E - Attack EV
DB2F-DB30 - Defense EV
DB31-DB32 - Speed EV
DB33-DB34 - Special EV
DB35 - Attack/Defense IV
DB36 - Speed/Special IV
DB37-DB3A - PP Moves

Pokémon 6

DB3B - Pokémon
DB3C-DB3D - HP
DB3E - Level
DB3F - Status
DB40-DB41 - Types
DB42 - Held Item (When traded to Generation II)
DB43-DB46 - Moves
DB47-DB48 - Trainer ID
DB4A-DB4B - Experience
DB4C-DB4D - HP EV
DB4E-DB4F - Attack EV
DB50-DB51 - Defense EV
DB52-DB53 - Speed EV
DB54-DB55 - Special EV
DB56 - Attack/Defense IV
DB57 - Speed/Special IV
DB58-DB5B - PP Moves

Pokémon 7

DB5C - Pokémon
DB5D-DB5E - HP
DB5F - Level
DB60 - Status
DB61-DB62 - Types
DB63 - Held Item (When traded to Generation II)
DB64-DB67 - Moves
DB68-DB69 - Trainer ID
DB6A-DB6C - Experience
DB6D-DB6E - HP EV
DB6F-DB70 - Attack EV
DB71-DB72 - Defense EV
DB73-DB74 - Speed EV
DB75-DB76 - Special EV
DB77 - Attack/Defense IV
DB78 - Speed/Special IV
DB79-DB7C - PP Moves

Pokémon 8

DB7D - Pokémon
DB7E-DB7F - HP
DB80 - Level
DB81 - Status
DB82-DB83 - Types
DB84 - Held Item (When traded to Generation II)
DB85-DB88 - Moves
DB89-DB8A - Trainer ID
DB8B-DB8D - Experience
DB8E-DB8F - HP EV
DB90-DB91 - Attack EV
DB92-DB93 - Defense EV
DB94-DB95 - Speed EV
DB96-DB97 - Special EV
DB98 - Attack/Defense IV
DB99 - Speed/Special IV
DB9A-DB9D - PP Moves

Pokémon 9

DB9E - Pokémon
DB9F-DBA0 - HP
DBA1 - Level
DBA2 - Status
DBA3-DBA4 - Types
DBA5 - Held Item (When traded to Generation II)
DBA6-DBA9 - Moves
DBAA-DBAB - Trainer ID
DBAC-DBAE - Experience
DBAF-DBB0 - HP EV
DBB1-DBB2 - Attack EV
DBB3-DBB4 - Defense EV
DBB5-DBB6 - Speed EV
DBB7-DBB8 - Special EV
DBB9 - Attack/Defense IV
DBBA - Speed/Special IV
DBBB-DBBE - PP Moves

Pokémon 10

DBBF - Pokémon
DBC0-DBC1 - HP
DBC2 - Level
DBC3 - Status
DBC4-DBC5 - Types
DBC6 - Held Item (When traded to Generation II)
DBC7-DBCA - Moves
DBCB-DBCC - Trainer ID
DBCD-DBCF - Experience
DBD0-DBD1 - HP EV
DBD2-DBD3 - Attack EV
DBD4-DBD5 - Defense EV
DBD6-DBD7 - Speed EV
DBD8-DBD9 - Special EV
DBDA - Attack/Defense IV
DBDB - Speed/Special IV
DBDC-DBDF - PP Moves

Pokémon 11

DBE0 - Pokémon
DBE1-DBE2 - HP
DBE3 - Level
DBE4 - Status
DBE5-DBE6 - Types
DBE7 - Held Item (When traded to Generation II)
DBE8-DBEB - Moves
DBEC-DBED - Trainer ID
DBEE-DBF0 - Experience
DBF1-DBF2 - HP EV
DBF3-DBF4 - Attack EV
DBF5-DBF6 - Defense EV
DBF7-DBF8 - Speed EV
DBF9-DBFA - Special EV
DBFB - Attack/Defense IV
DBFC - Speed/Special IV
DBFD-DC00 - PP Moves

Pokémon 12

DC01 - Pokémon
DC02-DC03 - HP
DC04 - Level
DC05 - Status
DC06-DC07 - Types
DC08 - Held Item (When traded to Generation II)
DC09-DC0C - Moves
DC0D-DC0E - Trainer ID
DC0F-DC11 - Experience
DC12-DC13 - HP EV
DC14-DC15 - Attack EV
DC16-DC17 - Defense EV
DC18-DC19 - Speed EV
DC1A-DC1B - Special EV
DC1C - Attack/Defense IV
DC1D - Speed/Special IV
DC1E-DC21 - PP Moves

Pokémon 13

DC22 - Pokémon
DC23-DC24 - HP
DC25 - Level
DC26 - Status
DC27-DC28 - Types
DC29 - Held Item (When traded to Generation II)
DC2A-DC2D - Moves
DC2E-DC2F - Trainer ID
DC30-DC32 - Experience
DC33-DC34 - HP EV
DC35-DC36 - Attack EV
DC37-DC38 - Defense EV
DC39-DC3A - Speed EV
DC3B-DC3C - Special EV
DC3D - Attack/Defense IV
DC3E - Speed/Special IV
DC3F-DC42 - PP Moves

Pokémon 14

DC43 - Pokémon
DC44-DC45 - HP
DC46 - Level
DC47 - Status
DC48-DC49 - Types
DC4A - Held Item (When traded to Generation II)
DC4B-DC4E - Moves
DC4F-DC50 - Trainer ID
DC51-DC53 - Experience
DC54-DC55 - HP EV
DC56-DC57 - Attack EV
DC58-DC59 - Defense EV
DC5A-DC5B - Speed EV
DC5C-DC5D - Special EV
DC5E - Attack/Defense IV
DC5F - Speed/Special IV
DC60-DC63 - PP Moves

Pokémon 15

DC64 - Pokémon
DC65-CC66 - HP
DC67 - Level
DC68 - Status
DC69-DC6A - Types
DC6B - Held Item (When traded to Generation II)
DC6C-DC6F - Moves
DC70-DC71 - Trainer ID
DC72-DC74 - Experience
DC75-DC76 - HP EV
DC77-DC78 - Attack EV
DC79-DC7A - Defense EV
DC7B-DC7C - Speed EV
DC7D-DC7E - Special EV
DC7F - Attack/Defense IV
DC80 - Speed/Special IV
DC81-DC84 - PP Moves

Pokémon 16

DC85 - Pokémon
DC86-DC87 - HP
DC88 - Level
DC89 - Status
DC8A-DC8B - Types
DC8C - Held Item (When traded to Generation II)
DC8D-DC90 - Moves
DC91-DC92 - Trainer ID
DC93-DC95 - Experience
DC96-DC97 - HP EV
DC98-DC99 - Attack EV
DC9A-DC9B - Defense EV
DC9C-DC9D - Speed EV
DC9E-DC9F - Special EV
DCA0 - Attack/Defense IV
DCA1 - Speed/Special IV
DCA2-DCA5 - PP Moves

Pokémon 17

DCA6 - Pokémon
DCA7-DCA8 - HP
DCA9 - Level
DCAA - Status
DCAB-DCAC - Types
DCAD - Held Item (When traded to Generation II)
DCAE-DCB1 - Moves
DCB2-DCB3 - Trainer ID
DCB4-DCB6 - Experience
DCB7-DCB8 - HP EV
DCB9-DCBA - Attack EV
DCBB-DCBC - Defense EV
DCBD-DCBE - Speed EV
DCBF-DCC0 - Special EV
DCC1 - Attack/Defense IV
DCC2 - Speed/Special IV
DCC3-DCC6 - PP Moves

Pokémon 18

DCC7 - Pokémon
DCC8-DCC9 - HP
DCCA - Level
DCCB - Status
DCCC-DCCD - Types
DCCE - Held Item (When traded to Generation II)
DCCF-DCD2 - Moves
DCD3-DCD4 - Trainer ID
DCD5-DCD7 - Experience
DCD8-DCD9 - HP EV
DCDA-DCDB - Attack EV
DCDC-DCDD - Defense EV
DCDE-DCDF - Speed EV
DCE0-DCE1 - Special EV
DCE2 - Attack/Defense IV
DCE3 - Speed/Special IV
DCE4-DCE7 - PP Moves

Pokémon 19

DCE8 - Pokémon
DCE9-DCEA - HP
DCEB - Level
DCEC - Status
DCED-DCEE - Types
DCEF - Held Item (When traded to Generation II)
DCF0-DCF3 - Moves
DCF4-DCF5 - Trainer ID
DCF6-DCF8 - Experience
DCF9-DCFA - HP EV
DCFB-DCFC - Attack EV
DCFD-DCFE - Defense EV
DCFF-DD00 - Speed EV
DD01-DD02 - Special EV
DD03 - Attack/Defense IV
DD04 - Speed/Special IV
DD05-DD08 - PP Moves

Pokémon 20

DD09 - Pokémon
DD0A-DD0B - HP
DD0C - Level
DD0D - Status
DD0E-DD0F - Types
DD10 - Held Item (When traded to Generation II)
DD11-DD14 - Moves
DD15-DD16 - Trainer ID
DD17-DD19 - Experience
DD1A-DD1B - HP EV
DD1C-DD1D - Attack EV
DD1E-DD1F - Defense EV
DD20-DD21 - Speed EV
DD22-DD23 - Special EV
DD24 - Attack/Defense IV
DD25 - Speed/Special IV
DD26-DD29 - PP Moves

Trainer name

DD2A-DD34 - Trainer name for 1st
DD35-DD3F - Trainer name for 2nd
DD40-DD4A - Trainer name for 3rd
DD4B-DD55 - Trainer name for 4th
DD56-DD60 - Trainer name for 5th
DD61-DD6B - Trainer name for 6th
DD6C-DD76 - Trainer name for 7th
DD77-DD81 - Trainer name for 8th
DD82-DD8C - Trainer name for 9th
DD8D-DD97 - Trainer name for 10th
DD98-DDA2 - Trainer name for 11th
DDA3-DDAD - Trainer name for 12th
DDAE-DDB8 - Trainer name for 13th
DDB9-DDC3 - Trainer name for 14th
DDC4-DDCE - Trainer name for 15th
DDCF-DDD9 - Trainer name for 16th
DDDA-DDE4 - Trainer name for 17th
DDE5-DDEF - Trainer name for 18th
DDF0-DDFA - Trainer name for 19th
DDFB-DE05 - Trainer name for 20th

Nickname

DE06-DE10 - Nickname for 1st
DE11-DE1B - Nickname for 2nd
DE1C-DE26 - Nickname for 3rd
DE27-DE31 - Nickname for 4th
DE32-DE3C - Nickname for 5th
DE3D-DE47 - Nickname for 6th
DE48-DE52 - Nickname for 7th
DE53-DE5D - Nickname for 8th
DE5E-DE68 - Nickname for 9th
DE69-DE73 - Nickname for 10th
DE74-DE7E - Nickname for 11th
DE7F-DED9 - Nickname for 12th
DE8A-DE94 - Nickname for 13th
DE95-DE9F - Nickname for 14th
DEA0-DEAA - Nickname for 15th
DEAB-DEB5 - Nickname for 16th
DEB6-DEC0 - Nickname for 17th
DEC1-DECB - Nickname for 18th
DECC-DED6 - Nickname for 19th
DED7-DEE1 - Nickname for 20th


Internal data (HRAM)

When the game boots, HRAM (FF80 to FFFE) is initialized to 0.

OAM DMA

FF80-FF89 - OAM DMA routine

Misc.

FF8A - Soft reset frame counter
Initially has value 16.
Decremented each frame START+SELECT+A+B are held down ; when 0, the game soft resets.
FF9F-FFA1 - Money / Coins amount (big-endian)
When holding coins amount, 0 is written to FF9F for some reason.

Serial

FFA9-FFAD - Serial status data (sync method, etc.)

Graphics scroll values

FFAE - Value copied to SCX at VBlank
FFAF - Value copied to SCY at VBlank
FFB0 - Value copied to WY  at VBlank

Joypad

FFB1 - Joypad input during previous frame
FFB2 - Released buttons on this frame
FFB3 - Pressed buttons on this frame
FFB4 - Held buttons on this frame
FFB5 - Low-sensitivity joypad output, controlled by FFB6 and FFB7.
FFB6 - If zero and A or B is held, outputs nothing. Otherwise, considers buttons held for more than half a second being pressed twelve times a second.
Has no influence if FFB7 is zero.
FFB7 - If zero, FFB5 contains newly-pressed buttons only.

ROM banking

FFB8 - Loaded ROM bank.
FFB9 - Saved ROM bank.

VBlank data transfer

FFBA - Transfer background to VRAM during VBlank ?
FFBB - Which portion of the screen to transfer ? (0-1-2 = top-middle-bottom)
FFBC-FFBD - Where to copy background to ? (does not account for FFBB offset ; low-endian address)
FFBF-FFC0 - Stack pointer save
FFC1-FFC2 - Where to copy background from ? (used during copy ; low-endian address)
FFBA is copied to FFC1 (LSB of address).
FFC3-FFC4 - Where to copy background to ? (low-endian address)
FFC5 - Number of rows to copy
FFC6 - Number of 16-byte units to copy during VBlank
FFC7-FFC8 - Source
FFC9-FFCA - Destination
FFCB - Number of 8-byte units to copy during VBlank
FFCC-FFCD - Source
FFCE-FFCF - Destination

VBlank 2x2 tile block redraw

FFD0 - What to redraw (0-1-2 = nothing-column-row)
FFD1-FFD2 - Destination

RNG

FFD3 - RandomAdd
FFD4 - RandomSub

On each call to the Random function, the value of register rDIV (roughly tracking how many bytes were executed) and the carry are added to RandomAdd, and subtracted from RandomSub.

VBlank interface

FFD5 - Frame counter (decremented each VBlank)
FFD6 - Set to 0 when a VBlank occurs

Misc. 2

FFD7 - Tileset type (0-1-2 = indoors-cave-outside)
Nonzero values have the water animation.
Value 2 has the flower animation.
FFF3 - Battle turn (0-1 = player-opponent)
FFF8 - Joypad input
FFF9 - Diable joypad polling