diff options
author | DizzyEggg <jajkodizzy@wp.pl> | 2017-09-03 00:47:51 +0200 |
---|---|---|
committer | DizzyEggg <jajkodizzy@wp.pl> | 2017-09-03 00:47:51 +0200 |
commit | 50530b46669b3b18358097391fa9afee27e5f57e (patch) | |
tree | da095fe34168428915adfb86bcac805e71f6b86c /src | |
parent | d5806bfe6a8807719b2659cd2d008b4c1b560a62 (diff) |
begin decompiling item.s
Diffstat (limited to 'src')
-rw-r--r-- | src/item.c | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/item.c b/src/item.c new file mode 100644 index 000000000..c68922c0e --- /dev/null +++ b/src/item.c @@ -0,0 +1,76 @@ +#include "global.h" +#include "item.h" + +extern void ApplyNewEncyprtionKeyToHword(u16* hword, u32 newKey); + +enum +{ + ITEMS_POCKET, + BALLS_POCKET, + TMHM_POCKET, + BERRIES_POCKET, + KEYITEMS_POCKET +}; + +struct BagItem +{ + struct ItemSlot (*items)[]; + u8 maxPerPocket; +}; + +extern struct BagItem gBagItems[]; + +u16 GetBagItemQuantity(u16* quantity) +{ + return gSaveBlock2Ptr->encryptionKey ^ *quantity; +} + +void SetBagItemQuantity(u16* quantity, u16 newValue) +{ + *quantity = newValue ^ gSaveBlock2Ptr->encryptionKey; +} + +u16 GetBagItemId(u16* slot) +{ + return *slot; +} + +void SetBagItemId(u16* slot, u16 newItemId) +{ + *slot = newItemId; +} + +void ApplyNewEncyprtionKeyToBagItems(u32 newKey) +{ + u32 pocket, item; + for (pocket = 0; pocket < 5; pocket++) + { + for (item = 0; item < gBagItems[pocket].maxPerPocket; item++) + ApplyNewEncyprtionKeyToHword(&((*gBagItems[pocket].items)[item].quantity), newKey); + } +} + +void ApplyNewEncyprtionKeyToBagItems_(u32 newKey) // really GF? +{ + ApplyNewEncyprtionKeyToBagItems(newKey); +} + +// TODO: move those max values to defines + +void SetBagItemsPointers(void) +{ + gBagItems[ITEMS_POCKET].items = &gSaveBlock1Ptr->bagPocket_Items; + gBagItems[ITEMS_POCKET].maxPerPocket = 30; + + gBagItems[KEYITEMS_POCKET].items = &gSaveBlock1Ptr->bagPocket_KeyItems; + gBagItems[KEYITEMS_POCKET].maxPerPocket = 30; + + gBagItems[BALLS_POCKET].items = &gSaveBlock1Ptr->bagPocket_PokeBalls; + gBagItems[BALLS_POCKET].maxPerPocket = 16; + + gBagItems[TMHM_POCKET].items = &gSaveBlock1Ptr->bagPocket_TMHM; + gBagItems[TMHM_POCKET].maxPerPocket = 64; + + gBagItems[BERRIES_POCKET].items = &gSaveBlock1Ptr->bagPocket_Berries; + gBagItems[BERRIES_POCKET].maxPerPocket = 46; +} |