summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Calixte <remicalixte.rmc@gmail.com>2021-05-08 12:29:17 +0200
committerRémi Calixte <remicalixte.rmc@gmail.com>2021-05-08 12:29:17 +0200
commit64ae698ecefdf3fd9348803bab7cc0c592dbb511 (patch)
treeac9b95d85abc9c77d245c4f9c75b5497bc9ff033
parent0a89ace18db732440c498c1684e287e164b6d76d (diff)
parentc50275c6db34a3f5142330cbbfd3f1e3dac51c2d (diff)
Merge branch 'master' into unk_0202E29C
-rw-r--r--.github/workflows/build.yml4
-rw-r--r--arm9/arm9.lsf2
-rw-r--r--arm9/asm/scrcmd_21.s465
-rw-r--r--arm9/asm/scrcmd_8.s234
-rw-r--r--arm9/asm/unk_02038C78.s42
-rw-r--r--arm9/asm/unk_0208890C.s73
-rw-r--r--arm9/global.inc42
-rw-r--r--arm9/src/scrcmd_8.c87
-rw-r--r--arm9/src/scrcmd_flags.c284
-rw-r--r--arm9/src/unk_020286F8.c9
-rw-r--r--arm9/src/unk_0208890C.c53
-rw-r--r--include/scrcmd.h25
-rw-r--r--include/script.h4
-rw-r--r--include/unk_020286F8.h4
-rw-r--r--include/unk_0208890C.h25
15 files changed, 528 insertions, 825 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 4e0f34ea..74303ad6 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -12,7 +12,7 @@ env:
jobs:
build:
- runs-on: ubuntu-18.04
+ runs-on: ubuntu-20.04
steps:
- name: Update and Install Software
@@ -43,7 +43,7 @@ jobs:
- name: Build Diamond
run: make diamond
- name: Build Pearl
- run: make pearl
+ run: make pearl
- name: Webhook
run: |
sudo chmod 755 $GITHUB_WORKSPACE/.github/calcrom/webhook.sh
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index dee43fd0..1abf5a52 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -173,7 +173,7 @@ Static arm9
Object scrcmd_18.o
Object scrcmd_19.o
Object scrcmd_20.o
- Object scrcmd_21.o
+ Object scrcmd_flags.o
Object scrcmd_items.o
Object scrcmd_23.o
Object scrcmd_24.o
diff --git a/arm9/asm/scrcmd_21.s b/arm9/asm/scrcmd_21.s
deleted file mode 100644
index e1f03c4a..00000000
--- a/arm9/asm/scrcmd_21.s
+++ /dev/null
@@ -1,465 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020F4574
-UNK_020F4574: ; 0x020F4574
- .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
-
- .text
-
- thumb_func_start FUN_020453F4
-FUN_020453F4: ; 0x020453F4
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_Pokedex_get
- 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 Pokedex_GetSinnohDexFlag
- strh r0, [r5, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02045424
-FUN_02045424: ; 0x02045424
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_Pokedex_get
- bl Pokedex_SetSinnohDexFlag
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_02045438
-FUN_02045438: ; 0x02045438
- 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 r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl FUN_02034E30
- bl FUN_02034E20
- bl FUN_02055474
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02045468
-FUN_02045468: ; 0x02045468
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl FUN_02034E30
- bl FUN_02034E20
- mov r1, #0x1
- bl FUN_02055488
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02045484
-FUN_02045484: ; 0x02045484
- push {r4-r6, 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 r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r6, r0, #0x0
- cmp r4, #0x8
- blo _020454B6
- bl ErrorHandling
-_020454B6:
- add r5, #0x80
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetProfileAddr
- add r1, r4, #0x0
- bl PlayerProfile_TestBadgeFlag
- strh r0, [r6, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start FUN_020454CC
-FUN_020454CC: ; 0x020454CC
- 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
- cmp r4, #0x8
- blo _020454EA
- bl ErrorHandling
-_020454EA:
- add r5, #0x80
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetProfileAddr
- add r1, r4, #0x0
- bl PlayerProfile_SetBadgeFlag
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02045500
-FUN_02045500: ; 0x02045500
- 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 r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ECE0
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0204552C
-FUN_0204552C: ; 0x0204552C
- push {r3-r7, lr}
- add r6, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r6, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- mov r4, #0x0
- ldr r7, _02045578 ; =UNK_020F4574
- str r0, [sp, #0x0]
- add r5, r4, #0x0
-_02045548:
- add r0, r6, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetProfileAddr
- ldrb r1, [r7, r4]
- bl PlayerProfile_TestBadgeFlag
- cmp r0, #0x1
- bne _02045564
- add r0, r5, #0x1
- lsl r0, r0, #0x10
- lsr r5, r0, #0x10
-_02045564:
- add r0, r4, #0x1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- cmp r4, #0x8
- blo _02045548
- ldr r0, [sp, #0x0]
- strh r5, [r0, #0x0]
- mov r0, #0x0
- pop {r3-r7, pc}
- nop
-_02045578: .word UNK_020F4574
-
- thumb_func_start FUN_0204557C
-FUN_0204557C: ; 0x0204557C
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ECD4
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_02045590
-FUN_02045590: ; 0x02045590
- 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 r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ED3C
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_020455BC
-FUN_020455BC: ; 0x020455BC
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ED1C
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_020455D0
-FUN_020455D0: ; 0x020455D0
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ED2C
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_020455E4
-FUN_020455E4: ; 0x020455E4
- 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 r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ED6C
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02045610
-FUN_02045610: ; 0x02045610
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ED4C
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_02045624
-FUN_02045624: ; 0x02045624
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ED5C
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_02045638
-FUN_02045638: ; 0x02045638
- 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 r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ED0C
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02045664
-FUN_02045664: ; 0x02045664
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ECFC
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_02045678
-FUN_02045678: ; 0x02045678
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- ldr r2, [r5, #0x8]
- add r4, r0, #0x0
- add r1, r2, #0x1
- str r1, [r5, #0x8]
- ldrb r1, [r2, #0x0]
- cmp r1, #0x0
- beq _020456A6
- cmp r1, #0x1
- beq _0204569E
- cmp r1, #0x2
- beq _020456AE
- b _020456CC
-_0204569E:
- mov r1, #0x1
- bl FUN_0205F264
- b _020456D0
-_020456A6:
- mov r1, #0x0
- bl FUN_0205F264
- b _020456D0
-_020456AE:
- 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, #0x2
- bl FUN_0205F264
- strh r0, [r5, #0x0]
- b _020456D0
-_020456CC:
- bl ErrorHandling
-_020456D0:
- mov r0, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_020456D4
-FUN_020456D4: ; 0x020456D4
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- ldr r2, [r5, #0x8]
- add r4, r0, #0x0
- add r1, r2, #0x1
- str r1, [r5, #0x8]
- ldrb r1, [r2, #0x0]
- cmp r1, #0x0
- beq _02045700
- cmp r1, #0x1
- beq _020456FA
- cmp r1, #0x2
- beq _02045706
- b _02045722
-_020456FA:
- bl FUN_0205F274
- b _02045726
-_02045700:
- bl FUN_0205F284
- b _02045726
-_02045706:
- 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_0205F294
- strh r0, [r5, #0x0]
- b _02045726
-_02045722:
- bl ErrorHandling
-_02045726:
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0204572C
-FUN_0204572C: ; 0x0204572C
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- ldr r2, [r5, #0x8]
- add r4, r0, #0x0
- add r1, r2, #0x1
- str r1, [r5, #0x8]
- ldrb r1, [r2, #0x0]
- cmp r1, #0x0
- beq _02045758
- cmp r1, #0x1
- beq _02045752
- cmp r1, #0x2
- beq _0204575E
- b _0204577A
-_02045752:
- bl FUN_0205F2A4
- b _0204577E
-_02045758:
- bl FUN_0205F2B4
- b _0204577E
-_0204575E:
- 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_0205F2C4
- strh r0, [r5, #0x0]
- b _0204577E
-_0204577A:
- bl ErrorHandling
-_0204577E:
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
diff --git a/arm9/asm/scrcmd_8.s b/arm9/asm/scrcmd_8.s
deleted file mode 100644
index fbb5b223..00000000
--- a/arm9/asm/scrcmd_8.s
+++ /dev/null
@@ -1,234 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02041C38
-FUN_02041C38: ; 0x02041C38
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0xf
- bl FUN_02039438
- add r6, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl FUN_0202881C
- add r5, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r7, [r0, #0xc]
- add r0, r4, #0x0
- bl ScriptReadHalfword
- cmp r0, #0x6
- bls _02041C6C
- b _02041E38
-_02041C6C:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02041C78: ; jump table (using 16-bit offset)
- .short _02041C86 - _02041C78 - 2; case 0
- .short _02041CBC - _02041C78 - 2; case 1
- .short _02041CF2 - _02041C78 - 2; case 2
- .short _02041D28 - _02041C78 - 2; case 3
- .short _02041D5E - _02041C78 - 2; case 4
- .short _02041D94 - _02041C78 - 2; case 5
- .short _02041DCE - _02041C78 - 2; case 6
-_02041C86:
- add r0, r4, #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 r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_02028828
- strh r0, [r4, #0x0]
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_02041CBC:
- add r0, r4, #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 r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_02028840
- strh r0, [r4, #0x0]
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_02041CF2:
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- add r3, r0, #0x0
- mov r0, #0x0
- str r0, [sp, #0x0]
- ldr r0, [r6, #0x0]
- add r1, r7, #0x0
- add r2, r5, #0x0
- bl BufferEasyChatWord
- b _02041E38
-_02041D28:
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- add r3, r0, #0x0
- mov r0, #0x1
- str r0, [sp, #0x0]
- ldr r0, [r6, #0x0]
- add r1, r7, #0x0
- add r2, r5, #0x0
- bl BufferEasyChatWord
- b _02041E38
-_02041D5E:
- mov r1, #0x0
- add r0, r5, #0x0
- add r2, r1, #0x0
- bl FUN_020287A8
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- mov r2, #0x0
- str r2, [sp, #0x0]
- str r5, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r0, [r4, #0x74]
- mov r1, #0x5
- mov r3, #0x7
- bl FUN_020385CC
- add sp, #0xc
- mov r0, #0x1
- pop {r4-r7, pc}
-_02041D94:
- 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, r5, #0x0
- mov r1, #0x1
- bl FUN_02028828
- add r6, r0, #0x0
- add r0, r5, #0x0
- add r1, r7, #0x0
- mov r2, #0x1
- bl FUN_02028700
- cmp r6, #0x0
- beq _02041DC8
- add r4, #0x80
- ldr r0, [r4, #0x0]
- bl FUN_020612F8
-_02041DC8:
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_02041DCE:
- mov r0, #0x40
- mov r1, #0x20
- bl String_ctor
- add r6, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetProfileAddr
- add r1, r6, #0x0
- add r7, r0, #0x0
- bl PlayerName_FlatToString
- add r0, r5, #0x0
- mov r1, #0x0
- mov r2, #0x1
- add r3, r6, #0x0
- bl FUN_020287C0
- add r0, r7, #0x0
- bl PlayerProfile_GetTrainerGender
- add r2, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x0
- bl FUN_020287EC
- add r0, r5, #0x0
- mov r1, #0x0
- mov r2, #0x2
- bl FUN_02028810
- bl MTRandom
- add r2, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x0
- bl FUN_02028788
- add r0, r6, #0x0
- bl String_dtor
- add r0, r5, #0x0
- mov r1, #0x0
- mov r2, #0x1
- bl FUN_02028700
- add r4, #0x80
- ldr r0, [r4, #0x0]
- bl FUN_020612EC
-_02041E38:
- mov r0, #0x0
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index 08416fc7..a43768aa 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -492,23 +492,23 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203D738
.word FUN_0203D774
.word FUN_0203D834
- .word FUN_020453F4
- .word FUN_02045424
- .word FUN_02045438
- .word FUN_02045468
- .word FUN_02045484
- .word FUN_020454CC
- .word FUN_0204552C
- .word FUN_02045500
- .word FUN_0204557C
- .word FUN_02045590
- .word FUN_020455BC
- .word FUN_020455D0
- .word FUN_020455E4
- .word FUN_02045610
- .word FUN_02045624
- .word FUN_02045638
- .word FUN_02045664
+ .word ScrCmd_HasSinnohDex
+ .word ScrCmd_GiveSinnohDex
+ .word ScrCmd_Unk0159
+ .word ScrCmd_Unk015A
+ .word ScrCmd_HasBadge
+ .word ScrCmd_GiveBadge
+ .word ScrCmd_GetTotalEarnedBadges
+ .word ScrCmd_Unk015E
+ .word ScrCmd_Unk015F
+ .word ScrCmd_Unk0160
+ .word ScrCmd_Unk0161
+ .word ScrCmd_Unk0162
+ .word ScrCmd_Unk0163
+ .word ScrCmd_Unk0164
+ .word ScrCmd_Unk0165
+ .word ScrCmd_Unk0166
+ .word ScrCmd_Unk0167
.word FUN_0203DC00
.word FUN_0203DC58
.word FUN_0203DC70
@@ -612,9 +612,9 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203E138
.word FUN_0203E168
.word FUN_0203E254
- .word FUN_02045678
- .word FUN_020456D4
- .word FUN_0204572C
+ .word ScrCmd_Unk01CF
+ .word ScrCmd_Unk01D0
+ .word ScrCmd_Unk01D1
.word FUN_0203E258
.word FUN_0203E29C
.word FUN_0203E2F8
@@ -690,7 +690,7 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203E81C
.word FUN_0203E848
.word FUN_0203E858
- .word FUN_02041C38
+ .word ScrCmd_Unk021D
.word FUN_02045E1C
.word FUN_02045E20
.word FUN_02045EE0
diff --git a/arm9/asm/unk_0208890C.s b/arm9/asm/unk_0208890C.s
deleted file mode 100644
index d27130c9..00000000
--- a/arm9/asm/unk_0208890C.s
+++ /dev/null
@@ -1,73 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020FD6E4
-UNK_020FD6E4: ; 0x020FD6E4
- .word FUN_020889B0, FUN_02088A00, FUN_02088A78, 0xFFFFFFFF
-
- .text
-
- thumb_func_start FUN_0208890C
-FUN_0208890C: ; 0x0208890C
- push {r3-r7, lr}
- add r6, r0, #0x0
- add r5, r1, #0x0
- add r0, r2, #0x0
- mov r1, #0x20
- add r7, r3, #0x0
- bl AllocFromHeap
- add r4, r0, #0x0
- mov r1, #0x0
- mov r2, #0x20
- bl MI_CpuFill8
- str r5, [r4, #0xc]
- add r0, r5, #0x0
- bl FUN_02028048
- str r0, [r4, #0x8]
- add r0, r5, #0x0
- bl Sav2_PlayerData_GetProfileAddr
- str r0, [r4, #0x10]
- add r0, r5, #0x0
- bl Sav2_Bag_get
- str r0, [r4, #0x14]
- add r0, r5, #0x0
- bl Sav2_PlayerData_GetOptionsAddr
- str r0, [r4, #0x18]
- str r7, [r4, #0x1c]
- str r6, [r4, #0x4]
- add r0, r4, #0x0
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02088950
-FUN_02088950: ; 0x02088950
- ldr r3, _02088958 ; =FUN_020373D4
- add r2, r1, #0x0
- ldr r1, _0208895C ; =UNK_020FD6E4
- bx r3
- .balign 4
-_02088958: .word FUN_020373D4
-_0208895C: .word UNK_020FD6E4
-
- thumb_func_start FUN_02088960
-FUN_02088960: ; 0x02088960
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- bl ScriptEnvironment_GetSav2Ptr
- add r3, r5, #0x0
- add r3, #0x98
- add r1, r0, #0x0
- ldr r3, [r3, #0x0]
- add r0, r4, #0x0
- add r2, r6, #0x0
- bl FUN_0208890C
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02088950
- add r0, r4, #0x0
- pop {r4-r6, pc}
- .balign 4
diff --git a/arm9/global.inc b/arm9/global.inc
index a944a1b1..05ba01a7 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -3238,7 +3238,7 @@
.extern FUN_02041B9C
.extern FUN_02041BC4
.extern FUN_02041BF0
-.extern FUN_02041C38
+.extern ScrCmd_Unk021D
.extern FUN_02041E40
.extern FUN_02041FDC
.extern FUN_02042000
@@ -3358,26 +3358,26 @@
.extern ScrCmd_Unk01F2
.extern ScrCmd_Unk01F3
.extern ScrCmd_Unk02A6
-.extern FUN_020453F4
-.extern FUN_02045424
-.extern FUN_02045438
-.extern FUN_02045468
-.extern FUN_02045484
-.extern FUN_020454CC
-.extern FUN_02045500
-.extern FUN_0204552C
-.extern FUN_0204557C
-.extern FUN_02045590
-.extern FUN_020455BC
-.extern FUN_020455D0
-.extern FUN_020455E4
-.extern FUN_02045610
-.extern FUN_02045624
-.extern FUN_02045638
-.extern FUN_02045664
-.extern FUN_02045678
-.extern FUN_020456D4
-.extern FUN_0204572C
+.extern ScrCmd_HasSinnohDex
+.extern ScrCmd_GiveSinnohDex
+.extern ScrCmd_Unk0159
+.extern ScrCmd_Unk015A
+.extern ScrCmd_HasBadge
+.extern ScrCmd_GiveBadge
+.extern ScrCmd_Unk015E
+.extern ScrCmd_GetTotalEarnedBadges
+.extern ScrCmd_Unk015F
+.extern ScrCmd_Unk0160
+.extern ScrCmd_Unk0161
+.extern ScrCmd_Unk0162
+.extern ScrCmd_Unk0163
+.extern ScrCmd_Unk0164
+.extern ScrCmd_Unk0165
+.extern ScrCmd_Unk0166
+.extern ScrCmd_Unk0167
+.extern ScrCmd_Unk01CF
+.extern ScrCmd_Unk01D0
+.extern ScrCmd_Unk01D1
.extern ScrCmd_GiveItem
.extern ScrCmd_TakeItem
.extern ScrCmd_HasSpaceForItem
diff --git a/arm9/src/scrcmd_8.c b/arm9/src/scrcmd_8.c
new file mode 100644
index 00000000..ba35b302
--- /dev/null
+++ b/arm9/src/scrcmd_8.c
@@ -0,0 +1,87 @@
+#include "scrcmd.h"
+#include "math_util.h"
+#include "unk_020286F8.h"
+
+extern void* FUN_02039438(struct UnkSavStruct80*, u8 idx);
+
+extern void FUN_020385CC(struct UnkStruct_0204639C*, u32, u32, u32, u32, u16*, u16* ret_ptr);
+extern BOOL FUN_020612EC(struct UnkSavStruct80*);
+extern BOOL FUN_020612F8(struct UnkSavStruct80*);
+
+THUMB_FUNC BOOL ScrCmd_Unk021D(struct ScriptContext* ctx)
+{
+ struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15);
+ struct UnkSaveStruct_020286F8* unk_sav_ptr = FUN_0202881C(ctx->unk80->saveBlock2);
+ struct SaveBlock2* sav2 = ctx->unk80->saveBlock2;
+
+ u16 unk = ScriptReadHalfword(ctx);
+ switch (unk)
+ {
+ case 0: {
+ u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *ret_ptr = (u16)FUN_02028828(unk_sav_ptr, unk_var);
+ return FALSE;
+ }
+ case 1: {
+ u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *ret_ptr = (u16)FUN_02028840(unk_sav_ptr, unk_var);
+ return FALSE;
+ }
+ case 2: {
+ u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ BufferEasyChatWord(*mgr, sav2, unk_var, idx, 0);
+ break;
+ }
+ case 3: {
+ u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ BufferEasyChatWord(*mgr, sav2, unk_var, idx, 1);
+ break;
+ }
+ case 4: {
+ u16* unk_str_ptr = FUN_020287A8(unk_sav_ptr, 0, 0);
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ FUN_020385CC(ctx->unk74, 5, 0, 7, 0, unk_str_ptr, ret_ptr);
+ return TRUE;
+ }
+ case 5: {
+ u16 src_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ BOOL unk_bool = FUN_02028828(unk_sav_ptr, 1);
+
+ FUN_02028700(unk_sav_ptr, src_idx, 1);
+ if (unk_bool != FALSE)
+ {
+ FUN_020612F8(ctx->unk80);
+ }
+
+ return FALSE;
+ }
+ case 6: {
+ struct String* player_name = String_ctor(64, 32);
+ struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2);
+
+ PlayerName_FlatToString(player, player_name);
+ FUN_020287C0(unk_sav_ptr, 0, 1, player_name);
+ FUN_020287EC(unk_sav_ptr, 0, PlayerProfile_GetTrainerGender(player));
+ FUN_02028810(unk_sav_ptr, 0, 2);
+ FUN_02028788(unk_sav_ptr, 0, MTRandom());
+
+ String_dtor(player_name);
+
+ FUN_02028700(unk_sav_ptr, 0, 1);
+ FUN_020612EC(ctx->unk80);
+
+ break;
+ }
+ }
+
+ return FALSE;
+}
diff --git a/arm9/src/scrcmd_flags.c b/arm9/src/scrcmd_flags.c
new file mode 100644
index 00000000..c0f6a519
--- /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_Unk0159(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_Unk015A(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_Unk015E(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_Unk015F(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_Unk0166(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_Unk0167(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ FUN_0205ECFC(state);
+
+ return 0;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk01CF(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+ u8 unk = ScriptReadByte(ctx);
+ u16* ret_ptr;
+
+ switch (unk)
+ {
+ case 1:
+ FUN_0205F264(state, 1);
+ break;
+ case 0:
+ FUN_0205F264(state, 0);
+ break;
+ case 2:
+ 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_Unk01D0(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+ u8 unk = ScriptReadByte(ctx);
+ u16* ret_ptr;
+
+ switch (unk)
+ {
+ case 1:
+ FUN_0205F274(state);
+ break;
+ case 0:
+ FUN_0205F284(state);
+ break;
+ case 2:
+ 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_Unk01D1(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+ u8 unk = ScriptReadByte(ctx);
+ u16* ret_ptr;
+
+ switch (unk)
+ {
+ case 1:
+ FUN_0205F2A4(state);
+ break;
+ case 0:
+ FUN_0205F2B4(state);
+ break;
+ case 2:
+ ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ *ret_ptr = (u16)FUN_0205F2C4(state);
+ break;
+ default:
+ GF_ASSERT(FALSE);
+ break;
+ }
+
+ return FALSE;
+}
diff --git a/arm9/src/unk_020286F8.c b/arm9/src/unk_020286F8.c
index f54d1e2e..a23a94ff 100644
--- a/arm9/src/unk_020286F8.c
+++ b/arm9/src/unk_020286F8.c
@@ -75,9 +75,9 @@ void FUN_020287C0(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j, struct Stri
CopyStringToU16Array(k, ptr[i].unk_10, 8);
}
-void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j)
+void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j)
{
- ptr[i].unk_20 = j;
+ ptr[i].unk_20 = (u8)j;
}
u8 FUN_020287F8(struct UnkSaveStruct_020286F8 * ptr, u32 i)
@@ -90,10 +90,9 @@ u8 FUN_02028804(struct UnkSaveStruct_020286F8 * ptr, u32 i)
return ptr[i].unk_21;
}
-
-void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j)
+void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j)
{
- ptr[i].unk_21 = j;
+ ptr[i].unk_21 = (u8)j;
}
struct UnkSaveStruct_020286F8 * FUN_0202881C(struct SaveBlock2 * sav2)
diff --git a/arm9/src/unk_0208890C.c b/arm9/src/unk_0208890C.c
new file mode 100644
index 00000000..0bc8803f
--- /dev/null
+++ b/arm9/src/unk_0208890C.c
@@ -0,0 +1,53 @@
+#include "global.h"
+#include "bag.h"
+#include "heap.h"
+#include "main.h"
+#include "MI_memory.h"
+#include "player_data.h"
+#include "script.h"
+#include "unk_0208890C.h"
+
+extern struct SaveBlock2* ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80*);
+extern void* FUN_02028048(struct SaveBlock2* sav2);
+extern void FUN_020373D4(struct UnkSavStruct80*, struct Unk21DBE18*, void*);
+extern BOOL FUN_020889B0(struct UnkStruct_02006234*, u32*);
+extern BOOL FUN_02088A00(struct UnkStruct_02006234*, u32*);
+extern BOOL FUN_02088A78(struct UnkStruct_02006234*, u32*);
+
+const struct Unk21DBE18 UNK_020FD6E4 = {
+ FUN_020889B0,
+ FUN_02088A00,
+ FUN_02088A78,
+ 0xFFFFFFFF,
+};
+
+THUMB_FUNC struct UnkStruct_0208890C* FUN_0208890C(void* a0, struct SaveBlock2* sav2, u32 heap_id, void* a3)
+{
+ struct UnkStruct_0208890C* ret = AllocFromHeap(heap_id, sizeof(struct UnkStruct_0208890C));
+ MI_CpuFill8(ret, 0, sizeof(struct UnkStruct_0208890C));
+
+ ret->sav2 = sav2;
+ ret->unk8 = FUN_02028048(sav2);
+ ret->player = Sav2_PlayerData_GetProfileAddr(sav2);
+ ret->bag = Sav2_Bag_get(sav2);
+ ret->options = Sav2_PlayerData_GetOptionsAddr(sav2);
+ ret->unk1C = a3;
+ ret->unk4 = a0;
+
+ return ret;
+}
+
+THUMB_FUNC void FUN_02088950(struct UnkSavStruct80* unk, struct UnkStruct_0208890C* unk2)
+{
+ FUN_020373D4(unk, (struct Unk21DBE18*)&UNK_020FD6E4, unk2);
+}
+
+THUMB_FUNC struct UnkStruct_0208890C* FUN_02088960(struct UnkSavStruct80* unk, void* a1, u32 heap_id)
+{
+ struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(unk);
+ struct UnkStruct_0208890C* ret = FUN_0208890C(a1, sav2, heap_id, unk->unk98);
+
+ FUN_02088950(unk, ret);
+
+ return ret;
+}
diff --git a/include/scrcmd.h b/include/scrcmd.h
index 120a0c96..86bb4f51 100644
--- a/include/scrcmd.h
+++ b/include/scrcmd.h
@@ -150,6 +150,9 @@ BOOL ScrCmd_Unk02CC(struct ScriptContext* ctx);
BOOL ScrCmd_GetSealNamePlural(struct ScriptContext* ctx);
BOOL ScrCmd_CapitalizeFirstChar(struct ScriptContext* ctx);
+//scrcmd_8.c
+BOOL ScrCmd_Unk021D(struct ScriptContext* ctx);
+
//scrcmd_11.c
BOOL ScrCmd_Unk017D(struct ScriptContext* ctx);
BOOL ScrCmd_Unk017E(struct ScriptContext* ctx);
@@ -220,6 +223,28 @@ BOOL ScrCmd_Unk01F3(struct ScriptContext* ctx);
//scrcmd_20.c
BOOL ScrCmd_Unk02A6(struct ScriptContext* ctx);
+//scrcmd_flags.c
+BOOL ScrCmd_HasSinnohDex(struct ScriptContext* ctx);
+BOOL ScrCmd_GiveSinnohDex(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0159(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk015A(struct ScriptContext* ctx);
+BOOL ScrCmd_HasBadge(struct ScriptContext* ctx);
+BOOL ScrCmd_GiveBadge(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk015E(struct ScriptContext* ctx);
+BOOL ScrCmd_GetTotalEarnedBadges(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk015F(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0160(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0161(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0162(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0163(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0164(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0165(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0166(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0167(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk01CF(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk01D0(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk01D1(struct ScriptContext* ctx);
+
//scrcmd_items.c
BOOL ScrCmd_GiveItem(struct ScriptContext* ctx);
BOOL ScrCmd_TakeItem(struct ScriptContext* ctx);
diff --git a/include/script.h b/include/script.h
index bb237523..cb41889d 100644
--- a/include/script.h
+++ b/include/script.h
@@ -37,7 +37,9 @@ struct UnkSavStruct80
u32 unk60;
u8 padding5[0x14];
u32 unk78;
- u8 padding6[0x2C];
+ u8 padding6[0x1C];
+ void *unk98;
+ u8 padding7[0xC];
struct UnkStruct_02046444 * unkA8;
};
diff --git a/include/unk_020286F8.h b/include/unk_020286F8.h
index 3d81753a..99ecd982 100644
--- a/include/unk_020286F8.h
+++ b/include/unk_020286F8.h
@@ -21,10 +21,10 @@ void FUN_02028788(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j);
u32 FUN_020287A4(struct UnkSaveStruct_020286F8 * ptr);
u16 * FUN_020287A8(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j);
void FUN_020287C0(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j, struct String * k);
-void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j);
+void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j);
u8 FUN_020287F8(struct UnkSaveStruct_020286F8 * ptr, u32 i);
u8 FUN_02028804(struct UnkSaveStruct_020286F8 * ptr, u32 i);
-void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j);
+void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j);
struct UnkSaveStruct_020286F8 * FUN_0202881C(struct SaveBlock2 * sav2);
BOOL FUN_02028828(struct UnkSaveStruct_020286F8 * ptr, u32 i);
BOOL FUN_02028840(struct UnkSaveStruct_020286F8 * ptr, int i);
diff --git a/include/unk_0208890C.h b/include/unk_0208890C.h
new file mode 100644
index 00000000..9ec040a1
--- /dev/null
+++ b/include/unk_0208890C.h
@@ -0,0 +1,25 @@
+#ifndef POKEDIAMOND_UNK_0208890C_H
+#define POKEDIAMOND_UNK_0208890C_H
+
+struct Bag;
+struct Options;
+struct PlayerData;
+struct SaveBlock2;
+
+struct UnkStruct_0208890C
+{
+ u8 padding[0x4];
+ void* unk4;
+ void* unk8;
+ struct SaveBlock2* sav2;
+ struct PlayerData* player;
+ struct Bag* bag;
+ struct Options* options;
+ void* unk1C;
+};
+
+struct UnkStruct_0208890C* FUN_0208890C(void*, struct SaveBlock2* sav2, u32 heap_id, void*);
+void FUN_02088950(struct UnkSavStruct80*, struct UnkStruct_0208890C*);
+struct UnkStruct_0208890C* FUN_02088960(struct UnkSavStruct80*, void*, u32 heap_id);
+
+#endif