summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-09-30 19:47:38 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-09-30 19:47:38 -0400
commit8eea5b6d750a629c14a152c240f84b02b5e4f0c6 (patch)
tree6ef1cc098696ebe5d00f14e05fa6e4a6c98945f9
parent89be71dcb846b1d1eded569db6dd6709cc42201f (diff)
Finish berry_pouch code decomp
-rw-r--r--asm/berry_pouch.s466
-rw-r--r--include/berry_pouch.h2
-rw-r--r--ld_script.txt1
-rw-r--r--src/berry_pouch.c131
4 files changed, 128 insertions, 472 deletions
diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s
deleted file mode 100644
index 82ce14f9d..000000000
--- a/asm/berry_pouch.s
+++ /dev/null
@@ -1,466 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_813E910
-sub_813E910: @ 813E910
- push {r4,lr}
- ldr r0, _0813E994 @ =gUnknown_84643B8
- bl InitWindows
- bl DeactivateAllTextPrinters
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xE0
- bl TextWindow_SetUserSelectedFrame
- movs r0, 0
- movs r1, 0x13
- movs r2, 0xD0
- bl TextWindow_LoadResourcesStdFrame0
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xC0
- bl TextWindow_SetStdFrame0_WithPal
- ldr r0, _0813E998 @ =gTMCaseMainWindowPalette
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- movs r4, 0
-_0813E946:
- adds r0, r4, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _0813E946
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x2
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- movs r4, 0
- ldr r3, _0813E99C @ =gUnknown_203F38C
- movs r2, 0xFF
-_0813E97C:
- adds r0, r4, r3
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xD
- bls _0813E97C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E994: .4byte gUnknown_84643B8
-_0813E998: .4byte gTMCaseMainWindowPalette
-_0813E99C: .4byte gUnknown_203F38C
- thumb_func_end sub_813E910
-
- thumb_func_start sub_813E9A0
-sub_813E9A0: @ 813E9A0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r9, r3
- ldr r3, [sp, 0x30]
- ldr r4, [sp, 0x34]
- ldr r6, [sp, 0x38]
- ldr r5, [sp, 0x3C]
- mov r8, r5
- ldr r5, [sp, 0x40]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r7, r9
- lsls r7, 24
- lsrs r7, 24
- mov r9, r7
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r6, [sp, 0x4]
- lsls r4, r5, 1
- adds r4, r5
- ldr r5, _0813EA04 @ =gUnknown_8464448
- adds r4, r5
- str r4, [sp, 0x8]
- mov r4, r8
- lsls r4, 24
- asrs r4, 24
- str r4, [sp, 0xC]
- str r2, [sp, 0x10]
- mov r2, r9
- bl AddTextPrinterParameterized4
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813EA04: .4byte gUnknown_8464448
- thumb_func_end sub_813E9A0
-
- thumb_func_start sub_813EA08
-sub_813EA08: @ 813EA08
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0813EA4C @ =gUnknown_203F38C
- adds r5, r4, r0
- ldrb r0, [r5]
- cmp r0, 0xFF
- bne _0813EA6C
- lsls r0, r4, 3
- ldr r1, _0813EA50 @ =gUnknown_84643D8
- adds r0, r1
- bl AddWindow
- strb r0, [r5]
- cmp r4, 0x2
- beq _0813EA38
- cmp r4, 0x6
- beq _0813EA38
- cmp r4, 0x7
- beq _0813EA38
- cmp r4, 0x8
- beq _0813EA38
- cmp r4, 0x9
- bne _0813EA54
-_0813EA38:
- ldr r0, _0813EA4C @ =gUnknown_203F38C
- adds r0, r4, r0
- ldrb r0, [r0]
- movs r1, 0
- movs r2, 0xA
- movs r3, 0xC
- bl DrawStdFrameWithCustomTileAndPalette
- b _0813EA60
- .align 2, 0
-_0813EA4C: .4byte gUnknown_203F38C
-_0813EA50: .4byte gUnknown_84643D8
-_0813EA54:
- ldrb r0, [r5]
- movs r1, 0
- movs r2, 0x1
- movs r3, 0xE
- bl DrawStdFrameWithCustomTileAndPalette
-_0813EA60:
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- ldr r0, _0813EA74 @ =gUnknown_203F38C
- adds r0, r4, r0
- ldrb r0, [r0]
-_0813EA6C:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0813EA74: .4byte gUnknown_203F38C
- thumb_func_end sub_813EA08
-
- thumb_func_start sub_813EA78
-sub_813EA78: @ 813EA78
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0813EA94 @ =gUnknown_203F38C
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- movs r2, 0x1
- movs r3, 0xE
- bl DrawStdFrameWithCustomTileAndPalette
- pop {r0}
- bx r0
- .align 2, 0
-_0813EA94: .4byte gUnknown_203F38C
- thumb_func_end sub_813EA78
-
- thumb_func_start sub_813EA98
-sub_813EA98: @ 813EA98
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0813EAC8 @ =gUnknown_203F38C
- adds r4, r0
- ldrb r0, [r4]
- movs r1, 0
- bl ClearStdWindowAndFrameToTransparent
- ldrb r0, [r4]
- bl ClearWindowTilemap
- ldrb r0, [r4]
- bl RemoveWindow
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0xFF
- strb r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813EAC8: .4byte gUnknown_203F38C
- thumb_func_end sub_813EA98
-
- thumb_func_start sub_813EACC
-sub_813EACC: @ 813EACC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0813EB0C @ =gUnknown_203F38C
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _0813EB04
- movs r1, 0
- bl ClearDialogWindowAndFrameToTransparent
- ldrb r0, [r4]
- bl ClearWindowTilemap
- ldrb r0, [r4]
- bl RemoveWindow
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0xFF
- strb r0, [r4]
-_0813EB04:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813EB0C: .4byte gUnknown_203F38C
- thumb_func_end sub_813EACC
-
- thumb_func_start sub_813EB10
-sub_813EB10: @ 813EB10
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0813EB1C @ =gUnknown_203F38C
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0813EB1C: .4byte gUnknown_203F38C
- thumb_func_end sub_813EB10
-
- thumb_func_start DisplayItemMessageInBerryPouch
-DisplayItemMessageInBerryPouch: @ 813EB20
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r7, r2, 0
- mov r8, r3
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r4, _0813EB74 @ =gUnknown_203F38C
- ldrb r0, [r4, 0x5]
- cmp r0, 0xFF
- bne _0813EB44
- ldr r0, _0813EB78 @ =gUnknown_84643D8 + 0x28
- bl AddWindow
- strb r0, [r4, 0x5]
-_0813EB44:
- bl GetTextSpeedSetting
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r4, 0x5]
- str r5, [sp]
- str r0, [sp, 0x4]
- str r7, [sp, 0x8]
- mov r0, r8
- str r0, [sp, 0xC]
- adds r0, r6, 0
- movs r2, 0x13
- movs r3, 0xD
- bl DisplayMessageAndContinueTask
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813EB74: .4byte gUnknown_203F38C
-_0813EB78: .4byte gUnknown_84643D8 + 0x28
- thumb_func_end DisplayItemMessageInBerryPouch
-
- thumb_func_start sub_813EB7C
-sub_813EB7C: @ 813EB7C
- push {lr}
- sub sp, 0x10
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0813EBA4 @ =gUnknown_84643D8 + 0x18
- movs r2, 0x2
- str r2, [sp]
- movs r2, 0x1
- str r2, [sp, 0x4]
- movs r2, 0xE
- str r2, [sp, 0x8]
- str r3, [sp, 0xC]
- movs r2, 0x2
- movs r3, 0
- bl CreateYesNoMenuWithCallbacks
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_0813EBA4: .4byte gUnknown_84643D8 + 0x18
- thumb_func_end sub_813EB7C
-
- thumb_func_start sub_813EBA8
-sub_813EBA8: @ 813EBA8
- push {lr}
- sub sp, 0x10
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0813EBD0 @ =gUnknown_84643D8 + 0x20
- movs r2, 0x2
- str r2, [sp]
- movs r2, 0x1
- str r2, [sp, 0x4]
- movs r2, 0xE
- str r2, [sp, 0x8]
- str r3, [sp, 0xC]
- movs r2, 0x2
- movs r3, 0
- bl CreateYesNoMenuWithCallbacks
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_0813EBD0: .4byte gUnknown_84643D8 + 0x20
- thumb_func_end sub_813EBA8
-
- thumb_func_start sub_813EBD4
-sub_813EBD4: @ 813EBD4
- push {r4,lr}
- movs r0, 0x2
- bl sub_813EA08
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0813EC04 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0xA4
- lsls r1, 2
- adds r0, r1
- bl GetMoney
- adds r3, r0, 0
- adds r0, r4, 0
- movs r1, 0xA
- movs r2, 0xC
- bl PrintMoneyAmountInMoneyBoxWithBorder
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813EC04: .4byte gSaveBlock1Ptr
- thumb_func_end sub_813EBD4
-
- thumb_func_start sub_813EC08
-sub_813EC08: @ 813EC08
- push {lr}
- ldr r0, _0813EC20 @ =gUnknown_84644B8
- movs r1, 0x28
- movs r2, 0x4C
- movs r3, 0
- bl CreateSprite
- ldr r1, _0813EC24 @ =gUnknown_203F39C
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0813EC20: .4byte gUnknown_84644B8
-_0813EC24: .4byte gUnknown_203F39C
- thumb_func_end sub_813EC08
-
- thumb_func_start sub_813EC28
-sub_813EC28: @ 813EC28
- push {r4,lr}
- ldr r0, _0813EC58 @ =gUnknown_203F39C
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0813EC5C @ =gSprites
- adds r4, r0, r1
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0813EC52
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r0, _0813EC60 @ =sub_813EC64
- str r0, [r4, 0x1C]
-_0813EC52:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813EC58: .4byte gUnknown_203F39C
-_0813EC5C: .4byte gSprites
-_0813EC60: .4byte sub_813EC64
- thumb_func_end sub_813EC28
-
- thumb_func_start sub_813EC64
-sub_813EC64: @ 813EC64
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0813EC80
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAffineAnim
- ldr r0, _0813EC88 @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_0813EC80:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813EC88: .4byte SpriteCallbackDummy
- thumb_func_end sub_813EC64
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/include/berry_pouch.h b/include/berry_pouch.h
index 8e652225b..58f58fd99 100644
--- a/include/berry_pouch.h
+++ b/include/berry_pouch.h
@@ -6,7 +6,7 @@
void BerryPouch_StartFadeToExitCallback(u8 taskId);
void BerryPouch_SetExitCallback(void (*)(void));
void InitBerryPouch(u8, void (*)(void), u8);
-void DisplayItemMessageInBerryPouch(u8 taskId, u8 bgId, const u8 * str, TaskFunc followUpFunc);
+void DisplayItemMessageInBerryPouch(u8 taskId, u8 fontId, const u8 * str, TaskFunc followUpFunc);
void sub_813E2B8(u8 taskId);
#endif //GUARD_BERRY_POUCH_H
diff --git a/ld_script.txt b/ld_script.txt
index a7ab32150..fa7f1302b 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -252,7 +252,6 @@ SECTIONS {
asm/wild_pokemon_area.o(.text);
src/dynamic_placeholder_text_util.o(.text);
src/berry_pouch.o(.text);
- asm/berry_pouch.o(.text);
asm/itemfinder.o(.text);
src/buy_menu_helpers.o(.text);
src/slot_machine.o(.text);
diff --git a/src/berry_pouch.c b/src/berry_pouch.c
index e6746d4ca..abfa4aacf 100644
--- a/src/berry_pouch.c
+++ b/src/berry_pouch.c
@@ -17,6 +17,7 @@
#include "item.h"
#include "item_use.h"
#include "party_menu.h"
+#include "text_window.h"
#include "strings.h"
#include "string_util.h"
#include "sound.h"
@@ -118,15 +119,16 @@ void sub_813E7F0(u8 taskId);
void sub_813E8D4(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);
+u8 sub_813EA08(u8 winIdx);
+void sub_813EA98(u8 winIdx);
+void sub_813EACC(u8 winIdx);
+u8 sub_813EB10(u8 winIdx);
void sub_813EB7C(u8 taskId, const struct YesNoFuncTable * ptrs);
void sub_813EBA8(u8 taskId, const struct YesNoFuncTable * ptrs);
void sub_813EBD4(void);
void sub_813EC08(void);
void sub_813EC28(void);
+void sub_813EC64(struct Sprite * sprite);
static const struct BgTemplate gUnknown_846434C[] = {
{
@@ -1404,3 +1406,124 @@ void sub_813E8D4(u8 taskId)
sub_813E2B8(taskId);
}
}
+
+void sub_813E910(void)
+{
+ u8 i;
+ InitWindows(gUnknown_84643B8);
+ DeactivateAllTextPrinters();
+ TextWindow_SetUserSelectedFrame(0, 0x001, 0xE0);
+ TextWindow_LoadResourcesStdFrame0(0, 0x013, 0xD0);
+ TextWindow_SetStdFrame0_WithPal(0, 0x00A, 0xC0);
+ LoadPalette(gTMCaseMainWindowPalette, 0xF0, 0x20);
+ for (i = 0; i < 3; i++)
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ PutWindowTilemap(2);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(2);
+ for (i = 0; i < 14; i++)
+ gUnknown_203F38C[i] = 0xFF;
+}
+
+void sub_813E9A0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx)
+{
+ AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, gUnknown_8464448[colorIdx], speed, str);
+}
+
+u8 sub_813EA08(u8 winIdx)
+{
+ u8 retval = gUnknown_203F38C[winIdx];
+ if (retval == 0xFF)
+ {
+ gUnknown_203F38C[winIdx] = AddWindow(&gUnknown_84643D8[winIdx]);
+ if (winIdx == 2 || winIdx == 6 || winIdx == 7 || winIdx == 8 || winIdx == 9)
+ DrawStdFrameWithCustomTileAndPalette(gUnknown_203F38C[winIdx], FALSE, 0x00A, 0xC);
+ else
+ DrawStdFrameWithCustomTileAndPalette(gUnknown_203F38C[winIdx], FALSE, 0x001, 0xE);
+ ScheduleBgCopyTilemapToVram(2);
+ retval = gUnknown_203F38C[winIdx];
+ }
+ return retval;
+}
+
+void sub_813EA78(u8 winIdx)
+{
+ DrawStdFrameWithCustomTileAndPalette(gUnknown_203F38C[winIdx], FALSE, 0x001, 0xE);
+}
+
+void sub_813EA98(u8 winIdx)
+{
+ ClearStdWindowAndFrameToTransparent(gUnknown_203F38C[winIdx], FALSE);
+ ClearWindowTilemap(gUnknown_203F38C[winIdx]);
+ RemoveWindow(gUnknown_203F38C[winIdx]);
+ ScheduleBgCopyTilemapToVram(2);
+ gUnknown_203F38C[winIdx] = 0xFF;
+}
+
+void sub_813EACC(u8 winIdx)
+{
+ if (gUnknown_203F38C[winIdx] != 0xFF)
+ {
+ ClearDialogWindowAndFrameToTransparent(gUnknown_203F38C[winIdx], FALSE);
+ ClearWindowTilemap(gUnknown_203F38C[winIdx]);
+ RemoveWindow(gUnknown_203F38C[winIdx]);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(2);
+ gUnknown_203F38C[winIdx] = 0xFF;
+ }
+}
+
+u8 sub_813EB10(u8 winIdx)
+{
+ return gUnknown_203F38C[winIdx];
+}
+
+void DisplayItemMessageInBerryPouch(u8 taskId, u8 fontId, const u8 * str, TaskFunc followUpFunc)
+{
+ if (gUnknown_203F38C[5] == 0xFF)
+ gUnknown_203F38C[5] = AddWindow(&gUnknown_84643D8[5]);
+ DisplayMessageAndContinueTask(taskId, gUnknown_203F38C[5], 0x013, 0xD, fontId, GetTextSpeedSetting(), str, followUpFunc);
+ ScheduleBgCopyTilemapToVram(2);
+}
+
+void sub_813EB7C(u8 taskId, const struct YesNoFuncTable * ptrs)
+{
+ CreateYesNoMenuWithCallbacks(taskId, &gUnknown_84643D8[3], 2, 0, 2, 0x001, 0xE, ptrs);
+}
+
+void sub_813EBA8(u8 taskId, const struct YesNoFuncTable * ptrs)
+{
+ CreateYesNoMenuWithCallbacks(taskId, &gUnknown_84643D8[4], 2, 0, 2, 0x001, 0xE, ptrs);
+}
+
+void sub_813EBD4(void)
+{
+ PrintMoneyAmountInMoneyBoxWithBorder(sub_813EA08(2), 0x00A, 0xC, GetMoney(&gSaveBlock1Ptr->money));
+}
+
+void sub_813EC08(void)
+{
+ gUnknown_203F39C = CreateSprite(&gUnknown_84644B8, 40, 76, 0);
+}
+
+void sub_813EC28(void)
+{
+ struct Sprite * sprite = &gSprites[gUnknown_203F39C];
+ if (sprite->affineAnimEnded)
+ {
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->callback = sub_813EC64;
+ }
+}
+
+void sub_813EC64(struct Sprite * sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ StartSpriteAffineAnim(sprite, 0);
+ sprite->callback = SpriteCallbackDummy;
+ }
+}