Decompile scrcmd_22 -> scrcmd_items

This commit is contained in:
tgsm
2021-03-30 06:28:49 -04:00
parent 0cc774d83e
commit 14d341e09d
6 changed files with 123 additions and 237 deletions

View File

@@ -174,7 +174,7 @@ Static arm9
Object scrcmd_19.o
Object scrcmd_20.o
Object scrcmd_21.o
Object scrcmd_22.o
Object scrcmd_items.o
Object scrcmd_23.o
Object scrcmd_24.o
Object scrcmd_25.o

View File

@@ -1,220 +0,0 @@
.include "asm/macros.inc"
.include "global.inc"
.text
thumb_func_start FUN_02045784
FUN_02045784: ; 0x02045784
push {r3-r7, lr}
add r4, r0, #0x0
add r1, r4, #0x0
add r1, #0x80
ldr r5, [r1, #0x0]
bl ScriptReadHalfword
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
bl VarGet
add r6, r0, #0x0
add r0, r4, #0x0
bl ScriptReadHalfword
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
bl VarGet
add r7, r0, #0x0
add r0, r4, #0x0
bl ScriptReadHalfword
add r4, #0x80
add r1, r0, #0x0
ldr r0, [r4, #0x0]
bl GetVarPointer
add r4, r0, #0x0
ldr r0, [r5, #0xc]
bl Sav2_Bag_get
add r1, r6, #0x0
add r2, r7, #0x0
mov r3, #0x4
bl Bag_AddItem
strh r0, [r4, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
thumb_func_start FUN_020457DC
FUN_020457DC: ; 0x020457DC
push {r3-r7, lr}
add r4, r0, #0x0
add r1, r4, #0x0
add r1, #0x80
ldr r5, [r1, #0x0]
bl ScriptReadHalfword
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
bl VarGet
add r6, r0, #0x0
add r0, r4, #0x0
bl ScriptReadHalfword
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
bl VarGet
add r7, r0, #0x0
add r0, r4, #0x0
bl ScriptReadHalfword
add r4, #0x80
add r1, r0, #0x0
ldr r0, [r4, #0x0]
bl GetVarPointer
add r4, r0, #0x0
ldr r0, [r5, #0xc]
bl Sav2_Bag_get
add r1, r6, #0x0
add r2, r7, #0x0
mov r3, #0x4
bl Bag_TakeItem
strh r0, [r4, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
thumb_func_start FUN_02045834
FUN_02045834: ; 0x02045834
push {r3-r7, lr}
add r4, r0, #0x0
add r1, r4, #0x0
add r1, #0x80
ldr r5, [r1, #0x0]
bl ScriptReadHalfword
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
bl VarGet
add r6, r0, #0x0
add r0, r4, #0x0
bl ScriptReadHalfword
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
bl VarGet
add r7, r0, #0x0
add r0, r4, #0x0
bl ScriptReadHalfword
add r4, #0x80
add r1, r0, #0x0
ldr r0, [r4, #0x0]
bl GetVarPointer
add r4, r0, #0x0
ldr r0, [r5, #0xc]
bl Sav2_Bag_get
add r1, r6, #0x0
add r2, r7, #0x0
mov r3, #0x4
bl Bag_HasSpaceForItem
strh r0, [r4, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
thumb_func_start FUN_0204588C
FUN_0204588C: ; 0x0204588C
push {r3-r7, lr}
add r4, r0, #0x0
add r1, r4, #0x0
add r1, #0x80
ldr r5, [r1, #0x0]
bl ScriptReadHalfword
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
bl VarGet
add r6, r0, #0x0
add r0, r4, #0x0
bl ScriptReadHalfword
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
bl VarGet
add r7, r0, #0x0
add r0, r4, #0x0
bl ScriptReadHalfword
add r4, #0x80
add r1, r0, #0x0
ldr r0, [r4, #0x0]
bl GetVarPointer
add r4, r0, #0x0
ldr r0, [r5, #0xc]
bl Sav2_Bag_get
add r1, r6, #0x0
add r2, r7, #0x0
mov r3, #0xb
bl Bag_HasItem
strh r0, [r4, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
thumb_func_start FUN_020458E4
FUN_020458E4: ; 0x020458E4
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
add r1, r0, #0x0
add r0, r5, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
bl VarGet
add r4, r0, #0x0
add r0, r5, #0x0
bl ScriptReadHalfword
add r5, #0x80
add r1, r0, #0x0
ldr r0, [r5, #0x0]
bl GetVarPointer
add r5, r0, #0x0
add r0, r4, #0x0
bl FUN_02054CB0
strh r0, [r5, #0x0]
mov r0, #0x0
pop {r3-r5, pc}
thumb_func_start FUN_02045918
FUN_02045918: ; 0x02045918
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
add r1, r0, #0x0
add r0, r5, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
bl VarGet
add r4, r0, #0x0
add r0, r5, #0x0
bl ScriptReadHalfword
add r5, #0x80
add r1, r0, #0x0
ldr r0, [r5, #0x0]
bl GetVarPointer
add r5, r0, #0x0
add r0, r4, #0x0
mov r1, #0x5
mov r2, #0xb
bl GetItemAttr
strh r0, [r5, #0x0]
mov r0, #0x0
pop {r3-r5, pc}
thumb_func_start FUN_02045950
FUN_02045950: ; 0x02045950
mov r0, #0x0
bx lr
thumb_func_start FUN_02045954
FUN_02045954: ; 0x02045954
mov r0, #0x0
bx lr

View File

@@ -272,14 +272,14 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_GetCoins
.word ScrCmd_GiveCoins
.word ScrCmd_TakeCoinsImmediate
.word FUN_02045784
.word FUN_020457DC
.word FUN_02045834
.word FUN_0204588C
.word FUN_020458E4
.word FUN_02045918
.word FUN_02045950
.word FUN_02045954
.word ScrCmd_GiveItem
.word ScrCmd_TakeItem
.word ScrCmd_HasSpaceForItem
.word ScrCmd_HasItem
.word ScrCmd_ItemIdIsTMOrHM
.word ScrCmd_GetItemPocketId
.word ScrCmd_Unk0081
.word ScrCmd_Unk0082
.word FUN_02045958
.word FUN_020459AC
.word FUN_020459E8

View File

@@ -3378,14 +3378,14 @@
.extern FUN_02045678
.extern FUN_020456D4
.extern FUN_0204572C
.extern FUN_02045784
.extern FUN_020457DC
.extern FUN_02045834
.extern FUN_0204588C
.extern FUN_020458E4
.extern FUN_02045918
.extern FUN_02045950
.extern FUN_02045954
.extern ScrCmd_GiveItem
.extern ScrCmd_TakeItem
.extern ScrCmd_HasSpaceForItem
.extern ScrCmd_HasItem
.extern ScrCmd_ItemIdIsTMOrHM
.extern ScrCmd_GetItemPocketId
.extern ScrCmd_Unk0081
.extern ScrCmd_Unk0082
.extern FUN_02045958
.extern FUN_020459AC
.extern FUN_020459E8

96
arm9/src/scrcmd_items.c Normal file
View File

@@ -0,0 +1,96 @@
#include "scrcmd.h"
#include "bag.h"
extern BOOL FUN_02054CB0(u16 item_id);
THUMB_FUNC BOOL ScrCmd_GiveItem(struct ScriptContext* ctx)
{
struct UnkSavStruct80* sav_ptr = ctx->unk80;
u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 quantity = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16* item_was_added = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
struct Bag* bag = Sav2_Bag_get(sav_ptr->saveBlock2);
*item_was_added = (u16)Bag_AddItem(bag, item_id, quantity, 4);
return FALSE;
}
THUMB_FUNC BOOL ScrCmd_TakeItem(struct ScriptContext* ctx)
{
struct UnkSavStruct80* sav_ptr = ctx->unk80;
u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 quantity = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16* item_was_taken = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
struct Bag* bag = Sav2_Bag_get(sav_ptr->saveBlock2);
*item_was_taken = (u16)Bag_TakeItem(bag, item_id, quantity, 4);
return FALSE;
}
THUMB_FUNC BOOL ScrCmd_HasSpaceForItem(struct ScriptContext* ctx)
{
struct UnkSavStruct80* sav_ptr = ctx->unk80;
u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 quantity = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16* has_space = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
struct Bag* bag = Sav2_Bag_get(sav_ptr->saveBlock2);
*has_space = (u16)Bag_HasSpaceForItem(bag, item_id, quantity, 4);
return FALSE;
}
THUMB_FUNC BOOL ScrCmd_HasItem(struct ScriptContext* ctx)
{
struct UnkSavStruct80* sav_ptr = ctx->unk80;
u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 quantity = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16* has_item = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
struct Bag* bag = Sav2_Bag_get(sav_ptr->saveBlock2);
*has_item = (u16)Bag_HasItem(bag, item_id, quantity, 11);
return FALSE;
}
THUMB_FUNC BOOL ScrCmd_ItemIdIsTMOrHM(struct ScriptContext* ctx)
{
struct UnkSavStruct80* sav_ptr = ctx->unk80;
u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16* is_tm_or_hm = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
*is_tm_or_hm = (u16)FUN_02054CB0(item_id);
return FALSE;
}
THUMB_FUNC BOOL ScrCmd_GetItemPocketId(struct ScriptContext* ctx)
{
struct UnkSavStruct80* sav_ptr = ctx->unk80;
u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16* pocket = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
*pocket = (u16)GetItemAttr(item_id, ITEMATTR_POCKET, 11);
return FALSE;
}
THUMB_FUNC BOOL ScrCmd_Unk0081(struct ScriptContext* ctx)
{
#pragma unused(ctx)
return FALSE;
}
THUMB_FUNC BOOL ScrCmd_Unk0082(struct ScriptContext* ctx)
{
#pragma unused(ctx)
return FALSE;
}

View File

@@ -134,6 +134,16 @@ BOOL ScrCmd_Unk01F3(struct ScriptContext* ctx);
//scrcmd_20.c
BOOL ScrCmd_Unk02A6(struct ScriptContext* ctx);
//scrcmd_items.c
BOOL ScrCmd_GiveItem(struct ScriptContext* ctx);
BOOL ScrCmd_TakeItem(struct ScriptContext* ctx);
BOOL ScrCmd_HasSpaceForItem(struct ScriptContext* ctx);
BOOL ScrCmd_HasItem(struct ScriptContext* ctx);
BOOL ScrCmd_ItemIdIsTMOrHM(struct ScriptContext* ctx);
BOOL ScrCmd_GetItemPocketId(struct ScriptContext* ctx);
BOOL ScrCmd_Unk0081(struct ScriptContext* ctx);
BOOL ScrCmd_Unk0082(struct ScriptContext* ctx);
//scrcmd_25.c
BOOL ScrCmd_Unk02EF(struct ScriptContext* ctx);
BOOL ScrCmd_Unk02F0(struct ScriptContext* ctx);