summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-09-29 12:48:11 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-09-29 12:48:11 -0400
commit3766ddcfda811cff3a7c38808c9efe294c33ed7c (patch)
tree8b166e3118cac3b98de79edc3ab05e26e6647b8a
parent01d42d07f849ea476bad3e80fb75c36806f39382 (diff)
berry pouch through sub_813DD74
-rw-r--r--asm/berry_pouch.s383
-rw-r--r--baserom.ipsbin2012786 -> 2012710 bytes
-rw-r--r--data/berry_pouch.s17
-rw-r--r--data/strings.s2
-rw-r--r--src/berry_pouch.c136
-rw-r--r--sym_ewram.txt13
6 files changed, 145 insertions, 406 deletions
diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s
index e5828dff3..5d3db9265 100644
--- a/asm/berry_pouch.s
+++ b/asm/berry_pouch.s
@@ -5,389 +5,6 @@
.text
- thumb_func_start sub_813DA68
-sub_813DA68: @ 813DA68
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _0813DAD8 @ =gTasks+0x8
- adds r7, r0, r1
- ldr r0, _0813DADC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0
- beq _0813DA90
- b _0813DB9E
-_0813DA90:
- bl sub_80BF72C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0813DA9E
- b _0813DB9E
-_0813DA9E:
- ldrb r0, [r7]
- bl ListMenu_ProcessInput
- adds r5, r0, 0
- ldrb r0, [r7]
- ldr r4, _0813DAE0 @ =gUnknown_203F370 + 10
- subs r2, r4, 0x2
- adds r1, r4, 0
- bl ListMenuGetScrollAndRow
- ldr r0, _0813DAE4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0813DAEC
- adds r0, r4, 0
- subs r0, 0xA
- ldrb r0, [r0, 0x5]
- cmp r0, 0x1
- bne _0813DAEC
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0813DAE8 @ =gSpecialVar_ItemId
- mov r1, r8
- strh r1, [r0]
- b _0813DB48
- .align 2, 0
-_0813DAD8: .4byte gTasks+0x8
-_0813DADC: .4byte gPaletteFade
-_0813DAE0: .4byte gUnknown_203F370 + 10
-_0813DAE4: .4byte gMain
-_0813DAE8: .4byte gSpecialVar_ItemId
-_0813DAEC:
- movs r0, 0x2
- negs r0, r0
- cmp r5, r0
- beq _0813DAFC
- adds r0, 0x1
- cmp r5, r0
- bne _0813DB10
- b _0813DB9E
-_0813DAFC:
- ldr r0, _0813DB0C @ =gUnknown_203F370
- ldrb r0, [r0, 0x4]
- cmp r0, 0x5
- beq _0813DB9E
- movs r0, 0x5
- bl PlaySE
- b _0813DB42
- .align 2, 0
-_0813DB0C: .4byte gUnknown_203F370
-_0813DB10:
- movs r0, 0x5
- bl PlaySE
- ldr r3, _0813DB30 @ =gUnknown_203F370
- mov r8, r3
- ldrb r0, [r3, 0x4]
- cmp r0, 0x5
- bne _0813DB38
- lsls r1, r5, 16
- lsrs r1, 16
- movs r0, 0x5
- bl BagGetItemIdByPocketPosition
- ldr r1, _0813DB34 @ =gSpecialVar_ItemId
- b _0813DB46
- .align 2, 0
-_0813DB30: .4byte gUnknown_203F370
-_0813DB34: .4byte gSpecialVar_ItemId
-_0813DB38:
- ldr r0, _0813DB50 @ =gUnknown_203F36C
- ldr r0, [r0]
- ldrb r0, [r0, 0x7]
- cmp r5, r0
- bne _0813DB58
-_0813DB42:
- ldr r1, _0813DB54 @ =gSpecialVar_ItemId
- movs r0, 0
-_0813DB46:
- strh r0, [r1]
-_0813DB48:
- adds r0, r6, 0
- bl BerryPouch_StartFadeToExitCallback
- b _0813DB9E
- .align 2, 0
-_0813DB50: .4byte gUnknown_203F36C
-_0813DB54: .4byte gSpecialVar_ItemId
-_0813DB58:
- bl sub_813D684
- movs r0, 0x1
- bl sub_813D594
- ldrb r0, [r7]
- movs r1, 0x2
- bl sub_813D4B0
- strh r5, [r7, 0x2]
- lsls r4, r5, 16
- lsrs r4, 16
- movs r0, 0x5
- adds r1, r4, 0
- bl BagGetQuantityByPocketPosition
- strh r0, [r7, 0x4]
- movs r0, 0x5
- adds r1, r4, 0
- bl BagGetItemIdByPocketPosition
- ldr r1, _0813DBA8 @ =gSpecialVar_ItemId
- strh r0, [r1]
- ldr r0, _0813DBAC @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r2, _0813DBB0 @ =gUnknown_8464358
- mov r3, r8
- ldrb r0, [r3, 0x4]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- str r0, [r1]
-_0813DB9E:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813DBA8: .4byte gSpecialVar_ItemId
-_0813DBAC: .4byte gTasks
-_0813DBB0: .4byte gUnknown_8464358
- thumb_func_end sub_813DA68
-
- thumb_func_start sub_813DBB4
-sub_813DBB4: @ 813DBB4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- bl sub_813D594
- bl sub_813D5BC
- ldr r1, _0813DBDC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0813DBE0 @ =sub_813DA68
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813DBDC: .4byte gTasks
-_0813DBE0: .4byte sub_813DA68
- thumb_func_end sub_813DBB4
-
- thumb_func_start sub_813DBE4
-sub_813DBE4: @ 813DBE4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0813DC10 @ =gTasks+0x8
- adds r7, r1, r0
- ldr r0, _0813DC14 @ =gUnknown_203F370
- ldrb r0, [r0, 0x4]
- cmp r0, 0x4
- bne _0813DC24
- ldr r1, _0813DC18 @ =gUnknown_203F384
- ldr r0, _0813DC1C @ =gUnknown_84643B0
- str r0, [r1]
- ldr r1, _0813DC20 @ =gUnknown_203F388
- movs r0, 0x3
- b _0813DC86
- .align 2, 0
-_0813DC10: .4byte gTasks+0x8
-_0813DC14: .4byte gUnknown_203F370
-_0813DC18: .4byte gUnknown_203F384
-_0813DC1C: .4byte gUnknown_84643B0
-_0813DC20: .4byte gUnknown_203F388
-_0813DC24:
- bl MenuHelpers_LinkSomething
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0813DC38
- bl InUnionRoom
- cmp r0, 0x1
- bne _0813DC7C
-_0813DC38:
- ldr r0, _0813DC54 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl sub_80BF6A8
- lsls r0, 24
- cmp r0, 0
- bne _0813DC64
- ldr r1, _0813DC58 @ =gUnknown_203F384
- ldr r0, _0813DC5C @ =gUnknown_84643AC
- str r0, [r1]
- ldr r1, _0813DC60 @ =gUnknown_203F388
- movs r0, 0x1
- b _0813DC86
- .align 2, 0
-_0813DC54: .4byte gSpecialVar_ItemId
-_0813DC58: .4byte gUnknown_203F384
-_0813DC5C: .4byte gUnknown_84643AC
-_0813DC60: .4byte gUnknown_203F388
-_0813DC64:
- ldr r1, _0813DC70 @ =gUnknown_203F384
- ldr r0, _0813DC74 @ =gUnknown_84643A8
- str r0, [r1]
- ldr r1, _0813DC78 @ =gUnknown_203F388
- movs r0, 0x2
- b _0813DC86
- .align 2, 0
-_0813DC70: .4byte gUnknown_203F384
-_0813DC74: .4byte gUnknown_84643A8
-_0813DC78: .4byte gUnknown_203F388
-_0813DC7C:
- ldr r1, _0813DD58 @ =gUnknown_203F384
- ldr r0, _0813DD5C @ =gUnknown_84643A4
- str r0, [r1]
- ldr r1, _0813DD60 @ =gUnknown_203F388
- movs r0, 0x4
-_0813DC86:
- strb r0, [r1]
- mov r8, r1
- mov r1, r8
- ldrb r0, [r1]
- adds r0, 0x9
- lsls r0, 24
- lsrs r0, 24
- bl sub_813EA08
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- movs r0, 0x2
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x2
- movs r1, 0x2
- bl GetFontAttribute
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- str r4, [sp]
- str r0, [sp, 0x4]
- mov r1, r8
- ldrb r0, [r1]
- str r0, [sp, 0x8]
- ldr r0, _0813DD64 @ =gUnknown_846437C
- str r0, [sp, 0xC]
- ldr r0, _0813DD58 @ =gUnknown_203F384
- ldr r0, [r0]
- str r0, [sp, 0x10]
- adds r0, r6, 0
- movs r1, 0x2
- adds r2, r5, 0
- movs r3, 0x2
- bl AddItemMenuActionTextPrinters
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- mov r1, r8
- ldrb r0, [r1]
- str r0, [sp, 0x4]
- movs r0, 0
- mov r8, r0
- str r0, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl Menu_InitCursor
- movs r0, 0x6
- bl sub_813EA08
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- ldr r1, _0813DD68 @ =gStringVar1
- bl sub_813D39C
- ldr r5, _0813DD6C @ =gStringVar4
- ldr r1, _0813DD70 @ =gOtherText_StrVar1
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r0, [sp, 0x8]
- mov r0, r8
- str r0, [sp, 0xC]
- str r1, [sp, 0x10]
- adds r0, r4, 0
- movs r1, 0x2
- adds r2, r5, 0
- movs r3, 0
- bl sub_813E9A0
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813DD58: .4byte gUnknown_203F384
-_0813DD5C: .4byte gUnknown_84643A4
-_0813DD60: .4byte gUnknown_203F388
-_0813DD64: .4byte gUnknown_846437C
-_0813DD68: .4byte gStringVar1
-_0813DD6C: .4byte gStringVar4
-_0813DD70: .4byte gOtherText_StrVar1
- thumb_func_end sub_813DBE4
-
- thumb_func_start sub_813DD74
-sub_813DD74: @ 813DD74
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_813DBE4
- ldr r1, _0813DD98 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0813DD9C @ =sub_813DDA0
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813DD98: .4byte gTasks
-_0813DD9C: .4byte sub_813DDA0
- thumb_func_end sub_813DD74
-
thumb_func_start sub_813DDA0
sub_813DDA0: @ 813DDA0
push {r4-r6,lr}
diff --git a/baserom.ips b/baserom.ips
index 9d0a620e2..5f7a8d538 100644
--- a/baserom.ips
+++ b/baserom.ips
Binary files differ
diff --git a/data/berry_pouch.s b/data/berry_pouch.s
index 7c45b0383..19bf0c3df 100644
--- a/data/berry_pouch.s
+++ b/data/berry_pouch.s
@@ -3,9 +3,6 @@
.section .rodata
.align 2
-gUnknown_8464358:: @ 8464358
- .incbin "baserom.gba", 0x464358, 0x14
-
gUnknown_846436C:: @ 846436C
.incbin "baserom.gba", 0x46436C, 0x8
@@ -13,19 +10,23 @@ gUnknown_8464374:: @ 8464374
.incbin "baserom.gba", 0x464374, 0x8
gUnknown_846437C:: @ 846437C
- .incbin "baserom.gba", 0x46437C, 0x28
+ .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
- .incbin "baserom.gba", 0x4643A4, 0x4
+ .byte 0, 2, 1, 3
gUnknown_84643A8:: @ 84643A8
- .incbin "baserom.gba", 0x4643A8, 0x4
+ .byte 2, 3, 4, 4
gUnknown_84643AC:: @ 84643AC
- .incbin "baserom.gba", 0x4643AC, 0x4
+ .byte 3, 4, 4, 4
gUnknown_84643B0:: @ 84643B0
- .incbin "baserom.gba", 0x4643B0, 0x4
+ .byte 0, 1, 3, 4
gUnknown_84643B4:: @ 84643B4
.string " $"
diff --git a/data/strings.s b/data/strings.s
index 603bce34f..bb12c0ad3 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -372,7 +372,7 @@ gUnknown_8416195::
gOtherText_Use::
.string "USE$"
-gUnknown_84161A4::
+gOtherText_Toss::
.string "TOSS$"
gUnknown_84161A9::
diff --git a/src/berry_pouch.c b/src/berry_pouch.c
index a00a15f0c..31657a381 100644
--- a/src/berry_pouch.c
+++ b/src/berry_pouch.c
@@ -18,6 +18,8 @@
#include "strings.h"
#include "string_util.h"
#include "sound.h"
+#include "link.h"
+#include "menu.h"
#include "menu_indicators.h"
#include "constants/items.h"
#include "constants/songs.h"
@@ -49,6 +51,10 @@ EWRAM_DATA struct BerryPouchStruct_203F36C *gUnknown_203F36C = NULL;
EWRAM_DATA struct BerryPouchStruct_203F370 gUnknown_203F370 = {};
EWRAM_DATA struct ListMenuItem *gUnknown_203F37C = NULL;
EWRAM_DATA u8 *gUnknown_203F380 = NULL;
+EWRAM_DATA const u8 *gUnknown_203F384 = NULL;
+EWRAM_DATA u8 gUnknown_203F388 = 0;
+ALIGNED(4) EWRAM_DATA u8 gUnknown_203F38C[14] = {};
+ALIGNED(4) EWRAM_DATA u8 gUnknown_203F39C = 0;
void sub_813CE30(void);
bool8 sub_813CE5C(void);
@@ -71,6 +77,15 @@ void sub_813D7CC(void);
void sub_813D844(u8 taskId);
void sub_813D8AC(void);
void sub_813DA68(u8 taskId);
+void sub_813DD74(u8 taskId);
+void sub_813DDA0(u8 taskId);
+void sub_813DE0C(u8 taskId);
+void sub_813DEBC(u8 taskId);
+void sub_813E200(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_813E910(void);
void sub_813E9A0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx);
@@ -106,8 +121,20 @@ static const struct BgTemplate gUnknown_846434C[] = {
}
};
-extern const u8 gUnknown_84643B4[];
+const TaskFunc gUnknown_8464358[] = {
+ sub_813DD74,
+ sub_813E37C,
+ sub_813E428,
+ sub_813E3FC,
+ 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[];
extern const struct CompressedSpriteSheet gUnknown_84644A8;
extern const struct CompressedSpritePalette gUnknown_84644B0;
@@ -631,3 +658,110 @@ void sub_813D9F8(u8 whichWindow, s16 quantity, u8 ndigits)
StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1);
sub_813E9A0(windowId, 0, gStringVar4, 4, 10, 1, 0, 0, 1);
}
+
+void sub_813DA68(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ s32 menuInput;
+ if (!gPaletteFade.active && sub_80BF72C() != TRUE)
+ {
+ menuInput = ListMenu_ProcessInput(data[0]);
+ ListMenuGetScrollAndRow(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08);
+ if (JOY_NEW(SELECT_BUTTON) && gUnknown_203F370.unk_05 == 1)
+ {
+ PlaySE(SE_SELECT);
+ gSpecialVar_ItemId = 0;
+ BerryPouch_StartFadeToExitCallback(taskId);
+ }
+ else
+ {
+ switch (menuInput)
+ {
+ case -1:
+ return;
+ case -2:
+ if (gUnknown_203F370.unk_04 != 5)
+ {
+ PlaySE(SE_SELECT);
+ gSpecialVar_ItemId = 0;
+ BerryPouch_StartFadeToExitCallback(taskId);
+ }
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ if (gUnknown_203F370.unk_04 == 5)
+ {
+ gSpecialVar_ItemId = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, menuInput);
+ BerryPouch_StartFadeToExitCallback(taskId);
+ }
+ else if (menuInput == gUnknown_203F36C->unk_007)
+ {
+ gSpecialVar_ItemId = 0;
+ BerryPouch_StartFadeToExitCallback(taskId);
+ }
+ else
+ {
+ sub_813D684();
+ sub_813D594(1);
+ sub_813D4B0(data[0], 2);
+ data[1] = menuInput;
+ data[2] = BagGetQuantityByPocketPosition(POCKET_BERRY_POUCH, menuInput);
+ gSpecialVar_ItemId = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, menuInput);
+ gTasks[taskId].func = gUnknown_8464358[gUnknown_203F370.unk_04];
+ }
+ break;
+ }
+ }
+ }
+}
+
+void sub_813DBB4(u8 taskId)
+{
+ sub_813D594(0);
+ sub_813D5BC();
+ gTasks[taskId].func = sub_813DA68;
+}
+
+void sub_813DBE4(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u8 windowId;
+ u8 windowId2;
+
+ if (gUnknown_203F370.unk_04 == 4)
+ {
+ gUnknown_203F384 = gUnknown_84643B0;
+ gUnknown_203F388 = 3;
+ }
+ else if (MenuHelpers_LinkSomething() == TRUE || InUnionRoom() == TRUE)
+ {
+ if (!sub_80BF6A8(gSpecialVar_ItemId))
+ {
+ gUnknown_203F384 = gUnknown_84643AC;
+ gUnknown_203F388 = 1;
+ }
+ else
+ {
+ gUnknown_203F384 = gUnknown_84643A8;
+ gUnknown_203F388 = 2;
+ }
+ }
+ else
+ {
+ gUnknown_203F384 = gUnknown_84643A4;
+ gUnknown_203F388 = 4;
+ }
+ windowId = sub_813EA08(gUnknown_203F388 + 9);
+ AddItemMenuActionTextPrinters(windowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, GetFontAttribute(2, FONTATTR_LETTER_SPACING), GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, gUnknown_203F388, gUnknown_846437C, gUnknown_203F384);
+ Menu_InitCursor(windowId, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, gUnknown_203F388, 0);
+ windowId2 = sub_813EA08(6);
+ sub_813D39C(data[1], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_StrVar1);
+ sub_813E9A0(windowId2, 2, gStringVar4, 0, 2, 1, 2, 0, 1);
+}
+
+void sub_813DD74(u8 taskId)
+{
+ sub_813DBE4(taskId);
+ gTasks[taskId].func = sub_813DDA0;
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 1ee1f4b5b..c50347082 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1346,19 +1346,6 @@ gUnknown_203B170: @ 203B170
.include "src/dynamic_placeholder_text_util.o"
.align 2
.include "src/berry_pouch.o"
-
-gUnknown_203F384: @ 203F384
- .space 0x4
-
-gUnknown_203F388: @ 203F388
- .space 0x4
-
-gUnknown_203F38C: @ 203F38C
- .space 0x10
-
-gUnknown_203F39C: @ 203F39C
- .space 0x4
-
.align 2
.include "src/slot_machine.o"