.include "constants/gba_constants.s" .include "constants/species_constants.s" .include "asm/macros.s" .syntax unified .text thumb_func_start unref_sub_80B4884 unref_sub_80B4884: @ 80B4884 push {lr} sub sp, 0x4 mov r1, sp movs r0, 0 strh r0, [r1] ldr r1, _080B48A0 ldr r2, _080B48A4 mov r0, sp bl CpuSet add sp, 0x4 pop {r0} bx r0 .align 2, 0 _080B48A0: .4byte gSaveBlock1 + 0x3160 _080B48A4: .4byte 0x01000298 thumb_func_end unref_sub_80B4884 thumb_func_start sub_80B48A8 sub_80B48A8: @ 80B48A8 push {r4-r6,lr} adds r5, r0, 0 ldr r3, _080B48E0 movs r2, 0 ldr r6, _080B48E4 ldr r0, _080B48E8 adds r4, r3, r0 _080B48B6: adds r0, r3, r2 adds r1, r5, r2 ldrb r1, [r1] strb r1, [r0] adds r2, 0x1 cmp r2, r6 bls _080B48B6 ldr r2, _080B48EC adds r1, r4, r2 ldr r2, _080B48F0 adds r0, r4, r2 str r0, [r1] ldr r0, _080B48F4 adds r1, r4, r0 adds r2, 0x2D adds r0, r4, r2 str r0, [r1] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080B48E0: .4byte gSaveBlock1 + 0x3160 _080B48E4: .4byte 0x0000052f _080B48E8: .4byte 0xffffcea0 _080B48EC: .4byte 0x0000316c _080B48F0: .4byte 0x0000361c _080B48F4: .4byte 0x00003170 thumb_func_end sub_80B48A8 thumb_func_start sub_80B48F8 sub_80B48F8: @ 80B48F8 push {r4-r7,lr} ldr r3, _080B4934 ldr r1, _080B4938 adds r4, r3, r1 ldr r6, [r4] adds r1, 0x4 adds r2, r3, r1 ldr r7, [r2] movs r1, 0 str r1, [r4] str r1, [r2] adds r4, r0, 0 movs r2, 0 ldr r5, _080B493C _080B4914: adds r0, r4, r1 ldrb r0, [r0] adds r2, r0 adds r1, 0x1 cmp r1, r5 bls _080B4914 ldr r1, _080B4938 adds r0, r3, r1 str r6, [r0] adds r1, 0x4 adds r0, r3, r1 str r7, [r0] adds r0, r2, 0 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _080B4934: .4byte gSaveBlock1 _080B4938: .4byte 0x0000316c _080B493C: .4byte 0x0000052b thumb_func_end sub_80B48F8 thumb_func_start sub_80B4940 sub_80B4940: @ 80B4940 push {r4,lr} ldr r4, _080B4970 ldr r1, _080B4974 adds r0, r4, r1 ldrb r0, [r0] cmp r0, 0 beq _080B4984 ldr r2, _080B4978 adds r0, r4, r2 ldrb r0, [r0] cmp r0, 0 beq _080B4984 ldr r1, _080B497C adds r0, r4, r1 bl sub_80B48F8 ldr r2, _080B4980 adds r1, r4, r2 ldr r1, [r1] cmp r0, r1 bne _080B4984 movs r0, 0x1 b _080B4986 .align 2, 0 _080B4970: .4byte gSaveBlock1 _080B4974: .4byte 0x00003174 _080B4978: .4byte 0x0000316a _080B497C: .4byte 0x00003160 _080B4980: .4byte 0x0000368c _080B4984: movs r0, 0 _080B4986: pop {r4} pop {r1} bx r1 thumb_func_end sub_80B4940 thumb_func_start GetBerryInfo GetBerryInfo: @ 80B498C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x2B bne _080B49A8 bl sub_80B4940 cmp r0, 0 beq _080B49A8 ldr r0, _080B49A4 b _080B49BE .align 2, 0 _080B49A4: .4byte gSaveBlock1 + 0x3160 _080B49A8: subs r0, r4, 0x1 lsls r0, 24 lsrs r0, 24 cmp r0, 0x2A bls _080B49B4 movs r4, 0x1 _080B49B4: lsls r0, r4, 3 subs r0, r4 lsls r0, 2 ldr r1, _080B49C4 adds r0, r1 _080B49BE: pop {r4} pop {r1} bx r1 .align 2, 0 _080B49C4: .4byte gBerries - 0x1C thumb_func_end GetBerryInfo thumb_func_start GetBerryTreeInfo GetBerryTreeInfo: @ 80B49C8 lsls r0, 24 lsrs r0, 21 ldr r1, _080B49D4 adds r0, r1 bx lr .align 2, 0 _080B49D4: .4byte gSaveBlock1 + 0x1608 thumb_func_end GetBerryTreeInfo thumb_func_start FieldObjectInteractionWaterBerryTree FieldObjectInteractionWaterBerryTree: @ 80B49D8 push {lr} ldr r0, _080B4A00 ldrb r0, [r0] bl FieldObjectGetBerryTreeId lsls r0, 24 lsrs r0, 24 bl GetBerryTreeInfo adds r2, r0, 0 ldrb r0, [r2, 0x1] lsls r0, 25 lsrs r0, 25 cmp r0, 0x2 beq _080B4A14 cmp r0, 0x2 bgt _080B4A04 cmp r0, 0x1 beq _080B4A0E b _080B4A2A .align 2, 0 _080B4A00: .4byte gSelectedMapObject _080B4A04: cmp r0, 0x3 beq _080B4A1A cmp r0, 0x4 beq _080B4A20 b _080B4A2A _080B4A0E: ldrb r0, [r2, 0x5] movs r1, 0x10 b _080B4A24 _080B4A14: ldrb r0, [r2, 0x5] movs r1, 0x20 b _080B4A24 _080B4A1A: ldrb r0, [r2, 0x5] movs r1, 0x40 b _080B4A24 _080B4A20: ldrb r0, [r2, 0x5] movs r1, 0x80 _080B4A24: orrs r0, r1 strb r0, [r2, 0x5] b _080B4A2E _080B4A2A: movs r0, 0 b _080B4A30 _080B4A2E: movs r0, 0x1 _080B4A30: pop {r1} bx r1 thumb_func_end FieldObjectInteractionWaterBerryTree thumb_func_start IsPlayerFacingPlantedBerryTree IsPlayerFacingPlantedBerryTree: @ 80B4A34 push {lr} bl GetFieldObjectScriptPointerForComparison ldr r1, _080B4A5C cmp r0, r1 bne _080B4A64 ldr r0, _080B4A60 ldrb r0, [r0] bl FieldObjectGetBerryTreeId lsls r0, 24 lsrs r0, 24 bl GetStageByBerryTreeId lsls r0, 24 cmp r0, 0 bne _080B4A64 movs r0, 0x1 b _080B4A66 .align 2, 0 _080B4A5C: .4byte BerryTreeScript _080B4A60: .4byte gSelectedMapObject _080B4A64: movs r0, 0 _080B4A66: pop {r1} bx r1 thumb_func_end IsPlayerFacingPlantedBerryTree thumb_func_start WaterBerryTree WaterBerryTree: @ 80B4A6C push {lr} bl GetFieldObjectScriptPointerForComparison ldr r1, _080B4A84 cmp r0, r1 bne _080B4A88 bl FieldObjectInteractionWaterBerryTree lsls r0, 24 lsrs r0, 24 b _080B4A8A .align 2, 0 _080B4A84: .4byte BerryTreeScript _080B4A88: movs r0, 0 _080B4A8A: pop {r1} bx r1 thumb_func_end WaterBerryTree thumb_func_start sub_80B4A90 sub_80B4A90: @ 80B4A90 push {r4,lr} ldr r1, _080B4AB4 ldr r0, _080B4AB8 ldr r3, [r0] ldr r4, [r0, 0x4] movs r2, 0x7F movs r0, 0xD0 lsls r0, 5 adds r1, r0 _080B4AA2: str r3, [r1] str r4, [r1, 0x4] subs r1, 0x8 subs r2, 0x1 cmp r2, 0 bge _080B4AA2 pop {r4} pop {r0} bx r0 .align 2, 0 _080B4AB4: .4byte gSaveBlock1 _080B4AB8: .4byte gUnknown_083CD780 thumb_func_end sub_80B4A90 thumb_func_start BerryTreeGrow BerryTreeGrow: @ 80B4ABC push {r4,lr} adds r4, r0, 0 ldrb r1, [r4, 0x1] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080B4ACE _080B4ACA: movs r0, 0 b _080B4B5A _080B4ACE: lsls r0, r1, 25 lsrs r0, 25 cmp r0, 0x5 bhi _080B4B58 lsls r0, 2 ldr r1, _080B4AE0 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080B4AE0: .4byte _080B4AE4 .align 2, 0 _080B4AE4: .4byte _080B4ACA .4byte _080B4B04 .4byte _080B4B04 .4byte _080B4B04 .4byte _080B4AFC .4byte _080B4B1C _080B4AFC: adds r0, r4, 0 bl CalcBerryYield strb r0, [r4, 0x4] _080B4B04: ldrb r2, [r4, 0x1] lsls r1, r2, 25 lsrs r1, 25 adds r1, 0x1 movs r0, 0x7F ands r1, r0 movs r0, 0x80 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r4, 0x1] b _080B4B58 _080B4B1C: ldrb r0, [r4, 0x5] movs r1, 0x11 negs r1, r1 ands r1, r0 movs r0, 0x21 negs r0, r0 ands r1, r0 subs r0, 0x20 ands r1, r0 movs r0, 0x7F ands r1, r0 movs r0, 0 strb r0, [r4, 0x4] ldrb r2, [r4, 0x1] subs r0, 0x80 ands r0, r2 movs r2, 0x2 orrs r0, r2 strb r0, [r4, 0x1] adds r1, 0x1 movs r0, 0xF ands r1, r0 strb r1, [r4, 0x5] cmp r1, 0xA bne _080B4B58 ldr r0, _080B4B60 ldr r1, [r0, 0x4] ldr r0, [r0] str r0, [r4] str r1, [r4, 0x4] _080B4B58: movs r0, 0x1 _080B4B5A: pop {r4} pop {r1} bx r1 .align 2, 0 _080B4B60: .4byte gUnknown_083CD780 thumb_func_end BerryTreeGrow thumb_func_start BerryTreeTimeUpdate BerryTreeTimeUpdate: @ 80B4B64 push {r4-r7,lr} adds r6, r0, 0 movs r2, 0 _080B4B6A: lsls r0, r2, 3 ldr r1, _080B4BAC adds r4, r0, r1 ldrb r0, [r4] adds r7, r2, 0x1 cmp r0, 0 beq _080B4BF8 ldrb r1, [r4, 0x1] movs r0, 0x7F ands r0, r1 cmp r0, 0 beq _080B4BF8 movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080B4BF8 ldrb r0, [r4] bl GetStageDurationByBerryType lsls r0, 16 lsrs r0, 16 lsls r1, r0, 3 adds r1, r0 lsls r1, 3 subs r1, r0 cmp r6, r1 blt _080B4BB4 ldr r0, _080B4BB0 ldr r1, [r0, 0x4] ldr r0, [r0] str r0, [r4] str r1, [r4, 0x4] b _080B4BF8 .align 2, 0 _080B4BAC: .4byte gSaveBlock1 + 0x1608 _080B4BB0: .4byte gUnknown_083CD780 _080B4BB4: adds r5, r6, 0 cmp r5, 0 beq _080B4BF8 ldrh r1, [r4, 0x2] cmp r1, r5 ble _080B4BC4 subs r0, r1, r5 b _080B4BF6 _080B4BC4: subs r5, r1 ldrb r0, [r4] bl GetStageDurationByBerryType strh r0, [r4, 0x2] adds r0, r4, 0 bl BerryTreeGrow cmp r0, 0 beq _080B4BF8 ldrb r1, [r4, 0x1] movs r0, 0x7F ands r0, r1 cmp r0, 0x5 bne _080B4BE8 ldrh r0, [r4, 0x2] lsls r0, 2 strh r0, [r4, 0x2] _080B4BE8: cmp r5, 0 beq _080B4BF8 ldrh r0, [r4, 0x2] adds r1, r0, 0 cmp r0, r5 ble _080B4BC4 subs r0, r5 _080B4BF6: strh r0, [r4, 0x2] _080B4BF8: adds r2, r7, 0 cmp r2, 0x7F ble _080B4B6A pop {r4-r7} pop {r0} bx r0 thumb_func_end BerryTreeTimeUpdate thumb_func_start PlantBerryTree PlantBerryTree: @ 80B4C04 push {r4-r7,lr} adds r4, r1, 0 adds r5, r2, 0 lsls r0, 24 lsrs r0, 24 lsls r4, 24 lsrs r4, 24 lsls r5, 24 lsrs r5, 24 lsls r3, 24 lsrs r7, r3, 24 bl GetBerryTreeInfo adds r6, r0, 0 ldr r0, _080B4C68 ldr r1, [r0, 0x4] ldr r0, [r0] str r0, [r6] str r1, [r6, 0x4] strb r4, [r6] adds r0, r4, 0 bl GetStageDurationByBerryType strh r0, [r6, 0x2] movs r1, 0x7F ands r1, r5 ldrb r2, [r6, 0x1] movs r0, 0x80 negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r6, 0x1] cmp r5, 0x5 bne _080B4C56 adds r0, r6, 0 bl CalcBerryYield strb r0, [r6, 0x4] ldrh r0, [r6, 0x2] lsls r0, 2 strh r0, [r6, 0x2] _080B4C56: cmp r7, 0 bne _080B4C62 ldrb r0, [r6, 0x1] movs r1, 0x80 orrs r0, r1 strb r0, [r6, 0x1] _080B4C62: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080B4C68: .4byte gUnknown_083CD780 thumb_func_end PlantBerryTree thumb_func_start RemoveBerryTree RemoveBerryTree: @ 80B4C6C lsls r0, 24 ldr r1, _080B4C84 lsrs r0, 21 ldr r2, _080B4C88 adds r1, r2 adds r0, r1 ldr r1, _080B4C8C ldr r2, [r1, 0x4] ldr r1, [r1] str r1, [r0] str r2, [r0, 0x4] bx lr .align 2, 0 _080B4C84: .4byte gSaveBlock1 _080B4C88: .4byte 0x00001608 _080B4C8C: .4byte gUnknown_083CD780 thumb_func_end RemoveBerryTree thumb_func_start GetBerryTypeByBerryTreeId GetBerryTypeByBerryTreeId: @ 80B4C90 lsls r0, 24 ldr r1, _080B4CA0 lsrs r0, 21 adds r0, r1 ldr r1, _080B4CA4 adds r0, r1 ldrb r0, [r0] bx lr .align 2, 0 _080B4CA0: .4byte gSaveBlock1 _080B4CA4: .4byte 0x00001608 thumb_func_end GetBerryTypeByBerryTreeId thumb_func_start GetStageByBerryTreeId GetStageByBerryTreeId: @ 80B4CA8 lsls r0, 24 ldr r1, _080B4CBC lsrs r0, 21 adds r0, r1 ldr r1, _080B4CC0 adds r0, r1 ldrb r0, [r0] lsls r0, 25 lsrs r0, 25 bx lr .align 2, 0 _080B4CBC: .4byte gSaveBlock1 _080B4CC0: .4byte 0x00001609 thumb_func_end GetStageByBerryTreeId thumb_func_start ItemIdToBerryType ItemIdToBerryType: @ 80B4CC4 push {lr} lsls r0, 16 lsrs r1, r0, 16 ldr r2, _080B4CE0 adds r0, r2 lsrs r0, 16 cmp r0, 0x2A bhi _080B4CE4 adds r0, r1, 0 adds r0, 0x7C lsls r0, 24 lsrs r0, 24 b _080B4CE6 .align 2, 0 _080B4CE0: .4byte 0xff7b0000 _080B4CE4: movs r0, 0x1 _080B4CE6: pop {r1} bx r1 thumb_func_end ItemIdToBerryType thumb_func_start BerryTypeToItemId BerryTypeToItemId: @ 80B4CEC push {lr} lsls r0, 16 lsrs r1, r0, 16 ldr r2, _080B4D08 adds r0, r2 lsrs r0, 16 cmp r0, 0x2A bhi _080B4D0C adds r0, r1, 0 adds r0, 0x84 lsls r0, 16 lsrs r0, 16 b _080B4D0E .align 2, 0 _080B4D08: .4byte 0xffff0000 _080B4D0C: movs r0, 0x85 _080B4D0E: pop {r1} bx r1 thumb_func_end BerryTypeToItemId thumb_func_start GetBerryNameByBerryType GetBerryNameByBerryType: @ 80B4D14 push {r4,lr} adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 bl GetBerryInfo adds r1, r0, 0 adds r0, r4, 0 movs r2, 0x6 bl memcpy movs r0, 0xFF strb r0, [r4, 0x6] pop {r4} pop {r0} bx r0 thumb_func_end GetBerryNameByBerryType thumb_func_start ResetBerryTreeSparkleFlag ResetBerryTreeSparkleFlag: @ 80B4D34 push {lr} lsls r0, 24 lsrs r0, 24 bl GetBerryTreeInfo ldrb r2, [r0, 0x1] movs r1, 0x7F ands r1, r2 strb r1, [r0, 0x1] pop {r0} bx r0 thumb_func_end ResetBerryTreeSparkleFlag thumb_func_start BerryTreeGetNumStagesWatered BerryTreeGetNumStagesWatered: @ 80B4D4C push {lr} ldrb r2, [r0, 0x5] movs r0, 0x10 ands r0, r2 lsls r0, 24 lsrs r0, 24 negs r0, r0 lsrs r1, r0, 31 movs r0, 0x20 ands r0, r2 cmp r0, 0 beq _080B4D66 adds r1, 0x1 _080B4D66: movs r0, 0x40 ands r0, r2 cmp r0, 0 beq _080B4D74 adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 _080B4D74: movs r0, 0x80 ands r0, r2 cmp r0, 0 beq _080B4D82 adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 _080B4D82: adds r0, r1, 0 pop {r1} bx r1 thumb_func_end BerryTreeGetNumStagesWatered thumb_func_start GetNumStagesWateredByBerryTreeId GetNumStagesWateredByBerryTreeId: @ 80B4D88 push {lr} lsls r0, 24 lsrs r0, 24 bl GetBerryTreeInfo bl BerryTreeGetNumStagesWatered lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 thumb_func_end GetNumStagesWateredByBerryTreeId thumb_func_start CalcBerryYieldInternal CalcBerryYieldInternal: @ 80B4DA0 push {r4-r6,lr} lsls r0, 16 lsrs r0, 16 lsls r1, 16 lsrs r6, r1, 16 lsls r2, 24 lsrs r2, 24 cmp r2, 0 bne _080B4DB6 lsls r0, r6, 24 b _080B4DEA _080B4DB6: subs r1, r0, r6 subs r0, r2, 0x1 adds r5, r1, 0 muls r5, r0 adds r4, r1, 0 muls r4, r2 bl Random lsls r0, 16 lsrs r0, 16 subs r4, r5 adds r4, 0x1 adds r1, r4, 0 bl __umodsi3 adds r5, r0 movs r0, 0x3 ands r0, r5 cmp r0, 0x1 bls _080B4DE4 lsrs r0, r5, 2 adds r0, 0x1 b _080B4DE6 _080B4DE4: lsrs r0, r5, 2 _080B4DE6: adds r0, r6 lsls r0, 24 _080B4DEA: lsrs r0, 24 pop {r4-r6} pop {r1} bx r1 thumb_func_end CalcBerryYieldInternal thumb_func_start CalcBerryYield CalcBerryYield: @ 80B4DF4 push {r4-r6,lr} adds r4, r0, 0 ldrb r0, [r4] bl GetBerryInfo ldrb r6, [r0, 0xB] ldrb r5, [r0, 0xA] adds r0, r4, 0 bl BerryTreeGetNumStagesWatered adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 adds r0, r5, 0 adds r1, r6, 0 bl CalcBerryYieldInternal lsls r0, 24 lsrs r0, 24 pop {r4-r6} pop {r1} bx r1 thumb_func_end CalcBerryYield thumb_func_start GetBerryCountByBerryTreeId GetBerryCountByBerryTreeId: @ 80B4E20 lsls r0, 24 ldr r1, _080B4E30 lsrs r0, 21 adds r0, r1 ldr r1, _080B4E34 adds r0, r1 ldrb r0, [r0] bx lr .align 2, 0 _080B4E30: .4byte gSaveBlock1 _080B4E34: .4byte 0x0000160c thumb_func_end GetBerryCountByBerryTreeId thumb_func_start GetStageDurationByBerryType GetStageDurationByBerryType: @ 80B4E38 push {lr} lsls r0, 24 lsrs r0, 24 bl GetBerryInfo ldrb r1, [r0, 0x14] lsls r0, r1, 4 subs r0, r1 lsls r0, 18 lsrs r0, 16 pop {r1} bx r1 thumb_func_end GetStageDurationByBerryType thumb_func_start FieldObjectInteractionGetBerryTreeData FieldObjectInteractionGetBerryTreeData: @ 80B4E50 push {r4-r6,lr} ldr r0, _080B4E8C ldrb r0, [r0] bl FieldObjectGetBerryTreeId lsls r0, 24 lsrs r5, r0, 24 adds r0, r5, 0 bl GetBerryTypeByBerryTreeId lsls r0, 24 lsrs r6, r0, 24 adds r0, r5, 0 bl ResetBerryTreeSparkleFlag ldr r0, _080B4E90 ldrb r0, [r0] ldr r2, _080B4E94 ldrb r1, [r2, 0x5] ldrb r2, [r2, 0x4] bl sub_8060234 lsls r0, 24 cmp r0, 0 beq _080B4E9C ldr r1, _080B4E98 movs r0, 0xFF strh r0, [r1] b _080B4EAA .align 2, 0 _080B4E8C: .4byte gSelectedMapObject _080B4E90: .4byte gUnknown_0202E8DE _080B4E94: .4byte gSaveBlock1 _080B4E98: .4byte gUnknown_0202E8CC _080B4E9C: ldr r4, _080B4ED4 adds r0, r5, 0 bl GetStageByBerryTreeId lsls r0, 24 lsrs r0, 24 strh r0, [r4] _080B4EAA: ldr r4, _080B4ED8 adds r0, r5, 0 bl GetNumStagesWateredByBerryTreeId lsls r0, 24 lsrs r0, 24 strh r0, [r4] ldr r4, _080B4EDC adds r0, r5, 0 bl GetBerryCountByBerryTreeId lsls r0, 24 lsrs r0, 24 strh r0, [r4] ldr r1, _080B4EE0 adds r0, r6, 0 bl GetBerryNameByBerryType pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080B4ED4: .4byte gUnknown_0202E8CC _080B4ED8: .4byte gUnknown_0202E8CE _080B4EDC: .4byte gUnknown_0202E8D0 _080B4EE0: .4byte gStringVar1 thumb_func_end FieldObjectInteractionGetBerryTreeData thumb_func_start sub_80B4EE4 sub_80B4EE4: @ 80B4EE4 push {lr} ldr r0, _080B4EF0 bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 _080B4EF0: .4byte sub_80A68CC thumb_func_end sub_80B4EE4 thumb_func_start FieldObjectInteractionPlantBerryTree FieldObjectInteractionPlantBerryTree: @ 80B4EF4 push {r4,lr} ldr r0, _080B4F24 ldrh r0, [r0] bl ItemIdToBerryType adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _080B4F28 ldrb r0, [r0] bl FieldObjectGetBerryTreeId lsls r0, 24 lsrs r0, 24 adds r1, r4, 0 movs r2, 0x1 movs r3, 0x1 bl PlantBerryTree bl FieldObjectInteractionGetBerryTreeData pop {r4} pop {r0} bx r0 .align 2, 0 _080B4F24: .4byte word_203855E _080B4F28: .4byte gSelectedMapObject thumb_func_end FieldObjectInteractionPlantBerryTree thumb_func_start FieldObjectInteractionPickBerryTree FieldObjectInteractionPickBerryTree: @ 80B4F2C push {r4-r6,lr} ldr r0, _080B4F70 ldrb r0, [r0] bl FieldObjectGetBerryTreeId adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 adds r0, r5, 0 bl GetBerryTypeByBerryTreeId lsls r0, 24 lsrs r0, 24 ldr r6, _080B4F74 bl BerryTypeToItemId adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 adds r0, r5, 0 bl GetBerryCountByBerryTreeId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl sub_80A9424 lsls r0, 24 lsrs r0, 24 strh r0, [r6] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080B4F70: .4byte gSelectedMapObject _080B4F74: .4byte gUnknown_0202E8CC thumb_func_end FieldObjectInteractionPickBerryTree thumb_func_start FieldObjectInteractionRemoveBerryTree FieldObjectInteractionRemoveBerryTree: @ 80B4F78 push {lr} ldr r0, _080B4F9C ldrb r0, [r0] bl FieldObjectGetBerryTreeId lsls r0, 24 lsrs r0, 24 bl RemoveBerryTree ldr r0, _080B4FA0 ldrb r0, [r0] ldr r2, _080B4FA4 ldrb r1, [r2, 0x5] ldrb r2, [r2, 0x4] bl sub_8060288 pop {r0} bx r0 .align 2, 0 _080B4F9C: .4byte gSelectedMapObject _080B4FA0: .4byte gUnknown_0202E8DE _080B4FA4: .4byte gSaveBlock1 thumb_func_end FieldObjectInteractionRemoveBerryTree thumb_func_start PlayerHasBerries PlayerHasBerries: @ 80B4FA8 push {lr} movs r0, 0x4 bl IsBagPocketNonEmpty lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 thumb_func_end PlayerHasBerries thumb_func_start ResetBerryTreeSparkleFlags ResetBerryTreeSparkleFlags: @ 80B4FB8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 mov r4, sp adds r4, 0x2 mov r0, sp adds r1, r4, 0 bl GetCameraCoords mov r0, sp ldrh r2, [r0] ldrh r1, [r4] adds r1, 0x3 adds r3, r2, 0 adds r3, 0xE lsls r1, 16 movs r5, 0x80 lsls r5, 12 adds r0, r1, r5 lsrs r0, 16 mov r10, r0 mov r5, sp lsls r2, 16 asrs r2, 16 mov r9, r2 ldr r4, _080B5050 lsls r3, 16 asrs r3, 16 mov r8, r3 asrs r7, r1, 16 movs r6, 0xF _080B4FFC: ldrb r0, [r4] lsls r0, 31 cmp r0, 0 beq _080B5038 ldrb r0, [r4, 0x6] cmp r0, 0xC bne _080B5038 ldrh r0, [r4, 0x10] strh r0, [r5] ldrh r0, [r4, 0x12] mov r1, sp strh r0, [r1, 0x2] movs r2, 0 ldrsh r1, [r5, r2] cmp r9, r1 bgt _080B5038 cmp r1, r8 bgt _080B5038 lsls r0, 16 asrs r1, r0, 16 cmp r7, r1 bgt _080B5038 mov r2, r10 lsls r0, r2, 16 asrs r0, 16 cmp r1, r0 bgt _080B5038 ldrb r0, [r4, 0x1D] bl ResetBerryTreeSparkleFlag _080B5038: adds r4, 0x24 subs r6, 0x1 cmp r6, 0 bge _080B4FFC add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080B5050: .4byte gMapObjects thumb_func_end ResetBerryTreeSparkleFlags .align 2, 0 @ Don't pad with nop.