diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index ab1811197..234960a92 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -148,8 +148,8 @@ typedef struct FloorProperties typedef struct UnkDungeonGlobal_unk1C590 { - s16 unk0[NUM_ITEM_CATEGORIES]; - s16 unk18[NUMBER_OF_ITEM_IDS]; + s16 categoryValues[NUM_ITEM_CATEGORIES]; + s16 itemValues[NUMBER_OF_ITEM_IDS]; } UnkDungeonGlobal_unk1C590; typedef struct UnkDungeonGlobal_unk1CD98 diff --git a/src/code_803D110.c b/src/code_803D110.c index 6ad89ca20..6bfc465d5 100644 --- a/src/code_803D110.c +++ b/src/code_803D110.c @@ -72,11 +72,9 @@ s32 sub_803DC6C(u32 chr, s32 strWidth, s32 a2); struct UnkStruct_sub_803DC6C *sub_803DEC8(s32 chr); void sub_803DD30(u8 *a0, u32 *a1); -// TODO https://decomp.me/scratch/nXUH3 -/* void sub_803D4D0(void) { - u16 spArray[252]; + s16 spArray[NUM_ITEM_CATEGORIES + NUMBER_OF_ITEM_IDS]; s32 i, j, k; OpenedFile *file; struct UnkDungeonFileData *strPtr; @@ -87,19 +85,18 @@ void sub_803D4D0(void) gDungeon->unk1C570 = gDungeon->unk644.dungeonLocation2; file = OpenFileAndGetFileDataPtr(gUnknown_80F4D8C, &gDungeonFileArchive); - - strPtr = &file->data.dungData->unk0[gDungeon->unk1C570.id][gDungeon->unk1C570.floor]; + strPtr = &((struct UnkDataFileStruct *)(file->data))->unk0[gDungeon->unk1C570.id][gDungeon->unk1C570.floor]; gDungeon->unk1CEC8 = GetDungeonFloorCount(gDungeon->unk644.dungeonLocation.id); gDungeon->unk14 = sub_80902C8(gDungeon->unk644.dungeonLocation.id); - gDungeon->unk1C574 = file->data.dungData->unk4[strPtr->unk0]; + gDungeon->unk1C574 = ((struct UnkDataFileStruct *)(file->data))->unk4[strPtr->unk0]; for (i = 0; i < 20; i++) { - gDungeon->unk1CD70[i] = file->data.dungData->unk10[strPtr->unk4][i]; + gDungeon->unk1CD70[i] = ((struct UnkDataFileStruct *)(file->data))->unk10[strPtr->unk4][i]; } for (i = 0; i < 31; i++) { - gDungeon->unk1CD98[i] = file->data.dungData->unkC[strPtr->unk2][i]; + gDungeon->unk1CD98[i] = ((struct UnkDataFileStruct *)(file->data))->unkC[strPtr->unk2][i]; if (ExtractSpeciesIndex(&gDungeon->unk1CD98[i]) == 0) break; } @@ -110,311 +107,36 @@ void sub_803D4D0(void) for (i = 0; i < 4; i++) { - u16 *src = file->data.dungData->unk8[strPtr->unk6[i]]; + u16 *src = ((struct UnkDataFileStruct *)(file->data))->unk8[strPtr->unk6[i]]; + s32 arrId = 0; - for (j = 0; j < 252; src++) { - if (*src > 29999) { - for (k = *src - 30000; k != 0; k--) { + for (j = 0; j < NUM_ITEM_CATEGORIES + NUMBER_OF_ITEM_IDS; ) { + if (src[arrId] >= 30000) { + for (k = src[arrId] - 30000; k != 0; k--) { spArray[j++] = 0; } } else { - spArray[j++] = *src; + spArray[j++] = src[arrId]; } + arrId++; } - for (j = 0; j < 12; j++) { - gDungeon->unk1C590[i].unk0[j] = spArray[j]; + arrId = 0; + for (j = 0; j < NUM_ITEM_CATEGORIES; j++) { + gDungeon->unk1C590[i].categoryValues[arrId] = spArray[arrId]; + arrId++; } - for (j = 0; j < 240; j++) { - gDungeon->unk1C590[i].unk18[j] = spArray[12 + j]; + for (j = 0; j < NUMBER_OF_ITEM_IDS; j++) { + gDungeon->unk1C590[i].itemValues[j] = spArray[arrId]; + arrId++; } } CloseFile(file); } -*/ -// - -NAKED void sub_803D4D0(void) -{ - asm_unified(" .text\n" -" push {r4-r7,lr}\n" -" mov r7, r10\n" -" mov r6, r9\n" -" mov r5, r8\n" -" push {r5-r7}\n" -" sub sp, 0x1FC\n" -" ldr r6, _0803D654\n" -" ldr r1, [r6]\n" -" movs r4, 0xC9\n" -" lsls r4, 3\n" -" adds r0, r1, r4\n" -" ldr r2, _0803D658\n" -" adds r1, r2\n" -" bl sub_80901D8\n" -" ldr r0, [r6]\n" -" ldr r3, _0803D65C\n" -" adds r2, r0, r3\n" -" adds r1, r0, r4\n" -" ldrh r0, [r2]\n" -" ldrh r4, [r1]\n" -" cmp r0, r4\n" -" bne _0803D500\n" -" b _0803D6E0\n" -"_0803D500:\n" -" ldr r0, [r1]\n" -" str r0, [r2]\n" -" ldr r0, _0803D660\n" -" ldr r1, _0803D664\n" -" bl OpenFileAndGetFileDataPtr\n" -" mov r9, r0\n" -" ldr r3, [r0, 0x4]\n" -" ldr r2, [r6]\n" -" ldr r7, _0803D65C\n" -" adds r0, r2, r7\n" -" ldrb r1, [r0]\n" -" ldr r0, [r3]\n" -" lsls r1, 2\n" -" adds r1, r0\n" -" ldr r3, _0803D668\n" -" adds r0, r2, r3\n" -" ldrb r0, [r0]\n" -" lsls r0, 4\n" -" ldr r1, [r1]\n" -" adds r1, r0\n" -" mov r8, r1\n" -" ldr r4, _0803D658\n" -" adds r2, r4\n" -" ldrb r0, [r2]\n" -" bl GetDungeonFloorCount\n" -" ldr r1, [r6]\n" -" ldr r7, _0803D66C\n" -" adds r1, r7\n" -" strb r0, [r1]\n" -" ldr r0, [r6]\n" -" adds r0, r4\n" -" ldrb r0, [r0]\n" -" bl sub_80902C8\n" -" ldr r1, [r6]\n" -" strh r0, [r1, 0x14]\n" -" mov r2, r9\n" -" ldr r0, [r2, 0x4]\n" -" mov r3, r8\n" -" movs r4, 0\n" -" ldrsh r2, [r3, r4]\n" -" ldr r3, [r0, 0x4]\n" -" lsls r0, r2, 3\n" -" subs r0, r2\n" -" lsls r0, 2\n" -" ldr r7, _0803D670\n" -" adds r1, r7\n" -" adds r0, r3\n" -" ldm r0!, {r2-r4}\n" -" stm r1!, {r2-r4}\n" -" ldm r0!, {r2,r3,r7}\n" -" stm r1!, {r2,r3,r7}\n" -" ldr r0, [r0]\n" -" str r0, [r1]\n" -" movs r5, 0\n" -" mov r10, r6\n" -" ldr r4, _0803D674\n" -"_0803D576:\n" -" mov r6, r10\n" -" ldr r2, [r6]\n" -" lsls r3, r5, 1\n" -" adds r2, r4\n" -" adds r2, r3\n" -" mov r7, r9\n" -" ldr r1, [r7, 0x4]\n" -" mov r6, r8\n" -" movs r7, 0x4\n" -" ldrsh r0, [r6, r7]\n" -" ldr r1, [r1, 0x10]\n" -" lsls r0, 2\n" -" adds r0, r1\n" -" ldr r0, [r0]\n" -" adds r3, r0\n" -" ldrh r0, [r3]\n" -" strh r0, [r2]\n" -" adds r5, 0x1\n" -" cmp r5, 0x13\n" -" ble _0803D576\n" -" movs r5, 0\n" -" adds r6, 0x6\n" -" str r6, [sp, 0x1F8]\n" -" ldr r6, _0803D678\n" -" mov r10, r6\n" -"_0803D5A8:\n" -" ldr r1, _0803D654\n" -" ldr r0, [r1]\n" -" lsls r3, r5, 3\n" -" mov r2, r10\n" -" adds r4, r0, r2\n" -" adds r4, r3\n" -" mov r12, r4\n" -" mov r4, r9\n" -" ldr r2, [r4, 0x4]\n" -" mov r7, r8\n" -" movs r4, 0x2\n" -" ldrsh r1, [r7, r4]\n" -" ldr r2, [r2, 0xC]\n" -" lsls r1, 2\n" -" adds r1, r2\n" -" ldr r1, [r1]\n" -" adds r3, r1\n" -" ldr r1, [r3]\n" -" ldr r2, [r3, 0x4]\n" -" mov r7, r12\n" -" str r1, [r7]\n" -" str r2, [r7, 0x4]\n" -" adds r0, r6\n" -" bl ExtractSpeciesIndex\n" -" lsls r0, 16\n" -" cmp r0, 0\n" -" beq _0803D5E8\n" -" adds r6, 0x8\n" -" adds r5, 0x1\n" -" cmp r5, 0x1E\n" -" ble _0803D5A8\n" -"_0803D5E8:\n" -" cmp r5, 0x1F\n" -" bgt _0803D606\n" -" ldr r6, _0803D654\n" -" lsls r0, r5, 3\n" -" ldr r1, _0803D678\n" -" adds r4, r0, r1\n" -"_0803D5F4:\n" -" ldr r0, [r6]\n" -" adds r0, r4\n" -" movs r1, 0\n" -" bl sub_808E9C4\n" -" adds r4, 0x8\n" -" adds r5, 0x1\n" -" cmp r5, 0x1F\n" -" ble _0803D5F4\n" -"_0803D606:\n" -" movs r5, 0\n" -" ldr r2, _0803D67C\n" -" mov r10, r2\n" -"_0803D60C:\n" -" mov r3, r9\n" -" ldr r1, [r3, 0x4]\n" -" lsls r0, r5, 1\n" -" ldr r4, [sp, 0x1F8]\n" -" adds r0, r4, r0\n" -" movs r6, 0\n" -" ldrsh r0, [r0, r6]\n" -" ldr r1, [r1, 0x8]\n" -" lsls r0, 2\n" -" adds r0, r1\n" -" movs r4, 0\n" -" adds r7, r5, 0x1\n" -" mov r8, r7\n" -" lsls r1, r5, 6\n" -" mov r12, r1\n" -" ldr r3, [r0]\n" -" mov r2, sp\n" -"_0803D62E:\n" -" ldrh r0, [r3]\n" -" cmp r0, r10\n" -" bls _0803D684\n" -" ldrh r0, [r3]\n" -" ldr r6, _0803D680\n" -" adds r1, r0, r6\n" -" cmp r1, 0\n" -" beq _0803D68A\n" -" movs r6, 0\n" -" lsls r0, r4, 1\n" -" add r0, sp\n" -"_0803D644:\n" -" strh r6, [r0]\n" -" adds r0, 0x2\n" -" adds r2, 0x2\n" -" adds r4, 0x1\n" -" subs r1, 0x1\n" -" cmp r1, 0\n" -" bne _0803D644\n" -" b _0803D68A\n" -" .align 2, 0\n" -"_0803D654: .4byte gDungeon\n" -"_0803D658: .4byte 0x00000644\n" -"_0803D65C: .4byte 0x0001c570\n" -"_0803D660: .4byte gUnknown_80F4D8C\n" -"_0803D664: .4byte gDungeonFileArchive\n" -"_0803D668: .4byte 0x0001c571\n" -"_0803D66C: .4byte 0x0001cec8\n" -"_0803D670: .4byte 0x0001c574\n" -"_0803D674: .4byte 0x0001cd70\n" -"_0803D678: .4byte 0x0001cd98\n" -"_0803D67C: .4byte 0x0000752f\n" -"_0803D680: .4byte 0xffff8ad0\n" -"_0803D684:\n" -" strh r0, [r2]\n" -" adds r2, 0x2\n" -" adds r4, 0x1\n" -"_0803D68A:\n" -" adds r3, 0x2\n" -" cmp r4, 0xFB\n" -" ble _0803D62E\n" -" ldr r7, _0803D6F0\n" -" mov r1, r12\n" -" subs r0, r1, r5\n" -" movs r4, 0xB\n" -" mov r3, sp\n" -" lsls r2, r0, 3\n" -" ldr r6, _0803D6F4\n" -"_0803D69E:\n" -" ldr r0, [r7]\n" -" adds r0, r6\n" -" adds r0, r2\n" -" ldrh r1, [r3]\n" -" strh r1, [r0]\n" -" adds r3, 0x2\n" -" adds r2, 0x2\n" -" subs r4, 0x1\n" -" cmp r4, 0\n" -" bge _0803D69E\n" -" ldr r6, _0803D6F0\n" -" mov r2, r12\n" -" subs r0, r2, r5\n" -" lsls r3, r0, 3\n" -" add r2, sp, 0x18\n" -" ldr r5, _0803D6F8\n" -" movs r4, 0xEF\n" -"_0803D6C0:\n" -" ldr r0, [r6]\n" -" adds r0, r5\n" -" adds r0, r3\n" -" ldrh r1, [r2]\n" -" strh r1, [r0]\n" -" adds r2, 0x2\n" -" adds r3, 0x2\n" -" subs r4, 0x1\n" -" cmp r4, 0\n" -" bge _0803D6C0\n" -" mov r5, r8\n" -" cmp r5, 0x3\n" -" ble _0803D60C\n" -" mov r0, r9\n" -" bl CloseFile\n" -"_0803D6E0:\n" -" add sp, 0x1FC\n" -" pop {r3-r5}\n" -" mov r8, r3\n" -" mov r9, r4\n" -" mov r10, r5\n" -" pop {r4-r7}\n" -" pop {r0}\n" -" bx r0\n" -" .align 2, 0\n" -"_0803D6F0: .4byte gDungeon\n" -"_0803D6F4: .4byte 0x0001c590\n" -"_0803D6F8: .4byte 0x0001c5a8\n"); -} - u8 sub_803D6FC(void) { s32 i; @@ -433,7 +155,7 @@ u8 sub_803D73C(s32 a0) s32 rand = DungeonRandInt(10000); u8 category = NUM_ITEM_CATEGORIES; for (i = 0; i < NUM_ITEM_CATEGORIES; i++) { - if (gDungeon->unk1C590[a0].unk0[i] != 0 && gDungeon->unk1C590[a0].unk0[i] >= rand) { + if (gDungeon->unk1C590[a0].categoryValues[i] != 0 && gDungeon->unk1C590[a0].categoryValues[i] >= rand) { category = i; break; } @@ -443,7 +165,7 @@ u8 sub_803D73C(s32 a0) rand = DungeonRandInt(10000); for (i = 0; i < NUMBER_OF_ITEM_IDS; i++) { - if (gDungeon->unk1C590[a0].unk18[i] != 0 && GetItemCategory(i) == category && gDungeon->unk1C590[a0].unk18[i] >= rand) { + if (gDungeon->unk1C590[a0].itemValues[i] != 0 && GetItemCategory(i) == category && gDungeon->unk1C590[a0].itemValues[i] >= rand) { return i; } } diff --git a/src/items.c b/src/items.c index d5ee5352f..f8cc8f8a5 100644 --- a/src/items.c +++ b/src/items.c @@ -33,7 +33,7 @@ EWRAM_DATA ItemDataEntry *gItemParametersData = {0}; EWRAM_DATA TeamInventory gTeamInventory = {0}; EWRAM_INIT TeamInventory *gTeamInventoryRef = {NULL}; -extern s32 sub_8091E94(s32 a1, s32 a2, s32 a3); +extern u8 sub_8091E94(s32 a1, s32 a2, s32 a3); extern void SortKecleonShopInventory(); bool8 AddKecleonWareItem(u8); @@ -1195,223 +1195,63 @@ u8 xxx_bit_lut_lookup_8091E50(u8 i0, u8 i1) return (gUnknown_8108F64[i0][i1 >> 3] >> (i1 & 7)) & 1; } +extern const u16* gUnknown_8108E58[]; -extern u16* gUnknown_8108E58[]; - -struct UnkStruct_8091E94 { - s16 unk0[12]; - s16 unk18[0xf0]; -}; - -NAKED -s32 sub_8091E94(s32 a1, s32 a2, s32 a3) +u8 sub_8091E94(s32 a0, s32 a1, s32 a2) { -#if 0 - // this is about as good as I got it so far - s32 i; - u8 item_type; - s32 result; + s32 id, i, arrId; + u8 foundCategory, ret; + struct UnkDungeonGlobal_unk1C590 data; + s16 rawArray[NUM_ITEM_CATEGORIES + NUMBER_OF_ITEM_IDS]; + const u16 *ptr = gUnknown_8108E58[a0 - 1]; - // struct of 12 + 0xf0 (NUMBER_OF_ITEM_IDS) hwords? - struct UnkStruct_8091E94 s1; - u16 s2[12 + 0xf0]; - s32 data_index; - // 30000: level up exp required? + id = 0; + arrId = 0; + while (id < NUM_ITEM_CATEGORIES + NUMBER_OF_ITEM_IDS) { + if (ptr[arrId] >= 30000) { + s32 a = ptr[arrId] - 30000; - data_index = 0; - // compressed data? - for (i = 0; i < 252; i++) { - if (gUnknown_8108E58[a1 - 1][i] > 29999) { - s32 j; - for (j = gUnknown_8108E58[a1 - 1][i] - 30000; j != 0; j--) { - s2[data_index++] = 0; - } + while (a != 0) { + rawArray[id++] = 0; + a--; + } + } + else { + rawArray[id++] = ptr[arrId]; + } + arrId++; } - else { - s2[data_index++] = gUnknown_8108E58[a1 - 1][i]; + + arrId = 0; + for (id = 0; id < NUM_ITEM_CATEGORIES; id++) { + data.categoryValues[arrId] = rawArray[arrId]; + arrId++; } - } - for (i = 0; i < 12; i++) { - s1.unk0[i] = s2[i]; - } - - for (i = 0; i < 240; i++) { - s1.unk18[i] = s2[12 + i]; - } - - item_type = 0; - for (i = 0; i < 12; i++) { - if (s1.unk0[i] && s1.unk0[i] >= a2){ - item_type = i; - break; + for (id = 0; id < NUMBER_OF_ITEM_IDS; id++) { + data.itemValues[id] = rawArray[arrId]; + arrId++; } - } - result = 70; - if (item_type != 12) { - s32 j; - for (j = 0; j < 240; j++) { - if (s1.unk18[j] && (GetItemCategory(j) == item_type) && (s1.unk18[j] >= a3)) { - return result; - } + foundCategory = NUM_ITEM_CATEGORIES; + for (i = 0; i < NUM_ITEM_CATEGORIES; i++) { + if (data.categoryValues[i] != 0 && data.categoryValues[i] >= a1) { + foundCategory = i; + break; + } } - result = j; - } - return result; -#else - asm_unified("\tpush {r4-r7,lr}\n" -"\tmov r7, r10\n" -"\tmov r6, r9\n" -"\tmov r5, r8\n" -"\tpush {r5-r7}\n" -"\tldr r4, _08091EE4\n" -"\tadd sp, r4\n" -"\tmov r8, r1\n" -"\tmov r10, r2\n" -"\tldr r1, _08091EE8\n" -"\tsubs r0, 0x1\n" -"\tlsls r0, 2\n" -"\tadds r0, r1\n" -"\tmovs r3, 0\n" -"\tadd r1, sp, 0x18\n" -"\tmov r9, r1\n" -"\tldr r2, _08091EEC\n" -"\tmov r12, r2\n" -"\tadd r6, sp, 0x1F8\n" -"\tldr r2, [r0]\n" -"\tadds r7, r6, 0\n" -"\tmovs r4, 0\n" -"_08091EC0:\n" -"\tldrh r1, [r2]\n" -"\tcmp r1, r12\n" -"\tbls _08091EF4\n" -"\tldrh r0, [r2]\n" -"\tldr r1, _08091EF0\n" -"\tadds r0, r1\n" -"\tcmp r0, 0\n" -"\tbeq _08091EFC\n" -"\tmovs r5, 0\n" -"\tadds r1, r7, r4\n" -"_08091ED4:\n" -"\tstrh r5, [r1]\n" -"\tadds r1, 0x2\n" -"\tadds r4, 0x2\n" -"\tadds r3, 0x1\n" -"\tsubs r0, 0x1\n" -"\tcmp r0, 0\n" -"\tbne _08091ED4\n" -"\tb _08091EFC\n" -"\t.align 2, 0\n" -"_08091EE4: .4byte 0xfffffc10\n" -"_08091EE8: .4byte gUnknown_8108E58\n" -"_08091EEC: .4byte 0x0000752f\n" -"_08091EF0: .4byte 0xffff8ad0\n" -"_08091EF4:\n" -"\tadds r0, r6, r4\n" -"\tstrh r1, [r0]\n" -"\tadds r4, 0x2\n" -"\tadds r3, 0x1\n" -"_08091EFC:\n" -"\tadds r2, 0x2\n" -"\tcmp r3, 0xFB\n" -"\tble _08091EC0\n" -"\tmovs r3, 0xB\n" -"\tadd r2, sp, 0x1F8\n" -"\tmov r1, sp\n" -"_08091F08:\n" -"\tldrh r0, [r2]\n" -"\tstrh r0, [r1]\n" -"\tadds r2, 0x2\n" -"\tadds r1, 0x2\n" -"\tsubs r3, 0x1\n" -"\tcmp r3, 0\n" -"\tbge _08091F08\n" -"\tmov r2, r9\n" -"\tadd r1, sp, 0x210\n" -"\tmovs r3, 0xEF\n" -"_08091F1C:\n" -"\tldrh r0, [r1]\n" -"\tstrh r0, [r2]\n" -"\tadds r1, 0x2\n" -"\tadds r2, 0x2\n" -"\tsubs r3, 0x1\n" -"\tcmp r3, 0\n" -"\tbge _08091F1C\n" -"\tmovs r7, 0xC\n" -"\tmovs r6, 0\n" -"\tmov r0, sp\n" -"\tmovs r2, 0\n" -"\tldrsh r0, [r0, r2]\n" -"\tcmp r0, 0\n" -"\tbeq _08091F4A\n" -"\tmov r0, sp\n" -"\tmovs r1, 0\n" -"\tldrsh r0, [r0, r1]\n" -"\tcmp r0, r8\n" -"\tblt _08091F4A\n" -"\tmovs r7, 0\n" -"\tb _08091F66\n" -"_08091F46:\n" -"\tmov r8, r5\n" -"\tb _08091F9C\n" -"_08091F4A:\n" -"\tadds r6, 0x1\n" -"\tcmp r6, 0xB\n" -"\tbgt _08091F66\n" -"\tlsls r0, r6, 1\n" -"\tmov r2, sp\n" -"\tadds r1, r2, r0\n" -"\tmovs r2, 0\n" -"\tldrsh r0, [r1, r2]\n" -"\tcmp r0, 0\n" -"\tbeq _08091F4A\n" -"\tcmp r0, r8\n" -"\tblt _08091F4A\n" -"\tlsls r0, r6, 24\n" -"\tlsrs r7, r0, 24\n" -"_08091F66:\n" -"\tmovs r0, 0x46\n" -"\tmov r8, r0\n" -"\tcmp r7, 0xC\n" -"\tbeq _08091F9C\n" -"\tmovs r6, 0\n" -"\tmov r4, r9\n" -"_08091F72:\n" -"\tmovs r1, 0\n" -"\tldrsh r0, [r4, r1]\n" -"\tcmp r0, 0\n" -"\tbeq _08091F94\n" -"\tlsls r0, r6, 24\n" -"\tlsrs r5, r0, 24\n" -"\tadds r0, r5, 0\n" -"\tbl GetItemCategory\n" -"\tlsls r0, 24\n" -"\tlsrs r0, 24\n" -"\tcmp r0, r7\n" -"\tbne _08091F94\n" -"\tmovs r2, 0\n" -"\tldrsh r0, [r4, r2]\n" -"\tcmp r0, r10\n" -"\tbge _08091F46\n" -"_08091F94:\n" -"\tadds r4, 0x2\n" -"\tadds r6, 0x1\n" -"\tcmp r6, 0xEF\n" -"\tble _08091F72\n" -"_08091F9C:\n" -"\tmov r0, r8\n" -"\tmovs r3, 0xFC\n" -"\tlsls r3, 2\n" -"\tadd sp, r3\n" -"\tpop {r3-r5}\n" -"\tmov r8, r3\n" -"\tmov r9, r4\n" -"\tmov r10, r5\n" -"\tpop {r4-r7}\n" -"\tpop {r1}\n" -"\tbx r1\n"); -#endif + + ret = ITEM_PLAIN_SEED; + if (foundCategory != NUM_ITEM_CATEGORIES) { + for (i = 0; i < NUMBER_OF_ITEM_IDS; i++) { + if (data.itemValues[i] != 0 && GetItemCategory(i) == foundCategory && data.itemValues[i] >= a2) { + ret = i; + break; + } + } + } + + return ret; } void ClearAllItems_8091FB4(void)