function progress
This commit is contained in:
-130
@@ -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
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user