summaryrefslogtreecommitdiff
path: root/arm9/src/waza.c
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-06-16 08:26:08 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-06-16 08:26:08 -0400
commit424076d3a557419bc548346c7625931cc09a34b2 (patch)
treea841b547ceb674659f0f076d6e74aa3435920b1d /arm9/src/waza.c
parentc1347194db3ca34035901203deaebf0141357524 (diff)
Decompile move table access routines
Diffstat (limited to 'arm9/src/waza.c')
-rw-r--r--arm9/src/waza.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/arm9/src/waza.c b/arm9/src/waza.c
new file mode 100644
index 00000000..1ed8574e
--- /dev/null
+++ b/arm9/src/waza.c
@@ -0,0 +1,68 @@
+#include "global.h"
+#include "move_data.h"
+#include "filesystem.h"
+#include "constants/moves.h"
+
+#pragma thumb on
+
+void LoadWazaEntry(u16 waza, struct WazaTbl * dest);
+
+// Effectively reads the entirety of the waza_tbl.narc file image.
+// Even though each "file" is only 16 bytes, they are arranged
+// contiguously and in the correct order.
+void LoadAllWazaTbl(struct WazaTbl * dest)
+{
+ ReadFromNarcMemberByIdPair(dest, NARC_POKETOOL_WAZA_WAZA_TBL, 0, 0, (NUM_MOVES + 1) * sizeof(struct WazaTbl));
+}
+
+u32 GetWazaAttr(u16 waza, u32 attr)
+{
+ struct WazaTbl wazaTbl;
+ LoadWazaEntry(waza, &wazaTbl);
+ return GetAttrFromWazaTbl(&wazaTbl, attr);
+}
+
+u8 WazaGetMaxPp(u16 waza, u8 ppUp)
+{
+ u8 pp;
+ if (ppUp > 3)
+ ppUp = 3;
+ pp = GetWazaAttr(waza, 5);
+ return pp + (pp * 20 * ppUp) / 100;
+}
+
+u32 GetAttrFromWazaTbl(struct WazaTbl * wazaTbl, u32 attr)
+{
+ switch (attr)
+ {
+ case 0:
+ return wazaTbl->unk0;
+ case 1:
+ return wazaTbl->unk2;
+ case 2:
+ return wazaTbl->unk3;
+ case 3:
+ return wazaTbl->unk4;
+ case 4:
+ return wazaTbl->unk5;
+ case 5:
+ return wazaTbl->pp;
+ case 6:
+ return wazaTbl->unk7;
+ case 7:
+ return wazaTbl->unk8;
+ case 8:
+ return wazaTbl->unkA;
+ case 9:
+ return wazaTbl->unkB;
+ case 10:
+ return wazaTbl->unkC;
+ case 11:
+ return wazaTbl->unkD;
+ }
+}
+
+void LoadWazaEntry(u16 waza, struct WazaTbl * wazaTbl)
+{
+ ReadWholeNarcMemberByIdPair(wazaTbl, NARC_POKETOOL_WAZA_WAZA_TBL, waza);
+}