summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkira Akashi <rubenru09@aol.com>2021-03-30 21:01:56 +0100
committerGitHub <noreply@github.com>2021-03-30 21:01:56 +0100
commit1598b5dcbb9c2fc7dfc51b4503fe5bcac75dab47 (patch)
tree40e15244eb904d8e8742d4e0ed9eabfe82b603d0
parentda21d9dc67083e0076e478e332fbda9a9e493e70 (diff)
parent5feba455f7b44720c5d8428dfdaf6de00faf020c (diff)
Merge branch 'master' into unk_02016B94
-rw-r--r--arm9/arm9.lsf2
-rw-r--r--arm9/asm/scrcmd_22.s220
-rw-r--r--arm9/asm/scrcmd_asm.s248
-rw-r--r--arm9/asm/unk_02025484.s41
-rw-r--r--arm9/asm/unk_02038C78.s30
-rw-r--r--arm9/global.inc38
-rw-r--r--arm9/src/scrcmd.c88
-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--arm9/src/unk_02025484.c27
-rw-r--r--include/scrcmd.h21
-rw-r--r--include/unk_02025484.h18
16 files changed, 281 insertions, 564 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index aa673fa9..7a0ddee1 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -175,7 +175,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/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s
index c10ba0f5..3d6645c2 100644
--- a/arm9/asm/scrcmd_asm.s
+++ b/arm9/asm/scrcmd_asm.s
@@ -5,7 +5,6 @@
.extern UNK_020F3538
.extern gMain
.extern FUN_0203A2F0
- .extern FUN_0203AD2C
.section .bss
@@ -15,253 +14,6 @@ UNK_021C5A0C: ; 0x021C5A0C
.text
- thumb_func_start FUN_0203ADC4
-FUN_0203ADC4: ; 0x0203ADC4
- push {r4-r7, lr}
- sub sp, #0x2c
- add r5, r0, #0x0
- add r0, #0x80
- ldr r6, [r0, #0x0]
- mov r1, #0x0
- add r0, r6, #0x0
- bl FUN_02039438
- str r0, [sp, #0x1c]
- add r0, r6, #0x0
- mov r1, #0xf
- bl FUN_02039438
- str r0, [sp, #0x20]
- ldr r0, [r5, #0x8]
- add r1, r0, #0x1
- str r1, [r5, #0x8]
- ldrb r0, [r0, #0x0]
- add r2, r1, #0x1
- str r0, [sp, #0x18]
- str r2, [r5, #0x8]
- ldrb r0, [r1, #0x0]
- add r1, r2, #0x1
- str r0, [sp, #0x14]
- str r1, [r5, #0x8]
- ldrb r7, [r2, #0x0]
- add r0, r1, #0x1
- str r0, [r5, #0x8]
- add r0, r5, #0x0
- ldrb r4, [r1, #0x0]
- bl ScriptReadHalfword
- str r0, [sp, #0x24]
- ldr r1, [sp, #0x24]
- add r0, r6, #0x0
- bl GetVarPointer
- str r0, [sp, #0x28]
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x1
- bl FUN_02039438
- ldr r1, [sp, #0x28]
- str r4, [sp, #0x0]
- str r1, [sp, #0x4]
- ldr r1, [sp, #0x20]
- add r3, r7, #0x0
- ldr r1, [r1, #0x0]
- str r1, [sp, #0x8]
- str r0, [sp, #0xc]
- mov r0, #0x0
- str r0, [sp, #0x10]
- ldr r1, [sp, #0x18]
- ldr r2, [sp, #0x14]
- add r0, r6, #0x0
- bl MOD05_021E1F34
- ldr r1, [sp, #0x1c]
- str r0, [r1, #0x0]
- ldr r0, [sp, #0x24]
- str r0, [r5, #0x64]
- mov r0, #0x1
- add sp, #0x2c
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0203AE4C
-FUN_0203AE4C: ; 0x0203AE4C
- push {r4-r7, lr}
- sub sp, #0x2c
- add r5, r0, #0x0
- add r0, #0x80
- ldr r6, [r0, #0x0]
- mov r1, #0x0
- add r0, r6, #0x0
- bl FUN_02039438
- str r0, [sp, #0x1c]
- add r0, r6, #0x0
- mov r1, #0xf
- bl FUN_02039438
- str r0, [sp, #0x20]
- ldr r0, [r5, #0x8]
- add r1, r0, #0x1
- str r1, [r5, #0x8]
- ldrb r0, [r0, #0x0]
- add r2, r1, #0x1
- str r0, [sp, #0x18]
- str r2, [r5, #0x8]
- ldrb r0, [r1, #0x0]
- add r1, r2, #0x1
- str r0, [sp, #0x14]
- str r1, [r5, #0x8]
- ldrb r7, [r2, #0x0]
- add r0, r1, #0x1
- str r0, [r5, #0x8]
- add r0, r5, #0x0
- ldrb r4, [r1, #0x0]
- bl ScriptReadHalfword
- str r0, [sp, #0x24]
- ldr r1, [sp, #0x24]
- add r0, r6, #0x0
- bl GetVarPointer
- str r0, [sp, #0x28]
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x1
- bl FUN_02039438
- ldr r1, [sp, #0x28]
- str r4, [sp, #0x0]
- str r1, [sp, #0x4]
- ldr r1, [sp, #0x20]
- add r3, r7, #0x0
- ldr r1, [r1, #0x0]
- str r1, [sp, #0x8]
- str r0, [sp, #0xc]
- ldr r0, [r5, #0x78]
- str r0, [sp, #0x10]
- ldr r1, [sp, #0x18]
- ldr r2, [sp, #0x14]
- add r0, r6, #0x0
- bl MOD05_021E1F34
- ldr r1, [sp, #0x1c]
- str r0, [r1, #0x0]
- ldr r0, [sp, #0x24]
- str r0, [r5, #0x64]
- mov r0, #0x1
- add sp, #0x2c
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0203AED4
-FUN_0203AED4: ; 0x0203AED4
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x0
- bl FUN_02039438
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl VarGet
- add r3, r0, #0x0
- lsl r1, r6, #0x18
- lsl r2, r7, #0x18
- lsl r3, r3, #0x18
- ldr r0, [r4, #0x0]
- lsr r1, r1, #0x18
- lsr r2, r2, #0x18
- lsr r3, r3, #0x18
- bl MOD05_021E1F58
- mov r0, #0x0
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0203AF34
-FUN_0203AF34: ; 0x0203AF34
- push {r4, lr}
- add r4, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x0
- bl FUN_02039438
- ldr r0, [r0, #0x0]
- bl MOD05_021E1F60
- ldr r1, _0203AF54 ; =FUN_0203AD2C
- add r0, r4, #0x0
- bl SetupNativeScript
- mov r0, #0x1
- pop {r4, pc}
- .balign 4
-_0203AF54: .word FUN_0203AD2C
-
- thumb_func_start FUN_0203AF58
-FUN_0203AF58: ; 0x0203AF58
- push {r4, lr}
- add r4, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x0
- bl FUN_02039438
- ldr r2, [r4, #0x8]
- add r1, r2, #0x1
- str r1, [r4, #0x8]
- ldrb r1, [r2, #0x0]
- ldr r0, [r0, #0x0]
- bl MOD05_021E26CC
- ldr r1, _0203AF80 ; =FUN_0203AD2C
- add r0, r4, #0x0
- bl SetupNativeScript
- mov r0, #0x1
- pop {r4, pc}
- .balign 4
-_0203AF80: .word FUN_0203AD2C
-
- thumb_func_start FUN_0203AF84
-FUN_0203AF84: ; 0x0203AF84
- push {r4, lr}
- add r4, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x0
- bl FUN_02039438
- ldr r2, [r4, #0x8]
- add r1, r2, #0x1
- str r1, [r4, #0x8]
- ldrb r1, [r2, #0x0]
- ldr r0, [r0, #0x0]
- bl MOD05_021E2B80
- mov r0, #0x1
- pop {r4, pc}
-
- thumb_func_start FUN_0203AFA4
-FUN_0203AFA4: ; 0x0203AFA4
- push {r4, lr}
- add r4, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x0
- bl FUN_02039438
- ldr r2, [r4, #0x8]
- add r1, r2, #0x1
- str r1, [r4, #0x8]
- ldrb r1, [r2, #0x0]
- ldr r0, [r0, #0x0]
- bl MOD05_021E2B9C
- mov r0, #0x1
- pop {r4, pc}
-
thumb_func_start FUN_0203AFC4
FUN_0203AFC4: ; 0x0203AFC4
push {r4-r6, lr}
diff --git a/arm9/asm/unk_02025484.s b/arm9/asm/unk_02025484.s
deleted file mode 100644
index 5f869289..00000000
--- a/arm9/asm/unk_02025484.s
+++ /dev/null
@@ -1,41 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02025484
-FUN_02025484: ; 0x02025484
- ldr r3, _0202548C ; =MI_CpuFill8
- mov r1, #0x0
- mov r2, #0x24
- bx r3
- .balign 4
-_0202548C: .word MI_CpuFill8
-
- thumb_func_start FUN_02025490
-FUN_02025490: ; 0x02025490
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl FUN_02025484
- str r4, [r5, #0x0]
- add r0, r5, #0x4
- pop {r3-r5, pc}
-
- thumb_func_start FUN_020254A0
-FUN_020254A0: ; 0x020254A0
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x0]
- cmp r0, r1
- beq _020254AE
- bl ErrorHandling
-_020254AE:
- add r0, r4, #0x4
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020254B4
-FUN_020254B4: ; 0x020254B4
- ldr r0, [r0, #0x0]
- bx lr
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index f8d30d92..4b80024a 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -217,11 +217,11 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_Unk0041
.word ScrCmd_Unk0042
.word ScrCmd_Unk0043
- .word FUN_0203ADC4
- .word FUN_0203AE4C
- .word FUN_0203AED4
- .word FUN_0203AF34
- .word FUN_0203AF58
+ .word ScrCmd_Unk0044
+ .word ScrCmd_Unk0045
+ .word ScrCmd_Unk0046
+ .word ScrCmd_Unk0047
+ .word ScrCmd_Unk0048
.word FUN_020414E0
.word FUN_020414FC
.word FUN_02041518
@@ -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
@@ -868,8 +868,8 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_02041100
.word FUN_02041138
.word FUN_02041174
- .word FUN_0203AF84
- .word FUN_0203AFA4
+ .word ScrCmd_Unk02CF
+ .word ScrCmd_Unk02D0
.text
diff --git a/arm9/global.inc b/arm9/global.inc
index e96ed1f1..8d96b0f2 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -1618,10 +1618,6 @@
.extern FUN_020252E8
.extern FUN_020252F4
.extern FUN_020253E0
-.extern FUN_02025484
-.extern FUN_02025490
-.extern FUN_020254A0
-.extern FUN_020254B4
.extern FUN_020254B8
.extern FUN_020254C0
.extern FUN_020254CC
@@ -2780,13 +2776,13 @@
.extern ScrCmd_Unk029D
.extern ScrCmd_Unk0043
.extern ScrCmd_Unk02B9
-.extern FUN_0203ADC4
-.extern FUN_0203AE4C
-.extern FUN_0203AED4
-.extern FUN_0203AF34
-.extern FUN_0203AF58
-.extern FUN_0203AF84
-.extern FUN_0203AFA4
+.extern ScrCmd_Unk0044
+.extern ScrCmd_Unk0045
+.extern ScrCmd_Unk0046
+.extern ScrCmd_Unk0047
+.extern ScrCmd_Unk0048
+.extern ScrCmd_Unk02CF
+.extern ScrCmd_Unk02D0
.extern FUN_0203AFC4
.extern FUN_0203B024
.extern FUN_0203B148
@@ -3382,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
@@ -8517,6 +8513,10 @@
.extern CARDi_InitCommon
.extern MonNotFaintedOrEgg
.extern CountAlivePokemon
+.extern FUN_02025484
+.extern FUN_02025490
+.extern FUN_020254A0
+.extern FUN_020254B4
.extern UNK_020EDB30
.extern UNK_020EDB38
.extern UNK_020EDB44
diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c
index bad0d69c..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);
@@ -50,6 +48,12 @@ extern void MOD05_021E1C4C(u32 param0, u32 param1, u32 param2);
extern void MOD05_021E1C54(u32 param0);
extern u32 FUN_02052714(u32 param0);
extern void MOD05_021E1ECC(u32 param0);
+extern u32 MOD05_021E1F34(struct UnkSavStruct80 *arg, u8 param1, u8 param2, u8 param3, u8 param4, u16 *param5, u32 param6, u32 *param7, struct MsgData *msgData);
+extern void MOD05_021E1F58(u32 param0, u8 param1, u8 param2, u8 param3);
+extern void MOD05_021E1F60(u32 param0);
+extern void MOD05_021E26CC(u32 param0, u8 param1);
+extern void MOD05_021E2B80(u32 param0, u8 param1);
+extern void MOD05_021E2B9C(u32 param0, u8 param1);
extern u8 *UNK_020F34E0;
@@ -66,7 +70,7 @@ static BOOL FUN_0203A8A0(struct ScriptContext *ctx);
static BOOL FUN_0203A94C(struct ScriptContext *ctx);
static BOOL FUN_0203AA0C(struct ScriptContext *ctx);
static BOOL FUN_0203AB00(struct ScriptContext *ctx);
-/*static*/ BOOL FUN_0203AD2C(struct ScriptContext *ctx);
+static BOOL FUN_0203AD2C(struct ScriptContext *ctx);
static BOOL FUN_0203AD78(struct ScriptContext *ctx);
extern u8 sScriptConditionTable[6][3];
@@ -1173,7 +1177,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0043(struct ScriptContext *ctx)
return TRUE;
}
-THUMB_FUNC BOOL FUN_0203AD2C(struct ScriptContext *ctx)
+THUMB_FUNC static BOOL FUN_0203AD2C(struct ScriptContext *ctx)
{
u16 *varPtr = GetVarPointer(ctx->unk80, (u16)ctx->data[0]);
if (*varPtr == 0xEEEE)
@@ -1218,3 +1222,79 @@ THUMB_FUNC static BOOL FUN_0203AD78(struct ScriptContext *ctx)
return TRUE;
}
}
+
+THUMB_FUNC BOOL ScrCmd_Unk0044(struct ScriptContext *ctx)
+{
+ struct UnkSavStruct80 *unk80 = ctx->unk80;
+ u32 *unk = FUN_02039438(unk80, 0);
+ u32 *unk2 = FUN_02039438(unk80, 15);
+ u8 unk3 = ScriptReadByte(ctx);
+ u8 unk4 = ScriptReadByte(ctx);
+ u8 unk5 = ScriptReadByte(ctx);
+ u8 unk6 = ScriptReadByte(ctx);
+
+ u16 halfWord = ScriptReadHalfword(ctx);
+ u16 *varPtr = GetVarPointer(unk80, halfWord);
+ u32 *unk7 = FUN_02039438(ctx->unk80, 1);
+ *unk = MOD05_021E1F34(unk80, unk3, unk4, unk5, unk6, varPtr, *unk2, unk7, NULL);
+ ctx->data[0] = halfWord;
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0045(struct ScriptContext *ctx)
+{
+ struct UnkSavStruct80 *unk80 = ctx->unk80;
+ u32 *unk = FUN_02039438(unk80, 0);
+ u32 *unk2 = FUN_02039438(unk80, 15);
+ u8 unk3 = ScriptReadByte(ctx);
+ u8 unk4 = ScriptReadByte(ctx);
+ u8 unk5 = ScriptReadByte(ctx);
+ u8 unk6 = ScriptReadByte(ctx);
+
+ u16 halfWord = ScriptReadHalfword(ctx);
+ u16 *varPtr = GetVarPointer(unk80, halfWord);
+ u32 *unk7 = FUN_02039438(ctx->unk80, 1);
+ *unk = MOD05_021E1F34(unk80, unk3, unk4, unk5, unk6, varPtr, *unk2, unk7, ctx->msgData);
+ ctx->data[0] = halfWord;
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0046(struct ScriptContext *ctx)
+{
+ u32 *unk = FUN_02039438(ctx->unk80, 0);
+ u16 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 unk3 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 unk4 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ MOD05_021E1F58(*unk, (u8)unk2, (u8)unk3, (u8)unk4);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0047(struct ScriptContext *ctx)
+{
+ u32 *unk = FUN_02039438(ctx->unk80, 0);
+ MOD05_021E1F60(*unk);
+ SetupNativeScript(ctx, FUN_0203AD2C);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0048(struct ScriptContext *ctx)
+{
+ u32 *unk = FUN_02039438(ctx->unk80, 0);
+ MOD05_021E26CC(*unk, ScriptReadByte(ctx));
+ SetupNativeScript(ctx, FUN_0203AD2C);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk02CF(struct ScriptContext *ctx)
+{
+ u32 *unk = FUN_02039438(ctx->unk80, 0);
+ MOD05_021E2B80(*unk, ScriptReadByte(ctx));
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk02D0(struct ScriptContext *ctx)
+{
+ u32 *unk = FUN_02039438(ctx->unk80, 0);
+ MOD05_021E2B9C(*unk, ScriptReadByte(ctx));
+ return TRUE;
+}
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;
+}
diff --git a/include/scrcmd.h b/include/scrcmd.h
index 44151627..dd43e586 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;
@@ -94,6 +98,13 @@ BOOL ScrCmd_Unk0042(struct ScriptContext *ctx);
BOOL ScrCmd_Unk029D(struct ScriptContext *ctx);
BOOL ScrCmd_Unk0043(struct ScriptContext *ctx);
BOOL ScrCmd_Unk02B9(struct ScriptContext *ctx);
+BOOL ScrCmd_Unk0044(struct ScriptContext *ctx);
+BOOL ScrCmd_Unk0045(struct ScriptContext *ctx);
+BOOL ScrCmd_Unk0046(struct ScriptContext *ctx);
+BOOL ScrCmd_Unk0047(struct ScriptContext *ctx);
+BOOL ScrCmd_Unk0048(struct ScriptContext *ctx);
+BOOL ScrCmd_Unk02CF(struct ScriptContext *ctx);
+BOOL ScrCmd_Unk02D0(struct ScriptContext *ctx);
//scrcmd_coins.c
BOOL ScrCmd_Unk0075(struct ScriptContext* ctx);
@@ -130,6 +141,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);
diff --git a/include/unk_02025484.h b/include/unk_02025484.h
new file mode 100644
index 00000000..0412dda1
--- /dev/null
+++ b/include/unk_02025484.h
@@ -0,0 +1,18 @@
+#ifndef POKEDIAMOND_UNK_02025484_H
+#define POKEDIAMOND_UNK_02025484_H
+
+struct unk_2025484
+{
+ // size: 0x24
+ u32 unk0;
+ u32 unk4;
+ u8 padding[0x1C];
+};
+
+void FUN_02025484(struct unk_2025484 *r0, u32 r1);
+u32 *FUN_02025490(struct unk_2025484 *r0, u32 r1);
+u32 *FUN_020254A0(struct unk_2025484 *r0, u32 r1);
+u32 FUN_020254B4(struct unk_2025484 *r0);
+
+#endif POKEDIAMOND_UNK_02025484_H
+