ref: f17320d7a835709da4c991e0e67300d001ffc53c
parent: 2ed422c6960cf0ec57c3a336b092c2af06bbc1e8
parent: 1953e89b86572fec2e0628ddee029833c253eca9
author: iimarckus <iimarckus@gmail.com>
date: Mon Dec 9 16:23:19 EST 2013
Merge pull request #19 from yenatch/crystal-makefile bring pokered into this century
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,6 @@
+# global label defs are generated
+globals.asm
+
# precompiled python
*.pyc
@@ -9,7 +12,12 @@
# roms
*.gbc
+*.gb
+# rgbds extras
+*.map
+*.sym
+
# generated
*.tx
@@ -20,13 +28,9 @@
*.json
# for any of the poor souls with save game files in their working directory
-baserom.sgm
-baserom.sav
-pokered.sgm
-pokered.sav
-
-baserom.sys
-pokered.sys
+*.sgm
+*.sav
+*.sys
# for vim configuration
# url: http://www.vim.org/scripts/script.php?script_id=441
--- /dev/null
+++ b/INSTALL.md
@@ -1,0 +1,45 @@
+# Getting Started
+
+A base rom of Pokémon Red is required to assemble **pokered.gbc**.
+
+ Pokemon Red (UE) [S][!].gb
+ (MD5: 3d45c1ee9abd5738df46d2bdda8b57dc)
+
+
+# Linux
+
+Linux dependencies. OSX users already have these after installing Xcode.
+
+ sudo apt-get install make gcc bison git python python-setuptools
+
+
+Set up the **pokered** repository:
+
+ git clone git://github.com/iimarckus/pokered.git
+ cd pokered
+
+ ./init.sh
+
+Copy the Pokémon Red rom to this directory. Name it **baserom.gbc**.
+
+Now **pokered.gbc** can be built from source.
+
+ make red
+
+This should take about 10-15 seconds. Subsequent builds are faster.
+
+
+To build Pokémon Blue:
+
+ make blue
+
+
+# OSX
+
+Download and install **Xcode**. Then follow the Linux instructions.
+
+
+# Windows
+
+Not yet.
+
--- a/Makefile
+++ b/Makefile
@@ -1,32 +1,65 @@
+PYTHON := python
.SUFFIXES: .asm .tx .o .gbc
+.PHONY: all clean red blue
+.SECONDEXPANSION:
-TEXTFILES := $(shell find ./ -type f -name '*.asm')
-all: pokered.gbc
+TEXTQUEUE :=
-pokered.o: pokered.tx main.tx constants.tx wram.tx ${TEXTFILES:.asm=.tx}
- rgbasm -o pokered.o pokered.tx
-
-pokeblue.o: pokeblue.tx main.tx constants.tx wram.tx ${TEXTFILES:.asm=.tx}
- rgbasm -o pokeblue.o pokeblue.tx
+RED_OBJS := pokered.o
+BLUE_OBJS := pokeblue.o
+OBJS := $(RED_OBJS) $(BLUE_OBJS)
+
+ROMS := pokered.gbc pokeblue.gbc
+
+# generate dependencies for each object
+$(shell $(foreach obj, $(OBJS), \
+ $(eval $(obj:.o=)_DEPENDENCIES := $(shell $(PYTHON) extras/pokemontools/scan_includes.py $(obj:.o=.asm) | sed s/globals.asm//g)) \
+))
+$(shell $(foreach obj, $(OBJS), \
+ $(eval ALL_DEPENDENCIES += $($(obj:.o=)_DEPENDENCIES)) \
+))
+
+all: $(ROMS)
+red: pokered.gbc
+blue: pokeblue.gbc
+
redrle: extras/redtools/redrle.c
${CC} -o $@ $>
+clean:
+ rm -f $(ROMS)
+ rm -f $(OBJS)
+ rm -f globals.asm
+ @echo "removing *.tx" && rm -f $(shell find . -iname '*.tx' -printf '"%p" ')
+ rm -f redrle
+
+
+baserom.gbc: ;
+ @echo "Wait! Need baserom.gbc first. Check README and INSTALL for details." && false
+
+%.asm: ;
.asm.tx:
- python textpre.py < $< > $@
+ $(eval TEXTQUEUE := $(TEXTQUEUE) $<)
+ @rm -f $@
-pokered.gbc: pokered.o
- rgblink -o $@ $*.o
+globals.asm: $(ALL_DEPENDENCIES:.asm=.tx) $(OBJS:.o=.tx)
+ @touch $@
+ @$(PYTHON) prequeue.py $(TEXTQUEUE)
+globals.tx: globals.asm
+ @cp $< $@
+
+$(OBJS): $$*.tx $$(patsubst %.asm, %.tx, $$($$*_DEPENDENCIES))
+ rgbasm -o $@ $*.tx
+
+pokered.gbc: globals.tx $(RED_OBJS)
+ rgblink -n $*.sym -m $*.map -o $@ $(RED_OBJS)
rgbfix -jsv -k 01 -l 0x33 -m 0x13 -p 0 -r 03 -t "POKEMON RED" $@
cmp baserom.gbc $@
-
-pokeblue.gbc: pokeblue.o
- rgblink -o $@ $*.o
+
+pokeblue.gbc: globals.tx $(BLUE_OBJS)
+ rgblink -n $*.sym -m $*.map -o $@ $(BLUE_OBJS)
rgbfix -jsv -k 01 -l 0x33 -m 0x13 -p 0 -r 03 -t "POKEMON BLUE" $@
cmp blue.gbc $@
-clean:
- rm -f pokered.o pokered.gbc pokeblue.o pokeblue.gbc redrle $(TEXTFILES:.asm=.tx)
-
-more: pokered.gbc pokeblue.gbc
--- a/README
+++ /dev/null
@@ -1,19 +1,0 @@
-This is a disassembly of Pokémon Red.
-
-It uses the following ROM as a base:
-Pokemon Red (UE) [S][!].gb
-(MD5: 3d45c1ee9abd5738df46d2bdda8b57dc)
-
-To assemble, first install RGBDS and put it in your path.
-
-The version of RGBDS needed is rgbds-linux:
-https://github.com/bentley/rgbds/
-git://github.com/bentley/rgbds.git
-
-Then copy the Pokémon ROM to this directory as "baserom.gbc".
-Then run "make" in your shell.
-
-This will output a file named "pokered.gbc".
-
-Our IRC channel is located here:
-server nucleus.kafuka.org, channel #skeetendo
--- /dev/null
+++ b/README.md
@@ -1,0 +1,18 @@
+# Pokémon Red
+
+This is a disassembly of Pokémon Red.
+
+It uses the following ROM as a base:
+
+ Pokemon Red (UE) [S][!].gb
+ (MD5: 3d45c1ee9abd5738df46d2bdda8b57dc)
+
+To set up the repository, see [**INSTALL.md**](INSTALL.md).
+
+
+## See also
+
+* Disassembly of [**Pokémon Crystal**](https://github.com/kanzure/pokecrystal)
+
+* irc: **nucleus.kafuka.org** [**#skeetendo**](https://kiwiirc.com/client/irc.nolimitzone.com/?#skeetendo)
+
--- a/constants.asm
+++ b/constants.asm
@@ -2,497 +2,17 @@
_GREEN EQU 0
_YELLOW EQU 0
-;\1 = X
-;\2 = Y
-FuncCoord: MACRO
-Coord = $C3A0 + 20 * \2 + \1
- ENDM
-;\1 = Map Width
-;\2 = Rows above (Y-blocks)
-;\3 = X movement (X-blocks)
-EVENT_DISP: MACRO
- dw ($C6EF + (\1) + ((\1) + 6) * ((\2) >> 1) + ((\3) >> 1)) ; Ev.Disp
- db \2,\3 ;Y,X
- ENDM
+INCLUDE "macros.asm"
-FLYWARP_DATA: MACRO
- EVENT_DISP \1,\2,\3
- db ((\2) & $01) ;sub-block Y
- db ((\3) & $01) ;sub-block X
- ENDM
+INCLUDE "hram.asm"
-; external map entry macro
-EMAP: MACRO ; emap x-coordinate,y-coordinate,textpointer
-; the appearance of towns and routes in the town map, indexed by map id
- ; nybble: y-coordinate
- ; nybble: x-coordinate
- ; word : pointer to map name
- db (\1 + (\2 << 4))
- dw \3
- ENDM
-; internal map entry macro
-IMAP: MACRO ; imap mapid_less_than,x-coordinate,y-coordinate,textpointer
-; the appearance of buildings and dungeons in the town map
- ; byte : maximum map id subject to this rule
- ; nybble: y-coordinate
- ; nybble: x-coordinate
- ; word : pointer to map name
- db \1
- db \2 + \3 << 4
- dw \4
- ENDM
-
-; tilesets' headers macro
-TSETHEAD: MACRO
- db BANK(\2)
- dw \1,\2,\3
- db \4,\5,\6,\7,\8
- ENDM
-
-; macro for two nibbles
-dn: MACRO
- db (\1 << 4 | \2)
- ENDM
-
-; macro for putting a byte then a word
-dbw: MACRO
- db \1
- dw \2
- ENDM
-
-; data format macros
-RGB: MACRO
- dw (\3 << 10 | \2 << 5 | \1)
- ENDM
-
-; text macros
-TX_NUM: MACRO
-; print a big-endian decimal number.
-; \1: address to read from
-; \2: number of bytes to read
-; \3: number of digits to display
- db $09
- dw \1
- db \2 << 4 | \3
- ENDM
-
-TX_FAR: MACRO
- db $17
- dw \1
- db BANK(\1)
- ENDM
-
-; text engine command $1
-TX_RAM: MACRO
-; prints text to screen
-; \1: RAM address to read from
- db $1
- dw \1
- ENDM
-
-; Predef macro.
-PREDEF: MACRO
- ld a, (\1 - PredefPointers) / 3
- call Predef
- ENDM
-
-PREDEF_JUMP: MACRO
- ld a, (\1 - PredefPointers) / 3
- jp Predef
- ENDM
-
-; wram locations
-
-; data for all sprites on the current map
-; holds info for 16 sprites with $10 bytes each
-; player sprite is always sprite 0
-; 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
-; C1xB
-; C1xC
-; C1xD
-; C1xE
-; C1xF
-W_SPRITESTATEDATA1 EQU $C100 ; to $C200
-
-; more data for all sprites on the current map
-; holds info for 16 sprites with $10 bytes each
-; 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
-; C2xA
-; C2xB
-; C2xC
-; C2xD
-; C2xE: sprite image base offset (in video ram, player always has value 1, used to compute c1x2)
-; C2xF
-W_SPRITESTATEDATA2 EQU $C200 ; to $C300
-
-; buffer for OAM data. Is copied to OAM RAM by OAM DMA
-W_OAMBUFFER EQU $C300 ; size $a0, to $C3A0
-
-; buffer for tiles that are visible on screen (20 columns by 18 rows = $168 bytes)
-W_SCREENTILESBUFFER EQU $C3A0 ; size $168, to $C508
-
-; buffer for temporarily saving and restoring current screen's tiles (e.g. if menus are drawn on top)
-W_SCREENTILESBACKBUFFER EQU $C508 ; size $168, to $C670
-
-; the tiles of the row or column to be redrawn by RedrawExposedScreenEdge
-W_SCREENEDGETILES EQU $CBFC
-
-; coordinates of the position of the cursor for the top menu item (id 0)
-W_TOPMENUITEMY EQU $CC24
-W_TOPMENUITEMX EQU $CC25
-
-; the id of the currently selected menu item
-; the top item has id 0, the one below that has id 1, etc.
-; note that the "top item" means the top item currently visible on the screen
-; add this value to [W_LISTSCROLLOFFSET] to get the item's position within the list
-W_CURMENUITEMID EQU $CC26
-
-; the tile that was behind the menu cursor's current location
-W_TILEBEHINDCURSOR EQU $CC27
-
-W_MAXMENUITEMID EQU $CC28 ; id of the bottom menu item
-
-W_MENUWATCHEDKEYS EQU $CC29 ; bit mask of keys that the menu will respond to
-
-W_OLDMENUITEMID EQU $CC2A ; id of previously selected menu item
-
-; how many times should HandleMenuInput poll the joypad state before it returns?
-W_MENUJOYPADPOLLCOUNT EQU $CC34
-
-W_PLAYERMOVELISTINDEX EQU $CC2E
-W_PLAYERMONNUMBER EQU $CC2F
-
-; the address of the menu cursor's current location within C3A0-C507
-W_MENUCURSORLOCATION EQU $CC30 ; 2 bytes
-
-; offset of the current top menu item from the beginning of the list
-; keeps track of what section of the list is on screen
-W_LISTSCROLLOFFSET EQU $CC36
-
-; set to 1 if you can go from the bottom to the top or top to bottom of a menu
-; set to 0 if you can't go past the top or bottom of the menu
-W_MENUWRAPPINGENABLED EQU $CC4A
-
-W_TRAINERHEADERFLAGBIT EQU $CC55
-
-W_RLEBYTECOUNTER EQU $CCD2
-
-; current HP of player and enemy substitutes
-W_PLAYERSUBSITUTEHP EQU $CCD7
-W_ENEMYSUBSITUTEHP EQU $CCD8
-
-W_MOVEMENUTYPE EQU $CCDB ; 0=regular, 1=mimic, 2=above message box (relearn, heal pp..)
-W_PLAYERSELECTEDMOVE EQU $CCDC
-W_ENEMYSELECTEDMOVE EQU $CCDD
-
-W_ENEMYMOVELISTINDEX EQU $CCE2
-
-W_AICOUNT EQU $CCDF ; number of times remaining that AI action can occur
-
-; stat modifiers for the player's current pokemon
-; value can range from 1 - 13 ($1 to $D)
-; 7 is normal
-
-W_PLAYERMONATTACKMOD EQU $CD1A
-W_PLAYERMONDEFENSEMOD EQU $CD1B
-W_PLAYERMONSPEEDMOD EQU $CD1C
-W_PLAYERMONSPECIALMOD EQU $CD1D
-W_PLAYERMONACCURACYMOD EQU $CD1E
-W_PLAYERMONEVASIONMOD EQU $CD1F
-
-
-W_ENGAGEDTRAINERCLASS EQU $CD2D
-W_ENGAGEDTRAINERSETNUM EQU $CD2E
-
-; stat modifiers for the enemy's current pokemon
-; value can range from 1 - 13 ($1 to $D)
-; 7 is normal
-W_ENEMYMONATTACKMOD EQU $CD2E
-W_ENEMYMONDEFENSEMOD EQU $CD2F
-W_ENEMYMONSPEEDMOD EQU $CD30
-W_ENEMYMONSPECIALMOD EQU $CD31
-W_ENEMYMONACCURACYMOD EQU $CD32
-W_ENEMYMONEVASIONMOD EQU $CD33
-
-W_WHICHTRADE EQU $CD3D ; which entry from TradeMons to select
-W_TRAINERSPRITEOFFSET EQU $CD3D
-W_TRAINERENGAGEDISTANCE EQU $CD3E
-W_TRAINERFACINGDIR EQU $CD3F
-W_TRAINERSCREENYPOS EQU $CD40
-W_TRAINERSCREENXPOS EQU $CD41
-
-; bit 0: is player engaged by trainer (to avoid being engaged by multiple trainers simultaniously)
-W_FLAGS_CD60 EQU $CD60
-
-; bit 1 means button presses will be ignored for that futton
-W_JOYPADFORBIDDENBUTTONSMASK EQU $CD6B
-
-; second buffer for temporarily saving and restoring current screen's tiles (e.g. if menus are drawn on top)
-W_SCREENTILESBACKBUFFER2 EQU $CD81 ; size $168, to $CEE9
-
-W_HPBARMAXHP EQU $CEE9
-W_HPBAROLDHP EQU $CEEB
-W_HPBARNEWHP EQU $CEED
-W_HPBARDELTA EQU $CEEF
-
-W_HPBARHPDIFFERENCE EQU $CEFD
-
-W_BUFFER EQU $CEE9 ; used for temporary things
-
-W_ANIMSOUNDID EQU $CF07 ; sound ID during battle animations
-
-; movement byte 2 of current sprite
-W_CURSPRITEMOVEMENT2 EQU $CF14
-
-W_GYMCITYNAME EQU $CF5F
-W_GYMLEADERNAME EQU $CF70
-
-W_WHICHPOKEMON EQU $CF92 ; which pokemon you selected
-
-W_LISTMENUID EQU $CF94 ; ID used by DisplayListMenuID
-
-W_WALKCOUNTER EQU $CFC5 ; walk animation counter
-
-W_CURCHANNELPOINTER EQU $CFC7 ; (the current music channel pointer - $4000) / 3
-
-W_ENEMYMOVENUM EQU $CFCC
-W_ENEMYMOVEEFFECT EQU $CFCD
-W_ENEMYMOVEPOWER EQU $CFCE
-W_ENEMYMOVETYPE EQU $CFCF
-W_ENEMYMOVEACCURACY EQU $CFD0
-W_ENEMYMOVEMAXPP EQU $CFD1
-
-W_PLAYERMOVENUM EQU $CFD2
-W_PLAYERMOVEEFFECT EQU $CFD3
-W_PLAYERMOVEPOWER EQU $CFD4
-W_PLAYERMOVETYPE EQU $CFD5
-W_PLAYERMOVEACCURACY EQU $CFD6
-W_PLAYERMOVEMAXPP EQU $CFD7
-
-W_ENEMYMONID EQU $CFD8
-
-W_ENEMYMONNAME EQU $CFDA
-
-W_ENEMYMONCURHP EQU $CFE6 ; active opponent's hp (16 bits)
-W_ENEMYMONNUMBER EQU $CFE8 ; active opponent's position in team (0 to 5)
-W_ENEMYMONSTATUS EQU $CFE9 ; active opponent's status condition
- ; bit 0 slp
- ; bit 1 slp
- ; bit 2 slp
- ; bit 3 psn
- ; bit 4 brn
- ; bit 5 frz
- ; bit 6 par
- ; unused? (XXX confirm)
-W_ENEMYMONTYPES EQU $CFEA
-W_ENEMYMONTYPE1 EQU $CFEA
-W_ENEMYMONTYPE2 EQU $CFEB
-W_ENEMYMONMOVES EQU $CFED
-W_ENEMYMONATKDEFIV EQU $CFF1
-W_ENEMYMONSPDSPCIV EQU $CFF2
-W_ENEMYMONLEVEL EQU $CFF3
-W_ENEMYMONMAXHP EQU $CFF4 ; (16 bits)
-W_ENEMYMONATTACK EQU $CFF6
-W_ENEMYMONDEFENSE EQU $CFF8
-W_ENEMYMONSPEED EQU $CFFA
-W_ENEMYMONSPECIAL EQU $CFFC
-W_ENEMYMONPP EQU $CFFE
-
-W_PLAYERMONNAME EQU $D009
-W_PLAYERMONID EQU $D014
-W_PLAYERMONCURHP EQU $D015 ; active opponent's hp (16 bits)
-W_PLAYERMONSTATUS EQU $D018 ; the status of the player’s current monster
- ; bit 0 slp
- ; bit 1 slp
- ; bit 2 slp
- ; bit 3 psn
- ; bit 4 brn
- ; bit 5 frz
- ; bit 6 par
- ; unused? (XXX confirm)
-W_PLAYERMONTYPES EQU $D019
-W_PLAYERMONTYPE1 EQU $D019
-W_PLAYERMONTYPE2 EQU $D01A
-W_PLAYERMONMOVES EQU $D01C
-W_PLAYERMONIVS EQU $D020 ; 4x 4 bit: atk, def, spd, spc
-W_PLAYERMONLEVEL EQU $D022
-W_PLAYERMONMAXHP EQU $D023 ; (16 bits)
-W_PLAYERMONATK EQU $D025
-W_PLAYERMONDEF EQU $D027
-W_PLAYERMONSPEED EQU $D029
-W_PLAYERMONSPECIAL EQU $D02B
-W_PLAYERMONPP EQU $D02D
-
-W_TRAINERCLASS EQU $D031
-
-W_ISINBATTLE EQU $D057 ; no battle, this is 0
- ; wild battle, this is 1
- ; trainer battle, this is 2
-
-W_PLAYERMONSALIVEFLAGS EQU $D058 ; 6 bit array, 1 if player mon is alive
-
-W_CUROPPONENT EQU $D059 ; in a wild battle, this is the species of pokemon
- ; in a trainer battle, this is the trainer class + $C8
-
-W_BATTLETYPE EQU $D05A ; in normal battle, this is 0
- ; in old man battle, this is 1
- ; in safari battle, this is 2
-
-W_LONEATTACKNO EQU $D05C ; which entry in LoneAttacks to use
-W_GYMLEADERNO EQU $D05C ; it's actually the same thing as ^
-W_TRAINERNO EQU $D05D ; which instance of [youngster, lass, etc] is this?
-
-W_MOVEMISSED EQU $D05F
-
-; not entirely sure that all these bits are 100% correct
-; Battle Status Byte 1
-; 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
-
-; Battle Status Byte 2
-; 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
-
-; Battle Status Byte 3
-; bit 0 - toxic
-; bit 1 - light screen
-; bit 2 - reflect
-; bit 3 - tranformed
-
-W_PLAYERBATTSTATUS1 EQU $D062
-W_PLAYERBATTSTATUS2 EQU $D063
-W_PLAYERBATTSTATUS3 EQU $D064
-
-W_ENEMYBATTSTATUS1 EQU $D067
-W_ENEMYBATTSTATUS2 EQU $D068
-W_ENEMYBATTSTATUS3 EQU $D069
-
-W_PLAYERTOXICCOUNTER EQU $D06C
-W_PLAYERDISABLEDMOVE EQU $D06D
-
-W_ENEMYTOXICCOUNTER EQU $D071
-W_ENEMYDISABLEDMOVE EQU $D072
-
-W_NUMHITS EQU $D074 ; number of hits in attacks like Doubleslap, etc.
-
-W_ANIMATIONID EQU $D07C ; ID number of the current battle animation
-
-; base coordinates of frame block
-W_BASECOORDX EQU $D081
-W_BASECOORDY EQU $D082
-
-W_FBTILECOUNTER EQU $D084 ; counts how many tiles of the current frame block have been drawn
-
-W_SUBANIMFRAMEDELAY EQU $D086 ; duration of each frame of the current subanimation in terms of screen refreshes
-W_SUBANIMCOUNTER EQU $D087 ; counts the number of subentries left in the current subanimation
-
-W_NUMFBTILES EQU $D089 ; number of tiles in current battle animation frame block
-
-W_SUBANIMTRANSFORM EQU $D08B ; controls what transformations are applied to the subanimation
-; 01: flip horizontally and vertically
-; 02: flip horizontally and translate downwards 40 pixels
-; 03: translate base coordinates of frame blocks, but don't change their internal coordinates or flip their tiles
-; 04: reverse the subanimation
-
-W_PBSTOREDREGISTERH EQU $D08C
-W_PBSTOREDREGISTERL EQU $D08D
-W_PBSTOREDREGISTERD EQU $D08E
-W_PBSTOREDREGISTERE EQU $D08F
-W_PBSTOREDROMBANK EQU $D092
-
-W_SUBANIMADDRPTR EQU $D094 ; the address _of the address_ of the current subanimation entry (2 bytes)
-
-W_SUBANIMSUBENTRYADDR EQU $D096 ; the address of the current subentry of the current subanimation (2 bytes)
-
-W_FBDESTADDR EQU $D09C ; current destination address in OAM for frame blocks (2 bytes, big endian)
-
-W_FBMODE EQU $D09E ; controls how the frame blocks are put together to form frames
-; specifically, after finishing drawing the frame block, the frame block's mode determines what happens
-; 00: clean OAM buffer and delay
-; 02: move onto the next frame block with no delay and no cleaning OAM buffer
-; 03: delay, but don't clean OAM buffer
-; 04: delay, without cleaning OAM buffer, and do not advance [W_FBDESTADDR], so that the next frame block will overwrite this one
-
-; sprite data is written column by column, each byte contains 8 columns (one for ech bit)
-; for 2bpp sprites, pairs of two consecutive bytes (i.e. pairs of consecutive rows of sprite data)
-; contain the upper and lower bit of each of the 8 pixels, respectively
-SPRITEBUFFERSIZE EQU $188 ; 7 * 7 (tiles) * 8 (bytes per tile)
-S_SPRITEBUFFER0 EQU $A000 + 0 * SPRITEBUFFERSIZE
-S_SPRITEBUFFER1 EQU $A000 + 1 * SPRITEBUFFERSIZE
-S_SPRITEBUFFER2 EQU $A000 + 2 * SPRITEBUFFERSIZE
-
-W_SPRITECURPOSX EQU $D0A1
-W_SPRITECURPOSY EQU $D0A2
-W_SPRITEWITDH EQU $D0A3
-W_SPRITEHEIGHT EQU $D0A4
-W_SPRITEINPUTCURBYTE EQU $D0A5 ; current input byte
-W_SPRITEINPUTBITCOUNTER EQU $D0A6 ; bit offset of last read input bit
-
-; determines where in the output byte the two bits are placed. Each byte contains four columns (2bpp data)
-; 3 -> XX000000 1st column
-; 2 -> 00XX0000 2nd column
-; 1 -> 0000XX00 3rd column
-; 0 -> 000000XX 4th column
-W_SPRITEOUTPUTBITOFFSET EQU $D0A7
-
-; bit 0 determines used buffer (0 -> $a188, 1 -> $a310)
-; bit 1 loading last sprite chunk? (there are at most 2 chunks per load operation)
-W_SPRITELOADFLAGS EQU $D0A8
-W_SPRITEUNPACKMODE EQU $D0A9
-W_SPRITEFLIPPED EQU $D0AA
-
-W_SPRITEINPUTPTR EQU $D0AB ; pointer to next input byte
-W_SPRITEOUTPUTPTR EQU $D0AD ; pointer to current output byte
-W_SPRITEOUTPUTPTRCACHED EQU $D0AF ; used to revert pointer for different bit offsets
-W_SPRITEDECODETABLE0PTR EQU $D0B1 ; pointer to differential decoding table (assuming initial value 0)
-W_SPRITEDECODETABLE1PTR EQU $D0B3 ; pointer to differential decoding table (assuming initial value 1)
-
-H_SPRITEWIDTH EQU $FF8B ; in bytes
-H_SPRITEINTERLACECOUNTER EQU $FF8B
-H_SPRITEHEIGHT EQU $FF8C ; in bytes
-H_SPRITEOFFSET EQU $FF8D
-
; OAM flags used by this game
OAMFLAG_ENDOFDATA EQU %00000001 ; pseudo OAM flag, only used by game logic
OAMFLAG_CANBEMASKED EQU %00000010 ; pseudo OAM flag, only used by game logic
OAMFLAG_VFLIPPED EQU %00100000 ; OAM flag flips the sprite vertically. Used for making left facing sprites face right and to alternate between left and right foot animation when walking up or down
-; List type
-; used in $D0B6
-W_LISTTYPE EQU $D0B6
MONSTER_NAME EQU 1
MOVE_NAME EQU 2
; ???_NAME EQU 3
@@ -501,791 +21,19 @@
ENEMYOT_NAME EQU 6
TRAINER_NAME EQU 7
-W_MONHEADER EQU $d0b8
-W_MONHDEXNUM EQU $d0b8
-W_MONHBASESTATS EQU $d0b9
-;W_MONHBASEHP EQU $d0b9
-;W_MONHBASEATTACK EQU $d0ba
-;W_MONHBASEDEFENSE EQU $d0bb
-W_MONHBASESPEED EQU $d0bc
-;W_MONHBASESPECIAL EQU $d0bd
-W_MONHTYPES EQU $d0be
-W_MONHTYPE1 EQU $d0be
-W_MONHTYPE2 EQU $d0bf
-W_MONHCATCHRATE EQU $d0c0
-;W_MONHBASEXP EQU $d0c1
-W_MONHSPRITEDIM EQU $d0c2
-W_MONHFRONTSPRITE EQU $d0c3
-W_MONHBACKSPRITE EQU $d0c5
-W_MONHMOVES EQU $d0c7
-;W_MONHMOVE1 EQU $d0c7
-;W_MONHMOVE2 EQU $d0c8
-;W_MONHMOVE3 EQU $d0c9
-;W_MONHMOVE4 EQU $d0ca
-W_MONHGROWTHRATE EQU $d0cb
-W_MONHLEARNSET EQU $d0cc ; bit field, 7 bytes
-;W_MONHPADDING EQU $d0d7
-
-
-W_DAMAGE EQU $D0D7
-
-
-W_CURENEMYLVL EQU $D127
-
-W_ISLINKBATTLE EQU $D12B
-
-W_PRIZE1 EQU $D13D
-W_PRIZE2 EQU $D13E
-W_PRIZE3 EQU $D13F
-
-W_PLAYERNAME EQU $D158 ; 11 characters, including null
-
-W_NUMINPARTY EQU $D163
-
-W_PARTYMON1 EQU $D164
-W_PARTYMON2 EQU $D165
-W_PARTYMON3 EQU $D166
-W_PARTYMON4 EQU $D167
-W_PARTYMON5 EQU $D168
-W_PARTYMON6 EQU $D169
-W_PARTYMONEND EQU $D16A
-
-W_PARTYMON1DATA EQU $D16B
-W_PARTYMON1_NUM EQU $D16B
-W_PARTYMON1_HP EQU $D16C
-W_PARTYMON1_BOXLEVEL EQU $D16E
-W_PARTYMON1_STATUS EQU $D16F
-W_PARTYMON1_TYPE1 EQU $D170
-W_PARTYMON1_TYPE2 EQU $D171
-W_PARTYMON1_CRATE EQU $D172
-W_PARTYMON1_MOVE1 EQU $D173
-W_PARTYMON1_MOVE2 EQU $D174
-W_PARTYMON1_MOVE3 EQU $D175
-W_PARTYMON1_MOVE4 EQU $D176
-W_PARTYMON1_OTID EQU $D177
-W_PARTYMON1_EXP EQU $D179
-W_PARTYMON1_EVHP EQU $D17C
-W_PARTYMON1_EVATTACK EQU $D17E
-W_PARTYMON1_EVDEFENSE EQU $D180
-W_PARTYMON1_EVSPEED EQU $D182
-W_PARTYMON1_EVSECIAL EQU $D184
-W_PARTYMON1_IV EQU $D186
-W_PARTYMON1_MOVE1PP EQU $D188
-W_PARTYMON1_MOVE2PP EQU $D189
-W_PARTYMON1_MOVE3PP EQU $D18A
-W_PARTYMON1_MOVE4PP EQU $D18B
-W_PARTYMON1_LEVEL EQU $D18C
-W_PARTYMON1_MAXHP EQU $D18D
-W_PARTYMON1_ATACK EQU $D18F
-W_PARTYMON1_DEFENSE EQU $D191
-W_PARTYMON1_SPEED EQU $D193
-W_PARTYMON1_SPECIAL EQU $D195
-
-W_PARTYMON2DATA EQU $D197
-W_PARTYMON2_NUM EQU $D197
-W_PARTYMON2_HP EQU $D198
-W_PARTYMON2_BOXLEVEL EQU $D19A
-W_PARTYMON2_STATUS EQU $D19B
-W_PARTYMON2_TYPE1 EQU $D19C
-W_PARTYMON2_TYPE2 EQU $D19D
-W_PARTYMON2_CRATE EQU $D19E
-W_PARTYMON2_MOVE1 EQU $D19F
-W_PARTYMON2_MOVE2 EQU $D1A0
-W_PARTYMON2_MOVE3 EQU $D1A1
-W_PARTYMON2_MOVE4 EQU $D1A2
-W_PARTYMON2_OTID EQU $D1A3
-W_PARTYMON2_EXP EQU $D1A5
-W_PARTYMON2_EVHP EQU $D1A8
-W_PARTYMON2_EVATTACK EQU $D1AA
-W_PARTYMON2_EVDEFENSE EQU $D1AC
-W_PARTYMON2_EVSPEED EQU $D1AE
-W_PARTYMON2_EVSECIAL EQU $D1B0
-W_PARTYMON2_IV EQU $D1B2
-W_PARTYMON2_MOVE1PP EQU $D1B4
-W_PARTYMON2_MOVE2PP EQU $D1B5
-W_PARTYMON2_MOVE3PP EQU $D1B6
-W_PARTYMON2_MOVE4PP EQU $D1B7
-W_PARTYMON2_LEVEL EQU $D1B8
-W_PARTYMON2_MAXHP EQU $D1B9
-W_PARTYMON2_ATACK EQU $D1BB
-W_PARTYMON2_DEFENSE EQU $D1BD
-W_PARTYMON2_SPEED EQU $D1BF
-W_PARTYMON2_SPECIAL EQU $D1C1
-
-W_PARTYMON3DATA EQU $D1C3
-W_PARTYMON3_NUM EQU $D1C3
-W_PARTYMON3_HP EQU $D1C4
-W_PARTYMON3_BOXLEVEL EQU $D1C6
-W_PARTYMON3_STATUS EQU $D1C7
-W_PARTYMON3_TYPE1 EQU $D1C8
-W_PARTYMON3_TYPE2 EQU $D1C9
-W_PARTYMON3_CRATE EQU $D1CA
-W_PARTYMON3_MOVE1 EQU $D1CB
-W_PARTYMON3_MOVE2 EQU $D1CC
-W_PARTYMON3_MOVE3 EQU $D1CD
-W_PARTYMON3_MOVE4 EQU $D1CE
-W_PARTYMON3_OTID EQU $D1CF
-W_PARTYMON3_EXP EQU $D1D1
-W_PARTYMON3_EVHP EQU $D1D4
-W_PARTYMON3_EVATTACK EQU $D1D6
-W_PARTYMON3_EVDEFENSE EQU $D1D8
-W_PARTYMON3_EVSPEED EQU $D1DA
-W_PARTYMON3_EVSECIAL EQU $D1DC
-W_PARTYMON3_IV EQU $D1DE
-W_PARTYMON3_MOVE1PP EQU $D1E0
-W_PARTYMON3_MOVE2PP EQU $D1E1
-W_PARTYMON3_MOVE3PP EQU $D1E2
-W_PARTYMON3_MOVE4PP EQU $D1E3
-W_PARTYMON3_LEVEL EQU $D1E4
-W_PARTYMON3_MAXHP EQU $D1E5
-W_PARTYMON3_ATACK EQU $D1E7
-W_PARTYMON3_DEFENSE EQU $D1E9
-W_PARTYMON3_SPEED EQU $D1EB
-W_PARTYMON3_SPECIAL EQU $D1ED
-
-W_PARTYMON4DATA EQU $D1EF
-W_PARTYMON4_NUM EQU $D1EF
-W_PARTYMON4_HP EQU $D1F0
-W_PARTYMON4_BOXLEVEL EQU $D1F2
-W_PARTYMON4_STATUS EQU $D1F3
-W_PARTYMON4_TYPE1 EQU $D1F4
-W_PARTYMON4_TYPE2 EQU $D1F5
-W_PARTYMON4_CRATE EQU $D1F6
-W_PARTYMON4_MOVE1 EQU $D1F7
-W_PARTYMON4_MOVE2 EQU $D1F8
-W_PARTYMON4_MOVE3 EQU $D1F9
-W_PARTYMON4_MOVE4 EQU $D1FA
-W_PARTYMON4_OTID EQU $D1FB
-W_PARTYMON4_EXP EQU $D1FD
-W_PARTYMON4_EVHP EQU $D200
-W_PARTYMON4_EVATTACK EQU $D202
-W_PARTYMON4_EVDEFENSE EQU $D204
-W_PARTYMON4_EVSPEED EQU $D206
-W_PARTYMON4_EVSECIAL EQU $D208
-W_PARTYMON4_IV EQU $D20A
-W_PARTYMON4_MOVE1PP EQU $D20C
-W_PARTYMON4_MOVE2PP EQU $D20D
-W_PARTYMON4_MOVE3PP EQU $D20E
-W_PARTYMON4_MOVE4PP EQU $D20F
-W_PARTYMON4_LEVEL EQU $D210
-W_PARTYMON4_MAXHP EQU $D211
-W_PARTYMON4_ATACK EQU $D213
-W_PARTYMON4_DEFENSE EQU $D215
-W_PARTYMON4_SPEED EQU $D217
-W_PARTYMON4_SPECIAL EQU $D219
-
-W_PARTYMON5DATA EQU $D21B
-W_PARTYMON5_NUM EQU $D21B
-W_PARTYMON5_HP EQU $D21C
-W_PARTYMON5_BOXLEVEL EQU $D21E
-W_PARTYMON5_STATUS EQU $D21F
-W_PARTYMON5_TYPE1 EQU $D220
-W_PARTYMON5_TYPE2 EQU $D221
-W_PARTYMON5_CRATE EQU $D222
-W_PARTYMON5_MOVE1 EQU $D223
-W_PARTYMON5_MOVE2 EQU $D224
-W_PARTYMON5_MOVE3 EQU $D225
-W_PARTYMON5_MOVE4 EQU $D226
-W_PARTYMON5_OTID EQU $D227
-W_PARTYMON5_EXP EQU $D229
-W_PARTYMON5_EVHP EQU $D22C
-W_PARTYMON5_EVATTACK EQU $D22E
-W_PARTYMON5_EVDEFENSE EQU $D230
-W_PARTYMON5_EVSPEED EQU $D232
-W_PARTYMON5_EVSECIAL EQU $D234
-W_PARTYMON5_IV EQU $D236
-W_PARTYMON5_MOVE1PP EQU $D238
-W_PARTYMON5_MOVE2PP EQU $D239
-W_PARTYMON5_MOVE3PP EQU $D23A
-W_PARTYMON5_MOVE4PP EQU $D23B
-W_PARTYMON5_LEVEL EQU $D23C
-W_PARTYMON5_MAXHP EQU $D23D
-W_PARTYMON5_ATACK EQU $D23F
-W_PARTYMON5_DEFENSE EQU $D241
-W_PARTYMON5_SPEED EQU $D243
-W_PARTYMON5_SPECIAL EQU $D245
-
-W_PARTYMON6DATA EQU $D247
-W_PARTYMON6_NUM EQU $D247
-W_PARTYMON6_HP EQU $D248
-W_PARTYMON6_BOXLEVEL EQU $D24A
-W_PARTYMON6_STATUS EQU $D24B
-W_PARTYMON6_TYPE1 EQU $D24C
-W_PARTYMON6_TYPE2 EQU $D24D
-W_PARTYMON6_CRATE EQU $D24E
-W_PARTYMON6_MOVE1 EQU $D24F
-W_PARTYMON6_MOVE2 EQU $D250
-W_PARTYMON6_MOVE3 EQU $D251
-W_PARTYMON6_MOVE4 EQU $D252
-W_PARTYMON6_OTID EQU $D253
-W_PARTYMON6_EXP EQU $D255
-W_PARTYMON6_EVHP EQU $D258
-W_PARTYMON6_EVATTACK EQU $D25A
-W_PARTYMON6_EVDEFENSE EQU $D25C
-W_PARTYMON6_EVSPEED EQU $D25E
-W_PARTYMON6_EVSECIAL EQU $D260
-W_PARTYMON6_IV EQU $D262
-W_PARTYMON6_MOVE1PP EQU $D264
-W_PARTYMON6_MOVE2PP EQU $D265
-W_PARTYMON6_MOVE3PP EQU $D266
-W_PARTYMON6_MOVE4PP EQU $D267
-W_PARTYMON6_LEVEL EQU $D268
-W_PARTYMON6_MAXHP EQU $D269
-W_PARTYMON6_ATACK EQU $D26B
-W_PARTYMON6_DEFENSE EQU $D26D
-W_PARTYMON6_SPEED EQU $D26F
-W_PARTYMON6_SPECIAL EQU $D271
-
-W_PARTYMON1OT EQU $D273
-W_PARTYMON2OT EQU $D27E
-W_PARTYMON3OT EQU $D289
-W_PARTYMON4OT EQU $D294
-W_PARTYMON5OT EQU $D29F
-W_PARTYMON6OT EQU $D2AA
-
-W_PARTYMON1NAME EQU $D2B5
-W_PARTYMON2NAME EQU $D2C0
-W_PARTYMON3NAME EQU $D2CB
-W_PARTYMON4NAME EQU $D2D6
-W_PARTYMON5NAME EQU $D2E1
-W_PARTYMON6NAME EQU $D2EC
-
-W_OWNEDPOKEMON EQU $D2F7 ; bit field, 19 bytes
-
-W_SEENPOKEMON EQU $D30A ; bit field, 19 bytes
-
-;number of items in bag
-W_NUMBAGITEMS EQU $D31D
-; BAGITEM01 is an item id
-; BAGCOUNT01 is how many of this item
-W_BAGITEM01 EQU $D31E
-W_BAGITEM01QTY EQU $D31F
-W_BAGITEM02 EQU $D320
-W_BAGITEM02QTY EQU $D321
-W_BAGITEM03 EQU $D322
-W_BAGITEM03QTY EQU $D323
-W_BAGITEM04 EQU $D324
-W_BAGITEM04QTY EQU $D325
-W_BAGITEM05 EQU $D326
-W_BAGITEM05QTY EQU $D327
-W_BAGITEM06 EQU $D328
-W_BAGITEM06QTY EQU $D329
-W_BAGITEM07 EQU $D32A
-W_BAGITEM07QTY EQU $D32B
-W_BAGITEM08 EQU $D32C
-W_BAGITEM08QTY EQU $D32D
-W_BAGITEM09 EQU $D32E
-W_BAGITEM09QTY EQU $D32F
-W_BAGITEM10 EQU $D330
-W_BAGITEM10QTY EQU $D331
-W_BAGITEM11 EQU $D332
-W_BAGITEM11QTY EQU $D333
-W_BAGITEM12 EQU $D334
-W_BAGITEM12QTY EQU $D335
-W_BAGITEM13 EQU $D336
-W_BAGITEM13QTY EQU $D337
-W_BAGITEM14 EQU $D338
-W_BAGITEM14QTY EQU $D339
-W_BAGITEM15 EQU $D33A
-W_BAGITEM15QTY EQU $D33B
-W_BAGITEM16 EQU $D33C
-W_BAGITEM16QTY EQU $D33D
-W_BAGITEM17 EQU $D33E
-W_BAGITEM17QTY EQU $D33F
-W_BAGITEM18 EQU $D340
-W_BAGITEM18QTY EQU $D341
-W_BAGITEM19 EQU $D342
-W_BAGITEM19QTY EQU $D343
-W_BAGITEM20 EQU $D344
-W_BAGITEM20QTY EQU $D345
-
-; money is in decimal
-W_PLAYERMONEY3 EQU $D347
-W_PLAYERMONEY2 EQU $D348
-W_PLAYERMONEY1 EQU $D349
-
-W_RIVALNAME EQU $D34A ; 11 characters, including null
-
-W_OPTIONS EQU $D355
-; bit 7 = battle animation
-; 0: On
-; 1: Off
-; bit 6 = battle style
-; 0: Shift
-; 1: Set
-; bits 0-3 = text speed (number of frames to delay after printing a letter)
-; 1: Fast
-; 3: Medium
-; 5: Slow
-
-W_OBTAINEDBADGES EQU $D356
-
-W_PLAYERIDHI EQU $D359
-W_PLAYERIDLO EQU $D35A
-
-W_CURMAP EQU $D35E
-
-W_YCOORD EQU $D361 ; player’s position on the current map
-W_XCOORD EQU $D362
-W_YBLOCKCOORD EQU $D363 ; player's y position (by block)
-W_XBLOCKCOORD EQU $D364
-
-W_CURMAPTILESET EQU $D367
-W_CURMAPHEIGHT EQU $D368 ; blocks
-W_CURMAPWIDTH EQU $D369 ; blocks
-
-W_MAPDATAPTR EQU $D36A
-W_MAPTEXTPTR EQU $D36C
-W_MAPSCRIPTPTR EQU $D36E
-W_MAPCONNECTIONS EQU $D370 ; connection byte
-W_MAPCONN1PTR EQU $D371
-W_MAPCONN2PTR EQU $D37C
-W_MAPCONN3PTR EQU $D387
-W_MAPCONN4PTR EQU $D392
-
-W_SPRITESET EQU $D39D ; sprite set for the current map (11 sprite picture ID's)
-W_SPRITESETID EQU $D3A8 ; sprite set ID for the current map
-
-W_NUMSPRITES EQU $D4E1 ; number of sprites on the current map
-
-; two bytes per sprite (movement byte 2 , text ID)
-W_MAPSPRITEDATA EQU $D4e4
-
-; two bytes per sprite (trainer class/item ID , trainer set ID)
-W_MAPSPRITEEXTRADATA EQU $D504
-
-W_TILESETBANK EQU $D52B
-W_TILESETBLOCKSPTR EQU $D52C ; maps blocks (4x4 tiles) to it's tiles
-W_TILESETGFXPTR EQU $D52E
-W_TILESETCOLLISIONPTR EQU $D530 ; list of all walkable tiles
-W_TILESETTALKINGOVERTILES EQU $D532 ; 3 bytes
-W_GRASSTILE EQU $D535
-
-;number of items in box
-W_NUMBOXITEMS EQU $D53A
-; BOXITEM01 is an item id
-; BOXITEM01QTY is how many of this item
-W_BOXITEM01 EQU $D53B
-W_BOXITEM01QTY EQU $D53C
-W_BOXITEM02 EQU $D53D
-W_BOXITEM02QTY EQU $D53E
-W_BOXITEM03 EQU $D53F
-W_BOXITEM03QTY EQU $D540
-W_BOXITEM04 EQU $D541
-W_BOXITEM04QTY EQU $D542
-W_BOXITEM05 EQU $D543
-W_BOXITEM05QTY EQU $D544
-W_BOXITEM06 EQU $D545
-W_BOXITEM06QTY EQU $D546
-W_BOXITEM07 EQU $D547
-W_BOXITEM07QTY EQU $D548
-W_BOXITEM08 EQU $D549
-W_BOXITEM08QTY EQU $D54A
-W_BOXITEM09 EQU $D54B
-W_BOXITEM09QTY EQU $D54C
-W_BOXITEM10 EQU $D54D
-W_BOXITEM10QTY EQU $D54E
-W_BOXITEM11 EQU $D54F
-W_BOXITEM11QTY EQU $D550
-W_BOXITEM12 EQU $D551
-W_BOXITEM12QTY EQU $D552
-W_BOXITEM13 EQU $D553
-W_BOXITEM13QTY EQU $D554
-W_BOXITEM14 EQU $D555
-W_BOXITEM14QTY EQU $D556
-W_BOXITEM15 EQU $D557
-W_BOXITEM15QTY EQU $D558
-W_BOXITEM16 EQU $D559
-W_BOXITEM16QTY EQU $D55A
-W_BOXITEM17 EQU $D55B
-W_BOXITEM17QTY EQU $D55C
-W_BOXITEM18 EQU $D55D
-W_BOXITEM18QTY EQU $D55E
-W_BOXITEM19 EQU $D55F
-W_BOXITEM19QTY EQU $D560
-W_BOXITEM20 EQU $D561
-W_BOXITEM20QTY EQU $D562
-W_BOXITEM21 EQU $D563
-W_BOXITEM21QTY EQU $D564
-W_BOXITEM22 EQU $D565
-W_BOXITEM22QTY EQU $D566
-W_BOXITEM23 EQU $D567
-W_BOXITEM23QTY EQU $D568
-W_BOXITEM24 EQU $D569
-W_BOXITEM24QTY EQU $D56A
-W_BOXITEM25 EQU $D56B
-W_BOXITEM25QTY EQU $D56C
-W_BOXITEM26 EQU $D56D
-W_BOXITEM26QTY EQU $D56E
-W_BOXITEM27 EQU $D56F
-W_BOXITEM27QTY EQU $D570
-W_BOXITEM28 EQU $D571
-W_BOXITEM28QTY EQU $D572
-W_BOXITEM29 EQU $D573
-W_BOXITEM29QTY EQU $D574
-W_BOXITEM30 EQU $D575
-W_BOXITEM30QTY EQU $D576
-W_BOXITEM31 EQU $D577
-W_BOXITEM31QTY EQU $D578
-W_BOXITEM32 EQU $D579
-W_BOXITEM32QTY EQU $D57A
-W_BOXITEM33 EQU $D57B
-W_BOXITEM33QTY EQU $D57C
-W_BOXITEM34 EQU $D57D
-W_BOXITEM34QTY EQU $D57E
-W_BOXITEM35 EQU $D57F
-W_BOXITEM35QTY EQU $D580
-W_BOXITEM36 EQU $D581
-W_BOXITEM36QTY EQU $D582
-W_BOXITEM37 EQU $D583
-W_BOXITEM37QTY EQU $D584
-W_BOXITEM38 EQU $D585
-W_BOXITEM38QTY EQU $D586
-W_BOXITEM39 EQU $D587
-W_BOXITEM39QTY EQU $D588
-W_BOXITEM40 EQU $D589
-W_BOXITEM40QTY EQU $D58A
-W_BOXITEM41 EQU $D58B
-W_BOXITEM41QTY EQU $D58C
-W_BOXITEM42 EQU $D58D
-W_BOXITEM42QTY EQU $D58E
-W_BOXITEM43 EQU $D58F
-W_BOXITEM43QTY EQU $D590
-W_BOXITEM44 EQU $D591
-W_BOXITEM44QTY EQU $D592
-W_BOXITEM45 EQU $D593
-W_BOXITEM45QTY EQU $D594
-W_BOXITEM46 EQU $D595
-W_BOXITEM46QTY EQU $D596
-W_BOXITEM47 EQU $D597
-W_BOXITEM47QTY EQU $D598
-W_BOXITEM48 EQU $D599
-W_BOXITEM48QTY EQU $D59A
-W_BOXITEM49 EQU $D59B
-W_BOXITEM49QTY EQU $D59C
-W_BOXITEM50 EQU $D59D
-W_BOXITEM50QTY EQU $D59E
-;box end of list $D59F
-
-; coins are in decimal
-W_PLAYERCOINS1 EQU $D5A4
-W_PLAYERCOINS2 EQU $D5A5
-W_MISSABLEOBJECTFLAGS EQU $D5A6 ; $20 bytes, bit array of missable objects. bit 1 = removed
-
-; each entry consists of 2 bytes
-; * the sprite ID (depending on the current map)
-; * the missable object index (global, used for W_MISSABLEOBJECTFLAGS)
-; terminated with $FF
-W_MISSABLEOBJECTLIST EQU $D5CE
-
-W_GAMEPROGRESSFLAGS EQU $D5F0 ; $c8 bytes
-W_OAKSLABCURSCRIPT EQU $D5F0
-W_PALLETTOWNCURSCRIPT EQU $D5F1
-
-W_BLUESHOUSECURSCRIPT EQU $D5F3
-W_VIRIDIANCITYCURSCRIPT EQU $D5F4
-
-W_PEWTERCITYCURSCRIPT EQU $D5F7
-W_ROUTE3CURSCRIPT EQU $D5F8
-W_ROUTE4CURSCRIPT EQU $D5F9
-
-W_VIRIDIANGYMCURSCRIPT EQU $D5FB
-W_PEWTERGYMCURSCRIPT EQU $D5FC
-W_CERULEANGYMCURSCRIPT EQU $D5FD
-W_VERMILIONGYMCURSCRIPT EQU $D5FE
-W_CELADONGYMCURSCRIPT EQU $D5FF
-W_ROUTE6CURSCRIPT EQU $D600
-W_ROUTE8CURSCRIPT EQU $D601
-W_ROUTE24CURSCRIPT EQU $D602
-W_ROUTE25CURSCRIPT EQU $D603
-W_ROUTE9CURSCRIPT EQU $D604
-W_ROUTE10CURSCRIPT EQU $D605
-W_MTMOON1CURSCRIPT EQU $D606
-W_MTMOON3CURSCRIPT EQU $D607
-W_SSANNE8CURSCRIPT EQU $D608
-W_SSANNE9CURSCRIPT EQU $D609
-W_ROUTE22CURSCRIPT EQU $D60A
-
-W_REDSHOUSE2CURSCRIPT EQU $D60C
-W_VIRIDIANMARKETCURSCRIPT EQU $D60D
-W_ROUTE22GATECURSCRIPT EQU $D60E
-W_CERULEANCITYCURSCRIPT EQU $D60F
-
-W_SSANNE5CURSCRIPT EQU $D617
-W_VIRIDIANFORESTCURSCRIPT EQU $D618
-W_MUSEUMF1CURSCRIPT EQU $D619
-W_ROUTE13CURSCRIPT EQU $D61A
-W_ROUTE14CURSCRIPT EQU $D61B
-W_ROUTE17CURSCRIPT EQU $D61C
-W_ROUTE19CURSCRIPT EQU $D61D
-W_ROUTE21CURSCRIPT EQU $D61E
-W_SAFARIZONEENTRANCECURSCRIPT EQU $D61F
-W_ROCKTUNNEL2CURSCRIPT EQU $D620
-W_ROCKTUNNEL1CURSCRIPT EQU $D621
-
-W_ROUTE11CURSCRIPT EQU $D623
-W_ROUTE12CURSCRIPT EQU $D624
-W_ROUTE15CURSCRIPT EQU $D625
-W_ROUTE16CURSCRIPT EQU $D626
-W_ROUTE18CURSCRIPT EQU $D627
-W_ROUTE20CURSCRIPT EQU $D628
-W_SSANNE10CURSCRIPT EQU $D629
-W_VERMILIONCITYCURSCRIPT EQU $D62A
-W_POKEMONTOWER2CURSCRIPT EQU $D62B
-W_POKEMONTOWER3CURSCRIPT EQU $D62C
-W_POKEMONTOWER4CURSCRIPT EQU $D62D
-W_POKEMONTOWER5CURSCRIPT EQU $D62E
-W_POKEMONTOWER6CURSCRIPT EQU $D62F
-W_POKEMONTOWER7CURSCRIPT EQU $D630
-W_ROCKETHIDEOUT1CURSCRIPT EQU $D631
-W_ROCKETHIDEOUT2CURSCRIPT EQU $D632
-W_ROCKETHIDEOUT3CURSCRIPT EQU $D633
-W_ROCKETHIDEOUT4CURSCRIPT EQU $D634
-
-W_ROUTE6GATECURSCRIPT EQU $D636
-W_ROUTE8GATECURSCRIPT EQU $D637
-
-W_CINNABARISLANDCURSCRIPT EQU $D639
-W_MANSION1CURSCRIPT EQU $D63A
-
-W_MANSION2CURSCRIPT EQU $D63C
-W_MANSION3CURSCRIPT EQU $D63D
-W_MANSION4CURSCRIPT EQU $D63E
-W_VICTORYROAD2CURSCRIPT EQU $D63F
-W_VICTORYROAD3CURSCRIPT EQU $D640
-
-W_FIGHTINGDOJOCURSCRIPT EQU $D642
-W_SILPHCO2CURSCRIPT EQU $D643
-W_SILPHCO3CURSCRIPT EQU $D644
-W_SILPHCO4CURSCRIPT EQU $D645
-W_SILPHCO5CURSCRIPT EQU $D646
-W_SILPHCO6CURSCRIPT EQU $D647
-W_SILPHCO7CURSCRIPT EQU $D648
-W_SILPHCO8CURSCRIPT EQU $D649
-W_SILPHCO9CURSCRIPT EQU $D64A
-W_HALLOFFAMEROOMCURSCRIPT EQU $D64B
-W_GARYCURSCRIPT EQU $D64C
-W_LORELEICURSCRIPT EQU $D64D
-W_BRUNOCURSCRIPT EQU $D64E
-W_AGATHACURSCRIPT EQU $D64F
-W_UNKNOWNDUNGEON3CURSCRIPT EQU $D650
-W_VICTORYROAD1CURSCRIPT EQU $D651
-
-W_LANCECURSCRIPT EQU $D653
-
-W_SILPHCO10CURSCRIPT EQU $D658
-W_SILPHCO11CURSCRIPT EQU $D659
-
-W_FUCHSIAGYMCURSCRIPT EQU $D65B
-W_SAFFRONGYMCURSCRIPT EQU $D65C
-
-W_CINNABARGYMCURSCRIPT EQU $D65E
-W_CELADONGAMECORNERCURSCRIPT EQU $D65F
-W_ROUTE16GATECURSCRIPT EQU $D660
-W_BILLSHOUSECURSCRIPT EQU $D661
-W_ROUTE5GATECURSCRIPT EQU $D662
-W_POWERPLANTCURSCRIPT EQU $D663 ; overload
-W_ROUTE7GATECURSCRIPT EQU $D663 ; overload
-
-W_SSANNE2CURSCRIPT EQU $D665
-W_SEAFOAMISLANDS4CURSCRIPT EQU $D666
-W_ROUTE23CURSCRIPT EQU $D667
-W_SEAFOAMISLANDS5CURSCRIPT EQU $D668
-W_ROUTE18GATECURSCRIPT EQU $D669
-
-W_TOWNVISITEDFLAG EQU $D70B ; 2 bytes bit array, 1 means visited
-
-W_SAFARITIMER1 EQU $D70D ; use 01 for maximum
-W_SAFARITIMER2 EQU $D70E ; use F4 for maximum
-W_FOSSILITEM EQU $D70F ; item given to cinnabar lab
-W_FOSSILMON EQU $D710 ; mon that will result from the item
-
-W_ENEMYMONORTRAINERCLASS EQU $D713 ; trainer classes start at $c8
-
-W_RIVALSTARTER EQU $D715
-
-W_PLAYERSTARTER EQU $D717
-
-; bit 4: use variable [W_CURMAPSCRIPT] instead of the provided index for next frame's map script (used to start battle when talking to trainers)
-W_FLAGS_D733 EQU $D733
-
-
-W_GRASSRATE EQU $D887
-W_GRASSMONS EQU $D888
-W_WATERRATE EQU $D8A4 ; OVERLOADED
-W_WATERMONS EQU $D8A5 ; OVERLOADED
-
-W_ENEMYMONCOUNT EQU $D89C
-
-W_ENEMYMON1HP EQU $D8A5 ; 16 bits
-
-W_ENEMYMON1MOVE3 EQU $D8AE
-
-W_ENEMYMON2MOVE3 EQU $D8DA
-
-W_ENEMYMON3MOVE3 EQU $D906
-
-W_ENEMYMON4MOVE3 EQU $D932
-
-W_ENEMYMON5MOVE3 EQU $D95E
-
-W_ENEMYMON6MOVE3 EQU $D98A
-
-W_ENEMYMON1OT EQU $D9AC
-W_ENEMYMON2OT EQU $D9B7
-W_ENEMYMON3OT EQU $D9C2
-W_ENEMYMON4OT EQU $D9CD
-W_ENEMYMON5OT EQU $D9D8
-W_ENEMYMON6OT EQU $D9E3
-
-W_ENEMYMON1NAME EQU $D9EE
-W_ENEMYMON2NAME EQU $D9F9
-W_ENEMYMON3NAME EQU $DA04
-W_ENEMYMON4NAME EQU $DA0F
-W_ENEMYMON5NAME EQU $DA1A
-W_ENEMYMON6NAME EQU $DA25 ; to $da2f
-W_TRAINERHEADERPTR EQU $DA30
-
-; index of current map script, mostly used as index for function pointer array
-; mostly copied from map-specific map script pointer and wirtten back later
-W_CURMAPSCRIPT EQU $DA39
-
-W_PLAYTIMEHOURS EQU $DA40 ; two bytes
-W_PLAYTIMEMINUTES EQU $DA42 ; two bytes
-W_PLAYTIMESECONDS EQU $DA44 ; one byte
-W_PLAYTIMEFRAMES EQU $DA45 ; one byte
-
-W_NUMSAFARIBALLS EQU $DA47
-
-; number of mons in current box
-W_NUMINBOX EQU $DA80
-W_BOXMON1DATA EQU $DA96
-W_BOXMON2DATA EQU $DAB7
-
-
-H_SOFTRESETCOUNTER EQU $FF8A ; initialized to 16, decremented each input iteration if the user presses the reset sequence (A+B+S+s). Soft reset when 0 is reached.
-
-; counters for blinking down arrow
-H_DOWNARROWBLINKCNT1 EQU $FF8B
-H_DOWNARROWBLINKCNT2 EQU $FF8C
-
-; Note: the following multiplication and division addresses are used for multiple purposes
-; and so they overlap with each other
-
-H_MULTIPLICAND EQU $FF96 ; 3 bytes, big endian order
-H_MULTIPLIER EQU $FF99 ; 1 byte
-H_PRODUCT EQU $FF95 ; 4 bytes, big endian order
-
-H_DIVIDEND EQU $FF95 ; 4 bytes, big endian order
-H_DIVISOR EQU $FF99 ; 1 byte
-H_QUOTIENT EQU $FF95 ; 4 bytes, big endian order
-H_REMAINDER EQU $FF99 ; 1 byte
-
-; used to convert numbers to decimal
-H_PASTLEADINGZEROES EQU $FF95 ; flag to indicate that a nonzero digit has been printed
-H_NUMTOPRINT EQU $FF96 ; 3 bytes, big endian order
-H_POWEROFTEN EQU $FF99 ; 3 bytes, big endian order
-H_SAVEDNUMTOPRINT EQU $FF9C ; 3 bytes, big endian order (to back out of a subtraction)
-
-H_OLDPRESSEDBUTTONS EQU $FFB1
-H_NEWLYRELEASEDBUTTONS EQU $FFB2
-H_NEWLYPRESSEDBUTTONS EQU $FFB3
-H_CURRENTPRESSEDBUTTONS EQU $FFB4
-
-H_LOADEDROMBANK EQU $FFB8
-
-; is automatic background transfer during V-blank enabled?
-; if nonzero, yes
-; if zero, no
-H_AUTOBGTRANSFERENABLED EQU $FFBA
-
-TRANSFERTOP EQU 0
-TRANSFERMIDDLE EQU 1
-TRANSFERBOTTOM EQU 2
-
-; 00 = top third of background
-; 01 = middle third of background
-; 02 = bottom third of background
-H_AUTOBGTRANSFERPORTION EQU $FFBB
-
-; the destination address of the automatic background transfer
-H_AUTOBGTRANSFERDEST EQU $FFBC ; 2 bytes
-
-; temporary storage for stack pointer during memory transfers that use pop
-; to increase speed
-H_SPTEMP EQU $FFBF ; 2 bytes
-
-; source address for VBlankCopyBgMap function
-; the first byte doubles as the byte that enabled the transfer.
-; if it is 0, the transfer is disabled
-; if it is not 0, the transfer is enabled
-; this means that XX00 is not a valid source address
-H_VBCOPYBGSRC EQU $FFC1 ; 2 bytes
-
-; destination address for VBlankCopyBgMap function
-H_VBCOPYBGDEST EQU $FFC3 ; 2 bytes
-
-; number of rows for VBlankCopyBgMap to copy
-H_VBCOPYBGNUMROWS EQU $FFC5
-
-; size of VBlankCopy transfer in 16-byte units
-H_VBCOPYSIZE EQU $FFC6
-
-; source address for VBlankCopy function
-H_VBCOPYSRC EQU $FFC7
-
-; destination address for VBlankCopy function
-H_VBCOPYDEST EQU $FFC9
-
-; size of source data for VBlankCopyDouble in 8-byte units
-H_VBCOPYDOUBLESIZE EQU $FFCB
-
-; source address for VBlankCopyDouble function
-H_VBCOPYDOUBLESRC EQU $FFCC
-
-; destination address for VBlankCopyDouble function
-H_VBCOPYDOUBLEDEST EQU $FFCE
-
-; controls whether a row or column of 2x2 tile blocks is redrawn in V-blank
-; 00 = no redraw
-; 01 = redraw column
-; 02 = redraw row
-H_SCREENEDGEREDRAW EQU $FFD0
-
-REDRAWCOL EQU 1
-REDRAWROW EQU 2
-
-H_SCREENEDGEREDRAWADDR EQU $FFD1
-
-H_RAND1 EQU $FFD3
-H_RAND2 EQU $FFD4
-
-H_FRAMECOUNTER EQU $FFD5 ; decremented every V-blank (used for delays)
-
-; V-blank sets this to 0 each time it runs.
-; So, by setting it to a nonzero value and waiting for it to become 0 again,
-; you can detect that the V-blank handler has run since then.
-H_VBLANKOCCURRED EQU $FFD6
-
-H_CURRENTSPRITEOFFSET EQU $FFDA ; multiple of $10
-
-H_WHOSETURN EQU $FFF3 ; 0 on player’s turn, 1 on enemy’s turn
-
-H_JOYPADSTATE EQU $FFF8
-
; hardware registers, from the pandocs http://nocash.emubase.de/pandocs.htm
rJOYP EQU $FF00
-rDIV EQU $FF04
+rDIV EQU $FF04
rLCDC EQU $FF40
-rSCY EQU $FF42
-rSCX EQU $FF43
-rBGP EQU $FF47
+rSCY EQU $FF42
+rSCX EQU $FF43
+rBGP EQU $FF47
rOBP0 EQU $FF48
rOBP1 EQU $FF49
-rWY EQU $FF4A
-rWX EQU $FF4B
-rIE EQU $FFFF
+rWY EQU $FF4A
+rWX EQU $FF4B
+rIE EQU $FFFF
BTN_A EQU %00000001
BTN_B EQU %00000010
@@ -1307,1105 +55,72 @@
ITEMLISTMENU EQU $03 ; Start menu Item menu / Pokemart sell menu
SPECIALLISTMENU EQU $04 ; list of special "items" e.g. floor list in elevators / list of badges
-; pokemon name constants
-RHYDON EQU $01
-KANGASKHAN EQU $02
-NIDORAN_M EQU $03
-CLEFAIRY EQU $04
-SPEAROW EQU $05
-VOLTORB EQU $06
-NIDOKING EQU $07
-SLOWBRO EQU $08
-IVYSAUR EQU $09
-EXEGGUTOR EQU $0A
-LICKITUNG EQU $0B
-EXEGGCUTE EQU $0C
-GRIMER EQU $0D
-GENGAR EQU $0E
-NIDORAN_F EQU $0F
-NIDOQUEEN EQU $10
-CUBONE EQU $11
-RHYHORN EQU $12
-LAPRAS EQU $13
-ARCANINE EQU $14
-MEW EQU $15
-GYARADOS EQU $16
-SHELLDER EQU $17
-TENTACOOL EQU $18
-GASTLY EQU $19
-SCYTHER EQU $1A
-STARYU EQU $1B
-BLASTOISE EQU $1C
-PINSIR EQU $1D
-TANGELA EQU $1E
-GROWLITHE EQU $21
-ONIX EQU $22
-FEAROW EQU $23
-PIDGEY EQU $24
-SLOWPOKE EQU $25
-KADABRA EQU $26
-GRAVELER EQU $27
-CHANSEY EQU $28
-MACHOKE EQU $29
-MR_MIME EQU $2A
-HITMONLEE EQU $2B
-HITMONCHAN EQU $2C
-ARBOK EQU $2D
-PARASECT EQU $2E
-PSYDUCK EQU $2F
-DROWZEE EQU $30
-GOLEM EQU $31
-MAGMAR EQU $33
-ELECTABUZZ EQU $35
-MAGNETON EQU $36
-KOFFING EQU $37
-MANKEY EQU $39
-SEEL EQU $3A
-DIGLETT EQU $3B
-TAUROS EQU $3C
-FARFETCH_D EQU $40
-VENONAT EQU $41
-DRAGONITE EQU $42
-DODUO EQU $46
-POLIWAG EQU $47
-JYNX EQU $48
-MOLTRES EQU $49
-ARTICUNO EQU $4A
-ZAPDOS EQU $4B
-DITTO EQU $4C
-MEOWTH EQU $4D
-KRABBY EQU $4E
-VULPIX EQU $52
-NINETALES EQU $53
-PIKACHU EQU $54
-RAICHU EQU $55
-DRATINI EQU $58
-DRAGONAIR EQU $59
-KABUTO EQU $5A
-KABUTOPS EQU $5B
-HORSEA EQU $5C
-SEADRA EQU $5D
-SANDSHREW EQU $60
-SANDSLASH EQU $61
-OMANYTE EQU $62
-OMASTAR EQU $63
-JIGGLYPUFF EQU $64
-WIGGLYTUFF EQU $65
-EEVEE EQU $66
-FLAREON EQU $67
-JOLTEON EQU $68
-VAPOREON EQU $69
-MACHOP EQU $6A
-ZUBAT EQU $6B
-EKANS EQU $6C
-PARAS EQU $6D
-POLIWHIRL EQU $6E
-POLIWRATH EQU $6F
-WEEDLE EQU $70
-KAKUNA EQU $71
-BEEDRILL EQU $72
-DODRIO EQU $74
-PRIMEAPE EQU $75
-DUGTRIO EQU $76
-VENOMOTH EQU $77
-DEWGONG EQU $78
-CATERPIE EQU $7B
-METAPOD EQU $7C
-BUTTERFREE EQU $7D
-MACHAMP EQU $7E
-GOLDUCK EQU $80
-HYPNO EQU $81
-GOLBAT EQU $82
-MEWTWO EQU $83
-SNORLAX EQU $84
-MAGIKARP EQU $85
-MUK EQU $88
-KINGLER EQU $8A
-CLOYSTER EQU $8B
-ELECTRODE EQU $8D
-CLEFABLE EQU $8E
-WEEZING EQU $8F
-PERSIAN EQU $90
-MAROWAK EQU $91
-HAUNTER EQU $93
-ABRA EQU $94
-ALAKAZAM EQU $95
-PIDGEOTTO EQU $96
-PIDGEOT EQU $97
-STARMIE EQU $98
-BULBASAUR EQU $99
-VENUSAUR EQU $9A
-TENTACRUEL EQU $9B
-GOLDEEN EQU $9D
-SEAKING EQU $9E
-PONYTA EQU $A3
-RAPIDASH EQU $A4
-RATTATA EQU $A5
-RATICATE EQU $A6
-NIDORINO EQU $A7
-NIDORINA EQU $A8
-GEODUDE EQU $A9
-PORYGON EQU $AA
-AERODACTYL EQU $AB
-MAGNEMITE EQU $AD
-CHARMANDER EQU $B0
-SQUIRTLE EQU $B1
-CHARMELEON EQU $B2
-WARTORTLE EQU $B3
-CHARIZARD EQU $B4
-FOSSIL_KABUTOPS EQU $B6
-FOSSIL_AERODACTYL EQU $B7
-MON_GHOST EQU $B8
-ODDISH EQU $B9
-GLOOM EQU $BA
-VILEPLUME EQU $BB
-BELLSPROUT EQU $BC
-WEEPINBELL EQU $BD
-VICTREEBEL EQU $BE
+INCLUDE "constants/pokemon_constants.asm"
+INCLUDE "constants/trainer_constants.asm"
+INCLUDE "constants/pokedex_constants.asm"
+INCLUDE "constants/item_constants.asm"
-; trainer name constants
-; sometimes it's necessary to add $C8 to these values
-YOUNGSTER EQU $01
-BUG_CATCHER EQU $02
-LASS EQU $03
-SAILOR EQU $04
-JR__TRAINER_M EQU $05
-JR__TRAINER_F EQU $06
-POKEMANIAC EQU $07
-SUPER_NERD EQU $08
-HIKER EQU $09
-BIKER EQU $0A
-BURGLAR EQU $0B
-ENGINEER EQU $0C
-JUGGLER_X EQU $0D
-FISHER EQU $0E
-SWIMMER EQU $0F
-CUE_BALL EQU $10
-GAMBLER EQU $11
-BEAUTY EQU $12
-PSYCHIC_TR EQU $13
-ROCKER EQU $14
-JUGGLER EQU $15
-TAMER EQU $16
-BIRD_KEEPER EQU $17
-BLACKBELT EQU $18
-SONY1 EQU $19
-PROF_OAK EQU $1A
-CHIEF EQU $1B
-SCIENTIST EQU $1C
-GIOVANNI EQU $1D
-ROCKET EQU $1E
-COOLTRAINER_M EQU $1F
-COOLTRAINER_F EQU $20
-BRUNO EQU $21
-BROCK EQU $22
-MISTY EQU $23
-LT__SURGE EQU $24
-ERIKA EQU $25
-KOGA EQU $26
-BLAINE EQU $27
-SABRINA EQU $28
-GENTLEMAN EQU $29
-SONY2 EQU $2A
-SONY3 EQU $2B
-LORELEI EQU $2C
-CHANNELER EQU $2D
-AGATHA EQU $2E
-LANCE EQU $2F
+INCLUDE "constants/move_constants.asm"
+INCLUDE "constants/move_effect_constants.asm"
-; pokemon dex numbers
-DEX_BULBASAUR EQU 1
-DEX_IVYSAUR EQU 2
-DEX_VENUSAUR EQU 3
-DEX_CHARMANDER EQU 4
-DEX_CHARMELEON EQU 5
-DEX_CHARIZARD EQU 6
-DEX_SQUIRTLE EQU 7
-DEX_WARTORTLE EQU 8
-DEX_BLASTOISE EQU 9
-DEX_CATERPIE EQU 10
-DEX_METAPOD EQU 11
-DEX_BUTTERFREE EQU 12
-DEX_WEEDLE EQU 13
-DEX_KAKUNA EQU 14
-DEX_BEEDRILL EQU 15
-DEX_PIDGEY EQU 16
-DEX_PIDGEOTTO EQU 17
-DEX_PIDGEOT EQU 18
-DEX_RATTATA EQU 19
-DEX_RATICATE EQU 20
-DEX_SPEAROW EQU 21
-DEX_FEAROW EQU 22
-DEX_EKANS EQU 23
-DEX_ARBOK EQU 24
-DEX_PIKACHU EQU 25
-DEX_RAICHU EQU 26
-DEX_SANDSHREW EQU 27
-DEX_SANDSLASH EQU 28
-DEX_NIDORAN_F EQU 29
-DEX_NIDORINA EQU 30
-DEX_NIDOQUEEN EQU 31
-DEX_NIDORAN_M EQU 32
-DEX_NIDORINO EQU 33
-DEX_NIDOKING EQU 34
-DEX_CLEFAIRY EQU 35
-DEX_CLEFABLE EQU 36
-DEX_VULPIX EQU 37
-DEX_NINETALES EQU 38
-DEX_JIGGLYPUFF EQU 39
-DEX_WIGGLYTUFF EQU 40
-DEX_ZUBAT EQU 41
-DEX_GOLBAT EQU 42
-DEX_ODDISH EQU 43
-DEX_GLOOM EQU 44
-DEX_VILEPLUME EQU 45
-DEX_PARAS EQU 46
-DEX_PARASECT EQU 47
-DEX_VENONAT EQU 48
-DEX_VENOMOTH EQU 49
-DEX_DIGLETT EQU 50
-DEX_DUGTRIO EQU 51
-DEX_MEOWTH EQU 52
-DEX_PERSIAN EQU 53
-DEX_PSYDUCK EQU 54
-DEX_GOLDUCK EQU 55
-DEX_MANKEY EQU 56
-DEX_PRIMEAPE EQU 57
-DEX_GROWLITHE EQU 58
-DEX_ARCANINE EQU 59
-DEX_POLIWAG EQU 60
-DEX_POLIWHIRL EQU 61
-DEX_POLIWRATH EQU 62
-DEX_ABRA EQU 63
-DEX_KADABRA EQU 64
-DEX_ALAKAZAM EQU 65
-DEX_MACHOP EQU 66
-DEX_MACHOKE EQU 67
-DEX_MACHAMP EQU 68
-DEX_BELLSPROUT EQU 69
-DEX_WEEPINBELL EQU 70
-DEX_VICTREEBEL EQU 71
-DEX_TENTACOOL EQU 72
-DEX_TENTACRUEL EQU 73
-DEX_GEODUDE EQU 74
-DEX_GRAVELER EQU 75
-DEX_GOLEM EQU 76
-DEX_PONYTA EQU 77
-DEX_RAPIDASH EQU 78
-DEX_SLOWPOKE EQU 79
-DEX_SLOWBRO EQU 80
-DEX_MAGNEMITE EQU 81
-DEX_MAGNETON EQU 82
-DEX_FARFETCH_D EQU 83
-DEX_DODUO EQU 84
-DEX_DODRIO EQU 85
-DEX_SEEL EQU 86
-DEX_DEWGONG EQU 87
-DEX_GRIMER EQU 88
-DEX_MUK EQU 89
-DEX_SHELLDER EQU 90
-DEX_CLOYSTER EQU 91
-DEX_GASTLY EQU 92
-DEX_HAUNTER EQU 93
-DEX_GENGAR EQU 94
-DEX_ONIX EQU 95
-DEX_DROWZEE EQU 96
-DEX_HYPNO EQU 97
-DEX_KRABBY EQU 98
-DEX_KINGLER EQU 99
-DEX_VOLTORB EQU 100
-DEX_ELECTRODE EQU 101
-DEX_EXEGGCUTE EQU 102
-DEX_EXEGGUTOR EQU 103
-DEX_CUBONE EQU 104
-DEX_MAROWAK EQU 105
-DEX_HITMONLEE EQU 106
-DEX_HITMONCHAN EQU 107
-DEX_LICKITUNG EQU 108
-DEX_KOFFING EQU 109
-DEX_WEEZING EQU 110
-DEX_RHYHORN EQU 111
-DEX_RHYDON EQU 112
-DEX_CHANSEY EQU 113
-DEX_TANGELA EQU 114
-DEX_KANGASKHAN EQU 115
-DEX_HORSEA EQU 116
-DEX_SEADRA EQU 117
-DEX_GOLDEEN EQU 118
-DEX_SEAKING EQU 119
-DEX_STARYU EQU 120
-DEX_STARMIE EQU 121
-DEX_MR_MIME EQU 122
-DEX_SCYTHER EQU 123
-DEX_JYNX EQU 124
-DEX_ELECTABUZZ EQU 125
-DEX_MAGMAR EQU 126
-DEX_PINSIR EQU 127
-DEX_TAUROS EQU 128
-DEX_MAGIKARP EQU 129
-DEX_GYARADOS EQU 130
-DEX_LAPRAS EQU 131
-DEX_DITTO EQU 132
-DEX_EEVEE EQU 133
-DEX_VAPOREON EQU 134
-DEX_JOLTEON EQU 135
-DEX_FLAREON EQU 136
-DEX_PORYGON EQU 137
-DEX_OMANYTE EQU 138
-DEX_OMASTAR EQU 139
-DEX_KABUTO EQU 140
-DEX_KABUTOPS EQU 141
-DEX_AERODACTYL EQU 142
-DEX_SNORLAX EQU 143
-DEX_ARTICUNO EQU 144
-DEX_ZAPDOS EQU 145
-DEX_MOLTRES EQU 146
-DEX_DRATINI EQU 147
-DEX_DRAGONAIR EQU 148
-DEX_DRAGONITE EQU 149
-DEX_MEWTWO EQU 150
-DEX_MEW EQU 151
-
-
-; item name constants
-MASTER_BALL EQU $01
-ULTRA_BALL EQU $02
-GREAT_BALL EQU $03
-POKE_BALL EQU $04
-TOWN_MAP EQU $05
-BICYCLE EQU $06
-SURFBOARD EQU $07 ; buggy?
-SAFARI_BALL EQU $08
-POKEDEX EQU $09
-MOON_STONE EQU $0A
-ANTIDOTE EQU $0B
-BURN_HEAL EQU $0C
-ICE_HEAL EQU $0D
-AWAKENING EQU $0E
-PARLYZ_HEAL EQU $0F
-FULL_RESTORE EQU $10
-MAX_POTION EQU $11
-HYPER_POTION EQU $12
-SUPER_POTION EQU $13
-POTION EQU $14
-BOULDERBADGE EQU $15
-CASCADEBADGE EQU $16
-THUNDERBADGE EQU $17
-RAINBOWBADGE EQU $18
-SOULBADGE EQU $19
-MARSHBADGE EQU $1A
-VOLCANOBADGE EQU $1B
-EARTHBADGE EQU $1C
-ESCAPE_ROPE EQU $1D
-REPEL EQU $1E
-OLD_AMBER EQU $1F
-FIRE_STONE EQU $20
-THUNDER_STONE EQU $21
-WATER_STONE EQU $22
-HP_UP EQU $23
-PROTEIN EQU $24
-IRON EQU $25
-CARBOS EQU $26
-CALCIUM EQU $27
-RARE_CANDY EQU $28
-DOME_FOSSIL EQU $29
-HELIX_FOSSIL EQU $2A
-SECRET_KEY EQU $2B
-; XXX ????? EQU $2C
-BIKE_VOUCHER EQU $2D
-X_ACCURACY EQU $2E
-LEAF_STONE EQU $2F
-CARD_KEY EQU $30
-NUGGET EQU $31
-;PP_UP EQU $32
-POKE_DOLL EQU $33
-FULL_HEAL EQU $34
-REVIVE EQU $35
-MAX_REVIVE EQU $36
-GUARD_SPEC_ EQU $37
-SUPER_REPEL EQU $38
-MAX_REPEL EQU $39
-DIRE_HIT EQU $3A
-COIN EQU $3B
-FRESH_WATER EQU $3C
-SODA_POP EQU $3D
-LEMONADE EQU $3E
-S_S__TICKET EQU $3F
-GOLD_TEETH EQU $40
-X_ATTACK EQU $41
-X_DEFEND EQU $42
-X_SPEED EQU $43
-X_SPECIAL EQU $44
-COIN_CASE EQU $45
-OAKS_PARCEL EQU $46
-ITEMFINDER EQU $47
-SILPH_SCOPE EQU $48
-POKE_FLUTE EQU $49
-LIFT_KEY EQU $4A
-EXP__ALL EQU $4B
-OLD_ROD EQU $4C
-GOOD_ROD EQU $4D
-SUPER_ROD EQU $4E
-; XXX todo: compare this to $32
-PP_UP EQU $4F
-ETHER EQU $50
-MAX_ETHER EQU $51
-ELIXER EQU $52
-MAX_ELIXER EQU $53
-HM_01 EQU $C4
-HM_02 EQU $C5
-HM_03 EQU $C6
-HM_04 EQU $C7
-HM_05 EQU $C8
-TM_01 EQU $C9
-TM_02 EQU $CA
-TM_03 EQU $CB
-TM_04 EQU $CC
-TM_05 EQU $CD
-TM_06 EQU $CE
-TM_07 EQU $CF
-TM_08 EQU $D0
-TM_09 EQU $D1
-TM_10 EQU $D2
-TM_11 EQU $D3
-TM_12 EQU $D4
-TM_13 EQU $D5
-TM_14 EQU $D6
-TM_15 EQU $D7
-TM_16 EQU $D8
-TM_17 EQU $D9
-TM_18 EQU $DA
-TM_19 EQU $DB
-TM_20 EQU $DC
-TM_21 EQU $DD
-TM_22 EQU $DE
-TM_23 EQU $DF
-TM_24 EQU $E0
-TM_25 EQU $E1
-TM_26 EQU $E2
-TM_27 EQU $E3
-TM_28 EQU $E4
-TM_29 EQU $E5
-TM_30 EQU $E6
-TM_31 EQU $E7
-TM_32 EQU $E8
-TM_33 EQU $E9
-TM_34 EQU $EA
-TM_35 EQU $EB
-TM_36 EQU $EC
-TM_37 EQU $ED
-TM_38 EQU $EE
-TM_39 EQU $EF
-TM_40 EQU $F0
-TM_41 EQU $F1
-TM_42 EQU $F2
-TM_43 EQU $F3
-TM_44 EQU $F4
-TM_45 EQU $F5
-TM_46 EQU $F6
-TM_47 EQU $F7
-TM_48 EQU $F8
-TM_49 EQU $F9
-TM_50 EQU $FA
-
-; tentative move effect constants
-; {stat}_(UP|DOWN)(1|2) means that the move raises the user's (or lowers the target's) corresponding stat modifier by 1 (or 2) stages
-; {status condition}_side_effect means that the move has a side chance of causing that condition
-; {status condition}_effect means that the move causes the status condition every time it hits the target
-NO_ADDITIONAL_EFFECT EQU $00
-POISON_SIDE_EFFECT1 EQU $02
-DRAIN_HP_EFFECT EQU $03
-BURN_SIDE_EFFECT1 EQU $04
-FREEZE_SIDE_EFFECT EQU $05
-PARALYZE_SIDE_EFFECT1 EQU $06
-EXPLODE_EFFECT EQU $07 ; Explosion, Self Destruct
-DREAM_EATER_EFFECT EQU $08
-MIRROR_MOVE_EFFECT EQU $09
-ATTACK_UP1_EFFECT EQU $0A
-DEFENSE_UP1_EFFECT EQU $0B
-SPECIAL_UP1_EFFECT EQU $0D
-EVASION_UP1_EFFECT EQU $0F
-PAY_DAY_EFFECT EQU $10
-SWIFT_EFFECT EQU $11
-ATTACK_DOWN1_EFFECT EQU $12
-DEFENSE_DOWN1_EFFECT EQU $13
-SPEED_DOWN1_EFFECT EQU $14
-ACCURACY_DOWN1_EFFECT EQU $16
-CONVERSION_EFFECT EQU $18
-HAZE_EFFECT EQU $19
-BIDE_EFFECT EQU $1A
-THRASH_PETAL_DANCE_EFFECT EQU $1B
-SWITCH_AND_TELEPORT_EFFECT EQU $1C
-TWO_TO_FIVE_ATTACKS_EFFECT EQU $1D
-FLINCH_SIDE_EFFECT1 EQU $1F
-SLEEP_EFFECT EQU $20
-POISON_SIDE_EFFECT2 EQU $21
-BURN_SIDE_EFFECT2 EQU $22
-PARALYZE_SIDE_EFFECT2 EQU $24
-FLINCH_SIDE_EFFECT2 EQU $25
-OHKO_EFFECT EQU $26 ; moves like Horn Drill
-CHARGE_EFFECT EQU $27 ; moves like Solar Beam
-SUPER_FANG_EFFECT EQU $28
-SPECIAL_DAMAGE_EFFECT EQU $29 ; Seismic Toss, Night Shade, Sonic Boom, Dragon Rage, Psywave
-TRAPPING_EFFECT EQU $2A ; moves like Wrap
-FLY_EFFECT EQU $2B
-ATTACK_TWICE_EFFECT EQU $2C
-JUMP_KICK_EFFECT EQU $2D ; Jump Kick and Hi Jump Kick effect
-MIST_EFFECT EQU $2E
-FOCUS_ENERGY_EFFECT EQU $2F
-RECOIL_EFFECT EQU $30 ; moves like Double Edge
-CONFUSION_EFFECT EQU $31 ; Confuse Ray, Supersonic (not the move Confusion)
-ATTACK_UP2_EFFECT EQU $32
-DEFENSE_UP2_EFFECT EQU $33
-SPEED_UP2_EFFECT EQU $34
-SPECIAL_UP2_EFFECT EQU $35
-HEAL_EFFECT EQU $38 ; Recover, Softboiled, Rest
-TRANSFORM_EFFECT EQU $39
-DEFENSE_DOWN2_EFFECT EQU $3B
-LIGHT_SCREEN_EFFECT EQU $40
-REFLECT_EFFECT EQU $41
-POISON_EFFECT EQU $42
-PARALYZE_EFFECT EQU $43
-ATTACK_DOWN_SIDE_EFFECT EQU $44
-DEFENSE_DOWN_SIDE_EFFECT EQU $45
-SPEED_DOWN_SIDE_EFFECT EQU $46
-SPECIAL_DOWN_SIDE_EFFECT EQU $47
-CONFUSION_SIDE_EFFECT EQU $4C
-TWINEEDLE_EFFECT EQU $4D
-SUBSTITUTE_EFFECT EQU $4F
-HYPER_BEAM_EFFECT EQU $50
-RAGE_EFFECT EQU $51
-MIMIC_EFFECT EQU $52
-METRONOME_EFFECT EQU $53
-LEECH_SEED_EFFECT EQU $54
-SPLASH_EFFECT EQU $55
-DISABLE_EFFECT EQU $56
-
; fixed damage constants
SONICBOOM_DAMAGE EQU 20
DRAGON_RAGE_DAMAGE EQU 40
-; move name constants
-POUND EQU $01
-KARATE_CHOP EQU $02
-DOUBLESLAP EQU $03
-COMET_PUNCH EQU $04
-MEGA_PUNCH EQU $05
-PAY_DAY EQU $06
-FIRE_PUNCH EQU $07
-ICE_PUNCH EQU $08
-THUNDERPUNCH EQU $09
-SCRATCH EQU $0A
-VICEGRIP EQU $0B
-GUILLOTINE EQU $0C
-RAZOR_WIND EQU $0D
-SWORDS_DANCE EQU $0E
-CUT EQU $0F
-GUST EQU $10
-WING_ATTACK EQU $11
-WHIRLWIND EQU $12
-FLY EQU $13
-BIND EQU $14
-SLAM EQU $15
-VINE_WHIP EQU $16
-STOMP EQU $17
-DOUBLE_KICK EQU $18
-MEGA_KICK EQU $19
-JUMP_KICK EQU $1A
-ROLLING_KICK EQU $1B
-SAND_ATTACK EQU $1C
-HEADBUTT EQU $1D
-HORN_ATTACK EQU $1E
-FURY_ATTACK EQU $1F
-HORN_DRILL EQU $20
-TACKLE EQU $21
-BODY_SLAM EQU $22
-WRAP EQU $23
-TAKE_DOWN EQU $24
-THRASH EQU $25
-DOUBLE_EDGE EQU $26
-TAIL_WHIP EQU $27
-POISON_STING EQU $28
-TWINEEDLE EQU $29
-PIN_MISSILE EQU $2A
-LEER EQU $2B
-BITE EQU $2C
-GROWL EQU $2D
-ROAR EQU $2E
-SING EQU $2F
-SUPERSONIC EQU $30
-SONICBOOM EQU $31
-DISABLE EQU $32
-ACID EQU $33
-EMBER EQU $34
-FLAMETHROWER EQU $35
-MIST EQU $36
-WATER_GUN EQU $37
-HYDRO_PUMP EQU $38
-SURF EQU $39
-ICE_BEAM EQU $3A
-BLIZZARD EQU $3B
-PSYBEAM EQU $3C
-BUBBLEBEAM EQU $3D
-AURORA_BEAM EQU $3E
-HYPER_BEAM EQU $3F
-PECK EQU $40
-DRILL_PECK EQU $41
-SUBMISSION EQU $42
-LOW_KICK EQU $43
-COUNTER EQU $44
-SEISMIC_TOSS EQU $45
-STRENGTH EQU $46
-ABSORB EQU $47
-MEGA_DRAIN EQU $48
-LEECH_SEED EQU $49
-GROWTH EQU $4A
-RAZOR_LEAF EQU $4B
-SOLARBEAM EQU $4C
-POISONPOWDER EQU $4D
-STUN_SPORE EQU $4E
-SLEEP_POWDER EQU $4F
-PETAL_DANCE EQU $50
-STRING_SHOT EQU $51
-DRAGON_RAGE EQU $52
-FIRE_SPIN EQU $53
-THUNDERSHOCK EQU $54
-THUNDERBOLT EQU $55
-THUNDER_WAVE EQU $56
-THUNDER EQU $57
-ROCK_THROW EQU $58
-EARTHQUAKE EQU $59
-FISSURE EQU $5A
-DIG EQU $5B
-TOXIC EQU $5C
-CONFUSION EQU $5D
-PSYCHIC_M EQU $5E
-HYPNOSIS EQU $5F
-MEDITATE EQU $60
-AGILITY EQU $61
-QUICK_ATTACK EQU $62
-RAGE EQU $63
-TELEPORT EQU $64
-NIGHT_SHADE EQU $65
-MIMIC EQU $66
-SCREECH EQU $67
-DOUBLE_TEAM EQU $68
-RECOVER EQU $69
-HARDEN EQU $6A
-MINIMIZE EQU $6B
-SMOKESCREEN EQU $6C
-CONFUSE_RAY EQU $6D
-WITHDRAW EQU $6E
-DEFENSE_CURL EQU $6F
-BARRIER EQU $70
-LIGHT_SCREEN EQU $71
-HAZE EQU $72
-REFLECT EQU $73
-FOCUS_ENERGY EQU $74
-BIDE EQU $75
-METRONOME EQU $76
-MIRROR_MOVE EQU $77
-SELFDESTRUCT EQU $78
-EGG_BOMB EQU $79
-LICK EQU $7A
-SMOG EQU $7B
-SLUDGE EQU $7C
-BONE_CLUB EQU $7D
-FIRE_BLAST EQU $7E
-WATERFALL EQU $7F
-CLAMP EQU $80
-SWIFT EQU $81
-SKULL_BASH EQU $82
-SPIKE_CANNON EQU $83
-CONSTRICT EQU $84
-AMNESIA EQU $85
-KINESIS EQU $86
-SOFTBOILED EQU $87
-HI_JUMP_KICK EQU $88
-GLARE EQU $89
-DREAM_EATER EQU $8A
-POISON_GAS EQU $8B
-BARRAGE EQU $8C
-LEECH_LIFE EQU $8D
-LOVELY_KISS EQU $8E
-SKY_ATTACK EQU $8F
-TRANSFORM EQU $90
-BUBBLE EQU $91
-DIZZY_PUNCH EQU $92
-SPORE EQU $93
-FLASH EQU $94
-PSYWAVE EQU $95
-SPLASH EQU $96
-ACID_ARMOR EQU $97
-CRABHAMMER EQU $98
-EXPLOSION EQU $99
-FURY_SWIPES EQU $9A
-BONEMERANG EQU $9B
-REST EQU $9C
-ROCK_SLIDE EQU $9D
-HYPER_FANG EQU $9E
-SHARPEN EQU $9F
-CONVERSION EQU $A0
-TRI_ATTACK EQU $A1
-SUPER_FANG EQU $A2
-SLASH EQU $A3
-SUBSTITUTE EQU $A4
-STRUGGLE EQU $A5
-; these do double duty as animation identifiers
-SHOWPIC_ANIM EQU $A6 ; redraw monster pic
-XSTATITEM_ANIM EQU $AE ; use X Attack/Defense/Speed/Special
-SLP_ANIM EQU $BD ; sleeping monster
-CONF_ANIM EQU $BF ; confused monster
-TOSS_ANIM EQU $C1 ; toss Poké Ball
-SHAKE_ANIM EQU $C2 ; shaking Poké Ball when catching monster
-POOF_ANIM EQU $C3 ; puff of smoke
-BLOCKBALL_ANIM EQU $C4 ; trainer knocks away Poké Ball
-GREATTOSS_ANIM EQU $C5 ; toss Great Ball
-ULTRATOSS_ANIM EQU $C6 ; toss Ultra Ball or Master Ball
-HIDEPIC_ANIM EQU $C8 ; monster disappears
-ROCK_ANIM EQU $C9 ; throw rock
-BAIT_ANIM EQU $CA ; throw bait
+INCLUDE "constants/palette_constants.asm"
+INCLUDE "constants/map_constants.asm"
+INCLUDE "constants/map_dimensions.asm"
-; super game boy palettes
-PAL_ROUTE EQU $00
-PAL_PALLET EQU $01
-PAL_VIRIDIAN EQU $02
-PAL_PEWTER EQU $03
-PAL_CERULEAN EQU $04
-PAL_LAVENDER EQU $05
-PAL_VERMILION EQU $06
-PAL_CELADON EQU $07
-PAL_FUCHSIA EQU $08
-PAL_CINNABAR EQU $09
-PAL_INDIGO EQU $0A
-PAL_SAFFRON EQU $0B
-PAL_TOWNMAP EQU $0C
-PAL_LOGO1 EQU $0D
-; XXX
-PAL_LOGO2 EQU $0F
-PAL_MEWMON EQU $10
-PAL_BLUEMON EQU $11
-PAL_REDMON EQU $12
-PAL_CYANMON EQU $13
-PAL_PURPLEMON EQU $14
-PAL_BROWNMON EQU $15
-PAL_GREENMON EQU $16
-PAL_PINKMON EQU $17
-PAL_YELLOWMON EQU $18
-PAL_GREYMON EQU $19
-PAL_SLOTS1 EQU $1A
-PAL_SLOTS2 EQU $1B
-PAL_SLOTS3 EQU $1C
-PAL_SLOTS4 EQU $1D
-PAL_BLACK EQU $1E
-PAL_GREENBAR EQU $1F
-PAL_YELLOWBAR EQU $20
-PAL_REDBAR EQU $21
-PAL_BADGE EQU $22
-PAL_CAVE EQU $23
-; XXX
-
-; map name constants
-PALLET_TOWN EQU $00
-VIRIDIAN_CITY EQU $01
-PEWTER_CITY EQU $02
-CERULEAN_CITY EQU $03
-LAVENDER_TOWN EQU $04
-VERMILION_CITY EQU $05
-CELADON_CITY EQU $06
-FUCHSIA_CITY EQU $07
-CINNABAR_ISLAND EQU $08
-INDIGO_PLATEAU EQU $09
-SAFFRON_CITY EQU $0A
-; unused EQU $0B
-ROUTE_1 EQU $0C
-ROUTE_2 EQU $0D
-ROUTE_3 EQU $0E
-ROUTE_4 EQU $0F
-ROUTE_5 EQU $10
-ROUTE_6 EQU $11
-ROUTE_7 EQU $12
-ROUTE_8 EQU $13
-ROUTE_9 EQU $14
-ROUTE_10 EQU $15
-ROUTE_11 EQU $16
-ROUTE_12 EQU $17
-ROUTE_13 EQU $18
-ROUTE_14 EQU $19
-ROUTE_15 EQU $1A
-ROUTE_16 EQU $1B
-ROUTE_17 EQU $1C
-ROUTE_18 EQU $1D
-ROUTE_19 EQU $1E
-ROUTE_20 EQU $1F
-ROUTE_21 EQU $20
-ROUTE_22 EQU $21
-ROUTE_23 EQU $22
-ROUTE_24 EQU $23
-ROUTE_25 EQU $24
-REDS_HOUSE_1F EQU $25
-REDS_HOUSE_2F EQU $26
-BLUES_HOUSE EQU $27
-OAKS_LAB EQU $28
-VIRIDIAN_POKECENTER EQU $29
-VIRIDIAN_MART EQU $2A
-VIRIDIAN_SCHOOL EQU $2B
-VIRIDIAN_HOUSE EQU $2C
-VIRIDIAN_GYM EQU $2D
-DIGLETTS_CAVE_EXIT EQU $2E
-VIRIDIAN_FOREST_EXIT EQU $2F
-ROUTE_2_HOUSE EQU $30
-ROUTE_2_GATE EQU $31
-VIRIDIAN_FOREST_ENTRANCE EQU $32
-VIRIDIAN_FOREST EQU $33
-MUSEUM_1F EQU $34
-MUSEUM_2F EQU $35
-PEWTER_GYM EQU $36
-PEWTER_HOUSE_1 EQU $37
-PEWTER_MART EQU $38
-PEWTER_HOUSE_2 EQU $39
-PEWTER_POKECENTER EQU $3A
-MT_MOON_1 EQU $3B
-MT_MOON_2 EQU $3C
-MT_MOON_3 EQU $3D
-TRASHED_HOUSE EQU $3E
-CERULEAN_HOUSE EQU $3F
-CERULEAN_POKECENTER EQU $40
-CERULEAN_GYM EQU $41
-BIKE_SHOP EQU $42
-CERULEAN_MART EQU $43
-MT_MOON_POKECENTER EQU $44
-;copy of TRASHED_HOUSE EQU $45
-ROUTE_5_GATE EQU $46
-PATH_ENTRANCE_ROUTE_5 EQU $47
-DAYCAREM EQU $48
-ROUTE_6_GATE EQU $49
-PATH_ENTRANCE_ROUTE_6 EQU $4A
-;copy of PATH_ENTRANCE_ROUTE_6 EQU $4B
-ROUTE_7_GATE EQU $4C
-PATH_ENTRANCE_ROUTE_7 EQU $4D
-;copy of PATH_ENTRANCE_ROUTE_7 EQU $4E
-ROUTE_8_GATE EQU $4F
-PATH_ENTRANCE_ROUTE_8 EQU $50
-ROCK_TUNNEL_POKECENTER EQU $51
-ROCK_TUNNEL_1 EQU $52
-POWER_PLANT EQU $53
-ROUTE_11_GATE_1F EQU $54
-DIGLETTS_CAVE_ENTRANCE EQU $55
-ROUTE_11_GATE_2F EQU $56
-ROUTE_12_GATE EQU $57
-BILLS_HOUSE EQU $58
-VERMILION_POKECENTER EQU $59
-POKEMON_FAN_CLUB EQU $5A
-VERMILION_MART EQU $5B
-VERMILION_GYM EQU $5C
-VERMILION_HOUSE_1 EQU $5D
-VERMILION_DOCK EQU $5E
-SS_ANNE_1 EQU $5F
-SS_ANNE_2 EQU $60
-SS_ANNE_3 EQU $61
-SS_ANNE_4 EQU $62
-SS_ANNE_5 EQU $63
-SS_ANNE_6 EQU $64
-SS_ANNE_7 EQU $65
-SS_ANNE_8 EQU $66
-SS_ANNE_9 EQU $67
-SS_ANNE_10 EQU $68
-;EQU $69
-;EQU $6A
-;EQU $6B
-VICTORY_ROAD_1 EQU $6C
-;EQU $6D
-;EQU $6E
-;EQU $6F
-;EQU $70
-LANCES_ROOM EQU $71
-;EQU $72
-;EQU $73
-;EQU $74
-;EQU $75
-HALL_OF_FAME EQU $76
-UNDERGROUND_PATH_NS EQU $77
-CHAMPIONS_ROOM EQU $78
-UNDERGROUND_PATH_WE EQU $79
-CELADON_MART_1 EQU $7A
-CELADON_MART_2 EQU $7B
-CELADON_MART_3 EQU $7C
-CELADON_MART_4 EQU $7D
-CELADON_MART_ROOF EQU $7E
-CELADON_MART_ELEVATOR EQU $7F
-CELADON_MANSION_1 EQU $80
-CELADON_MANSION_2 EQU $81
-CELADON_MANSION_3 EQU $82
-CELADON_MANSION_4 EQU $83
-CELADON_MANSION_5 EQU $84
-CELADON_POKECENTER EQU $85
-CELADON_GYM EQU $86
-GAME_CORNER EQU $87
-CELADON_MART_5 EQU $88
-CELADONPRIZE_ROOM EQU $89
-CELADON_DINER EQU $8A
-CELADON_HOUSE EQU $8B
-CELADON_HOTEL EQU $8C
-LAVENDER_POKECENTER EQU $8D
-POKEMONTOWER_1 EQU $8E
-POKEMONTOWER_2 EQU $8F
-POKEMONTOWER_3 EQU $90
-POKEMONTOWER_4 EQU $91
-POKEMONTOWER_5 EQU $92
-POKEMONTOWER_6 EQU $93
-POKEMONTOWER_7 EQU $94
-LAVENDER_HOUSE_1 EQU $95
-LAVENDER_MART EQU $96
-LAVENDER_HOUSE_2 EQU $97
-FUCHSIA_MART EQU $98
-FUCHSIA_HOUSE_1 EQU $99
-FUCHSIA_POKECENTER EQU $9A
-FUCHSIA_HOUSE_2 EQU $9B
-SAFARIZONEENTRANCE EQU $9C
-FUCHSIA_GYM EQU $9D
-FUCHSIAMEETINGROOM EQU $9E
-SEAFOAM_ISLANDS_2 EQU $9F
-SEAFOAM_ISLANDS_3 EQU $A0
-SEAFOAM_ISLANDS_4 EQU $A1
-SEAFOAM_ISLANDS_5 EQU $A2
-VERMILION_HOUSE_2 EQU $A3
-FUCHSIA_HOUSE_3 EQU $A4
-MANSION_1 EQU $A5
-CINNABAR_GYM EQU $A6
-CINNABAR_LAB_1 EQU $A7
-CINNABAR_LAB_2 EQU $A8
-CINNABAR_LAB_3 EQU $A9
-CINNABAR_LAB_4 EQU $AA
-CINNABAR_POKECENTER EQU $AB
-CINNABAR_MART EQU $AC
-;copy of CINNABAR_MART EQU $AD
-INDIGO_PLATEAU_LOBBY EQU $AE
-COPYCATS_HOUSE_1F EQU $AF
-COPYCATS_HOUSE_2F EQU $B0
-FIGHTINGDOJO EQU $B1
-SAFFRON_GYM EQU $B2
-SAFFRON_HOUSE_1 EQU $B3
-SAFFRON_MART EQU $B4
-SILPH_CO_1F EQU $B5
-SAFFRON_POKECENTER EQU $B6
-SAFFRON_HOUSE_2 EQU $B7
-ROUTE_15_GATE_1F EQU $B8
-ROUTE_15_GATE_2F EQU $B9
-ROUTE_16_GATE_1F EQU $BA
-ROUTE_16_GATE_2F EQU $BB
-ROUTE_16_HOUSE EQU $BC
-ROUTE_12_HOUSE EQU $BD
-ROUTE_18_GATE_1F EQU $BE
-ROUTE_18_GATE_2F EQU $BF
-SEAFOAM_ISLANDS_1 EQU $C0
-ROUTE_22_GATE EQU $C1
-VICTORY_ROAD_2 EQU $C2
-ROUTE_12_GATE_2F EQU $C3
-VERMILION_HOUSE_3 EQU $C4
-DIGLETTS_CAVE EQU $C5
-VICTORY_ROAD_3 EQU $C6
-ROCKET_HIDEOUT_1 EQU $C7
-ROCKET_HIDEOUT_2 EQU $C8
-ROCKET_HIDEOUT_3 EQU $C9
-ROCKET_HIDEOUT_4 EQU $CA
-ROCKET_HIDEOUT_ELEVATOR EQU $CB
-;EQU $CC
-;EQU $CD
-;EQU $CE
-SILPH_CO_2F EQU $CF
-SILPH_CO_3F EQU $D0
-SILPH_CO_4F EQU $D1
-SILPH_CO_5F EQU $D2
-SILPH_CO_6F EQU $D3
-SILPH_CO_7F EQU $D4
-SILPH_CO_8F EQU $D5
-MANSION_2 EQU $D6
-MANSION_3 EQU $D7
-MANSION_4 EQU $D8
-SAFARI_ZONE_EAST EQU $D9
-SAFARI_ZONE_NORTH EQU $DA
-SAFARI_ZONE_WEST EQU $DB
-SAFARI_ZONE_CENTER EQU $DC
-SAFARI_ZONE_REST_HOUSE_1 EQU $DD
-SAFARI_ZONE_SECRET_HOUSE EQU $DE
-SAFARI_ZONE_REST_HOUSE_2 EQU $DF
-SAFARI_ZONE_REST_HOUSE_3 EQU $E0
-SAFARI_ZONE_REST_HOUSE_4 EQU $E1
-UNKNOWN_DUNGEON_2 EQU $E2
-UNKNOWN_DUNGEON_3 EQU $E3
-UNKNOWN_DUNGEON_1 EQU $E4
-NAME_RATERS_HOUSE EQU $E5
-CERULEAN_HOUSE_3 EQU $E6
-;EQU $E7
-ROCK_TUNNEL_2 EQU $E8
-SILPH_CO_9F EQU $E9
-SILPH_CO_10F EQU $EA
-SILPH_CO_11F EQU $EB
-SILPH_CO_ELEVATOR EQU $EC
-;EQU $ED
-;EQU $EE
-BATTLE_CENTER EQU $EF
-TRADE_CENTER EQU $F0
-;EQU $F1
-;EQU $F2
-;EQU $F3
-;EQU $F4
-LORELEIS_ROOM EQU $F5
-BRUNOS_ROOM EQU $F6
-AGATHAS_ROOM EQU $F7
-BEACH_HOUSE EQU $F8 ; Yellow only
-
; Evolution types
-EV_LEVEL EQU 1
-EV_ITEM EQU 2
-EV_TRADE EQU 3
+EV_LEVEL EQU 1
+EV_ITEM EQU 2
+EV_TRADE EQU 3
; Elemental types
-NORMAL EQU $00
+NORMAL EQU $00
FIGHTING EQU $01
-FLYING EQU $02
-POISON EQU $03
-GROUND EQU $04
-ROCK EQU $05
-BUG EQU $07
-GHOST EQU $08
-FIRE EQU $14
-WATER EQU $15
-GRASS EQU $16
+FLYING EQU $02
+POISON EQU $03
+GROUND EQU $04
+ROCK EQU $05
+BUG EQU $07
+GHOST EQU $08
+FIRE EQU $14
+WATER EQU $15
+GRASS EQU $16
ELECTRIC EQU $17
-PSYCHIC EQU $18
-ICE EQU $19
-DRAGON EQU $1A
+PSYCHIC EQU $18
+ICE EQU $19
+DRAGON EQU $1A
-EAST EQU 1
-WEST EQU 2
+EAST EQU 1
+WEST EQU 2
SOUTH EQU 4
NORTH EQU 8
; different kinds of people events
-ITEM EQU $80
+ITEM EQU $80
TRAINER EQU $40
; status ailments (masks)
-SLP EQU %00000111
-PSN EQU %00001000
-BRN EQU %00010000
-FRZ EQU %00100000
-PAR EQU %01000000
+SLP EQU %00000111
+PSN EQU %00001000
+BRN EQU %00010000
+FRZ EQU %00100000
+PAR EQU %01000000
; pokemon's overworld sprites
-SPRITE_MON EQU $0
-SPRITE_BALL_M EQU $1
-SPRITE_HELIX EQU $2
-SPRITE_FAIRY EQU $3
-SPRITE_BIRD_M EQU $4
-SPRITE_WATER EQU $5
-SPRITE_BUG EQU $6
-SPRITE_GRASS EQU $7
-SPRITE_SNAKE EQU $8
-SPRITE_QUADRUPED EQU $9
+SPRITE_MON EQU $0
+SPRITE_BALL_M EQU $1
+SPRITE_HELIX EQU $2
+SPRITE_FAIRY EQU $3
+SPRITE_BIRD_M EQU $4
+SPRITE_WATER EQU $5
+SPRITE_BUG EQU $6
+SPRITE_GRASS EQU $7
+SPRITE_SNAKE EQU $8
+SPRITE_QUADRUPED EQU $9
; overworld sprites
SPRITE_RED EQU $01
@@ -2481,1053 +196,3 @@
SPRITE_LYING_OLD_MAN_UNUSED_2 EQU $47
SPRITE_LYING_OLD_MAN EQU $48
-; Map sizes (y, x)
-
-; PalletTown_h map_id=0
-PALLET_TOWN_HEIGHT EQU $09
-PALLET_TOWN_WIDTH EQU $0a
-
-; ViridianCity_h map_id=1
-VIRIDIAN_CITY_HEIGHT EQU $12
-VIRIDIAN_CITY_WIDTH EQU $14
-
-; PewterCity_h map_id=2
-PEWTER_CITY_HEIGHT EQU $12
-PEWTER_CITY_WIDTH EQU $14
-
-; CeruleanCity_h map_id=3
-CERULEAN_CITY_HEIGHT EQU $12
-CERULEAN_CITY_WIDTH EQU $14
-
-; LavenderTown_h map_id=4
-LAVENDER_TOWN_HEIGHT EQU $09
-LAVENDER_TOWN_WIDTH EQU $0a
-
-; VermilionCity_h map_id=5
-VERMILION_CITY_HEIGHT EQU $12
-VERMILION_CITY_WIDTH EQU $14
-
-; CeladonCity_h map_id=6
-CELADON_CITY_HEIGHT EQU $12
-CELADON_CITY_WIDTH EQU $19
-
-; FuchsiaCity_h map_id=7
-FUCHSIA_CITY_HEIGHT EQU $12
-FUCHSIA_CITY_WIDTH EQU $14
-
-; CinnabarIsland_h map_id=8
-CINNABAR_ISLAND_HEIGHT EQU $09
-CINNABAR_ISLAND_WIDTH EQU $0a
-
-; IndigoPlateau_h map_id=9
-INDIGO_PLATEAU_HEIGHT EQU $09
-INDIGO_PLATEAU_WIDTH EQU $0a
-
-; SaffronCity_h map_id=10
-SAFFRON_CITY_HEIGHT EQU $12
-SAFFRON_CITY_WIDTH EQU $14
-
-; Route1_h map_id=12
-ROUTE_1_HEIGHT EQU $12
-ROUTE_1_WIDTH EQU $0a
-
-; Route2_h map_id=13
-ROUTE_2_HEIGHT EQU $24
-ROUTE_2_WIDTH EQU $0a
-
-; Route3_h map_id=14
-ROUTE_3_HEIGHT EQU $09
-ROUTE_3_WIDTH EQU $23
-
-; Route4_h map_id=15
-ROUTE_4_HEIGHT EQU $09
-ROUTE_4_WIDTH EQU $2d
-
-; Route5_h map_id=16
-ROUTE_5_HEIGHT EQU $12
-ROUTE_5_WIDTH EQU $0a
-
-; Route6_h map_id=17
-ROUTE_6_HEIGHT EQU $12
-ROUTE_6_WIDTH EQU $0a
-
-; Route7_h map_id=18
-ROUTE_7_HEIGHT EQU $09
-ROUTE_7_WIDTH EQU $0a
-
-; Route8_h map_id=19
-ROUTE_8_HEIGHT EQU $09
-ROUTE_8_WIDTH EQU $1e
-
-; Route9_h map_id=20
-ROUTE_9_HEIGHT EQU $09
-ROUTE_9_WIDTH EQU $1e
-
-; Route10_h map_id=21
-ROUTE_10_HEIGHT EQU $24
-ROUTE_10_WIDTH EQU $0a
-
-; Route11_h map_id=22
-ROUTE_11_HEIGHT EQU $09
-ROUTE_11_WIDTH EQU $1e
-
-; Route12_h map_id=23
-ROUTE_12_HEIGHT EQU $36
-ROUTE_12_WIDTH EQU $0a
-
-; Route13_h map_id=24
-ROUTE_13_HEIGHT EQU $09
-ROUTE_13_WIDTH EQU $1e
-
-; Route14_h map_id=25
-ROUTE_14_HEIGHT EQU $1b
-ROUTE_14_WIDTH EQU $0a
-
-; Route15_h map_id=26
-ROUTE_15_HEIGHT EQU $09
-ROUTE_15_WIDTH EQU $1e
-
-; Route16_h map_id=27
-ROUTE_16_HEIGHT EQU $09
-ROUTE_16_WIDTH EQU $14
-
-; Route17_h map_id=28
-ROUTE_17_HEIGHT EQU $48
-ROUTE_17_WIDTH EQU $0a
-
-; Route18_h map_id=29
-ROUTE_18_HEIGHT EQU $09
-ROUTE_18_WIDTH EQU $19
-
-; Route19_h map_id=30
-ROUTE_19_HEIGHT EQU $1b
-ROUTE_19_WIDTH EQU $0a
-
-; Route20_h map_id=31
-ROUTE_20_HEIGHT EQU $09
-ROUTE_20_WIDTH EQU $32
-
-; Route21_h map_id=32
-ROUTE_21_HEIGHT EQU $2d
-ROUTE_21_WIDTH EQU $0a
-
-; Route22_h map_id=33
-ROUTE_22_HEIGHT EQU $09
-ROUTE_22_WIDTH EQU $14
-
-; Route23_h map_id=34
-ROUTE_23_HEIGHT EQU $48
-ROUTE_23_WIDTH EQU $0a
-
-; Route24_h map_id=35
-ROUTE_24_HEIGHT EQU $12
-ROUTE_24_WIDTH EQU $0a
-
-; Route25_h map_id=36
-ROUTE_25_HEIGHT EQU $09
-ROUTE_25_WIDTH EQU $1e
-
-; RedsHouse1F_h map_id=37
-REDS_HOUSE_1F_HEIGHT EQU $04
-REDS_HOUSE_1F_WIDTH EQU $04
-
-; RedsHouse2F_h map_id=38
-REDS_HOUSE_2F_HEIGHT EQU $04
-REDS_HOUSE_2F_WIDTH EQU $04
-
-; BluesHouse_h map_id=39
-BLUES_HOUSE_HEIGHT EQU $04
-BLUES_HOUSE_WIDTH EQU $04
-
-; OaksLab_h map_id=40
-OAKS_LAB_HEIGHT EQU $06
-OAKS_LAB_WIDTH EQU $05
-
-; ViridianPokeCenter_h map_id=41
-VIRIDIAN_POKECENTER_HEIGHT EQU $04
-VIRIDIAN_POKECENTER_WIDTH EQU $07
-
-; ViridianMart_h map_id=42
-VIRIDIAN_MART_HEIGHT EQU $04
-VIRIDIAN_MART_WIDTH EQU $04
-
-; School_h map_id=43
-VIRIDIAN_SCHOOL_HEIGHT EQU $04
-VIRIDIAN_SCHOOL_WIDTH EQU $04
-
-; ViridianHouse_h map_id=44
-VIRIDIAN_HOUSE_HEIGHT EQU $04
-VIRIDIAN_HOUSE_WIDTH EQU $04
-
-; ViridianGym_h map_id=45
-VIRIDIAN_GYM_HEIGHT EQU $09
-VIRIDIAN_GYM_WIDTH EQU $0a
-
-; DiglettsCaveRoute2_h map_id=46
-DIGLETTS_CAVE_EXIT_HEIGHT EQU $04
-DIGLETTS_CAVE_EXIT_WIDTH EQU $04
-
-; ViridianForestexit_h map_id=47
-VIRIDIAN_FOREST_EXIT_HEIGHT EQU $04
-VIRIDIAN_FOREST_EXIT_WIDTH EQU $05
-
-; Route2House_h map_id=48
-ROUTE_2_HOUSE_HEIGHT EQU $04
-ROUTE_2_HOUSE_WIDTH EQU $04
-
-; Route2Gate_h map_id=49
-ROUTE_2_GATE_HEIGHT EQU $04
-ROUTE_2_GATE_WIDTH EQU $05
-
-; ViridianForestEntrance_h map_id=50
-VIRIDIAN_FOREST_ENTRANCE_HEIGHT EQU $04
-VIRIDIAN_FOREST_ENTRANCE_WIDTH EQU $05
-
-; ViridianForest_h map_id=51
-VIRIDIAN_FOREST_HEIGHT EQU $18
-VIRIDIAN_FOREST_WIDTH EQU $11
-
-; MuseumF1_h map_id=52
-MUSEUM_1F_HEIGHT EQU $04
-MUSEUM_1F_WIDTH EQU $0a
-
-; MuseumF2_h map_id=53
-MUSEUM_2F_HEIGHT EQU $04
-MUSEUM_2F_WIDTH EQU $07
-
-; PewterGym_h map_id=54
-PEWTER_GYM_HEIGHT EQU $07
-PEWTER_GYM_WIDTH EQU $05
-
-; PewterHouse1_h map_id=55
-PEWTER_HOUSE_1_HEIGHT EQU $04
-PEWTER_HOUSE_1_WIDTH EQU $04
-
-; PewterMart_h map_id=56
-PEWTER_MART_HEIGHT EQU $04
-PEWTER_MART_WIDTH EQU $04
-
-; PewterHouse2_h map_id=57
-PEWTER_HOUSE_2_HEIGHT EQU $04
-PEWTER_HOUSE_2_WIDTH EQU $04
-
-; PewterPokecenter_h map_id=58
-PEWTER_POKECENTER_HEIGHT EQU $04
-PEWTER_POKECENTER_WIDTH EQU $07
-
-; MtMoon1_h map_id=59
-MT_MOON_1_HEIGHT EQU $12
-MT_MOON_1_WIDTH EQU $14
-
-; MtMoon2_h map_id=60
-MT_MOON_2_HEIGHT EQU $0e
-MT_MOON_2_WIDTH EQU $0e
-
-; MtMoon3_h map_id=61
-MT_MOON_3_HEIGHT EQU $12
-MT_MOON_3_WIDTH EQU $14
-
-; CeruleanHouseTrashed_h map_id=62
-TRASHED_HOUSE_HEIGHT EQU $04
-TRASHED_HOUSE_WIDTH EQU $04
-
-; CeruleanHouse_h map_id=63
-CERULEAN_HOUSE_HEIGHT EQU $04
-CERULEAN_HOUSE_WIDTH EQU $04
-
-; CeruleanPokecenter_h map_id=64
-CERULEAN_POKECENTER_HEIGHT EQU $04
-CERULEAN_POKECENTER_WIDTH EQU $07
-
-; CeruleanGym_h map_id=65
-CERULEAN_GYM_HEIGHT EQU $07
-CERULEAN_GYM_WIDTH EQU $05
-
-; BikeShop_h map_id=66
-BIKE_SHOP_HEIGHT EQU $04
-BIKE_SHOP_WIDTH EQU $04
-
-; CeruleanMart_h map_id=67
-CERULEAN_MART_HEIGHT EQU $04
-CERULEAN_MART_WIDTH EQU $04
-
-; MtMoonPokecenter_h map_id=68
-MT_MOON_POKECENTER_HEIGHT EQU $04
-MT_MOON_POKECENTER_WIDTH EQU $07
-
-; Route5Gate_h map_id=70
-ROUTE_5_GATE_HEIGHT EQU $03
-ROUTE_5_GATE_WIDTH EQU $04
-
-; UndergroundTunnelEntranceRoute5_h map_id=71
-PATH_ENTRANCE_ROUTE_5_HEIGHT EQU $04
-PATH_ENTRANCE_ROUTE_5_WIDTH EQU $04
-
-; DayCareM_h map_id=72
-DAYCAREM_HEIGHT EQU $04
-DAYCAREM_WIDTH EQU $04
-
-; Route6Gate_h map_id=73
-ROUTE_6_GATE_HEIGHT EQU $03
-ROUTE_6_GATE_WIDTH EQU $04
-
-; UndergroundTunnelEntranceRoute6_h map_id=74
-PATH_ENTRANCE_ROUTE_6_HEIGHT EQU $04
-PATH_ENTRANCE_ROUTE_6_WIDTH EQU $04
-
-; Route7Gate_h map_id=76
-ROUTE_7_GATE_HEIGHT EQU $04
-ROUTE_7_GATE_WIDTH EQU $03
-
-; UndergroundPathEntranceRoute7_h map_id=77
-PATH_ENTRANCE_ROUTE_7_HEIGHT EQU $04
-PATH_ENTRANCE_ROUTE_7_WIDTH EQU $04
-
-; Route8Gate_h map_id=79
-ROUTE_8_GATE_HEIGHT EQU $04
-ROUTE_8_GATE_WIDTH EQU $03
-
-; UndergroundPathEntranceRoute8_h map_id=80
-PATH_ENTRANCE_ROUTE_8_HEIGHT EQU $04
-PATH_ENTRANCE_ROUTE_8_WIDTH EQU $04
-
-; RockTunnelPokecenter_h map_id=81
-ROCK_TUNNEL_POKECENTER_HEIGHT EQU $04
-ROCK_TUNNEL_POKECENTER_WIDTH EQU $07
-
-; RockTunnel1_h map_id=82
-ROCK_TUNNEL_1_HEIGHT EQU $12
-ROCK_TUNNEL_1_WIDTH EQU $14
-
-; PowerPlant_h map_id=83
-POWER_PLANT_HEIGHT EQU $12
-POWER_PLANT_WIDTH EQU $14
-
-; Route11Gate_h map_id=84
-ROUTE_11_GATE_1F_HEIGHT EQU $05
-ROUTE_11_GATE_1F_WIDTH EQU $04
-
-; DiglettsCaveEntranceRoute11_h map_id=85
-DIGLETTS_CAVE_ENTRANCE_HEIGHT EQU $04
-DIGLETTS_CAVE_ENTRANCE_WIDTH EQU $04
-
-; Route11GateUpstairs_h map_id=86
-ROUTE_11_GATE_2F_HEIGHT EQU $04
-ROUTE_11_GATE_2F_WIDTH EQU $04
-
-; Route12Gate_h map_id=87
-ROUTE_12_GATE_HEIGHT EQU $04
-ROUTE_12_GATE_WIDTH EQU $05
-
-; BillsHouse_h map_id=88
-BILLS_HOUSE_HEIGHT EQU $04
-BILLS_HOUSE_WIDTH EQU $04
-
-; VermilionPokecenter_h map_id=89
-VERMILION_POKECENTER_HEIGHT EQU $04
-VERMILION_POKECENTER_WIDTH EQU $07
-
-; FanClub_h map_id=90
-POKEMON_FAN_CLUB_HEIGHT EQU $04
-POKEMON_FAN_CLUB_WIDTH EQU $04
-
-; VermilionMart_h map_id=91
-VERMILION_MART_HEIGHT EQU $04
-VERMILION_MART_WIDTH EQU $04
-
-; VermilionGym_h map_id=92
-VERMILION_GYM_HEIGHT EQU $09
-VERMILION_GYM_WIDTH EQU $05
-
-; VermilionHouse1_h map_id=93
-VERMILION_HOUSE_1_HEIGHT EQU $04
-VERMILION_HOUSE_1_WIDTH EQU $04
-
-; VermilionDock_h map_id=94
-VERMILION_DOCK_HEIGHT EQU $06
-VERMILION_DOCK_WIDTH EQU $0e
-
-; SSAnne1_h map_id=95
-SS_ANNE_1_HEIGHT EQU $09
-SS_ANNE_1_WIDTH EQU $14
-
-; SSAnne2_h map_id=96
-SS_ANNE_2_HEIGHT EQU $09
-SS_ANNE_2_WIDTH EQU $14
-
-; SSAnne3_h map_id=97
-SS_ANNE_3_HEIGHT EQU $03
-SS_ANNE_3_WIDTH EQU $0a
-
-; SSAnne4_h map_id=98
-SS_ANNE_4_HEIGHT EQU $04
-SS_ANNE_4_WIDTH EQU $0f
-
-; SSAnne5_h map_id=99
-SS_ANNE_5_HEIGHT EQU $07
-SS_ANNE_5_WIDTH EQU $0a
-
-; SSAnne6_h map_id=100
-SS_ANNE_6_HEIGHT EQU $08
-SS_ANNE_6_WIDTH EQU $07
-
-; SSAnne7_h map_id=101
-SS_ANNE_7_HEIGHT EQU $04
-SS_ANNE_7_WIDTH EQU $03
-
-; SSAnne8_h map_id=102
-SS_ANNE_8_HEIGHT EQU $08
-SS_ANNE_8_WIDTH EQU $0c
-
-; SSAnne9_h map_id=103
-SS_ANNE_9_HEIGHT EQU $08
-SS_ANNE_9_WIDTH EQU $0c
-
-; SSAnne10_h map_id=104
-SS_ANNE_10_HEIGHT EQU $08
-SS_ANNE_10_WIDTH EQU $0c
-
-; VictoryRoad1_h map_id=108
-VICTORY_ROAD_1_HEIGHT EQU $09
-VICTORY_ROAD_1_WIDTH EQU $0a
-
-; Lance_h map_id=113
-LANCES_ROOM_HEIGHT EQU $0d
-LANCES_ROOM_WIDTH EQU $0d
-
-; HallofFameRoom_h map_id=118
-HALL_OF_FAME_HEIGHT EQU $04
-HALL_OF_FAME_WIDTH EQU $05
-
-; UndergroundPathNS_h map_id=119
-UNDERGROUND_PATH_NS_HEIGHT EQU $18
-UNDERGROUND_PATH_NS_WIDTH EQU $04
-
-; Gary_h map_id=120
-CHAMPIONS_ROOM_HEIGHT EQU $04
-CHAMPIONS_ROOM_WIDTH EQU $04
-
-; UndergroundPathWE_h map_id=121
-UNDERGROUND_PATH_WE_HEIGHT EQU $04
-UNDERGROUND_PATH_WE_WIDTH EQU $19
-
-; CeladonMart1_h map_id=122
-CELADON_MART_1_HEIGHT EQU $04
-CELADON_MART_1_WIDTH EQU $0a
-
-; CeladonMart2_h map_id=123
-CELADON_MART_2_HEIGHT EQU $04
-CELADON_MART_2_WIDTH EQU $0a
-
-; CeladonMart3_h map_id=124
-CELADON_MART_3_HEIGHT EQU $04
-CELADON_MART_3_WIDTH EQU $0a
-
-; CeladonMart4_h map_id=125
-CELADON_MART_4_HEIGHT EQU $04
-CELADON_MART_4_WIDTH EQU $0a
-
-; CeladonMartRoof_h map_id=126
-CELADON_MART_ROOF_HEIGHT EQU $04
-CELADON_MART_ROOF_WIDTH EQU $0a
-
-; CeladonMartElevator_h map_id=127
-CELADON_MART_ELEVATOR_HEIGHT EQU $02
-CELADON_MART_ELEVATOR_WIDTH EQU $02
-
-; CeladonMansion1_h map_id=128
-CELADON_MANSION_1_HEIGHT EQU $06
-CELADON_MANSION_1_WIDTH EQU $04
-
-; CeladonMansion2_h map_id=129
-CELADON_MANSION_2_HEIGHT EQU $06
-CELADON_MANSION_2_WIDTH EQU $04
-
-; CeladonMansion3_h map_id=130
-CELADON_MANSION_3_HEIGHT EQU $06
-CELADON_MANSION_3_WIDTH EQU $04
-
-; CeladonMansion4_h map_id=131
-CELADON_MANSION_4_HEIGHT EQU $06
-CELADON_MANSION_4_WIDTH EQU $04
-
-; CeladonMansion5_h map_id=132
-CELADON_MANSION_5_HEIGHT EQU $04
-CELADON_MANSION_5_WIDTH EQU $04
-
-; CeladonPokecenter_h map_id=133
-CELADON_POKECENTER_HEIGHT EQU $04
-CELADON_POKECENTER_WIDTH EQU $07
-
-; CeladonGym_h map_id=134
-CELADON_GYM_HEIGHT EQU $09
-CELADON_GYM_WIDTH EQU $05
-
-; CeladonGameCorner_h map_id=135
-GAME_CORNER_HEIGHT EQU $09
-GAME_CORNER_WIDTH EQU $0a
-
-; CeladonMart5_h map_id=136
-CELADON_MART_5_HEIGHT EQU $04
-CELADON_MART_5_WIDTH EQU $0a
-
-; CeladonPrizeRoom_h map_id=137
-CELADONPRIZE_ROOM_HEIGHT EQU $04
-CELADONPRIZE_ROOM_WIDTH EQU $05
-
-; CeladonDiner_h map_id=138
-CELADON_DINER_HEIGHT EQU $04
-CELADON_DINER_WIDTH EQU $05
-
-; CeladonHouse_h map_id=139
-CELADON_HOUSE_HEIGHT EQU $04
-CELADON_HOUSE_WIDTH EQU $04
-
-; CeladonHotel_h map_id=140
-CELADONHOTEL_HEIGHT EQU $04
-CELADONHOTEL_WIDTH EQU $07
-
-; LavenderPokecenter_h map_id=141
-LAVENDER_POKECENTER_HEIGHT EQU $04
-LAVENDER_POKECENTER_WIDTH EQU $07
-
-; PokemonTower1_h map_id=142
-POKEMONTOWER_1_HEIGHT EQU $09
-POKEMONTOWER_1_WIDTH EQU $0a
-
-; PokemonTower2_h map_id=143
-POKEMONTOWER_2_HEIGHT EQU $09
-POKEMONTOWER_2_WIDTH EQU $0a
-
-; PokemonTower3_h map_id=144
-POKEMONTOWER_3_HEIGHT EQU $09
-POKEMONTOWER_3_WIDTH EQU $0a
-
-; PokemonTower4_h map_id=145
-POKEMONTOWER_4_HEIGHT EQU $09
-POKEMONTOWER_4_WIDTH EQU $0a
-
-; PokemonTower5_h map_id=146
-POKEMONTOWER_5_HEIGHT EQU $09
-POKEMONTOWER_5_WIDTH EQU $0a
-
-; PokemonTower6_h map_id=147
-POKEMONTOWER_6_HEIGHT EQU $09
-POKEMONTOWER_6_WIDTH EQU $0a
-
-; PokemonTower7_h map_id=148
-POKEMONTOWER_7_HEIGHT EQU $09
-POKEMONTOWER_7_WIDTH EQU $0a
-
-; LavenderHouse1_h map_id=149
-LAVENDER_HOUSE_1_HEIGHT EQU $04
-LAVENDER_HOUSE_1_WIDTH EQU $04
-
-; LavenderMart_h map_id=150
-LAVENDER_MART_HEIGHT EQU $04
-LAVENDER_MART_WIDTH EQU $04
-
-; LavenderHouse2_h map_id=151
-LAVENDER_HOUSE_2_HEIGHT EQU $04
-LAVENDER_HOUSE_2_WIDTH EQU $04
-
-; FuchsiaMart_h map_id=152
-FUCHSIA_MART_HEIGHT EQU $04
-FUCHSIA_MART_WIDTH EQU $04
-
-; FuchsiaHouse1_h map_id=153
-FUCHSIA_HOUSE_1_HEIGHT EQU $04
-FUCHSIA_HOUSE_1_WIDTH EQU $04
-
-; FuchsiaPokecenter_h map_id=154
-FUCHSIA_POKECENTER_HEIGHT EQU $04
-FUCHSIA_POKECENTER_WIDTH EQU $07
-
-; FuchsiaHouse2_h map_id=155
-FUCHSIA_HOUSE_2_HEIGHT EQU $04
-FUCHSIA_HOUSE_2_WIDTH EQU $05
-
-; SafariZoneEntrance_h map_id=156
-SAFARIZONEENTRANCE_HEIGHT EQU $03
-SAFARIZONEENTRANCE_WIDTH EQU $04
-
-; FuchsiaGym_h map_id=157
-FUCHSIA_GYM_HEIGHT EQU $09
-FUCHSIA_GYM_WIDTH EQU $05
-
-; FuchsiaMeetingRoom_h map_id=158
-FUCHSIAMEETINGROOM_HEIGHT EQU $04
-FUCHSIAMEETINGROOM_WIDTH EQU $07
-
-; SeafoamIslands2_h map_id=159
-SEAFOAM_ISLANDS_2_HEIGHT EQU $09
-SEAFOAM_ISLANDS_2_WIDTH EQU $0f
-
-; SeafoamIslands3_h map_id=160
-SEAFOAM_ISLANDS_3_HEIGHT EQU $09
-SEAFOAM_ISLANDS_3_WIDTH EQU $0f
-
-; SeafoamIslands4_h map_id=161
-SEAFOAM_ISLANDS_4_HEIGHT EQU $09
-SEAFOAM_ISLANDS_4_WIDTH EQU $0f
-
-; SeafoamIslands5_h map_id=162
-SEAFOAM_ISLANDS_5_HEIGHT EQU $09
-SEAFOAM_ISLANDS_5_WIDTH EQU $0f
-
-; VermilionHouse2_h map_id=163
-VERMILION_HOUSE_2_HEIGHT EQU $04
-VERMILION_HOUSE_2_WIDTH EQU $04
-
-; FuchsiaHouse3_h map_id=164
-FUCHSIA_HOUSE_3_HEIGHT EQU $04
-FUCHSIA_HOUSE_3_WIDTH EQU $04
-
-; Mansion1_h map_id=165
-MANSION_1_HEIGHT EQU $0e
-MANSION_1_WIDTH EQU $0f
-
-; CinnabarGym_h map_id=166
-CINNABAR_GYM_HEIGHT EQU $09
-CINNABAR_GYM_WIDTH EQU $0a
-
-; Lab1_h map_id=167
-CINNABAR_LAB_1_HEIGHT EQU $04
-CINNABAR_LAB_1_WIDTH EQU $09
-
-; Lab2_h map_id=168
-CINNABAR_LAB_2_HEIGHT EQU $04
-CINNABAR_LAB_2_WIDTH EQU $04
-
-; Lab3_h map_id=169
-CINNABAR_LAB_3_HEIGHT EQU $04
-CINNABAR_LAB_3_WIDTH EQU $04
-
-; Lab4_h map_id=170
-CINNABAR_LAB_4_HEIGHT EQU $04
-CINNABAR_LAB_4_WIDTH EQU $04
-
-; CinnabarPokecenter_h map_id=171
-CINNABAR_POKECENTER_HEIGHT EQU $04
-CINNABAR_POKECENTER_WIDTH EQU $07
-
-; CinnabarMart_h map_id=172
-CINNABAR_MART_HEIGHT EQU $04
-CINNABAR_MART_WIDTH EQU $04
-
-; IndigoPlateauLobby_h map_id=174
-INDIGO_PLATEAU_LOBBY_HEIGHT EQU $06
-INDIGO_PLATEAU_LOBBY_WIDTH EQU $08
-
-; CopycatsHouseF1_h map_id=175
-COPYCATS_HOUSE_1F_HEIGHT EQU $04
-COPYCATS_HOUSE_1F_WIDTH EQU $04
-
-; CopycatsHouseF2_h map_id=176
-COPYCATS_HOUSE_2F_HEIGHT EQU $04
-COPYCATS_HOUSE_2F_WIDTH EQU $04
-
-; FightingDojo_h map_id=177
-FIGHTINGDOJO_HEIGHT EQU $06
-FIGHTINGDOJO_WIDTH EQU $05
-
-; SaffronGym_h map_id=178
-SAFFRON_GYM_HEIGHT EQU $09
-SAFFRON_GYM_WIDTH EQU $0a
-
-; SaffronHouse1_h map_id=179
-SAFFRON_HOUSE_1_HEIGHT EQU $04
-SAFFRON_HOUSE_1_WIDTH EQU $04
-
-; SaffronMart_h map_id=180
-SAFFRON_MART_HEIGHT EQU $04
-SAFFRON_MART_WIDTH EQU $04
-
-; SilphCo1_h map_id=181
-SILPH_CO_1F_HEIGHT EQU $09
-SILPH_CO_1F_WIDTH EQU $0f
-
-; SaffronPokecenter_h map_id=182
-SAFFRON_POKECENTER_HEIGHT EQU $04
-SAFFRON_POKECENTER_WIDTH EQU $07
-
-; SaffronHouse2_h map_id=183
-SAFFRON_HOUSE_2_HEIGHT EQU $04
-SAFFRON_HOUSE_2_WIDTH EQU $04
-
-; Route15Gate1F_h map_id=184
-ROUTE_15_GATE_1F_HEIGHT EQU $05
-ROUTE_15_GATE_1F_WIDTH EQU $04
-
-; Route15GateUpstairs_h map_id=185
-ROUTE_15_GATE_2F_HEIGHT EQU 4
-ROUTE_15_GATE_2F_WIDTH EQU 4
-
-; Route16GateMap_h map_id=186
-ROUTE_16_GATE_1F_HEIGHT EQU $07
-ROUTE_16_GATE_1F_WIDTH EQU $04
-
-; Route16GateUpstairs_h map_id=187
-ROUTE_16_GATE_2F_HEIGHT EQU $04
-ROUTE_16_GATE_2F_WIDTH EQU $04
-
-; Route16House_h map_id=188
-ROUTE_16_HOUSE_HEIGHT EQU $04
-ROUTE_16_HOUSE_WIDTH EQU $04
-
-; Route12House_h map_id=189
-ROUTE_12_HOUSE_HEIGHT EQU $04
-ROUTE_12_HOUSE_WIDTH EQU $04
-
-; Route18Gate_h map_id=190
-ROUTE_18_GATE_1F_HEIGHT EQU $05
-ROUTE_18_GATE_1F_WIDTH EQU $04
-
-; Route18GateHeader_h map_id=191
-ROUTE_18_GATE_2F_HEIGHT EQU $04
-ROUTE_18_GATE_2F_WIDTH EQU $04
-
-; SeafoamIslands1_h map_id=192
-SEAFOAM_ISLANDS_1_HEIGHT EQU $09
-SEAFOAM_ISLANDS_1_WIDTH EQU $0f
-
-; Route22Gate_h map_id=193
-ROUTE_22_GATE_HEIGHT EQU $04
-ROUTE_22_GATE_WIDTH EQU $05
-
-; VictoryRoad2_h map_id=194
-VICTORY_ROAD_2_HEIGHT EQU $09
-VICTORY_ROAD_2_WIDTH EQU $0f
-
-; Route12GateUpstairs_h map_id=195
-ROUTE_12_GATE_2F_HEIGHT EQU $04
-ROUTE_12_GATE_2F_WIDTH EQU $04
-
-; VermilionHouse3_h map_id=196
-VERMILION_HOUSE_3_HEIGHT EQU $04
-VERMILION_HOUSE_3_WIDTH EQU $04
-
-; DiglettsCave_h map_id=197
-DIGLETTS_CAVE_HEIGHT EQU $12
-DIGLETTS_CAVE_WIDTH EQU $14
-
-; VictoryRoad3_h map_id=198
-VICTORY_ROAD_3_HEIGHT EQU $09
-VICTORY_ROAD_3_WIDTH EQU $0f
-
-; RocketHideout1_h map_id=199
-ROCKET_HIDEOUT_1_HEIGHT EQU $0e
-ROCKET_HIDEOUT_1_WIDTH EQU $0f
-
-; RocketHideout2_h map_id=200
-ROCKET_HIDEOUT_2_HEIGHT EQU $0e
-ROCKET_HIDEOUT_2_WIDTH EQU $0f
-
-; RocketHideout3_h map_id=201
-ROCKET_HIDEOUT_3_HEIGHT EQU $0e
-ROCKET_HIDEOUT_3_WIDTH EQU $0f
-
-; RocketHideout4_h map_id=202
-ROCKET_HIDEOUT_4_HEIGHT EQU $0c
-ROCKET_HIDEOUT_4_WIDTH EQU $0f
-
-; RocketHideoutElevator_h map_id=203
-ROCKET_HIDEOUT_ELEVATOR_HEIGHT EQU $04
-ROCKET_HIDEOUT_ELEVATOR_WIDTH EQU $03
-
-; SilphCo2_h map_id=207
-SILPH_CO_2F_HEIGHT EQU $09
-SILPH_CO_2F_WIDTH EQU $0f
-
-; SilphCo3_h map_id=208
-SILPH_CO_3F_HEIGHT EQU $09
-SILPH_CO_3F_WIDTH EQU $0f
-
-; SilphCo4_h map_id=209
-SILPH_CO_4F_HEIGHT EQU $09
-SILPH_CO_4F_WIDTH EQU $0f
-
-; SilphCo5_h map_id=210
-SILPH_CO_5F_HEIGHT EQU $09
-SILPH_CO_5F_WIDTH EQU $0f
-
-; SilphCo6_h map_id=211
-SILPH_CO_6F_HEIGHT EQU $09
-SILPH_CO_6F_WIDTH EQU $0d
-
-; SilphCo7_h map_id=212
-SILPH_CO_7F_HEIGHT EQU $09
-SILPH_CO_7F_WIDTH EQU $0d
-
-; SilphCo8_h map_id=213
-SILPH_CO_8F_HEIGHT EQU $09
-SILPH_CO_8F_WIDTH EQU $0d
-
-; Mansion2_h map_id=214
-MANSION_2_HEIGHT EQU $0e
-MANSION_2_WIDTH EQU $0f
-
-; Mansion3_h map_id=215
-MANSION_3_HEIGHT EQU $09
-MANSION_3_WIDTH EQU $0f
-
-; Mansion4_h map_id=216
-MANSION_4_HEIGHT EQU $0e
-MANSION_4_WIDTH EQU $0f
-
-; SafariZoneEast_h map_id=217
-SAFARI_ZONE_EAST_HEIGHT EQU $0d
-SAFARI_ZONE_EAST_WIDTH EQU $0f
-
-; SafariZoneNorth_h map_id=218
-SAFARI_ZONE_NORTH_HEIGHT EQU $12
-SAFARI_ZONE_NORTH_WIDTH EQU $14
-
-; SafariZoneWest_h map_id=219
-SAFARI_ZONE_WEST_HEIGHT EQU $0d
-SAFARI_ZONE_WEST_WIDTH EQU $0f
-
-; SafariZoneCenter_h map_id=220
-SAFARI_ZONE_CENTER_HEIGHT EQU $0d
-SAFARI_ZONE_CENTER_WIDTH EQU $0f
-
-; SafariZoneRestHouse1_h map_id=221
-SAFARI_ZONE_REST_HOUSE_1_HEIGHT EQU $04
-SAFARI_ZONE_REST_HOUSE_1_WIDTH EQU $04
-
-; SafariZoneSecretHouse_h map_id=222
-SAFARI_ZONE_SECRET_HOUSE_HEIGHT EQU $04
-SAFARI_ZONE_SECRET_HOUSE_WIDTH EQU $04
-
-; SafariZoneRestHouse2_h map_id=223
-SAFARI_ZONE_REST_HOUSE_2_HEIGHT EQU $04
-SAFARI_ZONE_REST_HOUSE_2_WIDTH EQU $04
-
-; SafariZoneRestHouse3_h map_id=224
-SAFARI_ZONE_REST_HOUSE_3_HEIGHT EQU $04
-SAFARI_ZONE_REST_HOUSE_3_WIDTH EQU $04
-
-; SafariZoneRestHouse4_h map_id=225
-SAFARI_ZONE_REST_HOUSE_4_HEIGHT EQU $04
-SAFARI_ZONE_REST_HOUSE_4_WIDTH EQU $04
-
-; UnknownDungeon2_h map_id=226
-UNKNOWN_DUNGEON_2_HEIGHT EQU $09
-UNKNOWN_DUNGEON_2_WIDTH EQU $0f
-
-; UnknownDungeon3_h map_id=227
-UNKNOWN_DUNGEON_3_HEIGHT EQU $09
-UNKNOWN_DUNGEON_3_WIDTH EQU $0f
-
-; UnknownDungeon1_h map_id=228
-UNKNOWN_DUNGEON_1_HEIGHT EQU $09
-UNKNOWN_DUNGEON_1_WIDTH EQU $0f
-
-; NameRater_h map_id=229
-NAME_RATERS_HOUSE_HEIGHT EQU $04
-NAME_RATERS_HOUSE_WIDTH EQU $04
-
-; CeruleanHouse2_h map_id=230
-CERULEAN_HOUSE_2_HEIGHT EQU $04
-CERULEAN_HOUSE_2_WIDTH EQU $04
-
-; RockTunnel2_h map_id=232
-ROCK_TUNNEL_2_HEIGHT EQU $12
-ROCK_TUNNEL_2_WIDTH EQU $14
-
-; SilphCo9_h map_id=233
-SILPH_CO_9F_HEIGHT EQU $09
-SILPH_CO_9F_WIDTH EQU $0d
-
-; SilphCo10_h map_id=234
-SILPH_CO_10F_HEIGHT EQU $09
-SILPH_CO_10F_WIDTH EQU $08
-
-; SilphCo11_h map_id=235
-SILPH_CO_11F_HEIGHT EQU $09
-SILPH_CO_11F_WIDTH EQU $09
-
-; SilphCoElevator_h map_id=236
-SILPH_CO_ELEVATOR_HEIGHT EQU $02
-SILPH_CO_ELEVATOR_WIDTH EQU $02
-
-; BattleCenterM_h map_id=239
-BATTLE_CENTER_HEIGHT EQU $04
-BATTLE_CENTER_WIDTH EQU $05
-
-; TradeCenterM_h map_id=240
-TRADE_CENTER_HEIGHT EQU $04
-TRADE_CENTER_WIDTH EQU $05
-
-; Lorelei_h map_id=245
-LORELEIS_ROOM_HEIGHT EQU $06
-LORELEIS_ROOM_WIDTH EQU $05
-
-; Bruno_h map_id=246
-BRUNOS_ROOM_HEIGHT EQU $06
-BRUNOS_ROOM_WIDTH EQU $05
-
-; Agatha_h map_id=247
-AGATHAS_ROOM_HEIGHT EQU $06
-AGATHAS_ROOM_WIDTH EQU $05
-
-;1_channel EQU $00
-;2_channels EQU $40
-;3_channels EQU $80
-;4_channels EQU $C0
-
-CH0 EQU 0
-CH1 EQU 1
-CH2 EQU 2
-CH3 EQU 3
-CH4 EQU 4
-CH5 EQU 5
-CH6 EQU 6
-CH7 EQU 7
-
-;Note Pitch
-C_ EQU $0
-C# EQU $1
-D_ EQU $2
-D# EQU $3
-E_ EQU $4
-F_ EQU $5
-F# EQU $6
-G_ EQU $7
-G# EQU $8
-A_ EQU $9
-A# EQU $A
-B_ EQU $B
-
-;drum instruments
-snare1 EQU $01
-snare2 EQU $02
-snare3 EQU $03
-snare4 EQU $04
-snare5 EQU $05
-triangle1 EQU $06
-triangle2 EQU $07
-snare6 EQU $08
-snare7 EQU $09
-snare8 EQU $0a
-snare9 EQU $0b
-cymbal1 EQU $0c
-cymbal2 EQU $0d
-cymbal3 EQU $0e
-mutedsnare1 EQU $0f
-triangle3 EQU $10
-mutedsnare2 EQU $11
-mutedsnare3 EQU $12
-mutedsnare4 EQU $13
-
-unknownsfx0x10: MACRO
- db $10
- db \1
-ENDM
-
-unknownsfx0x20: MACRO
- db $20 | \1
- db \2
- db \3
- db \4
-ENDM
-
-unknownnoise0x20: MACRO
- db $20 | \1
- db \2
- db \3
-ENDM
-
-;format: note pitch, length (in 16ths)
-note: MACRO
- db (\1 << 4) | (\2 - 1)
-ENDM
-
-;format: dnote length (in 16ths), instrument
-dnote: MACRO
- db $B0 | (\1 - 1)
- db \2
-ENDM
-
-;format: rest length (in 16ths)
-rest: MACRO
- db $C0 | (\1 - 1)
-ENDM
-
-; format: notetype speed, volume, fade
-notetype: MACRO
- db $D0 | \1
- db (\2 << 4) | \3
-ENDM
-
-dspeed: MACRO
- db $D0 | \1
-ENDM
-
-octave: MACRO
- db $E8 - \1
-ENDM
-
-togglecall: MACRO
- db $E8
-ENDM
-
-;format: vibrato delay, rate, depth
-vibrato: MACRO
- db $EA
- db \1
- db (\2 << 4) | \3
-ENDM
-
-pitchbend: MACRO
- db $EB
- db \1
- db \2
-ENDM
-
-duty: MACRO
- db $EC
- db \1
-ENDM
-
-tempo: MACRO
- db $ED
- db \1
- db \2
-ENDM
-
-unknownmusic0xee: MACRO
- db $EE
- db \1
-ENDM
-
-stereopanning: MACRO
- db $F0
- db \1
-ENDM
-
-executemusic: MACRO
- db $F8
-ENDM
-
-dutycycle: MACRO
- db $FC
- db \1
-ENDM
-
-;format: callchannel address
-;callchannel: MACRO
-; db $FD
-; dw \1
-;ENDM
-
-;format: loopchannel count, address
-;loopchannel: MACRO
-; db $FE
-; db \1
-; dw \2
-;ENDM
-
-endchannel: MACRO
- db $FF
-ENDM
--- /dev/null
+++ b/constants/item_constants.asm
@@ -1,0 +1,140 @@
+MASTER_BALL EQU $01
+ULTRA_BALL EQU $02
+GREAT_BALL EQU $03
+POKE_BALL EQU $04
+TOWN_MAP EQU $05
+BICYCLE EQU $06
+SURFBOARD EQU $07 ; buggy?
+SAFARI_BALL EQU $08
+POKEDEX EQU $09
+MOON_STONE EQU $0A
+ANTIDOTE EQU $0B
+BURN_HEAL EQU $0C
+ICE_HEAL EQU $0D
+AWAKENING EQU $0E
+PARLYZ_HEAL EQU $0F
+FULL_RESTORE EQU $10
+MAX_POTION EQU $11
+HYPER_POTION EQU $12
+SUPER_POTION EQU $13
+POTION EQU $14
+BOULDERBADGE EQU $15
+CASCADEBADGE EQU $16
+THUNDERBADGE EQU $17
+RAINBOWBADGE EQU $18
+SOULBADGE EQU $19
+MARSHBADGE EQU $1A
+VOLCANOBADGE EQU $1B
+EARTHBADGE EQU $1C
+ESCAPE_ROPE EQU $1D
+REPEL EQU $1E
+OLD_AMBER EQU $1F
+FIRE_STONE EQU $20
+THUNDER_STONE EQU $21
+WATER_STONE EQU $22
+HP_UP EQU $23
+PROTEIN EQU $24
+IRON EQU $25
+CARBOS EQU $26
+CALCIUM EQU $27
+RARE_CANDY EQU $28
+DOME_FOSSIL EQU $29
+HELIX_FOSSIL EQU $2A
+SECRET_KEY EQU $2B
+; XXX ????? EQU $2C
+BIKE_VOUCHER EQU $2D
+X_ACCURACY EQU $2E
+LEAF_STONE EQU $2F
+CARD_KEY EQU $30
+NUGGET EQU $31
+;PP_UP EQU $32
+POKE_DOLL EQU $33
+FULL_HEAL EQU $34
+REVIVE EQU $35
+MAX_REVIVE EQU $36
+GUARD_SPEC_ EQU $37
+SUPER_REPEL EQU $38
+MAX_REPEL EQU $39
+DIRE_HIT EQU $3A
+COIN EQU $3B
+FRESH_WATER EQU $3C
+SODA_POP EQU $3D
+LEMONADE EQU $3E
+S_S__TICKET EQU $3F
+GOLD_TEETH EQU $40
+X_ATTACK EQU $41
+X_DEFEND EQU $42
+X_SPEED EQU $43
+X_SPECIAL EQU $44
+COIN_CASE EQU $45
+OAKS_PARCEL EQU $46
+ITEMFINDER EQU $47
+SILPH_SCOPE EQU $48
+POKE_FLUTE EQU $49
+LIFT_KEY EQU $4A
+EXP__ALL EQU $4B
+OLD_ROD EQU $4C
+GOOD_ROD EQU $4D
+SUPER_ROD EQU $4E
+; XXX todo: compare this to $32
+PP_UP EQU $4F
+ETHER EQU $50
+MAX_ETHER EQU $51
+ELIXER EQU $52
+MAX_ELIXER EQU $53
+HM_01 EQU $C4
+HM_02 EQU $C5
+HM_03 EQU $C6
+HM_04 EQU $C7
+HM_05 EQU $C8
+TM_01 EQU $C9
+TM_02 EQU $CA
+TM_03 EQU $CB
+TM_04 EQU $CC
+TM_05 EQU $CD
+TM_06 EQU $CE
+TM_07 EQU $CF
+TM_08 EQU $D0
+TM_09 EQU $D1
+TM_10 EQU $D2
+TM_11 EQU $D3
+TM_12 EQU $D4
+TM_13 EQU $D5
+TM_14 EQU $D6
+TM_15 EQU $D7
+TM_16 EQU $D8
+TM_17 EQU $D9
+TM_18 EQU $DA
+TM_19 EQU $DB
+TM_20 EQU $DC
+TM_21 EQU $DD
+TM_22 EQU $DE
+TM_23 EQU $DF
+TM_24 EQU $E0
+TM_25 EQU $E1
+TM_26 EQU $E2
+TM_27 EQU $E3
+TM_28 EQU $E4
+TM_29 EQU $E5
+TM_30 EQU $E6
+TM_31 EQU $E7
+TM_32 EQU $E8
+TM_33 EQU $E9
+TM_34 EQU $EA
+TM_35 EQU $EB
+TM_36 EQU $EC
+TM_37 EQU $ED
+TM_38 EQU $EE
+TM_39 EQU $EF
+TM_40 EQU $F0
+TM_41 EQU $F1
+TM_42 EQU $F2
+TM_43 EQU $F3
+TM_44 EQU $F4
+TM_45 EQU $F5
+TM_46 EQU $F6
+TM_47 EQU $F7
+TM_48 EQU $F8
+TM_49 EQU $F9
+TM_50 EQU $FA
+
--- /dev/null
+++ b/constants/map_constants.asm
@@ -1,0 +1,250 @@
+PALLET_TOWN EQU $00
+VIRIDIAN_CITY EQU $01
+PEWTER_CITY EQU $02
+CERULEAN_CITY EQU $03
+LAVENDER_TOWN EQU $04
+VERMILION_CITY EQU $05
+CELADON_CITY EQU $06
+FUCHSIA_CITY EQU $07
+CINNABAR_ISLAND EQU $08
+INDIGO_PLATEAU EQU $09
+SAFFRON_CITY EQU $0A
+; unused EQU $0B
+ROUTE_1 EQU $0C
+ROUTE_2 EQU $0D
+ROUTE_3 EQU $0E
+ROUTE_4 EQU $0F
+ROUTE_5 EQU $10
+ROUTE_6 EQU $11
+ROUTE_7 EQU $12
+ROUTE_8 EQU $13
+ROUTE_9 EQU $14
+ROUTE_10 EQU $15
+ROUTE_11 EQU $16
+ROUTE_12 EQU $17
+ROUTE_13 EQU $18
+ROUTE_14 EQU $19
+ROUTE_15 EQU $1A
+ROUTE_16 EQU $1B
+ROUTE_17 EQU $1C
+ROUTE_18 EQU $1D
+ROUTE_19 EQU $1E
+ROUTE_20 EQU $1F
+ROUTE_21 EQU $20
+ROUTE_22 EQU $21
+ROUTE_23 EQU $22
+ROUTE_24 EQU $23
+ROUTE_25 EQU $24
+REDS_HOUSE_1F EQU $25
+REDS_HOUSE_2F EQU $26
+BLUES_HOUSE EQU $27
+OAKS_LAB EQU $28
+VIRIDIAN_POKECENTER EQU $29
+VIRIDIAN_MART EQU $2A
+VIRIDIAN_SCHOOL EQU $2B
+VIRIDIAN_HOUSE EQU $2C
+VIRIDIAN_GYM EQU $2D
+DIGLETTS_CAVE_EXIT EQU $2E
+VIRIDIAN_FOREST_EXIT EQU $2F
+ROUTE_2_HOUSE EQU $30
+ROUTE_2_GATE EQU $31
+VIRIDIAN_FOREST_ENTRANCE EQU $32
+VIRIDIAN_FOREST EQU $33
+MUSEUM_1F EQU $34
+MUSEUM_2F EQU $35
+PEWTER_GYM EQU $36
+PEWTER_HOUSE_1 EQU $37
+PEWTER_MART EQU $38
+PEWTER_HOUSE_2 EQU $39
+PEWTER_POKECENTER EQU $3A
+MT_MOON_1 EQU $3B
+MT_MOON_2 EQU $3C
+MT_MOON_3 EQU $3D
+TRASHED_HOUSE EQU $3E
+CERULEAN_HOUSE EQU $3F
+CERULEAN_POKECENTER EQU $40
+CERULEAN_GYM EQU $41
+BIKE_SHOP EQU $42
+CERULEAN_MART EQU $43
+MT_MOON_POKECENTER EQU $44
+;copy of TRASHED_HOUSE EQU $45
+ROUTE_5_GATE EQU $46
+PATH_ENTRANCE_ROUTE_5 EQU $47
+DAYCAREM EQU $48
+ROUTE_6_GATE EQU $49
+PATH_ENTRANCE_ROUTE_6 EQU $4A
+;copy of PATH_ENTRANCE_ROUTE_6 EQU $4B
+ROUTE_7_GATE EQU $4C
+PATH_ENTRANCE_ROUTE_7 EQU $4D
+;copy of PATH_ENTRANCE_ROUTE_7 EQU $4E
+ROUTE_8_GATE EQU $4F
+PATH_ENTRANCE_ROUTE_8 EQU $50
+ROCK_TUNNEL_POKECENTER EQU $51
+ROCK_TUNNEL_1 EQU $52
+POWER_PLANT EQU $53
+ROUTE_11_GATE_1F EQU $54
+DIGLETTS_CAVE_ENTRANCE EQU $55
+ROUTE_11_GATE_2F EQU $56
+ROUTE_12_GATE EQU $57
+BILLS_HOUSE EQU $58
+VERMILION_POKECENTER EQU $59
+POKEMON_FAN_CLUB EQU $5A
+VERMILION_MART EQU $5B
+VERMILION_GYM EQU $5C
+VERMILION_HOUSE_1 EQU $5D
+VERMILION_DOCK EQU $5E
+SS_ANNE_1 EQU $5F
+SS_ANNE_2 EQU $60
+SS_ANNE_3 EQU $61
+SS_ANNE_4 EQU $62
+SS_ANNE_5 EQU $63
+SS_ANNE_6 EQU $64
+SS_ANNE_7 EQU $65
+SS_ANNE_8 EQU $66
+SS_ANNE_9 EQU $67
+SS_ANNE_10 EQU $68
+;EQU $69
+;EQU $6A
+;EQU $6B
+VICTORY_ROAD_1 EQU $6C
+;EQU $6D
+;EQU $6E
+;EQU $6F
+;EQU $70
+LANCES_ROOM EQU $71
+;EQU $72
+;EQU $73
+;EQU $74
+;EQU $75
+HALL_OF_FAME EQU $76
+UNDERGROUND_PATH_NS EQU $77
+CHAMPIONS_ROOM EQU $78
+UNDERGROUND_PATH_WE EQU $79
+CELADON_MART_1 EQU $7A
+CELADON_MART_2 EQU $7B
+CELADON_MART_3 EQU $7C
+CELADON_MART_4 EQU $7D
+CELADON_MART_ROOF EQU $7E
+CELADON_MART_ELEVATOR EQU $7F
+CELADON_MANSION_1 EQU $80
+CELADON_MANSION_2 EQU $81
+CELADON_MANSION_3 EQU $82
+CELADON_MANSION_4 EQU $83
+CELADON_MANSION_5 EQU $84
+CELADON_POKECENTER EQU $85
+CELADON_GYM EQU $86
+GAME_CORNER EQU $87
+CELADON_MART_5 EQU $88
+CELADONPRIZE_ROOM EQU $89
+CELADON_DINER EQU $8A
+CELADON_HOUSE EQU $8B
+CELADON_HOTEL EQU $8C
+LAVENDER_POKECENTER EQU $8D
+POKEMONTOWER_1 EQU $8E
+POKEMONTOWER_2 EQU $8F
+POKEMONTOWER_3 EQU $90
+POKEMONTOWER_4 EQU $91
+POKEMONTOWER_5 EQU $92
+POKEMONTOWER_6 EQU $93
+POKEMONTOWER_7 EQU $94
+LAVENDER_HOUSE_1 EQU $95
+LAVENDER_MART EQU $96
+LAVENDER_HOUSE_2 EQU $97
+FUCHSIA_MART EQU $98
+FUCHSIA_HOUSE_1 EQU $99
+FUCHSIA_POKECENTER EQU $9A
+FUCHSIA_HOUSE_2 EQU $9B
+SAFARIZONEENTRANCE EQU $9C
+FUCHSIA_GYM EQU $9D
+FUCHSIAMEETINGROOM EQU $9E
+SEAFOAM_ISLANDS_2 EQU $9F
+SEAFOAM_ISLANDS_3 EQU $A0
+SEAFOAM_ISLANDS_4 EQU $A1
+SEAFOAM_ISLANDS_5 EQU $A2
+VERMILION_HOUSE_2 EQU $A3
+FUCHSIA_HOUSE_3 EQU $A4
+MANSION_1 EQU $A5
+CINNABAR_GYM EQU $A6
+CINNABAR_LAB_1 EQU $A7
+CINNABAR_LAB_2 EQU $A8
+CINNABAR_LAB_3 EQU $A9
+CINNABAR_LAB_4 EQU $AA
+CINNABAR_POKECENTER EQU $AB
+CINNABAR_MART EQU $AC
+;copy of CINNABAR_MART EQU $AD
+INDIGO_PLATEAU_LOBBY EQU $AE
+COPYCATS_HOUSE_1F EQU $AF
+COPYCATS_HOUSE_2F EQU $B0
+FIGHTINGDOJO EQU $B1
+SAFFRON_GYM EQU $B2
+SAFFRON_HOUSE_1 EQU $B3
+SAFFRON_MART EQU $B4
+SILPH_CO_1F EQU $B5
+SAFFRON_POKECENTER EQU $B6
+SAFFRON_HOUSE_2 EQU $B7
+ROUTE_15_GATE_1F EQU $B8
+ROUTE_15_GATE_2F EQU $B9
+ROUTE_16_GATE_1F EQU $BA
+ROUTE_16_GATE_2F EQU $BB
+ROUTE_16_HOUSE EQU $BC
+ROUTE_12_HOUSE EQU $BD
+ROUTE_18_GATE_1F EQU $BE
+ROUTE_18_GATE_2F EQU $BF
+SEAFOAM_ISLANDS_1 EQU $C0
+ROUTE_22_GATE EQU $C1
+VICTORY_ROAD_2 EQU $C2
+ROUTE_12_GATE_2F EQU $C3
+VERMILION_HOUSE_3 EQU $C4
+DIGLETTS_CAVE EQU $C5
+VICTORY_ROAD_3 EQU $C6
+ROCKET_HIDEOUT_1 EQU $C7
+ROCKET_HIDEOUT_2 EQU $C8
+ROCKET_HIDEOUT_3 EQU $C9
+ROCKET_HIDEOUT_4 EQU $CA
+ROCKET_HIDEOUT_ELEVATOR EQU $CB
+;EQU $CC
+;EQU $CD
+;EQU $CE
+SILPH_CO_2F EQU $CF
+SILPH_CO_3F EQU $D0
+SILPH_CO_4F EQU $D1
+SILPH_CO_5F EQU $D2
+SILPH_CO_6F EQU $D3
+SILPH_CO_7F EQU $D4
+SILPH_CO_8F EQU $D5
+MANSION_2 EQU $D6
+MANSION_3 EQU $D7
+MANSION_4 EQU $D8
+SAFARI_ZONE_EAST EQU $D9
+SAFARI_ZONE_NORTH EQU $DA
+SAFARI_ZONE_WEST EQU $DB
+SAFARI_ZONE_CENTER EQU $DC
+SAFARI_ZONE_REST_HOUSE_1 EQU $DD
+SAFARI_ZONE_SECRET_HOUSE EQU $DE
+SAFARI_ZONE_REST_HOUSE_2 EQU $DF
+SAFARI_ZONE_REST_HOUSE_3 EQU $E0
+SAFARI_ZONE_REST_HOUSE_4 EQU $E1
+UNKNOWN_DUNGEON_2 EQU $E2
+UNKNOWN_DUNGEON_3 EQU $E3
+UNKNOWN_DUNGEON_1 EQU $E4
+NAME_RATERS_HOUSE EQU $E5
+CERULEAN_HOUSE_3 EQU $E6
+;EQU $E7
+ROCK_TUNNEL_2 EQU $E8
+SILPH_CO_9F EQU $E9
+SILPH_CO_10F EQU $EA
+SILPH_CO_11F EQU $EB
+SILPH_CO_ELEVATOR EQU $EC
+;EQU $ED
+;EQU $EE
+BATTLE_CENTER EQU $EF
+TRADE_CENTER EQU $F0
+;EQU $F1
+;EQU $F2
+;EQU $F3
+;EQU $F4
+LORELEIS_ROOM EQU $F5
+BRUNOS_ROOM EQU $F6
+AGATHAS_ROOM EQU $F7
+BEACH_HOUSE EQU $F8 ; Yellow only
+
--- /dev/null
+++ b/constants/map_dimensions.asm
@@ -1,0 +1,890 @@
+; Map sizes (y, x)
+
+; PalletTown_h map_id=0
+PALLET_TOWN_HEIGHT EQU $09
+PALLET_TOWN_WIDTH EQU $0a
+
+; ViridianCity_h map_id=1
+VIRIDIAN_CITY_HEIGHT EQU $12
+VIRIDIAN_CITY_WIDTH EQU $14
+
+; PewterCity_h map_id=2
+PEWTER_CITY_HEIGHT EQU $12
+PEWTER_CITY_WIDTH EQU $14
+
+; CeruleanCity_h map_id=3
+CERULEAN_CITY_HEIGHT EQU $12
+CERULEAN_CITY_WIDTH EQU $14
+
+; LavenderTown_h map_id=4
+LAVENDER_TOWN_HEIGHT EQU $09
+LAVENDER_TOWN_WIDTH EQU $0a
+
+; VermilionCity_h map_id=5
+VERMILION_CITY_HEIGHT EQU $12
+VERMILION_CITY_WIDTH EQU $14
+
+; CeladonCity_h map_id=6
+CELADON_CITY_HEIGHT EQU $12
+CELADON_CITY_WIDTH EQU $19
+
+; FuchsiaCity_h map_id=7
+FUCHSIA_CITY_HEIGHT EQU $12
+FUCHSIA_CITY_WIDTH EQU $14
+
+; CinnabarIsland_h map_id=8
+CINNABAR_ISLAND_HEIGHT EQU $09
+CINNABAR_ISLAND_WIDTH EQU $0a
+
+; IndigoPlateau_h map_id=9
+INDIGO_PLATEAU_HEIGHT EQU $09
+INDIGO_PLATEAU_WIDTH EQU $0a
+
+; SaffronCity_h map_id=10
+SAFFRON_CITY_HEIGHT EQU $12
+SAFFRON_CITY_WIDTH EQU $14
+
+; Route1_h map_id=12
+ROUTE_1_HEIGHT EQU $12
+ROUTE_1_WIDTH EQU $0a
+
+; Route2_h map_id=13
+ROUTE_2_HEIGHT EQU $24
+ROUTE_2_WIDTH EQU $0a
+
+; Route3_h map_id=14
+ROUTE_3_HEIGHT EQU $09
+ROUTE_3_WIDTH EQU $23
+
+; Route4_h map_id=15
+ROUTE_4_HEIGHT EQU $09
+ROUTE_4_WIDTH EQU $2d
+
+; Route5_h map_id=16
+ROUTE_5_HEIGHT EQU $12
+ROUTE_5_WIDTH EQU $0a
+
+; Route6_h map_id=17
+ROUTE_6_HEIGHT EQU $12
+ROUTE_6_WIDTH EQU $0a
+
+; Route7_h map_id=18
+ROUTE_7_HEIGHT EQU $09
+ROUTE_7_WIDTH EQU $0a
+
+; Route8_h map_id=19
+ROUTE_8_HEIGHT EQU $09
+ROUTE_8_WIDTH EQU $1e
+
+; Route9_h map_id=20
+ROUTE_9_HEIGHT EQU $09
+ROUTE_9_WIDTH EQU $1e
+
+; Route10_h map_id=21
+ROUTE_10_HEIGHT EQU $24
+ROUTE_10_WIDTH EQU $0a
+
+; Route11_h map_id=22
+ROUTE_11_HEIGHT EQU $09
+ROUTE_11_WIDTH EQU $1e
+
+; Route12_h map_id=23
+ROUTE_12_HEIGHT EQU $36
+ROUTE_12_WIDTH EQU $0a
+
+; Route13_h map_id=24
+ROUTE_13_HEIGHT EQU $09
+ROUTE_13_WIDTH EQU $1e
+
+; Route14_h map_id=25
+ROUTE_14_HEIGHT EQU $1b
+ROUTE_14_WIDTH EQU $0a
+
+; Route15_h map_id=26
+ROUTE_15_HEIGHT EQU $09
+ROUTE_15_WIDTH EQU $1e
+
+; Route16_h map_id=27
+ROUTE_16_HEIGHT EQU $09
+ROUTE_16_WIDTH EQU $14
+
+; Route17_h map_id=28
+ROUTE_17_HEIGHT EQU $48
+ROUTE_17_WIDTH EQU $0a
+
+; Route18_h map_id=29
+ROUTE_18_HEIGHT EQU $09
+ROUTE_18_WIDTH EQU $19
+
+; Route19_h map_id=30
+ROUTE_19_HEIGHT EQU $1b
+ROUTE_19_WIDTH EQU $0a
+
+; Route20_h map_id=31
+ROUTE_20_HEIGHT EQU $09
+ROUTE_20_WIDTH EQU $32
+
+; Route21_h map_id=32
+ROUTE_21_HEIGHT EQU $2d
+ROUTE_21_WIDTH EQU $0a
+
+; Route22_h map_id=33
+ROUTE_22_HEIGHT EQU $09
+ROUTE_22_WIDTH EQU $14
+
+; Route23_h map_id=34
+ROUTE_23_HEIGHT EQU $48
+ROUTE_23_WIDTH EQU $0a
+
+; Route24_h map_id=35
+ROUTE_24_HEIGHT EQU $12
+ROUTE_24_WIDTH EQU $0a
+
+; Route25_h map_id=36
+ROUTE_25_HEIGHT EQU $09
+ROUTE_25_WIDTH EQU $1e
+
+; RedsHouse1F_h map_id=37
+REDS_HOUSE_1F_HEIGHT EQU $04
+REDS_HOUSE_1F_WIDTH EQU $04
+
+; RedsHouse2F_h map_id=38
+REDS_HOUSE_2F_HEIGHT EQU $04
+REDS_HOUSE_2F_WIDTH EQU $04
+
+; BluesHouse_h map_id=39
+BLUES_HOUSE_HEIGHT EQU $04
+BLUES_HOUSE_WIDTH EQU $04
+
+; OaksLab_h map_id=40
+OAKS_LAB_HEIGHT EQU $06
+OAKS_LAB_WIDTH EQU $05
+
+; ViridianPokeCenter_h map_id=41
+VIRIDIAN_POKECENTER_HEIGHT EQU $04
+VIRIDIAN_POKECENTER_WIDTH EQU $07
+
+; ViridianMart_h map_id=42
+VIRIDIAN_MART_HEIGHT EQU $04
+VIRIDIAN_MART_WIDTH EQU $04
+
+; School_h map_id=43
+VIRIDIAN_SCHOOL_HEIGHT EQU $04
+VIRIDIAN_SCHOOL_WIDTH EQU $04
+
+; ViridianHouse_h map_id=44
+VIRIDIAN_HOUSE_HEIGHT EQU $04
+VIRIDIAN_HOUSE_WIDTH EQU $04
+
+; ViridianGym_h map_id=45
+VIRIDIAN_GYM_HEIGHT EQU $09
+VIRIDIAN_GYM_WIDTH EQU $0a
+
+; DiglettsCaveRoute2_h map_id=46
+DIGLETTS_CAVE_EXIT_HEIGHT EQU $04
+DIGLETTS_CAVE_EXIT_WIDTH EQU $04
+
+; ViridianForestexit_h map_id=47
+VIRIDIAN_FOREST_EXIT_HEIGHT EQU $04
+VIRIDIAN_FOREST_EXIT_WIDTH EQU $05
+
+; Route2House_h map_id=48
+ROUTE_2_HOUSE_HEIGHT EQU $04
+ROUTE_2_HOUSE_WIDTH EQU $04
+
+; Route2Gate_h map_id=49
+ROUTE_2_GATE_HEIGHT EQU $04
+ROUTE_2_GATE_WIDTH EQU $05
+
+; ViridianForestEntrance_h map_id=50
+VIRIDIAN_FOREST_ENTRANCE_HEIGHT EQU $04
+VIRIDIAN_FOREST_ENTRANCE_WIDTH EQU $05
+
+; ViridianForest_h map_id=51
+VIRIDIAN_FOREST_HEIGHT EQU $18
+VIRIDIAN_FOREST_WIDTH EQU $11
+
+; MuseumF1_h map_id=52
+MUSEUM_1F_HEIGHT EQU $04
+MUSEUM_1F_WIDTH EQU $0a
+
+; MuseumF2_h map_id=53
+MUSEUM_2F_HEIGHT EQU $04
+MUSEUM_2F_WIDTH EQU $07
+
+; PewterGym_h map_id=54
+PEWTER_GYM_HEIGHT EQU $07
+PEWTER_GYM_WIDTH EQU $05
+
+; PewterHouse1_h map_id=55
+PEWTER_HOUSE_1_HEIGHT EQU $04
+PEWTER_HOUSE_1_WIDTH EQU $04
+
+; PewterMart_h map_id=56
+PEWTER_MART_HEIGHT EQU $04
+PEWTER_MART_WIDTH EQU $04
+
+; PewterHouse2_h map_id=57
+PEWTER_HOUSE_2_HEIGHT EQU $04
+PEWTER_HOUSE_2_WIDTH EQU $04
+
+; PewterPokecenter_h map_id=58
+PEWTER_POKECENTER_HEIGHT EQU $04
+PEWTER_POKECENTER_WIDTH EQU $07
+
+; MtMoon1_h map_id=59
+MT_MOON_1_HEIGHT EQU $12
+MT_MOON_1_WIDTH EQU $14
+
+; MtMoon2_h map_id=60
+MT_MOON_2_HEIGHT EQU $0e
+MT_MOON_2_WIDTH EQU $0e
+
+; MtMoon3_h map_id=61
+MT_MOON_3_HEIGHT EQU $12
+MT_MOON_3_WIDTH EQU $14
+
+; CeruleanHouseTrashed_h map_id=62
+TRASHED_HOUSE_HEIGHT EQU $04
+TRASHED_HOUSE_WIDTH EQU $04
+
+; CeruleanHouse_h map_id=63
+CERULEAN_HOUSE_HEIGHT EQU $04
+CERULEAN_HOUSE_WIDTH EQU $04
+
+; CeruleanPokecenter_h map_id=64
+CERULEAN_POKECENTER_HEIGHT EQU $04
+CERULEAN_POKECENTER_WIDTH EQU $07
+
+; CeruleanGym_h map_id=65
+CERULEAN_GYM_HEIGHT EQU $07
+CERULEAN_GYM_WIDTH EQU $05
+
+; BikeShop_h map_id=66
+BIKE_SHOP_HEIGHT EQU $04
+BIKE_SHOP_WIDTH EQU $04
+
+; CeruleanMart_h map_id=67
+CERULEAN_MART_HEIGHT EQU $04
+CERULEAN_MART_WIDTH EQU $04
+
+; MtMoonPokecenter_h map_id=68
+MT_MOON_POKECENTER_HEIGHT EQU $04
+MT_MOON_POKECENTER_WIDTH EQU $07
+
+; Route5Gate_h map_id=70
+ROUTE_5_GATE_HEIGHT EQU $03
+ROUTE_5_GATE_WIDTH EQU $04
+
+; UndergroundTunnelEntranceRoute5_h map_id=71
+PATH_ENTRANCE_ROUTE_5_HEIGHT EQU $04
+PATH_ENTRANCE_ROUTE_5_WIDTH EQU $04
+
+; DayCareM_h map_id=72
+DAYCAREM_HEIGHT EQU $04
+DAYCAREM_WIDTH EQU $04
+
+; Route6Gate_h map_id=73
+ROUTE_6_GATE_HEIGHT EQU $03
+ROUTE_6_GATE_WIDTH EQU $04
+
+; UndergroundTunnelEntranceRoute6_h map_id=74
+PATH_ENTRANCE_ROUTE_6_HEIGHT EQU $04
+PATH_ENTRANCE_ROUTE_6_WIDTH EQU $04
+
+; Route7Gate_h map_id=76
+ROUTE_7_GATE_HEIGHT EQU $04
+ROUTE_7_GATE_WIDTH EQU $03
+
+; UndergroundPathEntranceRoute7_h map_id=77
+PATH_ENTRANCE_ROUTE_7_HEIGHT EQU $04
+PATH_ENTRANCE_ROUTE_7_WIDTH EQU $04
+
+; Route8Gate_h map_id=79
+ROUTE_8_GATE_HEIGHT EQU $04
+ROUTE_8_GATE_WIDTH EQU $03
+
+; UndergroundPathEntranceRoute8_h map_id=80
+PATH_ENTRANCE_ROUTE_8_HEIGHT EQU $04
+PATH_ENTRANCE_ROUTE_8_WIDTH EQU $04
+
+; RockTunnelPokecenter_h map_id=81
+ROCK_TUNNEL_POKECENTER_HEIGHT EQU $04
+ROCK_TUNNEL_POKECENTER_WIDTH EQU $07
+
+; RockTunnel1_h map_id=82
+ROCK_TUNNEL_1_HEIGHT EQU $12
+ROCK_TUNNEL_1_WIDTH EQU $14
+
+; PowerPlant_h map_id=83
+POWER_PLANT_HEIGHT EQU $12
+POWER_PLANT_WIDTH EQU $14
+
+; Route11Gate_h map_id=84
+ROUTE_11_GATE_1F_HEIGHT EQU $05
+ROUTE_11_GATE_1F_WIDTH EQU $04
+
+; DiglettsCaveEntranceRoute11_h map_id=85
+DIGLETTS_CAVE_ENTRANCE_HEIGHT EQU $04
+DIGLETTS_CAVE_ENTRANCE_WIDTH EQU $04
+
+; Route11GateUpstairs_h map_id=86
+ROUTE_11_GATE_2F_HEIGHT EQU $04
+ROUTE_11_GATE_2F_WIDTH EQU $04
+
+; Route12Gate_h map_id=87
+ROUTE_12_GATE_HEIGHT EQU $04
+ROUTE_12_GATE_WIDTH EQU $05
+
+; BillsHouse_h map_id=88
+BILLS_HOUSE_HEIGHT EQU $04
+BILLS_HOUSE_WIDTH EQU $04
+
+; VermilionPokecenter_h map_id=89
+VERMILION_POKECENTER_HEIGHT EQU $04
+VERMILION_POKECENTER_WIDTH EQU $07
+
+; FanClub_h map_id=90
+POKEMON_FAN_CLUB_HEIGHT EQU $04
+POKEMON_FAN_CLUB_WIDTH EQU $04
+
+; VermilionMart_h map_id=91
+VERMILION_MART_HEIGHT EQU $04
+VERMILION_MART_WIDTH EQU $04
+
+; VermilionGym_h map_id=92
+VERMILION_GYM_HEIGHT EQU $09
+VERMILION_GYM_WIDTH EQU $05
+
+; VermilionHouse1_h map_id=93
+VERMILION_HOUSE_1_HEIGHT EQU $04
+VERMILION_HOUSE_1_WIDTH EQU $04
+
+; VermilionDock_h map_id=94
+VERMILION_DOCK_HEIGHT EQU $06
+VERMILION_DOCK_WIDTH EQU $0e
+
+; SSAnne1_h map_id=95
+SS_ANNE_1_HEIGHT EQU $09
+SS_ANNE_1_WIDTH EQU $14
+
+; SSAnne2_h map_id=96
+SS_ANNE_2_HEIGHT EQU $09
+SS_ANNE_2_WIDTH EQU $14
+
+; SSAnne3_h map_id=97
+SS_ANNE_3_HEIGHT EQU $03
+SS_ANNE_3_WIDTH EQU $0a
+
+; SSAnne4_h map_id=98
+SS_ANNE_4_HEIGHT EQU $04
+SS_ANNE_4_WIDTH EQU $0f
+
+; SSAnne5_h map_id=99
+SS_ANNE_5_HEIGHT EQU $07
+SS_ANNE_5_WIDTH EQU $0a
+
+; SSAnne6_h map_id=100
+SS_ANNE_6_HEIGHT EQU $08
+SS_ANNE_6_WIDTH EQU $07
+
+; SSAnne7_h map_id=101
+SS_ANNE_7_HEIGHT EQU $04
+SS_ANNE_7_WIDTH EQU $03
+
+; SSAnne8_h map_id=102
+SS_ANNE_8_HEIGHT EQU $08
+SS_ANNE_8_WIDTH EQU $0c
+
+; SSAnne9_h map_id=103
+SS_ANNE_9_HEIGHT EQU $08
+SS_ANNE_9_WIDTH EQU $0c
+
+; SSAnne10_h map_id=104
+SS_ANNE_10_HEIGHT EQU $08
+SS_ANNE_10_WIDTH EQU $0c
+
+; VictoryRoad1_h map_id=108
+VICTORY_ROAD_1_HEIGHT EQU $09
+VICTORY_ROAD_1_WIDTH EQU $0a
+
+; Lance_h map_id=113
+LANCES_ROOM_HEIGHT EQU $0d
+LANCES_ROOM_WIDTH EQU $0d
+
+; HallofFameRoom_h map_id=118
+HALL_OF_FAME_HEIGHT EQU $04
+HALL_OF_FAME_WIDTH EQU $05
+
+; UndergroundPathNS_h map_id=119
+UNDERGROUND_PATH_NS_HEIGHT EQU $18
+UNDERGROUND_PATH_NS_WIDTH EQU $04
+
+; Gary_h map_id=120
+CHAMPIONS_ROOM_HEIGHT EQU $04
+CHAMPIONS_ROOM_WIDTH EQU $04
+
+; UndergroundPathWE_h map_id=121
+UNDERGROUND_PATH_WE_HEIGHT EQU $04
+UNDERGROUND_PATH_WE_WIDTH EQU $19
+
+; CeladonMart1_h map_id=122
+CELADON_MART_1_HEIGHT EQU $04
+CELADON_MART_1_WIDTH EQU $0a
+
+; CeladonMart2_h map_id=123
+CELADON_MART_2_HEIGHT EQU $04
+CELADON_MART_2_WIDTH EQU $0a
+
+; CeladonMart3_h map_id=124
+CELADON_MART_3_HEIGHT EQU $04
+CELADON_MART_3_WIDTH EQU $0a
+
+; CeladonMart4_h map_id=125
+CELADON_MART_4_HEIGHT EQU $04
+CELADON_MART_4_WIDTH EQU $0a
+
+; CeladonMartRoof_h map_id=126
+CELADON_MART_ROOF_HEIGHT EQU $04
+CELADON_MART_ROOF_WIDTH EQU $0a
+
+; CeladonMartElevator_h map_id=127
+CELADON_MART_ELEVATOR_HEIGHT EQU $02
+CELADON_MART_ELEVATOR_WIDTH EQU $02
+
+; CeladonMansion1_h map_id=128
+CELADON_MANSION_1_HEIGHT EQU $06
+CELADON_MANSION_1_WIDTH EQU $04
+
+; CeladonMansion2_h map_id=129
+CELADON_MANSION_2_HEIGHT EQU $06
+CELADON_MANSION_2_WIDTH EQU $04
+
+; CeladonMansion3_h map_id=130
+CELADON_MANSION_3_HEIGHT EQU $06
+CELADON_MANSION_3_WIDTH EQU $04
+
+; CeladonMansion4_h map_id=131
+CELADON_MANSION_4_HEIGHT EQU $06
+CELADON_MANSION_4_WIDTH EQU $04
+
+; CeladonMansion5_h map_id=132
+CELADON_MANSION_5_HEIGHT EQU $04
+CELADON_MANSION_5_WIDTH EQU $04
+
+; CeladonPokecenter_h map_id=133
+CELADON_POKECENTER_HEIGHT EQU $04
+CELADON_POKECENTER_WIDTH EQU $07
+
+; CeladonGym_h map_id=134
+CELADON_GYM_HEIGHT EQU $09
+CELADON_GYM_WIDTH EQU $05
+
+; CeladonGameCorner_h map_id=135
+GAME_CORNER_HEIGHT EQU $09
+GAME_CORNER_WIDTH EQU $0a
+
+; CeladonMart5_h map_id=136
+CELADON_MART_5_HEIGHT EQU $04
+CELADON_MART_5_WIDTH EQU $0a
+
+; CeladonPrizeRoom_h map_id=137
+CELADONPRIZE_ROOM_HEIGHT EQU $04
+CELADONPRIZE_ROOM_WIDTH EQU $05
+
+; CeladonDiner_h map_id=138
+CELADON_DINER_HEIGHT EQU $04
+CELADON_DINER_WIDTH EQU $05
+
+; CeladonHouse_h map_id=139
+CELADON_HOUSE_HEIGHT EQU $04
+CELADON_HOUSE_WIDTH EQU $04
+
+; CeladonHotel_h map_id=140
+CELADONHOTEL_HEIGHT EQU $04
+CELADONHOTEL_WIDTH EQU $07
+
+; LavenderPokecenter_h map_id=141
+LAVENDER_POKECENTER_HEIGHT EQU $04
+LAVENDER_POKECENTER_WIDTH EQU $07
+
+; PokemonTower1_h map_id=142
+POKEMONTOWER_1_HEIGHT EQU $09
+POKEMONTOWER_1_WIDTH EQU $0a
+
+; PokemonTower2_h map_id=143
+POKEMONTOWER_2_HEIGHT EQU $09
+POKEMONTOWER_2_WIDTH EQU $0a
+
+; PokemonTower3_h map_id=144
+POKEMONTOWER_3_HEIGHT EQU $09
+POKEMONTOWER_3_WIDTH EQU $0a
+
+; PokemonTower4_h map_id=145
+POKEMONTOWER_4_HEIGHT EQU $09
+POKEMONTOWER_4_WIDTH EQU $0a
+
+; PokemonTower5_h map_id=146
+POKEMONTOWER_5_HEIGHT EQU $09
+POKEMONTOWER_5_WIDTH EQU $0a
+
+; PokemonTower6_h map_id=147
+POKEMONTOWER_6_HEIGHT EQU $09
+POKEMONTOWER_6_WIDTH EQU $0a
+
+; PokemonTower7_h map_id=148
+POKEMONTOWER_7_HEIGHT EQU $09
+POKEMONTOWER_7_WIDTH EQU $0a
+
+; LavenderHouse1_h map_id=149
+LAVENDER_HOUSE_1_HEIGHT EQU $04
+LAVENDER_HOUSE_1_WIDTH EQU $04
+
+; LavenderMart_h map_id=150
+LAVENDER_MART_HEIGHT EQU $04
+LAVENDER_MART_WIDTH EQU $04
+
+; LavenderHouse2_h map_id=151
+LAVENDER_HOUSE_2_HEIGHT EQU $04
+LAVENDER_HOUSE_2_WIDTH EQU $04
+
+; FuchsiaMart_h map_id=152
+FUCHSIA_MART_HEIGHT EQU $04
+FUCHSIA_MART_WIDTH EQU $04
+
+; FuchsiaHouse1_h map_id=153
+FUCHSIA_HOUSE_1_HEIGHT EQU $04
+FUCHSIA_HOUSE_1_WIDTH EQU $04
+
+; FuchsiaPokecenter_h map_id=154
+FUCHSIA_POKECENTER_HEIGHT EQU $04
+FUCHSIA_POKECENTER_WIDTH EQU $07
+
+; FuchsiaHouse2_h map_id=155
+FUCHSIA_HOUSE_2_HEIGHT EQU $04
+FUCHSIA_HOUSE_2_WIDTH EQU $05
+
+; SafariZoneEntrance_h map_id=156
+SAFARIZONEENTRANCE_HEIGHT EQU $03
+SAFARIZONEENTRANCE_WIDTH EQU $04
+
+; FuchsiaGym_h map_id=157
+FUCHSIA_GYM_HEIGHT EQU $09
+FUCHSIA_GYM_WIDTH EQU $05
+
+; FuchsiaMeetingRoom_h map_id=158
+FUCHSIAMEETINGROOM_HEIGHT EQU $04
+FUCHSIAMEETINGROOM_WIDTH EQU $07
+
+; SeafoamIslands2_h map_id=159
+SEAFOAM_ISLANDS_2_HEIGHT EQU $09
+SEAFOAM_ISLANDS_2_WIDTH EQU $0f
+
+; SeafoamIslands3_h map_id=160
+SEAFOAM_ISLANDS_3_HEIGHT EQU $09
+SEAFOAM_ISLANDS_3_WIDTH EQU $0f
+
+; SeafoamIslands4_h map_id=161
+SEAFOAM_ISLANDS_4_HEIGHT EQU $09
+SEAFOAM_ISLANDS_4_WIDTH EQU $0f
+
+; SeafoamIslands5_h map_id=162
+SEAFOAM_ISLANDS_5_HEIGHT EQU $09
+SEAFOAM_ISLANDS_5_WIDTH EQU $0f
+
+; VermilionHouse2_h map_id=163
+VERMILION_HOUSE_2_HEIGHT EQU $04
+VERMILION_HOUSE_2_WIDTH EQU $04
+
+; FuchsiaHouse3_h map_id=164
+FUCHSIA_HOUSE_3_HEIGHT EQU $04
+FUCHSIA_HOUSE_3_WIDTH EQU $04
+
+; Mansion1_h map_id=165
+MANSION_1_HEIGHT EQU $0e
+MANSION_1_WIDTH EQU $0f
+
+; CinnabarGym_h map_id=166
+CINNABAR_GYM_HEIGHT EQU $09
+CINNABAR_GYM_WIDTH EQU $0a
+
+; Lab1_h map_id=167
+CINNABAR_LAB_1_HEIGHT EQU $04
+CINNABAR_LAB_1_WIDTH EQU $09
+
+; Lab2_h map_id=168
+CINNABAR_LAB_2_HEIGHT EQU $04
+CINNABAR_LAB_2_WIDTH EQU $04
+
+; Lab3_h map_id=169
+CINNABAR_LAB_3_HEIGHT EQU $04
+CINNABAR_LAB_3_WIDTH EQU $04
+
+; Lab4_h map_id=170
+CINNABAR_LAB_4_HEIGHT EQU $04
+CINNABAR_LAB_4_WIDTH EQU $04
+
+; CinnabarPokecenter_h map_id=171
+CINNABAR_POKECENTER_HEIGHT EQU $04
+CINNABAR_POKECENTER_WIDTH EQU $07
+
+; CinnabarMart_h map_id=172
+CINNABAR_MART_HEIGHT EQU $04
+CINNABAR_MART_WIDTH EQU $04
+
+; IndigoPlateauLobby_h map_id=174
+INDIGO_PLATEAU_LOBBY_HEIGHT EQU $06
+INDIGO_PLATEAU_LOBBY_WIDTH EQU $08
+
+; CopycatsHouseF1_h map_id=175
+COPYCATS_HOUSE_1F_HEIGHT EQU $04
+COPYCATS_HOUSE_1F_WIDTH EQU $04
+
+; CopycatsHouseF2_h map_id=176
+COPYCATS_HOUSE_2F_HEIGHT EQU $04
+COPYCATS_HOUSE_2F_WIDTH EQU $04
+
+; FightingDojo_h map_id=177
+FIGHTINGDOJO_HEIGHT EQU $06
+FIGHTINGDOJO_WIDTH EQU $05
+
+; SaffronGym_h map_id=178
+SAFFRON_GYM_HEIGHT EQU $09
+SAFFRON_GYM_WIDTH EQU $0a
+
+; SaffronHouse1_h map_id=179
+SAFFRON_HOUSE_1_HEIGHT EQU $04
+SAFFRON_HOUSE_1_WIDTH EQU $04
+
+; SaffronMart_h map_id=180
+SAFFRON_MART_HEIGHT EQU $04
+SAFFRON_MART_WIDTH EQU $04
+
+; SilphCo1_h map_id=181
+SILPH_CO_1F_HEIGHT EQU $09
+SILPH_CO_1F_WIDTH EQU $0f
+
+; SaffronPokecenter_h map_id=182
+SAFFRON_POKECENTER_HEIGHT EQU $04
+SAFFRON_POKECENTER_WIDTH EQU $07
+
+; SaffronHouse2_h map_id=183
+SAFFRON_HOUSE_2_HEIGHT EQU $04
+SAFFRON_HOUSE_2_WIDTH EQU $04
+
+; Route15Gate1F_h map_id=184
+ROUTE_15_GATE_1F_HEIGHT EQU $05
+ROUTE_15_GATE_1F_WIDTH EQU $04
+
+; Route15GateUpstairs_h map_id=185
+ROUTE_15_GATE_2F_HEIGHT EQU 4
+ROUTE_15_GATE_2F_WIDTH EQU 4
+
+; Route16GateMap_h map_id=186
+ROUTE_16_GATE_1F_HEIGHT EQU $07
+ROUTE_16_GATE_1F_WIDTH EQU $04
+
+; Route16GateUpstairs_h map_id=187
+ROUTE_16_GATE_2F_HEIGHT EQU $04
+ROUTE_16_GATE_2F_WIDTH EQU $04
+
+; Route16House_h map_id=188
+ROUTE_16_HOUSE_HEIGHT EQU $04
+ROUTE_16_HOUSE_WIDTH EQU $04
+
+; Route12House_h map_id=189
+ROUTE_12_HOUSE_HEIGHT EQU $04
+ROUTE_12_HOUSE_WIDTH EQU $04
+
+; Route18Gate_h map_id=190
+ROUTE_18_GATE_1F_HEIGHT EQU $05
+ROUTE_18_GATE_1F_WIDTH EQU $04
+
+; Route18GateHeader_h map_id=191
+ROUTE_18_GATE_2F_HEIGHT EQU $04
+ROUTE_18_GATE_2F_WIDTH EQU $04
+
+; SeafoamIslands1_h map_id=192
+SEAFOAM_ISLANDS_1_HEIGHT EQU $09
+SEAFOAM_ISLANDS_1_WIDTH EQU $0f
+
+; Route22Gate_h map_id=193
+ROUTE_22_GATE_HEIGHT EQU $04
+ROUTE_22_GATE_WIDTH EQU $05
+
+; VictoryRoad2_h map_id=194
+VICTORY_ROAD_2_HEIGHT EQU $09
+VICTORY_ROAD_2_WIDTH EQU $0f
+
+; Route12GateUpstairs_h map_id=195
+ROUTE_12_GATE_2F_HEIGHT EQU $04
+ROUTE_12_GATE_2F_WIDTH EQU $04
+
+; VermilionHouse3_h map_id=196
+VERMILION_HOUSE_3_HEIGHT EQU $04
+VERMILION_HOUSE_3_WIDTH EQU $04
+
+; DiglettsCave_h map_id=197
+DIGLETTS_CAVE_HEIGHT EQU $12
+DIGLETTS_CAVE_WIDTH EQU $14
+
+; VictoryRoad3_h map_id=198
+VICTORY_ROAD_3_HEIGHT EQU $09
+VICTORY_ROAD_3_WIDTH EQU $0f
+
+; RocketHideout1_h map_id=199
+ROCKET_HIDEOUT_1_HEIGHT EQU $0e
+ROCKET_HIDEOUT_1_WIDTH EQU $0f
+
+; RocketHideout2_h map_id=200
+ROCKET_HIDEOUT_2_HEIGHT EQU $0e
+ROCKET_HIDEOUT_2_WIDTH EQU $0f
+
+; RocketHideout3_h map_id=201
+ROCKET_HIDEOUT_3_HEIGHT EQU $0e
+ROCKET_HIDEOUT_3_WIDTH EQU $0f
+
+; RocketHideout4_h map_id=202
+ROCKET_HIDEOUT_4_HEIGHT EQU $0c
+ROCKET_HIDEOUT_4_WIDTH EQU $0f
+
+; RocketHideoutElevator_h map_id=203
+ROCKET_HIDEOUT_ELEVATOR_HEIGHT EQU $04
+ROCKET_HIDEOUT_ELEVATOR_WIDTH EQU $03
+
+; SilphCo2_h map_id=207
+SILPH_CO_2F_HEIGHT EQU $09
+SILPH_CO_2F_WIDTH EQU $0f
+
+; SilphCo3_h map_id=208
+SILPH_CO_3F_HEIGHT EQU $09
+SILPH_CO_3F_WIDTH EQU $0f
+
+; SilphCo4_h map_id=209
+SILPH_CO_4F_HEIGHT EQU $09
+SILPH_CO_4F_WIDTH EQU $0f
+
+; SilphCo5_h map_id=210
+SILPH_CO_5F_HEIGHT EQU $09
+SILPH_CO_5F_WIDTH EQU $0f
+
+; SilphCo6_h map_id=211
+SILPH_CO_6F_HEIGHT EQU $09
+SILPH_CO_6F_WIDTH EQU $0d
+
+; SilphCo7_h map_id=212
+SILPH_CO_7F_HEIGHT EQU $09
+SILPH_CO_7F_WIDTH EQU $0d
+
+; SilphCo8_h map_id=213
+SILPH_CO_8F_HEIGHT EQU $09
+SILPH_CO_8F_WIDTH EQU $0d
+
+; Mansion2_h map_id=214
+MANSION_2_HEIGHT EQU $0e
+MANSION_2_WIDTH EQU $0f
+
+; Mansion3_h map_id=215
+MANSION_3_HEIGHT EQU $09
+MANSION_3_WIDTH EQU $0f
+
+; Mansion4_h map_id=216
+MANSION_4_HEIGHT EQU $0e
+MANSION_4_WIDTH EQU $0f
+
+; SafariZoneEast_h map_id=217
+SAFARI_ZONE_EAST_HEIGHT EQU $0d
+SAFARI_ZONE_EAST_WIDTH EQU $0f
+
+; SafariZoneNorth_h map_id=218
+SAFARI_ZONE_NORTH_HEIGHT EQU $12
+SAFARI_ZONE_NORTH_WIDTH EQU $14
+
+; SafariZoneWest_h map_id=219
+SAFARI_ZONE_WEST_HEIGHT EQU $0d
+SAFARI_ZONE_WEST_WIDTH EQU $0f
+
+; SafariZoneCenter_h map_id=220
+SAFARI_ZONE_CENTER_HEIGHT EQU $0d
+SAFARI_ZONE_CENTER_WIDTH EQU $0f
+
+; SafariZoneRestHouse1_h map_id=221
+SAFARI_ZONE_REST_HOUSE_1_HEIGHT EQU $04
+SAFARI_ZONE_REST_HOUSE_1_WIDTH EQU $04
+
+; SafariZoneSecretHouse_h map_id=222
+SAFARI_ZONE_SECRET_HOUSE_HEIGHT EQU $04
+SAFARI_ZONE_SECRET_HOUSE_WIDTH EQU $04
+
+; SafariZoneRestHouse2_h map_id=223
+SAFARI_ZONE_REST_HOUSE_2_HEIGHT EQU $04
+SAFARI_ZONE_REST_HOUSE_2_WIDTH EQU $04
+
+; SafariZoneRestHouse3_h map_id=224
+SAFARI_ZONE_REST_HOUSE_3_HEIGHT EQU $04
+SAFARI_ZONE_REST_HOUSE_3_WIDTH EQU $04
+
+; SafariZoneRestHouse4_h map_id=225
+SAFARI_ZONE_REST_HOUSE_4_HEIGHT EQU $04
+SAFARI_ZONE_REST_HOUSE_4_WIDTH EQU $04
+
+; UnknownDungeon2_h map_id=226
+UNKNOWN_DUNGEON_2_HEIGHT EQU $09
+UNKNOWN_DUNGEON_2_WIDTH EQU $0f
+
+; UnknownDungeon3_h map_id=227
+UNKNOWN_DUNGEON_3_HEIGHT EQU $09
+UNKNOWN_DUNGEON_3_WIDTH EQU $0f
+
+; UnknownDungeon1_h map_id=228
+UNKNOWN_DUNGEON_1_HEIGHT EQU $09
+UNKNOWN_DUNGEON_1_WIDTH EQU $0f
+
+; NameRater_h map_id=229
+NAME_RATERS_HOUSE_HEIGHT EQU $04
+NAME_RATERS_HOUSE_WIDTH EQU $04
+
+; CeruleanHouse2_h map_id=230
+CERULEAN_HOUSE_2_HEIGHT EQU $04
+CERULEAN_HOUSE_2_WIDTH EQU $04
+
+; RockTunnel2_h map_id=232
+ROCK_TUNNEL_2_HEIGHT EQU $12
+ROCK_TUNNEL_2_WIDTH EQU $14
+
+; SilphCo9_h map_id=233
+SILPH_CO_9F_HEIGHT EQU $09
+SILPH_CO_9F_WIDTH EQU $0d
+
+; SilphCo10_h map_id=234
+SILPH_CO_10F_HEIGHT EQU $09
+SILPH_CO_10F_WIDTH EQU $08
+
+; SilphCo11_h map_id=235
+SILPH_CO_11F_HEIGHT EQU $09
+SILPH_CO_11F_WIDTH EQU $09
+
+; SilphCoElevator_h map_id=236
+SILPH_CO_ELEVATOR_HEIGHT EQU $02
+SILPH_CO_ELEVATOR_WIDTH EQU $02
+
+; BattleCenterM_h map_id=239
+BATTLE_CENTER_HEIGHT EQU $04
+BATTLE_CENTER_WIDTH EQU $05
+
+; TradeCenterM_h map_id=240
+TRADE_CENTER_HEIGHT EQU $04
+TRADE_CENTER_WIDTH EQU $05
+
+; Lorelei_h map_id=245
+LORELEIS_ROOM_HEIGHT EQU $06
+LORELEIS_ROOM_WIDTH EQU $05
+
+; Bruno_h map_id=246
+BRUNOS_ROOM_HEIGHT EQU $06
+BRUNOS_ROOM_WIDTH EQU $05
+
+; Agatha_h map_id=247
+AGATHAS_ROOM_HEIGHT EQU $06
+AGATHAS_ROOM_WIDTH EQU $05
+
--- /dev/null
+++ b/constants/move_constants.asm
@@ -1,0 +1,180 @@
+POUND EQU $01
+KARATE_CHOP EQU $02
+DOUBLESLAP EQU $03
+COMET_PUNCH EQU $04
+MEGA_PUNCH EQU $05
+PAY_DAY EQU $06
+FIRE_PUNCH EQU $07
+ICE_PUNCH EQU $08
+THUNDERPUNCH EQU $09
+SCRATCH EQU $0A
+VICEGRIP EQU $0B
+GUILLOTINE EQU $0C
+RAZOR_WIND EQU $0D
+SWORDS_DANCE EQU $0E
+CUT EQU $0F
+GUST EQU $10
+WING_ATTACK EQU $11
+WHIRLWIND EQU $12
+FLY EQU $13
+BIND EQU $14
+SLAM EQU $15
+VINE_WHIP EQU $16
+STOMP EQU $17
+DOUBLE_KICK EQU $18
+MEGA_KICK EQU $19
+JUMP_KICK EQU $1A
+ROLLING_KICK EQU $1B
+SAND_ATTACK EQU $1C
+HEADBUTT EQU $1D
+HORN_ATTACK EQU $1E
+FURY_ATTACK EQU $1F
+HORN_DRILL EQU $20
+TACKLE EQU $21
+BODY_SLAM EQU $22
+WRAP EQU $23
+TAKE_DOWN EQU $24
+THRASH EQU $25
+DOUBLE_EDGE EQU $26
+TAIL_WHIP EQU $27
+POISON_STING EQU $28
+TWINEEDLE EQU $29
+PIN_MISSILE EQU $2A
+LEER EQU $2B
+BITE EQU $2C
+GROWL EQU $2D
+ROAR EQU $2E
+SING EQU $2F
+SUPERSONIC EQU $30
+SONICBOOM EQU $31
+DISABLE EQU $32
+ACID EQU $33
+EMBER EQU $34
+FLAMETHROWER EQU $35
+MIST EQU $36
+WATER_GUN EQU $37
+HYDRO_PUMP EQU $38
+SURF EQU $39
+ICE_BEAM EQU $3A
+BLIZZARD EQU $3B
+PSYBEAM EQU $3C
+BUBBLEBEAM EQU $3D
+AURORA_BEAM EQU $3E
+HYPER_BEAM EQU $3F
+PECK EQU $40
+DRILL_PECK EQU $41
+SUBMISSION EQU $42
+LOW_KICK EQU $43
+COUNTER EQU $44
+SEISMIC_TOSS EQU $45
+STRENGTH EQU $46
+ABSORB EQU $47
+MEGA_DRAIN EQU $48
+LEECH_SEED EQU $49
+GROWTH EQU $4A
+RAZOR_LEAF EQU $4B
+SOLARBEAM EQU $4C
+POISONPOWDER EQU $4D
+STUN_SPORE EQU $4E
+SLEEP_POWDER EQU $4F
+PETAL_DANCE EQU $50
+STRING_SHOT EQU $51
+DRAGON_RAGE EQU $52
+FIRE_SPIN EQU $53
+THUNDERSHOCK EQU $54
+THUNDERBOLT EQU $55
+THUNDER_WAVE EQU $56
+THUNDER EQU $57
+ROCK_THROW EQU $58
+EARTHQUAKE EQU $59
+FISSURE EQU $5A
+DIG EQU $5B
+TOXIC EQU $5C
+CONFUSION EQU $5D
+PSYCHIC_M EQU $5E
+HYPNOSIS EQU $5F
+MEDITATE EQU $60
+AGILITY EQU $61
+QUICK_ATTACK EQU $62
+RAGE EQU $63
+TELEPORT EQU $64
+NIGHT_SHADE EQU $65
+MIMIC EQU $66
+SCREECH EQU $67
+DOUBLE_TEAM EQU $68
+RECOVER EQU $69
+HARDEN EQU $6A
+MINIMIZE EQU $6B
+SMOKESCREEN EQU $6C
+CONFUSE_RAY EQU $6D
+WITHDRAW EQU $6E
+DEFENSE_CURL EQU $6F
+BARRIER EQU $70
+LIGHT_SCREEN EQU $71
+HAZE EQU $72
+REFLECT EQU $73
+FOCUS_ENERGY EQU $74
+BIDE EQU $75
+METRONOME EQU $76
+MIRROR_MOVE EQU $77
+SELFDESTRUCT EQU $78
+EGG_BOMB EQU $79
+LICK EQU $7A
+SMOG EQU $7B
+SLUDGE EQU $7C
+BONE_CLUB EQU $7D
+FIRE_BLAST EQU $7E
+WATERFALL EQU $7F
+CLAMP EQU $80
+SWIFT EQU $81
+SKULL_BASH EQU $82
+SPIKE_CANNON EQU $83
+CONSTRICT EQU $84
+AMNESIA EQU $85
+KINESIS EQU $86
+SOFTBOILED EQU $87
+HI_JUMP_KICK EQU $88
+GLARE EQU $89
+DREAM_EATER EQU $8A
+POISON_GAS EQU $8B
+BARRAGE EQU $8C
+LEECH_LIFE EQU $8D
+LOVELY_KISS EQU $8E
+SKY_ATTACK EQU $8F
+TRANSFORM EQU $90
+BUBBLE EQU $91
+DIZZY_PUNCH EQU $92
+SPORE EQU $93
+FLASH EQU $94
+PSYWAVE EQU $95
+SPLASH EQU $96
+ACID_ARMOR EQU $97
+CRABHAMMER EQU $98
+EXPLOSION EQU $99
+FURY_SWIPES EQU $9A
+BONEMERANG EQU $9B
+REST EQU $9C
+ROCK_SLIDE EQU $9D
+HYPER_FANG EQU $9E
+SHARPEN EQU $9F
+CONVERSION EQU $A0
+TRI_ATTACK EQU $A1
+SUPER_FANG EQU $A2
+SLASH EQU $A3
+SUBSTITUTE EQU $A4
+STRUGGLE EQU $A5
+; these do double duty as animation identifiers
+SHOWPIC_ANIM EQU $A6 ; redraw monster pic
+XSTATITEM_ANIM EQU $AE ; use X Attack/Defense/Speed/Special
+SLP_ANIM EQU $BD ; sleeping monster
+CONF_ANIM EQU $BF ; confused monster
+TOSS_ANIM EQU $C1 ; toss Poké Ball
+SHAKE_ANIM EQU $C2 ; shaking Poké Ball when catching monster
+POOF_ANIM EQU $C3 ; puff of smoke
+BLOCKBALL_ANIM EQU $C4 ; trainer knocks away Poké Ball
+GREATTOSS_ANIM EQU $C5 ; toss Great Ball
+ULTRATOSS_ANIM EQU $C6 ; toss Ultra Ball or Master Ball
+HIDEPIC_ANIM EQU $C8 ; monster disappears
+ROCK_ANIM EQU $C9 ; throw rock
+BAIT_ANIM EQU $CA ; throw bait
+
--- /dev/null
+++ b/constants/move_effect_constants.asm
@@ -1,0 +1,73 @@
+; tentative move effect constants
+; {stat}_(UP|DOWN)(1|2) means that the move raises the user's (or lowers the target's) corresponding stat modifier by 1 (or 2) stages
+; {status condition}_side_effect means that the move has a side chance of causing that condition
+; {status condition}_effect means that the move causes the status condition every time it hits the target
+NO_ADDITIONAL_EFFECT EQU $00
+POISON_SIDE_EFFECT1 EQU $02
+DRAIN_HP_EFFECT EQU $03
+BURN_SIDE_EFFECT1 EQU $04
+FREEZE_SIDE_EFFECT EQU $05
+PARALYZE_SIDE_EFFECT1 EQU $06
+EXPLODE_EFFECT EQU $07 ; Explosion, Self Destruct
+DREAM_EATER_EFFECT EQU $08
+MIRROR_MOVE_EFFECT EQU $09
+ATTACK_UP1_EFFECT EQU $0A
+DEFENSE_UP1_EFFECT EQU $0B
+SPECIAL_UP1_EFFECT EQU $0D
+EVASION_UP1_EFFECT EQU $0F
+PAY_DAY_EFFECT EQU $10
+SWIFT_EFFECT EQU $11
+ATTACK_DOWN1_EFFECT EQU $12
+DEFENSE_DOWN1_EFFECT EQU $13
+SPEED_DOWN1_EFFECT EQU $14
+ACCURACY_DOWN1_EFFECT EQU $16
+CONVERSION_EFFECT EQU $18
+HAZE_EFFECT EQU $19
+BIDE_EFFECT EQU $1A
+THRASH_PETAL_DANCE_EFFECT EQU $1B
+SWITCH_AND_TELEPORT_EFFECT EQU $1C
+TWO_TO_FIVE_ATTACKS_EFFECT EQU $1D
+FLINCH_SIDE_EFFECT1 EQU $1F
+SLEEP_EFFECT EQU $20
+POISON_SIDE_EFFECT2 EQU $21
+BURN_SIDE_EFFECT2 EQU $22
+PARALYZE_SIDE_EFFECT2 EQU $24
+FLINCH_SIDE_EFFECT2 EQU $25
+OHKO_EFFECT EQU $26 ; moves like Horn Drill
+CHARGE_EFFECT EQU $27 ; moves like Solar Beam
+SUPER_FANG_EFFECT EQU $28
+SPECIAL_DAMAGE_EFFECT EQU $29 ; Seismic Toss, Night Shade, Sonic Boom, Dragon Rage, Psywave
+TRAPPING_EFFECT EQU $2A ; moves like Wrap
+FLY_EFFECT EQU $2B
+ATTACK_TWICE_EFFECT EQU $2C
+JUMP_KICK_EFFECT EQU $2D ; Jump Kick and Hi Jump Kick effect
+MIST_EFFECT EQU $2E
+FOCUS_ENERGY_EFFECT EQU $2F
+RECOIL_EFFECT EQU $30 ; moves like Double Edge
+CONFUSION_EFFECT EQU $31 ; Confuse Ray, Supersonic (not the move Confusion)
+ATTACK_UP2_EFFECT EQU $32
+DEFENSE_UP2_EFFECT EQU $33
+SPEED_UP2_EFFECT EQU $34
+SPECIAL_UP2_EFFECT EQU $35
+HEAL_EFFECT EQU $38 ; Recover, Softboiled, Rest
+TRANSFORM_EFFECT EQU $39
+DEFENSE_DOWN2_EFFECT EQU $3B
+LIGHT_SCREEN_EFFECT EQU $40
+REFLECT_EFFECT EQU $41
+POISON_EFFECT EQU $42
+PARALYZE_EFFECT EQU $43
+ATTACK_DOWN_SIDE_EFFECT EQU $44
+DEFENSE_DOWN_SIDE_EFFECT EQU $45
+SPEED_DOWN_SIDE_EFFECT EQU $46
+SPECIAL_DOWN_SIDE_EFFECT EQU $47
+CONFUSION_SIDE_EFFECT EQU $4C
+TWINEEDLE_EFFECT EQU $4D
+SUBSTITUTE_EFFECT EQU $4F
+HYPER_BEAM_EFFECT EQU $50
+RAGE_EFFECT EQU $51
+MIMIC_EFFECT EQU $52
+METRONOME_EFFECT EQU $53
+LEECH_SEED_EFFECT EQU $54
+SPLASH_EFFECT EQU $55
+DISABLE_EFFECT EQU $56
+
--- /dev/null
+++ b/constants/palette_constants.asm
@@ -1,0 +1,39 @@
+; super game boy palettes
+PAL_ROUTE EQU $00
+PAL_PALLET EQU $01
+PAL_VIRIDIAN EQU $02
+PAL_PEWTER EQU $03
+PAL_CERULEAN EQU $04
+PAL_LAVENDER EQU $05
+PAL_VERMILION EQU $06
+PAL_CELADON EQU $07
+PAL_FUCHSIA EQU $08
+PAL_CINNABAR EQU $09
+PAL_INDIGO EQU $0A
+PAL_SAFFRON EQU $0B
+PAL_TOWNMAP EQU $0C
+PAL_LOGO1 EQU $0D
+; XXX
+PAL_LOGO2 EQU $0F
+PAL_MEWMON EQU $10
+PAL_BLUEMON EQU $11
+PAL_REDMON EQU $12
+PAL_CYANMON EQU $13
+PAL_PURPLEMON EQU $14
+PAL_BROWNMON EQU $15
+PAL_GREENMON EQU $16
+PAL_PINKMON EQU $17
+PAL_YELLOWMON EQU $18
+PAL_GREYMON EQU $19
+PAL_SLOTS1 EQU $1A
+PAL_SLOTS2 EQU $1B
+PAL_SLOTS3 EQU $1C
+PAL_SLOTS4 EQU $1D
+PAL_BLACK EQU $1E
+PAL_GREENBAR EQU $1F
+PAL_YELLOWBAR EQU $20
+PAL_REDBAR EQU $21
+PAL_BADGE EQU $22
+PAL_CAVE EQU $23
+; XXX
+
--- /dev/null
+++ b/constants/pokedex_constants.asm
@@ -1,0 +1,152 @@
+DEX_BULBASAUR EQU 1
+DEX_IVYSAUR EQU 2
+DEX_VENUSAUR EQU 3
+DEX_CHARMANDER EQU 4
+DEX_CHARMELEON EQU 5
+DEX_CHARIZARD EQU 6
+DEX_SQUIRTLE EQU 7
+DEX_WARTORTLE EQU 8
+DEX_BLASTOISE EQU 9
+DEX_CATERPIE EQU 10
+DEX_METAPOD EQU 11
+DEX_BUTTERFREE EQU 12
+DEX_WEEDLE EQU 13
+DEX_KAKUNA EQU 14
+DEX_BEEDRILL EQU 15
+DEX_PIDGEY EQU 16
+DEX_PIDGEOTTO EQU 17
+DEX_PIDGEOT EQU 18
+DEX_RATTATA EQU 19
+DEX_RATICATE EQU 20
+DEX_SPEAROW EQU 21
+DEX_FEAROW EQU 22
+DEX_EKANS EQU 23
+DEX_ARBOK EQU 24
+DEX_PIKACHU EQU 25
+DEX_RAICHU EQU 26
+DEX_SANDSHREW EQU 27
+DEX_SANDSLASH EQU 28
+DEX_NIDORAN_F EQU 29
+DEX_NIDORINA EQU 30
+DEX_NIDOQUEEN EQU 31
+DEX_NIDORAN_M EQU 32
+DEX_NIDORINO EQU 33
+DEX_NIDOKING EQU 34
+DEX_CLEFAIRY EQU 35
+DEX_CLEFABLE EQU 36
+DEX_VULPIX EQU 37
+DEX_NINETALES EQU 38
+DEX_JIGGLYPUFF EQU 39
+DEX_WIGGLYTUFF EQU 40
+DEX_ZUBAT EQU 41
+DEX_GOLBAT EQU 42
+DEX_ODDISH EQU 43
+DEX_GLOOM EQU 44
+DEX_VILEPLUME EQU 45
+DEX_PARAS EQU 46
+DEX_PARASECT EQU 47
+DEX_VENONAT EQU 48
+DEX_VENOMOTH EQU 49
+DEX_DIGLETT EQU 50
+DEX_DUGTRIO EQU 51
+DEX_MEOWTH EQU 52
+DEX_PERSIAN EQU 53
+DEX_PSYDUCK EQU 54
+DEX_GOLDUCK EQU 55
+DEX_MANKEY EQU 56
+DEX_PRIMEAPE EQU 57
+DEX_GROWLITHE EQU 58
+DEX_ARCANINE EQU 59
+DEX_POLIWAG EQU 60
+DEX_POLIWHIRL EQU 61
+DEX_POLIWRATH EQU 62
+DEX_ABRA EQU 63
+DEX_KADABRA EQU 64
+DEX_ALAKAZAM EQU 65
+DEX_MACHOP EQU 66
+DEX_MACHOKE EQU 67
+DEX_MACHAMP EQU 68
+DEX_BELLSPROUT EQU 69
+DEX_WEEPINBELL EQU 70
+DEX_VICTREEBEL EQU 71
+DEX_TENTACOOL EQU 72
+DEX_TENTACRUEL EQU 73
+DEX_GEODUDE EQU 74
+DEX_GRAVELER EQU 75
+DEX_GOLEM EQU 76
+DEX_PONYTA EQU 77
+DEX_RAPIDASH EQU 78
+DEX_SLOWPOKE EQU 79
+DEX_SLOWBRO EQU 80
+DEX_MAGNEMITE EQU 81
+DEX_MAGNETON EQU 82
+DEX_FARFETCH_D EQU 83
+DEX_DODUO EQU 84
+DEX_DODRIO EQU 85
+DEX_SEEL EQU 86
+DEX_DEWGONG EQU 87
+DEX_GRIMER EQU 88
+DEX_MUK EQU 89
+DEX_SHELLDER EQU 90
+DEX_CLOYSTER EQU 91
+DEX_GASTLY EQU 92
+DEX_HAUNTER EQU 93
+DEX_GENGAR EQU 94
+DEX_ONIX EQU 95
+DEX_DROWZEE EQU 96
+DEX_HYPNO EQU 97
+DEX_KRABBY EQU 98
+DEX_KINGLER EQU 99
+DEX_VOLTORB EQU 100
+DEX_ELECTRODE EQU 101
+DEX_EXEGGCUTE EQU 102
+DEX_EXEGGUTOR EQU 103
+DEX_CUBONE EQU 104
+DEX_MAROWAK EQU 105
+DEX_HITMONLEE EQU 106
+DEX_HITMONCHAN EQU 107
+DEX_LICKITUNG EQU 108
+DEX_KOFFING EQU 109
+DEX_WEEZING EQU 110
+DEX_RHYHORN EQU 111
+DEX_RHYDON EQU 112
+DEX_CHANSEY EQU 113
+DEX_TANGELA EQU 114
+DEX_KANGASKHAN EQU 115
+DEX_HORSEA EQU 116
+DEX_SEADRA EQU 117
+DEX_GOLDEEN EQU 118
+DEX_SEAKING EQU 119
+DEX_STARYU EQU 120
+DEX_STARMIE EQU 121
+DEX_MR_MIME EQU 122
+DEX_SCYTHER EQU 123
+DEX_JYNX EQU 124
+DEX_ELECTABUZZ EQU 125
+DEX_MAGMAR EQU 126
+DEX_PINSIR EQU 127
+DEX_TAUROS EQU 128
+DEX_MAGIKARP EQU 129
+DEX_GYARADOS EQU 130
+DEX_LAPRAS EQU 131
+DEX_DITTO EQU 132
+DEX_EEVEE EQU 133
+DEX_VAPOREON EQU 134
+DEX_JOLTEON EQU 135
+DEX_FLAREON EQU 136
+DEX_PORYGON EQU 137
+DEX_OMANYTE EQU 138
+DEX_OMASTAR EQU 139
+DEX_KABUTO EQU 140
+DEX_KABUTOPS EQU 141
+DEX_AERODACTYL EQU 142
+DEX_SNORLAX EQU 143
+DEX_ARTICUNO EQU 144
+DEX_ZAPDOS EQU 145
+DEX_MOLTRES EQU 146
+DEX_DRATINI EQU 147
+DEX_DRAGONAIR EQU 148
+DEX_DRAGONITE EQU 149
+DEX_MEWTWO EQU 150
+DEX_MEW EQU 151
+
--- /dev/null
+++ b/constants/pokemon_constants.asm
@@ -1,0 +1,155 @@
+RHYDON EQU $01
+KANGASKHAN EQU $02
+NIDORAN_M EQU $03
+CLEFAIRY EQU $04
+SPEAROW EQU $05
+VOLTORB EQU $06
+NIDOKING EQU $07
+SLOWBRO EQU $08
+IVYSAUR EQU $09
+EXEGGUTOR EQU $0A
+LICKITUNG EQU $0B
+EXEGGCUTE EQU $0C
+GRIMER EQU $0D
+GENGAR EQU $0E
+NIDORAN_F EQU $0F
+NIDOQUEEN EQU $10
+CUBONE EQU $11
+RHYHORN EQU $12
+LAPRAS EQU $13
+ARCANINE EQU $14
+MEW EQU $15
+GYARADOS EQU $16
+SHELLDER EQU $17
+TENTACOOL EQU $18
+GASTLY EQU $19
+SCYTHER EQU $1A
+STARYU EQU $1B
+BLASTOISE EQU $1C
+PINSIR EQU $1D
+TANGELA EQU $1E
+GROWLITHE EQU $21
+ONIX EQU $22
+FEAROW EQU $23
+PIDGEY EQU $24
+SLOWPOKE EQU $25
+KADABRA EQU $26
+GRAVELER EQU $27
+CHANSEY EQU $28
+MACHOKE EQU $29
+MR_MIME EQU $2A
+HITMONLEE EQU $2B
+HITMONCHAN EQU $2C
+ARBOK EQU $2D
+PARASECT EQU $2E
+PSYDUCK EQU $2F
+DROWZEE EQU $30
+GOLEM EQU $31
+MAGMAR EQU $33
+ELECTABUZZ EQU $35
+MAGNETON EQU $36
+KOFFING EQU $37
+MANKEY EQU $39
+SEEL EQU $3A
+DIGLETT EQU $3B
+TAUROS EQU $3C
+FARFETCH_D EQU $40
+VENONAT EQU $41
+DRAGONITE EQU $42
+DODUO EQU $46
+POLIWAG EQU $47
+JYNX EQU $48
+MOLTRES EQU $49
+ARTICUNO EQU $4A
+ZAPDOS EQU $4B
+DITTO EQU $4C
+MEOWTH EQU $4D
+KRABBY EQU $4E
+VULPIX EQU $52
+NINETALES EQU $53
+PIKACHU EQU $54
+RAICHU EQU $55
+DRATINI EQU $58
+DRAGONAIR EQU $59
+KABUTO EQU $5A
+KABUTOPS EQU $5B
+HORSEA EQU $5C
+SEADRA EQU $5D
+SANDSHREW EQU $60
+SANDSLASH EQU $61
+OMANYTE EQU $62
+OMASTAR EQU $63
+JIGGLYPUFF EQU $64
+WIGGLYTUFF EQU $65
+EEVEE EQU $66
+FLAREON EQU $67
+JOLTEON EQU $68
+VAPOREON EQU $69
+MACHOP EQU $6A
+ZUBAT EQU $6B
+EKANS EQU $6C
+PARAS EQU $6D
+POLIWHIRL EQU $6E
+POLIWRATH EQU $6F
+WEEDLE EQU $70
+KAKUNA EQU $71
+BEEDRILL EQU $72
+DODRIO EQU $74
+PRIMEAPE EQU $75
+DUGTRIO EQU $76
+VENOMOTH EQU $77
+DEWGONG EQU $78
+CATERPIE EQU $7B
+METAPOD EQU $7C
+BUTTERFREE EQU $7D
+MACHAMP EQU $7E
+GOLDUCK EQU $80
+HYPNO EQU $81
+GOLBAT EQU $82
+MEWTWO EQU $83
+SNORLAX EQU $84
+MAGIKARP EQU $85
+MUK EQU $88
+KINGLER EQU $8A
+CLOYSTER EQU $8B
+ELECTRODE EQU $8D
+CLEFABLE EQU $8E
+WEEZING EQU $8F
+PERSIAN EQU $90
+MAROWAK EQU $91
+HAUNTER EQU $93
+ABRA EQU $94
+ALAKAZAM EQU $95
+PIDGEOTTO EQU $96
+PIDGEOT EQU $97
+STARMIE EQU $98
+BULBASAUR EQU $99
+VENUSAUR EQU $9A
+TENTACRUEL EQU $9B
+GOLDEEN EQU $9D
+SEAKING EQU $9E
+PONYTA EQU $A3
+RAPIDASH EQU $A4
+RATTATA EQU $A5
+RATICATE EQU $A6
+NIDORINO EQU $A7
+NIDORINA EQU $A8
+GEODUDE EQU $A9
+PORYGON EQU $AA
+AERODACTYL EQU $AB
+MAGNEMITE EQU $AD
+CHARMANDER EQU $B0
+SQUIRTLE EQU $B1
+CHARMELEON EQU $B2
+WARTORTLE EQU $B3
+CHARIZARD EQU $B4
+FOSSIL_KABUTOPS EQU $B6
+FOSSIL_AERODACTYL EQU $B7
+MON_GHOST EQU $B8
+ODDISH EQU $B9
+GLOOM EQU $BA
+VILEPLUME EQU $BB
+BELLSPROUT EQU $BC
+WEEPINBELL EQU $BD
+VICTREEBEL EQU $BE
+
--- /dev/null
+++ b/constants/trainer_constants.asm
@@ -1,0 +1,48 @@
+; sometimes it's necessary to add $C8 to these values
+YOUNGSTER EQU $01
+BUG_CATCHER EQU $02
+LASS EQU $03
+SAILOR EQU $04
+JR__TRAINER_M EQU $05
+JR__TRAINER_F EQU $06
+POKEMANIAC EQU $07
+SUPER_NERD EQU $08
+HIKER EQU $09
+BIKER EQU $0A
+BURGLAR EQU $0B
+ENGINEER EQU $0C
+JUGGLER_X EQU $0D
+FISHER EQU $0E
+SWIMMER EQU $0F
+CUE_BALL EQU $10
+GAMBLER EQU $11
+BEAUTY EQU $12
+PSYCHIC_TR EQU $13
+ROCKER EQU $14
+JUGGLER EQU $15
+TAMER EQU $16
+BIRD_KEEPER EQU $17
+BLACKBELT EQU $18
+SONY1 EQU $19
+PROF_OAK EQU $1A
+CHIEF EQU $1B
+SCIENTIST EQU $1C
+GIOVANNI EQU $1D
+ROCKET EQU $1E
+COOLTRAINER_M EQU $1F
+COOLTRAINER_F EQU $20
+BRUNO EQU $21
+BROCK EQU $22
+MISTY EQU $23
+LT__SURGE EQU $24
+ERIKA EQU $25
+KOGA EQU $26
+BLAINE EQU $27
+SABRINA EQU $28
+GENTLEMAN EQU $29
+SONY2 EQU $2A
+SONY3 EQU $2B
+LORELEI EQU $2C
+CHANNELER EQU $2D
+AGATHA EQU $2E
+LANCE EQU $2F