summaryrefslogtreecommitdiff
path: root/arm9/src
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/src')
-rw-r--r--arm9/src/nutdata.c78
-rw-r--r--arm9/src/pokemon.c2
-rw-r--r--arm9/src/waza.c46
3 files changed, 103 insertions, 23 deletions
diff --git a/arm9/src/nutdata.c b/arm9/src/nutdata.c
new file mode 100644
index 00000000..09542052
--- /dev/null
+++ b/arm9/src/nutdata.c
@@ -0,0 +1,78 @@
+#include "global.h"
+#include "filesystem.h"
+#include "itemtool.h"
+#include "msg_data.h"
+
+#pragma thumb on
+
+NARC * OpenNutsDataNarc(u32 heap_id)
+{
+ return NARC_ctor(NARC_ITEMTOOL_ITEMDATA_NUTS_DATA, heap_id);
+}
+
+struct NutData * ReadNutDataFromNarc(NARC * narc, u32 berry_idx, u32 heap_id)
+{
+ return NARC_AllocAndReadWholeMember(narc, berry_idx, heap_id);
+}
+
+void CloseNutsDataNarc(NARC * narc)
+{
+ NARC_dtor(narc);
+}
+
+struct NutData * LoadNutDataSingle(u32 berry_idx, u32 heap_id)
+{
+ return AllocAndReadWholeNarcMemberByIdPair(NARC_ITEMTOOL_ITEMDATA_NUTS_DATA, berry_idx, heap_id);
+}
+
+struct NutData * LoadNutDataSingleByItemId(u32 item_id, u32 heap_id)
+{
+ return LoadNutDataSingle(item_id - FIRST_BERRY_IDX, heap_id);
+}
+
+u32 GetNutAttr(struct NutData * nut, u32 attr)
+{
+ switch (attr)
+ {
+ case 0:
+ return nut->unk0;
+ case 1:
+ return nut->unk2;
+ case 2:
+ return nut->unk3;
+ case 3:
+ return nut->unk4;
+ case 4:
+ return nut->unk5;
+ case 5:
+ return nut->unk6;
+ case 6:
+ return nut->unk7;
+ case 7:
+ return nut->unk8;
+ case 8:
+ return nut->unk9;
+ case 9:
+ return nut->unkA;
+ case 10:
+ return nut->unkB;
+ default:
+ return 0;
+ }
+}
+
+u16 * GetNutName(u32 berry_idx, u32 heap_id)
+{
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 373, heap_id);
+ u16 * ret = FUN_0200A914(msgData, berry_idx);
+ DestroyMsgData(msgData);
+ return ret;
+}
+
+u16 * GetNutDesc(u32 berry_idx, u32 heap_id)
+{
+ struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 372, heap_id);
+ u16 * ret = FUN_0200A914(msgData, berry_idx);
+ DestroyMsgData(msgData);
+ return ret;
+}
diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c
index 9bd9764d..8df597a6 100644
--- a/arm9/src/pokemon.c
+++ b/arm9/src/pokemon.c
@@ -2859,7 +2859,7 @@ void FUN_02069718(struct BoxPokemon * boxmon, u16 move)
}
moves[3] = move;
- pp[3] = (u8)GetWazaAttr(move, 5);
+ pp[3] = (u8)GetWazaAttr(move, MOVEATTR_PP);
ppUp[3] = 0;
for (i = 0; i < 4; i++)
diff --git a/arm9/src/waza.c b/arm9/src/waza.c
index 4b505482..f394fedd 100644
--- a/arm9/src/waza.c
+++ b/arm9/src/waza.c
@@ -15,7 +15,7 @@ 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)
+u32 GetWazaAttr(u16 waza, MoveAttr attr)
{
struct WazaTbl wazaTbl;
LoadWazaEntry(waza, &wazaTbl);
@@ -27,38 +27,40 @@ u8 WazaGetMaxPp(u16 waza, u8 ppUp)
u8 pp;
if (ppUp > 3)
ppUp = 3;
- pp = (u8)GetWazaAttr(waza, 5);
+ pp = (u8)GetWazaAttr(waza, MOVEATTR_PP);
return (u8)(pp + (pp * 20 * ppUp) / 100);
}
-u32 GetAttrFromWazaTbl(struct WazaTbl * wazaTbl, u32 attr)
+u32 GetAttrFromWazaTbl(struct WazaTbl * wazaTbl, MoveAttr attr)
{
switch (attr)
{
- case 0:
- return wazaTbl->unk0;
- case 1:
+ case MOVEATTR_EFFECT:
+ return wazaTbl->effect;
+ case MOVEATTR_UNK1:
return wazaTbl->unk2;
- case 2:
- return wazaTbl->unk3;
- case 3:
- return wazaTbl->unk4;
- case 4:
- return wazaTbl->unk5;
- case 5:
+ case MOVEATTR_POWER:
+ return wazaTbl->power;
+ case MOVEATTR_TYPE:
+ return wazaTbl->type;
+ case MOVEATTR_ACCURACY:
+ return wazaTbl->accuracy;
+ case MOVEATTR_PP:
return wazaTbl->pp;
- case 6:
- return wazaTbl->unk7;
- case 7:
+ case MOVEATTR_EFFECT_CHANCE:
+ return wazaTbl->effectChance;
+ case MOVEATTR_UNK7:
return wazaTbl->unk8;
- case 8:
- return wazaTbl->unkA;
- case 9:
+ case MOVEATTR_PRIORTY:
+ return wazaTbl->priority;
+ case MOVEATTR_UNK9:
return wazaTbl->unkB;
- case 10:
+ case MOVEATTR_UNK10:
return wazaTbl->unkC;
- case 11:
- return wazaTbl->unkD;
+ case MOVEATTR_CONTEST_TYPE:
+ return wazaTbl->contestType;
+ default:
+ return (u32)wazaTbl;
}
}