summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCameron Hall <camthesaxman@users.noreply.github.com>2017-01-28 01:31:09 -0500
committerYamaArashi <YamaArashi@users.noreply.github.com>2017-01-27 22:31:09 -0800
commitb9f1143d3e9b32120cc62fcc7a822d3bca8ef976 (patch)
tree0eab82b1e5172ae6491c619a23b728031c00defe
parent0de796fad05702592c841b692e91506a94428752 (diff)
define more data in C (#220)
* define more data in C * correct typo in comments
-rw-r--r--constants/map_constants.inc1
-rw-r--r--data/battle_setup.s77
-rw-r--r--data/contest_painting.s102
-rw-r--r--data/heal_location.s29
-rw-r--r--data/intro.s112
-rw-r--r--data/starter_choose.s29
-rw-r--r--data/trainer_eye_trainers.inc58
-rw-r--r--include/map_constants.h1098
-rw-r--r--include/menu.h2
-rw-r--r--include/opponent_constants.h702
-rw-r--r--include/sprite.h17
-rw-r--r--include/starter_choose.h4
-rw-r--r--ld_script.txt7
-rw-r--r--src/battle_setup.c398
-rw-r--r--src/contest_painting.c140
-rw-r--r--src/heal_location.c33
-rw-r--r--src/intro.c377
-rw-r--r--src/starter_choose.c192
18 files changed, 2709 insertions, 669 deletions
diff --git a/constants/map_constants.inc b/constants/map_constants.inc
index d7a8a323e..6d92c5e65 100644
--- a/constants/map_constants.inc
+++ b/constants/map_constants.inc
@@ -461,3 +461,4 @@
new_map_group
map_group Route124_DivingTreasureHuntersHouse @ 33.0
+
diff --git a/data/battle_setup.s b/data/battle_setup.s
deleted file mode 100644
index eb790edf4..000000000
--- a/data/battle_setup.s
+++ /dev/null
@@ -1,77 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gBattleTransitionTable_Wild:: @ 839ACF8
- .byte 8, 9, 5, 10, 0, 10, 7, 6
-
-gBattleTransitionTable_Trainer:: @ 839AD00
- .byte 4, 11, 2, 3, 0, 10, 1, 6
-
- .align 2
-gTrainerBattleSpecs_0:: @ 839AD08
- .4byte gTrainerBattleMode, 0
- .4byte gTrainerBattleOpponent, 1
- .4byte gTrainerMapObjectLocalId, 1
- .4byte gTrainerIntroSpeech, 2
- .4byte gTrainerDefeatSpeech, 2
- .4byte gTrainerVictorySpeech, 5
- .4byte gTrainerCannotBattleSpeech, 5
- .4byte gTrainerBattleEndScript, 5
- .4byte gTrainerBattleScriptReturnAddress, 6
-
- .align 2
-gTrainerBattleSpecs_1:: @ 839AD50
- .4byte gTrainerBattleMode, 0
- .4byte gTrainerBattleOpponent, 1
- .4byte gTrainerMapObjectLocalId, 1
- .4byte gTrainerIntroSpeech, 2
- .4byte gTrainerDefeatSpeech, 2
- .4byte gTrainerVictorySpeech, 5
- .4byte gTrainerCannotBattleSpeech, 5
- .4byte gTrainerBattleEndScript, 2
- .4byte gTrainerBattleScriptReturnAddress, 6
-
- .align 2
-gTrainerBattleSpecs_2:: @ 839AD98
- .4byte gTrainerBattleMode, 0
- .4byte gTrainerBattleOpponent, 1
- .4byte gTrainerMapObjectLocalId, 1
- .4byte gTrainerIntroSpeech, 2
- .4byte gTrainerDefeatSpeech, 2
- .4byte gTrainerVictorySpeech, 5
- .4byte gTrainerCannotBattleSpeech, 2
- .4byte gTrainerBattleEndScript, 5
- .4byte gTrainerBattleScriptReturnAddress, 6
-
- .align 2
-gTrainerBattleSpecs_3:: @ 839ADE0
- .4byte gTrainerBattleMode, 0
- .4byte gTrainerBattleOpponent, 1
- .4byte gTrainerMapObjectLocalId, 1
- .4byte gTrainerIntroSpeech, 5
- .4byte gTrainerDefeatSpeech, 2
- .4byte gTrainerVictorySpeech, 5
- .4byte gTrainerCannotBattleSpeech, 5
- .4byte gTrainerBattleEndScript, 5
- .4byte gTrainerBattleScriptReturnAddress, 6
-
- .align 2
-gTrainerBattleSpecs_4:: @ 839AE28
- .4byte gTrainerBattleMode, 0
- .4byte gTrainerBattleOpponent, 1
- .4byte gTrainerMapObjectLocalId, 1
- .4byte gTrainerIntroSpeech, 2
- .4byte gTrainerDefeatSpeech, 2
- .4byte gTrainerVictorySpeech, 5
- .4byte gTrainerCannotBattleSpeech, 2
- .4byte gTrainerBattleEndScript, 2
- .4byte gTrainerBattleScriptReturnAddress, 6
-
-@ 839AE70
- .include "data/trainer_eye_trainers.inc"
-
- .align 2
-gBadgeFlags:: @ 839B1F0
- .2byte 0x0807, 0x0808, 0x0809, 0x080a, 0x080b, 0x080c, 0x080d, 0x080e
diff --git a/data/contest_painting.s b/data/contest_painting.s
deleted file mode 100644
index 071661cb4..000000000
--- a/data/contest_painting.s
+++ /dev/null
@@ -1,102 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gPictureFramePalettes:: @ 83EF198
- .incbin "graphics/picture_frame/bg0.gbapal"
- .incbin "graphics/picture_frame/bg1.gbapal"
- .incbin "graphics/picture_frame/bg2.gbapal"
- .incbin "graphics/picture_frame/bg3.gbapal"
- .incbin "graphics/picture_frame/bg4.gbapal"
- .incbin "graphics/picture_frame/bg5.gbapal"
- .space 10 * 32
-
- .align 2
-gPictureFrameTiles_0:: @ 83EF398
- .incbin "graphics/picture_frame/frame0.4bpp.rl"
-
- .align 2
-gPictureFrameTiles_1:: @ 83F041C
- .incbin "graphics/picture_frame/frame1.4bpp.rl"
-
- .align 2
-gPictureFrameTiles_2:: @ 83F104C
- .incbin "graphics/picture_frame/frame2.4bpp.rl"
-
- .align 2
-gPictureFrameTiles_3:: @ 83F1B84
- .incbin "graphics/picture_frame/frame3.4bpp.rl"
-
- .align 2
-gPictureFrameTiles_4:: @ 83F2B3C
- .incbin "graphics/picture_frame/frame4.4bpp.rl"
-
- .align 2
-gPictureFrameTiles_5:: @ 83F3C6C
- .incbin "graphics/picture_frame/frame5.4bpp.rl"
-
- .align 2
-gPictureFrameTilemap_0:: @ 83F4260
- .incbin "graphics/picture_frame/frame0_map.bin.rl"
-
- .align 2
-gPictureFrameTilemap_1:: @ 83F476C
- .incbin "graphics/picture_frame/frame1_map.bin.rl"
-
- .align 2
-gPictureFrameTilemap_2:: @ 83F4C78
- .incbin "graphics/picture_frame/frame2_map.bin.rl"
-
- .align 2
-gPictureFrameTilemap_3:: @ 83F5184
- .incbin "graphics/picture_frame/frame3_map.bin.rl"
-
- .align 2
-gPictureFrameTilemap_4:: @ 83F5690
- .incbin "graphics/picture_frame/frame4_map.bin.rl"
-
- .align 2
-gPictureFrameTilemap_5:: @ 83F5B9C
- .incbin "graphics/picture_frame/frame5_map.bin.rl"
-
- .align 2
-gUnknown_083F60AC:: @ 83F60AC
- .4byte OtherText_Cool
- .4byte OtherText_Beauty2
- .4byte OtherText_Cute
- .4byte OtherText_Smart
- .4byte OtherText_Tough
-
- .align 2
-gUnknown_083F60C0:: @ 83F60C0
- .4byte OtherText_NonstopSuperCool, OtherText_Terminator6
- .4byte OtherText_GoodLookingPoke, OtherText_Terminator7
- .4byte OtherText_MarvelousGreat, OtherText_Terminator8
-
- .4byte OtherText_CenturyLastVenus, OtherText_Terminator9
- .4byte OtherText_Terminator10, OtherText_DazzlingSlime
- .4byte OtherText_PokeCenterIdol, OtherText_Terminator11
-
- .4byte OtherText_LovelyAndSweet, OtherText_Terminator12
- .4byte OtherText_ThePretty, OtherText_WinningPortrait
- .4byte OtherText_GiveUsWink, OtherText_Terminator13
-
- .4byte OtherText_SmartnessMaestro, OtherText_Terminator15
- .4byte OtherText_ChosenPokeAmong, OtherText_Terminator15
- .4byte OtherText_TheExcellent, OtherText_ItsMomentOfElegance
-
- .4byte OtherText_PowerfullyMuscular, OtherText_Terminator16
- .4byte OtherText_StrongErEst, OtherText_Terminator17
- .4byte OtherText_MightyTough, OtherText_Exclamation
-
- .align 2
-gOamData_83F6138:: @ 83F6138
- .2byte 0x3000
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gUnknown_083F6140:: @ 83F6140
- .space 4
diff --git a/data/heal_location.s b/data/heal_location.s
deleted file mode 100644
index 101bec24f..000000000
--- a/data/heal_location.s
+++ /dev/null
@@ -1,29 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gHealLocations:: @ 83E5A20
- heal_location LittlerootTown_BrendansHouse_2F, 4, 2
- heal_location LittlerootTown_MaysHouse_2F, 4, 2
- heal_location PetalburgCity, 20, 17
- heal_location SlateportCity, 19, 20
- heal_location MauvilleCity, 22, 6
- heal_location RustboroCity, 16, 39
- heal_location FortreeCity, 5, 7
- heal_location LilycoveCity, 24, 15
- heal_location MossdeepCity, 28, 17
- heal_location SootopolisCity, 43, 32
- heal_location EverGrandeCity, 27, 49
- heal_location LittlerootTown, 5, 9
- heal_location LittlerootTown, 14, 9
- heal_location OldaleTown, 6, 17
- heal_location DewfordTown, 2, 11
- heal_location LavaridgeTown, 9, 7
- heal_location FallarborTown, 14, 8
- heal_location VerdanturfTown, 16, 4
- heal_location PacifidlogTown, 8, 16
- heal_location EverGrandeCity, 18, 6
- heal_location BattleTower_Outside, 14, 9
- heal_location SouthernIsland_Exterior, 15, 20
diff --git a/data/intro.s b/data/intro.s
deleted file mode 100644
index ed5daf33a..000000000
--- a/data/intro.s
+++ /dev/null
@@ -1,112 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gSpriteAnim_840B114:: @ 840B114
- obj_image_anim_frame 6, 8
- obj_image_anim_frame 6, 8, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnimTable_840B120:: @ 840B120
- .4byte gSpriteAnim_840B114
-
- .align 2
-gSpriteTemplate_840B124:: @ 840B124
- spr_template 2003, 2004, gOamData_840B10C, gSpriteAnimTable_840B120, NULL, gDummySpriteAffineAnimTable, sub_813E804
-
- .align 2
-gOamData_840B13C:: @ 840B13C
- .2byte 0x00A0
- .2byte 0x4000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B144:: @ 840B144
- obj_image_anim_frame 10, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B14C:: @ 840B14C
- .4byte gSpriteAnim_840B144
-
- .align 2
-gSpriteTemplate_840B150:: @ 840B150
- spr_template 2003, 2004, gOamData_840B13C, gSpriteAnimTable_840B14C, NULL, gDummySpriteAffineAnimTable, sub_813E980
-
-gUnknown_0840B168:: @ 840B168
- .incbin "baserom.gba", 0x0040b168, 0x8
-
- .align 2
-gSpriteTemplate_840B170:: @ 840B170
- spr_template 2003, 2004, gOamData_840B13C, gSpriteAnimTable_840B14C, NULL, gDummySpriteAffineAnimTable, sub_813EA60
-
-gUnknown_0840B188:: @ 840B188
- .incbin "baserom.gba", 0x0040b188, 0x14
-
- .align 2
-gOamData_840B19C:: @ 840B19C
- .2byte 0x00A0
- .2byte 0x4000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B1A4:: @ 840B1A4
- obj_image_anim_frame 2, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B1AC:: @ 840B1AC
- .4byte gSpriteAnim_840B1A4
-
- .align 2
-gSpriteTemplate_840B1B0:: @ 840B1B0
- spr_template 2003, 2004, gOamData_840B19C, gSpriteAnimTable_840B1AC, NULL, gDummySpriteAffineAnimTable, sub_813EBBC
-
- .align 2
-gSpriteTemplate_840B1C8:: @ 840B1C8
- spr_template 2003, 2004, gOamData_840B19C, gSpriteAnimTable_840B1AC, NULL, gDummySpriteAffineAnimTable, sub_813EC90
-
- .align 2
-gOamData_840B1E0:: @ 840B1E0
- .2byte 0x00A0
- .2byte 0xC000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_840B1E8:: @ 840B1E8
- obj_image_anim_frame 16, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B1F0:: @ 840B1F0
- .4byte gSpriteAnim_840B1E8
-
- .align 2
-gSpriteTemplate_840B1F4:: @ 840B1F4
- spr_template 2003, 2003, gOamData_840B1E0, gSpriteAnimTable_840B1F0, NULL, gDummySpriteAffineAnimTable, sub_813EDFC
-
- .align 2
-gIntro3PokeballGfx_Table:: @ 840B20C
- obj_tiles gInterfaceGfx_PokeBall, 0x100, 2002
- .space 8
-
- .align 2
-gIntro3MiscGfx_Table:: @ 840B21C
- obj_tiles gIntro3MiscTiles, 0xa00, 2003
- .space 8
-
- .align 2
-gInterfacePokeballPal_Table:: @ 840B22C
- obj_pal gInterfacePal_PokeBall, 2002
- .space 8
-
- .align 2
-gIntro3MiscPal_Table:: @ 840B23C
- obj_pal gIntro3Misc1Palette, 2003
- obj_pal gIntro3Misc2Palette, 2004
- .space 8
-
- .incbin "baserom.gba", 0x0040b254, 0x4
diff --git a/data/starter_choose.s b/data/starter_choose.s
deleted file mode 100644
index 123d1e5fe..000000000
--- a/data/starter_choose.s
+++ /dev/null
@@ -1,29 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_083F7794:: @ 83F7794
- obj_tiles gBirchBallarrow_Gfx, 0x0800, 0x1000
- .space 8
-
-gUnknown_083F77A4:: @ 83F77A4
- obj_tiles gBirchCircle_Gfx, 0x0800, 0x1001
- .space 8
-
-gUnknown_083F77B4:: @ 83F77B4
- obj_pal gBirchBallarrow_Pal, 0x1000
- obj_pal gBirchCircle_Pal, 0x1001
- .space 8
-
- .align 2
-gSpriteTemplate_83F77CC:: @ 83F77CC
- spr_template 4096, 4096, gOamData_83F76CC, gSpriteAnimTable_83F774C, NULL, gDummySpriteAffineAnimTable, sub_810A62C
-
- .align 2
-gSpriteTemplate_83F77E4:: @ 83F77E4
- spr_template 4096, 4096, gOamData_83F76D4, gSpriteAnimTable_83F7750, NULL, gDummySpriteAffineAnimTable, sub_810A68C
-
- .align 2
-gSpriteTemplate_83F77FC:: @ 83F77FC
- spr_template 4097, 4097, gOamData_83F76DC, gSpriteAnimTable_83F7758, NULL, gSpriteAffineAnimTable_83F7790, StarterPokemonSpriteAnimCallback
diff --git a/data/trainer_eye_trainers.inc b/data/trainer_eye_trainers.inc
deleted file mode 100644
index 3628ea598..000000000
--- a/data/trainer_eye_trainers.inc
+++ /dev/null
@@ -1,58 +0,0 @@
- .align 2
-gTrainerEyeTrainers:: @ 839AE70
- trainer_eye_trainer ROSE_1, ROSE_2, ROSE_3, ROSE_4, ROSE_5, Route118
- trainer_eye_trainer DUSTY_1, DUSTY_2, DUSTY_3, DUSTY_4, DUSTY_5, Route111
- trainer_eye_trainer LOLA_1, LOLA_2, LOLA_3, LOLA_4, LOLA_5, Route109
- trainer_eye_trainer RICKY_1, RICKY_2, RICKY_3, RICKY_4, RICKY_5, Route109
- trainer_eye_trainer RITA_AND_SAM_1, RITA_AND_SAM_2, RITA_AND_SAM_3, RITA_AND_SAM_4, RITA_AND_SAM_5, Route124
- trainer_eye_trainer BROOKE_1, BROOKE_2, BROOKE_3, BROOKE_4, BROOKE_5, Route111
- trainer_eye_trainer WILTON_1, WILTON_2, WILTON_3, WILTON_4, WILTON_5, Route111
- trainer_eye_trainer VALERIE_1, VALERIE_2, VALERIE_3, VALERIE_4, VALERIE_5, MtPyre_6F
- trainer_eye_trainer CINDY_1, CINDY_3, CINDY_4, CINDY_5, CINDY_6, Route104
- trainer_eye_trainer JESSICA_1, JESSICA_2, JESSICA_3, JESSICA_4, JESSICA_5, Route121
- trainer_eye_trainer WINSTON_1, WINSTON_2, WINSTON_3, WINSTON_4, WINSTON_5, Route104
- trainer_eye_trainer STEVE_1, STEVE_2, STEVE_3, STEVE_4, STEVE_5, Route114
- trainer_eye_trainer TONY_1, TONY_2, TONY_3, TONY_4, TONY_5, Route107
- trainer_eye_trainer NOB_1, NOB_2, NOB_3, NOB_4, NOB_5, Route115
- trainer_eye_trainer DALTON_1, DALTON_2, DALTON_3, DALTON_4, DALTON_5, Route118
- trainer_eye_trainer BERNIE_1, BERNIE_2, BERNIE_3, BERNIE_4, BERNIE_5, Route114
- trainer_eye_trainer ETHAN_1, ETHAN_2, ETHAN_3, ETHAN_4, ETHAN_5, JaggedPass
- trainer_eye_trainer JOHN_AND_JAY_1, JOHN_AND_JAY_2, JOHN_AND_JAY_3, JOHN_AND_JAY_4, JOHN_AND_JAY_5, MeteorFalls_1F_2R
- trainer_eye_trainer BRANDON_1, BRANDON_2, BRANDON_3, BRANDON_4, BRANDON_5, Route120
- trainer_eye_trainer CAMERON_1, CAMERON_2, CAMERON_3, CAMERON_4, CAMERON_5, Route123
- trainer_eye_trainer JACKI_1, JACKI_2, JACKI_3, JACKI_4, JACKI_5, Route123
- trainer_eye_trainer WALTER_1, WALTER_2, WALTER_3, WALTER_4, WALTER_5, Route121
- trainer_eye_trainer KAREN_1, KAREN_2, KAREN_3, KAREN_4, KAREN_5, Route116
- trainer_eye_trainer JERRY_1, JERRY_2, JERRY_3, JERRY_4, JERRY_5, Route116
- trainer_eye_trainer ANNA_AND_MEG_1, ANNA_AND_MEG_2, ANNA_AND_MEG_3, ANNA_AND_MEG_4, ANNA_AND_MEG_5, Route117
- trainer_eye_trainer ISABEL_1, ISABEL_2, ISABEL_3, ISABEL_4, ISABEL_5, Route110
- trainer_eye_trainer MIGUEL_1, MIGUEL_2, MIGUEL_3, MIGUEL_4, MIGUEL_5, Route103
- trainer_eye_trainer TIMOTHY_1, TIMOTHY_2, TIMOTHY_3, TIMOTHY_4, TIMOTHY_5, Route115
- trainer_eye_trainer SHELBY_1, SHELBY_2, SHELBY_3, SHELBY_4, SHELBY_5, MtChimney
- trainer_eye_trainer CALVIN_1, CALVIN_2, CALVIN_3, CALVIN_4, CALVIN_5, Route102
- trainer_eye_trainer ELLIOT_1, ELLIOT_2, ELLIOT_3, ELLIOT_4, ELLIOT_5, Route106
- trainer_eye_trainer ABIGAIL_1, ABIGAIL_2, ABIGAIL_3, ABIGAIL_4, ABIGAIL_5, Route110
- trainer_eye_trainer BENJAMIN_1, BENJAMIN_2, BENJAMIN_3, BENJAMIN_4, BENJAMIN_5, Route110
- trainer_eye_trainer ISAIAH_1, ISAIAH_2, ISAIAH_3, ISAIAH_4, ISAIAH_5, Route128
- trainer_eye_trainer KATELYN_1, KATELYN_2, KATELYN_3, KATELYN_4, KATELYN_5, Route128
- trainer_eye_trainer MARIA_1, MARIA_2, MARIA_3, MARIA_4, MARIA_5, Route117
- trainer_eye_trainer DYLAN_1, DYLAN_2, DYLAN_3, DYLAN_4, DYLAN_5, Route117
- trainer_eye_trainer NICOLAS_1, NICOLAS_2, NICOLAS_3, NICOLAS_4, NICOLAS_5, MeteorFalls_1F_2R
- trainer_eye_trainer ROBERT_1, ROBERT_2, ROBERT_3, ROBERT_4, ROBERT_5, Route120
- trainer_eye_trainer LAO_1, LAO_2, LAO_3, LAO_4, LAO_5, Route113
- trainer_eye_trainer CYNDY_1, CYNDY_2, CYNDY_3, CYNDY_4, CYNDY_5, Route115
- trainer_eye_trainer MADELINE_1, MADELINE_2, MADELINE_3, MADELINE_4, MADELINE_5, Route113
- trainer_eye_trainer JENNY_1, JENNY_2, JENNY_3, JENNY_4, JENNY_5, Route124
- trainer_eye_trainer DIANA_1, DIANA_2, DIANA_3, DIANA_4, DIANA_5, JaggedPass
- trainer_eye_trainer AMY_AND_LIV_1, AMY_AND_LIV_2, AMY_AND_LIV_4, AMY_AND_LIV_5, AMY_AND_LIV_6, Route103
- trainer_eye_trainer ERNEST_1, ERNEST_2, ERNEST_3, ERNEST_4, ERNEST_5, Route125
- trainer_eye_trainer EDWIN_1, EDWIN_2, EDWIN_3, EDWIN_4, EDWIN_5, Route110
- trainer_eye_trainer LYDIA_1, LYDIA_2, LYDIA_3, LYDIA_4, LYDIA_5, Route117
- trainer_eye_trainer ISAAC_1, ISAAC_2, ISAAC_3, ISAAC_4, ISAAC_5, Route117
- trainer_eye_trainer CATHERINE_1, CATHERINE_2, CATHERINE_3, CATHERINE_4, CATHERINE_5, Route119
- trainer_eye_trainer JACKSON_1, JACKSON_2, JACKSON_3, JACKSON_4, JACKSON_5, Route119
- trainer_eye_trainer HALEY_1, HALEY_2, HALEY_3, HALEY_4, HALEY_5, Route104
- trainer_eye_trainer JAMES_1, JAMES_2, JAMES_3, JAMES_4, JAMES_5, PetalburgWoods
- trainer_eye_trainer TRENT_1, TRENT_2, TRENT_3, TRENT_4, TRENT_5, Route112
- trainer_eye_trainer LOIS_AND_HAL_1, LOIS_AND_HAL_2, LOIS_AND_HAL_3, LOIS_AND_HAL_4, LOIS_AND_HAL_5, AbandonedShip_Rooms2_1F
- trainer_eye_trainer WALLY_3, WALLY_4, WALLY_5, WALLY_6, NONE, VictoryRoad_1F
diff --git a/include/map_constants.h b/include/map_constants.h
new file mode 100644
index 000000000..f525f43a3
--- /dev/null
+++ b/include/map_constants.h
@@ -0,0 +1,1098 @@
+#ifndef GUARD_MAP_CONSTANTS_H
+#define GUARD_MAP_CONSTANTS_H
+
+//--------------------------------------------------
+// Map Group 0
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_PETALBURG_CITY,
+ MAP_ID_SLATEPORT_CITY,
+ MAP_ID_MAUVILLE_CITY,
+ MAP_ID_RUSTBORO_CITY,
+ MAP_ID_FORTREE_CITY,
+ MAP_ID_LILYCOVE_CITY,
+ MAP_ID_MOSSDEEP_CITY,
+ MAP_ID_SOOTOPOLIS_CITY,
+ MAP_ID_EVER_GRANDE_CITY,
+ MAP_ID_LITTLEROOT_TOWN,
+ MAP_ID_OLDALE_TOWN,
+ MAP_ID_DEWFORD_TOWN,
+ MAP_ID_LAVARIDGE_TOWN,
+ MAP_ID_FALLARBOR_TOWN,
+ MAP_ID_VERDANTURF_TOWN,
+ MAP_ID_PACIFIDLOG_TOWN,
+ MAP_ID_ROUTE101,
+ MAP_ID_ROUTE102,
+ MAP_ID_ROUTE103,
+ MAP_ID_ROUTE104,
+ MAP_ID_ROUTE105,
+ MAP_ID_ROUTE106,
+ MAP_ID_ROUTE107,
+ MAP_ID_ROUTE108,
+ MAP_ID_ROUTE109,
+ MAP_ID_ROUTE110,
+ MAP_ID_ROUTE111,
+ MAP_ID_ROUTE112,
+ MAP_ID_ROUTE113,
+ MAP_ID_ROUTE114,
+ MAP_ID_ROUTE115,
+ MAP_ID_ROUTE116,
+ MAP_ID_ROUTE117,
+ MAP_ID_ROUTE118,
+ MAP_ID_ROUTE119,
+ MAP_ID_ROUTE120,
+ MAP_ID_ROUTE121,
+ MAP_ID_ROUTE122,
+ MAP_ID_ROUTE123,
+ MAP_ID_ROUTE124,
+ MAP_ID_ROUTE125,
+ MAP_ID_ROUTE126,
+ MAP_ID_ROUTE127,
+ MAP_ID_ROUTE128,
+ MAP_ID_ROUTE129,
+ MAP_ID_ROUTE130,
+ MAP_ID_ROUTE131,
+ MAP_ID_ROUTE132,
+ MAP_ID_ROUTE133,
+ MAP_ID_ROUTE134,
+ MAP_ID_UNDERWATER1,
+ MAP_ID_UNDERWATER2,
+ MAP_ID_UNDERWATER3,
+ MAP_ID_UNDERWATER4,
+};
+
+#define MAP_GROUP_PETALBURG_CITY 0
+#define MAP_GROUP_SLATEPORT_CITY 0
+#define MAP_GROUP_MAUVILLE_CITY 0
+#define MAP_GROUP_RUSTBORO_CITY 0
+#define MAP_GROUP_FORTREE_CITY 0
+#define MAP_GROUP_LILYCOVE_CITY 0
+#define MAP_GROUP_MOSSDEEP_CITY 0
+#define MAP_GROUP_SOOTOPOLIS_CITY 0
+#define MAP_GROUP_EVER_GRANDE_CITY 0
+#define MAP_GROUP_LITTLEROOT_TOWN 0
+#define MAP_GROUP_OLDALE_TOWN 0
+#define MAP_GROUP_DEWFORD_TOWN 0
+#define MAP_GROUP_LAVARIDGE_TOWN 0
+#define MAP_GROUP_FALLARBOR_TOWN 0
+#define MAP_GROUP_VERDANTURF_TOWN 0
+#define MAP_GROUP_PACIFIDLOG_TOWN 0
+#define MAP_GROUP_ROUTE101 0
+#define MAP_GROUP_ROUTE102 0
+#define MAP_GROUP_ROUTE103 0
+#define MAP_GROUP_ROUTE104 0
+#define MAP_GROUP_ROUTE105 0
+#define MAP_GROUP_ROUTE106 0
+#define MAP_GROUP_ROUTE107 0
+#define MAP_GROUP_ROUTE108 0
+#define MAP_GROUP_ROUTE109 0
+#define MAP_GROUP_ROUTE110 0
+#define MAP_GROUP_ROUTE111 0
+#define MAP_GROUP_ROUTE112 0
+#define MAP_GROUP_ROUTE113 0
+#define MAP_GROUP_ROUTE114 0
+#define MAP_GROUP_ROUTE115 0
+#define MAP_GROUP_ROUTE116 0
+#define MAP_GROUP_ROUTE117 0
+#define MAP_GROUP_ROUTE118 0
+#define MAP_GROUP_ROUTE119 0
+#define MAP_GROUP_ROUTE120 0
+#define MAP_GROUP_ROUTE121 0
+#define MAP_GROUP_ROUTE122 0
+#define MAP_GROUP_ROUTE123 0
+#define MAP_GROUP_ROUTE124 0
+#define MAP_GROUP_ROUTE125 0
+#define MAP_GROUP_ROUTE126 0
+#define MAP_GROUP_ROUTE127 0
+#define MAP_GROUP_ROUTE128 0
+#define MAP_GROUP_ROUTE129 0
+#define MAP_GROUP_ROUTE130 0
+#define MAP_GROUP_ROUTE131 0
+#define MAP_GROUP_ROUTE132 0
+#define MAP_GROUP_ROUTE133 0
+#define MAP_GROUP_ROUTE134 0
+#define MAP_GROUP_UNDERWATER1 0
+#define MAP_GROUP_UNDERWATER2 0
+#define MAP_GROUP_UNDERWATER3 0
+#define MAP_GROUP_UNDERWATER4 0
+
+//--------------------------------------------------
+// Map Group 1
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F,
+ MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F,
+ MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F,
+ MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_2F,
+ MAP_ID_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB,
+};
+
+#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_1F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_2F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB 1
+
+//--------------------------------------------------
+// Map Group 2
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_OLDALE_TOWN_HOUSE1,
+ MAP_ID_OLDALE_TOWN_HOUSE2,
+ MAP_ID_OLDALE_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_OLDALE_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_OLDALE_TOWN_MART,
+};
+
+#define MAP_GROUP_OLDALE_TOWN_HOUSE1 2
+#define MAP_GROUP_OLDALE_TOWN_HOUSE2 2
+#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_1F 2
+#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_2F 2
+#define MAP_GROUP_OLDALE_TOWN_MART 2
+
+//--------------------------------------------------
+// Map Group 3
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_DEWFORD_TOWN_HOUSE1,
+ MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_DEWFORD_TOWN_GYM,
+ MAP_ID_DEWFORD_TOWN_HALL,
+ MAP_ID_DEWFORD_TOWN_HOUSE2,
+};
+
+#define MAP_GROUP_DEWFORD_TOWN_HOUSE1 3
+#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_1F 3
+#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_2F 3
+#define MAP_GROUP_DEWFORD_TOWN_GYM 3
+#define MAP_GROUP_DEWFORD_TOWN_HALL 3
+#define MAP_GROUP_DEWFORD_TOWN_HOUSE2 3
+
+//--------------------------------------------------
+// Map Group 4
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_LAVARIDGE_TOWN_HERB_SHOP,
+ MAP_ID_LAVARIDGE_TOWN_GYM_1F,
+ MAP_ID_LAVARIDGE_TOWN_GYM_B1F,
+ MAP_ID_LAVARIDGE_TOWN_HOUSE,
+ MAP_ID_LAVARIDGE_TOWN_MART,
+ MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_2F,
+};
+
+#define MAP_GROUP_LAVARIDGE_TOWN_HERB_SHOP 4
+#define MAP_GROUP_LAVARIDGE_TOWN_GYM_1F 4
+#define MAP_GROUP_LAVARIDGE_TOWN_GYM_B1F 4
+#define MAP_GROUP_LAVARIDGE_TOWN_HOUSE 4
+#define MAP_GROUP_LAVARIDGE_TOWN_MART 4
+#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_1F 4
+#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_2F 4
+
+//--------------------------------------------------
+// Map Group 5
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_FALLARBOR_TOWN_MART,
+ MAP_ID_FALLARBOR_TOWN_CONTEST_LOBBY,
+ MAP_ID_FALLARBOR_TOWN_CONTEST_HALL,
+ MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_FALLARBOR_TOWN_HOUSE1,
+ MAP_ID_FALLARBOR_TOWN_HOUSE2,
+};
+
+#define MAP_GROUP_FALLARBOR_TOWN_MART 5
+#define MAP_GROUP_FALLARBOR_TOWN_CONTEST_LOBBY 5
+#define MAP_GROUP_FALLARBOR_TOWN_CONTEST_HALL 5
+#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_1F 5
+#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_2F 5
+#define MAP_GROUP_FALLARBOR_TOWN_HOUSE1 5
+#define MAP_GROUP_FALLARBOR_TOWN_HOUSE2 5
+
+//--------------------------------------------------
+// Map Group 6
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_VERDANTURF_TOWN_CONTEST_LOBBY,
+ MAP_ID_VERDANTURF_TOWN_CONTEST_HALL,
+ MAP_ID_VERDANTURF_TOWN_MART,
+ MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_VERDANTURF_TOWN_WANDAS_HOUSE,
+ MAP_ID_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE,
+ MAP_ID_VERDANTURF_TOWN_HOUSE,
+};
+
+#define MAP_GROUP_VERDANTURF_TOWN_CONTEST_LOBBY 6
+#define MAP_GROUP_VERDANTURF_TOWN_CONTEST_HALL 6
+#define MAP_GROUP_VERDANTURF_TOWN_MART 6
+#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_1F 6
+#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_2F 6
+#define MAP_GROUP_VERDANTURF_TOWN_WANDAS_HOUSE 6
+#define MAP_GROUP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE 6
+#define MAP_GROUP_VERDANTURF_TOWN_HOUSE 6
+
+//--------------------------------------------------
+// Map Group 7
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE1,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE2,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE3,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE4,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE5,
+};
+
+#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE1 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE2 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE3 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE4 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE5 7
+
+//--------------------------------------------------
+// Map Group 8
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_PETALBURG_CITY_WALLYS_HOUSE,
+ MAP_ID_PETALBURG_CITY_GYM,
+ MAP_ID_PETALBURG_CITY_HOUSE1,
+ MAP_ID_PETALBURG_CITY_HOUSE2,
+ MAP_ID_PETALBURG_CITY_POKEMON_CENTER_1F,
+ MAP_ID_PETALBURG_CITY_POKEMON_CENTER_2F,
+ MAP_ID_PETALBURG_CITY_MART,
+};
+
+#define MAP_GROUP_PETALBURG_CITY_WALLYS_HOUSE 8
+#define MAP_GROUP_PETALBURG_CITY_GYM 8
+#define MAP_GROUP_PETALBURG_CITY_HOUSE1 8
+#define MAP_GROUP_PETALBURG_CITY_HOUSE2 8
+#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_1F 8
+#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_2F 8
+#define MAP_GROUP_PETALBURG_CITY_MART 8
+
+//--------------------------------------------------
+// Map Group 9
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_1F,
+ MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_2F,
+ MAP_ID_SLATEPORT_CITY_CONTEST_LOBBY,
+ MAP_ID_SLATEPORT_CITY_CONTEST_HALL,
+ MAP_ID_SLATEPORT_CITY_HOUSE1,
+ MAP_ID_SLATEPORT_CITY_POKEMON_FAN_CLUB,
+ MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_1F,
+ MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_2F,
+ MAP_ID_SLATEPORT_CITY_HARBOR,
+ MAP_ID_SLATEPORT_CITY_HOUSE2,
+ MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_1F,
+ MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_2F,
+ MAP_ID_SLATEPORT_CITY_MART,
+};
+
+#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_1F 9
+#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_2F 9
+#define MAP_GROUP_SLATEPORT_CITY_CONTEST_LOBBY 9
+#define MAP_GROUP_SLATEPORT_CITY_CONTEST_HALL 9
+#define MAP_GROUP_SLATEPORT_CITY_HOUSE1 9
+#define MAP_GROUP_SLATEPORT_CITY_POKEMON_FAN_CLUB 9
+#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F 9
+#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F 9
+#define MAP_GROUP_SLATEPORT_CITY_HARBOR 9
+#define MAP_GROUP_SLATEPORT_CITY_HOUSE2 9
+#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_1F 9
+#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_2F 9
+#define MAP_GROUP_SLATEPORT_CITY_MART 9
+
+//--------------------------------------------------
+// Map Group 10
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_MAUVILLE_CITY_GYM,
+ MAP_ID_MAUVILLE_CITY_BIKE_SHOP,
+ MAP_ID_MAUVILLE_CITY_HOUSE1,
+ MAP_ID_MAUVILLE_CITY_GAME_CORNER,
+ MAP_ID_MAUVILLE_CITY_HOUSE2,
+ MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_2F,
+ MAP_ID_MAUVILLE_CITY_MART,
+};
+
+#define MAP_GROUP_MAUVILLE_CITY_GYM 10
+#define MAP_GROUP_MAUVILLE_CITY_BIKE_SHOP 10
+#define MAP_GROUP_MAUVILLE_CITY_HOUSE1 10
+#define MAP_GROUP_MAUVILLE_CITY_GAME_CORNER 10
+#define MAP_GROUP_MAUVILLE_CITY_HOUSE2 10
+#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_1F 10
+#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_2F 10
+#define MAP_GROUP_MAUVILLE_CITY_MART 10
+
+//--------------------------------------------------
+// Map Group 11
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_RUSTBORO_CITY_DEVON_CORP_1F,
+ MAP_ID_RUSTBORO_CITY_DEVON_CORP_2F,
+ MAP_ID_RUSTBORO_CITY_DEVON_CORP_3F,
+ MAP_ID_RUSTBORO_CITY_GYM,
+ MAP_ID_RUSTBORO_CITY_POKEMON_SCHOOL,
+ MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_1F,
+ MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_2F,
+ MAP_ID_RUSTBORO_CITY_MART,
+ MAP_ID_RUSTBORO_CITY_FLAT1_1F,
+ MAP_ID_RUSTBORO_CITY_FLAT1_2F,
+ MAP_ID_RUSTBORO_CITY_HOUSE1,
+ MAP_ID_RUSTBORO_CITY_CUTTERS_HOUSE,
+ MAP_ID_RUSTBORO_CITY_HOUSE2,
+ MAP_ID_RUSTBORO_CITY_FLAT2_1F,
+ MAP_ID_RUSTBORO_CITY_FLAT2_2F,
+ MAP_ID_RUSTBORO_CITY_FLAT2_3F,
+ MAP_ID_RUSTBORO_CITY_HOUSE3,
+};
+
+#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_3F 11
+#define MAP_GROUP_RUSTBORO_CITY_GYM 11
+#define MAP_GROUP_RUSTBORO_CITY_POKEMON_SCHOOL 11
+#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_MART 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT1_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT1_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_HOUSE1 11
+#define MAP_GROUP_RUSTBORO_CITY_CUTTERS_HOUSE 11
+#define MAP_GROUP_RUSTBORO_CITY_HOUSE2 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT2_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT2_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT2_3F 11
+#define MAP_GROUP_RUSTBORO_CITY_HOUSE3 11
+
+//--------------------------------------------------
+// Map Group 12
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_FORTREE_CITY_HOUSE1,
+ MAP_ID_FORTREE_CITY_GYM,
+ MAP_ID_FORTREE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_FORTREE_CITY_POKEMON_CENTER_2F,
+ MAP_ID_FORTREE_CITY_MART,
+ MAP_ID_FORTREE_CITY_HOUSE2,
+ MAP_ID_FORTREE_CITY_HOUSE3,
+ MAP_ID_FORTREE_CITY_HOUSE4,
+ MAP_ID_FORTREE_CITY_HOUSE5,
+ MAP_ID_FORTREE_CITY_DECORATION_SHOP,
+};
+
+#define MAP_GROUP_FORTREE_CITY_HOUSE1 12
+#define MAP_GROUP_FORTREE_CITY_GYM 12
+#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_1F 12
+#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_2F 12
+#define MAP_GROUP_FORTREE_CITY_MART 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE2 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE3 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE4 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE5 12
+#define MAP_GROUP_FORTREE_CITY_DECORATION_SHOP 12
+
+//--------------------------------------------------
+// Map Group 13
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F,
+ MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_2F,
+ MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F,
+ MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F,
+ MAP_ID_LILYCOVE_CITY_CONTEST_LOBBY,
+ MAP_ID_LILYCOVE_CITY_CONTEST_HALL,
+ MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_2F,
+ MAP_ID_LILYCOVE_CITY_UNUSED_MART,
+ MAP_ID_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB,
+ MAP_ID_LILYCOVE_CITY_HARBOR,
+ MAP_ID_LILYCOVE_CITY_EMPTY_MAP,
+ MAP_ID_LILYCOVE_CITY_MOVE_DELETERS_HOUSE,
+ MAP_ID_LILYCOVE_CITY_HOUSE1,
+ MAP_ID_LILYCOVE_CITY_HOUSE2,
+ MAP_ID_LILYCOVE_CITY_HOUSE3,
+ MAP_ID_LILYCOVE_CITY_HOUSE4,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_1F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_2F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_3F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_4F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_5F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR,
+};
+
+#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_CONTEST_LOBBY 13
+#define MAP_GROUP_LILYCOVE_CITY_CONTEST_HALL 13
+#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_UNUSED_MART 13
+#define MAP_GROUP_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB 13
+#define MAP_GROUP_LILYCOVE_CITY_HARBOR 13
+#define MAP_GROUP_LILYCOVE_CITY_EMPTY_MAP 13
+#define MAP_GROUP_LILYCOVE_CITY_MOVE_DELETERS_HOUSE 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE1 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE2 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE3 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE4 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_3F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_4F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_5F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR 13
+
+//--------------------------------------------------
+// Map Group 14
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_MOSSDEEP_CITY_GYM,
+ MAP_ID_MOSSDEEP_CITY_HOUSE1,
+ MAP_ID_MOSSDEEP_CITY_HOUSE2,
+ MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_1F,
+ MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_2F,
+ MAP_ID_MOSSDEEP_CITY_MART,
+ MAP_ID_MOSSDEEP_CITY_HOUSE3,
+ MAP_ID_MOSSDEEP_CITY_STEVENS_HOUSE,
+ MAP_ID_MOSSDEEP_CITY_HOUSE4,
+ MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_1F,
+ MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_2F,
+ MAP_ID_MOSSDEEP_CITY_GAME_CORNER_1F,
+ MAP_ID_MOSSDEEP_CITY_GAME_CORNER_B1F,
+};
+
+#define MAP_GROUP_MOSSDEEP_CITY_GYM 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE1 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE2 14
+#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_1F 14
+#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_2F 14
+#define MAP_GROUP_MOSSDEEP_CITY_MART 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE3 14
+#define MAP_GROUP_MOSSDEEP_CITY_STEVENS_HOUSE 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE4 14
+#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_1F 14
+#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_2F 14
+#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_1F 14
+#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_B1F 14
+
+//--------------------------------------------------
+// Map Group 15
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SOOTOPOLIS_CITY_GYM_1F,
+ MAP_ID_SOOTOPOLIS_CITY_GYM_B1F,
+ MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_1F,
+ MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_2F,
+ MAP_ID_SOOTOPOLIS_CITY_MART,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE1,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE2,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE3,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE4,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE5,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE6,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE7,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE8,
+};
+
+#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_1F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_B1F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_MART 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE1 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE2 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE3 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE4 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE5 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE6 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE7 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE8 15
+
+//--------------------------------------------------
+// Map Group 16
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_EVER_GRANDE_CITY_SIDNEYS_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_PHOEBES_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_GLACIAS_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_DRAKES_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_CHAMPIONS_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR1,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR2,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR3,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR4,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR5,
+ MAP_ID_EVER_GRANDE_CITY_POKEMON_LEAGUE,
+ MAP_ID_EVER_GRANDE_CITY_HALL_OF_FAME,
+ MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_2F,
+};
+
+#define MAP_GROUP_EVER_GRANDE_CITY_SIDNEYS_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_PHOEBES_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_GLACIAS_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_DRAKES_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CHAMPIONS_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR1 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR2 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR3 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR4 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR5 16
+#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_LEAGUE 16
+#define MAP_GROUP_EVER_GRANDE_CITY_HALL_OF_FAME 16
+#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_1F 16
+#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_2F 16
+
+//--------------------------------------------------
+// Map Group 17
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE104_MR_BRINEYS_HOUSE,
+ MAP_ID_ROUTE104_PRETTY_PETAL_FLOWER_SHOP,
+};
+
+#define MAP_GROUP_ROUTE104_MR_BRINEYS_HOUSE 17
+#define MAP_GROUP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP 17
+
+//--------------------------------------------------
+// Map Group 18
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE111_WINSTRATE_FAMILYS_HOUSE,
+ MAP_ID_ROUTE111_OLD_LADYS_REST_STOP,
+};
+
+#define MAP_GROUP_ROUTE111_WINSTRATE_FAMILYS_HOUSE 18
+#define MAP_GROUP_ROUTE111_OLD_LADYS_REST_STOP 18
+
+//--------------------------------------------------
+// Map Group 19
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE112_CABLE_CAR_STATION,
+ MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION,
+};
+
+#define MAP_GROUP_ROUTE112_CABLE_CAR_STATION 19
+#define MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION 19
+
+//--------------------------------------------------
+// Map Group 20
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE114_FOSSIL_MANIACS_HOUSE,
+ MAP_ID_ROUTE114_FOSSIL_MANIACS_TUNNEL,
+ MAP_ID_ROUTE114_LANETTES_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_HOUSE 20
+#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_TUNNEL 20
+#define MAP_GROUP_ROUTE114_LANETTES_HOUSE 20
+
+//--------------------------------------------------
+// Map Group 21
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE116_TUNNELERS_REST_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE116_TUNNELERS_REST_HOUSE 21
+
+//--------------------------------------------------
+// Map Group 22
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE117_POKEMON_DAY_CARE,
+};
+
+#define MAP_GROUP_ROUTE117_POKEMON_DAY_CARE 22
+
+//--------------------------------------------------
+// Map Group 23
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE121_SAFARI_ZONE_ENTRANCE,
+};
+
+#define MAP_GROUP_ROUTE121_SAFARI_ZONE_ENTRANCE 23
+
+//--------------------------------------------------
+// Map Group 24
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_METEOR_FALLS_1F_1R,
+ MAP_ID_METEOR_FALLS_1F_2R,
+ MAP_ID_METEOR_FALLS_B1F_1R,
+ MAP_ID_METEOR_FALLS_B1F_2R,
+ MAP_ID_RUSTURF_TUNNEL,
+ MAP_ID_UNDERWATER_SOOTOPOLIS_CITY,
+ MAP_ID_DESERT_RUINS,
+ MAP_ID_GRANITE_CAVE_1F,
+ MAP_ID_GRANITE_CAVE_B1F,
+ MAP_ID_GRANITE_CAVE_B2F,
+ MAP_ID_GRANITE_CAVE_STEVENS_ROOM,
+ MAP_ID_PETALBURG_WOODS,
+ MAP_ID_MT_CHIMNEY,
+ MAP_ID_JAGGED_PASS,
+ MAP_ID_FIERY_PATH,
+ MAP_ID_MT_PYRE_1F,
+ MAP_ID_MT_PYRE_2F,
+ MAP_ID_MT_PYRE_3F,
+ MAP_ID_MT_PYRE_4F,
+ MAP_ID_MT_PYRE_5F,
+ MAP_ID_MT_PYRE_6F,
+ MAP_ID_MT_PYRE_EXTERIOR,
+ MAP_ID_MT_PYRE_SUMMIT,
+ MAP_ID_AQUA_HIDEOUT_1F,
+ MAP_ID_AQUA_HIDEOUT_B1F,
+ MAP_ID_AQUA_HIDEOUT_B2F,
+ MAP_ID_UNDERWATER_SEAFLOOR_CAVERN,
+ MAP_ID_SEAFLOOR_CAVERN_ENTRANCE,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM1,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM2,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM3,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM4,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM5,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM6,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM7,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM8,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM9,
+ MAP_ID_CAVE_OF_ORIGIN_ENTRANCE,
+ MAP_ID_CAVE_OF_ORIGIN_1F,
+ MAP_ID_CAVE_OF_ORIGIN_B1F,
+ MAP_ID_CAVE_OF_ORIGIN_B2F,
+ MAP_ID_CAVE_OF_ORIGIN_B3F,
+ MAP_ID_CAVE_OF_ORIGIN_B4F,
+ MAP_ID_VICTORY_ROAD_1F,
+ MAP_ID_VICTORY_ROAD_B1F,
+ MAP_ID_VICTORY_ROAD_B2F,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_INNER_ROOM,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM,
+ MAP_ID_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM,
+ MAP_ID_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM,
+ MAP_ID_NEW_MAUVILLE_ENTRANCE,
+ MAP_ID_NEW_MAUVILLE_INSIDE,
+ MAP_ID_ABANDONED_SHIP_DECK,
+ MAP_ID_ABANDONED_SHIP_CORRIDORS_1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS_1F,
+ MAP_ID_ABANDONED_SHIP_CORRIDORS_B1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS_B1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS2_B1F,
+ MAP_ID_ABANDONED_SHIP_UNDERWATER1,
+ MAP_ID_ABANDONED_SHIP_ROOM_B1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS2_1F,
+ MAP_ID_ABANDONED_SHIP_CAPTAINS_OFFICE,
+ MAP_ID_ABANDONED_SHIP_UNDERWATER2,
+ MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS,
+ MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS,
+ MAP_ID_ISLAND_CAVE,
+ MAP_ID_ANCIENT_TOMB,
+ MAP_ID_UNDERWATER_ROUTE134,
+ MAP_ID_UNDERWATER_SEALED_CHAMBER,
+ MAP_ID_SEALED_CHAMBER_OUTER_ROOM,
+ MAP_ID_SEALED_CHAMBER_INNER_ROOM,
+ MAP_ID_SCORCHED_SLAB,
+ MAP_ID_MAGMA_HIDEOUT_1F,
+ MAP_ID_MAGMA_HIDEOUT_B1F,
+ MAP_ID_MAGMA_HIDEOUT_B2F,
+ MAP_ID_SKY_PILLAR_ENTRANCE,
+ MAP_ID_SKY_PILLAR_OUTSIDE,
+ MAP_ID_SKY_PILLAR_1F,
+ MAP_ID_SKY_PILLAR_2F,
+ MAP_ID_SKY_PILLAR_3F,
+ MAP_ID_SKY_PILLAR_4F,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_ICE_ROOM,
+ MAP_ID_SKY_PILLAR_5F,
+ MAP_ID_SKY_PILLAR_TOP,
+};
+
+#define MAP_GROUP_METEOR_FALLS_1F_1R 24
+#define MAP_GROUP_METEOR_FALLS_1F_2R 24
+#define MAP_GROUP_METEOR_FALLS_B1F_1R 24
+#define MAP_GROUP_METEOR_FALLS_B1F_2R 24
+#define MAP_GROUP_RUSTURF_TUNNEL 24
+#define MAP_GROUP_UNDERWATER_SOOTOPOLIS_CITY 24
+#define MAP_GROUP_DESERT_RUINS 24
+#define MAP_GROUP_GRANITE_CAVE_1F 24
+#define MAP_GROUP_GRANITE_CAVE_B1F 24
+#define MAP_GROUP_GRANITE_CAVE_B2F 24
+#define MAP_GROUP_GRANITE_CAVE_STEVENS_ROOM 24
+#define MAP_GROUP_PETALBURG_WOODS 24
+#define MAP_GROUP_MT_CHIMNEY 24
+#define MAP_GROUP_JAGGED_PASS 24
+#define MAP_GROUP_FIERY_PATH 24
+#define MAP_GROUP_MT_PYRE_1F 24
+#define MAP_GROUP_MT_PYRE_2F 24
+#define MAP_GROUP_MT_PYRE_3F 24
+#define MAP_GROUP_MT_PYRE_4F 24
+#define MAP_GROUP_MT_PYRE_5F 24
+#define MAP_GROUP_MT_PYRE_6F 24
+#define MAP_GROUP_MT_PYRE_EXTERIOR 24
+#define MAP_GROUP_MT_PYRE_SUMMIT 24
+#define MAP_GROUP_AQUA_HIDEOUT_1F 24
+#define MAP_GROUP_AQUA_HIDEOUT_B1F 24
+#define MAP_GROUP_AQUA_HIDEOUT_B2F 24
+#define MAP_GROUP_UNDERWATER_SEAFLOOR_CAVERN 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ENTRANCE 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM1 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM2 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM3 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM4 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM5 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM6 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM7 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM8 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM9 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_ENTRANCE 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_1F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B1F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B2F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B3F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B4F 24
+#define MAP_GROUP_VICTORY_ROAD_1F 24
+#define MAP_GROUP_VICTORY_ROAD_B1F 24
+#define MAP_GROUP_VICTORY_ROAD_B2F 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM 24
+#define MAP_GROUP_NEW_MAUVILLE_ENTRANCE 24
+#define MAP_GROUP_NEW_MAUVILLE_INSIDE 24
+#define MAP_GROUP_ABANDONED_SHIP_DECK 24
+#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS_1F 24
+#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER1 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOM_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_1F 24
+#define MAP_GROUP_ABANDONED_SHIP_CAPTAINS_OFFICE 24
+#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER2 24
+#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS 24
+#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS 24
+#define MAP_GROUP_ISLAND_CAVE 24
+#define MAP_GROUP_ANCIENT_TOMB 24
+#define MAP_GROUP_UNDERWATER_ROUTE134 24
+#define MAP_GROUP_UNDERWATER_SEALED_CHAMBER 24
+#define MAP_GROUP_SEALED_CHAMBER_OUTER_ROOM 24
+#define MAP_GROUP_SEALED_CHAMBER_INNER_ROOM 24
+#define MAP_GROUP_SCORCHED_SLAB 24
+#define MAP_GROUP_MAGMA_HIDEOUT_1F 24
+#define MAP_GROUP_MAGMA_HIDEOUT_B1F 24
+#define MAP_GROUP_MAGMA_HIDEOUT_B2F 24
+#define MAP_GROUP_SKY_PILLAR_ENTRANCE 24
+#define MAP_GROUP_SKY_PILLAR_OUTSIDE 24
+#define MAP_GROUP_SKY_PILLAR_1F 24
+#define MAP_GROUP_SKY_PILLAR_2F 24
+#define MAP_GROUP_SKY_PILLAR_3F 24
+#define MAP_GROUP_SKY_PILLAR_4F 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM 24
+#define MAP_GROUP_SKY_PILLAR_5F 24
+#define MAP_GROUP_SKY_PILLAR_TOP 24
+
+//--------------------------------------------------
+// Map Group 25
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SECRET_BASE_RED_CAVE1,
+ MAP_ID_SECRET_BASE_BROWN_CAVE1,
+ MAP_ID_SECRET_BASE_BLUE_CAVE1,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE1,
+ MAP_ID_SECRET_BASE_TREE1,
+ MAP_ID_SECRET_BASE_SHRUB1,
+ MAP_ID_SECRET_BASE_RED_CAVE2,
+ MAP_ID_SECRET_BASE_BROWN_CAVE2,
+ MAP_ID_SECRET_BASE_BLUE_CAVE2,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE2,
+ MAP_ID_SECRET_BASE_TREE2,
+ MAP_ID_SECRET_BASE_SHRUB2,
+ MAP_ID_SECRET_BASE_RED_CAVE3,
+ MAP_ID_SECRET_BASE_BROWN_CAVE3,
+ MAP_ID_SECRET_BASE_BLUE_CAVE3,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE3,
+ MAP_ID_SECRET_BASE_TREE3,
+ MAP_ID_SECRET_BASE_SHRUB3,
+ MAP_ID_SECRET_BASE_RED_CAVE4,
+ MAP_ID_SECRET_BASE_BROWN_CAVE4,
+ MAP_ID_SECRET_BASE_BLUE_CAVE4,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE4,
+ MAP_ID_SECRET_BASE_TREE4,
+ MAP_ID_SECRET_BASE_SHRUB4,
+ MAP_ID_SINGLE_BATTLE_COLOSSEUM,
+ MAP_ID_TRADE_CENTER,
+ MAP_ID_RECORD_CORNER,
+ MAP_ID_DOUBLE_BATTLE_COLOSSEUM,
+ MAP_ID_LINK_CONTEST_ROOM1,
+ MAP_ID_UNKNOWN_MAP_25_29,
+ MAP_ID_UNKNOWN_MAP_25_30,
+ MAP_ID_UNKNOWN_MAP_25_31,
+ MAP_ID_UNKNOWN_MAP_25_32,
+ MAP_ID_UNKNOWN_MAP_25_33,
+ MAP_ID_UNKNOWN_MAP_25_34,
+ MAP_ID_LINK_CONTEST_ROOM2,
+ MAP_ID_LINK_CONTEST_ROOM3,
+ MAP_ID_LINK_CONTEST_ROOM4,
+ MAP_ID_LINK_CONTEST_ROOM5,
+ MAP_ID_LINK_CONTEST_ROOM6,
+ MAP_ID_INSIDE_OF_TRUCK,
+ MAP_ID_SS_TIDAL_CORRIDOR,
+ MAP_ID_SS_TIDAL_LOWER_DECK,
+ MAP_ID_SS_TIDAL_ROOMS,
+};
+
+#define MAP_GROUP_SECRET_BASE_RED_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_TREE1 25
+#define MAP_GROUP_SECRET_BASE_SHRUB1 25
+#define MAP_GROUP_SECRET_BASE_RED_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_TREE2 25
+#define MAP_GROUP_SECRET_BASE_SHRUB2 25
+#define MAP_GROUP_SECRET_BASE_RED_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_TREE3 25
+#define MAP_GROUP_SECRET_BASE_SHRUB3 25
+#define MAP_GROUP_SECRET_BASE_RED_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_TREE4 25
+#define MAP_GROUP_SECRET_BASE_SHRUB4 25
+#define MAP_GROUP_SINGLE_BATTLE_COLOSSEUM 25
+#define MAP_GROUP_TRADE_CENTER 25
+#define MAP_GROUP_RECORD_CORNER 25
+#define MAP_GROUP_DOUBLE_BATTLE_COLOSSEUM 25
+#define MAP_GROUP_LINK_CONTEST_ROOM1 25
+#define MAP_GROUP_UNKNOWN_MAP_25_29 25
+#define MAP_GROUP_UNKNOWN_MAP_25_30 25
+#define MAP_GROUP_UNKNOWN_MAP_25_31 25
+#define MAP_GROUP_UNKNOWN_MAP_25_32 25
+#define MAP_GROUP_UNKNOWN_MAP_25_33 25
+#define MAP_GROUP_UNKNOWN_MAP_25_34 25
+#define MAP_GROUP_LINK_CONTEST_ROOM2 25
+#define MAP_GROUP_LINK_CONTEST_ROOM3 25
+#define MAP_GROUP_LINK_CONTEST_ROOM4 25
+#define MAP_GROUP_LINK_CONTEST_ROOM5 25
+#define MAP_GROUP_LINK_CONTEST_ROOM6 25
+#define MAP_GROUP_INSIDE_OF_TRUCK 25
+#define MAP_GROUP_SS_TIDAL_CORRIDOR 25
+#define MAP_GROUP_SS_TIDAL_LOWER_DECK 25
+#define MAP_GROUP_SS_TIDAL_ROOMS 25
+
+//--------------------------------------------------
+// Map Group 26
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SAFARI_ZONE_NORTHWEST,
+ MAP_ID_SAFARI_ZONE_NORTHEAST,
+ MAP_ID_SAFARI_ZONE_SOUTHWEST,
+ MAP_ID_SAFARI_ZONE_SOUTHEAST,
+ MAP_ID_BATTLE_TOWER_OUTSIDE,
+ MAP_ID_BATTLE_TOWER_LOBBY,
+ MAP_ID_BATTLE_TOWER_ELEVATOR,
+ MAP_ID_BATTLE_TOWER_CORRIDOR,
+ MAP_ID_BATTLE_TOWER_BATTLE_ROOM,
+ MAP_ID_SOUTHERN_ISLAND_EXTERIOR,
+ MAP_ID_SOUTHERN_ISLAND_INTERIOR,
+ MAP_ID_SAFARI_ZONE_REST_HOUSE,
+};
+
+#define MAP_GROUP_SAFARI_ZONE_NORTHWEST 26
+#define MAP_GROUP_SAFARI_ZONE_NORTHEAST 26
+#define MAP_GROUP_SAFARI_ZONE_SOUTHWEST 26
+#define MAP_GROUP_SAFARI_ZONE_SOUTHEAST 26
+#define MAP_GROUP_BATTLE_TOWER_OUTSIDE 26
+#define MAP_GROUP_BATTLE_TOWER_LOBBY 26
+#define MAP_GROUP_BATTLE_TOWER_ELEVATOR 26
+#define MAP_GROUP_BATTLE_TOWER_CORRIDOR 26
+#define MAP_GROUP_BATTLE_TOWER_BATTLE_ROOM 26
+#define MAP_GROUP_SOUTHERN_ISLAND_EXTERIOR 26
+#define MAP_GROUP_SOUTHERN_ISLAND_INTERIOR 26
+#define MAP_GROUP_SAFARI_ZONE_REST_HOUSE 26
+
+//--------------------------------------------------
+// Map Group 27
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE104_PROTOTYPE,
+ MAP_ID_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP,
+};
+
+#define MAP_GROUP_ROUTE104_PROTOTYPE 27
+#define MAP_GROUP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP 27
+
+//--------------------------------------------------
+// Map Group 28
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE109_SEASHORE_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE109_SEASHORE_HOUSE 28
+
+//--------------------------------------------------
+// Map Group 29
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE110_TRICK_HOUSE_ENTRANCE,
+ MAP_ID_ROUTE110_TRICK_HOUSE_END,
+ MAP_ID_ROUTE110_TRICK_HOUSE_CORRIDOR,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE1,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE2,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE3,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE4,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE5,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE6,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE7,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE8,
+ MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE,
+ MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE,
+};
+
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_ENTRANCE 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_END 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_CORRIDOR 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE1 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE2 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE3 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE4 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE5 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE6 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE7 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE8 29
+#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE 29
+#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE 29
+
+//--------------------------------------------------
+// Map Group 30
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE113_GLASS_WORKSHOP,
+};
+
+#define MAP_GROUP_ROUTE113_GLASS_WORKSHOP 30
+
+//--------------------------------------------------
+// Map Group 31
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE123_BERRY_MASTERS_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE123_BERRY_MASTERS_HOUSE 31
+
+//--------------------------------------------------
+// Map Group 32
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE119_WEATHER_INSTITUTE_1F,
+ MAP_ID_ROUTE119_WEATHER_INSTITUTE_2F,
+ MAP_ID_ROUTE119_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_1F 32
+#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_2F 32
+#define MAP_GROUP_ROUTE119_HOUSE 32
+
+//--------------------------------------------------
+// Map Group 33
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE 33
+
+#endif // GUARD_MAP_CONSTANTS_H
diff --git a/include/menu.h b/include/menu.h
index 0e4860791..c3dcbc969 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -58,7 +58,7 @@ void sub_8072B80(u8 *, u8, u8, u8 *);
void sub_8072BD8(u8 *, u8, u8, u16);
u8 *sub_8072C14(u8 *, s32, u8, u8);
u8 *sub_8072C44(u8 *, s32, u8, u8);
-u8 *sub_8072C74(u8 *, u8 *, u8, u8);
+u8 *sub_8072C74(u8 *, const u8 *, u8, u8);
u8 sub_8072CA4(u8 *s);
u8 sub_8072CBC(void);
void sub_8072CD4(u8 *, u8 *, u8 *);
diff --git a/include/opponent_constants.h b/include/opponent_constants.h
new file mode 100644
index 000000000..1829facaa
--- /dev/null
+++ b/include/opponent_constants.h
@@ -0,0 +1,702 @@
+#ifndef GUARD_OPPONENT_CONSTANTS_H
+#define GUARD_OPPONENT_CONSTANTS_H
+
+enum
+{
+ OPPONENT_NONE,
+ OPPONENT_ARCHIE_1,
+ OPPONENT_GRUNT_1,
+ OPPONENT_GRUNT_2,
+ OPPONENT_GRUNT_3,
+ OPPONENT_GRUNT_4,
+ OPPONENT_GRUNT_5,
+ OPPONENT_GRUNT_6,
+ OPPONENT_GRUNT_7,
+ OPPONENT_GRUNT_8,
+ OPPONENT_GRUNT_9,
+ OPPONENT_GRUNT_10,
+ OPPONENT_GRUNT_11,
+ OPPONENT_GRUNT_12,
+ OPPONENT_GRUNT_13,
+ OPPONENT_GRUNT_14,
+ OPPONENT_GRUNT_15,
+ OPPONENT_GRUNT_16,
+ OPPONENT_GRUNT_17,
+ OPPONENT_GRUNT_18,
+ OPPONENT_GRUNT_19,
+ OPPONENT_GRUNT_20,
+ OPPONENT_GRUNT_21,
+ OPPONENT_GRUNT_22,
+ OPPONENT_GRUNT_23,
+ OPPONENT_GRUNT_24,
+ OPPONENT_GRUNT_25,
+ OPPONENT_GRUNT_26,
+ OPPONENT_GRUNT_27,
+ OPPONENT_ANONYMOUS_1,
+ OPPONENT_MATT_1,
+ OPPONENT_MATT_2,
+ OPPONENT_SHELLY_1,
+ OPPONENT_SHELLY_2,
+ OPPONENT_ARCHIE_2,
+ OPPONENT_ARCHIE_3,
+ OPPONENT_DAISY,
+ OPPONENT_ROSE_1,
+ OPPONENT_LILY,
+ OPPONENT_VIOLET,
+ OPPONENT_ROSE_2,
+ OPPONENT_ROSE_3,
+ OPPONENT_ROSE_4,
+ OPPONENT_ROSE_5,
+ OPPONENT_DUSTY_1,
+ OPPONENT_CHIP,
+ OPPONENT_FOSTER,
+ OPPONENT_DUSTY_2,
+ OPPONENT_DUSTY_3,
+ OPPONENT_DUSTY_4,
+ OPPONENT_DUSTY_5,
+ OPPONENT_GABBY_AND_TY_1,
+ OPPONENT_GABBY_AND_TY_2,
+ OPPONENT_GABBY_AND_TY_3,
+ OPPONENT_GABBY_AND_TY_4,
+ OPPONENT_GABBY_AND_TY_5,
+ OPPONENT_GABBY_AND_TY_6,
+ OPPONENT_LOLA_1,
+ OPPONENT_CARMEN,
+ OPPONENT_GWEN,
+ OPPONENT_LOLA_2,
+ OPPONENT_LOLA_3,
+ OPPONENT_LOLA_4,
+ OPPONENT_LOLA_5,
+ OPPONENT_RICKY_1,
+ OPPONENT_SIMON,
+ OPPONENT_CHARLIE,
+ OPPONENT_RICKY_2,
+ OPPONENT_RICKY_3,
+ OPPONENT_RICKY_4,
+ OPPONENT_RICKY_5,
+ OPPONENT_RANDALL,
+ OPPONENT_PARKER,
+ OPPONENT_GEORGE,
+ OPPONENT_BERKE,
+ OPPONENT_CLYDE,
+ OPPONENT_VINCENT,
+ OPPONENT_LEROY,
+ OPPONENT_WILTON_1,
+ OPPONENT_EDGAR,
+ OPPONENT_ALBERT,
+ OPPONENT_SAMUEL,
+ OPPONENT_VITO,
+ OPPONENT_OWEN,
+ OPPONENT_WILTON_2,
+ OPPONENT_WILTON_3,
+ OPPONENT_WILTON_4,
+ OPPONENT_WILTON_5,
+ OPPONENT_WARREN,
+ OPPONENT_MARY,
+ OPPONENT_LORI,
+ OPPONENT_JODY,
+ OPPONENT_WENDY,
+ OPPONENT_ELAINE,
+ OPPONENT_BROOKE_1,
+ OPPONENT_JENNIFER,
+ OPPONENT_HOPE,
+ OPPONENT_SHANNON,
+ OPPONENT_MICHELLE,
+ OPPONENT_CAROLINE,
+ OPPONENT_JULIE,
+ OPPONENT_BROOKE_2,
+ OPPONENT_BROOKE_3,
+ OPPONENT_BROOKE_4,
+ OPPONENT_BROOKE_5,
+ OPPONENT_PATRICIA,
+ OPPONENT_KINDRA,
+ OPPONENT_TAMMY,
+ OPPONENT_VALERIE_1,
+ OPPONENT_TASHA,
+ OPPONENT_VALERIE_2,
+ OPPONENT_VALERIE_3,
+ OPPONENT_VALERIE_4,
+ OPPONENT_VALERIE_5,
+ OPPONENT_CINDY_1,
+ OPPONENT_ANONYMOUS_2,
+ OPPONENT_BRIANNA_1,
+ OPPONENT_CINDY_2,
+ OPPONENT_BRIANNA_2,
+ OPPONENT_ANETTE,
+ OPPONENT_CINDY_3,
+ OPPONENT_CINDY_4,
+ OPPONENT_CINDY_5,
+ OPPONENT_CINDY_6,
+ OPPONENT_MELISSA,
+ OPPONENT_SHEILA,
+ OPPONENT_SHIRLEY,
+ OPPONENT_JESSICA_1,
+ OPPONENT_CONNIE,
+ OPPONENT_BRIDGET,
+ OPPONENT_OLIVIA,
+ OPPONENT_TIFFANY,
+ OPPONENT_JESSICA_2,
+ OPPONENT_JESSICA_3,
+ OPPONENT_JESSICA_4,
+ OPPONENT_JESSICA_5,
+ OPPONENT_WINSTON_1,
+ OPPONENT_ANONYMOUS_3,
+ OPPONENT_GARRET,
+ OPPONENT_WINSTON_2,
+ OPPONENT_WINSTON_3,
+ OPPONENT_WINSTON_4,
+ OPPONENT_WINSTON_5,
+ OPPONENT_STEVE_1,
+ OPPONENT_CHRIS,
+ OPPONENT_MARK,
+ OPPONENT_KENN,
+ OPPONENT_STEVE_2,
+ OPPONENT_STEVE_3,
+ OPPONENT_STEVE_4,
+ OPPONENT_STEVE_5,
+ OPPONENT_LUIS,
+ OPPONENT_AUSTIN,
+ OPPONENT_DOUGLAS,
+ OPPONENT_DARRIN,
+ OPPONENT_TONY_1,
+ OPPONENT_JEROME,
+ OPPONENT_MATTHEW,
+ OPPONENT_DAVID,
+ OPPONENT_SPENCER,
+ OPPONENT_ROLAND,
+ OPPONENT_CODY,
+ OPPONENT_STAN,
+ OPPONENT_BARRY,
+ OPPONENT_DEAN,
+ OPPONENT_RODNEY,
+ OPPONENT_RICHARD,
+ OPPONENT_HERMAN,
+ OPPONENT_ANONYMOUS_4,
+ OPPONENT_GILBERT,
+ OPPONENT_FRANKLIN,
+ OPPONENT_DANNY,
+ OPPONENT_JACK,
+ OPPONENT_DUDLEY,
+ OPPONENT_CHAD,
+ OPPONENT_TONY_2,
+ OPPONENT_TONY_3,
+ OPPONENT_TONY_4,
+ OPPONENT_TONY_5,
+ OPPONENT_HIDEKI,
+ OPPONENT_HITOSHI,
+ OPPONENT_KIYO,
+ OPPONENT_KOICHI,
+ OPPONENT_NOB_1,
+ OPPONENT_NOB_2,
+ OPPONENT_NOB_3,
+ OPPONENT_NOB_4,
+ OPPONENT_NOB_5,
+ OPPONENT_YUJI,
+ OPPONENT_DAISUKE,
+ OPPONENT_ATSUSHI,
+ OPPONENT_KIRK,
+ OPPONENT_SCOTT,
+ OPPONENT_HARVEY,
+ OPPONENT_SHAWN,
+ OPPONENT_RANDY,
+ OPPONENT_DALTON_1,
+ OPPONENT_DALTON_2,
+ OPPONENT_DALTON_3,
+ OPPONENT_DALTON_4,
+ OPPONENT_DALTON_5,
+ OPPONENT_COLE,
+ OPPONENT_FLINT,
+ OPPONENT_AXLE,
+ OPPONENT_JAKE,
+ OPPONENT_ANDY,
+ OPPONENT_BERNIE_1,
+ OPPONENT_BERNIE_2,
+ OPPONENT_BERNIE_3,
+ OPPONENT_BERNIE_4,
+ OPPONENT_BERNIE_5,
+ OPPONENT_DREW,
+ OPPONENT_CLIFF,
+ OPPONENT_LARRY,
+ OPPONENT_SHANE,
+ OPPONENT_JUSTIN,
+ OPPONENT_ETHAN_1,
+ OPPONENT_JEFF,
+ OPPONENT_TRAVIS,
+ OPPONENT_ETHAN_2,
+ OPPONENT_ETHAN_3,
+ OPPONENT_ETHAN_4,
+ OPPONENT_ETHAN_5,
+ OPPONENT_BRENT,
+ OPPONENT_DONALD,
+ OPPONENT_TAYLOR,
+ OPPONENT_BRANDON_1,
+ OPPONENT_DEREK,
+ OPPONENT_BRANDON_2,
+ OPPONENT_BRANDON_3,
+ OPPONENT_BRANDON_4,
+ OPPONENT_BRANDON_5,
+ OPPONENT_EDWARD,
+ OPPONENT_PRESTON,
+ OPPONENT_VIRGIL,
+ OPPONENT_FRITZ,
+ OPPONENT_WILLIAM,
+ OPPONENT_JOSHUA,
+ OPPONENT_CAMERON_1,
+ OPPONENT_CAMERON_2,
+ OPPONENT_CAMERON_3,
+ OPPONENT_CAMERON_4,
+ OPPONENT_CAMERON_5,
+ OPPONENT_JACLYN,
+ OPPONENT_HANNAH,
+ OPPONENT_SAMANTHA,
+ OPPONENT_MAURA,
+ OPPONENT_KAYLA,
+ OPPONENT_ALEXIS,
+ OPPONENT_JACKI_1,
+ OPPONENT_JACKI_2,
+ OPPONENT_JACKI_3,
+ OPPONENT_JACKI_4,
+ OPPONENT_JACKI_5,
+ OPPONENT_WALTER_1,
+ OPPONENT_TUCKER,
+ OPPONENT_THOMAS,
+ OPPONENT_WALTER_2,
+ OPPONENT_WALTER_3,
+ OPPONENT_WALTER_4,
+ OPPONENT_WALTER_5,
+ OPPONENT_SIDNEY,
+ OPPONENT_PHOEBE,
+ OPPONENT_GLACIA,
+ OPPONENT_DRAKE,
+ OPPONENT_ROXANNE,
+ OPPONENT_BRAWLY,
+ OPPONENT_WATTSON,
+ OPPONENT_FLANNERY,
+ OPPONENT_NORMAN,
+ OPPONENT_WINONA,
+ OPPONENT_TATE_AND_LIZA,
+ OPPONENT_WALLACE,
+ OPPONENT_JERRY_1,
+ OPPONENT_TED,
+ OPPONENT_PAUL,
+ OPPONENT_JERRY_2,
+ OPPONENT_JERRY_3,
+ OPPONENT_JERRY_4,
+ OPPONENT_JERRY_5,
+ OPPONENT_KAREN_1,
+ OPPONENT_GEORGIA,
+ OPPONENT_KAREN_2,
+ OPPONENT_KAREN_3,
+ OPPONENT_KAREN_4,
+ OPPONENT_KAREN_5,
+ OPPONENT_KATE_AND_JOY,
+ OPPONENT_ANNA_AND_MEG_1,
+ OPPONENT_ANNA_AND_MEG_2,
+ OPPONENT_ANNA_AND_MEG_3,
+ OPPONENT_ANNA_AND_MEG_4,
+ OPPONENT_ANNA_AND_MEG_5,
+ OPPONENT_VICTOR,
+ OPPONENT_MIGUEL_1,
+ OPPONENT_COLTON,
+ OPPONENT_MIGUEL_2,
+ OPPONENT_MIGUEL_3,
+ OPPONENT_MIGUEL_4,
+ OPPONENT_MIGUEL_5,
+ OPPONENT_VICTORIA,
+ OPPONENT_VANESSA,
+ OPPONENT_MARISSA,
+ OPPONENT_ISABEL_1,
+ OPPONENT_ISABEL_2,
+ OPPONENT_ISABEL_3,
+ OPPONENT_ISABEL_4,
+ OPPONENT_ISABEL_5,
+ OPPONENT_TIMOTHY_1,
+ OPPONENT_TIMOTHY_2,
+ OPPONENT_TIMOTHY_3,
+ OPPONENT_TIMOTHY_4,
+ OPPONENT_TIMOTHY_5,
+ OPPONENT_VICKY,
+ OPPONENT_SHELBY_1,
+ OPPONENT_SHELBY_2,
+ OPPONENT_SHELBY_3,
+ OPPONENT_SHELBY_4,
+ OPPONENT_SHELBY_5,
+ OPPONENT_CALVIN_1,
+ OPPONENT_BILLY,
+ OPPONENT_JOSH,
+ OPPONENT_TOMMY,
+ OPPONENT_JOEY,
+ OPPONENT_BEN,
+ OPPONENT_ANONYMOUS_5,
+ OPPONENT_KEVIN,
+ OPPONENT_NEAL,
+ OPPONENT_DILLON,
+ OPPONENT_CALVIN_2,
+ OPPONENT_CALVIN_3,
+ OPPONENT_CALVIN_4,
+ OPPONENT_CALVIN_5,
+ OPPONENT_EDDIE,
+ OPPONENT_ALLEN,
+ OPPONENT_TIMMY,
+ OPPONENT_STEVEN,
+ OPPONENT_ANDREW,
+ OPPONENT_IVAN,
+ OPPONENT_CLAUDE,
+ OPPONENT_ELLIOT_1,
+ OPPONENT_NED,
+ OPPONENT_DALE,
+ OPPONENT_NOLAN,
+ OPPONENT_BARNY,
+ OPPONENT_WADE,
+ OPPONENT_CARTER,
+ OPPONENT_ELLIOT_2,
+ OPPONENT_ELLIOT_3,
+ OPPONENT_ELLIOT_4,
+ OPPONENT_ELLIOT_5,
+ OPPONENT_RONALD,
+ OPPONENT_JACOB,
+ OPPONENT_ANTHONY,
+ OPPONENT_BENJAMIN_1,
+ OPPONENT_BENJAMIN_2,
+ OPPONENT_BENJAMIN_3,
+ OPPONENT_BENJAMIN_4,
+ OPPONENT_BENJAMIN_5,
+ OPPONENT_ABIGAIL_1,
+ OPPONENT_JASMINE,
+ OPPONENT_ABIGAIL_2,
+ OPPONENT_ABIGAIL_3,
+ OPPONENT_ABIGAIL_4,
+ OPPONENT_ABIGAIL_5,
+ OPPONENT_DYLAN_1,
+ OPPONENT_DYLAN_2,
+ OPPONENT_DYLAN_3,
+ OPPONENT_DYLAN_4,
+ OPPONENT_DYLAN_5,
+ OPPONENT_MARIA_1,
+ OPPONENT_MARIA_2,
+ OPPONENT_MARIA_3,
+ OPPONENT_MARIA_4,
+ OPPONENT_MARIA_5,
+ OPPONENT_CALEB,
+ OPPONENT_ANONYMOUS_6,
+ OPPONENT_ISAIAH_1,
+ OPPONENT_ANONYMOUS_7,
+ OPPONENT_CHASE,
+ OPPONENT_ISAIAH_2,
+ OPPONENT_ISAIAH_3,
+ OPPONENT_ISAIAH_4,
+ OPPONENT_ISAIAH_5,
+ OPPONENT_ANONYMOUS_8,
+ OPPONENT_CONNOR,
+ OPPONENT_ANONYMOUS_9,
+ OPPONENT_KATELYN_1,
+ OPPONENT_ALLISON,
+ OPPONENT_KATELYN_2,
+ OPPONENT_KATELYN_3,
+ OPPONENT_KATELYN_4,
+ OPPONENT_KATELYN_5,
+ OPPONENT_NICOLAS_1,
+ OPPONENT_NICOLAS_2,
+ OPPONENT_NICOLAS_3,
+ OPPONENT_NICOLAS_4,
+ OPPONENT_NICOLAS_5,
+ OPPONENT_AARON,
+ OPPONENT_PERRY,
+ OPPONENT_HUGH,
+ OPPONENT_PHIL,
+ OPPONENT_JARED,
+ OPPONENT_ANONYMOUS_10,
+ OPPONENT_TANNER,
+ OPPONENT_WILL,
+ OPPONENT_COLIN,
+ OPPONENT_ROBERT_1,
+ OPPONENT_BENNY,
+ OPPONENT_CHESTER,
+ OPPONENT_ROBERT_2,
+ OPPONENT_ROBERT_3,
+ OPPONENT_ROBERT_4,
+ OPPONENT_ROBERT_5,
+ OPPONENT_ALEX,
+ OPPONENT_BECK,
+ OPPONENT_YASU,
+ OPPONENT_TAKASHI,
+ OPPONENT_MAKOTO,
+ OPPONENT_HIDEO_1,
+ OPPONENT_LAO_1,
+ OPPONENT_LUNG,
+ OPPONENT_LAO_2,
+ OPPONENT_LAO_3,
+ OPPONENT_LAO_4,
+ OPPONENT_LAO_5,
+ OPPONENT_TESSA,
+ OPPONENT_LAURA,
+ OPPONENT_CYNDY_1,
+ OPPONENT_CORA,
+ OPPONENT_JILL,
+ OPPONENT_CYNDY_2,
+ OPPONENT_CYNDY_3,
+ OPPONENT_CYNDY_4,
+ OPPONENT_CYNDY_5,
+ OPPONENT_MADELINE_1,
+ OPPONENT_CLARISSA,
+ OPPONENT_ANGELICA,
+ OPPONENT_MADELINE_2,
+ OPPONENT_MADELINE_3,
+ OPPONENT_MADELINE_4,
+ OPPONENT_MADELINE_5,
+ OPPONENT_BEVERLY,
+ OPPONENT_DAWN,
+ OPPONENT_NICOLE,
+ OPPONENT_DENISE,
+ OPPONENT_BETH,
+ OPPONENT_TARA,
+ OPPONENT_MISSY,
+ OPPONENT_ALICE,
+ OPPONENT_JENNY_1,
+ OPPONENT_GRACE,
+ OPPONENT_TANYA,
+ OPPONENT_SHARON,
+ OPPONENT_NIKKI,
+ OPPONENT_BRENDA,
+ OPPONENT_KATIE,
+ OPPONENT_SUSIE,
+ OPPONENT_KARA,
+ OPPONENT_DANA,
+ OPPONENT_ERIN,
+ OPPONENT_DEBRA,
+ OPPONENT_LINDA,
+ OPPONENT_KAYLEE,
+ OPPONENT_LAUREL,
+ OPPONENT_DARCY,
+ OPPONENT_JENNY_2,
+ OPPONENT_JENNY_3,
+ OPPONENT_JENNY_4,
+ OPPONENT_JENNY_5,
+ OPPONENT_HEIDI,
+ OPPONENT_BECKY,
+ OPPONENT_CAROL,
+ OPPONENT_NANCY,
+ OPPONENT_MARTHA,
+ OPPONENT_DIANA_1,
+ OPPONENT_NINA,
+ OPPONENT_IRENE,
+ OPPONENT_DIANA_2,
+ OPPONENT_DIANA_3,
+ OPPONENT_DIANA_4,
+ OPPONENT_DIANA_5,
+ OPPONENT_AMY_AND_LIV_1,
+ OPPONENT_AMY_AND_LIV_2,
+ OPPONENT_GINA_AND_MIA_1,
+ OPPONENT_MIU_AND_YUKI,
+ OPPONENT_AMY_AND_LIV_3,
+ OPPONENT_GINA_AND_MIA_2,
+ OPPONENT_AMY_AND_LIV_4,
+ OPPONENT_AMY_AND_LIV_5,
+ OPPONENT_AMY_AND_LIV_6,
+ OPPONENT_HUEY,
+ OPPONENT_EDMOND,
+ OPPONENT_ERNEST_1,
+ OPPONENT_DWAYNE,
+ OPPONENT_PHILLIP,
+ OPPONENT_LEONARD,
+ OPPONENT_DUNCAN,
+ OPPONENT_ERNEST_2,
+ OPPONENT_ERNEST_3,
+ OPPONENT_ERNEST_4,
+ OPPONENT_ERNEST_5,
+ OPPONENT_ANONYMOUS_11,
+ OPPONENT_ANONYMOUS_12,
+ OPPONENT_ANONYMOUS_13,
+ OPPONENT_SONNY,
+ OPPONENT_DONOVAN,
+ OPPONENT_GERALD,
+ OPPONENT_KELVIN,
+ OPPONENT_KODY,
+ OPPONENT_TEVIN,
+ OPPONENT_DAMON,
+ OPPONENT_PABLO,
+ OPPONENT_EDWIN_1,
+ OPPONENT_HECTOR_1,
+ OPPONENT_HECTOR_2,
+ OPPONENT_EDWIN_2,
+ OPPONENT_EDWIN_3,
+ OPPONENT_EDWIN_4,
+ OPPONENT_EDWIN_5,
+ OPPONENT_WALLY_1,
+ OPPONENT_BRENDAN_1,
+ OPPONENT_BRENDAN_2,
+ OPPONENT_BRENDAN_3,
+ OPPONENT_BRENDAN_4,
+ OPPONENT_BRENDAN_5,
+ OPPONENT_BRENDAN_6,
+ OPPONENT_BRENDAN_7,
+ OPPONENT_BRENDAN_8,
+ OPPONENT_BRENDAN_9,
+ OPPONENT_MAY_1,
+ OPPONENT_MAY_2,
+ OPPONENT_MAY_3,
+ OPPONENT_MAY_4,
+ OPPONENT_MAY_5,
+ OPPONENT_MAY_6,
+ OPPONENT_MAY_7,
+ OPPONENT_MAY_8,
+ OPPONENT_MAY_9,
+ OPPONENT_ISAAC_1,
+ OPPONENT_RILEY,
+ OPPONENT_AIDAN,
+ OPPONENT_ISAAC_2,
+ OPPONENT_ISAAC_3,
+ OPPONENT_ISAAC_4,
+ OPPONENT_ISAAC_5,
+ OPPONENT_LYDIA_1,
+ OPPONENT_ALEXIA,
+ OPPONENT_DANIELLE,
+ OPPONENT_LYDIA_2,
+ OPPONENT_LYDIA_3,
+ OPPONENT_LYDIA_4,
+ OPPONENT_LYDIA_5,
+ OPPONENT_JACKSON_1,
+ OPPONENT_CARLOS,
+ OPPONENT_SEBASTIAN,
+ OPPONENT_JACKSON_2,
+ OPPONENT_JACKSON_3,
+ OPPONENT_JACKSON_4,
+ OPPONENT_JACKSON_5,
+ OPPONENT_CATHERINE_1,
+ OPPONENT_JENNA,
+ OPPONENT_SOPHIA,
+ OPPONENT_CATHERINE_2,
+ OPPONENT_CATHERINE_3,
+ OPPONENT_CATHERINE_4,
+ OPPONENT_CATHERINE_5,
+ OPPONENT_MAXIE_1,
+ OPPONENT_GRUNT_28,
+ OPPONENT_GRUNT_29,
+ OPPONENT_GRUNT_30,
+ OPPONENT_GRUNT_31,
+ OPPONENT_GRUNT_32,
+ OPPONENT_GRUNT_33,
+ OPPONENT_GRUNT_34,
+ OPPONENT_GRUNT_35,
+ OPPONENT_GRUNT_36,
+ OPPONENT_GRUNT_37,
+ OPPONENT_GRUNT_38,
+ OPPONENT_GRUNT_39,
+ OPPONENT_GRUNT_40,
+ OPPONENT_GRUNT_41,
+ OPPONENT_GRUNT_42,
+ OPPONENT_GRUNT_43,
+ OPPONENT_GRUNT_44,
+ OPPONENT_GRUNT_45,
+ OPPONENT_GRUNT_46,
+ OPPONENT_GRUNT_47,
+ OPPONENT_GRUNT_48,
+ OPPONENT_GRUNT_49,
+ OPPONENT_GRUNT_50,
+ OPPONENT_GRUNT_51,
+ OPPONENT_GRUNT_52,
+ OPPONENT_GRUNT_53,
+ OPPONENT_GRUNT_54,
+ OPPONENT_ANONYMOUS_14,
+ OPPONENT_ANONYMOUS_15,
+ OPPONENT_TABITHA_1,
+ OPPONENT_TABITHA_2,
+ OPPONENT_ANONYMOUS_16,
+ OPPONENT_COURTNEY_1,
+ OPPONENT_COURTNEY_2,
+ OPPONENT_MAXIE_2,
+ OPPONENT_MAXIE_3,
+ OPPONENT_TIANA,
+ OPPONENT_HALEY_1,
+ OPPONENT_JANICE,
+ OPPONENT_VIVI,
+ OPPONENT_HALEY_2,
+ OPPONENT_HALEY_3,
+ OPPONENT_HALEY_4,
+ OPPONENT_HALEY_5,
+ OPPONENT_SALLY,
+ OPPONENT_ROBIN,
+ OPPONENT_ANDREA,
+ OPPONENT_CRISSY,
+ OPPONENT_RICK,
+ OPPONENT_LYLE,
+ OPPONENT_JOSE,
+ OPPONENT_DOUG,
+ OPPONENT_GREG,
+ OPPONENT_KENT,
+ OPPONENT_JAMES_1,
+ OPPONENT_JAMES_2,
+ OPPONENT_JAMES_3,
+ OPPONENT_JAMES_4,
+ OPPONENT_JAMES_5,
+ OPPONENT_BRICE,
+ OPPONENT_TRENT_1,
+ OPPONENT_LENNY,
+ OPPONENT_LUCAS_1,
+ OPPONENT_ALAN,
+ OPPONENT_CLARK,
+ OPPONENT_ERIC,
+ OPPONENT_LUCAS_2,
+ OPPONENT_MIKE_1,
+ OPPONENT_MIKE_2,
+ OPPONENT_TRENT_2,
+ OPPONENT_TRENT_3,
+ OPPONENT_TRENT_4,
+ OPPONENT_TRENT_5,
+ OPPONENT_DEZ_AND_LUKE,
+ OPPONENT_LEA_AND_JED,
+ OPPONENT_LOIS_AND_HAL_1,
+ OPPONENT_LOIS_AND_HAL_2,
+ OPPONENT_LOIS_AND_HAL_3,
+ OPPONENT_LOIS_AND_HAL_4,
+ OPPONENT_LOIS_AND_HAL_5,
+ OPPONENT_JOHANNA,
+ OPPONENT_ZANE,
+ OPPONENT_VIVIAN,
+ OPPONENT_SADIE,
+ OPPONENT_HIDEO_2,
+ OPPONENT_KEIGO,
+ OPPONENT_TSUNAO,
+ OPPONENT_TERRELL,
+ OPPONENT_KYLEE,
+ OPPONENT_WALLY_2,
+ OPPONENT_WALLY_3,
+ OPPONENT_WALLY_4,
+ OPPONENT_WALLY_5,
+ OPPONENT_WALLY_6,
+ OPPONENT_BRENDAN_10,
+ OPPONENT_BRENDAN_11,
+ OPPONENT_BRENDAN_12,
+ OPPONENT_MAY_10,
+ OPPONENT_MAY_11,
+ OPPONENT_MAY_12,
+ OPPONENT_JONAH,
+ OPPONENT_HENRY,
+ OPPONENT_ROGER,
+ OPPONENT_ALEXA,
+ OPPONENT_RUBEN,
+ OPPONENT_KOJI,
+ OPPONENT_WAYNE,
+ OPPONENT_BYRON,
+ OPPONENT_REED,
+ OPPONENT_TISHA,
+ OPPONENT_TORI_AND_TIA,
+ OPPONENT_KIM_AND_IRIS,
+ OPPONENT_TYRA_AND_IVY,
+ OPPONENT_MEL_AND_PAUL,
+ OPPONENT_JOHN_AND_JAY_1,
+ OPPONENT_JOHN_AND_JAY_2,
+ OPPONENT_JOHN_AND_JAY_3,
+ OPPONENT_JOHN_AND_JAY_4,
+ OPPONENT_JOHN_AND_JAY_5,
+ OPPONENT_RELI_AND_IAN,
+ OPPONENT_RITA_AND_SAM_1,
+ OPPONENT_RITA_AND_SAM_2,
+ OPPONENT_RITA_AND_SAM_3,
+ OPPONENT_RITA_AND_SAM_4,
+ OPPONENT_RITA_AND_SAM_5,
+ OPPONENT_LISA_AND_RAY,
+ OPPONENT_EUGENE,
+};
+
+#endif // GUARD_OPPONENT_CONSTANTS_H
diff --git a/include/sprite.h b/include/sprite.h
index 7a2dd8494..2725d0bab 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -45,6 +45,9 @@ struct AnimJumpCmd
u32 target:6;
};
+// The first halfword of this union specifies the type of command.
+// If it -2, then it is a jump command. If it is -1, then it is the end of the script.
+// Otherwise, it is the imageValue for a frame command.
union AnimCmd
{
s16 type;
@@ -53,8 +56,8 @@ union AnimCmd
struct AnimJumpCmd jump;
};
-#define ANIMCMD_FRAME(_imageValue, _duration) \
- {.frame = {.imageValue = _imageValue, .duration = _duration}}
+#define ANIMCMD_FRAME(...) \
+ {.frame = {__VA_ARGS__}}
#define ANIMCMD_JUMP(_target) \
{.jump = {.type = -2, .target = _target}}
#define ANIMCMD_END \
@@ -68,11 +71,6 @@ struct AffineAnimFrameCmd
u8 duration;
};
-#define AFFINEANIMCMD_FRAME(_xScale, _yScale, _rotation, _duration) \
- {.frame = {.xScale = _xScale, .yScale = _yScale, .rotation = _rotation, .duration = _duration}}
-#define AFFINEANIMCMD_END \
- {.type = 0x7FFF}
-
struct AffineAnimLoopCmd
{
s16 type;
@@ -93,6 +91,11 @@ union AffineAnimCmd
struct AffineAnimJumpCmd jump;
};
+#define AFFINEANIMCMD_FRAME(_xScale, _yScale, _rotation, _duration) \
+ {.frame = {.xScale = _xScale, .yScale = _yScale, .rotation = _rotation, .duration = _duration}}
+#define AFFINEANIMCMD_END \
+ {.type = 0x7FFF}
+
struct AffineAnimState
{
u8 animNum;
diff --git a/include/starter_choose.h b/include/starter_choose.h
index 4a7e0514c..008d1b14e 100644
--- a/include/starter_choose.h
+++ b/include/starter_choose.h
@@ -5,9 +5,5 @@
u16 GetStarterPokemon(u16);
void CB2_ChooseStarter(void);
-void nullsub_72(struct Sprite *sprite);
-void sub_810A62C(struct Sprite *sprite);
-void sub_810A68C(struct Sprite *sprite);
-void StarterPokemonSpriteAnimCallback(struct Sprite *sprite);
#endif // GUARD_STARTER_CHOOSE_H
diff --git a/ld_script.txt b/ld_script.txt
index e6dba7e53..063f030d7 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -341,6 +341,7 @@ SECTIONS {
data/title_screen.o(.rodata);
data/weather.o(.rodata);
data/rom_8080874.o(.rodata);
+ src/battle_setup.o(.rodata);
data/battle_setup.o(.rodata);
data/cable_club.o(.rodata);
data/mori_debug_menu.o(.rodata);
@@ -387,16 +388,15 @@ SECTIONS {
data/mauville_old_man.o(.rodata);
data/mail.o(.rodata);
data/menu_helpers.o(.rodata);
- data/heal_location.o(.rodata);
+ src/heal_location.o(.rodata);
data/region_map.o(.rodata);
data/cute_sketch.o(.rodata);
data/decoration.o(.rodata);
data/slot_machine.o(.rodata);
- data/contest_painting.o(.rodata);
+ src/contest_painting.o(.rodata);
src/battle_ai.o(.rodata);
data/trader.o(.rodata);
src/starter_choose.o(.rodata);
- data/starter_choose.o(.rodata);
src/wallclock.o(.rodata);
data/pokeblock.o(.rodata);
data/rom_810CBB4.o(.rodata);
@@ -416,7 +416,6 @@ SECTIONS {
data/rom_81258BC.o(.rodata);
data/player_pc.o(.rodata);
src/intro.o(.rodata);
- data/intro.o(.rodata);
data/battle_anim_813F0F4.o(.rodata);
data/hall_of_fame.o(.rodata);
src/credits.o(.rodata);
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 6d3e6a215..858b6cca1 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -21,6 +21,8 @@
#include "text.h"
#include "trainer.h"
#include "weather.h"
+#include "map_constants.h"
+#include "opponent_constants.h"
#define NUM_TRAINER_EYE_TRAINERS 56
#define TRAINER_REMATCH_STEPS 255
@@ -92,14 +94,11 @@ EWRAM_DATA u8 *gTrainerCannotBattleSpeech = NULL;
EWRAM_DATA u8 *gTrainerBattleScriptReturnAddress = NULL;
EWRAM_DATA u8 *gTrainerBattleEndScript = NULL;
-extern struct TrainerEyeTrainer gTrainerEyeTrainers[];
-
extern u8 gOtherText_CancelWithTerminator[];
extern u16 gBattleTypeFlags;
extern u16 gScriptLastTalked;
extern u8 gUnknown_02024D26;
-extern u16 gBadgeFlags[];
extern struct MapObject gMapObjects[];
@@ -112,14 +111,367 @@ extern u8 gUnknown_0819F8AE[];
extern u8 gUnknown_0819F80B[];
extern u8 gUnknown_081C6C02[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_0[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_1[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_2[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_3[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_4[];
-extern u8 gBattleTransitionTable_Wild[][2];
-extern u8 gBattleTransitionTable_Trainer[][2];
+static const u8 gBattleTransitionTable_Wild[][2] =
+{
+ {8, 9},
+ {5, 10},
+ {0, 10},
+ {7, 6},
+};
+static const u8 gBattleTransitionTable_Trainer[][2] =
+{
+ {4, 11},
+ {2, 3},
+ {0, 10},
+ {1, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_0[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 2},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 5},
+ {&gTrainerBattleEndScript, 5},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_1[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 2},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 5},
+ {&gTrainerBattleEndScript, 2},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_2[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 2},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 2},
+ {&gTrainerBattleEndScript, 5},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_3[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 5},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 5},
+ {&gTrainerBattleEndScript, 5},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_4[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 2},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 2},
+ {&gTrainerBattleEndScript, 2},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+
+const struct TrainerEyeTrainer gTrainerEyeTrainers[] =
+{
+ {
+ {OPPONENT_ROSE_1, OPPONENT_ROSE_2, OPPONENT_ROSE_3, OPPONENT_ROSE_4, OPPONENT_ROSE_5},
+ MAP_GROUP_ROUTE118,
+ MAP_ID_ROUTE118,
+ },
+ {
+ {OPPONENT_DUSTY_1, OPPONENT_DUSTY_2, OPPONENT_DUSTY_3, OPPONENT_DUSTY_4, OPPONENT_DUSTY_5},
+ MAP_GROUP_ROUTE111,
+ MAP_ID_ROUTE111,
+ },
+ {
+ {OPPONENT_LOLA_1, OPPONENT_LOLA_2, OPPONENT_LOLA_3, OPPONENT_LOLA_4, OPPONENT_LOLA_5},
+ MAP_GROUP_ROUTE109,
+ MAP_ID_ROUTE109,
+ },
+ {
+ {OPPONENT_RICKY_1, OPPONENT_RICKY_2, OPPONENT_RICKY_3, OPPONENT_RICKY_4, OPPONENT_RICKY_5},
+ MAP_GROUP_ROUTE109,
+ MAP_ID_ROUTE109,
+ },
+ {
+ {OPPONENT_RITA_AND_SAM_1, OPPONENT_RITA_AND_SAM_2, OPPONENT_RITA_AND_SAM_3, OPPONENT_RITA_AND_SAM_4, OPPONENT_RITA_AND_SAM_5},
+ MAP_GROUP_ROUTE124,
+ MAP_ID_ROUTE124,
+ },
+ {
+ {OPPONENT_BROOKE_1, OPPONENT_BROOKE_2, OPPONENT_BROOKE_3, OPPONENT_BROOKE_4, OPPONENT_BROOKE_5},
+ MAP_GROUP_ROUTE111,
+ MAP_ID_ROUTE111,
+ },
+ {
+ {OPPONENT_WILTON_1, OPPONENT_WILTON_2, OPPONENT_WILTON_3, OPPONENT_WILTON_4, OPPONENT_WILTON_5},
+ MAP_GROUP_ROUTE111,
+ MAP_ID_ROUTE111,
+ },
+ {
+ {OPPONENT_VALERIE_1, OPPONENT_VALERIE_2, OPPONENT_VALERIE_3, OPPONENT_VALERIE_4, OPPONENT_VALERIE_5},
+ MAP_GROUP_MT_PYRE_6F,
+ MAP_ID_MT_PYRE_6F,
+ },
+ {
+ {OPPONENT_CINDY_1, OPPONENT_CINDY_3, OPPONENT_CINDY_4, OPPONENT_CINDY_5, OPPONENT_CINDY_6},
+ MAP_GROUP_ROUTE104,
+ MAP_ID_ROUTE104,
+ },
+ {
+ {OPPONENT_JESSICA_1, OPPONENT_JESSICA_2, OPPONENT_JESSICA_3, OPPONENT_JESSICA_4, OPPONENT_JESSICA_5},
+ MAP_GROUP_ROUTE121,
+ MAP_ID_ROUTE121,
+ },
+ {
+ {OPPONENT_WINSTON_1, OPPONENT_WINSTON_2, OPPONENT_WINSTON_3, OPPONENT_WINSTON_4, OPPONENT_WINSTON_5},
+ MAP_GROUP_ROUTE104,
+ MAP_ID_ROUTE104,
+ },
+ {
+ {OPPONENT_STEVE_1, OPPONENT_STEVE_2, OPPONENT_STEVE_3, OPPONENT_STEVE_4, OPPONENT_STEVE_5},
+ MAP_GROUP_ROUTE114,
+ MAP_ID_ROUTE114,
+ },
+ {
+ {OPPONENT_TONY_1, OPPONENT_TONY_2, OPPONENT_TONY_3, OPPONENT_TONY_4, OPPONENT_TONY_5},
+ MAP_GROUP_ROUTE107,
+ MAP_ID_ROUTE107,
+ },
+ {
+ {OPPONENT_NOB_1, OPPONENT_NOB_2, OPPONENT_NOB_3, OPPONENT_NOB_4, OPPONENT_NOB_5},
+ MAP_GROUP_ROUTE115,
+ MAP_ID_ROUTE115,
+ },
+ {
+ {OPPONENT_DALTON_1, OPPONENT_DALTON_2, OPPONENT_DALTON_3, OPPONENT_DALTON_4, OPPONENT_DALTON_5},
+ MAP_GROUP_ROUTE118,
+ MAP_ID_ROUTE118,
+ },
+ {
+ {OPPONENT_BERNIE_1, OPPONENT_BERNIE_2, OPPONENT_BERNIE_3, OPPONENT_BERNIE_4, OPPONENT_BERNIE_5},
+ MAP_GROUP_ROUTE114,
+ MAP_ID_ROUTE114,
+ },
+ {
+ {OPPONENT_ETHAN_1, OPPONENT_ETHAN_2, OPPONENT_ETHAN_3, OPPONENT_ETHAN_4, OPPONENT_ETHAN_5},
+ MAP_GROUP_JAGGED_PASS,
+ MAP_ID_JAGGED_PASS,
+ },
+ {
+ {OPPONENT_JOHN_AND_JAY_1, OPPONENT_JOHN_AND_JAY_2, OPPONENT_JOHN_AND_JAY_3, OPPONENT_JOHN_AND_JAY_4, OPPONENT_JOHN_AND_JAY_5},
+ MAP_GROUP_METEOR_FALLS_1F_2R,
+ MAP_ID_METEOR_FALLS_1F_2R,
+ },
+ {
+ {OPPONENT_BRANDON_1, OPPONENT_BRANDON_2, OPPONENT_BRANDON_3, OPPONENT_BRANDON_4, OPPONENT_BRANDON_5},
+ MAP_GROUP_ROUTE120,
+ MAP_ID_ROUTE120,
+ },
+ {
+ {OPPONENT_CAMERON_1, OPPONENT_CAMERON_2, OPPONENT_CAMERON_3, OPPONENT_CAMERON_4, OPPONENT_CAMERON_5},
+ MAP_GROUP_ROUTE123,
+ MAP_ID_ROUTE123,
+ },
+ {
+ {OPPONENT_JACKI_1, OPPONENT_JACKI_2, OPPONENT_JACKI_3, OPPONENT_JACKI_4, OPPONENT_JACKI_5},
+ MAP_GROUP_ROUTE123,
+ MAP_ID_ROUTE123,
+ },
+ {
+ {OPPONENT_WALTER_1, OPPONENT_WALTER_2, OPPONENT_WALTER_3, OPPONENT_WALTER_4, OPPONENT_WALTER_5},
+ MAP_GROUP_ROUTE121,
+ MAP_ID_ROUTE121,
+ },
+ {
+ {OPPONENT_KAREN_1, OPPONENT_KAREN_2, OPPONENT_KAREN_3, OPPONENT_KAREN_4, OPPONENT_KAREN_5},
+ MAP_GROUP_ROUTE116,
+ MAP_ID_ROUTE116,
+ },
+ {
+ {OPPONENT_JERRY_1, OPPONENT_JERRY_2, OPPONENT_JERRY_3, OPPONENT_JERRY_4, OPPONENT_JERRY_5},
+ MAP_GROUP_ROUTE116,
+ MAP_ID_ROUTE116,
+ },
+ {
+ {OPPONENT_ANNA_AND_MEG_1, OPPONENT_ANNA_AND_MEG_2, OPPONENT_ANNA_AND_MEG_3, OPPONENT_ANNA_AND_MEG_4, OPPONENT_ANNA_AND_MEG_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_ISABEL_1, OPPONENT_ISABEL_2, OPPONENT_ISABEL_3, OPPONENT_ISABEL_4, OPPONENT_ISABEL_5},
+ MAP_GROUP_ROUTE110,
+ MAP_ID_ROUTE110,
+ },
+ {
+ {OPPONENT_MIGUEL_1, OPPONENT_MIGUEL_2, OPPONENT_MIGUEL_3, OPPONENT_MIGUEL_4, OPPONENT_MIGUEL_5},
+ MAP_GROUP_ROUTE103,
+ MAP_ID_ROUTE103,
+ },
+ {
+ {OPPONENT_TIMOTHY_1, OPPONENT_TIMOTHY_2, OPPONENT_TIMOTHY_3, OPPONENT_TIMOTHY_4, OPPONENT_TIMOTHY_5},
+ MAP_GROUP_ROUTE115,
+ MAP_ID_ROUTE115,
+ },
+ {
+ {OPPONENT_SHELBY_1, OPPONENT_SHELBY_2, OPPONENT_SHELBY_3, OPPONENT_SHELBY_4, OPPONENT_SHELBY_5},
+ MAP_GROUP_MT_CHIMNEY,
+ MAP_ID_MT_CHIMNEY,
+ },
+ {
+ {OPPONENT_CALVIN_1, OPPONENT_CALVIN_2, OPPONENT_CALVIN_3, OPPONENT_CALVIN_4, OPPONENT_CALVIN_5},
+ MAP_GROUP_ROUTE102,
+ MAP_ID_ROUTE102,
+ },
+ {
+ {OPPONENT_ELLIOT_1, OPPONENT_ELLIOT_2, OPPONENT_ELLIOT_3, OPPONENT_ELLIOT_4, OPPONENT_ELLIOT_5},
+ MAP_GROUP_ROUTE106,
+ MAP_ID_ROUTE106,
+ },
+ {
+ {OPPONENT_ABIGAIL_1, OPPONENT_ABIGAIL_2, OPPONENT_ABIGAIL_3, OPPONENT_ABIGAIL_4, OPPONENT_ABIGAIL_5},
+ MAP_GROUP_ROUTE110,
+ MAP_ID_ROUTE110,
+ },
+ {
+ {OPPONENT_BENJAMIN_1, OPPONENT_BENJAMIN_2, OPPONENT_BENJAMIN_3, OPPONENT_BENJAMIN_4, OPPONENT_BENJAMIN_5},
+ MAP_GROUP_ROUTE110,
+ MAP_ID_ROUTE110,
+ },
+ {
+ {OPPONENT_ISAIAH_1, OPPONENT_ISAIAH_2, OPPONENT_ISAIAH_3, OPPONENT_ISAIAH_4, OPPONENT_ISAIAH_5},
+ MAP_GROUP_ROUTE128,
+ MAP_ID_ROUTE128,
+ },
+ {
+ {OPPONENT_KATELYN_1, OPPONENT_KATELYN_2, OPPONENT_KATELYN_3, OPPONENT_KATELYN_4, OPPONENT_KATELYN_5},
+ MAP_GROUP_ROUTE128,
+ MAP_ID_ROUTE128,
+ },
+ {
+ {OPPONENT_MARIA_1, OPPONENT_MARIA_2, OPPONENT_MARIA_3, OPPONENT_MARIA_4, OPPONENT_MARIA_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_DYLAN_1, OPPONENT_DYLAN_2, OPPONENT_DYLAN_3, OPPONENT_DYLAN_4, OPPONENT_DYLAN_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_NICOLAS_1, OPPONENT_NICOLAS_2, OPPONENT_NICOLAS_3, OPPONENT_NICOLAS_4, OPPONENT_NICOLAS_5},
+ MAP_GROUP_METEOR_FALLS_1F_2R,
+ MAP_ID_METEOR_FALLS_1F_2R,
+ },
+ {
+ {OPPONENT_ROBERT_1, OPPONENT_ROBERT_2, OPPONENT_ROBERT_3, OPPONENT_ROBERT_4, OPPONENT_ROBERT_5},
+ MAP_GROUP_ROUTE120,
+ MAP_ID_ROUTE120,
+ },
+ {
+ {OPPONENT_LAO_1, OPPONENT_LAO_2, OPPONENT_LAO_3, OPPONENT_LAO_4, OPPONENT_LAO_5},
+ MAP_GROUP_ROUTE113,
+ MAP_ID_ROUTE113,
+ },
+ {
+ {OPPONENT_CYNDY_1, OPPONENT_CYNDY_2, OPPONENT_CYNDY_3, OPPONENT_CYNDY_4, OPPONENT_CYNDY_5},
+ MAP_GROUP_ROUTE115,
+ MAP_ID_ROUTE115,
+ },
+ {
+ {OPPONENT_MADELINE_1, OPPONENT_MADELINE_2, OPPONENT_MADELINE_3, OPPONENT_MADELINE_4, OPPONENT_MADELINE_5},
+ MAP_GROUP_ROUTE113,
+ MAP_ID_ROUTE113,
+ },
+ {
+ {OPPONENT_JENNY_1, OPPONENT_JENNY_2, OPPONENT_JENNY_3, OPPONENT_JENNY_4, OPPONENT_JENNY_5},
+ MAP_GROUP_ROUTE124,
+ MAP_ID_ROUTE124,
+ },
+ {
+ {OPPONENT_DIANA_1, OPPONENT_DIANA_2, OPPONENT_DIANA_3, OPPONENT_DIANA_4, OPPONENT_DIANA_5},
+ MAP_GROUP_JAGGED_PASS,
+ MAP_ID_JAGGED_PASS,
+ },
+ {
+ {OPPONENT_AMY_AND_LIV_1, OPPONENT_AMY_AND_LIV_2, OPPONENT_AMY_AND_LIV_4, OPPONENT_AMY_AND_LIV_5, OPPONENT_AMY_AND_LIV_6},
+ MAP_GROUP_ROUTE103,
+ MAP_ID_ROUTE103,
+ },
+ {
+ {OPPONENT_ERNEST_1, OPPONENT_ERNEST_2, OPPONENT_ERNEST_3, OPPONENT_ERNEST_4, OPPONENT_ERNEST_5},
+ MAP_GROUP_ROUTE125,
+ MAP_ID_ROUTE125,
+ },
+ {
+ {OPPONENT_EDWIN_1, OPPONENT_EDWIN_2, OPPONENT_EDWIN_3, OPPONENT_EDWIN_4, OPPONENT_EDWIN_5},
+ MAP_GROUP_ROUTE110,
+ MAP_ID_ROUTE110,
+ },
+ {
+ {OPPONENT_LYDIA_1, OPPONENT_LYDIA_2, OPPONENT_LYDIA_3, OPPONENT_LYDIA_4, OPPONENT_LYDIA_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_ISAAC_1, OPPONENT_ISAAC_2, OPPONENT_ISAAC_3, OPPONENT_ISAAC_4, OPPONENT_ISAAC_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_CATHERINE_1, OPPONENT_CATHERINE_2, OPPONENT_CATHERINE_3, OPPONENT_CATHERINE_4, OPPONENT_CATHERINE_5},
+ MAP_GROUP_ROUTE119,
+ MAP_ID_ROUTE119,
+ },
+ {
+ {OPPONENT_JACKSON_1, OPPONENT_JACKSON_2, OPPONENT_JACKSON_3, OPPONENT_JACKSON_4, OPPONENT_JACKSON_5},
+ MAP_GROUP_ROUTE119,
+ MAP_ID_ROUTE119,
+ },
+ {
+ {OPPONENT_HALEY_1, OPPONENT_HALEY_2, OPPONENT_HALEY_3, OPPONENT_HALEY_4, OPPONENT_HALEY_5},
+ MAP_GROUP_ROUTE104,
+ MAP_ID_ROUTE104,
+ },
+ {
+ {OPPONENT_JAMES_1, OPPONENT_JAMES_2, OPPONENT_JAMES_3, OPPONENT_JAMES_4, OPPONENT_JAMES_5},
+ MAP_GROUP_PETALBURG_WOODS,
+ MAP_ID_PETALBURG_WOODS,
+ },
+ {
+ {OPPONENT_TRENT_1, OPPONENT_TRENT_2, OPPONENT_TRENT_3, OPPONENT_TRENT_4, OPPONENT_TRENT_5},
+ MAP_GROUP_ROUTE112,
+ MAP_ID_ROUTE112,
+ },
+ {
+ {OPPONENT_LOIS_AND_HAL_1, OPPONENT_LOIS_AND_HAL_2, OPPONENT_LOIS_AND_HAL_3, OPPONENT_LOIS_AND_HAL_4, OPPONENT_LOIS_AND_HAL_5},
+ MAP_GROUP_ABANDONED_SHIP_ROOMS2_1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS2_1F,
+ },
+ {
+ {OPPONENT_WALLY_3, OPPONENT_WALLY_4, OPPONENT_WALLY_5, OPPONENT_WALLY_6, OPPONENT_NONE},
+ MAP_GROUP_VICTORY_ROAD_1F,
+ MAP_ID_VICTORY_ROAD_1F,
+ },
+};
+
+static const u16 sBadgeFlags[] = {BADGE01_GET, BADGE02_GET, BADGE03_GET, BADGE04_GET, BADGE05_GET, BADGE06_GET, BADGE07_GET, BADGE08_GET};
void task01_battle_start(u8 taskId)
{
@@ -592,7 +944,7 @@ void sub_80822BC(void)
gTrainerBattleEndScript = 0;
}
-void TrainerBattleLoadArgs(struct TrainerBattleSpec *specs, u8 *data)
+void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, u8 *data)
{
while (1)
{
@@ -902,7 +1254,7 @@ u8 *sub_8082880(void)
return SanitizeString(gTrainerCannotBattleSpeech);
}
-s32 sub_8082894(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+s32 sub_8082894(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 i;
@@ -914,7 +1266,7 @@ s32 sub_8082894(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return -1;
}
-s32 sub_80828B8(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+s32 sub_80828B8(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 i;
s32 j;
@@ -930,7 +1282,7 @@ s32 sub_80828B8(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return -1;
}
-bool32 sub_80828FC(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
+bool32 sub_80828FC(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
{
int i;
bool32 ret = FALSE;
@@ -955,7 +1307,7 @@ bool32 sub_80828FC(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
return ret;
}
-s32 sub_80829A8(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
+s32 sub_80829A8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
{
s32 i;
@@ -967,7 +1319,7 @@ s32 sub_80829A8(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
return 0;
}
-s32 sub_80829E8(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
+s32 sub_80829E8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
{
s32 i;
@@ -979,7 +1331,7 @@ s32 sub_80829E8(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
return 0;
}
-bool8 sub_8082A18(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
@@ -989,7 +1341,7 @@ bool8 sub_8082A18(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return FALSE;
}
-bool8 sub_8082A54(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 trainerEyeIndex = sub_80828B8(trainers, trainerNum);
@@ -999,10 +1351,10 @@ bool8 sub_8082A54(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return FALSE;
}
-u16 sub_8082A90(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
int i;
- struct TrainerEyeTrainer *trainer;
+ const struct TrainerEyeTrainer *trainer;
s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
if (trainerEyeIndex == -1)
@@ -1018,7 +1370,7 @@ u16 sub_8082A90(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return trainer->trainerNums[4];
}
-void sub_8082AE4(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+void sub_8082AE4(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 trainerEyeIndex = sub_80828B8(trainers, trainerNum);
@@ -1026,7 +1378,7 @@ void sub_8082AE4(struct TrainerEyeTrainer *trainers, u16 trainerNum)
gSaveBlock1.trainerRematches[trainerEyeIndex] = 0;
}
-bool8 sub_8082B10(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
@@ -1043,7 +1395,7 @@ bool32 sub_8082B44(void)
for (i = 0; i < 8; i++)
{
- if (FlagGet(gBadgeFlags[i]) == TRUE)
+ if (FlagGet(sBadgeFlags[i]) == TRUE)
{
badgeCount++;
if (badgeCount >= 5)
diff --git a/src/contest_painting.c b/src/contest_painting.c
index b77041f41..5dbc50791 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -56,8 +56,8 @@ struct Unk3000756
struct LabelPair
{
- u8 (*prefix)[];
- u8 (*suffix)[];
+ const u8 *prefix;
+ const u8 *suffix;
};
struct Unk03005E20
@@ -97,32 +97,112 @@ extern const struct SpriteSheet gMonFrontPicTable[];
extern const struct MonCoords gMonFrontPicCoords[];
extern const struct SpriteSheet gMonBackPicTable[];
extern const struct MonCoords gMonBackPicCoords[];
-
extern void *gUnknown_081FAF4C[];
-
-extern u16 gPictureFramePalettes[];
-
-extern u8 gPictureFrameTiles_0[];
-extern u8 gPictureFrameTiles_1[];
-extern u8 gPictureFrameTiles_2[];
-extern u8 gPictureFrameTiles_3[];
-extern u8 gPictureFrameTiles_4[];
-extern u8 gPictureFrameTiles_5[];
-
-extern u8 gPictureFrameTilemap_0[];
-extern u8 gPictureFrameTilemap_1[];
-extern u8 gPictureFrameTilemap_2[];
-extern u8 gPictureFrameTilemap_3[];
-extern u8 gPictureFrameTilemap_4[];
-extern u8 gPictureFrameTilemap_5[];
-
-extern u8 *gUnknown_083F60AC[];
-extern struct LabelPair gUnknown_083F60C0[];
-extern struct OamData gOamData_83F6138;
-extern u16 gUnknown_083F6140[];
-
-extern u8 gContestText_ContestWinner[];
-extern u8 gOtherText_Unknown1[];
+extern const u8 OtherText_Cool[];
+extern const u8 OtherText_Beauty2[];
+extern const u8 OtherText_Cute[];
+extern const u8 OtherText_Smart[];
+extern const u8 OtherText_Tough[];
+extern const u8 OtherText_NonstopSuperCool[];
+extern const u8 OtherText_Terminator6[];
+extern const u8 OtherText_GoodLookingPoke[];
+extern const u8 OtherText_Terminator7[];
+extern const u8 OtherText_MarvelousGreat[];
+extern const u8 OtherText_Terminator8[];
+extern const u8 OtherText_CenturyLastVenus[];
+extern const u8 OtherText_Terminator9[];
+extern const u8 OtherText_Terminator10[];
+extern const u8 OtherText_DazzlingSlime[];
+extern const u8 OtherText_PokeCenterIdol[];
+extern const u8 OtherText_Terminator11[];
+extern const u8 OtherText_LovelyAndSweet[];
+extern const u8 OtherText_Terminator12[];
+extern const u8 OtherText_ThePretty[];
+extern const u8 OtherText_WinningPortrait[];
+extern const u8 OtherText_GiveUsWink[];
+extern const u8 OtherText_Terminator13[];
+extern const u8 OtherText_SmartnessMaestro[];
+extern const u8 OtherText_Terminator14[];
+extern const u8 OtherText_ChosenPokeAmong[];
+extern const u8 OtherText_Terminator15[];
+extern const u8 OtherText_TheExcellent[];
+extern const u8 OtherText_ItsMomentOfElegance[];
+extern const u8 OtherText_PowerfullyMuscular[];
+extern const u8 OtherText_Terminator16[];
+extern const u8 OtherText_StrongErEst[];
+extern const u8 OtherText_Terminator17[];
+extern const u8 OtherText_MightyTough[];
+extern const u8 OtherText_Exclamation[];
+extern const u8 gContestText_ContestWinner[];
+extern const u8 gOtherText_Unknown1[];
+
+static const u16 gPictureFramePalettes[][16] =
+{
+ INCBIN_U16("graphics/picture_frame/bg0.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg1.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg2.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg3.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg4.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg5.gbapal"),
+ {0},
+ {0},
+};
+const u8 emptySpace[8 * 32] = {0};
+const u8 gPictureFrameTiles_0[] = INCBIN_U8("graphics/picture_frame/frame0.4bpp.rl");
+const u8 gPictureFrameTiles_1[] = INCBIN_U8("graphics/picture_frame/frame1.4bpp.rl");
+const u8 gPictureFrameTiles_2[] = INCBIN_U8("graphics/picture_frame/frame2.4bpp.rl");
+const u8 gPictureFrameTiles_3[] = INCBIN_U8("graphics/picture_frame/frame3.4bpp.rl");
+const u8 gPictureFrameTiles_4[] = INCBIN_U8("graphics/picture_frame/frame4.4bpp.rl");
+const u8 gPictureFrameTiles_5[] = INCBIN_U8("graphics/picture_frame/frame5.4bpp.rl");
+const u8 gPictureFrameTilemap_0[] = INCBIN_U8("graphics/picture_frame/frame0_map.bin.rl");
+const u8 gPictureFrameTilemap_1[] = INCBIN_U8("graphics/picture_frame/frame1_map.bin.rl");
+const u8 gPictureFrameTilemap_2[] = INCBIN_U8("graphics/picture_frame/frame2_map.bin.rl");
+const u8 gPictureFrameTilemap_3[] = INCBIN_U8("graphics/picture_frame/frame3_map.bin.rl");
+const u8 gPictureFrameTilemap_4[] = INCBIN_U8("graphics/picture_frame/frame4_map.bin.rl");
+const u8 gPictureFrameTilemap_5[] = INCBIN_U8("graphics/picture_frame/frame5_map.bin.rl");
+const u8 *const gUnknown_083F60AC[] =
+{
+ OtherText_Cool,
+ OtherText_Beauty2,
+ OtherText_Cute,
+ OtherText_Smart,
+ OtherText_Tough,
+};
+const struct LabelPair gUnknown_083F60C0[] =
+{
+ {OtherText_NonstopSuperCool, OtherText_Terminator6},
+ {OtherText_GoodLookingPoke, OtherText_Terminator7},
+ {OtherText_MarvelousGreat, OtherText_Terminator8},
+ {OtherText_CenturyLastVenus, OtherText_Terminator9},
+ {OtherText_Terminator10, OtherText_DazzlingSlime},
+ {OtherText_PokeCenterIdol, OtherText_Terminator11},
+ {OtherText_LovelyAndSweet, OtherText_Terminator12},
+ {OtherText_ThePretty, OtherText_WinningPortrait},
+ {OtherText_GiveUsWink, OtherText_Terminator13},
+ {OtherText_SmartnessMaestro, OtherText_Terminator15},
+ {OtherText_ChosenPokeAmong, OtherText_Terminator15},
+ {OtherText_TheExcellent, OtherText_ItsMomentOfElegance},
+ {OtherText_PowerfullyMuscular, OtherText_Terminator16},
+ {OtherText_StrongErEst, OtherText_Terminator17},
+ {OtherText_MightyTough, OtherText_Exclamation},
+};
+const struct OamData gOamData_83F6138 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 1,
+ .bpp = 1,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+const u16 gUnknown_083F6140[] = {0, 0};
static void ShowContestPainting();
static void CB2_HoldContestPainting(void);
@@ -312,9 +392,9 @@ static void ContestPaintingPrintCaption(u8 contestType, u8 arg1)
}
else
{
- ptr = StringCopy(ptr, *gUnknown_083F60C0[type].prefix);
+ ptr = StringCopy(ptr, gUnknown_083F60C0[type].prefix);
ptr = StringCopy10(ptr, gUnknown_03005E8C->pokemon_name);
- ptr = StringCopy(ptr, *gUnknown_083F60C0[type].suffix);
+ ptr = StringCopy(ptr, gUnknown_083F60C0[type].suffix);
xPos = 3;
yPos = 14;
@@ -656,7 +736,7 @@ static void sub_8106C40(u8 arg0, u8 arg1)
{
u8 x, y;
- LoadPalette(gPictureFramePalettes, 0, 128 * 2);
+ LoadPalette(gPictureFramePalettes, 0, sizeof(gPictureFramePalettes));
if (arg1 == 1)
{
switch (gUnknown_03005E8C->contestType / 3)
diff --git a/src/heal_location.c b/src/heal_location.c
index a780ee470..42bc18567 100644
--- a/src/heal_location.c
+++ b/src/heal_location.c
@@ -1,9 +1,34 @@
#include "global.h"
#include "heal_location.h"
+#include "map_constants.h"
#define NUM_HEAL_LOCATIONS 22
-extern const struct HealLocation gHealLocations[];
+static const struct HealLocation sHealLocations[] =
+{
+ {MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, 4, 2},
+ {MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_2F, MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_2F, 4, 2},
+ {MAP_GROUP_PETALBURG_CITY, MAP_ID_PETALBURG_CITY, 20, 17},
+ {MAP_GROUP_SLATEPORT_CITY, MAP_ID_SLATEPORT_CITY, 19, 20},
+ {MAP_GROUP_MAUVILLE_CITY, MAP_ID_MAUVILLE_CITY, 22, 6},
+ {MAP_GROUP_RUSTBORO_CITY, MAP_ID_RUSTBORO_CITY, 16, 39},
+ {MAP_GROUP_FORTREE_CITY, MAP_ID_FORTREE_CITY, 5, 7},
+ {MAP_GROUP_LILYCOVE_CITY, MAP_ID_LILYCOVE_CITY, 24, 15},
+ {MAP_GROUP_MOSSDEEP_CITY, MAP_ID_MOSSDEEP_CITY, 28, 17},
+ {MAP_GROUP_SOOTOPOLIS_CITY, MAP_ID_SOOTOPOLIS_CITY, 43, 32},
+ {MAP_GROUP_EVER_GRANDE_CITY, MAP_ID_EVER_GRANDE_CITY, 27, 49},
+ {MAP_GROUP_LITTLEROOT_TOWN, MAP_ID_LITTLEROOT_TOWN, 5, 9},
+ {MAP_GROUP_LITTLEROOT_TOWN, MAP_ID_LITTLEROOT_TOWN, 14, 9},
+ {MAP_GROUP_OLDALE_TOWN, MAP_ID_OLDALE_TOWN, 6, 17},
+ {MAP_GROUP_DEWFORD_TOWN, MAP_ID_DEWFORD_TOWN, 2, 11},
+ {MAP_GROUP_LAVARIDGE_TOWN, MAP_ID_LAVARIDGE_TOWN, 9, 7},
+ {MAP_GROUP_FALLARBOR_TOWN, MAP_ID_FALLARBOR_TOWN, 14, 8},
+ {MAP_GROUP_VERDANTURF_TOWN, MAP_ID_VERDANTURF_TOWN, 16, 4},
+ {MAP_GROUP_PACIFIDLOG_TOWN, MAP_ID_PACIFIDLOG_TOWN, 8, 16},
+ {MAP_GROUP_EVER_GRANDE_CITY, MAP_ID_EVER_GRANDE_CITY, 18, 6},
+ {MAP_GROUP_BATTLE_TOWER_OUTSIDE, MAP_ID_BATTLE_TOWER_OUTSIDE, 14, 9},
+ {MAP_GROUP_SOUTHERN_ISLAND_EXTERIOR, MAP_ID_SOUTHERN_ISLAND_EXTERIOR, 15, 20},
+};
u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum)
{
@@ -11,7 +36,7 @@ u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum)
for (i = 0; i < NUM_HEAL_LOCATIONS; i++)
{
- if (gHealLocations[i].group == mapGroup && gHealLocations[i].map == mapNum)
+ if (sHealLocations[i].group == mapGroup && sHealLocations[i].map == mapNum)
return i + 1;
}
return 0;
@@ -24,7 +49,7 @@ const struct HealLocation *GetHealLocationByMap(u16 mapGroup, u16 mapNum)
if (index == 0)
return NULL;
else
- return &gHealLocations[index - 1];
+ return &sHealLocations[index - 1];
}
const struct HealLocation *GetHealLocation(u32 index)
@@ -34,5 +59,5 @@ const struct HealLocation *GetHealLocation(u32 index)
else if (index > NUM_HEAL_LOCATIONS)
return NULL;
else
- return &gHealLocations[index - 1];
+ return &sHealLocations[index - 1];
}
diff --git a/src/intro.c b/src/intro.c
index a2adbe0f5..de4234271 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -33,7 +33,6 @@ extern u16 gUnknown_02039318;
extern u16 gUnknown_0203931A;
extern u16 gUnknown_02039358;
extern u16 gUnknown_0203935A;
-
extern u32 gIntroFrameCounter;
extern struct GcmbStruct gUnknown_03005EE0;
extern u16 gSaveFileStatus;
@@ -45,53 +44,28 @@ extern struct MonCoords gMonBackPicCoords[];
extern struct SpriteSheet gTrainerBackPicTable[];
extern struct MonCoords gTrainerBackPicCoords[];
extern struct SpritePalette gTrainerBackPicPaletteTable[];
-
-extern const union AnimCmd *const gUnknown_0840AE80[];
-extern const struct SpriteTemplate gSpriteTemplate_840AFF0;
-extern const struct SpritePalette gUnknown_0840B028[];
-extern const struct SpriteTemplate gSpriteTemplate_840B1F4;
-extern const struct SpriteSheet gIntro3PokeballGfx_Table;
-extern const struct SpriteSheet gIntro3MiscGfx_Table;
-extern const struct SpritePalette gInterfacePokeballPal_Table;
-extern const struct SpritePalette gIntro3MiscPal_Table[];
+extern const u8 gInterfaceGfx_PokeBall[];
+extern const u16 gInterfacePal_PokeBall[];
extern const struct SpriteSheet gIntro2BrendanSpriteSheet;
extern const struct SpriteSheet gIntro2MaySpriteSheet;
extern const struct SpriteSheet gIntro2BicycleSpriteSheet;
extern const struct SpriteSheet gIntro2LatiosSpriteSheet;
extern const struct SpriteSheet gIntro2LatiasSpriteSheet;
extern const struct SpritePalette gIntro2SpritePalettes[];
-
-extern const struct SpriteTemplate gSpriteTemplate_840AE20;
-
extern const u8 gIntroCopyright_Gfx[];
extern const u16 gIntroCopyright_Pal[];
extern const u16 gIntroCopyright_Tilemap[];
-
extern const u16 gUnknown_08393E64[];
-extern const struct SpriteTemplate gSpriteTemplate_840AF94;
-extern const struct SpriteTemplate gSpriteTemplate_840AFAC;
-extern const struct SpriteTemplate gSpriteTemplate_840AFC4;
-extern const struct SpriteTemplate gSpriteTemplate_840B084;
-extern const struct SpriteTemplate gSpriteTemplate_840B0B0;
-extern const struct SpriteTemplate gSpriteTemplate_840B0DC;
-extern const struct SpriteTemplate gSpriteTemplate_840B0F4;
-extern const struct SpriteTemplate gSpriteTemplate_840B124;
-extern const struct SpriteTemplate gSpriteTemplate_840B150;
-extern const u8 gUnknown_0840B168[];
-extern const struct SpriteTemplate gSpriteTemplate_840B170;
-extern const u16 gUnknown_0840B188[];
-extern const struct SpriteTemplate gSpriteTemplate_840B1B0;
-extern const struct SpriteTemplate gSpriteTemplate_840B1C8;
-extern void *gUnknown_0840B5A0[];
+extern void *const gUnknown_0840B5A0[];
extern const s16 gSineTable[];
//--------------------------------------------------
// Graphics Data
//--------------------------------------------------
-const u16 Palette_406340[] = INCBIN_U16("graphics/intro/unknown1.gbapal");
-const u16 Palette_406360[] = INCBIN_U16("graphics/intro/unknown2.gbapal");
-const u8 gIntroTiles[] = INCBIN_U8("graphics/intro/intro.4bpp.lz");
+static const u16 Palette_406340[] = INCBIN_U16("graphics/intro/unknown1.gbapal");
+static const u16 Palette_406360[] = INCBIN_U16("graphics/intro/unknown2.gbapal");
+static const u8 gIntroTiles[] = INCBIN_U8("graphics/intro/intro.4bpp.lz");
static const u16 gIntro1BGPals[][16] =
{
INCBIN_U16("graphics/intro/intro1_bgpal1.gbapal"),
@@ -122,11 +96,11 @@ static const u8 gIntro3Pokeball_Gfx[] = INCBIN_U8("graphics/intro/intro3_pokebal
static const u16 gIntro3Streaks_Pal[] = INCBIN_U16("graphics/intro/intro3_streaks.gbapal");
static const u8 gIntro3Streaks_Gfx[] = INCBIN_U8("graphics/intro/intro3_streaks.4bpp.lz");
static const u8 gIntro3Streaks_Tilemap[] = INCBIN_U8("graphics/intro/intro3_streaks_map.bin.lz");
-const u16 gIntro3Misc1Palette[] = INCBIN_U16("graphics/intro/intro3_misc1.gbapal");
-const u16 gIntro3Misc2Palette[] = INCBIN_U16("graphics/intro/intro3_misc2.gbapal");
-const u8 gIntro3MiscTiles[] = INCBIN_U8("graphics/intro/intro3_misc.4bpp.lz");
-const u16 gIntro1EonPalette[] = INCBIN_U16("graphics/intro/intro1_eon.gbapal");
-const u8 gIntro1EonTiles[] = INCBIN_U8("graphics/intro/intro1_eon.4bpp.lz");
+static const u16 gIntro3Misc1Palette[] = INCBIN_U16("graphics/intro/intro3_misc1.gbapal");
+static const u16 gIntro3Misc2Palette[] = INCBIN_U16("graphics/intro/intro3_misc2.gbapal");
+static const u8 gIntro3MiscTiles[] = INCBIN_U8("graphics/intro/intro3_misc.4bpp.lz");
+static const u16 gIntro1EonPalette[] = INCBIN_U16("graphics/intro/intro1_eon.gbapal");
+static const u8 gIntro1EonTiles[] = INCBIN_U8("graphics/intro/intro1_eon.4bpp.lz");
static const struct OamData gOamData_840ADE8 =
{
.y = 160,
@@ -218,7 +192,7 @@ static const union AnimCmd *const gUnknown_0840AE80[] =
Unknown_40AE60,
Unknown_40AE70,
};
-const struct OamData gOamData_840AE90 =
+static const struct OamData gOamData_840AE90 =
{
.y = 160,
.affineMode = 0,
@@ -234,7 +208,7 @@ const struct OamData gOamData_840AE90 =
.paletteNum = 0,
.affineParam = 0,
};
-const struct OamData gOamData_840AE98 =
+static const struct OamData gOamData_840AE98 =
{
.y = 160,
.affineMode = 0,
@@ -250,7 +224,7 @@ const struct OamData gOamData_840AE98 =
.paletteNum = 0,
.affineParam = 0,
};
-const struct OamData gOamData_840AEA0 =
+static const struct OamData gOamData_840AEA0 =
{
.y = 160,
.affineMode = 0,
@@ -336,7 +310,7 @@ static const union AnimCmd gSpriteAnim_840AF10[] =
ANIMCMD_FRAME(128, 8),
ANIMCMD_END,
};
-const union AnimCmd *const gSpriteAnimTable_840AF18[] =
+static const union AnimCmd *const gSpriteAnimTable_840AF18[] =
{
gSpriteAnim_840AEA8,
gSpriteAnim_840AEB0,
@@ -346,7 +320,7 @@ const union AnimCmd *const gSpriteAnimTable_840AF18[] =
gSpriteAnim_840AED0,
gSpriteAnim_840AED8,
};
-const union AnimCmd *const gSpriteAnimTable_840AF34[] =
+static const union AnimCmd *const gSpriteAnimTable_840AF34[] =
{
gSpriteAnim_840AEE0,
gSpriteAnim_840AEE8,
@@ -355,7 +329,7 @@ const union AnimCmd *const gSpriteAnimTable_840AF34[] =
gSpriteAnim_840AF00,
gSpriteAnim_840AF08,
};
-const union AnimCmd *const gSpriteAnimTable_840AF4C[] =
+static const union AnimCmd *const gSpriteAnimTable_840AF4C[] =
{
gSpriteAnim_840AF10,
};
@@ -382,8 +356,8 @@ static const s16 gUnknown_0840AF74[][2] =
{5, 20},
{3, 28},
};
-void sub_813D908(struct Sprite *sprite);
-const struct SpriteTemplate gSpriteTemplate_840AF94 =
+static void sub_813D908(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840AF94 =
{
.tileTag = 2000,
.paletteTag = 2001,
@@ -393,7 +367,7 @@ const struct SpriteTemplate gSpriteTemplate_840AF94 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_813D908,
};
-const struct SpriteTemplate gSpriteTemplate_840AFAC =
+static const struct SpriteTemplate gSpriteTemplate_840AFAC =
{
.tileTag = 2000,
.paletteTag = 2001,
@@ -403,7 +377,7 @@ const struct SpriteTemplate gSpriteTemplate_840AFAC =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_813D908,
};
-const struct SpriteTemplate gSpriteTemplate_840AFC4 =
+static const struct SpriteTemplate gSpriteTemplate_840AFC4 =
{
.tileTag = 2000,
.paletteTag = 2001,
@@ -413,7 +387,7 @@ const struct SpriteTemplate gSpriteTemplate_840AFC4 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_813D908,
};
-const struct OamData gOamData_840AFDC =
+static const struct OamData gOamData_840AFDC =
{
.y = 160,
.affineMode = 0,
@@ -429,17 +403,17 @@ const struct OamData gOamData_840AFDC =
.paletteNum = 0,
.affineParam = 0,
};
-const union AnimCmd gSpriteAnim_840AFE4[] =
+static const union AnimCmd gSpriteAnim_840AFE4[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_JUMP(0),
};
-const union AnimCmd *const gSpriteAnimTable_840AFEC[] =
+static const union AnimCmd *const gSpriteAnimTable_840AFEC[] =
{
gSpriteAnim_840AFE4,
};
-void sub_813DA64(struct Sprite *sprite);
-const struct SpriteTemplate gSpriteTemplate_840AFF0 =
+static void sub_813DA64(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840AFF0 =
{
.tileTag = 2002,
.paletteTag = 2002,
@@ -466,29 +440,29 @@ const struct SpritePalette gUnknown_0840B028[] =
{gIntro1EonPalette, 2002},
{NULL},
};
-const union AnimCmd gUnknown_0840B048[] =
+static const union AnimCmd gUnknown_0840B048[] =
{
ANIMCMD_FRAME(3, 0),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_0840B050[] =
+static const union AnimCmd gUnknown_0840B050[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_0840B058[] =
+static const union AnimCmd gUnknown_0840B058[] =
{
ANIMCMD_FRAME(1, 8),
ANIMCMD_FRAME(2, 8),
ANIMCMD_END,
};
-const union AnimCmd *const gUnknown_0840B064[] =
+static const union AnimCmd *const gUnknown_0840B064[] =
{
gUnknown_0840B048,
gUnknown_0840B050,
gUnknown_0840B058,
};
-const struct OamData gOamData_840B070 =
+static const struct OamData gOamData_840B070 =
{
.y = 160,
.affineMode = 0,
@@ -504,17 +478,17 @@ const struct OamData gOamData_840B070 =
.paletteNum = 0,
.affineParam = 0,
};
-const union AnimCmd gSpriteAnim_840B078[] =
+static const union AnimCmd gSpriteAnim_840B078[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_END,
};
-const union AnimCmd *const gSpriteAnimTable_840B080[] =
+static const union AnimCmd *const gSpriteAnimTable_840B080[] =
{
gSpriteAnim_840B078,
};
-void sub_813E30C(struct Sprite *sprite);
-const struct SpriteTemplate gSpriteTemplate_840B084 =
+static void sub_813E30C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B084 =
{
.tileTag = 2002,
.paletteTag = 2002,
@@ -524,7 +498,7 @@ const struct SpriteTemplate gSpriteTemplate_840B084 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_813E30C,
};
-const struct OamData gOamData_840B09C =
+static const struct OamData gOamData_840B09C =
{
.y = 160,
.affineMode = 0,
@@ -540,17 +514,17 @@ const struct OamData gOamData_840B09C =
.paletteNum = 0,
.affineParam = 0,
};
-const union AnimCmd gSpriteAnim_840B0A4[] =
+static const union AnimCmd gSpriteAnim_840B0A4[] =
{
ANIMCMD_FRAME(1, 8),
ANIMCMD_END,
};
-const union AnimCmd *const gSpriteAnimTable_840B0AC[] =
+static const union AnimCmd *const gSpriteAnimTable_840B0AC[] =
{
gSpriteAnim_840B0A4,
};
-void sub_813E4B8(struct Sprite *sprite);
-const struct SpriteTemplate gSpriteTemplate_840B0B0 =
+static void sub_813E4B8(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B0B0 =
{
.tileTag = 2003,
.paletteTag = 2003,
@@ -560,7 +534,7 @@ const struct SpriteTemplate gSpriteTemplate_840B0B0 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_813E4B8,
};
-const struct OamData gOamData_840B0C8 =
+static const struct OamData gOamData_840B0C8 =
{
.y = 160,
.affineMode = 0,
@@ -576,17 +550,17 @@ const struct OamData gOamData_840B0C8 =
.paletteNum = 0,
.affineParam = 0,
};
-const union AnimCmd gSpriteAnim_840B0D0[] =
+static const union AnimCmd gSpriteAnim_840B0D0[] =
{
ANIMCMD_FRAME(14, 8),
ANIMCMD_END,
};
-const union AnimCmd *const gSpriteAnimTable_840B0D8[] =
+static const union AnimCmd *const gSpriteAnimTable_840B0D8[] =
{
gSpriteAnim_840B0D0,
};
-void sub_813E5E0(struct Sprite *sprite);
-const struct SpriteTemplate gSpriteTemplate_840B0DC =
+static void sub_813E5E0(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B0DC =
{
.tileTag = 2003,
.paletteTag = 2004,
@@ -596,8 +570,8 @@ const struct SpriteTemplate gSpriteTemplate_840B0DC =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_813E5E0,
};
-void sub_813E6C0(struct Sprite *sprite);
-const struct SpriteTemplate gSpriteTemplate_840B0F4 =
+static void sub_813E6C0(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B0F4 =
{
.tileTag = 2003,
.paletteTag = 2004,
@@ -607,7 +581,93 @@ const struct SpriteTemplate gSpriteTemplate_840B0F4 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_813E6C0,
};
-const struct OamData gOamData_840B10C =
+static const struct OamData gOamData_840B10C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B114[] =
+{
+ ANIMCMD_FRAME(6, 8),
+ ANIMCMD_FRAME(6, 8, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+static const union AnimCmd *const gSpriteAnimTable_840B120[] =
+{
+ gSpriteAnim_840B114,
+};
+static void sub_813E804(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B124 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B10C,
+ .anims = gSpriteAnimTable_840B120,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E804,
+};
+static const struct OamData gOamData_840B13C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B144[] =
+{
+ ANIMCMD_FRAME(10, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B14C[] =
+{
+ gSpriteAnim_840B144,
+};
+static void sub_813E980(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B150 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B13C,
+ .anims = gSpriteAnimTable_840B14C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E980,
+};
+static const u8 gUnknown_0840B168[] = {0xE6, 0xEB, 0xE4, 0xEA, 0xE5, 0xE9, 0xE7, 0xE8};
+static void sub_813EA60(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B170 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B13C,
+ .anims = gSpriteAnimTable_840B14C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813EA60,
+};
+static const u16 gUnknown_0840B188[] = {0x200, 0x1C0, 0x180, 0x140, 0x100, 0xE0, 0xC0, 0xA0, 0x80, 0x80};
+static const struct OamData gOamData_840B19C =
{
.y = 160,
.affineMode = 0,
@@ -623,6 +683,95 @@ const struct OamData gOamData_840B10C =
.paletteNum = 0,
.affineParam = 0,
};
+static const union AnimCmd gSpriteAnim_840B1A4[] =
+{
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B1AC[] =
+{
+ gSpriteAnim_840B1A4,
+};
+static void sub_813EBBC(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B1B0 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B19C,
+ .anims = gSpriteAnimTable_840B1AC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813EBBC,
+};
+static void sub_813EC90(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B1C8 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B19C,
+ .anims = gSpriteAnimTable_840B1AC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813EC90,
+};
+static const struct OamData gOamData_840B1E0 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B1E8[] =
+{
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B1F0[] =
+{
+ gSpriteAnim_840B1E8,
+};
+static void sub_813EDFC(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B1F4 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2003,
+ .oam = &gOamData_840B1E0,
+ .anims = gSpriteAnimTable_840B1F0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813EDFC,
+};
+const struct SpriteSheet gIntro3PokeballGfx_Table[] =
+{
+ {gInterfaceGfx_PokeBall, 0x100, 2002},
+ {NULL},
+};
+const struct SpriteSheet gIntro3MiscGfx_Table[] =
+{
+ {gIntro3MiscTiles, 0xa00, 2003},
+ {NULL},
+};
+const struct SpritePalette gInterfacePokeballPal_Table[] =
+{
+ {gInterfacePal_PokeBall, 2002},
+ {NULL},
+};
+const struct SpritePalette gIntro3MiscPal_Table[] =
+{
+ {gIntro3Misc1Palette, 2003},
+ {gIntro3Misc2Palette, 2004},
+ {NULL},
+};
+const u32 unusedData = 0x02000000;
static void MainCB2_EndIntro(void);
static void Task_IntroLoadPart1Graphics(u8);
@@ -650,18 +799,18 @@ static void sub_813CCE8(u8);
static u16 sub_813CE88(u16, s16, s16, u16, u8);
static u8 sub_813CFA8(u16, u16, u16, u16);
static void sub_813D084(u8);
-void sub_813D220(struct Sprite *);
-void sub_813D368(struct Sprite *);
-void sub_813D414(struct Sprite *);
-void SpriteCB_WaterDropFall(struct Sprite *);
+static void sub_813D220(struct Sprite *);
+static void sub_813D368(struct Sprite *);
+static void sub_813D414(struct Sprite *);
+static void SpriteCB_WaterDropFall(struct Sprite *);
static u8 CreateWaterDrop(s16, s16, u16, u16, u16, u8);
-void sub_813D788(struct Sprite *);
-void sub_813D880(struct Sprite *);
+static void sub_813D788(struct Sprite *);
+static void sub_813D880(struct Sprite *);
static u8 CreateGameFreakLogo(s16, s16, u8);
-void sub_813DB9C(struct Sprite *);
-void sub_813DE70(struct Sprite *);
-void sub_813E10C(struct Sprite *);
-void sub_813E210(struct Sprite *);
+static void sub_813DB9C(struct Sprite *);
+static void sub_813DE70(struct Sprite *);
+static void sub_813E10C(struct Sprite *);
+static void sub_813E210(struct Sprite *);
static void sub_813E580(u16, u16);
static void sub_813E7C0(u8);
static void sub_813E930(u8);
@@ -1095,9 +1244,9 @@ static void Task_IntroLoadPart3Streaks(u8 taskId)
ResetSpriteData();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 8;
- LoadCompressedObjectPic(&gIntro3PokeballGfx_Table);
- LoadCompressedObjectPic(&gIntro3MiscGfx_Table);
- LoadCompressedObjectPalette(&gInterfacePokeballPal_Table);
+ LoadCompressedObjectPic(&gIntro3PokeballGfx_Table[0]);
+ LoadCompressedObjectPic(&gIntro3MiscGfx_Table[0]);
+ LoadCompressedObjectPalette(&gInterfacePokeballPal_Table[0]);
LoadSpritePalettes(gIntro3MiscPal_Table);
gTasks[taskId].func = task_intro_14;
}
@@ -1668,7 +1817,7 @@ static void sub_813D084(u8 a)
gPlttBufferFaded[241] = color;
}
-void sub_813D0CC(struct Sprite *sprite)
+static void sub_813D0CC(struct Sprite *sprite)
{
u8 r0;
@@ -1695,7 +1844,7 @@ void sub_813D0CC(struct Sprite *sprite)
}
}
-void sub_813D158(struct Sprite *sprite)
+static void sub_813D158(struct Sprite *sprite)
{
if (gSprites[sprite->data7].data7 != 0)
{
@@ -1725,7 +1874,7 @@ static void sub_813D208(struct Sprite *sprite)
sprite->callback = sub_813D220;
}
-void sub_813D220(struct Sprite *sprite)
+static void sub_813D220(struct Sprite *sprite)
{
if (sprite->pos1.x <= 116)
{
@@ -1774,7 +1923,7 @@ void sub_813D220(struct Sprite *sprite)
}
}
-void sub_813D368(struct Sprite *sprite)
+static void sub_813D368(struct Sprite *sprite)
{
SetOamMatrix(sprite->data1, sprite->data6 + 64, 0, 0, sprite->data6 + 64);
SetOamMatrix(sprite->data1 + 1, sprite->data6 + 64, 0, 0, sprite->data6 + 64);
@@ -1795,7 +1944,7 @@ void sub_813D368(struct Sprite *sprite)
}
}
-void sub_813D414(struct Sprite *sprite)
+static void sub_813D414(struct Sprite *sprite)
{
if (sprite->data0 != 2)
{
@@ -1812,7 +1961,7 @@ void sub_813D414(struct Sprite *sprite)
}
}
-void SpriteCB_WaterDropFall(struct Sprite *sprite)
+static void SpriteCB_WaterDropFall(struct Sprite *sprite)
{
if (sprite->pos1.y < sprite->data5)
{
@@ -1835,7 +1984,7 @@ void SpriteCB_WaterDropFall(struct Sprite *sprite)
}
//Duplicate function
-void SpriteCB_WaterDropFall_2(struct Sprite *sprite)
+static void SpriteCB_WaterDropFall_2(struct Sprite *sprite)
{
if (sprite->pos1.y < sprite->data5)
{
@@ -1904,7 +2053,7 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately)
return oldSpriteId;
}
-void sub_813D788(struct Sprite *sprite)
+static void sub_813D788(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1956,7 +2105,7 @@ void sub_813D788(struct Sprite *sprite)
}
}
-void sub_813D880(struct Sprite *sprite)
+static void sub_813D880(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1983,7 +2132,7 @@ void sub_813D880(struct Sprite *sprite)
sprite->data1 += 4;
}
-void sub_813D908(struct Sprite *sprite)
+static void sub_813D908(struct Sprite *sprite)
{
if (gTasks[sprite->data0].data[0] == 0)
{
@@ -2023,7 +2172,7 @@ static u8 CreateGameFreakLogo(s16 a, s16 b, u8 c)
}
#ifdef NONMATCHING
-void sub_813DA64(struct Sprite *sprite)
+static void sub_813DA64(struct Sprite *sprite)
{
sprite->data7++;
@@ -2084,7 +2233,7 @@ void sub_813DA64(struct Sprite *sprite)
}
#else
__attribute__((naked))
-void sub_813DA64(struct Sprite *sprite)
+static void sub_813DA64(struct Sprite *sprite)
{
asm(".syntax unified\n\
push {r4-r6,lr}\n\
@@ -2255,7 +2404,7 @@ _0813DB94:\n\
}
#endif
-void sub_813DB9C(struct Sprite *sprite)
+static void sub_813DB9C(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -2331,7 +2480,7 @@ void sub_813DB9C(struct Sprite *sprite)
}
}
-void sub_813DD58(struct Sprite *sprite)
+static void sub_813DD58(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -2374,7 +2523,7 @@ void sub_813DD58(struct Sprite *sprite)
}
}
-void sub_813DE70(struct Sprite *sprite)
+static void sub_813DE70(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -2452,7 +2601,7 @@ void sub_813DE70(struct Sprite *sprite)
}
}
-void sub_813E10C(struct Sprite *sprite)
+static void sub_813E10C(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -2520,7 +2669,7 @@ void sub_813E10C(struct Sprite *sprite)
}
}
-void sub_813E210(struct Sprite *sprite)
+static void sub_813E210(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -2588,7 +2737,7 @@ void sub_813E210(struct Sprite *sprite)
}
}
-void sub_813E30C(struct Sprite *sprite)
+static void sub_813E30C(struct Sprite *sprite)
{
u16 r4, r1;
@@ -2643,7 +2792,7 @@ void sub_813E30C(struct Sprite *sprite)
}
}
-void sub_813E4B8(struct Sprite *sprite)
+static void sub_813E4B8(struct Sprite *sprite)
{
u16 r4;
u16 r2;
@@ -2689,7 +2838,7 @@ static void sub_813E580(u16 x, u16 y)
}
}
-void sub_813E5E0(struct Sprite *sprite)
+static void sub_813E5E0(struct Sprite *sprite)
{
if (gUnknown_0203931A != 0)
{
@@ -2711,7 +2860,7 @@ void sub_813E5E0(struct Sprite *sprite)
}
}
-void sub_813E6C0(struct Sprite *sprite)
+static void sub_813E6C0(struct Sprite *sprite)
{
u8 spriteId;
u8 i;
@@ -2767,7 +2916,7 @@ static void sub_813E7C0(u8 a)
}
}
-void sub_813E804(struct Sprite *sprite)
+static void sub_813E804(struct Sprite *sprite)
{
if (gUnknown_0203931A != 0)
{
@@ -2808,7 +2957,7 @@ static void sub_813E930(u8 a)
}
}
-void sub_813E980(struct Sprite *sprite)
+static void sub_813E980(struct Sprite *sprite)
{
if (gUnknown_0203931A != 0)
{
@@ -2834,7 +2983,7 @@ void sub_813E980(struct Sprite *sprite)
}
}
-void sub_813EA60(struct Sprite *sprite)
+static void sub_813EA60(struct Sprite *sprite)
{
bool32 r6;
s16 r1, r2;
@@ -2891,7 +3040,7 @@ static void InitIntroTorchicAttackAnim(u8 a)
}
}
-void sub_813EBBC(struct Sprite *sprite)
+static void sub_813EBBC(struct Sprite *sprite)
{
if (gUnknown_0203931A != 0)
{
@@ -2911,7 +3060,7 @@ void sub_813EBBC(struct Sprite *sprite)
}
}
-void sub_813EC90(struct Sprite *sprite)
+static void sub_813EC90(struct Sprite *sprite)
{
bool32 r6;
s16 r1, r2;
@@ -2970,7 +3119,7 @@ static void InitIntroMudkipAttackAnim(u8 a)
}
}
-void sub_813EDFC(struct Sprite *sprite)
+static void sub_813EDFC(struct Sprite *sprite)
{
u16 foo;
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 29c090fc0..f2c53610b 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -19,32 +19,47 @@ struct MonCoords
u8 x, y;
};
+extern void * const gUnknown_081FAF4C[];
+extern const u8 gOtherText_DoYouChoosePoke[];
+extern u16 gScriptResult;
+extern const u8 gSpeciesNames[][11];
+extern const u8 gOtherText_Poke[];
+extern const struct SpriteSheet gMonFrontPicTable[];
+extern const struct MonCoords gMonFrontPicCoords[];
+extern const struct SpritePalette gMonPaletteTable[];
+extern const u8 gOtherText_BirchInTrouble[];
+extern struct SpriteTemplate gUnknown_02024E8C;
+
+//--------------------------------------------------
+// Graphics Data
+//--------------------------------------------------
+
const u16 gBirchBagGrassPal[][16] =
{
INCBIN_U16("graphics/misc/birch_bag.gbapal"),
INCBIN_U16("graphics/misc/birch_grass.gbapal"),
};
-const u16 gBirchBallarrow_Pal[] = INCBIN_U16("graphics/misc/birch_ballarrow.gbapal");
-const u16 gBirchCircle_Pal[] = INCBIN_U16("graphics/misc/birch_circle.gbapal");
+static const u16 gBirchBallarrow_Pal[] = INCBIN_U16("graphics/misc/birch_ballarrow.gbapal");
+static const u16 gBirchCircle_Pal[] = INCBIN_U16("graphics/misc/birch_circle.gbapal");
const u8 gBirchBagTilemap[] = INCBIN_U8("graphics/misc/birch_bag_map.bin.lz");
const u8 gBirchGrassTilemap[] = INCBIN_U8("graphics/misc/birch_grass_map.bin.lz");
const u8 gBirchHelpGfx[] = INCBIN_U8("graphics/misc/birch_help.4bpp.lz");
-const u8 gBirchBallarrow_Gfx[] = INCBIN_U8("graphics/misc/birch_ballarrow.4bpp.lz");
-const u8 gBirchCircle_Gfx[] = INCBIN_U8("graphics/misc/birch_circle.4bpp.lz");
-const u8 gStarterChoose_PokeballCoords[][2] =
+static const u8 gBirchBallarrow_Gfx[] = INCBIN_U8("graphics/misc/birch_ballarrow.4bpp.lz");
+static const u8 gBirchCircle_Gfx[] = INCBIN_U8("graphics/misc/birch_circle.4bpp.lz");
+static const u8 gStarterChoose_PokeballCoords[][2] =
{
{60, 64},
{120, 88},
{180, 64},
};
-const u8 gStarterChoose_LabelCoords[][2] =
+static const u8 gStarterChoose_LabelCoords[][2] =
{
{0, 9},
{16, 10},
{8, 4},
};
-const u16 gStarterMons[] = {SPECIES_TREECKO, SPECIES_TORCHIC, SPECIES_MUDKIP};
-const struct OamData gOamData_83F76CC =
+static const u16 sStarterMons[] = {SPECIES_TREECKO, SPECIES_TORCHIC, SPECIES_MUDKIP};
+static const struct OamData gOamData_83F76CC =
{
.y = 160,
.affineMode = 0,
@@ -60,7 +75,7 @@ const struct OamData gOamData_83F76CC =
.paletteNum = 0,
.affineParam = 0,
};
-const struct OamData gOamData_83F76D4 =
+static const struct OamData gOamData_83F76D4 =
{
.y = 160,
.affineMode = 0,
@@ -76,7 +91,7 @@ const struct OamData gOamData_83F76D4 =
.paletteNum = 0,
.affineParam = 0,
};
-const struct OamData gOamData_83F76DC =
+static const struct OamData gOamData_83F76DC =
{
.y = 160,
.affineMode = 3,
@@ -92,24 +107,24 @@ const struct OamData gOamData_83F76DC =
.paletteNum = 0,
.affineParam = 0,
};
-const u8 gUnknown_083F76E4[][2] =
+static const u8 gUnknown_083F76E4[][2] =
{
{60, 32},
{120, 56},
{180, 32},
{0, 0},
};
-const union AnimCmd gSpriteAnim_83F76EC[] =
+static const union AnimCmd gSpriteAnim_83F76EC[] =
{
ANIMCMD_FRAME(48, 30),
ANIMCMD_END,
};
-const union AnimCmd gSpriteAnim_83F76F4[] =
+static const union AnimCmd gSpriteAnim_83F76F4[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_END,
};
-const union AnimCmd gSpriteAnim_83F76FC[] =
+static const union AnimCmd gSpriteAnim_83F76FC[] =
{
ANIMCMD_FRAME(16, 4),
ANIMCMD_FRAME(0, 4),
@@ -130,62 +145,93 @@ const union AnimCmd gSpriteAnim_83F76FC[] =
ANIMCMD_FRAME(0, 8),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gSpriteAnim_83F7744[] =
+static const union AnimCmd gSpriteAnim_83F7744[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_END,
};
-const union AnimCmd *const gSpriteAnimTable_83F774C[] =
+static const union AnimCmd *const gSpriteAnimTable_83F774C[] =
{
gSpriteAnim_83F76EC,
};
-const union AnimCmd *const gSpriteAnimTable_83F7750[] =
+static const union AnimCmd *const gSpriteAnimTable_83F7750[] =
{
gSpriteAnim_83F76F4,
gSpriteAnim_83F76FC,
};
-const union AnimCmd *const gSpriteAnimTable_83F7758[] =
+static const union AnimCmd *const gSpriteAnimTable_83F7758[] =
{
gSpriteAnim_83F7744,
};
-const union AffineAnimCmd gSpriteAffineAnim_83F775C[] =
+static const union AffineAnimCmd gSpriteAffineAnim_83F775C[] =
{
AFFINEANIMCMD_FRAME(16, 16, 0, 0),
AFFINEANIMCMD_FRAME(16, 16, 0, 15),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gSpriteAffineAnim_83F7774[] =
+static const union AffineAnimCmd gSpriteAffineAnim_83F7774[] =
{
AFFINEANIMCMD_FRAME(20, 20, 0, 0),
AFFINEANIMCMD_FRAME(20, 20, 0, 15),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd *const gSpriteAffineAnimTable_83F778C[] =
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_83F778C[] =
{
gSpriteAffineAnim_83F775C,
};
-const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7790[] =
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7790[] =
{
gSpriteAffineAnim_83F7774,
};
-
-extern void * const gUnknown_081FAF4C[];
-extern const struct SpriteSheet gUnknown_083F7794;
-extern const struct SpriteSheet gUnknown_083F77A4;
-extern u8 gOtherText_DoYouChoosePoke[];
-extern u16 gScriptResult;
-extern u8 gSpeciesNames[][11];
-extern u8 gOtherText_Poke[];
-extern const struct SpriteSheet gMonFrontPicTable[];
-extern const struct MonCoords gMonFrontPicCoords[];
-extern const struct SpritePalette gMonPaletteTable[];
-extern u8 gOtherText_BirchInTrouble[];
-
-extern struct SpriteTemplate gSpriteTemplate_83F77E4;
-extern struct SpriteTemplate gSpriteTemplate_83F77CC;
-extern struct SpritePalette gUnknown_083F77B4[];
-extern struct SpriteTemplate gSpriteTemplate_83F77FC;
-extern struct SpriteTemplate gUnknown_02024E8C;
+static const struct SpriteSheet gUnknown_083F7794[] =
+{
+ {gBirchBallarrow_Gfx, 0x0800, 0x1000},
+ {NULL},
+};
+static const struct SpriteSheet gUnknown_083F77A4[] =
+{
+ {gBirchCircle_Gfx, 0x0800, 0x1001},
+ {NULL},
+};
+const struct SpritePalette gUnknown_083F77B4[] =
+{
+ {gBirchBallarrow_Pal, 0x1000},
+ {gBirchCircle_Pal, 0x1001},
+ {NULL},
+};
+static void sub_810A62C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F77CC =
+{
+ .tileTag = 4096,
+ .paletteTag = 4096,
+ .oam = &gOamData_83F76CC,
+ .anims = gSpriteAnimTable_83F774C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A62C,
+};
+static void sub_810A68C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F77E4 =
+{
+ .tileTag = 4096,
+ .paletteTag = 4096,
+ .oam = &gOamData_83F76D4,
+ .anims = gSpriteAnimTable_83F7750,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A68C,
+};
+static void StarterPokemonSpriteAnimCallback(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F77FC =
+{
+ .tileTag = 4097,
+ .paletteTag = 4097,
+ .oam = &gOamData_83F76DC,
+ .anims = gSpriteAnimTable_83F7758,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83F7790,
+ .callback = StarterPokemonSpriteAnimCallback,
+};
static void MainCallback2(void);
static void Task_StarterChoose1(u8 taskId);
@@ -202,19 +248,12 @@ static u8 CreatePokemonFrontSprite(u16, u8, u8);
#define STARTER_PKMN_POS_X 120
#define STARTER_PKMN_POS_Y 64
-//Task data
-enum {
- TD_STARTERSELECTION,
- TD_PKMN_SPRITE_ID,
- TD_CIRCLE_SPRITE_ID,
-};
-
//Retrieves one of the available starter Pokemon
u16 GetStarterPokemon(u16 n)
{
if (n > 3)
n = 0;
- return gStarterMons[n];
+ return sStarterMons[n];
}
static void VblankCallback(void)
@@ -224,6 +263,10 @@ static void VblankCallback(void)
TransferPlttBuffer();
}
+#define tStarterSelection data[0]
+#define tPkmnSpriteId data[1]
+#define tCircleSpriteId data[2]
+
void CB2_ChooseStarter(void)
{
u16 savedIme;
@@ -259,8 +302,8 @@ void CB2_ChooseStarter(void)
ResetPaletteFade();
FreeAllSpritePalettes();
LoadPalette(gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal));
- LoadCompressedObjectPic(&gUnknown_083F7794);
- LoadCompressedObjectPic(&gUnknown_083F77A4);
+ LoadCompressedObjectPic(&gUnknown_083F7794[0]);
+ LoadCompressedObjectPic(&gUnknown_083F77A4[0]);
LoadSpritePalettes(gUnknown_083F77B4);
SetUpWindowConfig(&gWindowConfig_81E6C3C);
InitMenuWindow(&gWindowConfig_81E6CE4);
@@ -288,7 +331,7 @@ void CB2_ChooseStarter(void)
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
taskId = CreateTask(Task_StarterChoose1, 0);
- gTasks[taskId].data[TD_STARTERSELECTION] = 1;
+ gTasks[taskId].tStarterSelection = 1;
//Create hand sprite
spriteId = CreateSprite(&gSpriteTemplate_83F77CC, 120, 56, 2);
@@ -322,7 +365,7 @@ static void MainCallback2(void)
static void Task_StarterChoose1(u8 taskId)
{
- CreateStarterPokemonLabel(0xFF, gTasks[taskId].data[TD_STARTERSELECTION]);
+ CreateStarterPokemonLabel(0xFF, gTasks[taskId].tStarterSelection);
MenuDrawTextWindow(2, 14, 27, 19);
MenuPrint(gOtherText_BirchInTrouble, 3, 15);
gTasks[taskId].func = Task_StarterChoose2;
@@ -330,7 +373,7 @@ static void Task_StarterChoose1(u8 taskId)
static void Task_StarterChoose2(u8 taskId)
{
- u8 selection = gTasks[taskId].data[TD_STARTERSELECTION];
+ u8 selection = gTasks[taskId].tStarterSelection;
if (gMain.newKeys & A_BUTTON)
{
@@ -351,16 +394,16 @@ static void Task_StarterChoose2(u8 taskId)
gStarterChoose_PokeballCoords[selection][0],
gStarterChoose_PokeballCoords[selection][1],
1);
- gTasks[taskId].data[TD_CIRCLE_SPRITE_ID] = spriteId;
+ gTasks[taskId].tCircleSpriteId = spriteId;
//Create Pokemon sprite
spriteId = CreatePokemonFrontSprite(
- GetStarterPokemon(gTasks[taskId].data[TD_STARTERSELECTION]),
+ GetStarterPokemon(gTasks[taskId].tStarterSelection),
gStarterChoose_PokeballCoords[selection][0],
gStarterChoose_PokeballCoords[selection][1]);
gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_83F778C;
gSprites[spriteId].callback = StarterPokemonSpriteAnimCallback;
- gTasks[taskId].data[TD_PKMN_SPRITE_ID] = spriteId;
+ gTasks[taskId].tPkmnSpriteId = spriteId;
gTasks[taskId].func = Task_StarterChoose3;
}
@@ -368,22 +411,22 @@ static void Task_StarterChoose2(u8 taskId)
{
if ((gMain.newKeys & DPAD_LEFT) && selection > 0)
{
- gTasks[taskId].data[TD_STARTERSELECTION]--;
- CreateStarterPokemonLabel(selection, gTasks[taskId].data[TD_STARTERSELECTION]);
+ gTasks[taskId].tStarterSelection--;
+ CreateStarterPokemonLabel(selection, gTasks[taskId].tStarterSelection);
}
else if ((gMain.newKeys & DPAD_RIGHT) && selection < 2)
{
- gTasks[taskId].data[TD_STARTERSELECTION]++;
- CreateStarterPokemonLabel(selection, gTasks[taskId].data[TD_STARTERSELECTION]);
+ gTasks[taskId].tStarterSelection++;
+ CreateStarterPokemonLabel(selection, gTasks[taskId].tStarterSelection);
}
}
}
static void Task_StarterChoose3(u8 taskId)
{
- if (gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE_ID]].affineAnimEnded &&
- gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE_ID]].pos1.x == STARTER_PKMN_POS_X &&
- gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE_ID]].pos1.y == STARTER_PKMN_POS_Y)
+ if (gSprites[gTasks[taskId].tCircleSpriteId].affineAnimEnded &&
+ gSprites[gTasks[taskId].tCircleSpriteId].pos1.x == STARTER_PKMN_POS_X &&
+ gSprites[gTasks[taskId].tCircleSpriteId].pos1.y == STARTER_PKMN_POS_Y)
{
gTasks[taskId].func = Task_StarterChoose4;
}
@@ -391,7 +434,7 @@ static void Task_StarterChoose3(u8 taskId)
static void Task_StarterChoose4(u8 taskId)
{
- PlayCry1(GetStarterPokemon(gTasks[taskId].data[TD_STARTERSELECTION]), 0);
+ PlayCry1(GetStarterPokemon(gTasks[taskId].tStarterSelection), 0);
MenuDrawTextWindow(2, 14, 27, 19);
//"Do you choose this POKEMON?"
MenuPrint(gOtherText_DoYouChoosePoke, 3, 15);
@@ -407,7 +450,7 @@ static void Task_StarterChoose5(u8 taskId)
{
case 0: //YES
//Return the starter choice and exit.
- gScriptResult = gTasks[taskId].data[TD_STARTERSELECTION];
+ gScriptResult = gTasks[taskId].tStarterSelection;
SetMainCallback2(gMain.savedCallback);
break;
case 1: //NO
@@ -415,12 +458,12 @@ static void Task_StarterChoose5(u8 taskId)
PlaySE(SE_SELECT);
MenuZeroFillWindowRect(21, 7, 27, 12);
- spriteId = gTasks[taskId].data[TD_PKMN_SPRITE_ID];
+ spriteId = gTasks[taskId].tPkmnSpriteId;
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum));
FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
DestroySprite(&gSprites[spriteId]);
- spriteId = gTasks[taskId].data[TD_CIRCLE_SPRITE_ID];
+ spriteId = gTasks[taskId].tCircleSpriteId;
FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
DestroySprite(&gSprites[spriteId]);
gTasks[taskId].func = Task_StarterChoose6;
@@ -514,9 +557,8 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection)
REG_WIN0V = WIN_RANGE(labelTop, labelBottom);
}
-void nullsub_72(struct Sprite *sprite)
+static void nullsub_72(struct Sprite *sprite)
{
-
}
static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y)
@@ -537,25 +579,25 @@ static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y)
}
//Sprite callback
-void sub_810A62C(struct Sprite *sprite)
+static void sub_810A62C(struct Sprite *sprite)
{
- sprite->pos1.x = gUnknown_083F76E4[gTasks[sprite->data0].data[TD_STARTERSELECTION]][0];
- sprite->pos1.y = gUnknown_083F76E4[gTasks[sprite->data0].data[TD_STARTERSELECTION]][1];
+ sprite->pos1.x = gUnknown_083F76E4[gTasks[sprite->data0].tStarterSelection][0];
+ sprite->pos1.y = gUnknown_083F76E4[gTasks[sprite->data0].tStarterSelection][1];
sprite->pos2.y = Sin(sprite->data1, 8);
sprite->data1 = (u8)sprite->data1 + 4;
}
//Sprite callback
-void sub_810A68C(struct Sprite *sprite)
+static void sub_810A68C(struct Sprite *sprite)
{
- if (gTasks[sprite->data0].data[TD_STARTERSELECTION] == sprite->data1)
+ if (gTasks[sprite->data0].tStarterSelection == sprite->data1)
StartSpriteAnimIfDifferent(sprite, 1);
else
StartSpriteAnimIfDifferent(sprite, 0);
}
//Sprite callback
-void StarterPokemonSpriteAnimCallback(struct Sprite *sprite)
+static void StarterPokemonSpriteAnimCallback(struct Sprite *sprite)
{
//Move sprite to upper center of screen
if (sprite->pos1.x > STARTER_PKMN_POS_X)