diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-09-30 16:59:39 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-09-30 16:59:39 -0400 |
commit | e65487716a0afc3c48d712f706783c58cc82676c (patch) | |
tree | 475f1dc4efee78de574ea394342a006123c19512 | |
parent | 3766ddcfda811cff3a7c38808c9efe294c33ed7c (diff) |
berry_pouch through sub_813E2B8
-rw-r--r-- | asm/berry_pouch.s | 634 | ||||
-rw-r--r-- | baserom.ips | bin | 2012710 -> 2012689 bytes | |||
-rw-r--r-- | data/berry_pouch.s | 29 | ||||
-rw-r--r-- | data/strings.s | 8 | ||||
-rw-r--r-- | graphics/berry_pouch/unk_8E85C1C.pal | 19 | ||||
-rw-r--r-- | include/party_menu.h | 1 | ||||
-rw-r--r-- | include/strings.h | 4 | ||||
-rw-r--r-- | src/berry_pouch.c | 269 |
8 files changed, 290 insertions, 674 deletions
diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index 5d3db9265..e30e12580 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -5,640 +5,6 @@ .text - thumb_func_start sub_813DDA0 -sub_813DDA0: @ 813DDA0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - bl sub_80BF72C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0813DDFE - bl Menu_ProcessInputNoWrapAround - lsls r0, 24 - asrs r4, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r4, r0 - beq _0813DDFE - adds r0, 0x1 - cmp r4, r0 - bne _0813DDE0 - movs r0, 0x5 - bl PlaySE - ldr r0, _0813DDDC @ =gUnknown_846437C - ldr r1, [r0, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - b _0813DDFE - .align 2, 0 -_0813DDDC: .4byte gUnknown_846437C -_0813DDE0: - movs r0, 0x5 - bl PlaySE - ldr r1, _0813DE04 @ =gUnknown_846437C - ldr r0, _0813DE08 @ =gUnknown_203F384 - ldr r0, [r0] - adds r0, r4 - ldrb r0, [r0] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl _call_via_r1 -_0813DDFE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813DE04: .4byte gUnknown_846437C -_0813DE08: .4byte gUnknown_203F384 - thumb_func_end sub_813DDA0 - - thumb_func_start sub_813DE0C -sub_813DE0C: @ 813DE0C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0813DE5C @ =gUnknown_203F388 - ldrb r0, [r0] - adds r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - bl sub_813EA98 - movs r0, 0x6 - bl sub_813EA98 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r0, _0813DE60 @ =gUnknown_203F370 - ldrb r0, [r0, 0x4] - cmp r0, 0x4 - bne _0813DE78 - ldr r4, _0813DE64 @ =gSpecialVar_ItemId - ldrh r0, [r4] - bl ItemId_GetBattleFunc - cmp r0, 0 - bne _0813DE68 - adds r0, r5, 0 - bl FieldUseFunc_OakStopsYou - b _0813DEB0 - .align 2, 0 -_0813DE5C: .4byte gUnknown_203F388 -_0813DE60: .4byte gUnknown_203F370 -_0813DE64: .4byte gSpecialVar_ItemId -_0813DE68: - ldrh r0, [r4] - bl ItemId_GetBattleFunc - adds r1, r0, 0 - adds r0, r5, 0 - bl _call_via_r1 - b _0813DEB0 -_0813DE78: - bl CalculatePlayerPartyCount - lsls r0, 24 - cmp r0, 0 - bne _0813DEA0 - ldr r0, _0813DE9C @ =gSpecialVar_ItemId - ldrh r0, [r0] - bl ItemId_GetType - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0813DEA0 - adds r0, r5, 0 - bl sub_813E274 - b _0813DEB0 - .align 2, 0 -_0813DE9C: .4byte gSpecialVar_ItemId -_0813DEA0: - ldr r0, _0813DEB8 @ =gSpecialVar_ItemId - ldrh r0, [r0] - bl ItemId_GetFieldFunc - adds r1, r0, 0 - adds r0, r5, 0 - bl _call_via_r1 -_0813DEB0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813DEB8: .4byte gSpecialVar_ItemId - thumb_func_end sub_813DE0C - - thumb_func_start sub_813DEBC -sub_813DEBC: @ 813DEBC - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r7, r0, 3 - ldr r0, _0813DF24 @ =gTasks+0x8 - mov r8, r0 - adds r5, r7, r0 - ldr r4, _0813DF28 @ =gUnknown_203F388 - ldrb r0, [r4] - adds r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - bl sub_813EB10 - lsls r0, 24 - lsrs r0, 24 - bl ClearWindowTilemap - movs r0, 0x6 - bl sub_813EB10 - lsls r0, 24 - lsrs r0, 24 - bl ClearWindowTilemap - ldrb r0, [r4] - adds r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - bl sub_813EA98 - movs r0, 0x6 - bl sub_813EA98 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - strh r0, [r5, 0x10] - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _0813DF2C - adds r0, r6, 0 - bl sub_813DF54 - b _0813DF42 - .align 2, 0 -_0813DF24: .4byte gTasks+0x8 -_0813DF28: .4byte gUnknown_203F388 -_0813DF2C: - ldr r1, _0813DF4C @ =gUnknown_84163DB - adds r0, r6, 0 - bl sub_813D940 - bl sub_813D614 - mov r0, r8 - subs r0, 0x8 - adds r0, r7, r0 - ldr r1, _0813DF50 @ =sub_813E010 - str r1, [r0] -_0813DF42: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813DF4C: .4byte gUnknown_84163DB -_0813DF50: .4byte sub_813E010 - thumb_func_end sub_813DEBC - - thumb_func_start sub_813DF54 -sub_813DF54: @ 813DF54 - push {r4,r5,lr} - sub sp, 0x14 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - ldr r0, _0813DFB4 @ =gTasks+0x8 - adds r1, r0 - ldr r0, _0813DFB8 @ =gStringVar2 - movs r2, 0x10 - ldrsh r1, [r1, r2] - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r5, _0813DFBC @ =gStringVar4 - ldr r1, _0813DFC0 @ =gUnknown_8416409 - adds r0, r5, 0 - bl StringExpandPlaceholders - movs r0, 0x7 - bl sub_813EA08 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - str r1, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0 - str r1, [sp, 0xC] - str r2, [sp, 0x10] - movs r1, 0x2 - adds r2, r5, 0 - movs r3, 0 - bl sub_813E9A0 - ldr r1, _0813DFC4 @ =gUnknown_846436C - adds r0, r4, 0 - bl sub_813EB7C - add sp, 0x14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813DFB4: .4byte gTasks+0x8 -_0813DFB8: .4byte gStringVar2 -_0813DFBC: .4byte gStringVar4 -_0813DFC0: .4byte gUnknown_8416409 -_0813DFC4: .4byte gUnknown_846436C - thumb_func_end sub_813DF54 - - thumb_func_start sub_813DFC8 -sub_813DFC8: @ 813DFC8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _0813E00C @ =gTasks+0x8 - adds r4, r0 - movs r0, 0x7 - bl sub_813EA98 - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldrb r0, [r4] - movs r1, 0x1 - bl sub_813D4B0 - adds r0, r5, 0 - bl sub_813DBB4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813E00C: .4byte gTasks+0x8 - thumb_func_end sub_813DFC8 - - thumb_func_start sub_813E010 -sub_813E010: @ 813E010 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0813E044 @ =gTasks+0x8 - adds r4, r0, r1 - adds r0, r4, 0 - adds r0, 0x10 - ldrh r1, [r4, 0x4] - bl AdjustQuantityAccordingToDPadInput - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0813E048 - movs r0, 0x10 - ldrsh r1, [r4, r0] - movs r0, 0 - movs r2, 0x3 - bl sub_813D9F8 - b _0813E0D4 - .align 2, 0 -_0813E044: .4byte gTasks+0x8 -_0813E048: - ldr r0, _0813E08C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813E090 - movs r0, 0x5 - bl PlaySE - movs r0, 0x8 - bl sub_813EB10 - lsls r0, 24 - lsrs r0, 24 - bl ClearWindowTilemap - movs r0, 0x8 - bl sub_813EA98 - movs r0, 0 - bl sub_813EA98 - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - bl sub_813D684 - adds r0, r5, 0 - bl sub_813DF54 - b _0813E0D4 - .align 2, 0 -_0813E08C: .4byte gMain -_0813E090: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0813E0D4 - movs r0, 0x5 - bl PlaySE - movs r0, 0x8 - bl sub_813EA98 - movs r0, 0 - bl sub_813EA98 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldrb r0, [r4] - movs r1, 0x1 - bl sub_813D4B0 - bl sub_813D684 - adds r0, r6, 0 - bl sub_813DBB4 -_0813E0D4: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_813E010 - - thumb_func_start sub_813E0DC -sub_813E0DC: @ 813E0DC - push {r4-r6,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r6, _0813E14C @ =gTasks+0x8 - adds r5, r4, r6 - movs r0, 0x7 - bl sub_813EA98 - movs r1, 0x2 - ldrsh r0, [r5, r1] - ldr r1, _0813E150 @ =gStringVar1 - bl sub_813D39C - ldr r0, _0813E154 @ =gStringVar2 - movs r2, 0x10 - ldrsh r1, [r5, r2] - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r5, _0813E158 @ =gStringVar4 - ldr r1, _0813E15C @ =gUnknown_84163F4 - adds r0, r5, 0 - bl StringExpandPlaceholders - movs r0, 0x9 - bl sub_813EA08 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - str r1, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0 - str r1, [sp, 0xC] - str r2, [sp, 0x10] - movs r1, 0x2 - adds r2, r5, 0 - movs r3, 0 - bl sub_813E9A0 - subs r6, 0x8 - adds r4, r6 - ldr r0, _0813E160 @ =sub_813E164 - str r0, [r4] - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813E14C: .4byte gTasks+0x8 -_0813E150: .4byte gStringVar1 -_0813E154: .4byte gStringVar2 -_0813E158: .4byte gStringVar4 -_0813E15C: .4byte gUnknown_84163F4 -_0813E160: .4byte sub_813E164 - thumb_func_end sub_813E0DC - - thumb_func_start sub_813E164 -sub_813E164: @ 813E164 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _0813E1EC @ =gTasks+0x8 - adds r5, r0, r1 - ldr r0, _0813E1F0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0813E18A - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0813E1E4 -_0813E18A: - movs r0, 0x5 - bl PlaySE - ldr r0, _0813E1F4 @ =gSpecialVar_ItemId - ldrh r0, [r0] - ldrh r1, [r5, 0x10] - bl RemoveBagItem - movs r0, 0x9 - bl sub_813EA98 - ldrb r0, [r5] - ldr r4, _0813E1F8 @ =gUnknown_203F370 + 10 - subs r2, r4, 0x2 - adds r1, r4, 0 - bl DestroyListMenuTask - bl sub_813D8AC - bl sub_813D6F4 - bl sub_813D204 - ldr r0, _0813E1FC @ =gMultiuseListMenuTemplate - subs r4, 0xA - ldrh r1, [r4, 0xA] - ldrh r2, [r4, 0x8] - bl ListMenuInit - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - ldrb r0, [r5] - movs r1, 0x1 - bl sub_813D4B0 - adds r0, r6, 0 - bl sub_813DBB4 -_0813E1E4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813E1EC: .4byte gTasks+0x8 -_0813E1F0: .4byte gMain -_0813E1F4: .4byte gSpecialVar_ItemId -_0813E1F8: .4byte gUnknown_203F370 + 10 -_0813E1FC: .4byte gMultiuseListMenuTemplate - thumb_func_end sub_813E164 - - thumb_func_start sub_813E200 -sub_813E200: @ 813E200 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0813E244 @ =gUnknown_203F388 - ldrb r0, [r0] - adds r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - bl sub_813EA98 - movs r0, 0x6 - bl sub_813EA98 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - bl CalculatePlayerPartyCount - lsls r0, 24 - cmp r0, 0 - bne _0813E248 - adds r0, r4, 0 - bl sub_813E274 - b _0813E25E - .align 2, 0 -_0813E244: .4byte gUnknown_203F388 -_0813E248: - ldr r0, _0813E264 @ =gUnknown_203F36C - ldr r1, [r0] - ldr r0, _0813E268 @ =sub_8126EDC - str r0, [r1] - ldr r1, _0813E26C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0813E270 @ =BerryPouch_StartFadeToExitCallback - str r1, [r0] -_0813E25E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813E264: .4byte gUnknown_203F36C -_0813E268: .4byte sub_8126EDC -_0813E26C: .4byte gTasks -_0813E270: .4byte BerryPouch_StartFadeToExitCallback - thumb_func_end sub_813E200 - - thumb_func_start sub_813E274 -sub_813E274: @ 813E274 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0813E288 @ =gText_ThereIsNoPokemon - ldr r3, _0813E28C @ =sub_813E290 - movs r1, 0x2 - bl DisplayItemMessageInBerryPouch - pop {r0} - bx r0 - .align 2, 0 -_0813E288: .4byte gText_ThereIsNoPokemon -_0813E28C: .4byte sub_813E290 - thumb_func_end sub_813E274 - - thumb_func_start sub_813E290 -sub_813E290: @ 813E290 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0813E2B4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813E2AE - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_813E2B8 -_0813E2AE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813E2B4: .4byte gMain - thumb_func_end sub_813E290 - - thumb_func_start sub_813E2B8 -sub_813E2B8: @ 813E2B8 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r5, r6, 2 - adds r5, r6 - lsls r5, 3 - ldr r0, _0813E314 @ =gTasks+0x8 - adds r5, r0 - movs r0, 0x5 - bl sub_813EACC - ldrb r0, [r5] - ldr r4, _0813E318 @ =gUnknown_203F370 + 10 - subs r2, r4, 0x2 - adds r1, r4, 0 - bl DestroyListMenuTask - bl sub_813D8AC - bl sub_813D6F4 - bl sub_813D204 - ldr r0, _0813E31C @ =gMultiuseListMenuTemplate - subs r4, 0xA - ldrh r1, [r4, 0xA] - ldrh r2, [r4, 0x8] - bl ListMenuInit - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - ldrb r0, [r5] - movs r1, 0x1 - bl sub_813D4B0 - adds r0, r6, 0 - bl sub_813DBB4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813E314: .4byte gTasks+0x8 -_0813E318: .4byte gUnknown_203F370 + 10 -_0813E31C: .4byte gMultiuseListMenuTemplate - thumb_func_end sub_813E2B8 - thumb_func_start sub_813E320 sub_813E320: @ 813E320 push {r4,lr} diff --git a/baserom.ips b/baserom.ips Binary files differindex 5f7a8d538..1ede5acbe 100644 --- a/baserom.ips +++ b/baserom.ips diff --git a/data/berry_pouch.s b/data/berry_pouch.s index 19bf0c3df..68d9cd5a3 100644 --- a/data/berry_pouch.s +++ b/data/berry_pouch.s @@ -3,35 +3,6 @@ .section .rodata .align 2 -gUnknown_846436C:: @ 846436C - .incbin "baserom.gba", 0x46436C, 0x8 - -gUnknown_8464374:: @ 8464374 - .incbin "baserom.gba", 0x464374, 0x8 - -gUnknown_846437C:: @ 846437C - .4byte gOtherText_Use, sub_813DE0C - .4byte gOtherText_Toss, sub_813DEBC - .4byte gOtherText_Give, sub_813E200 - .4byte gOtherText_Exit, sub_813E320 - .4byte gString_Dummy, NULL - -gUnknown_84643A4:: @ 84643A4 - .byte 0, 2, 1, 3 - -gUnknown_84643A8:: @ 84643A8 - .byte 2, 3, 4, 4 - -gUnknown_84643AC:: @ 84643AC - .byte 3, 4, 4, 4 - -gUnknown_84643B0:: @ 84643B0 - .byte 0, 1, 3, 4 - -gUnknown_84643B4:: @ 84643B4 - .string " $" - - .align 2 gUnknown_84643B8:: @ 84643B8 .incbin "baserom.gba", 0x4643B8, 0x20 diff --git a/data/strings.s b/data/strings.s index bb12c0ad3..5f1616eaf 100644 --- a/data/strings.s +++ b/data/strings.s @@ -559,19 +559,19 @@ gUnknown_8416374:: @ 8416374 .string "The {STR_VAR_1} can't be held\nhere.$" gUnknown_841638F:: @ 841638F - .string "Deposit how many\n{STR_VAR_1}シsス?$" + .string "Deposit how many\n{STR_VAR_1}(s)?$" gUnknown_84163A7:: @ 84163A7 - .string "Deposited {STR_VAR_2}\n{STR_VAR_1}シsス.$" + .string "Deposited {STR_VAR_2}\n{STR_VAR_1}(s).$" gUnknown_84163BB:: @ 84163BB .string "There's no room to\nstore items.$" gUnknown_84163DB:: @ 84163DB - .string "Toss out how many\n{STR_VAR_1}シsス?$" + .string "Toss out how many\n{STR_VAR_1}(s)?$" gUnknown_84163F4:: @ 84163F4 - .string "Threw away {STR_VAR_2}\n{STR_VAR_1}シsス.$" + .string "Threw away {STR_VAR_2}\n{STR_VAR_1}(s).$" gUnknown_8416409:: @ 8416409 .string "Throw away {STR_VAR_2} of\nthis item?$" diff --git a/graphics/berry_pouch/unk_8E85C1C.pal b/graphics/berry_pouch/unk_8E85C1C.pal new file mode 100644 index 000000000..87d0fc7fb --- /dev/null +++ b/graphics/berry_pouch/unk_8E85C1C.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +222 222 90 +98 115 123 +255 205 156 +230 189 139 +213 164 115 +189 139 90 +156 82 0 +115 57 0 +197 205 213 +246 115 0 +222 57 0 +230 148 98 +255 172 123 +222 230 230 +49 57 57 +255 255 255 diff --git a/include/party_menu.h b/include/party_menu.h index cd2a5bc37..bea5dcdde 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -81,5 +81,6 @@ void sub_8127DA8(u8 battlerId, u8 multiplayerFlag); void OpenPartyMenuInBattle(u8 arg); void sub_8127EC4(u8 battlerId, u8 unk, u8 arrayIndex); bool8 IsMultiBattle(void); +void sub_8126EDC(void); #endif // GUARD_PARTY_MENU_H diff --git a/include/strings.h b/include/strings.h index c0863dffb..e60344731 100644 --- a/include/strings.h +++ b/include/strings.h @@ -94,6 +94,7 @@ extern const u8 gText_Pokemon[]; extern const u8 gText_PkmnFainted3[]; extern const u8 gOtherText_Use[]; +extern const u8 gOtherText_Toss[]; extern const u8 gOtherText_Give[]; extern const u8 gOtherText_Exit[]; extern const u8 gText_ThreeHyphens[]; @@ -316,6 +317,9 @@ extern const u8 gCreditsString_Graphic_Designer[]; extern const u8 gCreditsString_Akira_Kinashi[]; // berry_pouch +extern const u8 gUnknown_84163DB[]; +extern const u8 gUnknown_84163F4[]; +extern const u8 gUnknown_8416409[]; extern const u8 gUnknown_841670A[]; extern const u8 gUnknown_8416716[]; diff --git a/src/berry_pouch.c b/src/berry_pouch.c index 31657a381..8e394be37 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -15,6 +15,8 @@ #include "graphics.h" #include "berry.h" #include "item.h" +#include "item_use.h" +#include "party_menu.h" #include "strings.h" #include "string_util.h" #include "sound.h" @@ -47,6 +49,15 @@ struct BerryPouchStruct_203F370 u16 unk_0A; }; +enum +{ + BP_ACTION_USE = 0, + BP_ACTION_TOSS, + BP_ACTION_GIVE, + BP_ACTION_EXIT, + BP_ACTION_DUMMY +}; + EWRAM_DATA struct BerryPouchStruct_203F36C *gUnknown_203F36C = NULL; EWRAM_DATA struct BerryPouchStruct_203F370 gUnknown_203F370 = {}; EWRAM_DATA struct ListMenuItem *gUnknown_203F37C = NULL; @@ -81,17 +92,29 @@ void sub_813DD74(u8 taskId); void sub_813DDA0(u8 taskId); void sub_813DE0C(u8 taskId); void sub_813DEBC(u8 taskId); +void sub_813DF54(u8 taskId); +void sub_813DFC8(u8 taskId); +void sub_813E010(u8 taskId); +void sub_813E0DC(u8 taskId); +void sub_813E164(u8 taskId); void sub_813E200(u8 taskId); +void sub_813E274(u8 taskId); +void sub_813E290(u8 taskId); void sub_813E320(u8 taskId); void sub_813E37C(u8 taskId); void sub_813E3FC(u8 taskId); void sub_813E428(u8 taskId); -void sub_813EC28(void); +void sub_813E568(u8 taskId); +void sub_813E768(u8 taskId); void sub_813E910(void); void sub_813E9A0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); u8 sub_813EA08(u8); +void sub_813EA98(u8); +void sub_813EACC(u8); u8 sub_813EB10(u8); +void sub_813EB7C(u8 taskId, const struct YesNoFuncTable * ptrs); void sub_813EC08(void); +void sub_813EC28(void); static const struct BgTemplate gUnknown_846434C[] = { { @@ -129,12 +152,54 @@ const TaskFunc gUnknown_8464358[] = { sub_813DD74 }; -extern const struct MenuAction gUnknown_846437C[]; -extern const u8 gUnknown_84643A4[]; -extern const u8 gUnknown_84643A8[]; -extern const u8 gUnknown_84643AC[]; -extern const u8 gUnknown_84643B0[]; -extern const u8 gUnknown_84643B4[]; +const struct YesNoFuncTable gUnknown_846436C = { + .yesFunc = sub_813E0DC, + .noFunc = sub_813DFC8 +}; + +const struct YesNoFuncTable gUnknown_8464374 = { + .yesFunc = sub_813E768, + .noFunc = sub_813E568 +}; + +const struct MenuAction gUnknown_846437C[] = { + {gOtherText_Use, sub_813DE0C}, + {gOtherText_Toss, sub_813DEBC}, + {gOtherText_Give, sub_813E200}, + {gOtherText_Exit, sub_813E320}, + {gString_Dummy, NULL} +}; + +const u8 gUnknown_84643A4[] = { + BP_ACTION_USE, + BP_ACTION_GIVE, + BP_ACTION_TOSS, + BP_ACTION_EXIT +}; + +const u8 gUnknown_84643A8[] = { + BP_ACTION_GIVE, + BP_ACTION_EXIT, + BP_ACTION_DUMMY, + BP_ACTION_DUMMY +}; + +const u8 gUnknown_84643AC[] = { + BP_ACTION_EXIT, + BP_ACTION_DUMMY, + BP_ACTION_DUMMY, + BP_ACTION_DUMMY +}; + +const u8 gUnknown_84643B0[] = { + BP_ACTION_USE, + BP_ACTION_TOSS, + BP_ACTION_EXIT, + BP_ACTION_DUMMY +}; + +const u8 gUnknown_84643B4[] = _(" "); + extern const struct CompressedSpriteSheet gUnknown_84644A8; extern const struct CompressedSpritePalette gUnknown_84644B0; @@ -765,3 +830,193 @@ void sub_813DD74(u8 taskId) sub_813DBE4(taskId); gTasks[taskId].func = sub_813DDA0; } + +void sub_813DDA0(u8 taskId) +{ + s8 input; + if (sub_80BF72C() != TRUE) + { + input = Menu_ProcessInputNoWrapAround(); + switch (input) + { + case -2: + break; + case -1: + PlaySE(SE_SELECT); + gUnknown_846437C[BP_ACTION_EXIT].func.void_u8(taskId); + break; + default: + PlaySE(SE_SELECT); + gUnknown_846437C[gUnknown_203F384[input]].func.void_u8(taskId); + break; + } + } +} + +void sub_813DE0C(u8 taskId) +{ + sub_813EA98(gUnknown_203F388 + 9); + sub_813EA98(6); + PutWindowTilemap(0); + PutWindowTilemap(1); + ScheduleBgCopyTilemapToVram(0); + ScheduleBgCopyTilemapToVram(2); + if (gUnknown_203F370.unk_04 == 4) + { + if (ItemId_GetBattleFunc(gSpecialVar_ItemId) == NULL) + FieldUseFunc_OakStopsYou(taskId); + else + ItemId_GetBattleFunc(gSpecialVar_ItemId)(taskId); + } + else if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gSpecialVar_ItemId) == 1) + sub_813E274(taskId); + else + ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId); +} + +void sub_813DEBC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + ClearWindowTilemap(sub_813EB10(gUnknown_203F388 + 9)); + ClearWindowTilemap(sub_813EB10(6)); + sub_813EA98(gUnknown_203F388 + 9); + sub_813EA98(6); + PutWindowTilemap(0); + data[8] = 1; + if (data[2] == 1) + sub_813DF54(taskId); + else + { + sub_813D940(taskId, gUnknown_84163DB); + sub_813D614(); + gTasks[taskId].func = sub_813E010; + } +} + +void sub_813DF54(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gUnknown_8416409); + sub_813E9A0(sub_813EA08(7), 2, gStringVar4, 0, 2, 1, 2, 0, 1); + sub_813EB7C(taskId, &gUnknown_846436C); +} + +void sub_813DFC8(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + sub_813EA98(7); + PutWindowTilemap(1); + PutWindowTilemap(0); + ScheduleBgCopyTilemapToVram(0); + ScheduleBgCopyTilemapToVram(2); + sub_813D4B0(data[0], 1); + sub_813DBB4(taskId); +} + +void sub_813E010(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE) + sub_813D9F8(0, data[8], 3); + else if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + ClearWindowTilemap(sub_813EB10(8)); + sub_813EA98(8); + sub_813EA98(0); + ScheduleBgCopyTilemapToVram(0); + ScheduleBgCopyTilemapToVram(2); + sub_813D684(); + sub_813DF54(taskId); + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_813EA98(8); + sub_813EA98(0); + PutWindowTilemap(0); + PutWindowTilemap(1); + ScheduleBgCopyTilemapToVram(0); + ScheduleBgCopyTilemapToVram(2); + sub_813D4B0(data[0], 1); + sub_813D684(); + sub_813DBB4(taskId); + } +} + +void sub_813E0DC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + sub_813EA98(7); + sub_813D39C(data[1], gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gUnknown_84163F4); + sub_813E9A0(sub_813EA08(9), 2, gStringVar4, 0, 2, 1, 2, 0, 1); + gTasks[taskId].func = sub_813E164; +} + +void sub_813E164(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + RemoveBagItem(gSpecialVar_ItemId, data[8]); + sub_813EA98(9); + DestroyListMenuTask(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08); + sub_813D8AC(); + sub_813D6F4(); + sub_813D204(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203F370.unk_0A, gUnknown_203F370.unk_08); + PutWindowTilemap(1); + ScheduleBgCopyTilemapToVram(0); + sub_813D4B0(data[0], 1); + sub_813DBB4(taskId); + } +} + +void sub_813E200(u8 taskId) +{ + sub_813EA98(gUnknown_203F388 + 9); + sub_813EA98(6); + PutWindowTilemap(0); + PutWindowTilemap(1); + ScheduleBgCopyTilemapToVram(0); + ScheduleBgCopyTilemapToVram(2); + if (CalculatePlayerPartyCount() == 0) + sub_813E274(taskId); + else + { + gUnknown_203F36C->unk_000 = sub_8126EDC; + gTasks[taskId].func = BerryPouch_StartFadeToExitCallback; + } +} + +void sub_813E274(u8 taskId) +{ + DisplayItemMessageInBerryPouch(taskId, 2, gText_ThereIsNoPokemon, sub_813E290); +} + +void sub_813E290(u8 taskId) +{ + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + sub_813E2B8(taskId); + } +} + +void sub_813E2B8(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + sub_813EACC(5); + DestroyListMenuTask(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08); + sub_813D8AC(); + sub_813D6F4(); + sub_813D204(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203F370.unk_0A, gUnknown_203F370.unk_08); + ScheduleBgCopyTilemapToVram(0); + sub_813D4B0(data[0], 1); + sub_813DBB4(taskId); +} |