diff options
Diffstat (limited to 'arm9/src')
-rw-r--r-- | arm9/src/nutdata.c | 78 | ||||
-rw-r--r-- | arm9/src/pokemon.c | 2 | ||||
-rw-r--r-- | arm9/src/waza.c | 46 |
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; } } |