From b37d8c0821997038c96723d85bcc95734af0c159 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 16 Nov 2017 20:38:10 +0100 Subject: start decompiling wild encounter --- include/global.h | 2 +- include/pokeblock.h | 2 +- include/vars.h | 1 + include/wild_encounter.h | 39 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 include/wild_encounter.h (limited to 'include') diff --git a/include/global.h b/include/global.h index 3421517d7..7547d523b 100644 --- a/include/global.h +++ b/include/global.h @@ -579,7 +579,7 @@ struct SaveBlock1 /*0x2BB0*/ u16 unk2BB0[6]; /*0x2BBC*/ u16 unk2BBC[6]; /*0x2BC8*/ u16 unk2BC8[6]; - /*0x2BD4*/ u16 unk2BD4[3]; + /*0x2BD4*/ u16 unk2BD4[6]; /*0x2BE0*/ struct MailStruct mail[16]; /*0x2E20*/ u8 additionalPhrases[5]; // bitfield for 33 additional phrases in easy chat system /*0x2E25*/ u8 unk2E25[3]; // possibly padding? diff --git a/include/pokeblock.h b/include/pokeblock.h index 5d52f8e55..b0e93f0e5 100644 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -23,6 +23,7 @@ enum }; void ClearPokeblocks(void); +s16 PokeblockGetGain(u8, const struct Pokeblock *); /* void sub_810B96C(void); @@ -32,7 +33,6 @@ s16 GetPokeblockData(const struct Pokeblock *, u8); u8 sub_810C9E8(struct Pokeblock *); void sub_810BA7C(u8); bool8 PokeblockClearIfExists(u8); -s16 PokeblockGetGain(u8, const struct Pokeblock *); u8 sub_810CB68(u8, u8*); void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest); void CB2_PreparePokeblockFeedScene(void); diff --git a/include/vars.h b/include/vars.h index f8057d4b5..763b7379d 100644 --- a/include/vars.h +++ b/include/vars.h @@ -30,6 +30,7 @@ #define VAR_RESET_RTC_ENABLE 0x402C #define VAR_0x4037 0x4037 +#define VAR_ALTERING_CAVE_WILD_SET 0x403E #define VAR_DAYS 0x4040 #define VAR_DEPT_STORE_FLOOR 0x4043 diff --git a/include/wild_encounter.h b/include/wild_encounter.h new file mode 100644 index 000000000..c9d7c3fa1 --- /dev/null +++ b/include/wild_encounter.h @@ -0,0 +1,39 @@ +#ifndef GUARD_WILD_ENCOUNTER_H +#define GUARD_WILD_ENCOUNTER_H + +struct WildPokemon +{ + u8 minLevel; + u8 maxLevel; + u16 species; +}; + +struct WildPokemonInfo +{ + u8 encounterRate; + const struct WildPokemon *wildPokemon; +}; + +struct WildPokemonHeader +{ + u8 mapGroup; + u8 mapNum; + const struct WildPokemonInfo *landMonsInfo; + const struct WildPokemonInfo *waterMonsInfo; + const struct WildPokemonInfo *rockSmashMonsInfo; + const struct WildPokemonInfo *fishingMonsInfo; +}; + +extern const struct WildPokemonHeader gWildMonHeaders[]; + +void DisableWildEncounters(bool8 disabled); +bool8 StandardWildEncounter(u16 a, u16 b); +void ScrSpecial_RockSmashWildEncounter(void); +bool8 SweetScentWildEncounter(void); +bool8 DoesCurrentMapHaveFishingMons(void); +void FishingWildEncounter(u8 rod); +u16 GetLocalWildMon(bool8 *isWaterMon); +u16 GetLocalWaterMon(void); +bool8 UpdateRepelCounter(void); + +#endif // GUARD_WILD_ENCOUNTER_H -- cgit v1.2.3 From a2a17bba926d1465108ab55c47f9145494ff78e5 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 17 Nov 2017 17:50:07 +0100 Subject: more work on wild encounter --- include/battle_setup.h | 3 +++ include/flags.h | 2 ++ include/global.h | 6 ++++-- 3 files changed, 9 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/battle_setup.h b/include/battle_setup.h index e4acd8601..0168022cc 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -4,6 +4,9 @@ void BattleSetup_StartScriptedWildBattle(void); u8 BattleSetup_GetTerrainId(void); u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data); +void BattleSetup_StartBattlePikeWildBattle(void); +void BattleSetup_StartWildBattle(void); +void BattleSetup_StartRoamerBattle(void); u8 HasTrainerAlreadyBeenFought(u16); void trainer_flag_set(u16); diff --git a/include/flags.h b/include/flags.h index 6dfae9ab2..7cc310633 100644 --- a/include/flags.h +++ b/include/flags.h @@ -1,6 +1,8 @@ #ifndef GUARD_FLAGS_H #define GUARD_FLAGS_H +#define FLAG_LEGENDARIES_IN_SOOTOPOLIS 0x53 + #define FLAG_TRAINER_FLAG_START 0x500 #define TRAINERS_FLAG_NO 0x356 #define CODE_FLAGS (FLAG_TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860 diff --git a/include/global.h b/include/global.h index 7547d523b..490ebe64e 100644 --- a/include/global.h +++ b/include/global.h @@ -215,7 +215,9 @@ struct SaveBlock2 /*0xCA9*/ u8 field_CA9_d : 1; // 0x20 /*0xCA9*/ u8 field_CA9_e : 1; // 0x40 /*0xCA9*/ u8 field_CA9_f : 1; // 0x80 - /*0xCAA*/ u16 field_CAA[0x2e]; + /*0xCAA*/ u16 field_CAA[4]; + /*0xCB2*/ u16 battlePyramidWildHeaderId; + /*0xCB4*/ u8 field_CB4[88]; /*0xD06*/ u8 field_D06; /*0xD07*/ u8 field_D07; /*0xd08*/ u8 filler_D08[0x112]; @@ -590,7 +592,7 @@ struct SaveBlock1 /*0x3030*/ struct DaycareData daycare; /*0x3150*/ struct LinkBattleRecord linkBattleRecords[5]; /*0x31A0*/ u8 unk_31A0; - /*0x31A1*/ u8 filler_31A1[7]; + /*0x31A1*/ u8 filler_31A1[3]; /*0x31A8*/ u8 giftRibbons[52]; /*0x31DC*/ struct Roamer roamer; /*0x31F8*/ struct EnigmaBerry enigmaBerry; -- cgit v1.2.3 From 6b075ae0ffc82a8aff6ae5812f9f6f7675c08031 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 17 Nov 2017 22:28:55 +0100 Subject: wild encounter file is decompiled --- include/global.h | 7 +++---- include/link.h | 1 + include/tv.h | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/global.h b/include/global.h index 490ebe64e..c05d6a309 100644 --- a/include/global.h +++ b/include/global.h @@ -217,10 +217,10 @@ struct SaveBlock2 /*0xCA9*/ u8 field_CA9_f : 1; // 0x80 /*0xCAA*/ u16 field_CAA[4]; /*0xCB2*/ u16 battlePyramidWildHeaderId; - /*0xCB4*/ u8 field_CB4[88]; + /*0xCB4*/ u8 field_CB4[82]; /*0xD06*/ u8 field_D06; /*0xD07*/ u8 field_D07; - /*0xd08*/ u8 filler_D08[0x112]; + /*0xD08*/ u8 filler_D08[0x112]; /*0xE1A*/ u16 battlePyramidFloor; // possibly? /*0xE1C*/ u8 field_E1C[16]; /*0xE2C*/ struct PyramidBag pyramidBag; @@ -587,12 +587,11 @@ struct SaveBlock1 /*0x2E25*/ u8 unk2E25[3]; // possibly padding? /*0x2E28*/ OldMan oldMan; /*0x2e64*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff - /*0x2e8c*/ u8 filler_2E8C[0x4]; /*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum /*0x3030*/ struct DaycareData daycare; /*0x3150*/ struct LinkBattleRecord linkBattleRecords[5]; /*0x31A0*/ u8 unk_31A0; - /*0x31A1*/ u8 filler_31A1[3]; + /*0x31A1*/ u8 filler_31A1[7]; /*0x31A8*/ u8 giftRibbons[52]; /*0x31DC*/ struct Roamer roamer; /*0x31F8*/ struct EnigmaBerry enigmaBerry; diff --git a/include/link.h b/include/link.h index 7a6563144..ddd809ebe 100644 --- a/include/link.h +++ b/include/link.h @@ -179,6 +179,7 @@ void LinkVSync(void); void Timer3Intr(void); void SerialCB(void); u8 GetLinkPlayerCount(void); +bool32 InUnionRoom(void); void sub_800E0E8(void); bool8 sub_800A520(void); diff --git a/include/tv.h b/include/tv.h index 43f36d69f..3f48af569 100644 --- a/include/tv.h +++ b/include/tv.h @@ -13,5 +13,6 @@ void sub_80EE184(void); void sub_80EEA70(void); void sub_80F14F8(TVShow *shows); size_t sub_80EF370(int value); +void SetPokemonAnglerSpecies(u16 species); #endif //GUARD_TV_H -- cgit v1.2.3 From f8b40754c70679bb3ec4c0611613a0658f679225 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 18 Nov 2017 12:27:10 +0100 Subject: wild encounter done --- include/wild_encounter.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/wild_encounter.h b/include/wild_encounter.h index c9d7c3fa1..55bbaa7dd 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -1,6 +1,11 @@ #ifndef GUARD_WILD_ENCOUNTER_H #define GUARD_WILD_ENCOUNTER_H +#define LAND_WILD_COUNT 12 +#define WATER_WILD_COUNT 5 +#define ROCK_WILD_COUNT 5 +#define FISH_WILD_COUNT 10 + struct WildPokemon { u8 minLevel; @@ -27,7 +32,7 @@ struct WildPokemonHeader extern const struct WildPokemonHeader gWildMonHeaders[]; void DisableWildEncounters(bool8 disabled); -bool8 StandardWildEncounter(u16 a, u16 b); +bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavior); void ScrSpecial_RockSmashWildEncounter(void); bool8 SweetScentWildEncounter(void); bool8 DoesCurrentMapHaveFishingMons(void); -- cgit v1.2.3