Finish berry_pouch code decomp

This commit is contained in:
PikalaxALT
2019-09-30 19:47:38 -04:00
parent 89be71dcb8
commit 8eea5b6d75
4 changed files with 128 additions and 472 deletions
-466
View File
@@ -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.
+1 -1
View File
@@ -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
-1
View File
@@ -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);
+127 -4
View File
@@ -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;
}
}