decompile the two remaining functions of berry_tag_screen.c

This commit is contained in:
camthesaxman 2017-07-25 22:07:49 -05:00
parent 1fd1a3b0c4
commit 6f52c5238c
3 changed files with 70 additions and 192 deletions

View File

@ -3,6 +3,17 @@
#include "string_util.h"
struct PocketScrollState
{
u8 cursorPos;
u8 scrollTop;
u8 numSlots;
u8 cursorMax;
};
extern struct PocketScrollState gBagPocketScrollStates[];
extern struct ItemSlot *gCurrentBagPocketItemSlots;
void ResetBagScrollPositions(void);
void ClearBag(void);
void sub_80A3E0C(void);

View File

@ -61,9 +61,9 @@ static void sub_8146440(u8 taskId);
static void sub_8146480(u8 taskid);
static void sub_81464E4(void);
static void sub_8146600(u8 berry);
// static void sub_81466A0(void);
static void sub_81466A0(void);
static void sub_81466E8(u8 taskId, s8 direction);
// static void sub_8146798(u8 berry);
static void sub_8146798(u8 berry);
static void sub_8146810(s8 berry);
static void sub_81468BC(void);
@ -347,7 +347,7 @@ static void sub_8146600(u8 berry)
gUnknown_0203932E[4] = sub_80A7E5C(208);
}
void sub_81466A0(void)
static void sub_81466A0(void)
{
u16 i;
@ -361,105 +361,36 @@ void sub_81466A0(void)
}
}
__attribute__((naked))
static void sub_81466E8(u8 taskId, s8 direction)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
mov r7, r8\n\
push {r7}\n\
lsls r0, 24\n\
lsrs r7, r0, 24\n\
lsls r1, 24\n\
lsrs r2, r1, 24\n\
lsls r0, r7, 2\n\
adds r0, r7\n\
lsls r0, 3\n\
ldr r1, _08146748 @ =gTasks + 0x8\n\
adds r6, r0, r1\n\
ldr r4, _0814674C @ =gBagPocketScrollStates\n\
movs r0, 0xC\n\
adds r0, r4\n\
mov r8, r0\n\
ldrb r1, [r0, 0x1]\n\
ldrb r0, [r4, 0xC]\n\
adds r1, r0\n\
cmp r1, 0\n\
bne _08146718\n\
lsls r0, r2, 24\n\
cmp r0, 0\n\
blt _0814678C\n\
_08146718:\n\
adds r0, r1, 0x1\n\
lsls r5, r2, 24\n\
mov r1, r8\n\
ldrb r1, [r1, 0x2]\n\
cmp r0, r1\n\
bne _08146728\n\
cmp r5, 0\n\
bgt _0814678C\n\
_08146728:\n\
movs r0, 0x5\n\
bl PlaySE\n\
mov r2, r8\n\
ldrb r3, [r2, 0x1]\n\
ldrb r4, [r4, 0xC]\n\
mov r12, r4\n\
adds r0, r3, r4\n\
asrs r2, r5, 24\n\
adds r1, r0, r2\n\
cmp r1, 0\n\
bge _08146750\n\
negs r0, r0\n\
strh r0, [r6, 0x2]\n\
b _08146766\n\
.align 2, 0\n\
_08146748: .4byte gTasks + 0x8\n\
_0814674C: .4byte gBagPocketScrollStates\n\
_08146750:\n\
mov r4, r8\n\
ldrb r0, [r4, 0x2]\n\
cmp r1, r0\n\
blt _08146764\n\
subs r0, r3\n\
mov r1, r12\n\
subs r0, r1\n\
subs r0, 0x1\n\
strh r0, [r6, 0x2]\n\
b _08146766\n\
_08146764:\n\
strh r2, [r6, 0x2]\n\
_08146766:\n\
ldr r0, _08146780 @ =gTasks\n\
lsls r1, r7, 2\n\
adds r1, r7\n\
lsls r1, 3\n\
adds r1, r0\n\
ldr r0, _08146784 @ =sub_8146798\n\
str r0, [r1]\n\
cmp r5, 0\n\
bge _08146788\n\
movs r2, 0x10\n\
negs r2, r2\n\
adds r0, r2, 0\n\
b _0814678A\n\
.align 2, 0\n\
_08146780: .4byte gTasks\n\
_08146784: .4byte sub_8146798\n\
_08146788:\n\
movs r0, 0x10\n\
_0814678A:\n\
strh r0, [r6]\n\
_0814678C:\n\
pop {r3}\n\
mov r8, r3\n\
pop {r4-r7}\n\
pop {r0}\n\
bx r0\n\
.syntax divided\n");
u8 berryPocket = 3;
s16 *data = gTasks[taskId].data;
if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos == 0
&& direction < 0)
return;
if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + 1 == gBagPocketScrollStates[berryPocket].numSlots
&& direction > 0)
return;
PlaySE(SE_SELECT);
if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + direction < 0)
data[1] = -(gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos);
else if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + direction >= gBagPocketScrollStates[berryPocket].numSlots)
data[1] = gBagPocketScrollStates[berryPocket].numSlots - gBagPocketScrollStates[berryPocket].scrollTop - gBagPocketScrollStates[berryPocket].cursorPos - 1;
else
data[1] = direction;
gTasks[taskId].func = sub_8146798;
if (direction < 0)
data[0] = -16;
else
data[0] = 16;
}
void sub_8146798(u8 taskId)
static void sub_8146798(u8 taskId)
{
s16 *taskData = gTasks[taskId].data;
@ -478,94 +409,38 @@ void sub_8146798(u8 taskId)
}
}
__attribute__((naked))
static void sub_8146810(s8 berry)
{
asm(".syntax unified\n\
push {r4-r6,lr}\n\
lsls r0, 24\n\
lsrs r3, r0, 24\n\
adds r4, r3, 0\n\
lsls r0, r3, 24\n\
asrs r1, r0, 24\n\
cmp r1, 0\n\
ble _08146848\n\
ldr r0, _08146840 @ =gBagPocketScrollStates\n\
adds r4, r0, 0\n\
adds r4, 0xC\n\
ldrb r2, [r0, 0xC]\n\
adds r1, r2, r1\n\
adds r6, r0, 0\n\
cmp r1, 0x7\n\
ble _08146844\n\
adds r0, r3, 0\n\
adds r0, 0xF9\n\
adds r0, r2, r0\n\
ldrb r1, [r4, 0x1]\n\
adds r0, r1\n\
strb r0, [r4, 0x1]\n\
movs r0, 0x7\n\
b _0814686E\n\
.align 2, 0\n\
_08146840: .4byte gBagPocketScrollStates\n\
_08146844:\n\
adds r0, r2, r3\n\
b _0814686E\n\
_08146848:\n\
ldr r0, _08146868 @ =gBagPocketScrollStates\n\
adds r5, r0, 0\n\
adds r5, 0xC\n\
ldrb r2, [r0, 0xC]\n\
adds r1, r2, r1\n\
adds r6, r0, 0\n\
cmp r1, 0\n\
bge _0814686C\n\
adds r0, r2, r3\n\
ldrb r1, [r5, 0x1]\n\
adds r0, r1\n\
movs r1, 0\n\
strb r0, [r5, 0x1]\n\
strb r1, [r6, 0xC]\n\
b _08146870\n\
.align 2, 0\n\
_08146868: .4byte gBagPocketScrollStates\n\
_0814686C:\n\
adds r0, r2, r4\n\
_0814686E:\n\
strb r0, [r6, 0xC]\n\
_08146870:\n\
ldr r2, _081468AC @ =gScriptItemId\n\
movs r0, 0x3\n\
lsls r0, 2\n\
adds r0, r6\n\
ldrb r1, [r0, 0x1]\n\
ldrb r0, [r0]\n\
adds r1, r0\n\
ldr r0, _081468B0 @ =gCurrentBagPocketItemSlots\n\
ldr r0, [r0]\n\
lsls r1, 2\n\
adds r1, r0\n\
ldrh r0, [r1]\n\
strh r0, [r2]\n\
ldr r0, _081468B4 @ =gUnknown_0203932C\n\
ldrb r1, [r0]\n\
lsls r0, r1, 4\n\
adds r0, r1\n\
lsls r0, 2\n\
ldr r1, _081468B8 @ =gSprites\n\
adds r0, r1\n\
bl DestroySprite\n\
bl sub_81466A0\n\
bl sub_80A7DD4\n\
pop {r4-r6}\n\
pop {r0}\n\
bx r0\n\
.align 2, 0\n\
_081468AC: .4byte gScriptItemId\n\
_081468B0: .4byte gCurrentBagPocketItemSlots\n\
_081468B4: .4byte gUnknown_0203932C\n\
_081468B8: .4byte gSprites\n\
.syntax divided\n");
u8 berryPocket = 3;
if (berry > 0)
{
if (gBagPocketScrollStates[berryPocket].cursorPos + berry > 7)
{
gBagPocketScrollStates[berryPocket].scrollTop += gBagPocketScrollStates[berryPocket].cursorPos - 7 + berry;
gBagPocketScrollStates[berryPocket].cursorPos = 7;
}
else
{
gBagPocketScrollStates[berryPocket].cursorPos += berry;
}
}
else
{
if (gBagPocketScrollStates[berryPocket].cursorPos + berry < 0)
{
gBagPocketScrollStates[berryPocket].scrollTop += gBagPocketScrollStates[berryPocket].cursorPos + berry;
gBagPocketScrollStates[berryPocket].cursorPos = 0;
}
else
{
gBagPocketScrollStates[berryPocket].cursorPos += berry;
}
}
gScriptItemId = gCurrentBagPocketItemSlots[gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos].itemId;
DestroySprite(&gSprites[gUnknown_0203932C]);
sub_81466A0();
sub_80A7DD4();
}
static void sub_81468BC(void)

View File

@ -56,14 +56,6 @@ extern void sub_804E990(u8);
extern void sub_802E424(u8);
extern void sub_8064E2C(void);
struct PocketScrollState
{
u8 cursorPos;
u8 scrollTop;
u8 numSlots;
u8 cursorMax;
};
struct UnknownStruct2
{
u8 unk0;