diff options
Diffstat (limited to 'arm9/src')
-rw-r--r-- | arm9/src/itemtool.c | 4 | ||||
-rw-r--r-- | arm9/src/nutdata.c | 20 | ||||
-rw-r--r-- | arm9/src/save_arrays.c | 3 | ||||
-rw-r--r-- | arm9/src/unk_020254B8.c | 114 |
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; +} |