function progress

This commit is contained in:
Evan
2019-11-21 08:19:38 -07:00
parent 9e0db07ce9
commit 0001d360a6
2 changed files with 100 additions and 151 deletions
-130
View File
@@ -5,136 +5,6 @@
.text
thumb_func_start sub_809AB7C
sub_809AB7C: @ 809AB7C
push {r4,r5,lr}
cmp r0, 0
beq _0809AB8C
lsls r0, 24
lsrs r0, 24
b _0809ABCE
_0809AB88:
movs r0, 0x1
b _0809ABCE
_0809AB8C:
movs r4, 0
ldr r1, _0809ABD4 @ =gShopData
ldrh r0, [r1, 0x10]
cmp r4, r0
bcs _0809ABCC
ldr r0, [r1, 0x4]
ldrh r0, [r0]
cmp r0, 0
beq _0809ABCC
adds r5, r1, 0
_0809ABA0:
ldr r1, [r5, 0x4]
lsls r0, r4, 1
adds r0, r1
ldrh r0, [r0]
bl ItemId_GetPocket
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
beq _0809AB88
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
ldrh r0, [r5, 0x10]
cmp r4, r0
bcs _0809ABCC
ldr r0, [r5, 0x4]
lsls r1, r4, 1
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _0809ABA0
_0809ABCC:
movs r0, 0
_0809ABCE:
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_0809ABD4: .4byte gShopData
thumb_func_end sub_809AB7C
thumb_func_start sub_809ABD8
sub_809ABD8: @ 809ABD8
push {lr}
adds r1, r0, 0
ldr r2, _0809AC00 @ =gShopData
str r1, [r2, 0x4]
movs r0, 0
strh r0, [r2, 0x10]
ldrh r0, [r1]
cmp r0, 0
beq _0809ABFC
_0809ABEA:
ldrh r0, [r2, 0x10]
adds r0, 0x1
strh r0, [r2, 0x10]
ldrh r0, [r2, 0x10]
lsls r0, 1
adds r0, r1
ldrh r0, [r0]
cmp r0, 0
bne _0809ABEA
_0809ABFC:
pop {r0}
bx r0
.align 2, 0
_0809AC00: .4byte gShopData
thumb_func_end sub_809ABD8
thumb_func_start sub_809AC04
sub_809AC04: @ 809AC04
ldr r1, _0809AC0C @ =gShopData
str r0, [r1]
bx lr
.align 2, 0
_0809AC0C: .4byte gShopData
thumb_func_end sub_809AC04
thumb_func_start sub_809AC10
sub_809AC10: @ 809AC10
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x2
negs r0, r0
cmp r1, r0
beq _0809AC52
adds r0, 0x1
cmp r1, r0
bne _0809AC3C
movs r0, 0x5
bl PlaySE
adds r0, r4, 0
bl sub_809ACF8
b _0809AC52
_0809AC3C:
ldr r4, _0809AC58 @ =gUnknown_83DF09C
bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 21
adds r4, 0x4
adds r0, r4
ldr r1, [r0]
adds r0, r5, 0
bl _call_via_r1
_0809AC52:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0809AC58: .4byte gUnknown_83DF09C
thumb_func_end sub_809AC10
thumb_func_start sub_809AC5C
sub_809AC5C: @ 809AC5C
push {r4,lr}
+100 -21
View File
@@ -4,6 +4,9 @@
#include "window.h"
#include "field_specials.h"
#include "task.h"
#include "item.h"
#include "main.h"
#include "sound.h"
// enums
// RAM symbols
@@ -30,15 +33,24 @@ EWRAM_DATA struct ShopData gShopData = {0};
EWRAM_DATA u8 gUnknown_2039950 = 0;
//Function Declarations
//static u8 sub_809AB7C(u8 a0);
static u8 sub_809AB7C(bool32 a0);
static void sub_809AC10(u8 taskId);
// external defines
extern const struct WindowTemplate gUnknown_83DF0BC[]; //sShopMenuWindowTemplates
extern const struct MenuAction gUnknown_83DF09C[]; //sShopMenuActions_BuySellQuit
extern u8 sub_809AB7C(u8 a);
extern void sub_809AC10(u8 taskId);
extern void sub_809ACF8(u8 taskId);
//Data Definitions
/*
static const struct MenuAction sShopMenuActions_BuySellQuit[] =
{
{ gText_ShopBuy, {.void_u8=Task_HandleShopMenuBuy} },
{ gText_ShopSell, {.void_u8=Task_HandleShopMenuSell} },
{ gText_ShopQuit, {.void_u8=Task_HandleShopMenuQuit} }
};
*/
// Functions
@@ -60,32 +72,99 @@ u8 sub_809AAB0(u8 a0)
return CreateTask(sub_809AC10, 8);
}
static u8 sub_809AB7C(u32 a0)
{
u16 retVal, i;
if (a0)
return (u8)a0;
goto MAIN;
RETURN_1:
return 1;
MAIN:
i = 0;
if (i >= gShopData.itemCount)
goto RETURN_0;
else if (gShopData.itemList[0] == 0)
goto RETURN_0;
while (gShopData.itemList[i] != 0)
{
if (ItemId_GetPocket(gShopData.itemList[i]) == POCKET_TM_CASE)
goto RETURN_1;
++i;
if (i >= gShopData.itemCount)
goto RETURN_0;
else if (gShopData.itemList[i] == 0)
goto RETURN_0;
}
RETURN_0:
return 0;
}
/*
static u8 sub_809AB7C(u8 a0)
void (const u16 *list) //SetShopItemsForSale
{
u16 pocket;
u16 i;
gShopData.itemList = list;
gShopData.itemCount = 0;
if (list[0] == 0)
return;
if (a0 != 0)
return a0;
else if (a0 >= gShopData.itemCount)
return FALSE;
else if (gShopData.itemList[0] == 0)
return FALSE;
else
i = 0;
while (list[i] != 0)
{
while (ItemId_GetPocket(gShopData.itemCount[i]) != 0)
{
if (ItemId_GetPocket(gShopData.itemCount[i] == POCKET_TM_CASE)
return 1;
}
gShopData.itemCount++;
if (list[i] == 0)
return;
i++;
}
}
*/
//#ifdef NONMATCHING
// WHAT THE FUCK IS UP WITH THIS FUNCTION
void sub_809ABD8(const u16 *items)
{
//const u16* mart = items;
u16 item;
gShopData.itemList = items;
gShopData.itemCount = 0;
//item = items[0];
if (items[0] == 0)
return;
do {
gShopData.itemCount++;
item = items[gShopData.itemCount];
} while (item);
}
/*
#else
NAKED
void sub_809ABD8(const u16 *items)
asm_unified("\t
*/
//SetShopMenuCallback
void sub_809AC04(MainCallback callback)
{
gShopData.callback = callback;
}
//Task_ShopMenu
static void sub_809AC10(u8 taskId)
{
s8 a0 = Menu_ProcessInputNoWrapAround();
if (a0 == -2)
return;
if (a0 == -1)
{
PlaySE(5);
sub_809ACF8(taskId);
return;
}
//gUnknown_83DF09C.func.u8_void(Menu_GetCursorPos());
}