diff options
Diffstat (limited to 'arm9/src')
-rw-r--r-- | arm9/src/scrcmd.c | 2 | ||||
-rw-r--r-- | arm9/src/scrcmd_18_c.c | 2 | ||||
-rw-r--r-- | arm9/src/scrcmd_19.c | 3 | ||||
-rw-r--r-- | arm9/src/scrcmd_20.c | 3 | ||||
-rw-r--r-- | arm9/src/scrcmd_coins.c | 4 | ||||
-rw-r--r-- | arm9/src/scrcmd_items.c | 96 | ||||
-rw-r--r-- | arm9/src/scrcmd_money.c | 4 | ||||
-rw-r--r-- | arm9/src/unk_02025484.c | 27 |
8 files changed, 123 insertions, 18 deletions
diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 0b11ba0a..4ad17e51 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/arm9/src/unk_02025484.c b/arm9/src/unk_02025484.c new file mode 100644 index 00000000..733ac23a --- /dev/null +++ b/arm9/src/unk_02025484.c @@ -0,0 +1,27 @@ +#include "global.h" +#include "MI_memory.h" +#include "error_handling.h" +#include "unk_02025484.h" + +THUMB_FUNC void FUN_02025484(struct unk_2025484 *r0, u32 r1) +{ + MI_CpuFill8(r0, 0, sizeof(struct unk_2025484)); +} + +THUMB_FUNC u32 *FUN_02025490(struct unk_2025484 *r0, u32 r1) +{ + FUN_02025484(r0, r1); + r0->unk0 = r1; + return &r0->unk4; +} + +THUMB_FUNC u32 *FUN_020254A0(struct unk_2025484 *r0, u32 r1) +{ + GF_ASSERT(r0->unk0 == r1); + return &r0->unk4; +} + +THUMB_FUNC u32 FUN_020254B4(struct unk_2025484 *r0) +{ + return r0->unk0; +} |