summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIIMarckus <iimarckus@gmail.com>2018-08-16 07:48:39 -0600
committerIIMarckus <iimarckus@gmail.com>2018-08-16 07:51:39 -0600
commit46f02aaee0fa392c1d2219818982a45dfffb348b (patch)
treecfbd402ecb6d399a467bf029b4a142eb145aad07
parent439f493aa9335759ed9d82b689ba0cd8f38882b2 (diff)
Sync many constant/macro files with pokecrystal.
-rw-r--r--constants.asm7
-rw-r--r--constants/animation_constants.asm41
-rw-r--r--constants/gfx_constants.asm58
-rw-r--r--constants/input_constants.asm26
-rw-r--r--constants/item_constants.asm109
-rw-r--r--constants/item_data_constants.asm128
-rw-r--r--constants/map_constants.asm1025
-rw-r--r--constants/map_data_constants.asm104
-rw-r--r--constants/map_object_constants.asm294
-rw-r--r--constants/misc_constants.asm302
-rw-r--r--constants/pokemon_data_constants.asm85
-rw-r--r--constants/script_constants.asm228
-rw-r--r--constants/serial_constants.asm30
-rw-r--r--constants/sprite_constants.asm515
-rw-r--r--constants/sprite_data_constants.asm38
-rw-r--r--constants/text_constants.asm46
-rw-r--r--constants/wram_constants.asm3
-rwxr-xr-xdata/map_objects.asm76
-rwxr-xr-xengine/color.asm2
-rwxr-xr-xengine/main_menu.asm2
-rwxr-xr-xengine/move_mon.asm8
-rwxr-xr-xengine/overworld/player_object.asm7
-rwxr-xr-xengine/specials.asm17
-rwxr-xr-xevent/overworld.asm4
-rwxr-xr-xevent/special.asm2
-rw-r--r--home.asm6
-rw-r--r--home/map.asm16
-rw-r--r--home/text.asm10
-rwxr-xr-xitems/item_attributes.asm4
-rwxr-xr-xitems/item_effects.asm6
-rw-r--r--macros.asm11
-rw-r--r--macros/enum.asm5
-rw-r--r--macros/event.asm18
-rw-r--r--macros/map.asm189
-rw-r--r--macros/scripts/events.asm1054
-rw-r--r--macros/scripts/maps.asm132
-rw-r--r--macros/trainer.asm6
-rwxr-xr-xmacros/wram.asm8
-rw-r--r--main.asm4
-rw-r--r--wram.asm28
40 files changed, 2832 insertions, 1822 deletions
diff --git a/constants.asm b/constants.asm
index a9004b73..bdbecc5e 100644
--- a/constants.asm
+++ b/constants.asm
@@ -13,6 +13,7 @@ INCLUDE "constants/map_constants.asm"
INCLUDE "constants/map_setup_constants.asm"
INCLUDE "constants/landmark_constants.asm"
INCLUDE "constants/item_constants.asm"
+INCLUDE "constants/item_data_constants.asm"
INCLUDE "constants/trainer_constants.asm"
INCLUDE "constants/script_constants.asm"
INCLUDE "constants/event_flags.asm"
@@ -22,6 +23,8 @@ INCLUDE "constants/sfx_constants.asm"
INCLUDE "constants/animation_constants.asm"
INCLUDE "constants/phone_constants.asm"
INCLUDE "constants/gfx_constants.asm"
+INCLUDE "constants/map_object_constants.asm"
+INCLUDE "constants/text_constants.asm"
INCLUDE "constants/pokemon_data_constants.asm"
INCLUDE "constants/misc_constants.asm"
INCLUDE "constants/std_constants.asm"
@@ -34,3 +37,7 @@ INCLUDE "constants/battle_tower_constants.asm"
INCLUDE "constants/cry_constants.asm"
INCLUDE "constants/audio_constants.asm"
INCLUDE "constants/printer_constants.asm"
+INCLUDE "constants/map_data_constants.asm"
+INCLUDE "constants/input_constants.asm"
+INCLUDE "constants/sprite_data_constants.asm"
+INCLUDE "constants/serial_constants.asm"
diff --git a/constants/animation_constants.asm b/constants/animation_constants.asm
index ea052aab..0170d570 100644
--- a/constants/animation_constants.asm
+++ b/constants/animation_constants.asm
@@ -1,3 +1,4 @@
+; battle_anim_struct members (see macros/wram.asm)
const_def
const BATTLEANIMSTRUCT_INDEX
const BATTLEANIMSTRUCT_01
@@ -25,6 +26,7 @@
const BATTLEANIMSTRUCT_17
BATTLEANIMSTRUCT_LENGTH EQU const_value
+; BattleAnimObjects indexes (see data/battle_anims/objects.asm)
const_def
const ANIM_OBJ_00
const ANIM_OBJ_01
@@ -215,6 +217,7 @@ BATTLEANIMSTRUCT_LENGTH EQU const_value
const ANIM_OBJ_BA
const ANIM_OBJ_BB
+; DoBattleAnimFrame arguments (see engine/battle_anims/functions.asm)
const_def
const BATTLEANIMFUNC_00
const BATTLEANIMFUNC_01
@@ -297,6 +300,7 @@ BATTLEANIMSTRUCT_LENGTH EQU const_value
const BATTLEANIMFUNC_4E
const BATTLEANIMFUNC_4F
+; BattleAnimFrameData indexes (see data/battle_anims/framesets.asm)
const_def
const BATTLEANIMFRAMESET_00
const BATTLEANIMFRAMESET_01
@@ -484,6 +488,7 @@ BATTLEANIMSTRUCT_LENGTH EQU const_value
const BATTLEANIMFRAMESET_B7
const BATTLEANIMFRAMESET_B8
+; BattleAnimOAMData indexes (see data/battle_anims/oam.asm)
const_def
const BATTLEANIMOAMSET_00
const BATTLEANIMOAMSET_01
@@ -702,6 +707,7 @@ BATTLEANIMSTRUCT_LENGTH EQU const_value
const BATTLEANIMOAMSET_D6
const BATTLEANIMOAMSET_D7
+; BattleBGEffects indexes (see engine/battle_anims/bg_effects.asm)
const_value SET 1
const ANIM_BG_FLASH_INVERTED
const ANIM_BG_FLASH_WHITE
@@ -757,17 +763,7 @@ const_value SET 1
const ANIM_BG_WOBBLE_MON
const ANIM_BG_35
- const_def
- const ANIM_MON_SLOW ; 0
- const ANIM_MON_NORMAL ; 1
- const ANIM_MON_MENU ; 2
- const ANIM_MON_TRADE ; 3
- const ANIM_MON_EVOLVE ; 4
- const ANIM_MON_HATCH ; 5
- const ANIM_MON_UNUSED ; 6
- const ANIM_MON_EGG1 ; 7
- const ANIM_MON_EGG2 ; 8
-
+; AnimObjGFX indexes (see data/battle_anims/object_gfx.asm)
const_value SET 1
const ANIM_GFX_HIT
const ANIM_GFX_CUT
@@ -809,8 +805,31 @@ const_value SET 1
const ANIM_GFX_WAVE
const ANIM_GFX_AEROBLAST
+; battle_bg_effect struct members (see macros/wram.asm)
const_def
const BG_EFFECT_STRUCT_FUNCTION
const BG_EFFECT_STRUCT_JT_INDEX
const BG_EFFECT_STRUCT_BATTLE_TURN
const BG_EFFECT_STRUCT_03
+
+; battle palettes
+ const_def
+ const PAL_BATTLE_BG_PLAYER ; 0
+ const PAL_BATTLE_BG_ENEMY ; 1
+ const PAL_BATTLE_BG_ENEMY_HP ; 2
+ const PAL_BATTLE_BG_PLAYER_HP ; 3
+ const PAL_BATTLE_BG_EXP ; 4
+ const PAL_BATTLE_BG_5 ; 5
+ const PAL_BATTLE_BG_6 ; 6
+ const PAL_BATTLE_BG_TEXT ; 7
+
+; animation object palettes
+ const_def
+ const PAL_BATTLE_OB_ENEMY ; 0
+ const PAL_BATTLE_OB_PLAYER ; 1
+ const PAL_BATTLE_OB_GRAY ; 2
+ const PAL_BATTLE_OB_YELLOW ; 3
+ const PAL_BATTLE_OB_RED ; 4
+ const PAL_BATTLE_OB_GREEN ; 5
+ const PAL_BATTLE_OB_BLUE ; 6
+ const PAL_BATTLE_OB_BROWN ; 7
diff --git a/constants/gfx_constants.asm b/constants/gfx_constants.asm
index 9478cd12..70b24344 100644
--- a/constants/gfx_constants.asm
+++ b/constants/gfx_constants.asm
@@ -1,4 +1,54 @@
-LEN_2BPP_TILE EQU 16
-LEN_1BPP_TILE EQU 8
-TILES_PER_FRAME EQU 6
-TILESIZE EQU $10
+TILE_WIDTH EQU 8 ; pixels
+LEN_1BPP_TILE EQU 1 * TILE_WIDTH ; bytes
+LEN_2BPP_TILE EQU 2 * TILE_WIDTH ; bytes
+
+NUM_PAL_COLORS EQU 4
+PAL_COLOR_SIZE EQU 2
+PALETTE_SIZE EQU NUM_PAL_COLORS * PAL_COLOR_SIZE
+
+PALRGB_WHITE EQUS "palred 31 + palgreen 31 + palblue 31" ; $7fff
+
+SCREEN_WIDTH EQU 20 ; tiles
+SCREEN_HEIGHT EQU 18 ; tiles
+SCREEN_WIDTH_PX EQU SCREEN_WIDTH * TILE_WIDTH ; pixels
+SCREEN_HEIGHT_PX EQU SCREEN_HEIGHT * TILE_WIDTH ; pixels
+
+BG_MAP_WIDTH EQU 32 ; tiles
+BG_MAP_HEIGHT EQU 32 ; tiles
+
+METATILE_WIDTH EQU 4 ; tiles
+SCREEN_META_WIDTH EQU 6 ; metatiles
+SCREEN_META_HEIGHT EQU 5 ; metatiles
+SURROUNDING_WIDTH EQU SCREEN_META_WIDTH * METATILE_WIDTH ; tiles
+SURROUNDING_HEIGHT EQU SCREEN_META_HEIGHT * METATILE_WIDTH ; tiles
+
+HP_BAR_LENGTH EQU 6 ; tiles
+EXP_BAR_LENGTH EQU 8 ; tiles
+HP_BAR_LENGTH_PX EQU HP_BAR_LENGTH * TILE_WIDTH ; pixels
+EXP_BAR_LENGTH_PX EQU EXP_BAR_LENGTH * TILE_WIDTH ; pixels
+
+; GetHPPal return values (see home.asm)
+HP_GREEN EQU 0
+HP_YELLOW EQU 1
+HP_RED EQU 2
+
+; sprite_oam_struct members (see macros/wram.asm)
+ const_def
+ const SPRITEOAMSTRUCT_YCOORD ; 0
+ const SPRITEOAMSTRUCT_XCOORD ; 1
+ const SPRITEOAMSTRUCT_TILE_ID ; 2
+ const SPRITEOAMSTRUCT_ATTRIBUTES ; 3
+SPRITEOAMSTRUCT_LENGTH EQU const_value
+NUM_SPRITE_OAM_STRUCTS EQU 40 ; see wVirtualOAM
+
+; PokeAnims indexes (see engine/gfx/pic_animation.asm)
+ const_def
+ const ANIM_MON_SLOW
+ const ANIM_MON_NORMAL
+ const ANIM_MON_MENU
+ const ANIM_MON_TRADE
+ const ANIM_MON_EVOLVE
+ const ANIM_MON_HATCH
+ const ANIM_MON_HOF
+ const ANIM_MON_EGG1
+ const ANIM_MON_EGG2
diff --git a/constants/input_constants.asm b/constants/input_constants.asm
new file mode 100644
index 00000000..3042c3f8
--- /dev/null
+++ b/constants/input_constants.asm
@@ -0,0 +1,26 @@
+; joypad buttons
+ const_def
+ const A_BUTTON_F ; 0
+ const B_BUTTON_F ; 1
+ const SELECT_F ; 2
+ const START_F ; 3
+ const D_RIGHT_F ; 4
+ const D_LEFT_F ; 5
+ const D_UP_F ; 6
+ const D_DOWN_F ; 7
+
+NO_INPUT EQU %00000000
+A_BUTTON EQU 1 << A_BUTTON_F
+B_BUTTON EQU 1 << B_BUTTON_F
+SELECT EQU 1 << SELECT_F
+START EQU 1 << START_F
+D_RIGHT EQU 1 << D_RIGHT_F
+D_LEFT EQU 1 << D_LEFT_F
+D_UP EQU 1 << D_UP_F
+D_DOWN EQU 1 << D_DOWN_F
+
+BUTTONS EQU A_BUTTON | B_BUTTON | SELECT | START
+D_PAD EQU D_RIGHT | D_LEFT | D_UP | D_DOWN
+
+R_DPAD EQU %00100000
+R_BUTTONS EQU %00010000
diff --git a/constants/item_constants.asm b/constants/item_constants.asm
index 1c69ba57..57b5b4c9 100644
--- a/constants/item_constants.asm
+++ b/constants/item_constants.asm
@@ -1,3 +1,9 @@
+; item ids
+; indexes for:
+; - ItemNames (see data/items/names.asm)
+; - ItemDescriptions (see data/items/descriptions.asm)
+; - ItemAttributes (see data/items/attributes.asm)
+; - ItemEffects (see engine/items/item_effects.asm)
const_def
const NO_ITEM ; $00
const MASTER_BALL ; $01
@@ -264,109 +270,6 @@ MOON_STONE_RED EQU 10 ; BURN_HEAL
FULL_HEAL_RED EQU 52 ; X_SPEED
MAIL_MAX_LENGTH EQU $20
-; pockets
-ITEM EQU 1
-KEY_ITEM EQU 2
-BALL EQU 3
-TM_HM EQU 4
-
-; item actions
-CANT_SELECT EQU 1 << 6
-CANT_TOSS EQU 1 << 7
-
-
-; held item effects
- const_def
-
- const HELD_NONE
- const HELD_BERRY
- const HELD_2
- const HELD_LEFTOVERS
- const HELD_4
- const HELD_5
- const HELD_RESTORE_PP
- const HELD_7
- const HELD_CLEANSE_TAG
-
-const_value SET 10
- const HELD_HEAL_POISON
- const HELD_HEAL_FREEZE
- const HELD_HEAL_BURN
- const HELD_HEAL_SLEEP
- const HELD_HEAL_PARALYZE
- const HELD_HEAL_STATUS
- const HELD_HEAL_CONFUSION
-
-const_value SET 20
- const HELD_PREVENT_POISON
- const HELD_PREVENT_BURN
- const HELD_PREVENT_FREEZE
- const HELD_PREVENT_SLEEP
- const HELD_PREVENT_PARALYZE
- const HELD_PREVENT_CONFUSE
-
-const_value SET 30
- const HELD_30
- const HELD_ATTACK_UP
- const HELD_DEFENSE_UP
- const HELD_SPEED_UP
- const HELD_SP_ATTACK_UP
- const HELD_SP_DEFENSE_UP
- const HELD_ACCURACY_UP
- const HELD_EVASION_UP
- const HELD_38
-
-const_value SET 40
- const HELD_40
- const HELD_41
- const HELD_METAL_POWDER
-
-const_value SET 50
- const HELD_NORMAL_BOOST
- const HELD_FIGHTING_BOOST
- const HELD_FLYING_BOOST
- const HELD_POISON_BOOST
- const HELD_GROUND_BOOST
- const HELD_ROCK_BOOST
- const HELD_BUG_BOOST
- const HELD_GHOST_BOOST
- const HELD_FIRE_BOOST
- const HELD_WATER_BOOST
- const HELD_GRASS_BOOST
- const HELD_ELECTRIC_BOOST
- const HELD_PSYCHIC_BOOST
- const HELD_ICE_BOOST
- const HELD_DRAGON_BOOST
- const HELD_DARK_BOOST
- const HELD_STEEL_BOOST
-
-const_value SET 70
- const HELD_CATCH_CHANCE
- const HELD_71
- const HELD_ESCAPE
- const HELD_CRITICAL_UP
- const HELD_QUICK_CLAW
- const HELD_TRADE_EVOLVE
- const HELD_AMULET_COIN
- const HELD_BRIGHTPOWDER
- const HELD_78
- const HELD_FOCUS_BAND
-
- const_def
- const ITEMATTR_PRICE
- const ITEMATTR_PRICE_HI
- const ITEMATTR_EFFECT
- const ITEMATTR_PARAM
- const ITEMATTR_PERMISSIONS
- const ITEMATTR_POCKET
- const ITEMATTR_HELP
-NUM_ITEMATTRS EQU const_value
-
-ITEMMENU_NOUSE EQU 0
-ITEMMENU_CURRENT EQU 4
-ITEMMENU_PARTY EQU 5
-ITEMMENU_CLOSE EQU 6
-
const_def
const MARTTYPE_STANDARD
const MARTTYPE_BITTER
diff --git a/constants/item_data_constants.asm b/constants/item_data_constants.asm
new file mode 100644
index 00000000..5040ab04
--- /dev/null
+++ b/constants/item_data_constants.asm
@@ -0,0 +1,128 @@
+; item_attributes struct members (see data/items/attributes.asm)
+ const_def
+ const ITEMATTR_PRICE
+ const ITEMATTR_PRICE_HI
+ const ITEMATTR_EFFECT
+ const ITEMATTR_PARAM
+ const ITEMATTR_PERMISSIONS
+ const ITEMATTR_POCKET
+ const ITEMATTR_HELP
+ITEMATTR_STRUCT_LENGTH EQU const_value
+
+; item types
+ const_def 1
+ const ITEM ; 1
+ const KEY_ITEM ; 2
+ const BALL ; 3
+ const TM_HM ; 4
+
+; item menu types
+; UseItem.dw indexes (see engine/items/pack.asm)
+; UseRegisteredItem.SwitchTo indexes (see engine/overworld/select_menu.asm)
+ITEMMENU_NOUSE EQU 0
+ITEMMENU_CURRENT EQU 4
+ITEMMENU_PARTY EQU 5
+ITEMMENU_CLOSE EQU 6
+
+; item actions
+CANT_SELECT_F EQU 6
+CANT_TOSS_F EQU 7
+
+NO_LIMITS EQU 0
+CANT_SELECT EQU 1 << CANT_SELECT_F
+CANT_TOSS EQU 1 << CANT_TOSS_F
+
+; pack pockets
+ const_def
+ const ITEM_POCKET ; 0
+ const BALL_POCKET ; 1
+ const KEY_ITEM_POCKET ; 2
+ const TM_HM_POCKET ; 3
+NUM_POCKETS EQU const_value
+
+MAX_ITEMS EQU 20
+MAX_BALLS EQU 12
+MAX_KEY_ITEMS EQU 25
+MAX_PC_ITEMS EQU 50
+
+; mail
+MAIL_LINE_LENGTH EQU $10
+MAIL_MSG_LENGTH EQU $20
+MAILBOX_CAPACITY EQU 10
+MAIL_STRUCT_LENGTH EQU $2f ; mailmsg struct
+
+; held item effects
+ const_def
+ const HELD_NONE
+ const HELD_BERRY
+ const HELD_2
+ const HELD_LEFTOVERS
+ const HELD_4
+ const HELD_5
+ const HELD_RESTORE_PP
+ const HELD_7
+ const HELD_CLEANSE_TAG
+
+ const_def 10
+ const HELD_HEAL_POISON
+ const HELD_HEAL_FREEZE
+ const HELD_HEAL_BURN
+ const HELD_HEAL_SLEEP
+ const HELD_HEAL_PARALYZE
+ const HELD_HEAL_STATUS
+ const HELD_HEAL_CONFUSION
+
+ const_def 20
+ const HELD_PREVENT_POISON
+ const HELD_PREVENT_BURN
+ const HELD_PREVENT_FREEZE
+ const HELD_PREVENT_SLEEP
+ const HELD_PREVENT_PARALYZE
+ const HELD_PREVENT_CONFUSE
+
+ const_def 30
+ const HELD_30
+ const HELD_ATTACK_UP
+ const HELD_DEFENSE_UP
+ const HELD_SPEED_UP
+ const HELD_SP_ATTACK_UP
+ const HELD_SP_DEFENSE_UP
+ const HELD_ACCURACY_UP
+ const HELD_EVASION_UP
+ const HELD_38
+
+ const_def 40
+ const HELD_40
+ const HELD_41
+ const HELD_METAL_POWDER
+
+ const_def 50
+ const HELD_NORMAL_BOOST
+ const HELD_FIGHTING_BOOST
+ const HELD_FLYING_BOOST
+ const HELD_POISON_BOOST
+ const HELD_GROUND_BOOST
+ const HELD_ROCK_BOOST
+ const HELD_BUG_BOOST
+ const HELD_GHOST_BOOST
+ const HELD_FIRE_BOOST
+ const HELD_WATER_BOOST
+ const HELD_GRASS_BOOST
+ const HELD_ELECTRIC_BOOST
+ const HELD_PSYCHIC_BOOST
+ const HELD_ICE_BOOST
+ const HELD_DRAGON_BOOST
+ const HELD_DARK_BOOST
+ const HELD_STEEL_BOOST
+
+ const_def 70
+ const HELD_CATCH_CHANCE
+ const HELD_71
+ const HELD_ESCAPE
+ const HELD_CRITICAL_UP
+ const HELD_QUICK_CLAW
+ const HELD_FLINCH
+ const HELD_AMULET_COIN
+ const HELD_BRIGHTPOWDER
+ const HELD_78
+ const HELD_FOCUS_BAND
diff --git a/constants/map_constants.asm b/constants/map_constants.asm
index b63c17be..d9e56382 100644
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -1,702 +1,485 @@
-GROUP_N_A EQU -1
-MAP_N_A EQU -1
+newgroup: MACRO
+const_value = const_value + 1
+ enum_start 1
+ENDM
+
+map_const: MACRO
+;\1: map id
+;\2: width: in blocks
+;\3: height: in blocks
+GROUP_\1 EQU const_value
+ enum MAP_\1
+\1_WIDTH EQU \2
+\1_HEIGHT EQU \3
+ENDM
-GROUP_NONE EQU 0
-MAP_NONE EQU 0
+; map group ids
+; `newgroup` indexes are for:
+; - MapGroupPointers (see data/maps/maps.asm)
+; - MapGroupRoofs (see data/maps/roofs.asm)
+; - OutdoorSprites (see data/maps/outdoor_sprites.asm)
+; - RoofPals (see gfx/tilesets/roofs.pal)
+; `map_const` indexes are for the sub-tables of MapGroupPointers (see data/maps/maps.asm)
+; Each map also has associated data:
+; - attributes (see data/maps/attributes.asm)
+; - blocks (see data/maps/blocks.asm)
+; - scripts and events (see data/maps/scripts.asm)
; map group ids
const_def
+
newgroup ; 1
- mapgroup OLIVINE_POKECENTER_1F, 4, 5 ; 1
- mapgroup OLIVINE_GYM, 8, 5 ; 2
- mapgroup OLIVINE_TIMS_HOUSE, 4, 4 ; 3
- mapgroup OLIVINE_HOUSE_BETA, 4, 4 ; 4
- mapgroup OLIVINE_PUNISHMENT_SPEECH_HOUSE, 4, 4 ; 5
- mapgroup OLIVINE_GOOD_ROD_HOUSE, 4, 4 ; 6
- mapgroup OLIVINE_CAFE, 4, 4 ; 7
- mapgroup OLIVINE_MART, 4, 6 ; 8
- mapgroup ROUTE_38_ECRUTEAK_GATE, 4, 5 ; 9
- mapgroup ROUTE_39_BARN, 4, 4 ; 10
- mapgroup ROUTE_39_FARMHOUSE, 4, 4 ; 11
- mapgroup ROUTE_38, 9, 20 ; 12
- mapgroup ROUTE_39, 18, 10 ; 13
- mapgroup OLIVINE_CITY, 18, 20 ; 14
+ map_const OLIVINE_POKECENTER_1F, 4, 5 ; 1
+ map_const OLIVINE_GYM, 8, 5 ; 2
+ map_const OLIVINE_TIMS_HOUSE, 4, 4 ; 3
+ map_const OLIVINE_HOUSE_BETA, 4, 4 ; 4
+ map_const OLIVINE_PUNISHMENT_SPEECH_HOUSE, 4, 4 ; 5
+ map_const OLIVINE_GOOD_ROD_HOUSE, 4, 4 ; 6
+ map_const OLIVINE_CAFE, 4, 4 ; 7
+ map_const OLIVINE_MART, 4, 6 ; 8
+ map_const ROUTE_38_ECRUTEAK_GATE, 4, 5 ; 9
+ map_const ROUTE_39_BARN, 4, 4 ; 10
+ map_const ROUTE_39_FARMHOUSE, 4, 4 ; 11
+ map_const ROUTE_38, 9, 20 ; 12
+ map_const ROUTE_39, 18, 10 ; 13
+ map_const OLIVINE_CITY, 18, 20 ; 14
newgroup ; 2
- mapgroup MAHOGANY_RED_GYARADOS_SPEECH_HOUSE, 4, 4 ; 1
- mapgroup MAHOGANY_GYM, 9, 5 ; 2
- mapgroup MAHOGANY_POKECENTER_1F, 4, 5 ; 3
- mapgroup ROUTE_42_ECRUTEAK_GATE, 4, 5 ; 4
- mapgroup ROUTE_42, 9, 30 ; 5
- mapgroup ROUTE_44, 9, 30 ; 6
- mapgroup MAHOGANY_TOWN, 9, 10 ; 7
+ map_const MAHOGANY_RED_GYARADOS_SPEECH_HOUSE, 4, 4 ; 1
+ map_const MAHOGANY_GYM, 9, 5 ; 2
+ map_const MAHOGANY_POKECENTER_1F, 4, 5 ; 3
+ map_const ROUTE_42_ECRUTEAK_GATE, 4, 5 ; 4
+ map_const ROUTE_42, 9, 30 ; 5
+ map_const ROUTE_44, 9, 30 ; 6
+ map_const MAHOGANY_TOWN, 9, 10 ; 7
newgroup ; 3
- mapgroup SPROUT_TOWER_1F, 8, 10 ; 1
- mapgroup SPROUT_TOWER_2F, 8, 10 ; 2
- mapgroup SPROUT_TOWER_3F, 8, 10 ; 3
- mapgroup TIN_TOWER_1F, 9, 10 ; 4
- mapgroup TIN_TOWER_2F, 9, 10 ; 5
- mapgroup TIN_TOWER_3F, 9, 10 ; 6
- mapgroup TIN_TOWER_4F, 9, 10 ; 7
- mapgroup TIN_TOWER_5F, 9, 10 ; 8
- mapgroup TIN_TOWER_6F, 9, 10 ; 9
- mapgroup TIN_TOWER_7F, 9, 10 ; 10
- mapgroup TIN_TOWER_8F, 9, 10 ; 11
- mapgroup TIN_TOWER_9F, 9, 10 ; 12
- mapgroup BURNED_TOWER_1F, 9, 10 ; 13
- mapgroup BURNED_TOWER_B1F, 9, 10 ; 14
- mapgroup NATIONAL_PARK, 27, 20 ; 15
- mapgroup NATIONAL_PARK_BUG_CONTEST, 27, 20 ; 16
- mapgroup RADIO_TOWER_1F, 4, 9 ; 17
- mapgroup RADIO_TOWER_2F, 4, 9 ; 18
- mapgroup RADIO_TOWER_3F, 4, 9 ; 19
- mapgroup RADIO_TOWER_4F, 4, 9 ; 20
- mapgroup RADIO_TOWER_5F, 4, 9 ; 21
- mapgroup RUINS_OF_ALPH_OUTSIDE, 18, 10 ; 22
- mapgroup RUINS_OF_ALPH_HO_OH_CHAMBER, 5, 4 ; 23
- mapgroup RUINS_OF_ALPH_KABUTO_CHAMBER, 5, 4 ; 24
- mapgroup RUINS_OF_ALPH_OMANYTE_CHAMBER, 5, 4 ; 25
- mapgroup RUINS_OF_ALPH_AERODACTYL_CHAMBER, 5, 4 ; 26
- mapgroup RUINS_OF_ALPH_INNER_CHAMBER, 14, 10 ; 27
- mapgroup RUINS_OF_ALPH_RESEARCH_CENTER, 4, 4 ; 28
- mapgroup RUINS_OF_ALPH_HO_OH_ITEM_ROOM, 5, 4 ; 29
- mapgroup RUINS_OF_ALPH_KABUTO_ITEM_ROOM, 5, 4 ; 30
- mapgroup RUINS_OF_ALPH_OMANYTE_ITEM_ROOM, 5, 4 ; 31
- mapgroup RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM, 5, 4 ; 32
- mapgroup RUINS_OF_ALPH_HO_OH_WORD_ROOM, 12, 10 ; 33
- mapgroup RUINS_OF_ALPH_KABUTO_WORD_ROOM, 7, 10 ; 34
- mapgroup RUINS_OF_ALPH_OMANYTE_WORD_ROOM, 8, 10 ; 35
- mapgroup RUINS_OF_ALPH_AERODACTYL_WORD_ROOM, 7, 10 ; 36
- mapgroup UNION_CAVE_1F, 18, 10 ; 37
- mapgroup UNION_CAVE_B1F, 18, 10 ; 38
- mapgroup UNION_CAVE_B2F, 18, 10 ; 39
- mapgroup SLOWPOKE_WELL_B1F, 9, 10 ; 40
- mapgroup SLOWPOKE_WELL_B2F, 9, 10 ; 41
- mapgroup OLIVINE_LIGHTHOUSE_1F, 9, 10 ; 42
- mapgroup OLIVINE_LIGHTHOUSE_2F, 9, 10 ; 43
- mapgroup OLIVINE_LIGHTHOUSE_3F, 9, 10 ; 44
- mapgroup OLIVINE_LIGHTHOUSE_4F, 9, 10 ; 45
- mapgroup OLIVINE_LIGHTHOUSE_5F, 9, 10 ; 46
- mapgroup OLIVINE_LIGHTHOUSE_6F, 9, 10 ; 47
- mapgroup MAHOGANY_MART_1F, 4, 4 ; 48
- mapgroup TEAM_ROCKET_BASE_B1F, 9, 15 ; 49
- mapgroup TEAM_ROCKET_BASE_B2F, 9, 15 ; 50
- mapgroup TEAM_ROCKET_BASE_B3F, 9, 15 ; 51
- mapgroup ILEX_FOREST, 27, 15 ; 52
- mapgroup WAREHOUSE_ENTRANCE, 18, 15 ; 53
- mapgroup UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES, 18, 15 ; 54
- mapgroup GOLDENROD_DEPT_STORE_B1F, 9, 10 ; 55
- mapgroup UNDERGROUND_WAREHOUSE, 9, 10 ; 56
- mapgroup MOUNT_MORTAR_1F_OUTSIDE, 18, 20 ; 57
- mapgroup MOUNT_MORTAR_1F_INSIDE, 27, 20 ; 58
- mapgroup MOUNT_MORTAR_2F_INSIDE, 18, 20 ; 59
- mapgroup MOUNT_MORTAR_B1F, 18, 20 ; 60
- mapgroup ICE_PATH_1F, 18, 20 ; 61
- mapgroup ICE_PATH_B1F, 18, 10 ; 62
- mapgroup ICE_PATH_B2F_MAHOGANY_SIDE, 9, 10 ; 63
- mapgroup ICE_PATH_B2F_BLACKTHORN_SIDE, 9, 5 ; 64
- mapgroup ICE_PATH_B3F, 9, 10 ; 65
- mapgroup WHIRL_ISLAND_NW, 9, 5 ; 66
- mapgroup WHIRL_ISLAND_NE, 9, 10 ; 67
- mapgroup WHIRL_ISLAND_SW, 9, 10 ; 68
- mapgroup WHIRL_ISLAND_CAVE, 9, 5 ; 69
- mapgroup WHIRL_ISLAND_SE, 9, 5 ; 70
- mapgroup WHIRL_ISLAND_B1F, 18, 20 ; 71
- mapgroup WHIRL_ISLAND_B2F, 18, 10 ; 72
- mapgroup WHIRL_ISLAND_LUGIA_CHAMBER, 9, 10 ; 73
- mapgroup SILVER_CAVE_ROOM_1, 18, 10 ; 74
- mapgroup SILVER_CAVE_ROOM_2, 18, 15 ; 75
- mapgroup SILVER_CAVE_ROOM_3, 18, 10 ; 76
- mapgroup SILVER_CAVE_ITEM_ROOMS, 9, 10 ; 77
- mapgroup DARK_CAVE_VIOLET_ENTRANCE, 18, 20 ; 78
- mapgroup DARK_CAVE_BLACKTHORN_ENTRANCE, 18, 15 ; 79
- mapgroup DRAGONS_DEN_1F, 9, 5 ; 80
- mapgroup DRAGONS_DEN_B1F, 18, 20 ; 81
- mapgroup DRAGON_SHRINE, 5, 5 ; 82
- mapgroup TOHJO_FALLS, 9, 15 ; 83
- mapgroup DIGLETTS_CAVE, 18, 10 ; 84
- mapgroup MOUNT_MOON, 9, 15 ; 85
- mapgroup UNDERGROUND, 14, 3 ; 86
- mapgroup ROCK_TUNNEL_1F, 18, 15 ; 87
- mapgroup ROCK_TUNNEL_B1F, 18, 15 ; 88
- mapgroup SAFARI_ZONE_FUCHSIA_GATE_BETA, 4, 5 ; 89
- mapgroup SAFARI_ZONE_BETA, 18, 10 ; 90
- mapgroup VICTORY_ROAD, 36, 10 ; 91
+ map_const SPROUT_TOWER_1F, 8, 10 ; 1
+ map_const SPROUT_TOWER_2F, 8, 10 ; 2
+ map_const SPROUT_TOWER_3F, 8, 10 ; 3
+ map_const TIN_TOWER_1F, 9, 10 ; 4
+ map_const TIN_TOWER_2F, 9, 10 ; 5
+ map_const TIN_TOWER_3F, 9, 10 ; 6
+ map_const TIN_TOWER_4F, 9, 10 ; 7
+ map_const TIN_TOWER_5F, 9, 10 ; 8
+ map_const TIN_TOWER_6F, 9, 10 ; 9
+ map_const TIN_TOWER_7F, 9, 10 ; 10
+ map_const TIN_TOWER_8F, 9, 10 ; 11
+ map_const TIN_TOWER_9F, 9, 10 ; 12
+ map_const BURNED_TOWER_1F, 9, 10 ; 13
+ map_const BURNED_TOWER_B1F, 9, 10 ; 14
+ map_const NATIONAL_PARK, 27, 20 ; 15
+ map_const NATIONAL_PARK_BUG_CONTEST, 27, 20 ; 16
+ map_const RADIO_TOWER_1F, 4, 9 ; 17
+ map_const RADIO_TOWER_2F, 4, 9 ; 18
+ map_const RADIO_TOWER_3F, 4, 9 ; 19
+ map_const RADIO_TOWER_4F, 4, 9 ; 20
+ map_const RADIO_TOWER_5F, 4, 9 ; 21
+ map_const RUINS_OF_ALPH_OUTSIDE, 18, 10 ; 22
+ map_const RUINS_OF_ALPH_HO_OH_CHAMBER, 5, 4 ; 23
+ map_const RUINS_OF_ALPH_KABUTO_CHAMBER, 5, 4 ; 24
+ map_const RUINS_OF_ALPH_OMANYTE_CHAMBER, 5, 4 ; 25
+ map_const RUINS_OF_ALPH_AERODACTYL_CHAMBER, 5, 4 ; 26
+ map_const RUINS_OF_ALPH_INNER_CHAMBER, 14, 10 ; 27
+ map_const RUINS_OF_ALPH_RESEARCH_CENTER, 4, 4 ; 28
+ map_const RUINS_OF_ALPH_HO_OH_ITEM_ROOM, 5, 4 ; 29
+ map_const RUINS_OF_ALPH_KABUTO_ITEM_ROOM, 5, 4 ; 30
+ map_const RUINS_OF_ALPH_OMANYTE_ITEM_ROOM, 5, 4 ; 31
+ map_const RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM, 5, 4 ; 32
+ map_const RUINS_OF_ALPH_HO_OH_WORD_ROOM, 12, 10 ; 33
+ map_const RUINS_OF_ALPH_KABUTO_WORD_ROOM, 7, 10 ; 34
+ map_const RUINS_OF_ALPH_OMANYTE_WORD_ROOM, 8, 10 ; 35
+ map_const RUINS_OF_ALPH_AERODACTYL_WORD_ROOM, 7, 10 ; 36
+ map_const UNION_CAVE_1F, 18, 10 ; 37
+ map_const UNION_CAVE_B1F, 18, 10 ; 38
+ map_const UNION_CAVE_B2F, 18, 10 ; 39
+ map_const SLOWPOKE_WELL_B1F, 9, 10 ; 40
+ map_const SLOWPOKE_WELL_B2F, 9, 10 ; 41
+ map_const OLIVINE_LIGHTHOUSE_1F, 9, 10 ; 42
+ map_const OLIVINE_LIGHTHOUSE_2F, 9, 10 ; 43
+ map_const OLIVINE_LIGHTHOUSE_3F, 9, 10 ; 44
+ map_const OLIVINE_LIGHTHOUSE_4F, 9, 10 ; 45
+ map_const OLIVINE_LIGHTHOUSE_5F, 9, 10 ; 46
+ map_const OLIVINE_LIGHTHOUSE_6F, 9, 10 ; 47
+ map_const MAHOGANY_MART_1F, 4, 4 ; 48
+ map_const TEAM_ROCKET_BASE_B1F, 9, 15 ; 49
+ map_const TEAM_ROCKET_BASE_B2F, 9, 15 ; 50
+ map_const TEAM_ROCKET_BASE_B3F, 9, 15 ; 51
+ map_const ILEX_FOREST, 27, 15 ; 52
+ map_const WAREHOUSE_ENTRANCE, 18, 15 ; 53
+ map_const UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES, 18, 15 ; 54
+ map_const GOLDENROD_DEPT_STORE_B1F, 9, 10 ; 55
+ map_const UNDERGROUND_WAREHOUSE, 9, 10 ; 56
+ map_const MOUNT_MORTAR_1F_OUTSIDE, 18, 20 ; 57
+ map_const MOUNT_MORTAR_1F_INSIDE, 27, 20 ; 58
+ map_const MOUNT_MORTAR_2F_INSIDE, 18, 20 ; 59
+ map_const MOUNT_MORTAR_B1F, 18, 20 ; 60
+ map_const ICE_PATH_1F, 18, 20 ; 61
+ map_const ICE_PATH_B1F, 18, 10 ; 62
+ map_const ICE_PATH_B2F_MAHOGANY_SIDE, 9, 10 ; 63
+ map_const ICE_PATH_B2F_BLACKTHORN_SIDE, 9, 5 ; 64
+ map_const ICE_PATH_B3F, 9, 10 ; 65
+ map_const WHIRL_ISLAND_NW, 9, 5 ; 66
+ map_const WHIRL_ISLAND_NE, 9, 10 ; 67
+ map_const WHIRL_ISLAND_SW, 9, 10 ; 68
+ map_const WHIRL_ISLAND_CAVE, 9, 5 ; 69
+ map_const WHIRL_ISLAND_SE, 9, 5 ; 70
+ map_const WHIRL_ISLAND_B1F, 18, 20 ; 71
+ map_const WHIRL_ISLAND_B2F, 18, 10 ; 72
+ map_const WHIRL_ISLAND_LUGIA_CHAMBER, 9, 10 ; 73
+ map_const SILVER_CAVE_ROOM_1, 18, 10 ; 74
+ map_const SILVER_CAVE_ROOM_2, 18, 15 ; 75
+ map_const SILVER_CAVE_ROOM_3, 18, 10 ; 76
+ map_const SILVER_CAVE_ITEM_ROOMS, 9, 10 ; 77
+ map_const DARK_CAVE_VIOLET_ENTRANCE, 18, 20 ; 78
+ map_const DARK_CAVE_BLACKTHORN_ENTRANCE, 18, 15 ; 79
+ map_const DRAGONS_DEN_1F, 9, 5 ; 80
+ map_const DRAGONS_DEN_B1F, 18, 20 ; 81
+ map_const DRAGON_SHRINE, 5, 5 ; 82
+ map_const TOHJO_FALLS, 9, 15 ; 83
+ map_const DIGLETTS_CAVE, 18, 10 ; 84
+ map_const MOUNT_MOON, 9, 15 ; 85
+ map_const UNDERGROUND, 14, 3 ; 86
+ map_const ROCK_TUNNEL_1F, 18, 15 ; 87
+ map_const ROCK_TUNNEL_B1F, 18, 15 ; 88
+ map_const SAFARI_ZONE_FUCHSIA_GATE_BETA, 4, 5 ; 89
+ map_const SAFARI_ZONE_BETA, 18, 10 ; 90
+ map_const VICTORY_ROAD, 36, 10 ; 91
newgroup ; 4
- mapgroup ECRUTEAK_HOUSE, 9, 10 ; 1
- mapgroup WISE_TRIOS_ROOM, 4, 4 ; 2
- mapgroup ECRUTEAK_POKECENTER_1F, 4, 5 ; 3
- mapgroup ECRUTEAK_LUGIA_SPEECH_HOUSE, 4, 4 ; 4
- mapgroup DANCE_THEATRE, 7, 6 ; 5
- mapgroup ECRUTEAK_MART, 4, 6 ; 6
- mapgroup ECRUTEAK_GYM, 9, 5 ; 7
- mapgroup ECRUTEAK_ITEMFINDER_HOUSE, 4, 4 ; 8
- mapgroup ECRUTEAK_CITY, 18, 20 ; 9
+ map_const ECRUTEAK_HOUSE, 9, 10 ; 1
+ map_const WISE_TRIOS_ROOM, 4, 4 ; 2
+ map_const ECRUTEAK_POKECENTER_1F, 4, 5 ; 3
+ map_const ECRUTEAK_LUGIA_SPEECH_HOUSE, 4, 4 ; 4
+ map_const DANCE_THEATRE, 7, 6 ; 5
+ map_const ECRUTEAK_MART, 4, 6 ; 6
+ map_const ECRUTEAK_GYM, 9, 5 ; 7
+ map_const ECRUTEAK_ITEMFINDER_HOUSE, 4, 4 ; 8
+ map_const ECRUTEAK_CITY, 18, 20 ; 9
newgroup ; 5
- mapgroup BLACKTHORN_GYM_1F, 9, 5 ; 1
- mapgroup BLACKTHORN_GYM_2F, 9, 5 ; 2
- mapgroup BLACKTHORN_DRAGON_SPEECH_HOUSE, 4, 4 ; 3
- mapgroup BLACKTHORN_EMYS_HOUSE, 4, 4 ; 4
- mapgroup BLACKTHORN_MART, 4, 6 ; 5
- mapgroup BLACKTHORN_POKECENTER_1F, 4, 5 ; 6
- mapgroup MOVE_DELETERS_HOUSE, 4, 4 ; 7
- mapgroup ROUTE_45, 45, 10 ; 8
- mapgroup ROUTE_46, 18, 10 ; 9
- mapgroup BLACKTHORN_CITY, 18, 20 ; 10
+ map_const BLACKTHORN_GYM_1F, 9, 5 ; 1
+ map_const BLACKTHORN_GYM_2F, 9, 5 ; 2
+ map_const BLACKTHORN_DRAGON_SPEECH_HOUSE, 4, 4 ; 3
+ map_const BLACKTHORN_EMYS_HOUSE, 4, 4 ; 4
+ map_const BLACKTHORN_MART, 4, 6 ; 5
+ map_const BLACKTHORN_POKECENTER_1F, 4, 5 ; 6
+ map_const MOVE_DELETERS_HOUSE, 4, 4 ; 7
+ map_const ROUTE_45, 45, 10 ; 8
+ map_const ROUTE_46, 18, 10 ; 9
+ map_const BLACKTHORN_CITY, 18, 20 ; 10
newgroup ; 6
- mapgroup CINNABAR_POKECENTER_1F, 4, 5 ; 1
- mapgroup CINNABAR_POKECENTER_2F_BETA, 4, 8 ; 2
- mapgroup ROUTE_19___FUCHSIA_GATE, 4, 5 ; 3
- mapgroup SEAFOAM_GYM, 4, 5 ; 4
- mapgroup ROUTE_19, 18, 10 ; 5
- mapgroup ROUTE_20, 9, 30 ; 6
- mapgroup ROUTE_21, 18, 10 ; 7
- mapgroup CINNABAR_ISLAND, 9, 10 ; 8
+ map_const CINNABAR_POKECENTER_1F, 4, 5 ; 1
+ map_const CINNABAR_POKECENTER_2F_BETA, 4, 8 ; 2
+ map_const ROUTE_19___FUCHSIA_GATE, 4, 5 ; 3
+ map_const SEAFOAM_GYM, 4, 5 ; 4
+ map_const ROUTE_19, 18, 10 ; 5
+ map_const ROUTE_20, 9, 30 ; 6
+ map_const ROUTE_21, 18, 10 ; 7
+ map_const CINNABAR_ISLAND, 9, 10 ; 8
newgroup ; 7
- mapgroup CERULEAN_GYM_BADGE_SPEECH_HOUSE, 4, 4 ; 1
- mapgroup CERULEAN_POLICE_STATION, 4, 4 ; 2
- mapgroup CERULEAN_TRADE_SPEECH_HOUSE, 4, 4 ; 3
- mapgroup CERULEAN_POKECENTER_1F, 4, 5 ; 4
- mapgroup CERULEAN_POKECENTER_2F_BETA, 4, 8 ; 5
- mapgroup CERULEAN_GYM, 8, 5 ; 6
- mapgroup CERULEAN_MART, 4, 6 ; 7
- mapgroup ROUTE_10_POKECENTER_1F, 4, 5 ; 8
- mapgroup ROUTE_10_POKECENTER_2F_BETA, 4, 8 ; 9
- mapgroup POWER_PLANT, 9, 10 ; 10
- mapgroup BILLS_HOUSE, 4, 4 ; 11
- mapgroup ROUTE_4, 9, 20 ; 12
- mapgroup ROUTE_9, 9, 30 ; 13
- mapgroup ROUTE_10_NORTH, 9, 10 ; 14
- mapgroup ROUTE_24, 9, 10 ; 15
- mapgroup ROUTE_25, 9, 30 ; 16
- mapgroup CERULEAN_CITY, 18, 20 ; 17
+ map_const CERULEAN_GYM_BADGE_SPEECH_HOUSE, 4, 4 ; 1
+ map_const CERULEAN_POLICE_STATION, 4, 4 ; 2
+ map_const CERULEAN_TRADE_SPEECH_HOUSE, 4, 4 ; 3
+ map_const CERULEAN_POKECENTER_1F, 4, 5 ; 4
+ map_const CERULEAN_POKECENTER_2F_BETA, 4, 8 ; 5
+ map_const CERULEAN_GYM, 8, 5 ; 6
+ map_const CERULEAN_MART, 4, 6 ; 7
+ map_const ROUTE_10_POKECENTER_1F, 4, 5 ; 8
+ map_const ROUTE_10_POKECENTER_2F_BETA, 4, 8 ; 9
+ map_const POWER_PLANT, 9, 10 ; 10
+ map_const BILLS_HOUSE, 4, 4 ; 11
+ map_const ROUTE_4, 9, 20 ; 12
+ map_const ROUTE_9, 9, 30 ; 13
+ map_const ROUTE_10_NORTH, 9, 10 ; 14
+ map_const ROUTE_24, 9, 10 ; 15
+ map_const ROUTE_25, 9, 30 ; 16
+ map_const CERULEAN_CITY, 18, 20 ; 17
newgroup ; 8
- mapgroup AZALEA_POKECENTER_1F, 4, 5 ; 1
- mapgroup CHARCOAL_KILN, 4, 4 ; 2
- mapgroup AZALEA_MART, 4, 6 ; 3
- mapgroup KURTS_HOUSE, 4, 8 ; 4
- mapgroup AZALEA_GYM, 8, 5 ; 5
- mapgroup ROUTE_33, 9, 10 ; 6
- mapgroup AZALEA_TOWN, 9, 20 ; 7
+ map_const AZALEA_POKECENTER_1F, 4, 5 ; 1
+ map_const CHARCOAL_KILN, 4, 4 ; 2
+ map_const AZALEA_MART, 4, 6 ; 3
+ map_const KURTS_HOUSE, 4, 8 ; 4
+ map_const AZALEA_GYM, 8, 5 ; 5
+ map_const ROUTE_33, 9, 10 ; 6
+ map_const AZALEA_TOWN, 9, 20 ; 7
newgroup ; 9
- mapgroup LAKE_OF_RAGE_HIDDEN_POWER_HOUSE, 4, 4 ; 1
- mapgroup LAKE_OF_RAGE_MAGIKARP_HOUSE, 4, 4 ; 2
- mapgroup ROUTE_43_MAHOGANY_GATE, 4, 5 ; 3
- mapgroup ROUTE_43_GATE, 4, 5 ; 4
- mapgroup ROUTE_43, 27, 10 ; 5
- mapgroup LAKE_OF_RAGE, 18, 20 ; 6
+ map_const LAKE_OF_RAGE_HIDDEN_POWER_HOUSE, 4, 4 ; 1
+ map_const LAKE_OF_RAGE_MAGIKARP_HOUSE, 4, 4 ; 2
+ map_const ROUTE_43_MAHOGANY_GATE, 4, 5 ; 3
+ map_const ROUTE_43_GATE, 4, 5 ; 4
+ map_const ROUTE_43, 27, 10 ; 5
+ map_const LAKE_OF_RAGE, 18, 20 ; 6
newgroup ; 10
- mapgroup ROUTE_32, 45, 10 ; 1
- mapgroup ROUTE_35, 18, 10 ; 2
- mapgroup ROUTE_36, 9, 30 ; 3
- mapgroup ROUTE_37, 9, 10 ; 4
- mapgroup VIOLET_CITY, 18, 20 ; 5
- mapgroup VIOLET_MART, 4, 6 ; 6
- mapgroup VIOLET_GYM, 8, 5 ; 7
- mapgroup EARLS_POKEMON_ACADEMY, 8, 4 ; 8
- mapgroup VIOLET_NICKNAME_SPEECH_HOUSE, 4, 4 ; 9
- mapgroup VIOLET_POKECENTER_1F, 4, 5 ; 10
- mapgroup VIOLET_ONIX_TRADE_HOUSE, 4, 4 ; 11
- mapgroup ROUTE_32_RUINS_OF_ALPH_GATE, 4, 5 ; 12
- mapgroup ROUTE_32_POKECENTER_1F, 4, 5 ; 13
- mapgroup ROUTE_35_GOLDENROD_GATE, 4, 5 ; 14
- mapgroup ROUTE_35_NATIONAL_PARK_GATE, 4, 4 ; 15
- mapgroup ROUTE_36_RUINS_OF_ALPH_GATE, 4, 5 ; 16
- mapgroup ROUTE_36_NATIONAL_PARK_GATE, 4, 5 ; 17
+ map_const ROUTE_32, 45, 10 ; 1
+ map_const ROUTE_35, 18, 10 ; 2
+ map_const ROUTE_36, 9, 30 ; 3
+ map_const ROUTE_37, 9, 10 ; 4
+ map_const VIOLET_CITY, 18, 20 ; 5
+ map_const VIOLET_MART, 4, 6 ; 6
+ map_const VIOLET_GYM, 8, 5 ; 7
+ map_const EARLS_POKEMON_ACADEMY, 8, 4 ; 8
+ map_const VIOLET_NICKNAME_SPEECH_HOUSE, 4, 4 ; 9
+ map_const VIOLET_POKECENTER_1F, 4, 5 ; 10
+ map_const VIOLET_ONIX_TRADE_HOUSE, 4, 4 ; 11
+ map_const ROUTE_32_RUINS_OF_ALPH_GATE, 4, 5 ; 12
+ map_const ROUTE_32_POKECENTER_1F, 4, 5 ; 13
+ map_const ROUTE_35_GOLDENROD_GATE, 4, 5 ; 14
+ map_const ROUTE_35_NATIONAL_PARK_GATE, 4, 4 ; 15
+ map_const ROUTE_36_RUINS_OF_ALPH_GATE, 4, 5 ; 16
+ map_const ROUTE_36_NATIONAL_PARK_GATE, 4, 5 ; 17
newgroup ; 11
- mapgroup ROUTE_34, 27, 10 ; 1
- mapgroup GOLDENROD_CITY, 18, 20 ; 2
- mapgroup GOLDENROD_GYM, 9, 10 ; 3
- mapgroup GOLDENROD_BIKE_SHOP, 4, 4 ; 4
- mapgroup GOLDENROD_HAPPINESS_RATER, 4, 4 ; 5
- mapgroup GOLDENROD_BILLS_HOUSE, 4, 4 ; 6
- mapgroup GOLDENROD_MAGNET_TRAIN_STATION, 9, 10 ; 7
- mapgroup GOLDENROD_FLOWER_SHOP, 4, 4 ; 8
- mapgroup GOLDENROD_PP_SPEECH_HOUSE, 4, 4 ; 9
- mapgroup GOLDENROD_NAME_RATER, 4, 4 ; 10
- mapgroup GOLDENROD_DEPT_STORE_1F, 4, 8 ; 11
- mapgroup GOLDENROD_DEPT_STORE_2F, 4, 8 ; 12
- mapgroup GOLDENROD_DEPT_STORE_3F, 4, 8 ; 13
- mapgroup GOLDENROD_DEPT_STORE_4F, 4, 8 ; 14
- mapgroup GOLDENROD_DEPT_STORE_5F, 4, 8 ; 15
- mapgroup GOLDENROD_DEPT_STORE_6F, 4, 8 ; 16
- mapgroup GOLDENROD_DEPT_STORE_ELEVATOR, 2, 2 ; 17
- mapgroup GOLDENROD_DEPT_STORE_ROOF, 4, 8 ; 18
- mapgroup GOLDENROD_GAME_CORNER, 7, 10 ; 19
- mapgroup GOLDENROD_POKECENTER_1F, 4, 5 ; 20
- mapgroup ILEX_FOREST_AZALEA_GATE, 4, 5 ; 21
- mapgroup ROUTE_34_ILEX_FOREST_GATE, 4, 5 ; 22
- mapgroup DAYCARE, 4, 5 ; 23
+ map_const ROUTE_34, 27, 10 ; 1
+ map_const GOLDENROD_CITY, 18, 20 ; 2
+ map_const GOLDENROD_GYM, 9, 10 ; 3
+ map_const GOLDENROD_BIKE_SHOP, 4, 4 ; 4
+ map_const GOLDENROD_HAPPINESS_RATER, 4, 4 ; 5
+ map_const GOLDENROD_BILLS_HOUSE, 4, 4 ; 6
+ map_const GOLDENROD_MAGNET_TRAIN_STATION, 9, 10 ; 7
+ map_const GOLDENROD_FLOWER_SHOP, 4, 4 ; 8
+ map_const GOLDENROD_PP_SPEECH_HOUSE, 4, 4 ; 9
+ map_const GOLDENROD_NAME_RATER, 4, 4 ; 10
+ map_const GOLDENROD_DEPT_STORE_1F, 4, 8 ; 11
+ map_const GOLDENROD_DEPT_STORE_2F, 4, 8 ; 12
+ map_const GOLDENROD_DEPT_STORE_3F, 4, 8 ; 13
+ map_const GOLDENROD_DEPT_STORE_4F, 4, 8 ; 14
+ map_const GOLDENROD_DEPT_STORE_5F, 4, 8 ; 15
+ map_const GOLDENROD_DEPT_STORE_6F, 4, 8 ; 16
+ map_const GOLDENROD_DEPT_STORE_ELEVATOR, 2, 2 ; 17
+ map_const GOLDENROD_DEPT_STORE_ROOF, 4, 8 ; 18
+ map_const GOLDENROD_GAME_CORNER, 7, 10 ; 19
+ map_const GOLDENROD_POKECENTER_1F, 4, 5 ; 20
+ map_const ILEX_FOREST_AZALEA_GATE, 4, 5 ; 21
+ map_const ROUTE_34_ILEX_FOREST_GATE, 4, 5 ; 22
+ map_const DAYCARE, 4, 5 ; 23
newgroup ; 12
- mapgroup ROUTE_6, 9, 10 ; 1
- mapgroup ROUTE_11, 9, 20 ; 2
- mapgroup VERMILION_CITY, 18, 20 ; 3
- mapgroup VERMILION_HOUSE_FISHING_SPEECH_HOUSE, 4, 4 ; 4
- mapgroup VERMILION_POKECENTER_1F, 4, 5 ; 5
- mapgroup VERMILION_POKECENTER_2F_BETA, 4, 8 ; 6
- mapgroup POKEMON_FAN_CLUB, 4, 5 ; 7
- mapgroup VERMILION_MAGNET_TRAIN_SPEECH_HOUSE, 4, 4 ; 8
- mapgroup VERMILION_MART, 4, 6 ; 9
- mapgroup VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE, 4, 4 ; 10
- mapgroup VERMILION_GYM, 9, 5 ; 11
- mapgroup ROUTE_6_SAFFRON_GATE, 4, 5 ; 12
- mapgroup ROUTE_6_UNDERGROUND_ENTRANCE, 4, 4 ; 13
+ map_const ROUTE_6, 9, 10 ; 1
+ map_const ROUTE_11, 9, 20 ; 2
+ map_const VERMILION_CITY, 18, 20 ; 3
+ map_const VERMILION_HOUSE_FISHING_SPEECH_HOUSE, 4, 4 ; 4
+ map_const VERMILION_POKECENTER_1F, 4, 5 ; 5
+ map_const VERMILION_POKECENTER_2F_BETA, 4, 8 ; 6
+ map_const POKEMON_FAN_CLUB, 4, 5 ; 7
+ map_const VERMILION_MAGNET_TRAIN_SPEECH_HOUSE, 4, 4 ; 8
+ map_const VERMILION_MART, 4, 6 ; 9
+ map_const VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE, 4, 4 ; 10
+ map_const VERMILION_GYM, 9, 5 ; 11
+ map_const ROUTE_6_SAFFRON_GATE, 4, 5 ; 12
+ map_const ROUTE_6_UNDERGROUND_ENTRANCE, 4, 4 ; 13
newgroup ; 13
- mapgroup ROUTE_1, 18, 10 ; 1
- mapgroup PALLET_TOWN, 9, 10 ; 2
- mapgroup REDS_HOUSE_1F, 4, 4 ; 3
- mapgroup REDS_HOUSE_2F, 4, 4 ; 4
- mapgroup BLUES_HOUSE, 4, 4 ; 5
- mapgroup OAKS_LAB, 6, 5 ; 6
+ map_const ROUTE_1, 18, 10 ; 1
+ map_const PALLET_TOWN, 9, 10 ; 2
+ map_const REDS_HOUSE_1F, 4, 4 ; 3
+ map_const REDS_HOUSE_2F, 4, 4 ; 4
+ map_const BLUES_HOUSE, 4, 4 ; 5
+ map_const OAKS_LAB, 6, 5 ; 6
newgroup ; 14
- mapgroup ROUTE_3, 9, 30 ; 1
- mapgroup PEWTER_CITY, 18, 20 ; 2
- mapgroup PEWTER_NIDORAN_SPEECH_HOUSE, 4, 4 ; 3
- mapgroup PEWTER_GYM, 7, 5 ; 4
- mapgroup PEWTER_MART, 4, 6 ; 5
- mapgroup PEWTER_POKECENTER_1F, 4, 5 ; 6
- mapgroup PEWTER_POKECENTER_2F_BETA, 4, 8 ; 7
- mapgroup PEWTER_SNOOZE_SPEECH_HOUSE, 4, 4 ; 8
+ map_const ROUTE_3, 9, 30 ; 1
+ map_const PEWTER_CITY, 18, 20 ; 2
+ map_const PEWTER_NIDORAN_SPEECH_HOUSE, 4, 4 ; 3
+ map_const PEWTER_GYM, 7, 5 ; 4
+ map_const PEWTER_MART, 4, 6 ; 5
+ map_const PEWTER_POKECENTER_1F, 4, 5 ; 6
+ map_const PEWTER_POKECENTER_2F_BETA, 4, 8 ; 7
+ map_const PEWTER_SNOOZE_SPEECH_HOUSE, 4, 4 ; 8
newgroup ; 15
- mapgroup OLIVINE_PORT, 18, 10 ; 1
- mapgroup VERMILION_PORT, 18, 10 ; 2
- mapgroup FAST_SHIP_1F, 9, 16 ; 3
- mapgroup FAST_SHIP_CABINS_NNW_NNE_NE, 16, 4 ; 4
- mapgroup FAST_SHIP_CABINS_SW_SSW_NW, 16, 4 ; 5
- mapgroup FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN, 17, 5 ; 6
- mapgroup FAST_SHIP_B1F, 8, 16 ; 7
- mapgroup OLIVINE_PORT_PASSAGE, 9, 10 ; 8
- mapgroup VERMILION_PORT_PASSAGE, 9, 10 ; 9
- mapgroup MOUNT_MOON_SQUARE, 9, 15 ; 10
- mapgroup MOUNT_MOON_GIFT_SHOP, 4, 4 ; 11
- mapgroup TIN_TOWER_ROOF, 9, 10 ; 12
+ map_const OLIVINE_PORT, 18, 10 ; 1
+ map_const VERMILION_PORT, 18, 10 ; 2
+ map_const FAST_SHIP_1F, 9, 16 ; 3
+ map_const FAST_SHIP_CABINS_NNW_NNE_NE, 16, 4 ; 4
+ map_const FAST_SHIP_CABINS_SW_SSW_NW, 16, 4 ; 5
+ map_const FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN, 17, 5 ; 6
+ map_const FAST_SHIP_B1F, 8, 16 ; 7
+ map_const OLIVINE_PORT_PASSAGE, 9, 10 ; 8
+ map_const VERMILION_PORT_PASSAGE, 9, 10 ; 9
+ map_const MOUNT_MOON_SQUARE, 9, 15 ; 10
+ map_const MOUNT_MOON_GIFT_SHOP, 4, 4 ; 11
+ map_const TIN_TOWER_ROOF, 9, 10 ; 12
newgroup ; 16
- mapgroup ROUTE_23, 9, 10 ; 1
- mapgroup INDIGO_PLATEAU_POKECENTER_1F, 7, 9 ; 2
- mapgroup WILLS_ROOM, 9, 5 ; 3
- mapgroup KOGAS_ROOM, 9, 5 ; 4
- mapgroup BRUNOS_ROOM, 9, 5 ; 5
- mapgroup KARENS_ROOM, 9, 5 ; 6
- mapgroup LANCES_ROOM, 12, 5 ; 7
- mapgroup HALL_OF_FAME, 7, 5 ; 8
+ map_const ROUTE_23, 9, 10 ; 1
+ map_const INDIGO_PLATEAU_POKECENTER_1F, 7, 9 ; 2
+ map_const WILLS_ROOM, 9, 5 ; 3
+ map_const KOGAS_ROOM, 9, 5 ; 4
+ map_const BRUNOS_ROOM, 9, 5 ; 5
+ map_const KARENS_ROOM, 9, 5 ; 6
+ map_const LANCES_ROOM, 12, 5 ; 7
+ map_const HALL_OF_FAME, 7, 5 ; 8
newgroup ; 17
- mapgroup ROUTE_13, 9, 30 ; 1
- mapgroup ROUTE_14, 18, 10 ; 2
- mapgroup ROUTE_15, 9, 20 ; 3
- mapgroup ROUTE_18, 9, 10 ; 4
- mapgroup FUCHSIA_CITY, 18, 20 ; 5
- mapgroup FUCHSIA_MART, 4, 6 ; 6
- mapgroup SAFARI_ZONE_MAIN_OFFICE, 4, 4 ; 7
- mapgroup FUCHSIA_GYM, 9, 5 ; 8
- mapgroup FUCHSIA_BILL_SPEECH_HOUSE, 4, 4 ; 9
- mapgroup FUCHSIA_POKECENTER_1F, 4, 5 ; 10
- mapgroup FUCHSIA_POKECENTER_2F_BETA, 4, 8 ; 11
- mapgroup SAFARI_ZONE_WARDENS_HOME, 4, 5 ; 12
- mapgroup ROUTE_15_FUCHSIA_GATE, 4, 5 ; 13
+ map_const ROUTE_13, 9, 30 ; 1
+ map_const ROUTE_14, 18, 10 ; 2
+ map_const ROUTE_15, 9, 20 ; 3
+ map_const ROUTE_18, 9, 10 ; 4
+ map_const FUCHSIA_CITY, 18, 20 ; 5
+ map_const FUCHSIA_MART, 4, 6 ; 6
+ map_const SAFARI_ZONE_MAIN_OFFICE, 4, 4 ; 7
+ map_const FUCHSIA_GYM, 9, 5 ; 8
+ map_const FUCHSIA_BILL_SPEECH_HOUSE, 4, 4 ; 9
+ map_const FUCHSIA_POKECENTER_1F, 4, 5 ; 10
+ map_const FUCHSIA_POKECENTER_2F_BETA, 4, 8 ; 11
+ map_const SAFARI_ZONE_WARDENS_HOME, 4, 5 ; 12
+ map_const ROUTE_15_FUCHSIA_GATE, 4, 5 ; 13
newgroup ; 18
- mapgroup ROUTE_8, 9, 20 ; 1
- mapgroup ROUTE_12, 27, 10 ; 2
- mapgroup ROUTE_10_SOUTH, 9, 10 ; 3
- mapgroup LAVENDER_TOWN, 9, 10 ; 4
- mapgroup LAVENDER_POKECENTER_1F, 4, 5 ; 5
- mapgroup LAVENDER_POKECENTER_2F_BETA, 4, 8 ; 6
- mapgroup MR_FUJIS_HOUSE, 4, 5 ; 7
- mapgroup LAVENDER_TOWN_SPEECH_HOUSE, 4, 4 ; 8
- mapgroup LAVENDER_NAME_RATER, 4, 4 ; 9
- mapgroup LAVENDER_MART, 4, 6 ; 10
- mapgroup SOUL_HOUSE, 4, 5 ; 11
- mapgroup LAV_RADIO_TOWER_1F, 4, 10 ; 12
- mapgroup ROUTE_8_SAFFRON_GATE, 4, 5 ; 13
- mapgroup ROUTE_12_SUPER_ROD_HOUSE, 4, 4 ; 14
+ map_const ROUTE_8, 9, 20 ; 1
+ map_const ROUTE_12, 27, 10 ; 2
+ map_const ROUTE_10_SOUTH, 9, 10 ; 3
+ map_const LAVENDER_TOWN, 9, 10 ; 4
+ map_const LAVENDER_POKECENTER_1F, 4, 5 ; 5
+ map_const LAVENDER_POKECENTER_2F_BETA, 4, 8 ; 6
+ map_const MR_FUJIS_HOUSE, 4, 5 ; 7
+ map_const LAVENDER_TOWN_SPEECH_HOUSE, 4, 4 ; 8
+ map_const LAVENDER_NAME_RATER, 4, 4 ; 9
+ map_const LAVENDER_MART, 4, 6 ; 10
+ map_const SOUL_HOUSE, 4, 5 ; 11
+ map_const LAV_RADIO_TOWER_1F, 4, 10 ; 12
+ map_const ROUTE_8_SAFFRON_GATE, 4, 5 ; 13
+ map_const ROUTE_12_SUPER_ROD_HOUSE, 4, 4 ; 14
newgroup ; 19
- mapgroup ROUTE_28, 9, 20 ; 1
- mapgroup SILVER_CAVE_OUTSIDE, 18, 20 ; 2
- mapgroup SILVER_CAVE_POKECENTER_1F, 4, 5 ; 3
- mapgroup ROUTE_28_FAMOUS_SPEECH_HOUSE, 4, 4 ; 4
+ map_const ROUTE_28, 9, 20 ; 1
+ map_const SILVER_CAVE_OUTSIDE, 18, 20 ; 2
+ map_const SILVER_CAVE_POKECENTER_1F, 4, 5 ; 3
+ map_const ROUTE_28_FAMOUS_SPEECH_HOUSE, 4, 4 ; 4
newgroup ; 20
- mapgroup POKECENTER_2F, 4, 8 ; 1
- mapgroup TRADE_CENTER, 4, 5 ; 2
- mapgroup COLOSSEUM, 4, 5 ; 3
- mapgroup TIME_CAPSULE, 4, 5 ; 4
+ map_const POKECENTER_2F, 4, 8 ; 1
+ map_const TRADE_CENTER, 4, 5 ; 2
+ map_const COLOSSEUM, 4, 5 ; 3
+ map_const TIME_CAPSULE, 4, 5 ; 4
newgroup ; 21
- mapgroup ROUTE_7, 9, 10 ; 1
- mapgroup ROUTE_16, 9, 10 ; 2
- mapgroup ROUTE_17, 45, 10 ; 3
- mapgroup CELADON_CITY, 18, 20 ; 4
- mapgroup CELADON_DEPT_STORE_1F, 4, 8 ; 5
- mapgroup CELADON_DEPT_STORE_2F, 4, 8 ; 6
- mapgroup CELADON_DEPT_STORE_3F, 4, 8 ; 7
- mapgroup CELADON_DEPT_STORE_4F, 4, 8 ; 8
- mapgroup CELADON_DEPT_STORE_5F, 4, 8 ; 9
- mapgroup CELADON_DEPT_STORE_6F, 4, 8 ; 10
- mapgroup CELADON_DEPT_STORE_ELEVATOR, 2, 2 ; 11
- mapgroup CELADON_MANSION_1F, 5, 4 ; 12
- mapgroup CELADON_MANSION_2F, 5, 4 ; 13
- mapgroup CELADON_MANSION_3F, 5, 4 ; 14
- mapgroup CELADON_MANSION_ROOF, 5, 4 ; 15
- mapgroup CELADON_MANSION_ROOF_HOUSE, 4, 4 ; 16
- mapgroup CELADON_POKECENTER_1F, 4, 5 ; 17
- mapgroup CELADON_POKECENTER_2F_BETA, 4, 8 ; 18
- mapgroup CELADON_GAME_CORNER, 7, 10 ; 19
- mapgroup CELADON_GAME_CORNER_PRIZE_ROOM, 3, 3 ; 20
- mapgroup CELADON_GYM, 9, 5 ; 21
- mapgroup CELADON_CAFE, 4, 6 ; 22
- mapgroup ROUTE_16_FUCHSIA_SPEECH_HOUSE, 4, 4 ; 23
- mapgroup ROUTE_16_GATE, 4, 5 ; 24
- mapgroup ROUTE_7_SAFFRON_GATE, 4, 5 ; 25
- mapgroup ROUTE_17_18_GATE, 4, 5 ; 26
+ map_const ROUTE_7, 9, 10 ; 1
+ map_const ROUTE_16, 9, 10 ; 2
+ map_const ROUTE_17, 45, 10 ; 3
+ map_const CELADON_CITY, 18, 20 ; 4
+ map_const CELADON_DEPT_STORE_1F, 4, 8 ; 5
+ map_const CELADON_DEPT_STORE_2F, 4, 8 ; 6
+ map_const CELADON_DEPT_STORE_3F, 4, 8 ; 7
+ map_const CELADON_DEPT_STORE_4F, 4, 8 ; 8
+ map_const CELADON_DEPT_STORE_5F, 4, 8 ; 9
+ map_const CELADON_DEPT_STORE_6F, 4, 8 ; 10
+ map_const CELADON_DEPT_STORE_ELEVATOR, 2, 2 ; 11
+ map_const CELADON_MANSION_1F, 5, 4 ; 12
+ map_const CELADON_MANSION_2F, 5, 4 ; 13
+ map_const CELADON_MANSION_3F, 5, 4 ; 14
+ map_const CELADON_MANSION_ROOF, 5, 4 ; 15
+ map_const CELADON_MANSION_ROOF_HOUSE, 4, 4 ; 16
+ map_const CELADON_POKECENTER_1F, 4, 5 ; 17
+ map_const CELADON_POKECENTER_2F_BETA, 4, 8 ; 18
+ map_const CELADON_GAME_CORNER, 7, 10 ; 19
+ map_const CELADON_GAME_CORNER_PRIZE_ROOM, 3, 3 ; 20
+ map_const CELADON_GYM, 9, 5 ; 21
+ map_const CELADON_CAFE, 4, 6 ; 22
+ map_const ROUTE_16_FUCHSIA_SPEECH_HOUSE, 4, 4 ; 23
+ map_const ROUTE_16_GATE, 4, 5 ; 24
+ map_const ROUTE_7_SAFFRON_GATE, 4, 5 ; 25
+ map_const ROUTE_17_18_GATE, 4, 5 ; 26
newgroup ; 22
- mapgroup ROUTE_40, 18, 10 ; 1
- mapgroup ROUTE_41, 27, 25 ; 2
- mapgroup CIANWOOD_CITY, 27, 15 ; 3
- mapgroup MANIAS_HOUSE, 4, 4 ; 4
- mapgroup CIANWOOD_GYM, 9, 5 ; 5
- mapgroup CIANWOOD_POKECENTER_1F, 4, 5 ; 6
- mapgroup CIANWOOD_PHARMACY, 4, 4 ; 7
- mapgroup CIANWOOD_CITY_PHOTO_STUDIO, 4, 4 ; 8
- mapgroup CIANWOOD_LUGIA_SPEECH_HOUSE, 4, 4 ; 9
+ map_const ROUTE_40, 18, 10 ; 1
+ map_const ROUTE_41, 27, 25 ; 2
+ map_const CIANWOOD_CITY, 27, 15 ; 3
+ map_const MANIAS_HOUSE, 4, 4 ; 4
+ map_const CIANWOOD_GYM, 9, 5 ; 5
+ map_const CIANWOOD_POKECENTER_1F, 4, 5 ; 6
+ map_const CIANWOOD_PHARMACY, 4, 4 ; 7
+ map_const CIANWOOD_CITY_PHOTO_STUDIO, 4, 4 ; 8
+ map_const CIANWOOD_LUGIA_SPEECH_HOUSE, 4, 4 ; 9
newgroup ; 23
- mapgroup ROUTE_2, 27, 10 ; 1
- mapgroup ROUTE_22, 9, 20 ; 2
- mapgroup VIRIDIAN_CITY, 18, 20 ; 3
- mapgroup VIRIDIAN_GYM, 9, 5 ; 4
- mapgroup VIRIDIAN_NICKNAME_SPEECH_HOUSE, 4, 4 ; 5
- mapgroup TRAINER_HOUSE_1F, 7, 5 ; 6
- mapgroup TRAINER_HOUSE_B1F, 8, 5 ; 7
- mapgroup VIRIDIAN_MART, 4, 6 ; 8
- mapgroup VIRIDIAN_POKECENTER_1F, 4, 5 ; 9
- mapgroup VIRIDIAN_POKECENTER_2F_BETA, 4, 8 ; 10
- mapgroup ROUTE_2_NUGGET_SPEECH_HOUSE, 4, 4 ; 11
- mapgroup ROUTE_2_GATE, 4, 5 ; 12
- mapgroup VICTORY_ROAD_GATE, 9, 10 ; 13
+ map_const ROUTE_2, 27, 10 ; 1
+ map_const ROUTE_22, 9, 20 ; 2
+ map_const VIRIDIAN_CITY, 18, 20 ; 3
+ map_const VIRIDIAN_GYM, 9, 5 ; 4
+ map_const VIRIDIAN_NICKNAME_SPEECH_HOUSE, 4, 4 ; 5
+ map_const TRAINER_HOUSE_1F, 7, 5 ; 6
+ map_const TRAINER_HOUSE_B1F, 8, 5 ; 7
+ map_const VIRIDIAN_MART, 4, 6 ; 8
+ map_const VIRIDIAN_POKECENTER_1F, 4, 5 ; 9
+ map_const VIRIDIAN_POKECENTER_2F_BETA, 4, 8 ; 10
+ map_const ROUTE_2_NUGGET_SPEECH_HOUSE, 4, 4 ; 11
+ map_const ROUTE_2_GATE, 4, 5 ; 12
+ map_const VICTORY_ROAD_GATE, 9, 10 ; 13
newgroup ; 24
- mapgroup ROUTE_26, 54, 10 ; 1
- mapgroup ROUTE_27, 9, 40 ; 2
- mapgroup ROUTE_29, 9, 30 ; 3
- mapgroup NEW_BARK_TOWN, 9, 10 ; 4
- mapgroup ELMS_LAB, 6, 5 ; 5
- mapgroup KRISS_HOUSE_1F, 4, 5 ; 6
- mapgroup KRISS_HOUSE_2F, 3, 4 ; 7
- mapgroup KRISS_NEIGHBORS_HOUSE, 4, 4 ; 8
- mapgroup ELMS_HOUSE, 4, 4 ; 9
- mapgroup ROUTE_26_HEAL_SPEECH_HOUSE, 4, 4 ; 10
- mapgroup ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE, 4, 4 ; 11
- mapgroup ROUTE_27_SANDSTORM_HOUSE, 4, 4 ; 12
- mapgroup ROUTE_29_46_GATE, 4, 5 ; 13
+ map_const ROUTE_26, 54, 10 ; 1
+ map_const ROUTE_27, 9, 40 ; 2
+ map_const ROUTE_29, 9, 30 ; 3
+ map_const NEW_BARK_TOWN, 9, 10 ; 4
+ map_const ELMS_LAB, 6, 5 ; 5
+ map_const KRISS_HOUSE_1F, 4, 5 ; 6
+ map_const KRISS_HOUSE_2F, 3, 4 ; 7
+ map_const KRISS_NEIGHBORS_HOUSE, 4, 4 ; 8
+ map_const ELMS_HOUSE, 4, 4 ; 9
+ map_const ROUTE_26_HEAL_SPEECH_HOUSE, 4, 4 ; 10
+ map_const ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE, 4, 4 ; 11
+ map_const ROUTE_27_SANDSTORM_HOUSE, 4, 4 ; 12
+ map_const ROUTE_29_46_GATE, 4, 5 ; 13
newgroup ; 25
- mapgroup ROUTE_5, 9, 10 ; 1
- mapgroup SAFFRON_CITY, 18, 20 ; 2
- mapgroup FIGHTING_DOJO, 6, 5 ; 3
- mapgroup SAFFRON_GYM, 9, 10 ; 4
- mapgroup SAFFRON_MART, 4, 6 ; 5
- mapgroup SAFFRON_POKECENTER_1F, 4, 5 ; 6
- mapgroup SAFFRON_POKECENTER_2F_BETA, 4, 8 ; 7
- mapgroup MR_PSYCHICS_HOUSE, 4, 4 ; 8
- mapgroup SAFFRON_TRAIN_STATION, 9, 10 ; 9
- mapgroup SILPH_CO_1F, 4, 8 ; 10
- mapgroup COPYCATS_HOUSE_1F, 4, 4 ; 11
- mapgroup COPYCATS_HOUSE_2F, 3, 5 ; 12
- mapgroup ROUTE_5_UNDERGROUND_ENTRANCE, 4, 4 ; 13
- mapgroup ROUTE_5_SAFFRON_CITY_GATE, 4, 5 ; 14
- mapgroup ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE, 4, 4 ; 15
+ map_const ROUTE_5, 9, 10 ; 1
+ map_const SAFFRON_CITY, 18, 20 ; 2
+ map_const FIGHTING_DOJO, 6, 5 ; 3
+ map_const SAFFRON_GYM, 9, 10 ; 4
+ map_const SAFFRON_MART, 4, 6 ; 5
+ map_const SAFFRON_POKECENTER_1F, 4, 5 ; 6
+ map_const SAFFRON_POKECENTER_2F_BETA, 4, 8 ; 7
+ map_const MR_PSYCHICS_HOUSE, 4, 4 ; 8
+ map_const SAFFRON_TRAIN_STATION, 9, 10 ; 9
+ map_const SILPH_CO_1F, 4, 8 ; 10
+ map_const COPYCATS_HOUSE_1F, 4, 4 ; 11
+ map_const COPYCATS_HOUSE_2F, 3, 5 ; 12
+ map_const ROUTE_5_UNDERGROUND_ENTRANCE, 4, 4 ; 13
+ map_const ROUTE_5_SAFFRON_CITY_GATE, 4, 5 ; 14
+ map_const ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE, 4, 4 ; 15
newgroup ; 26
- mapgroup ROUTE_30, 27, 10 ; 1
- mapgroup ROUTE_31, 9, 20 ; 2
- mapgroup CHERRYGROVE_CITY, 9, 20 ; 3
- mapgroup CHERRYGROVE_MART, 4, 6 ; 4
- mapgroup CHERRYGROVE_POKECENTER_1F, 4, 5 ; 5
- mapgroup CHERRYGROVE_GYM_SPEECH_HOUSE, 4, 4 ; 6
- mapgroup GUIDE_GENTS_HOUSE, 4, 4 ; 7
- mapgroup CHERRYGROVE_EVOLUTION_SPEECH_HOUSE, 4, 4 ; 8
- mapgroup ROUTE_30_BERRY_SPEECH_HOUSE, 4, 4 ; 9
- mapgroup MR_POKEMONS_HOUSE, 4, 4 ; 10
- mapgroup ROUTE_31_VIOLET_GATE, 4, 5 ; 11
-
-NUM_MAP_GROUPS EQU const_value
-
-; elevator floors
-
- const_def
- const _B4F
- const _B3F
- const _B2F
- const _B1F
- const _1F
- const _2F
- const _3F
- const _4F
- const _5F
- const _6F
- const _7F
- const _8F
- const _9F
- const _10F
- const _11F
- const _ROOF
-
-; connection directions
- const_def
- const EAST_F
- const WEST_F
- const SOUTH_F
- const NORTH_F
-
- const_def
- shift_const EAST
- shift_const WEST
- shift_const SOUTH
- shift_const NORTH
-
-; permissions
-const_value SET 1
- const TOWN
- const ROUTE
- const INDOOR
- const CAVE
- const PERM_5
- const GATE
- const DUNGEON
-
-; object struct
- const_def
- const OBJECT_SPRITE ; 00
- const OBJECT_MAP_OBJECT_INDEX ; 01
- const OBJECT_SPRITE_TILE ; 02
- const OBJECT_MOVEMENTTYPE ; 03
- const OBJECT_FLAGS1 ; 04
- const OBJECT_FLAGS2 ; 05
- const OBJECT_PALETTE ; 06
- const OBJECT_DIRECTION_WALKING ; 07
- const OBJECT_FACING ; 08
- const OBJECT_STEP_TYPE ; 09
- const OBJECT_STEP_DURATION ; 0a
- const OBJECT_ACTION ; 0b
- const OBJECT_STEP_FRAME ; 0c
- const OBJECT_FACING_STEP ; 0d
- const OBJECT_NEXT_TILE ; 0e
- const OBJECT_STANDING_TILE ; 0f
- const OBJECT_NEXT_MAP_X ; 10
- const OBJECT_NEXT_MAP_Y ; 11
- const OBJECT_MAP_X ; 12
- const OBJECT_MAP_Y ; 13
- const OBJECT_INIT_X ; 14
- const OBJECT_INIT_Y ; 15
- const OBJECT_RADIUS ; 16
- const OBJECT_SPRITE_X ; 17
- const OBJECT_SPRITE_Y ; 18
- const OBJECT_SPRITE_X_OFFSET ; 19
- const OBJECT_SPRITE_Y_OFFSET ; 1a
- const OBJECT_MOVEMENT_BYTE_INDEX ; 1b
- const OBJECT_28 ; 1c
- const OBJECT_29 ; 1d
- const OBJECT_30 ; 1e
- const OBJECT_31 ; 1f
- const OBJECT_RANGE ; 20
-; 33-39 are not used
-
-; map object struct
- const_def
- const MAPOBJECT_OBJECT_STRUCT_ID ; 0
- const MAPOBJECT_SPRITE ; 1
- const MAPOBJECT_Y_COORD ; 2
- const MAPOBJECT_X_COORD ; 3
- const MAPOBJECT_MOVEMENT ; 4
- const MAPOBJECT_RADIUS ; 5
- const MAPOBJECT_HOUR ; 6
- const MAPOBJECT_TIMEOFDAY ; 7
- const MAPOBJECT_COLOR ; 8
- const MAPOBJECT_RANGE ; 9
- const MAPOBJECT_SCRIPT_POINTER ; a
- const MAPOBJECT_POINTER_HI ; b
- const MAPOBJECT_EVENT_FLAG ; c
- const MAPOBJECT_FLAG_HI ; d
- const MAPOBJECT_E ; unused
- const MAPOBJECT_F ; unused
-OBJECT_LENGTH EQU const_value
-
-MAPOBJECT_SCREEN_HEIGHT EQU 11
-MAPOBJECT_SCREEN_WIDTH EQU 12
-
-OW_DOWN EQU DOWN << 2
-OW_UP EQU UP << 2
-OW_LEFT EQU LEFT << 2
-OW_RIGHT EQU RIGHT << 2
-
- const_def
- const EMOTE_SHOCK ; 0
- const EMOTE_QUESTION ; 1
- const EMOTE_HAPPY ; 2
- const EMOTE_SAD ; 3
- const EMOTE_HEART ; 4
- const EMOTE_BOLT ; 5
- const EMOTE_SLEEP ; 6
- const EMOTE_FISH ; 7
- const EMOTE_SHADOW ; 8
- const EMOTE_ROD ; 9
- const EMOTE_BOULDER_DUST ; 10
- const EMOTE_0B ; 11
-EMOTE_MEM EQU -1
-
- const_def
- const SIGNPOST_READ
- const SIGNPOST_UP
- const SIGNPOST_DOWN
- const SIGNPOST_RIGHT
- const SIGNPOST_LEFT
- const SIGNPOST_IFSET
- const SIGNPOST_IFNOTSET
- const SIGNPOST_ITEM
- const SIGNPOST_COPY
-
-; I'm relocating spawn constants here, so that they can be used anywhere in the disassembly.
-
-
-const_value = -1
- const SPAWN_N_A
-
- const SPAWN_HOME
- const SPAWN_DEBUG
-
- const SPAWN_PALLET
- const SPAWN_VIRIDIAN
- const SPAWN_PEWTER
- const SPAWN_CERULEAN
- const SPAWN_ROCK_TUNNEL
- const SPAWN_VERMILION
- const SPAWN_LAVENDER
- const SPAWN_SAFFRON
- const SPAWN_CELADON
- const SPAWN_FUCHSIA
- const SPAWN_CINNABAR
- const SPAWN_INDIGO
-
- const SPAWN_NEW_BARK
- const SPAWN_CHERRYGROVE
- const SPAWN_VIOLET
- const SPAWN_UNION_CAVE
- const SPAWN_AZALEA
- const SPAWN_CIANWOOD
- const SPAWN_GOLDENROD
- const SPAWN_OLIVINE
- const SPAWN_ECRUTEAK
- const SPAWN_MAHOGANY
- const SPAWN_LAKE
- const SPAWN_BLACKTHORN
- const SPAWN_MT_SILVER
- const SPAWN_FAST_SHIP
-NUM_SPAWNS EQU const_value
-
- const_def
- const PALETTE_AUTO
- const PALETTE_DAY
- const PALETTE_NITE
- const PALETTE_MORN
- const PALETTE_DARK
-
-INVISIBLE EQU 0
-FIXED_FACING EQU 2
-SLIDING EQU 3
-EMOTE_OBJECT EQU 7
-
- const_def
- const PERSONTYPE_SCRIPT
- const PERSONTYPE_ITEMBALL
- const PERSONTYPE_TRAINER
- const PERSONTYPE_3
- const PERSONTYPE_4
- const PERSONTYPE_5
- const PERSONTYPE_6
-
-; fruit trees
-const_value SET 1
- const FRUITTREE_ROUTE_29 ; 01
- const FRUITTREE_ROUTE_30_1 ; 02
- const FRUITTREE_ROUTE_38 ; 03
- const FRUITTREE_ROUTE_46_1 ; 04
- const FRUITTREE_ROUTE_30_2 ; 05
- const FRUITTREE_ROUTE_33 ; 06
- const FRUITTREE_ROUTE_31 ; 07
- const FRUITTREE_ROUTE_43 ; 08
- const FRUITTREE_VIOLET_CITY ; 09
- const FRUITTREE_ROUTE_46_2 ; 0a
- const FRUITTREE_ROUTE_35 ; 0b
- const FRUITTREE_ROUTE_45 ; 0c
- const FRUITTREE_ROUTE_36 ; 0d
- const FRUITTREE_ROUTE_26 ; 0e
- const FRUITTREE_ROUTE_39 ; 0f
- const FRUITTREE_ROUTE_44 ; 10
- const FRUITTREE_ROUTE_37_1 ; 11
- const FRUITTREE_ROUTE_37_2 ; 12
- const FRUITTREE_ROUTE_37_3 ; 13
- const FRUITTREE_AZALEA_TOWN ; 14
- const FRUITTREE_ROUTE_42_1 ; 15
- const FRUITTREE_ROUTE_42_2 ; 16
- const FRUITTREE_ROUTE_42_3 ; 17
- const FRUITTREE_ROUTE_11 ; 18
- const FRUITTREE_ROUTE_2 ; 19
- const FRUITTREE_ROUTE_1 ; 1a
- const FRUITTREE_ROUTE_8 ; 1b
- const FRUITTREE_PEWTER_CITY_1 ; 1c
- const FRUITTREE_PEWTER_CITY_2 ; 1d
- const FRUITTREE_FUCHSIA_CITY ; 1e
-NUM_FRUIT_TREES EQU const_value +- 1
-
-CMDQUEUE_TYPE EQU 0
-CMDQUEUE_ADDR EQU 1
-CMDQUEUE_03 EQU 3
-CMDQUEUE_04 EQU 4
-CMDQUEUE_05 EQU 5
-CMDQUEUE_ENTRY_SIZE EQU 6
-CMDQUEUE_CAPACITY EQU 4
-
-CMDQUEUE_STONETABLE EQU 2
+ map_const ROUTE_30, 27, 10 ; 1
+ map_const ROUTE_31, 9, 20 ; 2
+ map_const CHERRYGROVE_CITY, 9, 20 ; 3
+ map_const CHERRYGROVE_MART, 4, 6 ; 4
+ map_const CHERRYGROVE_POKECENTER_1F, 4, 5 ; 5
+ map_const CHERRYGROVE_GYM_SPEECH_HOUSE, 4, 4 ; 6
+ map_const GUIDE_GENTS_HOUSE, 4, 4 ; 7
+ map_const CHERRYGROVE_EVOLUTION_SPEECH_HOUSE, 4, 4 ; 8
+ map_const ROUTE_30_BERRY_SPEECH_HOUSE, 4, 4 ; 9
+ map_const MR_POKEMONS_HOUSE, 4, 4 ; 10
+ map_const ROUTE_31_VIOLET_GATE, 4, 5 ; 11
diff --git a/constants/map_data_constants.asm b/constants/map_data_constants.asm
new file mode 100644
index 00000000..5098e28d
--- /dev/null
+++ b/constants/map_data_constants.asm
@@ -0,0 +1,104 @@
+GROUP_N_A EQU -1
+MAP_N_A EQU -1
+GROUP_NONE EQU 0
+MAP_NONE EQU 0
+
+; map struct members (see data/maps/maps.asm)
+ const_def
+ const MAP_MAPATTRIBUTES_BANK ; 0
+ const MAP_TILESET ; 1
+ const MAP_ENVIRONMENT ; 2
+ const MAP_MAPATTRIBUTES ; 3
+ const MAP_MAPATTRIBUTES_HI ; 4
+ const MAP_LOCATION ; 5
+ const MAP_MUSIC ; 6
+ const MAP_PALETTE ; 7
+ const MAP_FISHGROUP ; 8
+
+; map environments (wEnvironment)
+ const_def 1
+ const TOWN
+ const ROUTE
+ const INDOOR
+ const CAVE
+ const ENVIRONMENT_5
+ const GATE
+ const DUNGEON
+
+; map palettes (wEnvironment)
+ const_def
+ const PALETTE_AUTO
+ const PALETTE_DAY
+ const PALETTE_NITE
+ const PALETTE_MORN
+ const PALETTE_DARK
+
+; FishGroups indexes (see data/wild/fish.asm)
+ const_def
+ const FISHGROUP_NONE
+ const FISHGROUP_SHORE
+ const FISHGROUP_OCEAN
+ const FISHGROUP_LAKE
+ const FISHGROUP_POND
+ const FISHGROUP_DRATINI
+ const FISHGROUP_QWILFISH_SWARM
+ const FISHGROUP_REMORAID_SWARM
+ const FISHGROUP_GYARADOS
+ const FISHGROUP_DRATINI_2
+ const FISHGROUP_WHIRL_ISLANDS
+ const FISHGROUP_QWILFISH
+ const FISHGROUP_REMORAID
+ const FISHGROUP_QWILFISH_NO_SWARM
+
+; connection directions (see data/maps/data.asm)
+ const_def
+ const EAST_F
+ const WEST_F
+ const SOUTH_F
+ const NORTH_F
+
+; wMapConnections
+ const_def
+ shift_const EAST
+ shift_const WEST
+ shift_const SOUTH
+ shift_const NORTH
+
+; SpawnPoints indexes (see data/maps/spawn_points.asm)
+const_value = -1
+ const SPAWN_N_A
+ const SPAWN_HOME
+ const SPAWN_DEBUG
+; kanto
+ const SPAWN_PALLET
+ const SPAWN_VIRIDIAN
+ const SPAWN_PEWTER
+ const SPAWN_CERULEAN
+ const SPAWN_ROCK_TUNNEL
+ const SPAWN_VERMILION
+ const SPAWN_LAVENDER
+ const SPAWN_SAFFRON
+ const SPAWN_CELADON
+ const SPAWN_FUCHSIA
+ const SPAWN_CINNABAR
+ const SPAWN_INDIGO
+; johto
+ const SPAWN_NEW_BARK
+ const SPAWN_CHERRYGROVE
+ const SPAWN_VIOLET
+ const SPAWN_UNION_CAVE
+ const SPAWN_AZALEA
+ const SPAWN_CIANWOOD
+ const SPAWN_GOLDENROD
+ const SPAWN_OLIVINE
+ const SPAWN_ECRUTEAK
+ const SPAWN_MAHOGANY
+ const SPAWN_LAKE_OF_RAGE
+ const SPAWN_BLACKTHORN
+ const SPAWN_MT_SILVER
+ const SPAWN_FAST_SHIP
+NUM_SPAWNS EQU const_value
+
+; outdoor sprite limits (see engine/overworld/overworld.asm)
+MAX_OUTDOOR_SPRITES EQU 23
+SPRITE_GFX_LIST_CAPACITY EQU $20
diff --git a/constants/map_object_constants.asm b/constants/map_object_constants.asm
new file mode 100644
index 00000000..55a3f358
--- /dev/null
+++ b/constants/map_object_constants.asm
@@ -0,0 +1,294 @@
+; object_struct members (see macros/wram.asm)
+ const_def
+ const OBJECT_SPRITE ; 00
+ const OBJECT_MAP_OBJECT_INDEX ; 01
+ const OBJECT_SPRITE_TILE ; 02
+ const OBJECT_MOVEMENTTYPE ; 03
+ const OBJECT_FLAGS1 ; 04
+ const OBJECT_FLAGS2 ; 05
+ const OBJECT_PALETTE ; 06
+ const OBJECT_DIRECTION_WALKING ; 07
+ const OBJECT_FACING ; 08
+ const OBJECT_STEP_TYPE ; 09
+ const OBJECT_STEP_DURATION ; 0a
+ const OBJECT_ACTION ; 0b
+ const OBJECT_STEP_FRAME ; 0c
+ const OBJECT_FACING_STEP ; 0d
+ const OBJECT_NEXT_TILE ; 0e
+ const OBJECT_STANDING_TILE ; 0f
+ const OBJECT_NEXT_MAP_X ; 10
+ const OBJECT_NEXT_MAP_Y ; 11
+ const OBJECT_MAP_X ; 12
+ const OBJECT_MAP_Y ; 13
+ const OBJECT_INIT_X ; 14
+ const OBJECT_INIT_Y ; 15
+ const OBJECT_RADIUS ; 16
+ const OBJECT_SPRITE_X ; 17
+ const OBJECT_SPRITE_Y ; 18
+ const OBJECT_SPRITE_X_OFFSET ; 19
+ const OBJECT_SPRITE_Y_OFFSET ; 1a
+ const OBJECT_MOVEMENT_BYTE_INDEX ; 1b
+ const OBJECT_1C ; 1c
+ const OBJECT_1D ; 1d
+ const OBJECT_1E ; 1e
+ const OBJECT_1F ; 1f
+ const OBJECT_RANGE ; 20
+ ; 21-27 are not used
+OBJECT_STRUCT_LENGTH EQU 40
+NUM_OBJECT_STRUCTS EQU 13 ; see wObjectStructs
+
+; object_struct OBJECT_FACING values
+OW_DOWN EQU DOWN << 2
+OW_UP EQU UP << 2
+OW_LEFT EQU LEFT << 2
+OW_RIGHT EQU RIGHT << 2
+
+; object_struct OBJECT_FLAGS1 bit flags
+ const_def
+ const INVISIBLE_F ; 0
+ const WONT_DELETE_F ; 1
+ const FIXED_FACING_F ; 2
+ const SLIDING_F ; 3
+ const NOCLIP_TILES_F ; 4
+ const MOVE_ANYWHERE_F ; 5
+ const NOCLIP_OBJS_F ; 6
+ const EMOTE_OBJECT_F ; 7
+
+INVISIBLE EQU 1 << INVISIBLE_F
+WONT_DELETE EQU 1 << WONT_DELETE_F
+FIXED_FACING EQU 1 << FIXED_FACING_F
+SLIDING EQU 1 << SLIDING_F
+NOCLIP_TILES EQU 1 << NOCLIP_TILES_F
+MOVE_ANYWHERE EQU 1 << MOVE_ANYWHERE_F
+NOCLIP_OBJS EQU 1 << NOCLIP_OBJS_F
+EMOTE_OBJECT EQU 1 << EMOTE_OBJECT_F
+
+; object_struct OBJECT_FLAGS2 bit flags
+ const_def
+ const LOW_PRIORITY_F ; 0
+ const HIGH_PRIORITY_F ; 1
+ const OBJ_FLAGS2_2 ; 2
+ const OVERHEAD_F ; 3
+ const USE_OBP1_F ; 4
+
+LOW_PRIORITY EQU 1 << LOW_PRIORITY_F
+HIGH_PRIORITY EQU 1 << HIGH_PRIORITY_F
+OVERHEAD EQU 1 << OVERHEAD_F
+USE_OBP1 EQU 1 << USE_OBP1_F
+
+; object_struct OBJECT_PALETTE bit flags
+ const_def 5
+ const SWIMMING_F ; 5
+ const STRENGTH_BOULDER_F ; 6
+ const BIG_OBJECT_F ; 7
+
+SWIMMING EQU 1 << SWIMMING_F
+STRENGTH_BOULDER EQU 1 << STRENGTH_BOULDER_F
+BIG_OBJECT EQU 1 << BIG_OBJECT_F
+
+; facing attribute bit flags
+RELATIVE_ATTRIBUTES_F EQU 1
+ABSOLUTE_TILE_ID_F EQU 2
+
+RELATIVE_ATTRIBUTES EQU 1 << RELATIVE_ATTRIBUTES_F
+ABSOLUTE_TILE_ID EQU 1 << ABSOLUTE_TILE_ID_F
+
+; map_object struct members (see macros/wram.asm)
+ const_def
+ const MAPOBJECT_OBJECT_STRUCT_ID ; 0
+ const MAPOBJECT_SPRITE ; 1
+ const MAPOBJECT_Y_COORD ; 2
+ const MAPOBJECT_X_COORD ; 3
+ const MAPOBJECT_MOVEMENT ; 4
+ const MAPOBJECT_RADIUS ; 5
+ const MAPOBJECT_HOUR ; 6
+ const MAPOBJECT_TIMEOFDAY ; 7
+ const MAPOBJECT_COLOR ; 8
+ const MAPOBJECT_RANGE ; 9
+ const MAPOBJECT_SCRIPT_POINTER ; a
+ const MAPOBJECT_POINTER_HI ; b
+ const MAPOBJECT_EVENT_FLAG ; c
+ const MAPOBJECT_FLAG_HI ; d
+ const MAPOBJECT_E ; unused
+ const MAPOBJECT_F ; unused
+OBJECT_LENGTH EQU const_value
+
+; SpriteMovementData struct members (see data/sprites/map_objects.asm)
+ const_def
+ const SPRITEMOVEATTR_MOVEMENT ; 0
+ const SPRITEMOVEATTR_FACING ; 1
+ const SPRITEMOVEATTR_ACTION ; 2
+ const SPRITEMOVEATTR_FLAGS1 ; 3
+ const SPRITEMOVEATTR_FLAGS2 ; 4
+ const SPRITEMOVEATTR_PALFLAGS ; 5
+NUM_SPRITEMOVEDATA_FIELDS EQU const_value
+
+MAPOBJECT_SCREEN_WIDTH EQU (SCREEN_WIDTH / 2) + 2
+MAPOBJECT_SCREEN_HEIGHT EQU (SCREEN_HEIGHT / 2) + 2
+
+; SpriteMovementData indexes (see data/sprites/map_objects.asm)
+ const_def
+ const SPRITEMOVEDATA_00 ; 00
+ const SPRITEMOVEDATA_STILL ; 01
+ const SPRITEMOVEDATA_WANDER ; 02
+ const SPRITEMOVEDATA_SPINRANDOM_SLOW ; 03
+ const SPRITEMOVEDATA_WALK_UP_DOWN ; 04
+ const SPRITEMOVEDATA_WALK_LEFT_RIGHT ; 05
+ const SPRITEMOVEDATA_STANDING_DOWN ; 06
+ const SPRITEMOVEDATA_STANDING_UP ; 07
+ const SPRITEMOVEDATA_STANDING_LEFT ; 08
+ const SPRITEMOVEDATA_STANDING_RIGHT ; 09
+ const SPRITEMOVEDATA_SPINRANDOM_FAST ; 0a
+ const SPRITEMOVEDATA_PLAYER ; 0b
+ const SPRITEMOVEDATA_0C ; 0c
+ const SPRITEMOVEDATA_0D ; 0d
+ const SPRITEMOVEDATA_0E ; 0e
+ const SPRITEMOVEDATA_0F ; 0f
+ const SPRITEMOVEDATA_10 ; 10
+ const SPRITEMOVEDATA_11 ; 11
+ const SPRITEMOVEDATA_12 ; 12
+ const SPRITEMOVEDATA_FOLLOWING ; 13
+ const SPRITEMOVEDATA_SCRIPTED ; 14
+ const SPRITEMOVEDATA_BIGDOLLSYM ; 15
+ const SPRITEMOVEDATA_POKEMON ; 16
+ const SPRITEMOVEDATA_SUDOWOODO ; 17
+ const SPRITEMOVEDATA_SMASHABLE_ROCK ; 18
+ const SPRITEMOVEDATA_STRENGTH_BOULDER ; 19
+ const SPRITEMOVEDATA_FOLLOWNOTEXACT ; 1a
+ const SPRITEMOVEDATA_SHADOW ; 1b
+ const SPRITEMOVEDATA_EMOTE ; 1c
+ const SPRITEMOVEDATA_SCREENSHAKE ; 1d
+ const SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE ; 1e
+ const SPRITEMOVEDATA_SPINCLOCKWISE ; 1f
+ const SPRITEMOVEDATA_BIGDOLLASYM ; 20
+ const SPRITEMOVEDATA_BIGDOLL ; 21
+ const SPRITEMOVEDATA_BOULDERDUST ; 22
+ const SPRITEMOVEDATA_GRASS ; 23
+ const SPRITEMOVEDATA_SWIM_WANDER ; 24
+NUM_SPRITEMOVEDATA EQU const_value
+
+; MapObjectMovementPattern.Pointers indexes (see engine/overworld/map_objects.asm)
+ const_def
+ const SPRITEMOVEFN_00 ; 00
+ const SPRITEMOVEFN_RANDOM_WALK_Y ; 01
+ const SPRITEMOVEFN_RANDOM_WALK_X ; 02
+ const SPRITEMOVEFN_RANDOM_WALK_XY ; 03
+ const SPRITEMOVEFN_SLOW_RANDOM_SPIN ; 04
+ const SPRITEMOVEFN_FAST_RANDOM_SPIN ; 05
+ const SPRITEMOVEFN_STANDING ; 06
+ const SPRITEMOVEFN_OBEY_DPAD ; 07
+ const SPRITEMOVEFN_08 ; 08
+ const SPRITEMOVEFN_09 ; 09
+ const SPRITEMOVEFN_0A ; 0a
+ const SPRITEMOVEFN_0B ; 0b
+ const SPRITEMOVEFN_0C ; 0c
+ const SPRITEMOVEFN_0D ; 0d
+ const SPRITEMOVEFN_0E ; 0e
+ const SPRITEMOVEFN_FOLLOW ; 0f
+ const SPRITEMOVEFN_SCRIPTED ; 10
+ const SPRITEMOVEFN_STRENGTH ; 11
+ const SPRITEMOVEFN_FOLLOWNOTEXACT ; 12
+ const SPRITEMOVEFN_SHADOW ; 13
+ const SPRITEMOVEFN_EMOTE ; 14
+ const SPRITEMOVEFN_BIG_SNORLAX ; 15
+ const SPRITEMOVEFN_BOUNCE ; 16
+ const SPRITEMOVEFN_SCREENSHAKE ; 17
+ const SPRITEMOVEFN_SPIN_CLOCKWISE ; 18
+ const SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE ; 19
+ const SPRITEMOVEFN_BOULDERDUST ; 1a
+ const SPRITEMOVEFN_GRASS ; 1b
+
+; StepTypesJumptable indexes (see engine/overworld/map_objects.asm)
+ const_def
+ const STEP_TYPE_00 ; 00
+ const STEP_TYPE_SLEEP ; 01
+ const STEP_TYPE_NPC_WALK ; 02
+ const STEP_TYPE_03 ; 03
+ const STEP_TYPE_04 ; 04
+ const STEP_TYPE_05 ; 05
+ const STEP_TYPE_PLAYER_WALK ; 06
+ const STEP_TYPE_07 ; 07
+ const STEP_TYPE_NPC_JUMP ; 08
+ const STEP_TYPE_PLAYER_JUMP ; 09
+ const STEP_TYPE_HALF_STEP ; 0a
+ const STEP_TYPE_BUMP ; 0b
+ const STEP_TYPE_TELEPORT_FROM ; 0c
+ const STEP_TYPE_TELEPORT_TO ; 0d
+ const STEP_TYPE_SKYFALL ; 0e
+ const STEP_TYPE_0F ; 0f
+ const STEP_TYPE_GOT_BITE ; 10
+ const STEP_TYPE_ROCK_SMASH ; 11
+ const STEP_TYPE_RETURN_DIG ; 12
+ const STEP_TYPE_TRACKING_OBJECT ; 13
+ const STEP_TYPE_14 ; 14
+ const STEP_TYPE_15 ; 15
+ const STEP_TYPE_16 ; 16
+ const STEP_TYPE_17 ; 17
+ const STEP_TYPE_18 ; 18
+ const STEP_TYPE_SKYFALL_TOP ; 19
+
+; ObjectActionPairPointers indexes (see engine/overworld/map_object_action.asm)
+ const_def
+ const OBJECT_ACTION_00 ; 00
+ const OBJECT_ACTION_STAND ; 01
+ const OBJECT_ACTION_STEP ; 02
+ const OBJECT_ACTION_BUMP ; 03
+ const OBJECT_ACTION_SPIN ; 04
+ const OBJECT_ACTION_SPIN_FLICKER ; 05
+ const OBJECT_ACTION_FISHING ; 06
+ const OBJECT_ACTION_SHADOW ; 07
+ const OBJECT_ACTION_EMOTE ; 08
+ const OBJECT_ACTION_BIG_DOLL_SYM ; 09
+ const OBJECT_ACTION_BOUNCE ; 0a
+ const OBJECT_ACTION_WEIRD_TREE ; 0b
+ const OBJECT_ACTION_BIG_DOLL_ASYM ; 0c
+ const OBJECT_ACTION_BIG_DOLL ; 0d
+ const OBJECT_ACTION_BOULDER_DUST ; 0e
+ const OBJECT_ACTION_GRASS_SHAKE ; 0f
+ const OBJECT_ACTION_SKYFALL ; 10
+
+; Facings indexes (see data/sprites/facings.asm)
+ const_def
+ const FACING_STEP_DOWN_0 ; 00
+ const FACING_STEP_DOWN_1 ; 01
+ const FACING_STEP_DOWN_2 ; 02
+ const FACING_STEP_DOWN_3 ; 03
+ const FACING_STEP_UP_0 ; 04
+ const FACING_STEP_UP_1 ; 05
+ const FACING_STEP_UP_2 ; 06
+ const FACING_STEP_UP_3 ; 07
+ const FACING_STEP_LEFT_0 ; 08
+ const FACING_STEP_LEFT_1 ; 09
+ const FACING_STEP_LEFT_2 ; 0a
+ const FACING_STEP_LEFT_3 ; 0b
+ const FACING_STEP_RIGHT_0 ; 0c
+ const FACING_STEP_RIGHT_1 ; 0d
+ const FACING_STEP_RIGHT_2 ; 0e
+ const FACING_STEP_RIGHT_3 ; 0f
+ const FACING_FISH_DOWN ; 10
+ const FACING_FISH_UP ; 11
+ const FACING_FISH_LEFT ; 12
+ const FACING_FISH_RIGHT ; 13
+ const FACING_EMOTE ; 14
+ const FACING_SHADOW ; 15
+ const FACING_BIG_DOLL_ASYM ; 16
+ const FACING_BIG_DOLL_SYM ; 17
+ const FACING_WEIRD_TREE_0 ; 18
+ const FACING_WEIRD_TREE_1 ; 19
+ const FACING_WEIRD_TREE_2 ; 1a
+ const FACING_WEIRD_TREE_3 ; 1b
+ const FACING_BOULDER_DUST_1 ; 1c
+ const FACING_BOULDER_DUST_2 ; 1d
+ const FACING_GRASS_1 ; 1e
+ const FACING_GRASS_2 ; 1f
+
+; DoPlayerMovement.DoStep arguments (see engine/overworld/player_movement.asm)
+ const_def
+ const STEP_SLOW ; 0
+ const STEP_WALK ; 1
+ const STEP_BIKE ; 2
+ const STEP_LEDGE ; 3
+ const STEP_ICE ; 4
+ const STEP_TURN ; 5
+ const STEP_BACK_LEDGE ; 6
+ const STEP_WALK_IN_PLACE ; 7
diff --git a/constants/misc_constants.asm b/constants/misc_constants.asm
index 807c9b93..03911c50 100644
--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -1,280 +1,48 @@
-PARTY_LENGTH EQU 6
-
-MAX_ITEMS EQU 20
-MAX_BALLS EQU 12
-MAX_KEY_ITEMS EQU 25
-MAX_PC_ITEMS EQU 50
-
-; strings
-PLAYER_NAME_LENGTH EQU 8
-BOX_NAME_LENGTH EQU 9
-PKMN_NAME_LENGTH EQU 11
-MOVE_NAME_LENGTH EQU 13
-ITEM_NAME_LENGTH EQU 13
-TRAINER_CLASS_NAME_LENGTH EQU 13
-NAME_LENGTH EQU 11
-LV_CHAR EQU $6e
-
-; GetName types
-PKMN_NAME EQU 1
-MOVE_NAME EQU 2
-; dummied out EQU 3
-ITEM_NAME EQU 4
-PARTY_OT_NAME EQU 5
-ENEMY_OT_NAME EQU 6
-TRAINER_NAME EQU 7
-; broken ptr EQU 8
-
-; hp
-HP_GREEN EQU 0
-HP_YELLOW EQU 1
-HP_RED EQU 2
-
-; boxes
-MONS_PER_BOX EQU 20
-NUM_BOXES EQU 14
-
-; mail
-MAIL_STRUCT_LENGTH EQU $2f
-MAILBOX_CAPACITY EQU 10
-MAIL_MSG_LENGTH EQU $20
-
-; hall of fame
-HOF_MON_LENGTH = 1 + 2 + 2 + 1 + (PKMN_NAME_LENGTH +- 1) ; species, id, dvs, level, nick
-HOF_LENGTH = 1 + HOF_MON_LENGTH * PARTY_LENGTH + 1 ; win count, party, terminator
-NUM_HOF_TEAMS = 30
-
-
-; flag manipulation
-RESET_FLAG EQU 0
-SET_FLAG EQU 1
-CHECK_FLAG EQU 2
-
; Boolean checks
FALSE EQU 0
TRUE EQU 1
-; joypad
-
- const_def
- const A_BUTTON_F
- const B_BUTTON_F
- const SELECT_F
- const START_F
- const D_RIGHT_F
- const D_LEFT_F
- const D_UP_F
- const D_DOWN_F
-
-NO_INPUT EQU %00000000
-A_BUTTON EQU 1 << A_BUTTON_F
-B_BUTTON EQU 1 << B_BUTTON_F
-SELECT EQU 1 << SELECT_F
-START EQU 1 << START_F
-D_RIGHT EQU 1 << D_RIGHT_F
-D_LEFT EQU 1 << D_LEFT_F
-D_UP EQU 1 << D_UP_F
-D_DOWN EQU 1 << D_DOWN_F
-
-BUTTONS EQU A_BUTTON | B_BUTTON | SELECT | START
-D_PAD EQU D_RIGHT | D_LEFT | D_UP | D_DOWN
-
-R_DPAD EQU %00100000
-R_BUTTONS EQU %00010000
-
-; screen
-HP_BAR_LENGTH EQU 6
-HP_BAR_LENGTH_PX EQU HP_BAR_LENGTH * 8
-EXP_BAR_LENGTH EQU 8
-EXP_BAR_LENGTH_PX EQU EXP_BAR_LENGTH * 8
-
-SCREEN_WIDTH EQU 20
-SCREEN_HEIGHT EQU 18
-SCREEN_WIDTH_PX EQU SCREEN_WIDTH * 8
-SCREEN_HEIGHT_PX EQU SCREEN_HEIGHT * 8
-
-BG_MAP_WIDTH EQU 32
-BG_MAP_HEIGHT EQU 32
-WMISC_WIDTH EQU 6 * 4
-WMISC_HEIGHT EQU 5 * 4
-
-TILE_WIDTH EQU 8
-
-
-; movement
-STEP_SLOW EQU 0
-STEP_WALK EQU 1
-STEP_BIKE EQU 2
-STEP_LEDGE EQU 3
-STEP_ICE EQU 4
-STEP_TURN EQU 5
-STEP_BACK_LEDGE EQU 6
-STEP_WALK_IN_PLACE EQU 7
-
-
-; ai
-CONTEXT_USE_F EQU 6
-UNKNOWN_USE_F EQU 5
-ALWAYS_USE_F EQU 4
-SWITCH_SOMETIMES_F EQU 2
-SWITCH_RARELY_F EQU 1
-SWITCH_OFTEN_F EQU 0
-
-CONTEXT_USE EQU 1 << CONTEXT_USE_F
-UNKNOWN_USE EQU 1 << UNKNOWN_USE_F
-ALWAYS_USE EQU 1 << ALWAYS_USE_F
-SWITCH_SOMETIMES EQU 1 << SWITCH_SOMETIMES_F
-SWITCH_RARELY EQU 1 << SWITCH_RARELY_F
-SWITCH_OFTEN EQU 1 << SWITCH_OFTEN_F
-SPRITE_GFX_LIST_CAPACITY EQU $20
-
-const_value = 1
- const MOM_ITEM
- const MOM_DOLL
-
-BATTLETOWER_NROFPKMNS EQU 3
-BATTLETOWER_TRAINERDATALENGTH EQU $24
-BATTLETOWER_NROFTRAINERS EQU 7
-BATTLETOWER_NRMONSPERLEVELBRACKET EQU BATTLETOWER_NROFPKMNS * BATTLETOWER_NROFTRAINERS
-BATTLE_TOWER_STRUCT_LENGTH EQU $e0 ; NAME_LENGTH + 3 * (PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH) + BATTLETOWER_TRAINERDATALENGTH
-
-NUM_WILDMONS_PER_AREA_TIME_OF_DAY EQU 7
-WILDMON_GRASS_STRUCTURE_LENGTH EQU 2 + 3 * (1 + 2 * NUM_WILDMONS_PER_AREA_TIME_OF_DAY)
-
-MOBILE_EVENT_OBJECT_GS_BALL EQU $b
-
-MALE EQU 0
+; genders
+MALE EQU 0
FEMALE EQU 1
-PRINTNUM_MONEY_F EQU 5
-PRINTNUM_RIGHTALIGN_F EQU 6
-PRINTNUM_LEADINGZEROS_F EQU 7
-
-PRINTNUM_MONEY EQU 1 << PRINTNUM_MONEY_F
-PRINTNUM_RIGHTALIGN EQU 1 << PRINTNUM_RIGHTALIGN_F
-PRINTNUM_LEADINGZEROS EQU 1 << PRINTNUM_LEADINGZEROS_F
-
-const_value = 1
- const HAPPINESS_GAINLEVEL ; 01
- const HAPPINESS_USEDITEM ; 02
- const HAPPINESS_USEDXITEM ; 03
- const HAPPINESS_GYMBATTLE ; 04
- const HAPPINESS_LEARNMOVE ; 05
- const HAPPINESS_FAINTED ; 06
- const HAPPINESS_POISONFAINT ; 07
- const HAPPINESS_BEATENBYSTRONGFOE ; 08
- const HAPPINESS_YOUNGCUT1 ; 09
- const HAPPINESS_YOUNGCUT2 ; 0a
- const HAPPINESS_YOUNGCUT3 ; 0b
- const HAPPINESS_OLDERCUT1 ; 0c
- const HAPPINESS_OLDERCUT2 ; 0d
- const HAPPINESS_OLDERCUT3 ; 0e
- const HAPPINESS_BITTERPOWDER ; 0f
- const HAPPINESS_ENERGYROOT ; 10
- const HAPPINESS_REVIVALHERB ; 11
- const HAPPINESS_MASSAGE ; 12
- const HAPPINESS_GAINLEVELATHOME ; 13
-
-
- const_def
- const LINK_NULL
- const LINK_TIMECAPSULE
- const LINK_TRADECENTER
- const LINK_COLOSSEUM
- const LINK_MOBILE
-
-SERIAL_TIMECAPSULE EQU $60
-SERIAL_TRADECENTER EQU $70
-SERIAL_BATTLE EQU $80
-
-HMENURETURN_SCRIPT EQU %10000000
-HMENURETURN_ASM EQU %11111111
-
-NUM_MON_SUBMENU_ITEMS EQU 8
-
- const_def
- const ZEPHYRBADGE
- const HIVEBADGE
- const PLAINBADGE
- const FOGBADGE
- const MINERALBADGE
- const STORMBADGE
- const GLACIERBADGE
- const RISINGBADGE
-NUM_JOHTO_BADGES EQU const_value
- const_def
- const BOULDERBADGE
- const CASCADEBADGE
- const THUNDERBADGE
- const RAINBOWBADGE
- const SOULBADGE
- const MARSHBADGE
- const VOLCANOBADGE
- const EARTHBADGE
-NUM_KANTO_BADGES EQU const_value
-NUM_BADGES EQU NUM_JOHTO_BADGES + NUM_KANTO_BADGES
-NUM_KANA EQU $2d
-
- const_def
- const EZCHAT_POKEMON
- const EZCHAT_TYPES
- const EZCHAT_GREETINGS
- const EZCHAT_PEOPLE
- const EZCHAT_BATTLE
- const EZCHAT_EXCLAMATIONS
- const EZCHAT_CONVERSATION
- const EZCHAT_FEELINGS
- const EZCHAT_CONDITIONS
- const EZCHAT_LIFE
- const EZCHAT_HOBBIES
- const EZCHAT_ACTIONS
- const EZCHAT_TIME
- const EZCHAT_FAREWELLS
- const EZCHAT_THISANDTHAT
-
-SWARM_DUNSPARCE EQU 0
-SWARM_YANMA EQU 1
-
-FISHSWARM_QWILFISH EQU 1
-FISHSWARM_REMORAID EQU 2
-
- const_def
- const FISHGROUP_NONE
- const FISHGROUP_SHORE
- const FISHGROUP_OCEAN
- const FISHGROUP_LAKE
- const FISHGROUP_POND
- const FISHGROUP_DRATINI
- const FISHGROUP_QWILFISH_SWARM
- const FISHGROUP_REMORAID_SWARM
- const FISHGROUP_GYARADOS
- const FISHGROUP_DRATINI_2
- const FISHGROUP_WHIRL_ISLANDS
- const FISHGROUP_QWILFISH
- const FISHGROUP_REMORAID
- const FISHGROUP_QWILFISH_NO_SWARM
-
-INIT_ENEMYOT_LIST EQU 1
-INIT_BAG_ITEM_LIST EQU 2
-INIT_OTHER_ITEM_LIST EQU 3
-INIT_PLAYEROT_LIST EQU 4
-INIT_MON_LIST EQU 5
+; FlagAction arguments (see home/flag.asm)
+RESET_FLAG EQU 0
+SET_FLAG EQU 1
+CHECK_FLAG EQU 2
+; G/S version ID: 0 = Gold, 1 = Silver (used by checkver)
+GS_VERSION EQU 0
-; serial
+; save file corruption check values
+SAVE_CHECK_VALUE_1 EQU 99
+SAVE_CHECK_VALUE_2 EQU 127
-ESTABLISH_CONNECTION_WITH_INTERNAL_CLOCK EQU $01
-ESTABLISH_CONNECTION_WITH_EXTERNAL_CLOCK EQU $02
+; time of day boundaries
+MORN_HOUR EQU 4 ; 4 AM
+DAY_HOUR EQU 10 ; 10 AM
+NITE_HOUR EQU 18 ; 6 PM
+NOON_HOUR EQU 12 ; 12 PM
+MAX_HOUR EQU 24 ; 12 AM
-USING_EXTERNAL_CLOCK EQU $01
-USING_INTERNAL_CLOCK EQU $02
-CONNECTION_NOT_ESTABLISHED EQU $ff
+; significant money values
+START_MONEY EQU 3000
+MOM_MONEY EQU 2300
+MAX_MONEY EQU 999999
+MAX_COINS EQU 9999
-; signals the start of an array of bytes transferred over the link cable
-SERIAL_PREAMBLE_BYTE EQU $FD
+; link record
+MAX_LINK_RECORD EQU 9999
-; this byte is used when there is no data to send
-SERIAL_NO_DATA_BYTE EQU $FE
+; day-care
+MAX_DAY_CARE_EXP EQU $500000
-; signals the end of one part of a patch list (there are two parts) for player/enemy party data
-SERIAL_PATCH_LIST_PART_TERMINATOR EQU $FF
+; hall of fame
+HOF_MASTER_COUNT EQU 200
+
+; bug-catching contest
+BUG_CONTEST_MINUTES EQU 20
+BUG_CONTEST_SECONDS EQU 0
+BUG_CONTEST_PLAYER EQU 1
+NUM_BUG_CONTESTANTS EQU 10 ; not counting the player
+BUG_CONTESTANT_SIZE EQU 4
diff --git a/constants/pokemon_data_constants.asm b/constants/pokemon_data_constants.asm
index 9a34e2ae..dc4d8f40 100644
--- a/constants/pokemon_data_constants.asm
+++ b/constants/pokemon_data_constants.asm
@@ -1,3 +1,39 @@
+; base data struct members (see data/pokemon/base_stats/*.asm)
+BASE_DEX_NO EQUS "(wBaseDexNo - wCurBaseData)"
+BASE_STATS EQUS "(wBaseStats - wCurBaseData)"
+BASE_HP EQUS "(wBaseHP - wCurBaseData)"
+BASE_ATK EQUS "(wBaseAttack - wCurBaseData)"
+BASE_SPD EQUS "(wBaseSpeed - wCurBaseData)"
+BASE_SAT EQUS "(wBaseSpecialAttack - wCurBaseData)"
+BASE_SDF EQUS "(wBaseSpecialDefense - wCurBaseData)"
+BASE_TYPES EQUS "(wBaseType - wCurBaseData)"
+BASE_TYPE_1 EQUS "(wBaseType1 - wCurBaseData)"
+BASE_TYPE_2 EQUS "(wBaseType2 - wCurBaseData)"
+BASE_CATCH_RATE EQUS "(wBaseCatchRate - wCurBaseData)"
+BASE_EXP EQUS "(wBaseExp - wCurBaseData)"
+BASE_ITEMS EQUS "(wBaseItems - wCurBaseData)"
+BASE_ITEM_1 EQUS "(wBaseItem1 - wCurBaseData)"
+BASE_ITEM_2 EQUS "(wBaseItem2 - wCurBaseData)"
+BASE_GENDER EQUS "(wBaseGender - wCurBaseData)"
+BASE_UNKNOWN_1 EQUS "(wBaseUnknown1 - wCurBaseData)"
+BASE_EGG_STEPS EQUS "(wBaseEggSteps - wCurBaseData)"
+BASE_UNKNOWN_2 EQUS "(wBaseUnknown2 - wCurBaseData)"
+BASE_PIC_SIZE EQUS "(wBasePicSize - wCurBaseData)"
+BASE_PADDING EQUS "(wBasePadding - wCurBaseData)"
+BASE_GROWTH_RATE EQUS "(wBaseGrowthRate - wCurBaseData)"
+BASE_EGG_GROUPS EQUS "(wBaseEggGroups - wCurBaseData)"
+BASE_TMHM EQUS "(wBaseTMHM - wCurBaseData)"
+BASE_DATA_SIZE EQUS "(wCurBaseDataEnd - wCurBaseData)"
+
+; gender ratio constants
+GENDER_F0 EQU 0 percent
+GENDER_F12_5 EQU 12 percent + 1
+GENDER_F25 EQU 25 percent
+GENDER_F50 EQU 50 percent
+GENDER_F75 EQU 75 percent
+GENDER_F100 EQU 100 percent - 1
+GENDER_UNKNOWN EQU -1
+
; growth rate
const_def
const MEDIUM_FAST
@@ -67,6 +103,17 @@ const_value SET 1
const ICON_SUDOWOODO
const ICON_BIGMON
+; maximum number of party pokemon
+PARTY_LENGTH EQU 6
+
+; boxes
+MONS_PER_BOX EQU 20
+NUM_BOXES EQU 14
+
+; hall of fame
+HOF_MON_LENGTH = 1 + 2 + 2 + 1 + (MON_NAME_LENGTH + -1) ; species, id, dvs, level, nick
+HOF_LENGTH = 1 + HOF_MON_LENGTH * PARTY_LENGTH + 1 ; win count, party, terminator
+NUM_HOF_TEAMS = 30
; evolution types
const_value SET 1
@@ -77,11 +124,7 @@ const_value SET 1
const EVOLVE_STAT
-BASE_HAPPINESS EQU 70
-FRIEND_BALL_HAPPINESS EQU 200
-
; happiness evolution triggers
-HAPPINESS_TO_EVOLVE EQU 220
const_value SET 1
const TR_ANYTIME
const TR_MORNDAY
@@ -99,3 +142,37 @@ NUM_WATERMON EQU 3
GRASS_WILDDATA_LENGTH EQU (NUM_GRASSMON * 2 + 1) * 3 + 2
WATER_WILDDATA_LENGTH EQU (NUM_WATERMON * 2 + 1) * 1 + 2
+
+; ChangeHappiness arguments (see data/happiness_changes.asm)
+const_value = 1
+ const HAPPINESS_GAINLEVEL ; 01
+ const HAPPINESS_USEDITEM ; 02
+ const HAPPINESS_USEDXITEM ; 03
+ const HAPPINESS_GYMBATTLE ; 04
+ const HAPPINESS_LEARNMOVE ; 05
+ const HAPPINESS_FAINTED ; 06
+ const HAPPINESS_POISONFAINT ; 07
+ const HAPPINESS_BEATENBYSTRONGFOE ; 08
+ const HAPPINESS_YOUNGCUT1 ; 09
+ const HAPPINESS_YOUNGCUT2 ; 0a
+ const HAPPINESS_YOUNGCUT3 ; 0b
+ const HAPPINESS_OLDERCUT1 ; 0c
+ const HAPPINESS_OLDERCUT2 ; 0d
+ const HAPPINESS_OLDERCUT3 ; 0e
+ const HAPPINESS_BITTERPOWDER ; 0f
+ const HAPPINESS_ENERGYROOT ; 10
+ const HAPPINESS_REVIVALHERB ; 11
+ const HAPPINESS_GROOMING ; 12
+ const HAPPINESS_GAINLEVELATHOME ; 13
+
+; significant happiness values
+BASE_HAPPINESS EQU 70
+FRIEND_BALL_HAPPINESS EQU 200
+HAPPINESS_TO_EVOLVE EQU 220
+HAPPINESS_THRESHOLD_1 EQU 100
+HAPPINESS_THRESHOLD_2 EQU 200
+
+; PP
+PP_UP_MASK EQU %11000000
+PP_UP_ONE EQU %01000000
+PP_MASK EQU %00111111
diff --git a/constants/script_constants.asm b/constants/script_constants.asm
index 5c7b1ab7..7870fc84 100644
--- a/constants/script_constants.asm
+++ b/constants/script_constants.asm
@@ -2,6 +2,40 @@
PLAYER EQU 0
LAST_TALKED EQU -2
+; memory constants
+ const_def
+ const MEM_BUFFER_0 ; use wStringBuffer3
+ const MEM_BUFFER_1 ; use wStringBuffer4
+ const MEM_BUFFER_2 ; use wStringBuffer5
+NUM_MEM_BUFFERS EQU const_value
+
+; checkmoney/takemoney accounts
+ const_def
+ const YOUR_MONEY ; 0
+ const MOMS_MONEY ; 1
+
+; checkmoney/checkcoins return values
+ const_def
+ const HAVE_MORE ; 0
+ const HAVE_AMOUNT ; 1
+ const HAVE_LESS ; 2
+
+; checkpokemail return values
+ const_def
+ const POKEMAIL_WRONG_MAIL ; 0
+ const POKEMAIL_CORRECT ; 1
+ const POKEMAIL_REFUSED ; 2
+ const POKEMAIL_NO_MAIL ; 3
+ const POKEMAIL_LAST_MON ; 4
+
+; askforphonenumber return values
+ const_def
+ const PHONE_CONTACT_GOT ; 0
+ const PHONE_CONTACTS_FULL ; 1
+ const PHONE_CONTACT_REFUSED ; 2
+
+; writecode/checkcode arguments
+; _GetVarAction.VarActionTable indexes (see engine/overworld/variables.asm)
const_def
const VAR_STRINGBUFFER2 ; 00
const VAR_PARTYCOUNT ; 01
@@ -26,10 +60,12 @@ LAST_TALKED EQU -2
const VAR_SPECIALPHONECALL ; 14
NUM_VARS EQU const_value ; 15
+; variable action types
RETVAR_STRBUF2 EQU (0 << 6)
RETVAR_ADDR_DE EQU (1 << 6)
RETVAR_EXECUTE EQU (2 << 6)
+; PlayerEventScriptPointers indexes (see engine/overworld/events.asm)
const_value SET -1
const PLAYEREVENT_MAPSCRIPT
const PLAYEREVENT_NONE
@@ -43,3 +79,195 @@ const_value SET -1
const PLAYEREVENT_HATCH
const PLAYEREVENT_JOYCHANGEFACING
NUM_PLAYER_EVENTS EQU const_value
+
+; bg_event types
+; TryBGEvent arguments (see engine/overworld/events.asm)
+ const_def
+ const BGEVENT_READ
+ const BGEVENT_UP
+ const BGEVENT_DOWN
+ const BGEVENT_RIGHT
+ const BGEVENT_LEFT
+ const BGEVENT_IFSET
+ const BGEVENT_IFNOTSET
+ const BGEVENT_ITEM
+ const BGEVENT_COPY
+
+; object_event types
+; TryObjectEvent arguments (see engine/overworld/events.asm)
+ const_def
+ const OBJECTTYPE_SCRIPT
+ const OBJECTTYPE_ITEMBALL
+ const OBJECTTYPE_TRAINER
+ const OBJECTTYPE_3
+ const OBJECTTYPE_4
+ const OBJECTTYPE_5
+ const OBJECTTYPE_6
+
+; command queue members
+CMDQUEUE_TYPE EQU 0
+CMDQUEUE_ADDR EQU 1
+CMDQUEUE_03 EQU 3
+CMDQUEUE_04 EQU 4
+CMDQUEUE_05 EQU 5
+CMDQUEUE_ENTRY_SIZE EQU 6
+CMDQUEUE_CAPACITY EQU 4
+
+; HandleQueuedCommand.Jumptable indexes (see engine/overworld/events.asm)
+ const_def
+ const CMDQUEUE_NULL
+ const CMDQUEUE_NULL2
+ const CMDQUEUE_STONETABLE
+ const CMDQUEUE_TYPE3
+ const CMDQUEUE_TYPE4
+NUM_CMDQUEUE_TYPES EQU const_value
+
+; elevfloor macro values
+; ElevatorFloorNames indexes (see data/events/elevator_floors.asm)
+ const_def
+ const FLOOR_B4F
+ const FLOOR_B3F
+ const FLOOR_B2F
+ const FLOOR_B1F
+ const FLOOR_1F
+ const FLOOR_2F
+ const FLOOR_3F
+ const FLOOR_4F
+ const FLOOR_5F
+ const FLOOR_6F
+ const FLOOR_7F
+ const FLOOR_8F
+ const FLOOR_9F
+ const FLOOR_10F
+ const FLOOR_11F
+ const FLOOR_ROOF
+
+; showemote arguments
+; Emotes indexes (see data/sprites/emotes.asm)
+ const_def
+ const EMOTE_SHOCK ; 0
+ const EMOTE_QUESTION ; 1
+ const EMOTE_HAPPY ; 2
+ const EMOTE_SAD ; 3
+ const EMOTE_HEART ; 4
+ const EMOTE_BOLT ; 5
+ const EMOTE_SLEEP ; 6
+ const EMOTE_FISH ; 7
+ const EMOTE_SHADOW ; 8
+ const EMOTE_ROD ; 9
+ const EMOTE_BOULDER_DUST ; 10
+ const EMOTE_GRASS_RUSTLE ; 11
+EMOTE_MEM EQU -1
+
+; fruittree arguments
+; FruitTreeItems indexes (see data/items/fruit_trees.asm)
+ const_def 1
+ const FRUITTREE_ROUTE_29 ; 01
+ const FRUITTREE_ROUTE_30_1 ; 02
+ const FRUITTREE_ROUTE_38 ; 03
+ const FRUITTREE_ROUTE_46_1 ; 04
+ const FRUITTREE_ROUTE_30_2 ; 05
+ const FRUITTREE_ROUTE_33 ; 06
+ const FRUITTREE_ROUTE_31 ; 07
+ const FRUITTREE_ROUTE_43 ; 08
+ const FRUITTREE_VIOLET_CITY ; 09
+ const FRUITTREE_ROUTE_46_2 ; 0a
+ const FRUITTREE_ROUTE_35 ; 0b
+ const FRUITTREE_ROUTE_45 ; 0c
+ const FRUITTREE_ROUTE_36 ; 0d
+ const FRUITTREE_ROUTE_26 ; 0e
+ const FRUITTREE_ROUTE_39 ; 0f
+ const FRUITTREE_ROUTE_44 ; 10
+ const FRUITTREE_ROUTE_37_1 ; 11
+ const FRUITTREE_ROUTE_37_2 ; 12
+ const FRUITTREE_ROUTE_37_3 ; 13
+ const FRUITTREE_AZALEA_TOWN ; 14
+ const FRUITTREE_ROUTE_42_1 ; 15
+ const FRUITTREE_ROUTE_42_2 ; 16
+ const FRUITTREE_ROUTE_42_3 ; 17
+ const FRUITTREE_ROUTE_11 ; 18
+ const FRUITTREE_ROUTE_2 ; 19
+ const FRUITTREE_ROUTE_1 ; 1a
+ const FRUITTREE_ROUTE_8 ; 1b
+ const FRUITTREE_PEWTER_CITY_1 ; 1c
+ const FRUITTREE_PEWTER_CITY_2 ; 1d
+ const FRUITTREE_FUCHSIA_CITY ; 1e
+NUM_FRUIT_TREES EQU const_value + -1
+
+; describedecoration arguments
+; DescribeDecoration.JumpTable indexes (see engine/overworld/decorations.asm)
+ const_def
+ const DECODESC_POSTER ; 0
+ const DECODESC_LEFT_DOLL ; 1
+ const DECODESC_RIGHT_DOLL ; 2
+ const DECODESC_BIG_DOLL ; 3
+ const DECODESC_CONSOLE ; 4
+
+; swarm arguments
+; StoreSwarmMapIndices arguments
+ const_def
+ const SWARM_DUNSPARCE ; 0
+ const SWARM_YANMA ; 1
+
+; ActivateFishingSwarm writebyte arguments
+ const_def
+ const FISHSWARM_NONE ; 0
+ const FISHSWARM_QWILFISH ; 1
+ const FISHSWARM_REMORAID ; 2
+
+; SpecialGameboyCheck return values
+ const_def
+ const GBCHECK_GB ; 0
+ const GBCHECK_SGB ; 1
+ const GBCHECK_CGB ; 2
+
+; CheckMagikarpLength return values
+ const_def
+ const MAGIKARPLENGTH_NOT_MAGIKARP ; 0
+ const MAGIKARPLENGTH_REFUSED ; 1
+ const MAGIKARPLENGTH_TOO_SHORT ; 2
+ const MAGIKARPLENGTH_BEAT_RECORD ; 3
+
+; SpecialReturnShuckle return values
+ const_def
+ const SHUCKIE_WRONG_MON ; 0
+ const SHUCKIE_REFUSED ; 1
+ const SHUCKIE_RETURNED ; 2
+ const SHUCKIE_HAPPY ; 3
+ const SHUCKIE_FAINTED ; 4
+
+; CheckPartyFullAfterContest return values
+ const_def
+ const BUGCONTEST_CAUGHT_MON ; 0
+ const BUGCONTEST_BOXED_MON ; 1
+ const BUGCONTEST_NO_CATCH ; 2
+
+; HealMachineAnim writebyte arguments
+; HealMachineAnim.Pointers indexes (see engine/events/heal_machine_anim.asm)
+ const_def
+ const HEALMACHINE_POKECENTER ; 0
+ const HEALMACHINE_ELMS_LAB ; 1
+ const HEALMACHINE_HALL_OF_FAME ; 2
+
+; UnownPuzzle writebyte arguments
+; LoadUnownPuzzlePiecesGFX.LZPointers indexes (see engine/games/unown_puzzle.asm)
+ const_def
+ const UNOWNPUZZLE_KABUTO ; 0
+ const UNOWNPUZZLE_OMANYTE ; 1
+ const UNOWNPUZZLE_AERODACTYL ; 2
+ const UNOWNPUZZLE_HO_OH ; 3
+NUM_UNOWN_PUZZLES EQU const_value
+
+; DisplayUnownWords writebyte arguments
+; UnownWalls and MenuHeaders_UnownWalls indexes (see data/events/unown_walls.asm)
+ const_def
+ const UNOWNWORDS_ESCAPE ; 0
+ const UNOWNWORDS_LIGHT ; 1
+ const UNOWNWORDS_WATER ; 2
+ const UNOWNWORDS_HO_OH ; 3
+
+; MoveTutor writebyte arguments
+ const_def 1
+ const MOVETUTOR_FLAMETHROWER ; 1
+ const MOVETUTOR_THUNDERBOLT ; 2
+ const MOVETUTOR_ICE_BEAM ; 3
diff --git a/constants/serial_constants.asm b/constants/serial_constants.asm
new file mode 100644
index 00000000..757292ee
--- /dev/null
+++ b/constants/serial_constants.asm
@@ -0,0 +1,30 @@
+; link types
+ const_def
+ const LINK_NULL ; 0
+ const LINK_TIMECAPSULE ; 1
+ const LINK_TRADECENTER ; 2
+ const LINK_COLOSSEUM ; 3
+ const LINK_MOBILE ; 4
+
+; hSerialReceive high nybbles
+SERIAL_TIMECAPSULE EQU $60
+SERIAL_TRADECENTER EQU $70
+SERIAL_BATTLE EQU $80
+
+ESTABLISH_CONNECTION_WITH_INTERNAL_CLOCK EQU $01
+ESTABLISH_CONNECTION_WITH_EXTERNAL_CLOCK EQU $02
+
+START_TRANSFER_EXTERNAL_CLOCK EQU $80 ; 1 << rSC_ON
+START_TRANSFER_INTERNAL_CLOCK EQU $81 ; (1 << rSC_ON) | 1
+
+; hSerialConnectionStatus
+USING_EXTERNAL_CLOCK EQU $01
+USING_INTERNAL_CLOCK EQU $02
+CONNECTION_NOT_ESTABLISHED EQU $ff
+
+; signals the start of an array of bytes transferred over the link cable
+SERIAL_PREAMBLE_BYTE EQU $fd
+; this byte is used when there is no data to send
+SERIAL_NO_DATA_BYTE EQU $fe
+; signals the end of one part of a patch list (there are two parts) for player/enemy party data
+SERIAL_PATCH_LIST_PART_TERMINATOR EQU $ff
diff --git a/constants/sprite_constants.asm b/constants/sprite_constants.asm
index 541934b8..caa6743c 100644
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -1,5 +1,5 @@
-
-; sprites
+; sprite ids
+; OverworldSprites indexes (see data/sprites/sprites.asm)
const_def
const SPRITE_NONE ; 00
const SPRITE_CHRIS ; 01
@@ -105,8 +105,8 @@
const SPRITE_RAIKOU ; 65
const SPRITE_STANDING_YOUNGSTER ; 66
-const_value SET $80
-
+; SpriteMons indexes (see data/sprites/sprite_mons.asm)
+ const_def $80
SPRITE_POKEMON EQU const_value
const SPRITE_UNOWN ; 80
const SPRITE_GEODUDE ; 81
@@ -144,11 +144,13 @@ SPRITE_POKEMON EQU const_value
const SPRITE_LUGIA ; a1
const SPRITE_HO_OH ; a2
-const_value SET $e0
- const SPRITE_DAYCARE_MON_1 ; e0
- const SPRITE_DAYCARE_MON_2 ; e1
+; special GetMonSprite values (see engine/overworld/overworld.asm)
+ const_def $e0
+ const SPRITE_DAY_CARE_MON_1 ; e0
+ const SPRITE_DAY_CARE_MON_2 ; e1
-const_value SET $f0
+; wVariableSprites indexes (see wram.asm)
+ const_def $f0
SPRITE_VARS EQU const_value
const SPRITE_CONSOLE ; f0
const SPRITE_DOLL_1 ; f1
@@ -163,500 +165,3 @@ SPRITE_VARS EQU const_value
const SPRITE_FUCHSIA_GYM_4 ; fa
const SPRITE_COPYCAT ; fb
const SPRITE_JANINE_IMPERSONATOR ; fc
-
-; sprite types
-const_value SET 1
- const WALKING_SPRITE
- const STANDING_SPRITE
- const STILL_SPRITE
-
-; sprite header fields
- const_def
- const SPRITEHEADER_ADDR_LO
- const SPRITEHEADER_ADDR_HI
- const SPRITEHEADER_SIZE
- const SPRITEHEADER_BANK
- const SPRITEHEADER_TYPE
- const SPRITEHEADER_PALETTE
-NUM_SPRITEHEADER_FIELDS EQU const_value
-
-; sprite palettes
- const_def
- const PAL_OW_RED
- const PAL_OW_BLUE
- const PAL_OW_GREEN
- const PAL_OW_BROWN
- const PAL_OW_PINK
- const PAL_OW_SILVER
- const PAL_OW_TREE
- const PAL_OW_ROCK
-
-; sprite movement data table indices
- const_def
- const SPRITEMOVEDATA_00 ; 00
- const SPRITEMOVEDATA_ITEM_TREE ; 01
- const SPRITEMOVEDATA_WANDER ; 02
- const SPRITEMOVEDATA_SPINRANDOM_SLOW ; 03
- const SPRITEMOVEDATA_WALK_UP_DOWN ; 04
- const SPRITEMOVEDATA_WALK_LEFT_RIGHT ; 05
- const SPRITEMOVEDATA_STANDING_DOWN ; 06
- const SPRITEMOVEDATA_STANDING_UP ; 07
- const SPRITEMOVEDATA_STANDING_LEFT ; 08
- const SPRITEMOVEDATA_STANDING_RIGHT ; 09
- const SPRITEMOVEDATA_SPINRANDOM_FAST ; 0a
- const SPRITEMOVEDATA_PLAYER ; 0b
- const SPRITEMOVEDATA_0C ; 0c
- const SPRITEMOVEDATA_0D ; 0d
- const SPRITEMOVEDATA_0E ; 0e
- const SPRITEMOVEDATA_0F ; 0f
- const SPRITEMOVEDATA_10 ; 10
- const SPRITEMOVEDATA_11 ; 11
- const SPRITEMOVEDATA_12 ; 12
- const SPRITEMOVEDATA_FOLLOWING ; 13
- const SPRITEMOVEDATA_SCRIPTED ; 14
- const SPRITEMOVEDATA_SNORLAX ; 15
- const SPRITEMOVEDATA_POKEMON ; 16
- const SPRITEMOVEDATA_SUDOWOODO ; 17
- const SPRITEMOVEDATA_SMASHABLE_ROCK ; 18
- const SPRITEMOVEDATA_STRENGTH_BOULDER ; 19
- const SPRITEMOVEDATA_FOLLOWNOTEXACT ; 1a
- const SPRITEMOVEDATA_SHADOW ; 1b
- const SPRITEMOVEDATA_EMOTE ; 1c
- const SPRITEMOVEDATA_SCREENSHAKE ; 1d
- const SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE ; 1e
- const SPRITEMOVEDATA_SPINCLOCKWISE ; 1f
- const SPRITEMOVEDATA_20 ; 20
- const SPRITEMOVEDATA_BIGDOLL ; 21
- const SPRITEMOVEDATA_BOULDERDUST ; 22
- const SPRITEMOVEDATA_GRASS ; 23
- const SPRITEMOVEDATA_LAPRAS ; 24
- const SPRITEMOVEDATA_25 ; 25
-NUM_SPRITEMOVEDATA EQU const_value +- 1
-SPRITEMOVEDATA_FIELDS EQU 6
-
-; sprite movement functions
- const_def
- const SPRITEMOVEFN_00
- const SPRITEMOVEFN_RANDOM_WALK_Y
- const SPRITEMOVEFN_RANDOM_WALK_X
- const SPRITEMOVEFN_RANDOM_WALK_XY
- const SPRITEMOVEFN_SLOW_RANDOM_SPIN
- const SPRITEMOVEFN_FAST_RANDOM_SPIN
- const SPRITEMOVEFN_STANDING
- const SPRITEMOVEFN_OBEY_DPAD
- const SPRITEMOVEFN_08
- const SPRITEMOVEFN_09
- const SPRITEMOVEFN_0A
- const SPRITEMOVEFN_0B
- const SPRITEMOVEFN_0C
- const SPRITEMOVEFN_0D
- const SPRITEMOVEFN_0E
- const SPRITEMOVEFN_FOLLOW
- const SPRITEMOVEFN_SCRIPTED
- const SPRITEMOVEFN_STRENGTH
- const SPRITEMOVEFN_FOLLOWNOTEXACT
- const SPRITEMOVEFN_SHADOW
- const SPRITEMOVEFN_EMOTE
- const SPRITEMOVEFN_BIG_SNORLAX
- const SPRITEMOVEFN_BOUNCE
- const SPRITEMOVEFN_SCREENSHAKE
- const SPRITEMOVEFN_SPIN_CLOCKWISE
- const SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE
- const SPRITEMOVEFN_BOULDERDUST
- const SPRITEMOVEFN_GRASS
-
-MAX_OUTDOOR_SPRITES EQU 23
-
- const_def
- const STEP_TYPE_00
- const STEP_TYPE_SLEEP
- const STEP_TYPE_NPC_WALK
- const STEP_TYPE_03
- const STEP_TYPE_04
- const STEP_TYPE_05
- const STEP_TYPE_PLAYER_WALK
- const STEP_TYPE_07
- const STEP_TYPE_NPC_JUMP
- const STEP_TYPE_PLAYER_JUMP
- const STEP_TYPE_HALF_STEP
- const STEP_TYPE_BUMP
- const STEP_TYPE_TELEPORT_FROM
- const STEP_TYPE_TELEPORT_TO
- const STEP_TYPE_SKYFALL
- const STEP_TYPE_0F
- const STEP_TYPE_GOT_BITE
- const STEP_TYPE_ROCK_SMASH
- const STEP_TYPE_RETURN_DIG
- const STEP_TYPE_TRACKING_OBJECT
- const STEP_TYPE_14
- const STEP_TYPE_15
- const STEP_TYPE_16
- const STEP_TYPE_17
- const STEP_TYPE_18
- const STEP_TYPE_SKYFALL_TOP
-
- const_def
- const PERSON_ACTION_00
- const PERSON_ACTION_STAND
- const PERSON_ACTION_STEP
- const PERSON_ACTION_BUMP
- const PERSON_ACTION_SPIN
- const PERSON_ACTION_SPIN_FLICKER
- const PERSON_ACTION_FISHING
- const PERSON_ACTION_07
- const PERSON_ACTION_EMOTE
- const PERSON_ACTION_09
- const PERSON_ACTION_0A
- const PERSON_ACTION_0B
- const PERSON_ACTION_0C
- const PERSON_ACTION_0D
- const PERSON_ACTION_0E
- const PERSON_ACTION_0F
- const PERSON_ACTION_10
-
- const_def
- const FACING_00
- const FACING_01
- const FACING_02
- const FACING_03
- const FACING_04
- const FACING_05
- const FACING_06
- const FACING_07
- const FACING_08
- const FACING_09
- const FACING_0A
- const FACING_0B
- const FACING_0C
- const FACING_0D
- const FACING_0E
- const FACING_0F
- const FACING_10
- const FACING_11
- const FACING_12
- const FACING_13
- const FACING_EMOTE
- const FACING_15
- const FACING_16
- const FACING_17
- const FACING_18
- const FACING_19
- const FACING_1A
- const FACING_1B
- const FACING_1C
- const FACING_1D
- const FACING_1E
- const FACING_1F
-
- const_def
- const SPRITEANIMSTRUCT_INDEX ; 0
- const SPRITEANIMSTRUCT_FRAMESET_ID ; 1
- const SPRITEANIMSTRUCT_ANIM_SEQ_ID ; 2
- const SPRITEANIMSTRUCT_TILE_ID ; 3
- const SPRITEANIMSTRUCT_XCOORD ; 4
- const SPRITEANIMSTRUCT_YCOORD ; 5
- const SPRITEANIMSTRUCT_XOFFSET ; 6
- const SPRITEANIMSTRUCT_YOFFSET ; 7
- const SPRITEANIMSTRUCT_DURATION ; 8
- const SPRITEANIMSTRUCT_DURATIONOFFSET ; 9
- const SPRITEANIMSTRUCT_FRAME ; a
- const SPRITEANIMSTRUCT_JUMPTABLE_INDEX ; b
- const SPRITEANIMSTRUCT_0C ; c
- const SPRITEANIMSTRUCT_0D ; d
- const SPRITEANIMSTRUCT_0E ; e
- const SPRITEANIMSTRUCT_0F ; f
-
- const_def
- const SPRITE_ANIM_FRAMESET_00
- const SPRITE_ANIM_FRAMESET_01
- const SPRITE_ANIM_FRAMESET_02
- const SPRITE_ANIM_FRAMESET_03
- const SPRITE_ANIM_FRAMESET_04
- const SPRITE_ANIM_FRAMESET_05
- const SPRITE_ANIM_FRAMESET_06
- const SPRITE_ANIM_FRAMESET_07
- const SPRITE_ANIM_FRAMESET_08
- const SPRITE_ANIM_FRAMESET_09
- const SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO
- const SPRITE_ANIM_FRAMESET_0B
- const SPRITE_ANIM_FRAMESET_0C
- const SPRITE_ANIM_FRAMESET_SLOT_GOLEM
- const SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY
- const SPRITE_ANIM_FRAMESET_0F
- const SPRITE_ANIM_FRAMESET_SLOTS_EGG
- const SPRITE_ANIM_FRAMESET_WALK_CYCLE
- const SPRITE_ANIM_FRAMESET_12
- const SPRITE_ANIM_FRAMESET_13
- const SPRITE_ANIM_FRAMESET_14
- const SPRITE_ANIM_FRAMESET_15
- const SPRITE_ANIM_FRAMESET_16
- const SPRITE_ANIM_FRAMESET_TRADEMON_ICON
- const SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE
- const SPRITE_ANIM_FRAMESET_19
- const SPRITE_ANIM_FRAMESET_1A
- const SPRITE_ANIM_FRAMESET_1B
- const SPRITE_ANIM_FRAMESET_1C
- const SPRITE_ANIM_FRAMESET_LEAF
- const SPRITE_ANIM_FRAMESET_1E
- const SPRITE_ANIM_FRAMESET_1F
- const SPRITE_ANIM_FRAMESET_20
- const SPRITE_ANIM_FRAMESET_21
- const SPRITE_ANIM_FRAMESET_22
- const SPRITE_ANIM_FRAMESET_23
- const SPRITE_ANIM_FRAMESET_24
- const SPRITE_ANIM_FRAMESET_25
- const SPRITE_ANIM_FRAMESET_26
- const SPRITE_ANIM_FRAMESET_27
- const SPRITE_ANIM_FRAMESET_28
- const SPRITE_ANIM_FRAMESET_29
- const SPRITE_ANIM_FRAMESET_2A
- const SPRITE_ANIM_FRAMESET_2B
- const SPRITE_ANIM_FRAMESET_2C
- const SPRITE_ANIM_FRAMESET_2D
- const SPRITE_ANIM_FRAMESET_2E
- const SPRITE_ANIM_FRAMESET_2F
- const SPRITE_ANIM_FRAMESET_30
- const SPRITE_ANIM_FRAMESET_31
- const SPRITE_ANIM_FRAMESET_32
- const SPRITE_ANIM_FRAMESET_33
- const SPRITE_ANIM_FRAMESET_34
- const SPRITE_ANIM_FRAMESET_35
- const SPRITE_ANIM_FRAMESET_36
- const SPRITE_ANIM_FRAMESET_37
- const SPRITE_ANIM_FRAMESET_38
- const SPRITE_ANIM_FRAMESET_39
- const SPRITE_ANIM_FRAMESET_3A
- const SPRITE_ANIM_FRAMESET_3B
- const SPRITE_ANIM_FRAMESET_3C
- const SPRITE_ANIM_FRAMESET_3D
- const SPRITE_ANIM_FRAMESET_3E
- const SPRITE_ANIM_FRAMESET_3F
- const SPRITE_ANIM_FRAMESET_40
- const SPRITE_ANIM_FRAMESET_41
-
- const_def
- const SPRITE_ANIM_SEQ_NULL
- const SPRITE_ANIM_SEQ_01
- const SPRITE_ANIM_SEQ_02
- const SPRITE_ANIM_SEQ_03
- const SPRITE_ANIM_SEQ_04
- const SPRITE_ANIM_SEQ_05
- const SPRITE_ANIM_SEQ_GAMEFREAK_LOGO
- const SPRITE_ANIM_SEQ_07
- const SPRITE_ANIM_SEQ_08
- const SPRITE_ANIM_SEQ_SLOT_GOLEM
- const SPRITE_ANIM_SEQ_SLOTS_CHANSEY
- const SPRITE_ANIM_SEQ_SLOTS_EGG
- const SPRITE_ANIM_SEQ_0C
- const SPRITE_ANIM_SEQ_0D
- const SPRITE_ANIM_SEQ_0E
- const SPRITE_ANIM_SEQ_0F
- const SPRITE_ANIM_SEQ_10
- const SPRITE_ANIM_SEQ_11
- const SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE
- const SPRITE_ANIM_SEQ_13
- const SPRITE_ANIM_SEQ_14
- const SPRITE_ANIM_SEQ_15
- const SPRITE_ANIM_SEQ_FLY_FROM
- const SPRITE_ANIM_SEQ_FLY_LEAF
- const SPRITE_ANIM_SEQ_FLY_TO
- const SPRITE_ANIM_SEQ_19
- const SPRITE_ANIM_SEQ_1A
- const SPRITE_ANIM_SEQ_1B
- const SPRITE_ANIM_SEQ_1C
- const SPRITE_ANIM_SEQ_1D
- const SPRITE_ANIM_SEQ_1E
- const SPRITE_ANIM_SEQ_1F
- const SPRITE_ANIM_SEQ_20
- const SPRITE_ANIM_SEQ_21
- const SPRITE_ANIM_SEQ_22
-
- const_def
- const SPRITE_ANIM_INDEX_00
- const SPRITE_ANIM_INDEX_01
- const SPRITE_ANIM_INDEX_02
- const SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
- const SPRITE_ANIM_INDEX_04
- const SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
- const SPRITE_ANIM_INDEX_SLOT_GOLEM
- const SPRITE_ANIM_INDEX_SLOTS_CHANSEY
- const SPRITE_ANIM_INDEX_SLOTS_EGG
- const SPRITE_ANIM_INDEX_09
- const SPRITE_ANIM_INDEX_RED_WALK
- const SPRITE_ANIM_INDEX_0B
- const SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
- const SPRITE_ANIM_INDEX_0D
- const SPRITE_ANIM_INDEX_0E
- const SPRITE_ANIM_INDEX_0F
- const SPRITE_ANIM_INDEX_10
- const SPRITE_ANIM_INDEX_TRADEMON_ICON
- const SPRITE_ANIM_INDEX_TRADEMON_BUBBLE
- const SPRITE_ANIM_INDEX_13
- const SPRITE_ANIM_INDEX_14
- const SPRITE_ANIM_INDEX_15
- const SPRITE_ANIM_INDEX_LEAF
- const SPRITE_ANIM_INDEX_CUT_TREE
- const SPRITE_ANIM_INDEX_FLY_LEAF
- const SPRITE_ANIM_INDEX_19
- const SPRITE_ANIM_INDEX_1A
- const SPRITE_ANIM_INDEX_1B
- const SPRITE_ANIM_INDEX_1C
- const SPRITE_ANIM_INDEX_1D
- const SPRITE_ANIM_INDEX_BLUE_WALK
- const SPRITE_ANIM_INDEX_1F
- const SPRITE_ANIM_INDEX_20
- const SPRITE_ANIM_INDEX_21
- const SPRITE_ANIM_INDEX_22
- const SPRITE_ANIM_INDEX_23
- const SPRITE_ANIM_INDEX_24
- const SPRITE_ANIM_INDEX_25
- const SPRITE_ANIM_INDEX_26
- const SPRITE_ANIM_INDEX_27
- const SPRITE_ANIM_INDEX_28
- const SPRITE_ANIM_INDEX_29
- const SPRITE_ANIM_INDEX_2A
- const SPRITE_ANIM_INDEX_2B
- const SPRITE_ANIM_INDEX_2C
-
- const_def
-
- const SPRITE_ANIM_FRAME_IDX_00
- const SPRITE_ANIM_FRAME_IDX_01
- const SPRITE_ANIM_FRAME_IDX_02
- const SPRITE_ANIM_FRAME_IDX_03
- const SPRITE_ANIM_FRAME_IDX_04
- const SPRITE_ANIM_FRAME_IDX_05
- const SPRITE_ANIM_FRAME_IDX_06
- const SPRITE_ANIM_FRAME_IDX_07
- const SPRITE_ANIM_FRAME_IDX_08
- const SPRITE_ANIM_FRAME_IDX_09
- const SPRITE_ANIM_FRAME_IDX_0A
- const SPRITE_ANIM_FRAME_IDX_0B
- const SPRITE_ANIM_FRAME_IDX_0C
- const SPRITE_ANIM_FRAME_IDX_0D
- const SPRITE_ANIM_FRAME_IDX_0E
- const SPRITE_ANIM_FRAME_IDX_0F
- const SPRITE_ANIM_FRAME_IDX_10
- const SPRITE_ANIM_FRAME_IDX_11
- const SPRITE_ANIM_FRAME_IDX_12
- const SPRITE_ANIM_FRAME_IDX_13
- const SPRITE_ANIM_FRAME_IDX_14
- const SPRITE_ANIM_FRAME_IDX_15
- const SPRITE_ANIM_FRAME_IDX_16
- const SPRITE_ANIM_FRAME_IDX_17
- const SPRITE_ANIM_FRAME_IDX_18
- const SPRITE_ANIM_FRAME_IDX_19
- const SPRITE_ANIM_FRAME_IDX_1A
- const SPRITE_ANIM_FRAME_IDX_1B
- const SPRITE_ANIM_FRAME_IDX_1C
- const SPRITE_ANIM_FRAME_IDX_1D
- const SPRITE_ANIM_FRAME_IDX_1E
- const SPRITE_ANIM_FRAME_IDX_1F
- const SPRITE_ANIM_FRAME_IDX_20
- const SPRITE_ANIM_FRAME_IDX_21
- const SPRITE_ANIM_FRAME_IDX_22
- const SPRITE_ANIM_FRAME_IDX_23
- const SPRITE_ANIM_FRAME_IDX_24
- const SPRITE_ANIM_FRAME_IDX_25
- const SPRITE_ANIM_FRAME_IDX_26
- const SPRITE_ANIM_FRAME_IDX_27
- const SPRITE_ANIM_FRAME_IDX_28
- const SPRITE_ANIM_FRAME_IDX_29
- const SPRITE_ANIM_FRAME_IDX_2A
- const SPRITE_ANIM_FRAME_IDX_2B
- const SPRITE_ANIM_FRAME_IDX_2C
- const SPRITE_ANIM_FRAME_IDX_2D
- const SPRITE_ANIM_FRAME_IDX_2E
- const SPRITE_ANIM_FRAME_IDX_2F
- const SPRITE_ANIM_FRAME_IDX_30
- const SPRITE_ANIM_FRAME_IDX_31
- const SPRITE_ANIM_FRAME_IDX_32
- const SPRITE_ANIM_FRAME_IDX_33
- const SPRITE_ANIM_FRAME_IDX_34
- const SPRITE_ANIM_FRAME_IDX_35
- const SPRITE_ANIM_FRAME_IDX_36
- const SPRITE_ANIM_FRAME_IDX_37
- const SPRITE_ANIM_FRAME_IDX_38
- const SPRITE_ANIM_FRAME_IDX_39
- const SPRITE_ANIM_FRAME_IDX_3A
- const SPRITE_ANIM_FRAME_IDX_3B
- const SPRITE_ANIM_FRAME_IDX_3C
- const SPRITE_ANIM_FRAME_IDX_3D
- const SPRITE_ANIM_FRAME_IDX_3E
- const SPRITE_ANIM_FRAME_IDX_3F
- const SPRITE_ANIM_FRAME_IDX_40
- const SPRITE_ANIM_FRAME_IDX_41
- const SPRITE_ANIM_FRAME_IDX_42
- const SPRITE_ANIM_FRAME_IDX_43
- const SPRITE_ANIM_FRAME_IDX_44
- const SPRITE_ANIM_FRAME_IDX_45
- const SPRITE_ANIM_FRAME_IDX_46
- const SPRITE_ANIM_FRAME_IDX_47
- const SPRITE_ANIM_FRAME_IDX_48
- const SPRITE_ANIM_FRAME_IDX_49
- const SPRITE_ANIM_FRAME_IDX_4A
- const SPRITE_ANIM_FRAME_IDX_4B
- const SPRITE_ANIM_FRAME_IDX_4C
- const SPRITE_ANIM_FRAME_IDX_4D
- const SPRITE_ANIM_FRAME_IDX_4E
- const SPRITE_ANIM_FRAME_IDX_4F
- const SPRITE_ANIM_FRAME_IDX_50
- const SPRITE_ANIM_FRAME_IDX_51
- const SPRITE_ANIM_FRAME_IDX_52
- const SPRITE_ANIM_FRAME_IDX_53
- const SPRITE_ANIM_FRAME_IDX_54
- const SPRITE_ANIM_FRAME_IDX_55
- const SPRITE_ANIM_FRAME_IDX_56
- const SPRITE_ANIM_FRAME_IDX_57
- const SPRITE_ANIM_FRAME_IDX_58
- const SPRITE_ANIM_FRAME_IDX_59
- const SPRITE_ANIM_FRAME_IDX_5A
- const SPRITE_ANIM_FRAME_IDX_5B
- const SPRITE_ANIM_FRAME_IDX_5C
- const SPRITE_ANIM_FRAME_IDX_5D
- const SPRITE_ANIM_FRAME_IDX_5E
- const SPRITE_ANIM_FRAME_IDX_5F
- const SPRITE_ANIM_FRAME_IDX_60
- const SPRITE_ANIM_FRAME_IDX_61
- const SPRITE_ANIM_FRAME_IDX_62
- const SPRITE_ANIM_FRAME_IDX_63
- const SPRITE_ANIM_FRAME_IDX_64
- const SPRITE_ANIM_FRAME_IDX_65
- const SPRITE_ANIM_FRAME_IDX_66
- const SPRITE_ANIM_FRAME_IDX_67
- const SPRITE_ANIM_FRAME_IDX_68
- const SPRITE_ANIM_FRAME_IDX_69
- const SPRITE_ANIM_FRAME_IDX_6A
- const SPRITE_ANIM_FRAME_IDX_6B
- const SPRITE_ANIM_FRAME_IDX_6C
- const SPRITE_ANIM_FRAME_IDX_6D
- const SPRITE_ANIM_FRAME_IDX_6E
- const SPRITE_ANIM_FRAME_IDX_6F
- const SPRITE_ANIM_FRAME_IDX_70
- const SPRITE_ANIM_FRAME_IDX_71
- const SPRITE_ANIM_FRAME_IDX_72
- const SPRITE_ANIM_FRAME_IDX_73
- const SPRITE_ANIM_FRAME_IDX_74
- const SPRITE_ANIM_FRAME_IDX_75
- const SPRITE_ANIM_FRAME_IDX_76
- const SPRITE_ANIM_FRAME_IDX_77
- const SPRITE_ANIM_FRAME_IDX_78
- const SPRITE_ANIM_FRAME_IDX_79
- const SPRITE_ANIM_FRAME_IDX_7A
- const SPRITE_ANIM_FRAME_IDX_7B
- const SPRITE_ANIM_FRAME_IDX_7C
- const SPRITE_ANIM_FRAME_IDX_7D
- const SPRITE_ANIM_FRAME_IDX_7E
- const SPRITE_ANIM_FRAME_IDX_7F
- const SPRITE_ANIM_FRAME_IDX_80
- const SPRITE_ANIM_FRAME_IDX_81
- const SPRITE_ANIM_FRAME_IDX_82
- const SPRITE_ANIM_FRAME_IDX_83
- const SPRITE_ANIM_FRAME_IDX_84
- const SPRITE_ANIM_FRAME_IDX_85
- const SPRITE_ANIM_FRAME_IDX_86
- const SPRITE_ANIM_FRAME_IDX_87
- const SPRITE_ANIM_FRAME_IDX_88
- const SPRITE_ANIM_FRAME_IDX_89
- const SPRITE_ANIM_FRAME_IDX_8A
- const SPRITE_ANIM_FRAME_IDX_8B
diff --git a/constants/sprite_data_constants.asm b/constants/sprite_data_constants.asm
new file mode 100644
index 00000000..329833b1
--- /dev/null
+++ b/constants/sprite_data_constants.asm
@@ -0,0 +1,38 @@
+; overworld_sprite struct members (see data/sprites.asm)
+ const_def
+ const SPRITEDATA_ADDR ; 0
+ const SPRITEDATA_ADDR_HI ; 1
+ const SPRITEDATA_SIZE ; 2
+ const SPRITEDATA_BANK ; 3
+ const SPRITEDATA_TYPE ; 4
+ const SPRITEDATA_PALETTE ; 5
+NUM_SPRITEDATA_FIELDS EQU const_value
+
+; sprite types
+ const_def 1
+ const WALKING_SPRITE ; 1
+ const STANDING_SPRITE ; 2
+ const STILL_SPRITE ; 3
+
+; sprite palettes
+ const_def
+ const PAL_OW_RED ; 0
+ const PAL_OW_BLUE ; 1
+ const PAL_OW_GREEN ; 2
+ const PAL_OW_BROWN ; 3
+ const PAL_OW_PINK ; 4
+ const PAL_OW_SILVER ; 5
+ const PAL_OW_TREE ; 6
+ const PAL_OW_ROCK ; 7
+
+; object_events set bit 3 so as not to use the sprite's default palette
+; MapObjectPals indexes (see gfx/overworld/npc_sprites.pal)
+ const_def 1 << 3
+ const PAL_NPC_RED ; 8
+ const PAL_NPC_BLUE ; 9
+ const PAL_NPC_GREEN ; a
+ const PAL_NPC_BROWN ; b
+ const PAL_NPC_PINK ; c
+ const PAL_NPC_SILVER ; d
+ const PAL_NPC_TREE ; e
+ const PAL_NPC_ROCK ; f
diff --git a/constants/text_constants.asm b/constants/text_constants.asm
new file mode 100644
index 00000000..ee558956
--- /dev/null
+++ b/constants/text_constants.asm
@@ -0,0 +1,46 @@
+; name lengths
+NAME_LENGTH EQU 11
+PLAYER_NAME_LENGTH EQU 8
+BOX_NAME_LENGTH EQU 9
+MON_NAME_LENGTH EQU 11
+MOVE_NAME_LENGTH EQU 13
+ITEM_NAME_LENGTH EQU 13
+TRAINER_CLASS_NAME_LENGTH EQU 13
+NAME_LENGTH_JAPANESE EQU 6
+
+; GetName types (see home/names.asm)
+ const_def 1
+ const MON_NAME ; 1
+ const MOVE_NAME ; 2
+ const DUMMY_NAME ; 3
+ const ITEM_NAME ; 4
+ const PARTY_OT_NAME ; 5
+ const ENEMY_OT_NAME ; 6
+ const TRAINER_NAME ; 7
+ const MOVE_DESC_NAME_BROKEN ; 8
+
+; see home/text.asm
+BORDER_WIDTH EQU 2
+TEXTBOX_WIDTH EQU SCREEN_WIDTH
+TEXTBOX_INNERW EQU TEXTBOX_WIDTH - BORDER_WIDTH
+TEXTBOX_HEIGHT EQU 6
+TEXTBOX_INNERH EQU TEXTBOX_HEIGHT - BORDER_WIDTH
+TEXTBOX_X EQU 0
+TEXTBOX_INNERX EQU TEXTBOX_X + 1
+TEXTBOX_Y EQU SCREEN_HEIGHT - TEXTBOX_HEIGHT
+TEXTBOX_INNERY EQU TEXTBOX_Y + 2
+
+; PrintNum bit flags
+ const_def 5
+ const PRINTNUM_MONEY_F ; 5
+ const PRINTNUM_RIGHTALIGN_F ; 6
+ const PRINTNUM_LEADINGZEROS_F ; 7
+
+; PrintNum arguments (see engine/math/print_num.asm)
+PRINTNUM_MONEY EQU 1 << PRINTNUM_MONEY_F
+PRINTNUM_RIGHTALIGN EQU 1 << PRINTNUM_RIGHTALIGN_F
+PRINTNUM_LEADINGZEROS EQU 1 << PRINTNUM_LEADINGZEROS_F
+
+; character sets (see charmap.asm)
+FIRST_REGULAR_TEXT_CHAR EQU $60
+FIRST_HIRAGANA_DAKUTEN_CHAR EQU $20
diff --git a/constants/wram_constants.asm b/constants/wram_constants.asm
index 3561c9be..74d27aab 100644
--- a/constants/wram_constants.asm
+++ b/constants/wram_constants.asm
@@ -84,9 +84,6 @@ PLAYER_SLIP EQU 2
PLAYER_SURF EQU 4
PLAYER_SURF_PIKA EQU 8
-OBJECT_STRUCT_LENGTH EQU 40
-NUM_OBJECT_STRUCTS EQU 13
-
; After-Champion Spawn
SPAWN_LANCE EQU 1
SPAWN_RED EQU 2
diff --git a/data/map_objects.asm b/data/map_objects.asm
index cdd0b0a6..fe218e42 100755
--- a/data/map_objects.asm
+++ b/data/map_objects.asm
@@ -4,41 +4,41 @@ sprite_movement_data: macro
endm
; function, facing, action, flags1, flags2, palette flags
- sprite_movement_data SPRITEMOVEFN_00, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 00
- sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_STAND, $0c, $00, %0000 ; 01
- sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 02
- sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 03
- sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 04
- sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 05
- sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 06
- sprite_movement_data SPRITEMOVEFN_STANDING, UP, PERSON_ACTION_STAND, $00, $00, %0000 ; 07
- sprite_movement_data SPRITEMOVEFN_STANDING, LEFT, PERSON_ACTION_STAND, $00, $00, %0000 ; 08
- sprite_movement_data SPRITEMOVEFN_STANDING, RIGHT, PERSON_ACTION_STAND, $00, $00, %0000 ; 09
- sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0a
- sprite_movement_data SPRITEMOVEFN_OBEY_DPAD, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 0b
- sprite_movement_data SPRITEMOVEFN_08, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0c
- sprite_movement_data SPRITEMOVEFN_09, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0d
- sprite_movement_data SPRITEMOVEFN_0A, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0e
- sprite_movement_data SPRITEMOVEFN_0B, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0f
- sprite_movement_data SPRITEMOVEFN_0C, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 10
- sprite_movement_data SPRITEMOVEFN_0D, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 11
- sprite_movement_data SPRITEMOVEFN_0E, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 12
- sprite_movement_data SPRITEMOVEFN_FOLLOW, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 13
- sprite_movement_data SPRITEMOVEFN_SCRIPTED, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 14
- sprite_movement_data SPRITEMOVEFN_BIG_SNORLAX, DOWN, PERSON_ACTION_09, $2e, $01, %1100 ; 15
- sprite_movement_data SPRITEMOVEFN_BOUNCE, DOWN, PERSON_ACTION_0A, $2e, $00, %0000 ; 16
- sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_STAND, $0c, $00, %0000 ; 17
- sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_STAND, $2e, $10, %0000 ; 18
- sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, PERSON_ACTION_STAND, $2e, $00, %0100 ; 19
- sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 1a
- sprite_movement_data SPRITEMOVEFN_SHADOW, DOWN, PERSON_ACTION_00, $8e, $01, %0000 ; 1b
- sprite_movement_data SPRITEMOVEFN_EMOTE, DOWN, PERSON_ACTION_EMOTE, $8e, $02, %0000 ; 1c
- sprite_movement_data SPRITEMOVEFN_SCREENSHAKE, DOWN, PERSON_ACTION_00, $82, $00, %0000 ; 1d
- sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT, PERSON_ACTION_STAND, $00, $00, %0000 ; 1e
- sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE, RIGHT, PERSON_ACTION_STAND, $00, $00, %0000 ; 1f
- sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, PERSON_ACTION_0C, $2e, $01, %1100 ; 20
- sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, PERSON_ACTION_0D, $2e, $01, %1100 ; 21
- sprite_movement_data SPRITEMOVEFN_BOULDERDUST, DOWN, PERSON_ACTION_0E, $8e, $01, %0000 ; 22
- sprite_movement_data SPRITEMOVEFN_GRASS, DOWN, PERSON_ACTION_0F, $8e, $02, %0000 ; 23
- sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, PERSON_ACTION_STAND, $00, $00, %0010 ; 24
- sprite_movement_data SPRITEMOVEFN_00, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 25
+ sprite_movement_data SPRITEMOVEFN_00, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 00
+ sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, OBJECT_ACTION_STAND, $0c, $00, %0000 ; 01
+ sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 02
+ sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 03
+ sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 04
+ sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 05
+ sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 06
+ sprite_movement_data SPRITEMOVEFN_STANDING, UP, OBJECT_ACTION_STAND, $00, $00, %0000 ; 07
+ sprite_movement_data SPRITEMOVEFN_STANDING, LEFT, OBJECT_ACTION_STAND, $00, $00, %0000 ; 08
+ sprite_movement_data SPRITEMOVEFN_STANDING, RIGHT, OBJECT_ACTION_STAND, $00, $00, %0000 ; 09
+ sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0a
+ sprite_movement_data SPRITEMOVEFN_OBEY_DPAD, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 0b
+ sprite_movement_data SPRITEMOVEFN_08, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0c
+ sprite_movement_data SPRITEMOVEFN_09, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0d
+ sprite_movement_data SPRITEMOVEFN_0A, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0e
+ sprite_movement_data SPRITEMOVEFN_0B, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0f
+ sprite_movement_data SPRITEMOVEFN_0C, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 10
+ sprite_movement_data SPRITEMOVEFN_0D, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 11
+ sprite_movement_data SPRITEMOVEFN_0E, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 12
+ sprite_movement_data SPRITEMOVEFN_FOLLOW, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 13
+ sprite_movement_data SPRITEMOVEFN_SCRIPTED, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 14
+ sprite_movement_data SPRITEMOVEFN_BIG_SNORLAX, DOWN, OBJECT_ACTION_BIG_DOLL_SYM, $2e, $01, %1100 ; 15
+ sprite_movement_data SPRITEMOVEFN_BOUNCE, DOWN, OBJECT_ACTION_BOUNCE, $2e, $00, %0000 ; 16
+ sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, OBJECT_ACTION_STAND, $0c, $00, %0000 ; 17
+ sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, OBJECT_ACTION_STAND, $2e, $10, %0000 ; 18
+ sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, OBJECT_ACTION_STAND, $2e, $00, %0100 ; 19
+ sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 1a
+ sprite_movement_data SPRITEMOVEFN_SHADOW, DOWN, OBJECT_ACTION_00, $8e, $01, %0000 ; 1b
+ sprite_movement_data SPRITEMOVEFN_EMOTE, DOWN, OBJECT_ACTION_EMOTE, $8e, $02, %0000 ; 1c
+ sprite_movement_data SPRITEMOVEFN_SCREENSHAKE, DOWN, OBJECT_ACTION_00, $82, $00, %0000 ; 1d
+ sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT, OBJECT_ACTION_STAND, $00, $00, %0000 ; 1e
+ sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE, RIGHT, OBJECT_ACTION_STAND, $00, $00, %0000 ; 1f
+ sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, OBJECT_ACTION_BIG_DOLL_ASYM, $2e, $01, %1100 ; 20
+ sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, OBJECT_ACTION_BIG_DOLL, $2e, $01, %1100 ; 21
+ sprite_movement_data SPRITEMOVEFN_BOULDERDUST, DOWN, OBJECT_ACTION_BOULDER_DUST, $8e, $01, %0000 ; 22
+ sprite_movement_data SPRITEMOVEFN_GRASS, DOWN, OBJECT_ACTION_GRASS_SHAKE, $8e, $02, %0000 ; 23
+ sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, OBJECT_ACTION_STAND, $00, $00, %0010 ; 24
+ sprite_movement_data SPRITEMOVEFN_00, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 25
diff --git a/engine/color.asm b/engine/color.asm
index 16e4c29d..0f73ff99 100755
--- a/engine/color.asm
+++ b/engine/color.asm
@@ -1469,7 +1469,7 @@ Pointers_b6ce:
dw .OutdoorColors ; ROUTE
dw .IndoorColors ; INDOOR
dw .DungeonColors ; CAVE
- dw .Perm5Colors ; PERM_5
+ dw .Perm5Colors ; ENVIRONMENT_5
dw .IndoorColors ; GATE
dw .DungeonColors ; DUNGEON
diff --git a/engine/main_menu.asm b/engine/main_menu.asm
index 2da93de6..40acea32 100755
--- a/engine/main_menu.asm
+++ b/engine/main_menu.asm
@@ -345,8 +345,6 @@ Function5c41: ; 5c41 (1:5c41)
ld [wCoins], a
ld [wCoins + 1], a
-START_MONEY EQU 3000
-
IF START_MONEY / $10000
ld a, START_MONEY / $10000
ENDC
diff --git a/engine/move_mon.asm b/engine/move_mon.asm
index 007f3b2a..e1ffa672 100755
--- a/engine/move_mon.asm
+++ b/engine/move_mon.asm
@@ -1534,7 +1534,7 @@ GivePoke: ; Give a Pokemon from script
call GetPokemonName
ld hl, wStringBuffer1
ld de, wMonOrItemNameBuffer
- ld bc, PKMN_NAME_LENGTH
+ ld bc, MON_NAME_LENGTH
call CopyBytes
pop af
and a
@@ -1546,7 +1546,7 @@ GivePoke: ; Give a Pokemon from script
push hl
ld a, [wScriptBank]
call GetFarHalfword
- ld bc, PKMN_NAME_LENGTH
+ ld bc, MON_NAME_LENGTH
ld a, [wScriptBank]
call FarCopyBytes
pop hl
@@ -1582,7 +1582,7 @@ GivePoke: ; Give a Pokemon from script
ld a, BANK(sBoxMonOT)
call OpenSRAM
ld de, sBoxMonOT
- ld bc, PKMN_NAME_LENGTH
+ ld bc, MON_NAME_LENGTH
ld a, [wScriptBank]
call FarCopyBytes
ld hl, sBoxMon1ID
@@ -1610,7 +1610,7 @@ GivePoke: ; Give a Pokemon from script
call OpenSRAM
ld hl, wMonOrItemNameBuffer
ld de, sBoxMonNicknames
- ld bc, PKMN_NAME_LENGTH
+ ld bc, MON_NAME_LENGTH
call CopyBytes
call CloseSRAM
ld b, $1
diff --git a/engine/overworld/player_object.asm b/engine/overworld/player_object.asm
index 45562e8e..40edd8b5 100755
--- a/engine/overworld/player_object.asm
+++ b/engine/overworld/player_object.asm
@@ -37,7 +37,10 @@ SpawnPlayer: ; 861a (2:461a)
ret
.PlayerObjectTemplate
- person_event SPRITE_CHRIS, -4, -4, SPRITEMOVEDATA_PLAYER, 15, 15, -1, -1, 0, PERSONTYPE_SCRIPT, 0, 0, -1
+; A dummy map object used to initialize the player object.
+; Shorter than the actual amount copied by two bytes.
+; Said bytes seem to be unused.
+ object_event -4, -4, SPRITE_CHRIS, SPRITEMOVEDATA_PLAYER, 15, 15, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, 0, -1
CopyDECoordsToMapObject: ; 8653 (2:4653)
push de
@@ -117,7 +120,7 @@ SpawnPlayer2:
ret
.PlayerObjectTemplate:
- person_event SPRITE_CHRIS, -4, -4, SPRITEMOVEDATA_12, 15, 15, -1, -1, 0, PERSONTYPE_SCRIPT, 0, 0, -1
+ object_event -4, -4, SPRITE_CHRIS, SPRITEMOVEDATA_12, 15, 15, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, 0, -1
CopyObjectStruct_:: ; 86d7 (2:46d7)
call CheckObjectMask
diff --git a/engine/specials.asm b/engine/specials.asm
index 4232bb9e..2179c3af 100755
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -12,8 +12,23 @@ Special:: ; c22b
rst FarCall
ret
+; Special routines can be used with the "special" map script command.
+; They often use wScriptVar for arguments and return values.
+
+add_special: MACRO
+; Some ROM0 specials have a nonzero bank.
+\1Special::
+IF _NARG == 1
+ dba \1
+ELSE
+ dbw \2, \1
+ENDC
+ENDM
+
SpecialsPointers:
add_special WarpToSpawnPoint
+
+; Communications
add_special Function29b22
add_special Function29b4b
add_special Function29bcc
@@ -33,6 +48,8 @@ SpecialsPointers:
add_special Special_CheckMysteryGift
add_special Special_GetMysteryGiftItem
add_special Function2a4e7
+
+; Map events
add_special BugContestJudging
add_special Functionc7bbf
add_special Function13dce
diff --git a/event/overworld.asm b/event/overworld.asm
index 4a9a4751..59848f21 100755
--- a/event/overworld.asm
+++ b/event/overworld.asm
@@ -986,7 +986,7 @@ Text_AllowedToMoveBoulders:
AskStrengthScript: ; cd4e
callasm TryStrengthOW
iffalse .ask
- if_equal 1, .not_able
+ ifequal 1, .not_able
jump .already_active
.not_able
@@ -1334,7 +1334,7 @@ Text_UsedRockSmash:
; cf60
AskRockSmashScript:
callasm TryRockSmashOW
- if_equal 1, .fail
+ ifequal 1, .fail
opentext
writetext Text_AskRockSmash
yesorno
diff --git a/event/special.asm b/event/special.asm
index ddc530d1..1c7edb2a 100755
--- a/event/special.asm
+++ b/event/special.asm
@@ -192,5 +192,5 @@ Data_753f:
Function7542: ; 7542 (1:7542)
ld hl, wStringBuffer1
ld de, wStringBuffer3
- ld bc, PKMN_NAME_LENGTH
+ ld bc, MON_NAME_LENGTH
jp CopyBytes
diff --git a/home.asm b/home.asm
index 71914259..cae40bd8 100644
--- a/home.asm
+++ b/home.asm
@@ -1025,14 +1025,14 @@ GetPokemonName:: ; 367e (0:367e)
ld hl, PokemonNames
ld e, a
ld d, $0
-rept PKMN_NAME_LENGTH +- 1
+rept MON_NAME_LENGTH +- 1
add hl, de
endr
ld de, wStringBuffer1
push de
- ld bc, PKMN_NAME_LENGTH - 1
+ ld bc, MON_NAME_LENGTH - 1
call CopyBytes
- ld hl, wStringBuffer1 + PKMN_NAME_LENGTH - 1
+ ld hl, wStringBuffer1 + MON_NAME_LENGTH - 1
ld [hl], "@"
pop de
pop hl
diff --git a/home/map.asm b/home/map.asm
index 3088996c..c6ad4ae6 100644
--- a/home/map.asm
+++ b/home/map.asm
@@ -106,12 +106,12 @@ LoadMetatiles:: ; 1fe6 (0:1fe6)
ld a, [wOverworldMapAnchor + 1]
ld d, a
ld hl, wMisc
- ld b, WMISC_HEIGHT / 4 ; 5
+ ld b, SURROUNDING_HEIGHT / METATILE_WIDTH ; 5
.row
push de
push hl
- ld c, WMISC_WIDTH / 4 ; 6
+ ld c, SURROUNDING_WIDTH / METATILE_WIDTH ; 6
.col
push de
@@ -142,20 +142,20 @@ LoadMetatiles:: ; 1fe6 (0:1fe6)
ld h, a
; copy the 4x4 metatile
-rept 3
-rept 4
+rept METATILE_WIDTH + -1
+rept METATILE_WIDTH
ld a, [hli]
ld [de], a
inc de
endr
ld a, e
- add WMISC_WIDTH - 4
+ add SURROUNDING_WIDTH - METATILE_WIDTH
ld e, a
jr nc, .next\@
inc d
.next\@
endr
-rept 4
+rept METATILE_WIDTH
ld a, [hli]
ld [de], a
inc de
@@ -170,7 +170,7 @@ endr
jp nz, .col
; Next metarow
pop hl
- ld de, WMISC_WIDTH * 4
+ ld de, SURROUNDING_WIDTH * METATILE_WIDTH
add hl, de
pop de
ld a, [wMapWidth]
@@ -692,7 +692,7 @@ CheckDungeonMap::
ret z
cp GATE
ret z
- cp PERM_5
+ cp ENVIRONMENT_5
ret
LoadMapAttributes::
diff --git a/home/text.asm b/home/text.asm
index 806351d5..b689701d 100644
--- a/home/text.asm
+++ b/home/text.asm
@@ -1,13 +1,3 @@
-BORDER_WIDTH EQU 2
-TEXTBOX_WIDTH EQU SCREEN_WIDTH
-TEXTBOX_INNERW EQU TEXTBOX_WIDTH - BORDER_WIDTH
-TEXTBOX_HEIGHT EQU 6
-TEXTBOX_INNERH EQU TEXTBOX_HEIGHT - BORDER_WIDTH
-TEXTBOX_X EQU 0
-TEXTBOX_INNERX EQU TEXTBOX_X + 1
-TEXTBOX_Y EQU SCREEN_HEIGHT - TEXTBOX_HEIGHT
-TEXTBOX_INNERY EQU TEXTBOX_Y + 2
-
TEXTBOX_PAL EQU 7
ClearBox:: ; ebd (0:0ebd)
diff --git a/items/item_attributes.asm b/items/item_attributes.asm
index 7b02c7f5..14ce8e92 100755
--- a/items/item_attributes.asm
+++ b/items/item_attributes.asm
@@ -16,7 +16,7 @@ Item2Attributes:
item_attribute 1200, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
; BRIGHTPOWDER
- item_attribute 10, HELD_BRIGHTPOWDER, 20, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+ item_attribute 10, HELD_BRIGHTPOWDER, 20, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
; GREAT BALL
item_attribute 600, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
@@ -253,7 +253,7 @@ Item2Attributes:
item_attribute 100, HELD_POISON_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
; KING'S ROCK
- item_attribute 100, HELD_TRADE_EVOLVE, 30, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
+ item_attribute 100, HELD_FLINCH, 30, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
; BITTER BERRY
item_attribute 10, HELD_HEAL_CONFUSION, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_PARTY
diff --git a/items/item_effects.asm b/items/item_effects.asm
index 84ff853e..225bf541 100755
--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -538,7 +538,7 @@ UltraBall: ; e926
dec a
ld [wd005], a
ld hl, wPartyMon1Nickname
- ld bc, PKMN_NAME_LENGTH
+ ld bc, MON_NAME_LENGTH
call AddNTimes
ld d, h
ld e, l
@@ -590,7 +590,7 @@ UltraBall: ; e926
call OpenSRAM
ld hl, wMonOrItemNameBuffer
ld de, sBoxMonNicknames
- ld bc, PKMN_NAME_LENGTH
+ ld bc, MON_NAME_LENGTH
call CopyBytes
ld hl, sBoxMonNicknames
ld de, wStringBuffer1
@@ -601,7 +601,7 @@ UltraBall: ; e926
call OpenSRAM
ld hl, sBoxMonNicknames
ld de, wMonOrItemNameBuffer
- ld bc, PKMN_NAME_LENGTH
+ ld bc, MON_NAME_LENGTH
call CopyBytes
call CloseSRAM
ld hl, Text_SentToBillsPC ; $6e3f
diff --git a/macros.asm b/macros.asm
index 39e3f7d7..adbf2632 100644
--- a/macros.asm
+++ b/macros.asm
@@ -1,19 +1,18 @@
INCLUDE "macros/enum.asm"
INCLUDE "macros/basestats.asm"
-INCLUDE "macros/event.asm"
+INCLUDE "macros/scripts/maps.asm"
+INCLUDE "macros/scripts/events.asm"
INCLUDE "macros/sound.asm"
INCLUDE "macros/text.asm"
INCLUDE "macros/charmap.asm"
INCLUDE "macros/move_effect.asm"
INCLUDE "macros/move_anim.asm"
INCLUDE "macros/movement.asm"
-INCLUDE "macros/map.asm"
INCLUDE "macros/pic.asm"
INCLUDE "macros/predef.asm"
INCLUDE "macros/rst.asm"
INCLUDE "macros/mobile.asm"
-INCLUDE "macros/trainer.asm"
INCLUDE "macros/trade_anim.asm"
INCLUDE "macros/pals.asm"
INCLUDE "macros/flag.asm"
@@ -282,6 +281,12 @@ else
endc
endm
+menu_coords: MACRO
+; x1, y1, x2, y2
+ db \2, \1 ; start coords
+ db \4, \3 ; end coords
+ENDM
+
jumptable: MACRO
ld a, [\2]
ld e, a
diff --git a/macros/enum.asm b/macros/enum.asm
index 933f7b18..4830c339 100644
--- a/macros/enum.asm
+++ b/macros/enum.asm
@@ -22,11 +22,14 @@ enum_set: macro
__enum__ = \1
endm
-
; Enumerate constants
const_def: MACRO
+if _NARG >= 1
+const_value = \1
+else
const_value = 0
+endc
ENDM
const: MACRO
diff --git a/macros/event.asm b/macros/event.asm
index e3d20b48..359fe553 100644
--- a/macros/event.asm
+++ b/macros/event.asm
@@ -100,15 +100,15 @@ special: macro
dw (\1Special - SpecialsPointers) / 3
endm
-add_special: MACRO
-; Some ROM0 specials have a nonzero bank.
-\1Special::
-IF _NARG == 1
- dba \1
-ELSE
- dbw \2, \1
-ENDC
-ENDM
+;add_special: MACRO
+;; Some ROM0 specials have a nonzero bank.
+;\1Special::
+;IF _NARG == 1
+; dba \1
+;ELSE
+; dbw \2, \1
+;ENDC
+;ENDM
enum ptcallasm_command
ptcallasm: macro
diff --git a/macros/map.asm b/macros/map.asm
deleted file mode 100644
index 2e876577..00000000
--- a/macros/map.asm
+++ /dev/null
@@ -1,189 +0,0 @@
-map: MACRO
- db GROUP_\1, MAP_\1
-ENDM
-
-roam_map: MACRO
-; A map and an arbitrary number of some more maps.
-
- map \1
- db \2
-
- rept \2
- map \3
- shift
- endr
-
- db 0
-ENDM
-
-person_event: macro
- db \1 ; sprite
- db \2 + 4 ; y
- db \3 + 4 ; x
- db \4 ; movement function
- dn \5, \6 ; radius: y, x
- db \7 ; clock_hour
- db \8 ; clock_daytime
- shift
- dn \8, \9 ; color_function
- shift
- db \9 ; sight_range
- shift
- dw \9 ; pointer
- shift
- dw \9 ; event flag
- endm
-
-signpost: macro
- db \1 ; y
- db \2 ; x
- db \3 ; function
- dw \4 ; pointer
- endm
-
-xy_trigger: macro
- db \1 ; number
- db \2 ; y
- db \3 ; x
- db \4 ; unknown1
- dw \5 ; script
- db \6 ; unknown2
- db \7 ; unknown3
- endm
-
-warp_def: macro
- db \1 ; y
- db \2 ; x
- db \3 ; warp_to
- map \4 ; map
- endm
-
-
-map_header: MACRO
- ; label, tileset, permission, location, music, phone service flag, time of day, fishing group
-\1_MapHeader:
- db BANK(\1_SecondMapHeader), \2, \3
- dw \1_SecondMapHeader
- db \4, \5
- dn \6, \7
- db \8
-ENDM
-
-
-map_header_2: MACRO
-; label, map, border block, connections
-\1_SecondMapHeader::
- db \3
- db \2_HEIGHT, \2_WIDTH
- db BANK(\1_BlockData)
- dw \1_BlockData
- db BANK(\1_MapScriptHeader)
- dw \1_MapScriptHeader
- dw \1_MapEventHeader
- db \4
-ENDM
-
-connection: MACRO
-if "\1" == "north"
-;\2: map id
-;\3: map label (eventually will be rolled into map id)
-;\4: x
-;\5: offset?
-;\6: strip length
-;\7: this map id
- map \2
- dw \3_BlockData + \2_WIDTH * (\2_HEIGHT - 3) + \5
- dw OverworldMap + \4 + 3
- db \6
- db \2_WIDTH
- db \2_HEIGHT * 2 - 1
- db (\4 - \5) * -2
- dw OverworldMap + \2_HEIGHT * (\2_WIDTH + 6) + 1
-endc
-
-if "\1" == "south"
-;\2: map id
-;\3: map label (eventually will be rolled into map id)
-;\4: x
-;\5: offset?
-;\6: strip length
-;\7: this map id
- map \2
- dw \3_BlockData + \5
- dw OverworldMap + (\7_HEIGHT + 3) * (\7_WIDTH + 6) + \4 + 3
- db \6
- db \2_WIDTH
- db 0
- db (\4 - \5) * -2
- dw OverworldMap + \2_WIDTH + 7
-endc
-
-if "\1" == "west"
-;\2: map id
-;\3: map label (eventually will be rolled into map id)
-;\4: y
-;\5: offset?
-;\6: strip length
-;\7: this map id
- map \2
- dw \3_BlockData + (\2_WIDTH * \5) + \2_WIDTH - 3
- dw OverworldMap + (\7_WIDTH + 6) * (\4 + 3)
- db \6
- db \2_WIDTH
- db (\4 - \5) * -2
- db \2_WIDTH * 2 - 1
- dw OverworldMap + \2_WIDTH * 2 + 6
-endc
-
-if "\1" == "east"
-;\2: map id
-;\3: map label (eventually will be rolled into map id)
-;\4: y
-;\5: offset?
-;\6: strip length
-;\7: this map id
- map \2
- dw \3_BlockData + (\2_WIDTH * \5)
- dw OverworldMap + (\7_WIDTH + 6) * (\4 + 3 + 1) - 3
- db \6
- db \2_WIDTH
- db (\4 - \5) * -2
- db 0
- dw OverworldMap + \2_WIDTH + 7
-endc
-
-ENDM
-
-mapgroup: MACRO
-GROUP_\1 EQU const_value
- enum MAP_\1
-\1_HEIGHT EQU \2
-\1_WIDTH EQU \3
-ENDM
-
-newgroup: MACRO
-const_value = const_value + 1
- enum_start 1
-ENDM
-
-elevfloor: MACRO
- db \1, \2
- map \3
-ENDM
-
-itemball: MACRO
-if _NARG == 2
- db \1, \2
-else
- db \1, 1
-endc
-endm
-
-stonetable: MACRO
- db \1, \2
- dw \3
-endm
-
-maptrigger: MACRO
- dw \1, 0
-endm
diff --git a/macros/scripts/events.asm b/macros/scripts/events.asm
new file mode 100644
index 00000000..4740fd8a
--- /dev/null
+++ b/macros/scripts/events.asm
@@ -0,0 +1,1054 @@
+; ScriptCommandTable indexes (see engine/overworld/scripting.asm)
+ enum_start
+
+ enum scall_command ; $00
+scall: MACRO
+ db scall_command
+ dw \1 ; pointer
+ENDM
+
+ enum farscall_command ; $01
+farscall: MACRO
+ db farscall_command
+ dba \1
+ENDM
+
+ enum ptcall_command ; $02
+ptcall: MACRO
+ db ptcall_command
+ dw \1 ; pointer
+ENDM
+
+ enum jump_command ; $03
+jump: MACRO
+ db jump_command
+ dw \1 ; pointer
+ENDM
+
+ enum farjump_command ; $04
+farjump: MACRO
+ db farjump_command
+ dba \1
+ENDM
+
+ enum ptjump_command ; $05
+ptjump: MACRO
+ db ptjump_command
+ dw \1 ; pointer
+ENDM
+
+ enum ifequal_command ; $06
+ifequal: MACRO
+ db ifequal_command
+ db \1 ; byte
+ dw \2 ; pointer
+ENDM
+
+ enum ifnotequal_command ; $07
+ifnotequal: MACRO
+ db ifnotequal_command
+ db \1 ; byte
+ dw \2 ; pointer
+ENDM
+
+ enum iffalse_command ; $08
+iffalse: MACRO
+ db iffalse_command
+ dw \1 ; pointer
+ENDM
+
+ enum iftrue_command ; $09
+iftrue: MACRO
+ db iftrue_command
+ dw \1 ; pointer
+ENDM
+
+ enum ifgreater_command ; $0a
+ifgreater: MACRO
+ db ifgreater_command
+ db \1 ; byte
+ dw \2 ; pointer
+ENDM
+
+ enum ifless_command ; $0b
+ifless: MACRO
+ db ifless_command
+ db \1 ; byte
+ dw \2 ; pointer
+ENDM
+
+ enum jumpstd_command ; $0c
+jumpstd: MACRO
+ db jumpstd_command
+ dw \1 ; predefined_script
+ENDM
+
+ enum callstd_command ; $0d
+callstd: MACRO
+ db callstd_command
+ dw \1 ; predefined_script
+ENDM
+
+ enum callasm_command ; $0e
+callasm: MACRO
+ db callasm_command
+ dba \1
+ENDM
+
+ enum special_command ; $0f
+special: MACRO
+ db special_command
+ dw (\1Special - SpecialsPointers) / 3
+ENDM
+
+ enum ptcallasm_command ; $10
+ptcallasm: MACRO
+ db ptcallasm_command
+ dw \1 ; asm
+ENDM
+
+ enum checkmapscene_command ; $11
+checkmapscene: MACRO
+ db checkmapscene_command
+ map_id \1 ; map
+ENDM
+
+ enum setmapscene_command ; $12
+setmapscene: MACRO
+ db setmapscene_command
+ map_id \1 ; map
+ db \2 ; scene_id
+ENDM
+
+ enum checkscene_command ; $13
+checkscene: MACRO
+ db checkscene_command
+ENDM
+
+ enum setscene_command ; $14
+setscene: MACRO
+ db setscene_command
+ db \1 ; scene_id
+ENDM
+
+ enum writebyte_command ; $15
+writebyte: MACRO
+ db writebyte_command
+ db \1 ; value
+ENDM
+
+ enum addvar_command ; $16
+addvar: MACRO
+ db addvar_command
+ db \1 ; value
+ENDM
+
+ enum random_command ; $17
+random: MACRO
+ db random_command
+ db \1 ; input
+ENDM
+
+ enum checkver_command ; $18
+checkver: MACRO
+ db checkver_command
+ENDM
+
+ enum copybytetovar_command ; $19
+copybytetovar: MACRO
+ db copybytetovar_command
+ dw \1 ; address
+ENDM
+
+ enum copyvartobyte_command ; $1a
+copyvartobyte: MACRO
+ db copyvartobyte_command
+ dw \1 ; address
+ENDM
+
+ enum loadvar_command ; $1b
+loadvar: MACRO
+ db loadvar_command
+ dw \1 ; address
+ db \2 ; value
+ENDM
+
+ enum checkcode_command ; $1c
+checkcode: MACRO
+ db checkcode_command
+ db \1 ; variable_id
+ENDM
+
+ enum writevarcode_command ; $1d
+writevarcode: MACRO
+ db writevarcode_command
+ db \1 ; variable_id
+ENDM
+
+ enum writecode_command ; $1e
+writecode: MACRO
+ db writecode_command
+ db \1 ; variable_id
+ db \2 ; value
+ENDM
+
+ enum giveitem_command ; $1f
+giveitem: MACRO
+if _NARG == 1
+ giveitem \1, 1
+else
+ db giveitem_command
+ db \1 ; item
+ db \2 ; quantity
+endc
+ENDM
+
+ enum takeitem_command ; $20
+takeitem: MACRO
+if _NARG == 1
+ takeitem \1, 1
+else
+ db takeitem_command
+ db \1 ; item
+ db \2 ; quantity
+endc
+ENDM
+
+ enum checkitem_command ; $21
+checkitem: MACRO
+ db checkitem_command
+ db \1 ; item
+ENDM
+
+ enum givemoney_command ; $22
+givemoney: MACRO
+ db givemoney_command
+ db \1 ; account
+ dt \2 ; money
+ENDM
+
+ enum takemoney_command ; $23
+takemoney: MACRO
+ db takemoney_command
+ db \1 ; account
+ dt \2 ; money
+ENDM
+
+ enum checkmoney_command ; $24
+checkmoney: MACRO
+ db checkmoney_command
+ db \1 ; account
+ dt \2 ; money
+ENDM
+
+ enum givecoins_command ; $25
+givecoins: MACRO
+ db givecoins_command
+ dw \1 ; coins
+ENDM
+
+ enum takecoins_command ; $26
+takecoins: MACRO
+ db takecoins_command
+ dw \1 ; coins
+ENDM
+
+ enum checkcoins_command ; $27
+checkcoins: MACRO
+ db checkcoins_command
+ dw \1 ; coins
+ENDM
+
+ enum addcellnum_command ; $28
+addcellnum: MACRO
+ db addcellnum_command
+ db \1 ; person
+ENDM
+
+ enum delcellnum_command ; $29
+delcellnum: MACRO
+ db delcellnum_command
+ db \1 ; person
+ENDM
+
+ enum checkcellnum_command ; $2a
+checkcellnum: MACRO
+ db checkcellnum_command
+ db \1 ; person
+ENDM
+
+ enum checktime_command ; $2b
+checktime: MACRO
+ db checktime_command
+ db \1 ; time
+ENDM
+
+ enum checkpoke_command ; $2c
+checkpoke: MACRO
+ db checkpoke_command
+ db \1 ; pkmn
+ENDM
+
+ enum givepoke_command ; $2d
+givepoke: MACRO
+if _NARG == 2
+ givepoke \1, \2, NO_ITEM, FALSE
+elif _NARG == 3
+ givepoke \1, \2, \3, FALSE
+else
+ db givepoke_command
+ db \1 ; pokemon
+ db \2 ; level
+ db \3 ; item
+ db \4 ; trainer
+if \4
+ dw \5 ; trainer_name_pointer
+ dw \6 ; pkmn_nickname
+endc
+endc
+ENDM
+
+ enum giveegg_command ; $2e
+giveegg: MACRO
+ db giveegg_command
+ db \1 ; pkmn
+ db \2 ; level
+ENDM
+
+ enum givepokemail_command ; $2f
+givepokemail: MACRO
+ db givepokemail_command
+ dw \1 ; pointer
+ENDM
+
+ enum checkpokemail_command ; $30
+checkpokemail: MACRO
+ db checkpokemail_command
+ dw \1 ; pointer
+ENDM
+
+ enum checkevent_command ; $31
+checkevent: MACRO
+ db checkevent_command
+ dw \1 ; event_flag
+ENDM
+
+ enum clearevent_command ; $32
+clearevent: MACRO
+ db clearevent_command
+ dw \1 ; event_flag
+ENDM
+
+ enum setevent_command ; $33
+setevent: MACRO
+ db setevent_command
+ dw \1 ; event_flag
+ENDM
+
+ enum checkflag_command ; $34
+checkflag: MACRO
+ db checkflag_command
+ dw \1 ; engine_flag
+ENDM
+
+ enum clearflag_command ; $35
+clearflag: MACRO
+ db clearflag_command
+ dw \1 ; engine_flag
+ENDM
+
+ enum setflag_command ; $36
+setflag: MACRO
+ db setflag_command
+ dw \1 ; engine_flag
+ENDM
+
+ enum wildon_command ; $37
+wildon: MACRO
+ db wildon_command
+ENDM
+
+ enum wildoff_command ; $38
+wildoff: MACRO
+ db wildoff_command
+ENDM
+
+ enum xycompare_command ; $39
+xycompare: MACRO
+ db xycompare_command
+ dw \1 ; pointer
+ENDM
+
+ enum warpmod_command ; $3a
+warpmod: MACRO
+ db warpmod_command
+ db \1 ; warp_id
+ map_id \2 ; map
+ENDM
+
+ enum blackoutmod_command ; $3b
+blackoutmod: MACRO
+ db blackoutmod_command
+ map_id \1 ; map
+ENDM
+
+ enum warp_command ; $3c
+warp: MACRO
+ db warp_command
+ map_id \1 ; map
+ db \2 ; x
+ db \3 ; y
+ENDM
+
+ enum readmoney_command ; $3d
+readmoney: MACRO
+ db readmoney_command
+ db \1 ; account
+ db \2 ; memory
+ENDM
+
+ enum readcoins_command ; $3e
+readcoins: MACRO
+ db readcoins_command
+ db \1 ; memory
+ENDM
+
+ enum vartomem_command ; $3f
+vartomem: MACRO
+ db vartomem_command
+ db \1 ; memory
+ENDM
+
+ enum pokenamemem_command ; $40
+pokenamemem: MACRO
+ db pokenamemem_command
+ db \1 ; pokemon
+ db \2 ; memory
+ENDM
+
+ enum itemtotext_command ; $41
+itemtotext: MACRO
+ db itemtotext_command
+ db \1 ; item
+ db \2 ; memory
+ENDM
+
+ enum mapnametotext_command ; $42
+mapnametotext: MACRO
+ db mapnametotext_command
+ db \1 ; memory
+ENDM
+
+ enum trainertotext_command ; $43
+trainertotext: MACRO
+ db trainertotext_command
+ db \1 ; trainer_id
+ db \2 ; trainer_group
+ db \3 ; memory
+ENDM
+
+ enum stringtotext_command ; $44
+stringtotext: MACRO
+ db stringtotext_command
+ dw \1 ; text_pointer
+ db \2 ; memory
+ENDM
+
+ enum itemnotify_command ; $45
+itemnotify: MACRO
+ db itemnotify_command
+ENDM
+
+ enum pocketisfull_command ; $46
+pocketisfull: MACRO
+ db pocketisfull_command
+ENDM
+
+ enum opentext_command ; $47
+opentext: MACRO
+ db opentext_command
+ENDM
+
+ enum refreshscreen_command ; $48
+refreshscreen: MACRO
+if _NARG == 0
+ refreshscreen 0
+else
+ db refreshscreen_command
+ db \1 ; dummy
+endc
+ENDM
+
+ enum closetext_command ; $49
+closetext: MACRO
+ db closetext_command
+ENDM
+
+ enum loadbytec2cf_command ; $4a
+loadbytec2cf: MACRO
+ db loadbytec2cf_command
+ db \1 ; byte
+ENDM
+
+ enum farwritetext_command ; $4b
+farwritetext: MACRO
+ db farwritetext_command
+ dba \1
+ENDM
+
+ enum writetext_command ; $4c
+writetext: MACRO
+ db writetext_command
+ dw \1 ; text_pointer
+ENDM
+
+ enum repeattext_command ; $4d
+repeattext: MACRO
+ db repeattext_command
+ db \1 ; byte
+ db \2 ; byte
+ENDM
+
+ enum yesorno_command ; $4e
+yesorno: MACRO
+ db yesorno_command
+ENDM
+
+ enum loadmenu_command ; $4f
+loadmenu: MACRO
+ db loadmenu_command
+ dw \1 ; menu_header
+ENDM
+
+ enum closewindow_command ; $50
+closewindow: MACRO
+ db closewindow_command
+ENDM
+
+ enum jumptextfaceplayer_command ; $51
+jumptextfaceplayer: MACRO
+ db jumptextfaceplayer_command
+ dw \1 ; text_pointer
+ENDM
+
+ enum jumptext_command ; $53
+jumptext: MACRO
+ db jumptext_command
+ dw \1 ; text_pointer
+ENDM
+
+ enum waitbutton_command ; $54
+waitbutton: MACRO
+ db waitbutton_command
+ENDM
+
+ enum buttonsound_command ; $55
+buttonsound: MACRO
+ db buttonsound_command
+ENDM
+
+ enum pokepic_command ; $56
+pokepic: MACRO
+ db pokepic_command
+ db \1 ; pokemon
+ENDM
+
+ enum closepokepic_command ; $57
+closepokepic: MACRO
+ db closepokepic_command
+ENDM
+
+ enum _2dmenu_command ; $58
+_2dmenu: MACRO
+ db _2dmenu_command
+ENDM
+
+ enum verticalmenu_command ; $59
+verticalmenu: MACRO
+ db verticalmenu_command
+ENDM
+
+ enum loadpikachudata_command ; $5a
+loadpikachudata: MACRO
+ db loadpikachudata_command
+ENDM
+
+ enum randomwildmon_command ; $5b
+randomwildmon: MACRO
+ db randomwildmon_command
+ENDM
+
+ enum loadmemtrainer_command ; $5c
+loadmemtrainer: MACRO
+ db loadmemtrainer_command
+ENDM
+
+ enum loadwildmon_command ; $5d
+loadwildmon: MACRO
+ db loadwildmon_command
+ db \1 ; pokemon
+ db \2 ; level
+ENDM
+
+ enum loadtrainer_command ; $5e
+loadtrainer: MACRO
+ db loadtrainer_command
+ db \1 ; trainer_group
+ db \2 ; trainer_id
+ENDM
+
+ enum startbattle_command ; $5f
+startbattle: MACRO
+ db startbattle_command
+ENDM
+
+ enum reloadmapafterbattle_command ; $60
+reloadmapafterbattle: MACRO
+ db reloadmapafterbattle_command
+ENDM
+
+ enum catchtutorial_command ; $61
+catchtutorial: MACRO
+ db catchtutorial_command
+ db \1 ; byte
+ENDM
+
+ enum trainertext_command ; $62
+trainertext: MACRO
+ db trainertext_command
+ db \1 ; which_text
+ENDM
+
+ enum trainerflagaction_command ; $63
+trainerflagaction: MACRO
+ db trainerflagaction_command
+ db \1 ; action
+ENDM
+
+ enum winlosstext_command ; $64
+winlosstext: MACRO
+ db winlosstext_command
+ dw \1 ; win_text_pointer
+ dw \2 ; loss_text_pointer
+ENDM
+
+ enum scripttalkafter_command ; $65
+scripttalkafter: MACRO
+ db scripttalkafter_command
+ENDM
+
+ enum endifjustbattled_command ; $66
+endifjustbattled: MACRO
+ db endifjustbattled_command
+ENDM
+
+ enum checkjustbattled_command ; $67
+checkjustbattled: MACRO
+ db checkjustbattled_command
+ENDM
+
+ enum setlasttalked_command ; $68
+setlasttalked: MACRO
+ db setlasttalked_command
+ db \1 ; object id
+ENDM
+
+ enum applymovement_command ; $69
+applymovement: MACRO
+ db applymovement_command
+ db \1 ; object id
+ dw \2 ; data
+ENDM
+
+ enum applymovement2_command ; $6a
+applymovement2: MACRO
+ db applymovement2_command
+ dw \1 ; data
+ENDM
+
+ enum faceplayer_command ; $6b
+faceplayer: MACRO
+ db faceplayer_command
+ENDM
+
+ enum faceobject_command ; $6c
+faceobject: MACRO
+ db faceobject_command
+ db \1 ; object1
+ db \2 ; object2
+ENDM
+
+ enum variablesprite_command ; $6d
+variablesprite: MACRO
+ db variablesprite_command
+ db \1 - SPRITE_VARS ; byte
+ db \2 ; sprite
+ENDM
+
+ enum disappear_command ; $6e
+disappear: MACRO
+ db disappear_command
+ db \1 ; object id
+ENDM
+
+ enum appear_command ; $6f
+appear: MACRO
+ db appear_command
+ db \1 ; object id
+ENDM
+
+ enum follow_command ; $70
+follow: MACRO
+ db follow_command
+ db \1 ; object2
+ db \2 ; object1
+ENDM
+
+ enum stopfollow_command ; $71
+stopfollow: MACRO
+ db stopfollow_command
+ENDM
+
+ enum moveobject_command ; $72
+moveobject: MACRO
+ db moveobject_command
+ db \1 ; object id
+ db \2 ; x
+ db \3 ; y
+ENDM
+
+ enum writeobjectxy_command ; $73
+writeobjectxy: MACRO
+ db writeobjectxy_command
+ db \1 ; object id
+ENDM
+
+ enum loademote_command ; $74
+loademote: MACRO
+ db loademote_command
+ db \1 ; bubble
+ENDM
+
+ enum showemote_command ; $75
+showemote: MACRO
+ db showemote_command
+ db \1 ; bubble
+ db \2 ; object id
+ db \3 ; time
+ENDM
+
+ enum turnobject_command ; $76
+turnobject: MACRO
+ db turnobject_command
+ db \1 ; object id
+ db \2 ; facing
+ENDM
+
+ enum follownotexact_command ; $77
+follownotexact: MACRO
+ db follownotexact_command
+ db \1 ; object2
+ db \2 ; object1
+ENDM
+
+ enum earthquake_command ; $78
+earthquake: MACRO
+ db earthquake_command
+ db \1 ; param
+ENDM
+
+ enum changemap_command ; $79
+changemap: MACRO
+ db changemap_command
+ db \1 ; map_bank
+ dw \2 ; map_data_pointer
+ENDM
+
+ enum changeblock_command ; $7a
+changeblock: MACRO
+ db changeblock_command
+ db \1 ; x
+ db \2 ; y
+ db \3 ; block
+ENDM
+
+ enum reloadmap_command ; $7b
+reloadmap: MACRO
+ db reloadmap_command
+ENDM
+
+ enum reloadmappart_command ; $7c
+reloadmappart: MACRO
+ db reloadmappart_command
+ENDM
+
+ enum writecmdqueue_command ; $7d
+writecmdqueue: MACRO
+ db writecmdqueue_command
+ dw \1 ; queue_pointer
+ENDM
+
+ enum delcmdqueue_command ; $7e
+delcmdqueue: MACRO
+ db delcmdqueue_command
+ db \1 ; byte
+ENDM
+
+ enum playmusic_command ; $7f
+playmusic: MACRO
+ db playmusic_command
+ dw \1 ; music_pointer
+ENDM
+
+ enum encountermusic_command ; $80
+encountermusic: MACRO
+ db encountermusic_command
+ENDM
+
+ enum musicfadeout_command ; $81
+musicfadeout: MACRO
+ db musicfadeout_command
+ dw \1 ; music
+ db \2 ; fadetime
+ENDM
+
+ enum playmapmusic_command ; $82
+playmapmusic: MACRO
+ db playmapmusic_command
+ENDM
+
+ enum dontrestartmapmusic_command ; $83
+dontrestartmapmusic: MACRO
+ db dontrestartmapmusic_command
+ENDM
+
+ enum cry_command ; $84
+cry: MACRO
+ db cry_command
+ dw \1 ; cry_id
+ENDM
+
+ enum playsound_command ; $85
+playsound: MACRO
+ db playsound_command
+ dw \1 ; sound_pointer
+ENDM
+
+ enum waitsfx_command ; $86
+waitsfx: MACRO
+ db waitsfx_command
+ENDM
+
+ enum warpsound_command ; $87
+warpsound: MACRO
+ db warpsound_command
+ENDM
+
+ enum specialsound_command ; $88
+specialsound: MACRO
+ db specialsound_command
+ENDM
+
+ enum passtoengine_command ; $89
+passtoengine: MACRO
+ db passtoengine_command
+ db \1 ; data_pointer
+ENDM
+
+ enum newloadmap_command ; $8a
+newloadmap: MACRO
+ db newloadmap_command
+ db \1 ; which_method
+ENDM
+
+ enum pause_command ; $8b
+pause: MACRO
+ db pause_command
+ db \1 ; length
+ENDM
+
+ enum deactivatefacing_command ; $8c
+deactivatefacing: MACRO
+ db deactivatefacing_command
+ db \1 ; time
+ENDM
+
+ enum priorityjump_command ; $8d
+priorityjump: MACRO
+ db priorityjump_command
+ dw \1 ; pointer
+ENDM
+
+ enum warpcheck_command ; $8e
+warpcheck: MACRO
+ db warpcheck_command
+ENDM
+
+ enum ptpriorityjump_command ; $8f
+ptpriorityjump: MACRO
+ db ptpriorityjump_command
+ dw \1 ; pointer
+ENDM
+
+ enum return_command ; $90
+return: MACRO
+ db return_command
+ENDM
+
+ enum end_command ; $91
+end: MACRO
+ db end_command
+ENDM
+
+ enum reloadandreturn_command ; $92
+reloadandreturn: MACRO
+ db reloadandreturn_command
+ db \1 ; which_method
+ENDM
+
+ enum endall_command ; $93
+endall: MACRO
+ db endall_command
+ENDM
+
+ enum pokemart_command ; $94
+pokemart: MACRO
+ db pokemart_command
+ db \1 ; dialog_id
+ dw \2 ; mart_id
+ENDM
+
+ enum elevator_command ; $95
+elevator: MACRO
+ db elevator_command
+ dw \1 ; floor_list_pointer
+ENDM
+
+ enum trade_command ; $96
+trade: MACRO
+ db trade_command
+ db \1 ; trade_id
+ENDM
+
+ enum askforphonenumber_command ; $97
+askforphonenumber: MACRO
+ db askforphonenumber_command
+ db \1 ; number
+ENDM
+
+ enum phonecall_command ; $98
+phonecall: MACRO
+ db phonecall_command
+ dw \1 ; caller_name
+ENDM
+
+ enum hangup_command ; $99
+hangup: MACRO
+ db hangup_command
+ENDM
+
+ enum describedecoration_command ; $9a
+describedecoration: MACRO
+ db describedecoration_command
+ db \1 ; byte
+ENDM
+
+ enum fruittree_command ; $9b
+fruittree: MACRO
+ db fruittree_command
+ db \1 ; tree_id
+ENDM
+
+ enum specialphonecall_command ; $9c
+specialphonecall: MACRO
+ db specialphonecall_command
+ dw \1 ; call_id
+ENDM
+
+ enum checkphonecall_command ; $9d
+checkphonecall: MACRO
+ db checkphonecall_command
+ENDM
+
+ enum verbosegiveitem_command ; $9e
+verbosegiveitem: MACRO
+if _NARG == 1
+ verbosegiveitem \1, 1
+else
+ db verbosegiveitem_command
+ db \1 ; item
+ db \2 ; quantity
+endc
+ENDM
+
+ enum verbosegiveitem2_command ; $9f
+verbosegiveitem2: MACRO
+ db verbosegiveitem2_command
+ db \1 ; item
+ db \2 ; var
+ENDM
+
+ enum swarm_command ; $a0
+swarm: MACRO
+ db swarm_command
+ db \1 ; flag
+ map_id \2 ; map
+ENDM
+
+ enum halloffame_command ; $a1
+halloffame: MACRO
+ db halloffame_command
+ENDM
+
+ enum credits_command ; $a2
+credits: MACRO
+ db credits_command
+ENDM
+
+ enum warpfacing_command ; $a3
+warpfacing: MACRO
+ db warpfacing_command
+ db \1 ; facing
+ map_id \2 ; map
+ db \3 ; x
+ db \4 ; y
+ENDM
+
+ enum battletowertext_command ; $a4
+battletowertext: MACRO
+ db battletowertext_command
+ db \1 ; memory
+ENDM
+
+ enum landmarktotext_command ; $a5
+landmarktotext: MACRO
+ db landmarktotext_command
+ db \1 ; id
+ db \2 ; memory
+ENDM
+
+ enum trainerclassname_command ; $a6
+trainerclassname: MACRO
+ db trainerclassname_command
+ db \1 ; id
+ db \2 ; memory
+ENDM
+
+ enum name_command ; $a7
+name: MACRO
+ db name_command
+ db \1 ; type
+ db \2 ; id
+ db \3 ; memory
+ENDM
+
+ enum wait_command ; $a8
+wait: MACRO
+ db wait_command
+ db \1 ; duration
+ENDM
+
+ enum checksave_command ; $a9
+checksave: MACRO
+ db checksave_command
+ENDM
diff --git a/macros/scripts/maps.asm b/macros/scripts/maps.asm
new file mode 100644
index 00000000..7f5947a5
--- /dev/null
+++ b/macros/scripts/maps.asm
@@ -0,0 +1,132 @@
+map_id: MACRO
+;\1: map id
+ db GROUP_\1, MAP_\1
+ENDM
+
+scene_script: MACRO
+;\1: script pointer
+ dw \1
+ dw 0 ; filler
+ENDM
+
+callback: MACRO
+;\1: type: a MAPCALLBACK_* constant
+;\2: script pointer
+ dbw \1, \2
+ENDM
+
+warp_event: MACRO
+;\1: x: left to right, starts at 0
+;\2: y: top to bottom, starts at 0
+;\3: map id: from constants/map_constants.asm
+;\4: warp destination: starts at 1
+ db \2, \1, \4
+ map_id \3
+ENDM
+
+coord_event: MACRO
+;\1: x: left to right, starts at 0
+;\2: y: top to bottom, starts at 0
+;\3: scene id: a SCENE_* constant; controlled by setscene/setmapscene
+;\4: script pointer
+ db \3, \2, \1
+ db 0 ; filler
+ dw \4
+ db 0, 0 ; filler
+ENDM
+
+bg_event: MACRO
+;\1: x: left to right, starts at 0
+;\2: y: top to bottom, starts at 0
+;\3: function: a BGEVENT_* constant
+;\4: script pointer
+ db \2, \1, \3
+ dw \4
+ENDM
+
+object_event: MACRO
+;\1: x: left to right, starts at 0
+;\2: y: top to bottom, starts at 0
+;\3: sprite: a SPRITE_* constant
+;\4: movement function: a SPRITEMOVEDATA_* constant
+;\5, \6: movement radius: x, y
+;\7, \8: hour limits: h1, h2 (0-23)
+; * if h1 < h2, the object_event will only appear from h1 to h2
+; * if h1 > h2, the object_event will not appear from h2 to h1
+; * if h1 == h2, the object_event will always appear
+; * if h1 == -1, h2 is treated as a time-of-day value:
+; a combo of MORN, DAY, and/or NITE, or -1 to always appear
+;\9: color: a PAL_NPC_* constant, or 0 for sprite default
+;\10: function: a OBJECTTYPE_* constant
+;\11: sight range: applies to OBJECTTYPE_TRAINER
+;\12: script pointer
+;\13: event flag: an EVENT_* constant, or -1 to always appear
+ db \3, \2 + 4, \1 + 4, \4
+ dn \6, \5
+ db \7, \8
+ shift
+ dn \8, \9
+ shift
+ db \9
+ shift
+ dw \9
+ shift
+ dw \9
+ENDM
+
+trainer: MACRO
+;\1: trainer group
+;\2: trainer id
+;\3: flag: an EVENT_BEAT_* constant
+;\4: seen text
+;\5: win text
+;\6: loss text
+;\7: after-battle text
+ dw \3
+ db \1, \2
+ dw \4, \5, \6, \7
+ENDM
+
+itemball: MACRO
+;\1: item: from constants/item_constants.asm
+;\2: quantity: default 1
+if _NARG == 1
+ itemball \1, 1
+else
+ db \1, \2
+endc
+ENDM
+
+hiddenitem: MACRO
+;\1: item: from constants/item_constants.asm
+;\2: flag: an EVENT_* constant
+ dwb \2, \1
+ENDM
+
+elevfloor: MACRO
+;\1: floor: a FLOOR_* constant
+;\2: warp destination: starts at 1
+;\3: map id
+ db \1, \2
+ map_id \3
+ENDM
+
+conditional_event: MACRO
+;\1: flag: an EVENT_* constant
+;\2: script pointer
+ dw \1, \2
+ENDM
+
+cmdqueue: MACRO
+;\1: type: a CMDQUEUE_* constant
+;\2: data pointer
+ dbw \1, \2
+ dw 0 ; filler
+ENDM
+
+stonetable: MACRO
+;\1: warp id
+;\2: object_event id
+;\3: script pointer
+ dbbw \1, \2, \3
+ENDM
diff --git a/macros/trainer.asm b/macros/trainer.asm
deleted file mode 100644
index 0fec28dc..00000000
--- a/macros/trainer.asm
+++ /dev/null
@@ -1,6 +0,0 @@
-trainer: MACRO
- ; flag, group, id, seen text, win text, lost text, talk-again text
- dw \1
- db \2, \3
- dw \4, \5, \6, \7
-ENDM
diff --git a/macros/wram.asm b/macros/wram.asm
index 97df2415..4da9654e 100755
--- a/macros/wram.asm
+++ b/macros/wram.asm
@@ -109,7 +109,7 @@ box: MACRO
\1Mon1:: box_struct \1Mon1
\1Mon2:: ds BOXMON_STRUCT_LENGTH * (MONS_PER_BOX +- 1)
\1MonOT:: ds NAME_LENGTH * MONS_PER_BOX
-\1MonNicknames:: ds PKMN_NAME_LENGTH * MONS_PER_BOX
+\1MonNicknames:: ds MON_NAME_LENGTH * MONS_PER_BOX
\1MonNicknamesEnd::
\1End:: ds 2 ; padding
ENDM
@@ -178,7 +178,7 @@ hof_mon: MACRO
\1ID:: ds 2
\1DVs:: ds 2
\1Level:: ds 1
-\1Nickname:: ds PKMN_NAME_LENGTH +- 1
+\1Nickname:: ds MON_NAME_LENGTH +- 1
\1End::
endm
@@ -211,8 +211,8 @@ ENDM
trademon: MACRO
\1Species:: ds 1 ; wc6d0 | wc702
-\1SpeciesName:: ds PKMN_NAME_LENGTH ; wc6d1 | wc703
-\1Nickname:: ds PKMN_NAME_LENGTH ; wc6dc | wc70e
+\1SpeciesName:: ds MON_NAME_LENGTH ; wc6d1 | wc703
+\1Nickname:: ds MON_NAME_LENGTH ; wc6dc | wc70e
\1SenderName:: ds NAME_LENGTH ; wc6e7 | wc719
\1OTName:: ds NAME_LENGTH ; wc6f2 | wc724
\1DVs:: ds 2 ; wc6fd | wc72f
diff --git a/main.asm b/main.asm
index 4d4f57da..9f8465b5 100644
--- a/main.asm
+++ b/main.asm
@@ -150,7 +150,7 @@ INCLUDE "engine/learn.asm"
CheckNickErrors:: ; 677e (1:677e)
push bc
push de
- ld b, PKMN_NAME_LENGTH
+ ld b, MON_NAME_LENGTH
.checkchar
ld a, [de]
cp "@"
@@ -317,7 +317,7 @@ ScrollBGMapPalettes:: ; 804f (2:404f)
INCLUDE "tilesets/palette_maps.asm"
Unknown85d7:
- rept NUM_MAP_GROUPS
+ rept 26 ; NUM_MAP_GROUPS
db PAL_BG_ROOF
endr
diff --git a/wram.asm b/wram.asm
index 2c02d32c..57009d30 100644
--- a/wram.asm
+++ b/wram.asm
@@ -1597,8 +1597,8 @@ wcae7:: ds 1 ; cae7
wEnemyMoveStruct:: move_struct wEnemyMoveStruct
wPlayerMoveStruct:: move_struct wPlayerMoveStruct
-wEnemyMonNick:: ds PKMN_NAME_LENGTH ; caf6
-wBattleMonNick:: ds PKMN_NAME_LENGTH ; cb01
+wEnemyMonNick:: ds MON_NAME_LENGTH ; caf6
+wBattleMonNick:: ds MON_NAME_LENGTH ; cb01
wBattleMon:: battle_struct wBattleMon ; cb0c
@@ -3687,12 +3687,12 @@ wPartyMon5OT:: ds NAME_LENGTH ; db76
wPartyMon6OT:: ds NAME_LENGTH ; db81
wPartyMonNicknames::
-wPartyMon1Nickname:: ds PKMN_NAME_LENGTH ; db8c
-wPartyMon2Nickname:: ds PKMN_NAME_LENGTH ; db97
-wPartyMon3Nickname:: ds PKMN_NAME_LENGTH ; dba2
-wPartyMon4Nickname:: ds PKMN_NAME_LENGTH ; dbad
-wPartyMon5Nickname:: ds PKMN_NAME_LENGTH ; dbb8
-wPartyMon6Nickname:: ds PKMN_NAME_LENGTH ; dbc3
+wPartyMon1Nickname:: ds MON_NAME_LENGTH ; db8c
+wPartyMon2Nickname:: ds MON_NAME_LENGTH ; db97
+wPartyMon3Nickname:: ds MON_NAME_LENGTH ; dba2
+wPartyMon4Nickname:: ds MON_NAME_LENGTH ; dbad
+wPartyMon5Nickname:: ds MON_NAME_LENGTH ; dbb8
+wPartyMon6Nickname:: ds MON_NAME_LENGTH ; dbc3
wdbce:: ds 1 ; dbce
wdbcf:: ds 1 ; dbcf
@@ -3942,12 +3942,12 @@ wOTPartyMon5OT:: ds NAME_LENGTH ; dea9
wOTPartyMon6OT:: ds NAME_LENGTH ; deb4
wOTPartyMonNicknames::
-wOTPartyMon1Nickname:: ds PKMN_NAME_LENGTH ; debf
-wOTPartyMon2Nickname:: ds PKMN_NAME_LENGTH ; deca
-wOTPartyMon3Nickname:: ds PKMN_NAME_LENGTH ; ded5
-wOTPartyMon4Nickname:: ds PKMN_NAME_LENGTH ; dee0
-wOTPartyMon5Nickname:: ds PKMN_NAME_LENGTH ; deeb
-wOTPartyMon6Nickname:: ds PKMN_NAME_LENGTH ; def6
+wOTPartyMon1Nickname:: ds MON_NAME_LENGTH ; debf
+wOTPartyMon2Nickname:: ds MON_NAME_LENGTH ; deca
+wOTPartyMon3Nickname:: ds MON_NAME_LENGTH ; ded5
+wOTPartyMon4Nickname:: ds MON_NAME_LENGTH ; dee0
+wOTPartyMon5Nickname:: ds MON_NAME_LENGTH ; deeb
+wOTPartyMon6Nickname:: ds MON_NAME_LENGTH ; def6
ENDU
wGameDataEnd::