diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2019-11-08 17:28:40 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-08 17:28:40 -0500 |
commit | 4be007806499fdda94cb6eb9aab981137a3a3e01 (patch) | |
tree | bf3114b2debfed3b8e6d90f283eca26390f9cf61 /include | |
parent | 391ac755b32ec08fb871c5571f1b08737f0db50d (diff) | |
parent | d25196154fe1c4b4cf1bfa13c62c6b85d8c5c4da (diff) |
Merge pull request #146 from PikalaxALT/dism_more_data
Battle Tower data and more
Diffstat (limited to 'include')
-rw-r--r-- | include/battle_message.h | 6 | ||||
-rw-r--r-- | include/battle_setup.h | 2 | ||||
-rw-r--r-- | include/battle_tower.h | 22 | ||||
-rw-r--r-- | include/constants/battle_tower.h | 75 | ||||
-rw-r--r-- | include/constants/field_effects.h | 2 | ||||
-rw-r--r-- | include/global.h | 64 |
6 files changed, 146 insertions, 25 deletions
diff --git a/include/battle_message.h b/include/battle_message.h index 130dc7ce9..2bbfffa43 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -246,4 +246,10 @@ extern const u8 gText_Ice[]; extern const u8 gText_Confusion[]; extern const u8 gText_Love[]; +extern const u8 gUnknown_83FE859[]; +extern const u8 gUnknown_83FE85E[]; +extern const u8 gUnknown_83FE85C[]; +extern const u8 gUnknown_83FE860[]; +extern const u8 gUnknown_83FE864[]; + #endif // GUARD_BATTLE_MESSAGE_H diff --git a/include/battle_setup.h b/include/battle_setup.h index 809806e9b..4dc2f10f0 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -13,7 +13,7 @@ void Special_StartLegendaryBattle(void); void Special_StartGroudonKyogreBattle(void); void Special_StartRegiBattle(void); u8 BattleSetup_GetTerrainId(void); -u8 sub_8080060(void); +u8 BattleSetup_GetBattleTowerBattleTransition(void); const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data); void ConfigureAndSetUpOneTrainerBattle(u8 trainerEventObjId, const u8 *trainerScript); bool32 GetTrainerFlagFromScriptPointer(const u8 *data); diff --git a/include/battle_tower.h b/include/battle_tower.h index 4c3c23e48..b7b106107 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -2,6 +2,28 @@ #define GUARD_BATTLE_TOWER_H #include "global.h" +#include "constants/battle_tower.h" + +#define BATTLE_TOWER_EREADER_TRAINER_ID 200 +#define BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID 100 + +struct BattleTowerTrainer +{ + u8 trainerClass; + u8 name[3]; + u8 teamFlags; + u16 speech[6]; +}; + +struct BattleTowerPokemonTemplate +{ + u16 species; + u8 heldItem; + u8 teamFlags; + u16 moves[4]; + u8 evSpread; + u8 nature; +}; u16 sub_8164FCC(u8, u8); void sub_80E7524(struct BattleTowerEReaderTrainer *); diff --git a/include/constants/battle_tower.h b/include/constants/battle_tower.h new file mode 100644 index 000000000..b0080caff --- /dev/null +++ b/include/constants/battle_tower.h @@ -0,0 +1,75 @@ +#ifndef GUARD_CONSTANTS_BATTLE_TOWER_H +#define GUARD_CONSTANTS_BATTLE_TOWER_H + +#define F_EV_SPREAD_HP 1 << 0 +#define F_EV_SPREAD_ATTACK 1 << 1 +#define F_EV_SPREAD_DEFENSE 1 << 2 +#define F_EV_SPREAD_SPEED 1 << 3 +#define F_EV_SPREAD_SP_ATTACK 1 << 4 +#define F_EV_SPREAD_SP_DEFENSE 1 << 5 + +#define BATTLE_TOWER_ITEM_NONE 0 +#define BATTLE_TOWER_ITEM_KINGS_ROCK 1 +#define BATTLE_TOWER_ITEM_SITRUS_BERRY 2 +#define BATTLE_TOWER_ITEM_ORAN_BERRY 3 +#define BATTLE_TOWER_ITEM_CHESTO_BERRY 4 +#define BATTLE_TOWER_ITEM_HARD_STONE 5 +#define BATTLE_TOWER_ITEM_FOCUS_BAND 6 +#define BATTLE_TOWER_ITEM_PERSIM_BERRY 7 +#define BATTLE_TOWER_ITEM_MIRACLE_SEED 8 +#define BATTLE_TOWER_ITEM_BERRY_JUICE 9 +#define BATTLE_TOWER_ITEM_MACHO_BRACE 10 +#define BATTLE_TOWER_ITEM_SILVER_POWDER 11 +#define BATTLE_TOWER_ITEM_CHERI_BERRY 12 +#define BATTLE_TOWER_ITEM_BLACK_GLASSES 13 +#define BATTLE_TOWER_ITEM_BLACK_BELT 14 +#define BATTLE_TOWER_ITEM_SOUL_DEW 15 +#define BATTLE_TOWER_ITEM_CHOICE_BAND 16 +#define BATTLE_TOWER_ITEM_MAGNET 17 +#define BATTLE_TOWER_ITEM_SILK_SCARF 18 +#define BATTLE_TOWER_ITEM_WHITE_HERB 19 +#define BATTLE_TOWER_ITEM_DEEP_SEA_SCALE 20 +#define BATTLE_TOWER_ITEM_DEEP_SEA_TOOTH 21 +#define BATTLE_TOWER_ITEM_MYSTIC_WATER 22 +#define BATTLE_TOWER_ITEM_SHARP_BEAK 23 +#define BATTLE_TOWER_ITEM_QUICK_CLAW 24 +#define BATTLE_TOWER_ITEM_LEFTOVERS 25 +#define BATTLE_TOWER_ITEM_RAWST_BERRY 26 +#define BATTLE_TOWER_ITEM_LIGHT_BALL 27 +#define BATTLE_TOWER_ITEM_POISON_BARB 28 +#define BATTLE_TOWER_ITEM_NEVER_MELT_ICE 29 +#define BATTLE_TOWER_ITEM_ASPEAR_BERRY 30 +#define BATTLE_TOWER_ITEM_SPELL_TAG 31 +#define BATTLE_TOWER_ITEM_BRIGHT_POWDER 32 +#define BATTLE_TOWER_ITEM_LEPPA_BERRY 33 +#define BATTLE_TOWER_ITEM_SCOPE_LENS 34 +#define BATTLE_TOWER_ITEM_TWISTED_SPOON 35 +#define BATTLE_TOWER_ITEM_METAL_COAT 36 +#define BATTLE_TOWER_ITEM_MENTAL_HERB 37 +#define BATTLE_TOWER_ITEM_CHARCOAL 38 +#define BATTLE_TOWER_ITEM_PECHA_BERRY 39 +#define BATTLE_TOWER_ITEM_SOFT_SAND 40 +#define BATTLE_TOWER_ITEM_LUM_BERRY 41 +#define BATTLE_TOWER_ITEM_DRAGON_SCALE 42 +#define BATTLE_TOWER_ITEM_DRAGON_FANG 43 +#define BATTLE_TOWER_ITEM_IAPAPA_BERRY 44 +#define BATTLE_TOWER_ITEM_WIKI_BERRY 45 +#define BATTLE_TOWER_ITEM_SEA_INCENSE 46 +#define BATTLE_TOWER_ITEM_SHELL_BELL 47 +#define BATTLE_TOWER_ITEM_SALAC_BERRY 48 +#define BATTLE_TOWER_ITEM_LANSAT_BERRY 49 +#define BATTLE_TOWER_ITEM_APICOT_BERRY 50 +#define BATTLE_TOWER_ITEM_STARF_BERRY 51 +#define BATTLE_TOWER_ITEM_LIECHI_BERRY 52 +#define BATTLE_TOWER_ITEM_STICK 53 +#define BATTLE_TOWER_ITEM_LAX_INCENSE 54 +#define BATTLE_TOWER_ITEM_AGUAV_BERRY 55 +#define BATTLE_TOWER_ITEM_FIGY_BERRY 56 +#define BATTLE_TOWER_ITEM_THICK_CLUB 57 +#define BATTLE_TOWER_ITEM_MAGO_BERRY 58 +#define BATTLE_TOWER_ITEM_METAL_POWDER 59 +#define BATTLE_TOWER_ITEM_PETAYA_BERRY 60 +#define BATTLE_TOWER_ITEM_LUCKY_PUNCH 61 +#define BATTLE_TOWER_ITEM_GANLON_BERRY 62 + +#endif //GUARD_CONSTANTS_BATTLE_TOWER_H diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h index 8a5e11fcf..3ed7d8ce2 100644 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -67,7 +67,9 @@ #define FLDEFF_USE_TELEPORT 63 #define FLDEFF_UNK_40 64 #define FLDEFF_UNK_41 65 // TODO: related to vs_seeker +#define FLDEFF_UNK_42 66 // TODO: related to trainer see #define FLDEFF_UNK_43 67 // TODO: related to deoxys +#define FLDEFF_UNK_44 68 // TODO: related to trainer see #define FLDEFF_UNK_45 69 // TODO: related to fame checker photos #endif // GUARD_CONSTANTS_FIELD_EFFECTS_H diff --git a/include/global.h b/include/global.h index 874717784..2f34de1a0 100644 --- a/include/global.h +++ b/include/global.h @@ -226,10 +226,22 @@ struct UnknownSaveBlock2Struct u8 field_EB; }; // sizeof = 0xEC +struct BattleTowerRecord // record mixing +{ + /*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100 + /*0x01*/ u8 trainerClass; + /*0x02*/ u16 winStreak; + /*0x04*/ u8 name[8]; + /*0x0C*/ u8 trainerId[4]; + /*0x10*/ u16 greeting[6]; + /*0x1C*/ struct BattleTowerPokemon party[3]; + /*0xA0*/ u32 checksum; +}; + struct BattleTowerEReaderTrainer { /*0x4A0 0x3F0 0x00*/ u8 unk0; - /*0x4A1 0x3F1 0x01*/ u8 facilityClass; + /*0x4A1 0x3F1 0x01*/ u8 trainerClass; /*0x4A2 0x3F2 0x02*/ u16 winStreak; /*0x4A4 0x3F4 0x04*/ u8 name[8]; /*0x4AC 0x3FC 0x0C*/ u8 trainerId[4]; @@ -240,28 +252,32 @@ struct BattleTowerEReaderTrainer /*0x558 0x4A8 0xB8*/ u32 checksum; }; -struct UnkSaveBlock2Substruct_55C -{ - /* 0x000:0x55C */ u8 unk_00_0:1; - u8 unk_00_1:1; - /* 0x001:0x55D */ u8 unk_01; - /* 0x002:0x55E */ u8 unk_02[2]; - /* 0x004:0x560 */ u16 unk_04[2]; - /* 0x008:0x564 */ u16 unk_08[2]; - /* 0x00C:0x568 */ u16 unk_0C[2]; - /* 0x010:0x56C */ u8 unk_10; - /* 0x011:0x56D */ u8 unk_11[3]; - /* 0x014:0x570 */ u16 unk_14; - /* 0x016:0x572 */ u8 unk_16; -}; // size: 0x018 - -struct UnkSaveBlock2Substruct_B0 -{ - /* 0x000:0x0B0 */ u8 field_0[0x3F0]; - /* 0x3F0:0x4A0 */ struct BattleTowerEReaderTrainer field_3F0; - /* 0x4AC:0x55C */ struct UnkSaveBlock2Substruct_55C field_4AC; - /* 0x4C4:0x574 */ u8 field_4C4[0x324]; -}; // size: 0x7E8 +struct BattleTowerData // Leftover from R/S +{ + /*0x0000, 0x00B0*/ struct BattleTowerRecord playerRecord; + /*0x00A4, 0x0154*/ struct BattleTowerRecord records[5]; // from record mixing + /*0x03D8, 0x0488*/ u16 firstMonSpecies; // species of the first pokemon in the player's battle tower party + /*0x03DA, 0x048A*/ u16 defeatedBySpecies; // species of the pokemon that defated the player + /*0x03DC, 0x048C*/ u8 defeatedByTrainerName[8]; + /*0x03E4, 0x0494*/ u8 firstMonNickname[POKEMON_NAME_LENGTH]; // nickname of the first pokemon in the player's battle tower party + /*0x03F0, 0x04A0*/ struct BattleTowerEReaderTrainer ereaderTrainer; + /*0x04AC, 0x055C*/ u8 battleTowerLevelType:1; // 0 = level 50; 1 = level 100 + /*0x04AC, 0x055C*/ u8 unk_554:1; + /*0x04AD, 0x055D*/ u8 battleOutcome; + /*0x04AE, 0x055E*/ u8 var_4AE[2]; + /*0x04B0, 0x0560*/ u16 curChallengeBattleNum[2]; // 1-based index of battle in the current challenge. (challenges consist of 7 battles) + /*0x04B4, 0x0564*/ u16 curStreakChallengesNum[2]; // 1-based index of the current challenge in the current streak. + /*0x04B8, 0x0568*/ u16 recordWinStreaks[2]; + /*0x04BC, 0x056C*/ u8 battleTowerTrainerId; // index for gBattleTowerTrainers table + /*0x04BD, 0x056D*/ u8 selectedPartyMons[0x3]; // indices of the 3 selected player party mons. + /*0x04C0, 0x0570*/ u16 prizeItem; + /*0x04C2, 0x0572*/ u8 battledTrainerIds[6]; + /*0x04C8, 0x0578*/ u16 totalBattleTowerWins; + /*0x04CA, 0x057A*/ u16 bestBattleTowerWinStreak; + /*0x04CC, 0x057C*/ u16 currentWinStreaks[2]; + /*0x04D0, 0x0580*/ u8 lastStreakLevelType; // 0 = level 50, 1 = level 100. level type of the last streak. Used by tv to report the level mode. + /*0x04D1, 0x0581*/ u8 filler_4D1[0x317]; +}; struct SaveBlock2 { @@ -287,7 +303,7 @@ struct SaveBlock2 /*0x0A8*/ u32 field_A8; /*0x0AC*/ u8 field_AC; /*0x0AD*/ u8 field_AD; - /*0x0B0*/ struct UnkSaveBlock2Substruct_B0 unk_B0; + /*0x0B0*/ struct BattleTowerData battleTower; /*0x898*/ u16 mapView[0x100]; /*0xA98*/ struct LinkBattleRecords linkBattleRecords; /*0xAF0*/ struct BerryCrush berryCrush; |