Merge branch 'master' into unk_0202E29C

This commit is contained in:
Rémi Calixte
2021-05-08 12:29:17 +02:00
15 changed files with 528 additions and 825 deletions
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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
-465
View File
@@ -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
-234
View File
@@ -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
+21 -21
View File
@@ -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
-73
View File
@@ -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
+21 -21
View File
@@ -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
+87
View File
@@ -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;
}
+284
View File
@@ -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;
}
+4 -5
View File
@@ -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)
+53
View File
@@ -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;
}
+25
View File
@@ -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);
+3 -1
View File
@@ -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;
};
+2 -2
View File
@@ -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);
+25
View File
@@ -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