summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortgsm <doodrabbit@hotmail.com>2021-03-22 05:00:02 -0400
committertgsm <doodrabbit@hotmail.com>2021-03-22 05:00:02 -0400
commite66ec843470977a813aa2309b1914deae218bb0e (patch)
treea01ec95e97e2527908a628493e708832943fbc8c
parent9e4080cdfb082a9738a8c159ad9cf1c317a60873 (diff)
decompile scrcmd_19
-rw-r--r--arm9/asm/scrcmd_19.s175
-rw-r--r--arm9/asm/unk_02038C78.s10
-rw-r--r--arm9/global.inc10
-rw-r--r--arm9/src/scrcmd_19.c89
-rw-r--r--include/scrcmd.h7
5 files changed, 106 insertions, 185 deletions
diff --git a/arm9/asm/scrcmd_19.s b/arm9/asm/scrcmd_19.s
deleted file mode 100644
index 863006b1..00000000
--- a/arm9/asm/scrcmd_19.s
+++ /dev/null
@@ -1,175 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020F450C
-UNK_020F450C: ; 0x020F450C
- .byte 0x67, 0x00
-
- .global UNK_020F450E
-UNK_020F450E: ; 0x020F450E
- .byte 0x8E, 0x00, 0x65, 0x00, 0x8A, 0x00, 0x66, 0x00, 0x8C, 0x00, 0x63, 0x00, 0x59, 0x01, 0x64, 0x00
- .byte 0x5B, 0x01, 0x68, 0x00, 0x9A, 0x01, 0x69, 0x00, 0x98, 0x01
-
- .text
-
- thumb_func_start FUN_02045268
-FUN_02045268: ; 0x02045268
- push {r3-r7, lr}
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r6, [r1, #0x0]
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl GetVarPointer
- mov r4, #0x0
- ldr r7, _020452B0 ; =UNK_020F450C
- str r0, [sp, #0x0]
- add r5, r4, #0x0
-_02045288:
- ldr r0, [r6, #0xc]
- bl Sav2_Bag_get
- lsl r1, r4, #0x2
- ldrh r1, [r7, r1]
- mov r2, #0x4
- bl Bag_GetQuantity
- add r0, r5, r0
- lsl r0, r0, #0x10
- lsr r5, r0, #0x10
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #0x7
- blo _02045288
- ldr r0, [sp, #0x0]
- strh r5, [r0, #0x0]
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-_020452B0: .word UNK_020F450C
-
- thumb_func_start FUN_020452B4
-FUN_020452B4: ; 0x020452B4
- 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 GetVarPointer
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl VarGet
- mov r5, #0x0
- ldr r2, _02045300 ; =UNK_020F450C
- strh r5, [r4, #0x0]
-_020452E0:
- lsl r3, r5, #0x2
- ldrh r1, [r2, r3]
- cmp r0, r1
- bne _020452F0
- ldr r0, _02045304 ; =UNK_020F450E
- ldrh r0, [r0, r3]
- strh r0, [r4, #0x0]
- b _020452FA
-_020452F0:
- add r1, r5, #0x1
- lsl r1, r1, #0x10
- lsr r5, r1, #0x10
- cmp r5, #0x7
- blo _020452E0
-_020452FA:
- mov r0, #0x0
- pop {r3-r5, pc}
- nop
-_02045300: .word UNK_020F450C
-_02045304: .word UNK_020F450E
-
- thumb_func_start FUN_02045308
-FUN_02045308: ; 0x02045308
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r7, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- str r0, [sp, #0x8]
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- str r0, [sp, #0x0]
- mov r4, #0x0
- ldr r0, [sp, #0x8]
- add r6, r4, #0x0
- strh r4, [r0, #0x0]
- ldr r0, [sp, #0x4]
- strh r4, [r0, #0x0]
-_02045358:
- ldr r0, [r7, #0xc]
- lsl r5, r4, #0x2
- bl Sav2_Bag_get
- ldr r1, _02045394 ; =UNK_020F450C
- mov r2, #0x4
- ldrh r1, [r1, r5]
- bl Bag_GetQuantity
- add r0, r6, r0
- lsl r0, r0, #0x10
- lsr r6, r0, #0x10
- ldr r0, [sp, #0x0]
- cmp r6, r0
- blo _02045384
- ldr r0, _02045394 ; =UNK_020F450C
- ldrh r1, [r0, r5]
- ldr r0, [sp, #0x8]
- strh r1, [r0, #0x0]
- ldr r0, [sp, #0x4]
- strh r4, [r0, #0x0]
- b _0204538E
-_02045384:
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #0x7
- blo _02045358
-_0204538E:
- mov r0, #0x0
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-_02045394: .word UNK_020F450C
-
- thumb_func_start FUN_02045398
-FUN_02045398: ; 0x02045398
- mov r0, #0x0
- bx lr
-
- thumb_func_start FUN_0204539C
-FUN_0204539C: ; 0x0204539C
- mov r0, #0x0
- bx lr
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index 95ca2106..9ef2c97d 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -646,11 +646,11 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_02044ED8
.word FUN_0203E4D8
.word FUN_02044F20
- .word FUN_02045268
- .word FUN_02045398
- .word FUN_0204539C
- .word FUN_020452B4
- .word FUN_02045308
+ .word ScrCmd_Unk01F1
+ .word ScrCmd_Unk01F2
+ .word ScrCmd_Unk01F3
+ .word ScrCmd_Unk01F4
+ .word ScrCmd_Unk01F5
.word ScrCmd_countpartymonsatorbelowlevel
.word ScrCmd_survivepsn
.word FUN_0203BC2C
diff --git a/arm9/global.inc b/arm9/global.inc
index c8834374..250c218c 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -3356,11 +3356,11 @@
.extern FUN_02045170
.extern FUN_020451D0
.extern FUN_02045264
-.extern FUN_02045268
-.extern FUN_020452B4
-.extern FUN_02045308
-.extern FUN_02045398
-.extern FUN_0204539C
+.extern ScrCmd_Unk01F1
+.extern ScrCmd_Unk01F4
+.extern ScrCmd_Unk01F5
+.extern ScrCmd_Unk01F2
+.extern ScrCmd_Unk01F3
.extern FUN_020453A0
.extern FUN_020453F4
.extern FUN_02045424
diff --git a/arm9/src/scrcmd_19.c b/arm9/src/scrcmd_19.c
new file mode 100644
index 00000000..f0fb9b42
--- /dev/null
+++ b/arm9/src/scrcmd_19.c
@@ -0,0 +1,89 @@
+#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 },
+ { 0x0066, 0x008C },
+ { 0x0063, 0x0159 },
+ { 0x0064, 0x015B },
+ { 0x0068, 0x019A },
+ { 0x0069, 0x0198 },
+};
+
+THUMB_FUNC BOOL ScrCmd_Unk01F1(struct ScriptContext * ctx)
+{
+ struct UnkSavStruct80 * sav_ptr = ctx->unk80;
+
+ u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ u8 i;
+ u16 total;
+ for (i = 0, total = 0; i < 7; i++)
+ {
+ total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), UNK_020F450C[i][0], 4);
+ }
+
+ *ret_ptr = total;
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk01F4(struct ScriptContext * ctx)
+{
+ u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *ret_ptr = 0;
+
+ for (u16 i = 0; i < 7; i++)
+ {
+ if (UNK_020F450C[i][0] == unk)
+ {
+ *ret_ptr = UNK_020F450C[i][1];
+ break;
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk01F5(struct ScriptContext * ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16 * ret_ptr1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 * ret_ptr2 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 needed_amount = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *ret_ptr1 = 0;
+ *ret_ptr2 = 0;
+
+ u8 i = 0;
+ u16 total = 0;
+ for (; i < 7; i++)
+ {
+ total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), UNK_020F450C[i][0], 4);
+ if (total >= needed_amount)
+ {
+ *ret_ptr1 = UNK_020F450C[i][0];
+ *ret_ptr2 = i;
+ break;
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk01F2(struct ScriptContext * ctx)
+{
+#pragma unused(ctx)
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk01F3(struct ScriptContext * ctx)
+{
+#pragma unused(ctx)
+ return FALSE;
+}
diff --git a/include/scrcmd.h b/include/scrcmd.h
index 1e09095a..2e412760 100644
--- a/include/scrcmd.h
+++ b/include/scrcmd.h
@@ -88,4 +88,11 @@ BOOL ScrCmd_Unk003B(struct ScriptContext *ctx);
//scrcmd_18.c
BOOL ScrCmd_GiveMon(struct ScriptContext* ctx);
+//scrcmd_19.c
+BOOL ScrCmd_Unk01F1(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk01F4(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk01F5(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk01F2(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk01F3(struct ScriptContext* ctx);
+
#endif //POKEDIAMOND_SCRCMD_H