diff options
author | Cameron Hall <camthesaxman@users.noreply.github.com> | 2017-01-28 01:31:09 -0500 |
---|---|---|
committer | YamaArashi <YamaArashi@users.noreply.github.com> | 2017-01-27 22:31:09 -0800 |
commit | b9f1143d3e9b32120cc62fcc7a822d3bca8ef976 (patch) | |
tree | 0eab82b1e5172ae6491c619a23b728031c00defe /src | |
parent | 0de796fad05702592c841b692e91506a94428752 (diff) |
define more data in C (#220)
* define more data in C
* correct typo in comments
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_setup.c | 398 | ||||
-rw-r--r-- | src/contest_painting.c | 140 | ||||
-rw-r--r-- | src/heal_location.c | 33 | ||||
-rw-r--r-- | src/intro.c | 377 | ||||
-rw-r--r-- | src/starter_choose.c | 192 |
5 files changed, 894 insertions, 246 deletions
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) |