shithub: pokered

Download patch

ref: 4e530306781ccebf483dd86c39bd53bd4ca97fbd
parent: 321e432e078d6eceeb25843341d0078214a58394
parent: 515357a4504aa8c0816f088054c26f1902e71e72
author: U-Fish-PC\Daniel <corrnondacqb@yahoo.com>
date: Tue Dec 10 09:08:08 EST 2013

Merge branch 'master' of https://github.com/iimarckus/pokered

Conflicts:
	main.asm

git/query: bad hash c57e0f0706608a4acba89182945bec975a43acfd diff: cannot open b/constants//null: file does not exist: 'b/constants//null'
--- 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" && find . -iname '*.tx' -exec rm {} +
+	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