diff options
| author | yenatch <yenatch@gmail.com> | 2017-06-25 00:04:39 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-06-25 00:04:39 -0400 | 
| commit | 98a170597f29156e04e92ae2701a186d01c19ca5 (patch) | |
| tree | 0cc698a3ef9536b109af0baefcb88b4e518cc134 /include | |
| parent | 45b4b7ed85022c7771ee1adab8336f2b438b845e (diff) | |
| parent | f62282f0b994458b08e8ed8fcc03b39f6d96df7d (diff) | |
Merge pull request #336 from camthesaxman/decompile_battle_6
decompile battle_6
Diffstat (limited to 'include')
| -rw-r--r-- | include/battle.h | 11 | ||||
| -rw-r--r-- | include/pokemon.h | 252 | ||||
| -rw-r--r-- | include/rom3.h | 40 | 
3 files changed, 175 insertions, 128 deletions
| diff --git a/include/battle.h b/include/battle.h index 395cf042a..d93860094 100644 --- a/include/battle.h +++ b/include/battle.h @@ -185,7 +185,6 @@ struct Struct2017810      u8 unk1_0:1;      u8 unk2;      u8 unk3; -    //u8 filler2[2];      u8 unk4;      u8 unk5;      u8 unk6; @@ -198,13 +197,21 @@ struct Struct2017810  struct Struct2017840  {      u16 unk0; -    u8 filler2[7]; +    u8 filler2[6]; +    u8 unk8;      u8 unk9_0:1;  }; +struct Struct20238C8 +{ +    u8 unk0_0:7; +    u8 unk0_7:1; +}; +  extern struct UnkBattleStruct1 unk_2016A00;  extern struct UnkBattleStruct4 gDisableStructs[];  extern struct AI_ThinkingStruct gAIThinkingSpace; +extern struct Struct20238C8 gUnknown_020238C8;  // TODO: move ewram to global.h  extern u8 ewram[]; diff --git a/include/pokemon.h b/include/pokemon.h index 47990073b..be8e4e56d 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -182,41 +182,41 @@ struct PokemonSubstruct2  struct PokemonSubstruct3  { - /* 0x00 */ u8 pokerus; - /* 0x01 */ u8 metLocation; - - /* 0x02 */ u16 metLevel:7; - /* 0x02 */ u16 metGame:4; - /* 0x03 */ u16 pokeball:4; - /* 0x03 */ u16 otGender:1; - - /* 0x04 */ u32 hpIV:5; - /* 0x04 */ u32 attackIV:5; - /* 0x05 */ u32 defenseIV:5; - /* 0x05 */ u32 speedIV:5; - /* 0x05 */ u32 spAttackIV:5; - /* 0x06 */ u32 spDefenseIV:5; - /* 0x07 */ u32 isEgg:1; - /* 0x07 */ u32 altAbility:1; - - /* 0x08 */ u32 coolRibbon:3; - /* 0x08 */ u32 beautyRibbon:3; - /* 0x08 */ u32 cuteRibbon:3; - /* 0x09 */ u32 smartRibbon:3; - /* 0x09 */ u32 toughRibbon:3; - /* 0x09 */ u32 championRibbon:1; - /* 0x0A */ u32 winningRibbon:1; - /* 0x0A */ u32 victoryRibbon:1; - /* 0x0A */ u32 artistRibbon:1; - /* 0x0A */ u32 effortRibbon:1; - /* 0x0A */ u32 giftRibbon1:1; - /* 0x0A */ u32 giftRibbon2:1; - /* 0x0A */ u32 giftRibbon3:1; - /* 0x0A */ u32 giftRibbon4:1; - /* 0x0B */ u32 giftRibbon5:1; - /* 0x0B */ u32 giftRibbon6:1; - /* 0x0B */ u32 giftRibbon7:1; - /* 0x0B */ u32 fatefulEncounter:5; // unused in Ruby/Sapphire, but the high bit must be set for Mew/Deoxys to obey in FR/LG/Emerald +    /*0x00*/ u8 pokerus; +    /*0x01*/ u8 metLocation; + +    /*0x02*/ u16 metLevel:7; +    /*0x02*/ u16 metGame:4; +    /*0x03*/ u16 pokeball:4; +    /*0x03*/ u16 otGender:1; + +    /*0x04*/ u32 hpIV:5; +    /*0x04*/ u32 attackIV:5; +    /*0x05*/ u32 defenseIV:5; +    /*0x05*/ u32 speedIV:5; +    /*0x05*/ u32 spAttackIV:5; +    /*0x06*/ u32 spDefenseIV:5; +    /*0x07*/ u32 isEgg:1; +    /*0x07*/ u32 altAbility:1; + +    /*0x08*/ u32 coolRibbon:3; +    /*0x08*/ u32 beautyRibbon:3; +    /*0x08*/ u32 cuteRibbon:3; +    /*0x09*/ u32 smartRibbon:3; +    /*0x09*/ u32 toughRibbon:3; +    /*0x09*/ u32 championRibbon:1; +    /*0x0A*/ u32 winningRibbon:1; +    /*0x0A*/ u32 victoryRibbon:1; +    /*0x0A*/ u32 artistRibbon:1; +    /*0x0A*/ u32 effortRibbon:1; +    /*0x0A*/ u32 giftRibbon1:1; +    /*0x0A*/ u32 giftRibbon2:1; +    /*0x0A*/ u32 giftRibbon3:1; +    /*0x0A*/ u32 giftRibbon4:1; +    /*0x0B*/ u32 giftRibbon5:1; +    /*0x0B*/ u32 giftRibbon6:1; +    /*0x0B*/ u32 giftRibbon7:1; +    /*0x0B*/ u32 fatefulEncounter:5; // unused in Ruby/Sapphire, but the high bit must be set for Mew/Deoxys to obey in FR/LG/Emerald  };  union PokemonSubstruct @@ -230,39 +230,39 @@ union PokemonSubstruct  struct BoxPokemon  { -    u32 personality; -    u32 otId; -    u8 nickname[POKEMON_NAME_LENGTH]; -    u8 language; -    u8 isBadEgg:1; -    u8 hasSpecies:1; -    u8 isEgg:1; -    u8 unused:5; -    u8 otName[OT_NAME_LENGTH]; -    u8 markings; -    u16 checksum; -    u16 unknown; +    /*0x00*/ u32 personality; +    /*0x04*/ u32 otId; +    /*0x08*/ u8 nickname[POKEMON_NAME_LENGTH]; +    /*0x12*/ u8 language; +    /*0x13*/ u8 isBadEgg:1; +             u8 hasSpecies:1; +             u8 isEgg:1; +             u8 unused:5; +    /*0x14*/ u8 otName[OT_NAME_LENGTH]; +    /*0x1B*/ u8 markings; +    /*0x1C*/ u16 checksum; +    /*0x1E*/ u16 unknown;      union      {          u32 raw[12];          union PokemonSubstruct substructs[4];      } secure; -}; +}; /*size = 0x50*/  struct Pokemon  { -    struct BoxPokemon box; -    u32 status; -    u8 level; -    u8 mail; -    u16 hp; -    u16 maxHP; -    u16 attack; -    u16 defense; -    u16 speed; -    u16 spAttack; -    u16 spDefense; +    /*0x00*/ struct BoxPokemon box; +    /*0x50*/ u32 status; +    /*0x54*/ u8 level; +    /*0x55*/ u8 mail; +    /*0x56*/ u16 hp; +    /*0x58*/ u16 maxHP; +    /*0x5A*/ u16 attack; +    /*0x5C*/ u16 defense; +    /*0x5E*/ u16 speed; +    /*0x60*/ u16 spAttack; +    /*0x62*/ u16 spDefense;  };  struct UnknownPokemonStruct @@ -294,73 +294,73 @@ struct UnknownPokemonStruct  struct BattlePokemon  { - /* 0x00 */ u16 species; - /* 0x02 */ u16 attack; - /* 0x04 */ u16 defense; - /* 0x06 */ u16 speed; - /* 0x08 */ u16 spAttack; - /* 0x0A */ u16 spDefense; - /* 0x0C */ u16 moves[4]; - /* 0x14 */ u32 hpIV:5; - /* 0x14 */ u32 attackIV:5; - /* 0x15 */ u32 defenseIV:5; - /* 0x15 */ u32 speedIV:5; - /* 0x16 */ u32 spAttackIV:5; - /* 0x17 */ u32 spDefenseIV:5; - /* 0x17 */ u32 isEgg:1; - /* 0x17 */ u32 altAbility:1; - /* 0x18 */ s8 statStages[8]; - /* 0x20 */ u8 ability; - /* 0x21 */ u8 type1; - /* 0x22 */ u8 type2; - /* 0x23 */ u8 unknown; - /* 0x24 */ u8 pp[4]; - /* 0x28 */ u16 hp; - /* 0x2A */ u8 level; - /* 0x2B */ u8 friendship; - /* 0x2C */ u16 maxHP; - /* 0x2E */ u16 item; - /* 0x30 */ u8 nickname[POKEMON_NAME_LENGTH + 1]; - /* 0x3B */ u8 ppBonuses; - /* 0x3C */ u8 otName[8]; - /* 0x44 */ u32 experience; - /* 0x48 */ u32 personality; - /* 0x4C */ u32 status1; - /* 0x50 */ u32 status2; - /* 0x54 */ u32 otId; +    /*0x00*/ u16 species; +    /*0x02*/ u16 attack; +    /*0x04*/ u16 defense; +    /*0x06*/ u16 speed; +    /*0x08*/ u16 spAttack; +    /*0x0A*/ u16 spDefense; +    /*0x0C*/ u16 moves[4]; +    /*0x14*/ u32 hpIV:5; +    /*0x14*/ u32 attackIV:5; +    /*0x15*/ u32 defenseIV:5; +    /*0x15*/ u32 speedIV:5; +    /*0x16*/ u32 spAttackIV:5; +    /*0x17*/ u32 spDefenseIV:5; +    /*0x17*/ u32 isEgg:1; +    /*0x17*/ u32 altAbility:1; +    /*0x18*/ s8 statStages[8]; +    /*0x20*/ u8 ability; +    /*0x21*/ u8 type1; +    /*0x22*/ u8 type2; +    /*0x23*/ u8 unknown; +    /*0x24*/ u8 pp[4]; +    /*0x28*/ u16 hp; +    /*0x2A*/ u8 level; +    /*0x2B*/ u8 friendship; +    /*0x2C*/ u16 maxHP; +    /*0x2E*/ u16 item; +    /*0x30*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; +    /*0x3B*/ u8 ppBonuses; +    /*0x3C*/ u8 otName[8]; +    /*0x44*/ u32 experience; +    /*0x48*/ u32 personality; +    /*0x4C*/ u32 status1; +    /*0x50*/ u32 status2; +    /*0x54*/ u32 otId;  };  struct BaseStats  { - /* 0x00 */ u8 baseHP; - /* 0x01 */ u8 baseAttack; - /* 0x02 */ u8 baseDefense; - /* 0x03 */ u8 baseSpeed; - /* 0x04 */ u8 baseSpAttack; - /* 0x05 */ u8 baseSpDefense; - /* 0x06 */ u8 type1; - /* 0x07 */ u8 type2; - /* 0x08 */ u8 catchRate; - /* 0x09 */ u8 expYield; - /* 0x0A */ u16 evYield_HP:2; - /* 0x0A */ u16 evYield_Attack:2; - /* 0x0A */ u16 evYield_Defense:2; - /* 0x0A */ u16 evYield_Speed:2; - /* 0x0B */ u16 evYield_SpAttack:2; - /* 0x0B */ u16 evYield_SpDefense:2; - /* 0x0C */ u16 item1; - /* 0x0E */ u16 item2; - /* 0x10 */ u8 genderRatio; - /* 0x11 */ u8 eggCycles; - /* 0x12 */ u8 friendship; - /* 0x13 */ u8 growthRate; - /* 0x14 */ u8 eggGroup1; - /* 0x15 */ u8 eggGroup2; - /* 0x16 */ u8 ability1; - /* 0x17 */ u8 ability2; - /* 0x18 */ u8 safariZoneFleeRate; - /* 0x19 */ u8 bodyColor:7; -            u8 unk19_7:1; +    /*0x00*/ u8 baseHP; +    /*0x01*/ u8 baseAttack; +    /*0x02*/ u8 baseDefense; +    /*0x03*/ u8 baseSpeed; +    /*0x04*/ u8 baseSpAttack; +    /*0x05*/ u8 baseSpDefense; +    /*0x06*/ u8 type1; +    /*0x07*/ u8 type2; +    /*0x08*/ u8 catchRate; +    /*0x09*/ u8 expYield; +    /*0x0A*/ u16 evYield_HP:2; +    /*0x0A*/ u16 evYield_Attack:2; +    /*0x0A*/ u16 evYield_Defense:2; +    /*0x0A*/ u16 evYield_Speed:2; +    /*0x0B*/ u16 evYield_SpAttack:2; +    /*0x0B*/ u16 evYield_SpDefense:2; +    /*0x0C*/ u16 item1; +    /*0x0E*/ u16 item2; +    /*0x10*/ u8 genderRatio; +    /*0x11*/ u8 eggCycles; +    /*0x12*/ u8 friendship; +    /*0x13*/ u8 growthRate; +    /*0x14*/ u8 eggGroup1; +    /*0x15*/ u8 eggGroup2; +    /*0x16*/ u8 ability1; +    /*0x17*/ u8 ability2; +    /*0x18*/ u8 safariZoneFleeRate; +    /*0x19*/ u8 bodyColor:7; +             u8 unk19_7:1;  };  struct BattleMove @@ -378,10 +378,10 @@ struct BattleMove  struct PokemonStorage  { - /* 0x00 */ u8 currentBox; - /* 0x01 */ struct BoxPokemon boxes[14][30]; -    u8 boxNames[14][9]; -    u8 unkArray[14]; +    /*0x00*/ u8 currentBox; +    /*0x01*/ struct BoxPokemon boxes[14][30]; +             u8 boxNames[14][9]; +             u8 unkArray[14];  };  struct Evolution diff --git a/include/rom3.h b/include/rom3.h index 8e99f8de4..a45ec7dc4 100644 --- a/include/rom3.h +++ b/include/rom3.h @@ -13,13 +13,53 @@ void sub_800C1A8(u8);  void sub_800C35C(void);  void sub_800C47C(u8);  void EmitGetAttributes(u8 a, u8 b, u8 c); +void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c); +void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e);  void dp01_build_cmdbuf_x04_4_4_4(u8 a);  void sub_800C704(u8, u8, u8); +void dp01_build_cmdbuf_x06_a(u8 a, u8 b);  void dp01_build_cmdbuf_x07_7_7_7(u8 a); +void dp01_build_cmdbuf_x08_8_8_8(u8 a); +void dp01_build_cmdbuf_x09_9_9_9(u8 a); +void EmitFaintAnimation(u8 a); +void dp01_build_cmdbuf_x0B_B_B_B(u8 a); +void dp01_build_cmdbuf_x0C_C_C_C(u8 a); +void dp01_build_cmdbuf_x0D_a(u8 a, u8 b); +void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g); +void EmitPrintString(u8 a, u16 b);  void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c); +void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d); +void sub_800CBE0(u8 a, u8 *b); +void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e); +void dp01_build_cmdbuf_x17_17_17_17(u8 a); +void EmitHealthBarUpdate(u8 a, s16 b); +void EmitExpBarUpdate(u8 a, u8 b, s16 c); +void EmitStatusIconUpdate(u8 a, u32 b, u32 c); +void EmitStatusAnimation(u8 a, u8 b, u32 c); +void EmitStatusXor(u8 a, u8 b);  void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8, u16, u8 *); +void dp01_build_cmdbuf_x21_a_bb(u8 a, u8 b, u16 c); +void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c); +void dp01_build_cmdbuf_x23_aa_0(u8 a, u16 b); +void dp01_build_cmdbuf_x24_aa_0(u8 a, u16 b); +void dp01_build_cmdbuf_x25_25_25_25(u8 a); +void dp01_build_cmdbuf_x26_a(u8 a, u8 b); +void dp01_build_cmdbuf_x27_27_27_27(u8 a); +void dp01_build_cmdbuf_x28_28_28_28(u8 a); +void EmitHitAnimation(u8 a); +void dp01_build_cmdbuf_x2A_2A_2A_2A(u8 a); +void EmitEffectivenessSound(u8 a, u16 b); +void sub_800D074(u8 a, u16 b); +void EmitFaintingCry(u8 a);  void EmitBattleIntroSlide(u8 a, u8 b);  void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a);  void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c); +void dp01_build_cmdbuf_x31_31_31_31(u8 a); +void dp01_build_cmdbuf_x32_32_32_32(u8 a); +void EmitSpriteInvisibility(u8 a, u8 b); +void EmitBattleAnimation(u8 a, u8 b, u16 c); +void EmitLinkStandbyMsg(u8 a, u8 b); +void EmitResetActionMoveSelection(u8 a, u8 b); +void dp01_build_cmdbuf_x37_a(u8 a, u8 b);  #endif // GUARD_ROM3_H | 
