summaryrefslogtreecommitdiff
path: root/arm9/src/scrcmd_flags.c
diff options
context:
space:
mode:
authorAkira Akashi <rubenru09@aol.com>2021-06-02 22:13:57 +0100
committerGitHub <noreply@github.com>2021-06-02 22:13:57 +0100
commit9d3d4a2acff67f43896e9e0dcd26e7aaeb55e3b3 (patch)
treed707aa8fead427dadbbb29b886875e6c8961bd5a /arm9/src/scrcmd_flags.c
parenta2a17a9426f16ee601ff17840b8bb7851fef7138 (diff)
parent7e32d3758e7e36d7a67a1442cdb9386f9aa18a6e (diff)
Merge branch 'master' into 0202A1E0
Diffstat (limited to 'arm9/src/scrcmd_flags.c')
-rw-r--r--arm9/src/scrcmd_flags.c284
1 files changed, 284 insertions, 0 deletions
diff --git a/arm9/src/scrcmd_flags.c b/arm9/src/scrcmd_flags.c
new file mode 100644
index 00000000..ee13ebc0
--- /dev/null
+++ b/arm9/src/scrcmd_flags.c
@@ -0,0 +1,284 @@
+#include "scrcmd.h"
+#include "event_data.h"
+#include "pokedex.h"
+
+extern void* FUN_02034E20(void*);
+extern void* FUN_02034E30(void*);
+extern BOOL FUN_02055474(void*);
+extern void FUN_02055488(void*, u32);
+extern void FUN_0205ECD4(struct ScriptState* state);
+extern BOOL FUN_0205ECE0(struct ScriptState* state);
+extern void FUN_0205ECFC(struct ScriptState* state);
+extern BOOL FUN_0205ED0C(struct ScriptState* state);
+extern void FUN_0205ED1C(struct ScriptState* state);
+extern void FUN_0205ED2C(struct ScriptState* state);
+extern BOOL FUN_0205ED3C(struct ScriptState* state);
+extern void FUN_0205ED4C(struct ScriptState* state);
+extern void FUN_0205ED5C(struct ScriptState* state);
+extern BOOL FUN_0205ED6C(struct ScriptState* state);
+extern BOOL FUN_0205F264(struct ScriptState* state, u32);
+extern void FUN_0205F274(struct ScriptState* state);
+extern void FUN_0205F284(struct ScriptState* state);
+extern BOOL FUN_0205F294(struct ScriptState* state);
+extern void FUN_0205F2A4(struct ScriptState* state);
+extern void FUN_0205F2B4(struct ScriptState* state);
+extern BOOL FUN_0205F2C4(struct ScriptState* state);
+
+const u8 UNK_020F457F[8] = {
+ 0, 1, 2, 3, 4, 5, 6, 7,
+};
+
+THUMB_FUNC BOOL ScrCmd_HasSinnohDex(struct ScriptContext* ctx)
+{
+ struct Pokedex* pokedex = Sav2_Pokedex_get(ctx->unk80->saveBlock2);
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *ret_ptr = (u16)Pokedex_GetSinnohDexFlag(pokedex);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GiveSinnohDex(struct ScriptContext* ctx)
+{
+ struct Pokedex* pokedex = Sav2_Pokedex_get(ctx->unk80->saveBlock2);
+
+ Pokedex_SetSinnohDexFlag(pokedex);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_HasRunningShoes(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ void* unk_sav_ptr = FUN_02034E30(ctx->unk80->saveBlock2);
+ void* unk = FUN_02034E20(unk_sav_ptr);
+
+ *ret_ptr = (u16)FUN_02055474(unk);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GiveRunningShoes(struct ScriptContext* ctx)
+{
+ void* unk_sav_ptr = FUN_02034E30(ctx->unk80->saveBlock2);
+ void* unk = FUN_02034E20(unk_sav_ptr);
+
+ FUN_02055488(unk, 1);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_HasBadge(struct ScriptContext* ctx)
+{
+ u16 badge_no = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ GF_ASSERT(badge_no < 8);
+ struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2);
+
+ *ret_ptr = (u16)PlayerProfile_TestBadgeFlag(player, badge_no);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GiveBadge(struct ScriptContext* ctx)
+{
+ u16 badge_no = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ GF_ASSERT(badge_no < 8);
+ struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2);
+
+ PlayerProfile_SetBadgeFlag(player, badge_no);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GiveBag(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ *ret_ptr = (u16)FUN_0205ECE0(state);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetTotalEarnedBadges(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ u16 i;
+ u16 badges;
+ for (i = 0, badges = 0; i < 8; i++)
+ {
+ struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2);
+ BOOL has_badge = PlayerProfile_TestBadgeFlag(player, UNK_020F457F[i]);
+ if (has_badge == TRUE)
+ {
+ badges++;
+ }
+ }
+
+ *ret_ptr = badges;
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_HasBag(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ FUN_0205ECD4(state);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0160(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ *ret_ptr = (u16)FUN_0205ED3C(state);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0161(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ FUN_0205ED1C(state);
+
+ return 0;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0162(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ FUN_0205ED2C(state);
+
+ return 0;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0163(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ *ret_ptr = (u16)FUN_0205ED6C(state);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0164(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ FUN_0205ED4C(state);
+
+ return 0;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0165(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ FUN_0205ED5C(state);
+
+ return 0;
+}
+
+THUMB_FUNC BOOL ScrCmd_CheckGameCompleted(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ *ret_ptr = (u16)FUN_0205ED0C(state);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_SetGameCompleted(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ FUN_0205ECFC(state);
+
+ return 0;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetSetStrength(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+ u8 option = ScriptReadByte(ctx);
+ u16* ret_ptr;
+
+ switch (option)
+ {
+ case 1: //set strength to on
+ FUN_0205F264(state, 1);
+ break;
+ case 0: //set strength to off
+ FUN_0205F264(state, 0);
+ break;
+ case 2: //get whether strength is on or off
+ ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ *ret_ptr = (u16)FUN_0205F264(state, 2);
+ break;
+ default:
+ GF_ASSERT(FALSE);
+ break;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetSetFlash(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+ u8 option = ScriptReadByte(ctx);
+ u16* ret_ptr;
+
+ switch (option)
+ {
+ case 1: //set flash to on
+ FUN_0205F274(state);
+ break;
+ case 0: //set flash to off
+ FUN_0205F284(state);
+ break;
+ case 2: //get whether flash is on or off
+ ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ *ret_ptr = (u16)FUN_0205F294(state);
+ break;
+ default:
+ GF_ASSERT(FALSE);
+ break;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetSetDefog(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+ u8 option = ScriptReadByte(ctx);
+ u16* ret_ptr;
+
+ switch (option)
+ {
+ case 1: //set defog to on
+ FUN_0205F2A4(state);
+ break;
+ case 0: //set defog to off
+ FUN_0205F2B4(state);
+ break;
+ case 2: //get whether defog is on or off
+ ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ *ret_ptr = (u16)FUN_0205F2C4(state);
+ break;
+ default:
+ GF_ASSERT(FALSE);
+ break;
+ }
+
+ return FALSE;
+}