Pokebot
Pokemon FireRed bot
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
PokemonData.hh
Go to the documentation of this file.
1 #ifndef __POKEMONDATA_HH__
2 #define __POKEMONDATA_HH__
3 
4 #include "PokemonUtils.hh"
5 #include "IPokeData.hh"
6 
7 class PokemonData : public IPokeData
8 {
9 private:
10  struct Internal {
11  uint32_t personality;
12  uint32_t otID;
13  uint8_t nick[10];
14  uint16_t lang;
15  uint8_t otName[7];
16  uint8_t markings;
17  uint16_t checksum;
18  uint16_t padding;
19  uint8_t data[48];
20  uint32_t status;
21  uint8_t level;
22  uint8_t pokerus;
23  uint16_t currHP;
24  uint16_t maxHP;
25  uint16_t atk;
26  uint16_t def;
27  uint16_t speed;
28  uint16_t spatk;
29  uint16_t spdef;
30  };
31 
32  struct Growth {
33  uint16_t species;
34  uint16_t item;
35  uint32_t xp;
36  uint8_t ppUp;
37  uint8_t frienship;
38  uint16_t unknown;
39  };
40 
41  struct Attacks {
42  uint16_t move1;
43  uint16_t move2;
44  uint16_t move3;
45  uint16_t move4;
46  uint8_t pp1;
47  uint8_t pp2;
48  uint8_t pp3;
49  uint8_t pp4;
50  };
51 
52  struct EVs {
53  uint8_t hp;
54  uint8_t atk;
55  uint8_t def;
56  uint8_t speed;
57  uint8_t spatk;
58  uint8_t spdef;
59  uint8_t coolness;
60  uint8_t beauty;
61  uint8_t cuteness;
62  uint8_t smartness;
63  uint8_t toughness;
64  uint8_t feel;
65  };
66 
67  struct Misc {
68  uint8_t pokerus;
69  uint8_t metLocation;
70  uint16_t originsInfo;
71  uint32_t ivEggAbility;
72  uint32_t ribbons;
73  };
74 
75 public:
77  PokemonData(uint32_t addr)
78  : _data((Internal *) gbaMem(addr)) {}
80 
81 public:
82  void update();
83 
84 public:
85  int getStatus(Status s) const;
86  uint8_t hasPokerus() const { return (_data->pokerus); }
87  uint8_t getLevel() const { return (_data->level); }
88 
89  uint16_t getHP() const { return (_data->currHP); }
90  uint16_t getMaxHP() const { return (_data->maxHP); }
91  uint16_t getAtk() const { return (_data->atk); }
92  uint16_t getDef() const { return (_data->def); }
93  uint16_t getSpeed() const { return (_data->speed); }
94  uint16_t getSpAtk() const { return (_data->spatk); }
95  uint16_t getSpDef() const { return (_data->spdef); }
96 
97  int getHPBuff() const { return (0); }
98  int getAtkBuff() const { return (0); }
99  int getDefBuff() const { return (0); }
100  int getSpeedBuff() const { return (0); }
101  int getSpAtkBuff() const { return (0); }
102  int getSpDefBuff() const { return (0); }
103  int getAccuracyBuff() const { return (0); }
104  int getEvasionBuff() const { return (0); }
105 
106  uint16_t getSpecies() const { return (_growth->species); }
107  uint16_t getItem() const { return (_growth->item); }
108  uint32_t getXP() const { return (_growth->xp); }
109 
110  uint8_t getHPEV() const { return (_evs->hp); }
111  uint8_t getAtkEV() const { return (_evs->atk); }
112  uint8_t getDefEV() const { return (_evs->def); }
113  uint8_t getSpeedEV() const { return (_evs->speed); }
114  uint8_t getSpAtkEV() const { return (_evs->spatk); }
115  uint8_t getSpDefEV() const { return (_evs->spdef); }
116 
117  uint16_t *getMoves() const { return ((uint16_t *) &(_attacks->move1)); }
118  uint8_t *getPPs() const { return ((uint8_t *) &(_attacks->pp1)); }
119 
120 private:
121  void _decryptSubstructures();
122 
123 private:
124  Internal *_data;
125  uint32_t _xored[12];
126  Growth *_growth;
127  Attacks *_attacks;
128  EVs *_evs;
129  Misc *_misc;
130 };
131 
132 #endif
int getSpeedBuff() const
Definition: PokemonData.hh:100
Status
Definition: IPokeData.hh:7
uint8_t * getPPs() const
Definition: PokemonData.hh:118
int getAccuracyBuff() const
Definition: PokemonData.hh:103
uint8_t getSpDefEV() const
Definition: PokemonData.hh:115
Definition: PokemonData.hh:7
uint8_t getDefEV() const
Definition: PokemonData.hh:112
void update()
Definition: PokemonData.cpp:3
PokemonData()
Definition: PokemonData.hh:76
~PokemonData()
Definition: PokemonData.hh:79
uint32_t getXP() const
Definition: PokemonData.hh:108
uint16_t getSpAtk() const
Definition: PokemonData.hh:94
int getStatus(Status s) const
Definition: PokemonData.cpp:40
uint16_t getMaxHP() const
Definition: PokemonData.hh:90
Definition: IPokeData.hh:4
uint8_t getSpAtkEV() const
Definition: PokemonData.hh:114
uint16_t getSpeed() const
Definition: PokemonData.hh:93
uint16_t getSpecies() const
Definition: PokemonData.hh:106
uint16_t getHP() const
Definition: PokemonData.hh:89
int getSpAtkBuff() const
Definition: PokemonData.hh:101
void * gbaMem(uint32_t ptr)
Definition: PokemonUtils.cpp:57
int getAtkBuff() const
Definition: PokemonData.hh:98
int getEvasionBuff() const
Definition: PokemonData.hh:104
uint8_t hasPokerus() const
Definition: PokemonData.hh:86
int getSpDefBuff() const
Definition: PokemonData.hh:102
uint8_t getAtkEV() const
Definition: PokemonData.hh:111
uint16_t getItem() const
Definition: PokemonData.hh:107
uint16_t getSpDef() const
Definition: PokemonData.hh:95
uint8_t getHPEV() const
Definition: PokemonData.hh:110
uint8_t getSpeedEV() const
Definition: PokemonData.hh:113
int getHPBuff() const
Definition: PokemonData.hh:97
PokemonData(uint32_t addr)
Definition: PokemonData.hh:77
uint16_t getDef() const
Definition: PokemonData.hh:92
int getDefBuff() const
Definition: PokemonData.hh:99
Data * data
Definition: main.cpp:19
uint16_t getAtk() const
Definition: PokemonData.hh:91
uint16_t * getMoves() const
Definition: PokemonData.hh:117
uint8_t getLevel() const
Definition: PokemonData.hh:87