berry_pouch through sub_813E2B8

This commit is contained in:
PikalaxALT
2019-09-30 16:59:39 -04:00
parent 3766ddcfda
commit e65487716a
8 changed files with 290 additions and 674 deletions
-634
View File
@@ -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}
BIN
View File
Binary file not shown.
-29
View File
@@ -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
+4 -4
View File
@@ -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?$"
+19
View File
@@ -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
+1
View File
@@ -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
+4
View File
@@ -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[];
+262 -7
View File
@@ -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);
}