diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-09-29 12:48:11 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-09-29 12:48:11 -0400 |
commit | 3766ddcfda811cff3a7c38808c9efe294c33ed7c (patch) | |
tree | 8b166e3118cac3b98de79edc3ab05e26e6647b8a | |
parent | 01d42d07f849ea476bad3e80fb75c36806f39382 (diff) |
berry pouch through sub_813DD74
-rw-r--r-- | asm/berry_pouch.s | 383 | ||||
-rw-r--r-- | baserom.ips | bin | 2012786 -> 2012710 bytes | |||
-rw-r--r-- | data/berry_pouch.s | 17 | ||||
-rw-r--r-- | data/strings.s | 2 | ||||
-rw-r--r-- | src/berry_pouch.c | 136 | ||||
-rw-r--r-- | sym_ewram.txt | 13 |
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 Binary files differindex 9d0a620e2..5f7a8d538 100644 --- a/baserom.ips +++ b/baserom.ips 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" |