summaryrefslogtreecommitdiff
path: root/arm9/src
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/src')
-rw-r--r--arm9/src/itemtool.c4
-rw-r--r--arm9/src/nutdata.c20
-rw-r--r--arm9/src/save_arrays.c3
-rw-r--r--arm9/src/unk_020254B8.c114
4 files changed, 127 insertions, 14 deletions
diff --git a/arm9/src/itemtool.c b/arm9/src/itemtool.c
index 75785ee8..6b892d6d 100644
--- a/arm9/src/itemtool.c
+++ b/arm9/src/itemtool.c
@@ -810,8 +810,8 @@ u32 GetItemAttr_PreloadedItemData(struct ItemData * itemData, u32 attr)
return itemData->unk6;
case ITEMATTR_NATURAL_GIFT_POWER:
return itemData->naturalGiftPower;
- case ITEMATTR_UNK8_0:
- return itemData->unk8_0;
+ case ITEMATTR_NATURAL_GIFT_TYPE:
+ return itemData->naturalGiftType;
case ITEMATTR_UNK8_B:
return itemData->unk8_B;
case ITEMATTR_PARTY_USE:
diff --git a/arm9/src/nutdata.c b/arm9/src/nutdata.c
index 27c600fa..2d51b2d3 100644
--- a/arm9/src/nutdata.c
+++ b/arm9/src/nutdata.c
@@ -36,27 +36,27 @@ u32 GetNutAttr(struct NutData * nut, u32 attr)
switch (attr)
{
case 0:
- return nut->unk0;
+ return nut->size;
case 1:
- return nut->unk2;
+ return nut->firmness;
case 2:
- return nut->unk3;
+ return nut->yieldCategory;
case 3:
- return nut->unk4;
+ return nut->stageDuration;
case 4:
return nut->unk5;
case 5:
- return nut->unk6;
+ return nut->spicy;
case 6:
- return nut->unk7;
+ return nut->dry;
case 7:
- return nut->unk8;
+ return nut->sweet;
case 8:
- return nut->unk9;
+ return nut->bitter;
case 9:
- return nut->unkA;
+ return nut->sour;
case 10:
- return nut->unkB;
+ return nut->smoothness;
default:
return 0;
}
diff --git a/arm9/src/save_arrays.c b/arm9/src/save_arrays.c
index 96808ba6..bccdcc11 100644
--- a/arm9/src/save_arrays.c
+++ b/arm9/src/save_arrays.c
@@ -9,12 +9,12 @@
#include "poketch.h"
#include "hall_of_fame.h"
#include "unk_020286F8.h"
+#include "unk_020254B8.h"
#include "daycare.h"
extern u32 FUN_0202AC20(void);
extern u32 FUN_02034D7C(void);
extern u32 Sav2_Pokedex_sizeof(void);
-extern u32 FUN_020254B8(void);
extern u32 FUN_02024E64(void);
extern u32 FUN_02034D80(void);
extern u32 FUN_02025954(void);
@@ -41,7 +41,6 @@ extern u32 FUN_02013B28(void);
extern void FUN_0202AC28(void *);
extern void FUN_02034D98(void *);
extern void Sav2_Pokedex_init(void *);
-extern void FUN_020254CC(void *);
extern void FUN_02024E6C(void *);
extern void FUN_02034D88(void *);
extern void FUN_0202597C(void *);
diff --git a/arm9/src/unk_020254B8.c b/arm9/src/unk_020254B8.c
new file mode 100644
index 00000000..ed323965
--- /dev/null
+++ b/arm9/src/unk_020254B8.c
@@ -0,0 +1,114 @@
+#include "global.h"
+#include "string_util.h"
+#include "save_block_2.h"
+#include "heap.h"
+#include "unk_020254B8.h"
+
+#pragma thumb on
+
+u32 FUN_020254B8(void)
+{
+ return 16 * sizeof(struct UnkStruct_020254B8);
+}
+
+struct UnkStruct_020254B8 * FUN_020254C0(struct SaveBlock2 * sav2)
+{
+ return (struct UnkStruct_020254B8 *)SavArray_get(sav2, 9);
+}
+
+void FUN_020254CC(struct UnkStruct_020254B8 * arr)
+{
+ s32 i;
+
+ for (i = 0; i < 16; i++)
+ {
+ memset(&arr[i], 0, sizeof(struct UnkStruct_020254B8));
+ arr[i].field_00[0] = EOS;
+ }
+}
+
+u16 * FUN_020254F0(struct UnkStruct_020254B8 * arr, s32 i)
+{
+ return arr[i].field_00;
+}
+
+u8 FUN_020254F8(struct UnkStruct_020254B8 * unk, s32 i)
+{
+ return unk->field_68[i];
+}
+
+BOOL FUN_02025500(struct UnkStruct_020254B8 * a, struct UnkStruct_020254B8 * b)
+{
+ return !StringNotEqual(a->field_00, b->field_00) && a->field_10 == b->field_10;
+}
+
+void FUN_02025520(struct UnkStruct_020254B8 * sp0, struct UnkStruct_020254B8 * sp4, s32 n, u32 heap_id)
+{
+ s32 sp18[5];
+ s32 sp14;
+ struct UnkStruct_020254B8 * sp10;
+ s32 r12;
+ s32 spC;
+ s32 r4;
+ s32 r4_2;
+
+ // auto buffer = new UnkStruct_020254B8[16]
+ sp10 = AllocFromHeap(heap_id, 16 * sizeof(struct UnkStruct_020254B8));
+ FUN_020254CC(sp10);
+
+ // Look up each element of sp4 in sp0
+ for (sp14 = 0; sp14 < n; sp14++)
+ {
+ sp18[sp14] = -1;
+ for (r4_2 = 0; r4_2 < 16; r4_2++)
+ {
+ if (FUN_02025500(&sp0[r4_2], &sp4[sp14]))
+ sp18[sp14] = r4_2;
+ }
+ }
+
+ // Copy sp4 to buffer and mask matching entries in sp0
+ r4 = 0;
+ for (spC = 0; spC < n; spC++)
+ {
+ sp10[r4] = sp4[spC];
+ if (sp18[spC] >= 0)
+ sp0[sp18[spC]].field_00[0] = EOS;
+ r4++;
+ }
+
+ // Copy unmasked entries from sp0 to buffer
+ for (r12 = 0; r12 < 16; r12++)
+ {
+ if (sp0[r12].field_00[0] != EOS)
+ {
+ sp10[r4] = sp0[r12];
+ r4++;
+ if (r4 >= 16)
+ break;
+ }
+ }
+ // Copy buffer to sp0 and destroy buffer
+ memcpy(sp0, sp10, 16 * sizeof(struct UnkStruct_020254B8));
+ FreeToHeap(sp10);
+}
+
+s32 FUN_02025614(struct UnkStruct_020254B8 * a0, u32 a1)
+{
+ s32 i, j;
+
+ for (i = 0; i < 16; i++)
+ {
+ if (a1 == a0[i].field_10)
+ return 1;
+ }
+ for (i = 0; i < 16; i++)
+ {
+ for (j = 0; j < 16; j++)
+ {
+ if (a1 == a0[i].field_18[j])
+ return i + 2;
+ }
+ }
+ return 0;
+}