diff --git a/asm/other_menus.s b/asm/other_menus.s index 652877b0c..a40d60734 100644 --- a/asm/other_menus.s +++ b/asm/other_menus.s @@ -1016,59 +1016,4 @@ _08038010: bx r0 thumb_func_end sub_8037F9C - thumb_func_start sub_8038014 -sub_8038014: - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - bl sub_800D588 - lsls r0, 24 - adds r4, r6, 0 - cmp r0, 0 - bne _08038028 - adds r4, r5, 0 -_08038028: - bl sub_800D588 - lsls r0, 24 - adds r3, r5, 0 - cmp r0, 0 - bne _08038036 - adds r3, r6, 0 -_08038036: - ldrb r0, [r4] - ldrb r1, [r3] - cmp r0, r1 - bne _0803804C - ldr r0, _08038048 - ldr r1, [r0] - ldrb r0, [r4] - b _08038052 - .align 2, 0 -_08038048: .4byte gTeamInventory_203B460 -_0803804C: - ldr r0, _08038070 - ldr r1, [r0] - ldrb r0, [r3] -_08038052: - lsls r0, 1 - adds r1, 0x50 - adds r1, r0 - ldrh r2, [r1] - ldr r0, [r3, 0x4] - adds r2, r0 - ldr r0, _08038074 - movs r1, 0 - cmp r2, r0 - ble _08038068 - movs r1, 0x6 -_08038068: - adds r0, r1, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08038070: .4byte gTeamInventory_203B460 -_08038074: .4byte 0x000003e7 - thumb_func_end sub_8038014 - .align 2,0 diff --git a/src/other_menus_1.c b/src/other_menus_1.c index f2626c190..fad568adf 100644 --- a/src/other_menus_1.c +++ b/src/other_menus_1.c @@ -4,6 +4,8 @@ #include "pokemon.h" #include "code_8094F88.h" #include "save.h" +#include "team_inventory.h" +#include "main_menu.h" extern s32 gCommsTimeout; // Counts to 100 and then errors if other player hasn't connected extern s32 sub_803815C(u32, void *, void*); @@ -18,10 +20,54 @@ extern void sub_800D510(void); extern s32 sub_8037DF0(void); extern void sub_8037F9C(u32, u8 *, u8 *); -extern s32 sub_8038014(void *param_2,void *param_3); extern u8 sub_800D588(void); extern struct UnkStruct_203B184 *gUnknown_203B184; +s32 sub_8038014(struct unkStruct_8035D94 *param_1,struct unkStruct_8035D94 *param_2) +{ + s32 linkStatus; + s32 r2; + struct unkStruct_8035D94 *r3; + struct unkStruct_8035D94 *r4; + + if (sub_800D588() == 0) { + r4 = param_2; + } + else + { + r4 = param_1; + } + + if (sub_800D588() == 0) { + r3 = param_1; + } + else + { + r3 = param_2; + } + + if ((r4->itemIndex).itemIndex_u8 == (r3->itemIndex).itemIndex_u8) { + r2 = gTeamInventory_203B460->teamStorage[r4->itemIndex.itemIndex_u8]; + r2 += r3->numItems; + if (r2 > 999) { + linkStatus = COMMS_NO_ROOM_STORAGE; + } + else + linkStatus = COMMS_GOOD; + } + else { + r2 = gTeamInventory_203B460->teamStorage[r3->itemIndex.itemIndex_u8]; + r2 += r3->numItems; + if (r2 > 999) { + linkStatus = COMMS_NO_ROOM_STORAGE; + } + else + linkStatus = COMMS_GOOD; + + } + return linkStatus; +} + s32 sub_8038078(struct unkStruct_203B480 *param_1,struct unkStruct_203B480 *param_2) { u32 uVar2;