summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lsf2
-rw-r--r--arm9/asm/scrcmd_22.s220
-rw-r--r--arm9/asm/unk_02038C78.s16
-rw-r--r--arm9/global.inc16
-rw-r--r--arm9/src/scrcmd.c2
-rw-r--r--arm9/src/scrcmd_18_c.c2
-rw-r--r--arm9/src/scrcmd_19.c3
-rw-r--r--arm9/src/scrcmd_20.c3
-rw-r--r--arm9/src/scrcmd_coins.c4
-rw-r--r--arm9/src/scrcmd_items.c96
-rw-r--r--arm9/src/scrcmd_money.c4
-rw-r--r--include/scrcmd.h14
12 files changed, 127 insertions, 255 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 6066b7ca..05a905ee 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -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
diff --git a/arm9/asm/scrcmd_22.s b/arm9/asm/scrcmd_22.s
deleted file mode 100644
index 1f354520..00000000
--- a/arm9/asm/scrcmd_22.s
+++ /dev/null
@@ -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
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index f8d30d92..72d8bce2 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -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
diff --git a/arm9/global.inc b/arm9/global.inc
index a2fd15c3..e90bb423 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -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
diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c
index bad0d69c..a40ed547 100644
--- a/arm9/src/scrcmd.c
+++ b/arm9/src/scrcmd.c
@@ -5,8 +5,6 @@
#include "player_data.h"
#include "text.h"
-extern u16 *GetVarPointer(struct UnkSavStruct80* arg, u16);
-extern u16 VarGet(struct UnkSavStruct80* arg, u16 wk);
extern void *FUN_02039438(struct UnkSavStruct80* arg, u32 id);
extern void *CreateScriptContext(struct UnkSavStruct80* arg, u16 id);
extern u8 FUN_02058448(u32 param0);
diff --git a/arm9/src/scrcmd_18_c.c b/arm9/src/scrcmd_18_c.c
index c683bc8c..d4437c5f 100644
--- a/arm9/src/scrcmd_18_c.c
+++ b/arm9/src/scrcmd_18_c.c
@@ -6,8 +6,6 @@
#include "map_header.h"
#include "scrcmd.h"
-extern u16 VarGet(struct UnkSavStruct80* arg, u16 wk);
-extern u16 *GetVarPointer(struct UnkSavStruct80* arg, u16);
extern BOOL GiveMon(u32 heap_id, struct SaveBlock2 * sav2, u16 species, u8 level, u16 item, u32 mapSec, u8 encounterType);
THUMB_FUNC BOOL ScrCmd_GiveMon(struct ScriptContext* ctx)
diff --git a/arm9/src/scrcmd_19.c b/arm9/src/scrcmd_19.c
index f0fb9b42..b0a201b7 100644
--- a/arm9/src/scrcmd_19.c
+++ b/arm9/src/scrcmd_19.c
@@ -1,9 +1,6 @@
#include "scrcmd.h"
#include "bag.h"
-extern u16 VarGet(struct UnkSavStruct80* arg, u16);
-extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16);
-
const u16 UNK_020F450C[7][2] = {
{ 0x0067, 0x008E },
{ 0x0065, 0x008A },
diff --git a/arm9/src/scrcmd_20.c b/arm9/src/scrcmd_20.c
index bf4fb7f1..882126a0 100644
--- a/arm9/src/scrcmd_20.c
+++ b/arm9/src/scrcmd_20.c
@@ -1,8 +1,5 @@
#include "scrcmd.h"
-extern u16 VarGet(struct UnkSavStruct80* arg, u16);
-extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16);
-
const u16 UNK_020F452A[19][2] = {
{ 0x00FB, 0x03E8 },
{ 0x0109, 0x03E8 },
diff --git a/arm9/src/scrcmd_coins.c b/arm9/src/scrcmd_coins.c
index 5f7c4aa8..59638c83 100644
--- a/arm9/src/scrcmd_coins.c
+++ b/arm9/src/scrcmd_coins.c
@@ -1,10 +1,6 @@
#include "scrcmd.h"
#include "coins.h"
-extern u16 VarGet(struct UnkSavStruct80* arg, u16);
-extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16);
-extern struct SaveBlock2 * ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80* unk);
-
extern void * FUN_02039438(struct UnkSavStruct80* arg, u8 idx);
extern u32 MOD05_021E2950(struct UnkSavStruct80* arg, u8, u8);
diff --git a/arm9/src/scrcmd_items.c b/arm9/src/scrcmd_items.c
new file mode 100644
index 00000000..0184d02e
--- /dev/null
+++ b/arm9/src/scrcmd_items.c
@@ -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;
+}
diff --git a/arm9/src/scrcmd_money.c b/arm9/src/scrcmd_money.c
index b61a7ff7..d2254844 100644
--- a/arm9/src/scrcmd_money.c
+++ b/arm9/src/scrcmd_money.c
@@ -1,10 +1,6 @@
#include "scrcmd.h"
#include "player_data.h"
-extern u16 VarGet(struct UnkSavStruct80* arg, u16);
-extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16);
-extern struct SaveBlock2 * ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80* unk);
-
extern void * FUN_02039438(struct UnkSavStruct80* arg, u8 idx);
extern u32 MOD05_021E27E8(struct UnkSavStruct80* arg, u8, u8);
diff --git a/include/scrcmd.h b/include/scrcmd.h
index 44151627..a1b3362f 100644
--- a/include/scrcmd.h
+++ b/include/scrcmd.h
@@ -4,6 +4,10 @@
#include "global.h"
#include "script.h"
+extern u16 VarGet(struct UnkSavStruct80* arg, u16);
+extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16);
+extern struct SaveBlock2* ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80* unk);
+
struct UnkStruct_0203A288 {
u8 unk0;
u8 unk1;
@@ -130,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);