mirror of
https://github.com/pret/pokediamond.git
synced 2026-03-21 17:54:29 -05:00
Merge pull request #568 from bhvNT/scrcmd7
Some checks failed
build / build (push) Has been cancelled
Some checks failed
build / build (push) Has been cancelled
scrcmd_7.c decompiled
This commit is contained in:
commit
31df5f825e
|
|
@ -1,674 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start ScrCmd_Unk00B6
|
||||
ScrCmd_Unk00B6: ; 0x020416A8
|
||||
push {r3-r7, lr}
|
||||
sub sp, #0x18
|
||||
add r5, r0, #0x0
|
||||
add r1, r5, #0x0
|
||||
add r1, #0x80
|
||||
ldr r4, [r1, #0x0]
|
||||
bl ScriptReadHalfword
|
||||
add r5, #0x80
|
||||
add r1, r0, #0x0
|
||||
ldr r0, [r5, #0x0]
|
||||
bl FieldSystem_VarGet
|
||||
add r5, r0, #0x0
|
||||
bne _02041708
|
||||
add r0, r4, #0x0
|
||||
mov r1, #0x18
|
||||
bl FieldSysGetAttrAddr
|
||||
str r0, [sp, #0x14]
|
||||
add r0, r4, #0x0
|
||||
mov r1, #0x19
|
||||
bl FieldSysGetAttrAddr
|
||||
str r0, [sp, #0xc]
|
||||
add r0, r4, #0x0
|
||||
mov r1, #0x1a
|
||||
bl FieldSysGetAttrAddr
|
||||
add r0, r4, #0x0
|
||||
mov r1, #0x1b
|
||||
bl FieldSysGetAttrAddr
|
||||
add r0, r4, #0x0
|
||||
mov r1, #0x1c
|
||||
bl FieldSysGetAttrAddr
|
||||
str r0, [sp, #0x10]
|
||||
add r0, r4, #0x0
|
||||
mov r1, #0x1d
|
||||
bl FieldSysGetAttrAddr
|
||||
add r6, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
mov r1, #0x1e
|
||||
bl FieldSysGetAttrAddr
|
||||
b _02041748
|
||||
_02041708:
|
||||
add r0, r4, #0x0
|
||||
mov r1, #0x1f
|
||||
bl FieldSysGetAttrAddr
|
||||
str r0, [sp, #0x14]
|
||||
add r0, r4, #0x0
|
||||
mov r1, #0x20
|
||||
bl FieldSysGetAttrAddr
|
||||
str r0, [sp, #0xc]
|
||||
add r0, r4, #0x0
|
||||
mov r1, #0x21
|
||||
bl FieldSysGetAttrAddr
|
||||
add r0, r4, #0x0
|
||||
mov r1, #0x22
|
||||
bl FieldSysGetAttrAddr
|
||||
add r0, r4, #0x0
|
||||
mov r1, #0x23
|
||||
bl FieldSysGetAttrAddr
|
||||
str r0, [sp, #0x10]
|
||||
add r0, r4, #0x0
|
||||
mov r1, #0x24
|
||||
bl FieldSysGetAttrAddr
|
||||
add r6, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
mov r1, #0x25
|
||||
bl FieldSysGetAttrAddr
|
||||
_02041748:
|
||||
add r7, r0, #0x0
|
||||
mov r0, #0x0
|
||||
str r0, [sp, #0x0]
|
||||
ldr r0, [sp, #0x10]
|
||||
ldr r2, [sp, #0xc]
|
||||
ldr r0, [r0, #0x0]
|
||||
ldr r3, [sp, #0x14]
|
||||
str r0, [sp, #0x4]
|
||||
str r5, [sp, #0x8]
|
||||
ldr r0, [r6, #0x0]
|
||||
ldr r1, [r4, #0x38]
|
||||
ldr r2, [r2, #0x0]
|
||||
ldr r3, [r3, #0x0]
|
||||
bl sub_0205CA4C
|
||||
str r0, [r7, #0x0]
|
||||
mov r0, #0x0
|
||||
add sp, #0x18
|
||||
pop {r3-r7, pc}
|
||||
.balign 4
|
||||
|
||||
thumb_func_start ScrCmd_Unk00B7
|
||||
ScrCmd_Unk00B7: ; 0x02041770
|
||||
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 FieldSystem_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 GetVarPointer
|
||||
add r4, r0, #0x0
|
||||
mov r0, #0x0
|
||||
strh r0, [r4, #0x0]
|
||||
cmp r6, #0x0
|
||||
bne _020417AE
|
||||
add r5, #0x80
|
||||
ldr r0, [r5, #0x0]
|
||||
mov r1, #0x1e
|
||||
bl FieldSysGetAttrAddr
|
||||
b _020417B8
|
||||
_020417AE:
|
||||
add r5, #0x80
|
||||
ldr r0, [r5, #0x0]
|
||||
mov r1, #0x25
|
||||
bl FieldSysGetAttrAddr
|
||||
_020417B8:
|
||||
add r5, r0, #0x0
|
||||
ldr r0, [r5, #0x0]
|
||||
cmp r0, #0x0
|
||||
bne _020417C6
|
||||
mov r0, #0x1
|
||||
strh r0, [r4, #0x0]
|
||||
pop {r4-r6, pc}
|
||||
_020417C6:
|
||||
bl sub_0205CA64
|
||||
cmp r0, #0x1
|
||||
bne _020417DC
|
||||
ldr r0, [r5, #0x0]
|
||||
bl sub_0205CA78
|
||||
mov r0, #0x0
|
||||
str r0, [r5, #0x0]
|
||||
mov r0, #0x1
|
||||
strh r0, [r4, #0x0]
|
||||
_020417DC:
|
||||
mov r0, #0x1
|
||||
pop {r4-r6, pc}
|
||||
|
||||
thumb_func_start ScrCmd_Unk00B8
|
||||
ScrCmd_Unk00B8: ; 0x020417E0
|
||||
push {r3-r5, lr}
|
||||
add r4, r0, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r1, #0x1c
|
||||
bl FieldSysGetAttrAddr
|
||||
add r5, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r4, #0x80
|
||||
add r1, r0, #0x0
|
||||
ldr r0, [r4, #0x0]
|
||||
bl GetVarPointer
|
||||
ldrh r1, [r5, #0x0]
|
||||
strh r1, [r0, #0x0]
|
||||
mov r0, #0x0
|
||||
pop {r3-r5, pc}
|
||||
|
||||
thumb_func_start ScrCmd_Unk00B9
|
||||
ScrCmd_Unk00B9: ; 0x02041808
|
||||
push {r3-r7, lr}
|
||||
add r5, r0, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r1, #0x1b
|
||||
bl FieldSysGetAttrAddr
|
||||
add r4, r0, #0x0
|
||||
add r0, r5, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r1, #0x22
|
||||
bl FieldSysGetAttrAddr
|
||||
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 FieldSystem_VarGet
|
||||
add r7, r0, #0x0
|
||||
add r0, r5, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r5, #0x80
|
||||
add r1, r0, #0x0
|
||||
ldr r0, [r5, #0x0]
|
||||
bl GetVarPointer
|
||||
cmp r7, #0x0
|
||||
bne _02041852
|
||||
ldrh r1, [r4, #0x0]
|
||||
b _02041854
|
||||
_02041852:
|
||||
ldrh r1, [r6, #0x0]
|
||||
_02041854:
|
||||
strh r1, [r0, #0x0]
|
||||
mov r0, #0x0
|
||||
pop {r3-r7, pc}
|
||||
.balign 4
|
||||
|
||||
thumb_func_start ScrCmd_Unk00E4
|
||||
ScrCmd_Unk00E4: ; 0x0204185C
|
||||
push {r3-r5, lr}
|
||||
add r5, r0, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r1, #0x8
|
||||
bl FieldSysGetAttrAddr
|
||||
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
|
||||
ldrh r0, [r4, #0x0]
|
||||
bl sub_020395F4
|
||||
strh r0, [r5, #0x0]
|
||||
mov r0, #0x0
|
||||
pop {r3-r5, pc}
|
||||
.balign 4
|
||||
|
||||
thumb_func_start ScrCmd_Unk00E5
|
||||
ScrCmd_Unk00E5: ; 0x0204188C
|
||||
push {r3-r7, lr}
|
||||
sub sp, #0x10
|
||||
add r5, r0, #0x0
|
||||
add r0, #0x80
|
||||
ldr r4, [r0, #0x0]
|
||||
mov r1, #0x8
|
||||
add r0, r4, #0x0
|
||||
bl FieldSysGetAttrAddr
|
||||
add r0, r4, #0x0
|
||||
mov r1, #0x17
|
||||
bl FieldSysGetAttrAddr
|
||||
add r7, r0, #0x0
|
||||
add r0, r5, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0x0
|
||||
add r0, r5, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
bl FieldSystem_VarGet
|
||||
str r0, [sp, #0xc]
|
||||
add r0, r5, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0x0
|
||||
add r0, r5, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
bl FieldSystem_VarGet
|
||||
str r0, [sp, #0x8]
|
||||
add r0, r5, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r6, #0x0
|
||||
ldr r0, [r0, #0xc]
|
||||
bl Save_VarsFlags_Get
|
||||
bl Save_VarsFlags_CheckHaveFollower
|
||||
cmp r0, #0x1
|
||||
bne _020418F2
|
||||
ldr r0, [r4, #0xc]
|
||||
bl Save_VarsFlags_Get
|
||||
bl sub_0205F368
|
||||
add r6, r0, #0x0
|
||||
_020418F2:
|
||||
mov r0, #0xb
|
||||
str r0, [sp, #0x0]
|
||||
str r7, [sp, #0x4]
|
||||
ldr r0, [r5, #0x74]
|
||||
ldr r1, [sp, #0xc]
|
||||
ldr r2, [sp, #0x8]
|
||||
add r3, r6, #0x0
|
||||
bl SetupAndStartTrainerBattle
|
||||
mov r0, #0x1
|
||||
add sp, #0x10
|
||||
pop {r3-r7, pc}
|
||||
.balign 4
|
||||
|
||||
thumb_func_start ScrCmd_Unk02A0
|
||||
ScrCmd_Unk02A0: ; 0x0204190C
|
||||
push {r3-r7, lr}
|
||||
sub sp, #0x8
|
||||
add r5, r0, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r1, #0x17
|
||||
bl FieldSysGetAttrAddr
|
||||
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 FieldSystem_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 FieldSystem_VarGet
|
||||
add r7, r0, #0x0
|
||||
add r0, r5, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0x0
|
||||
add r0, r5, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
bl FieldSystem_VarGet
|
||||
add r2, r0, #0x0
|
||||
mov r0, #0xb
|
||||
str r0, [sp, #0x0]
|
||||
str r4, [sp, #0x4]
|
||||
ldr r0, [r5, #0x74]
|
||||
add r1, r7, #0x0
|
||||
add r3, r6, #0x0
|
||||
bl SetupAndStartTrainerBattle
|
||||
mov r0, #0x1
|
||||
add sp, #0x8
|
||||
pop {r3-r7, pc}
|
||||
|
||||
thumb_func_start ScrCmd_Unk00E7
|
||||
ScrCmd_Unk00E7: ; 0x02041970
|
||||
push {r3-r7, lr}
|
||||
add r5, r0, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r1, #0x8
|
||||
bl FieldSysGetAttrAddr
|
||||
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 r7, 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
|
||||
add r0, r5, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r5, #0x80
|
||||
add r1, r0, #0x0
|
||||
ldr r0, [r5, #0x0]
|
||||
bl GetVarPointer
|
||||
add r5, r0, #0x0
|
||||
ldrh r0, [r4, #0x0]
|
||||
bl sub_020395F4
|
||||
bl TrainerIsDoubleBattle
|
||||
lsl r0, r0, #0x10
|
||||
lsr r0, r0, #0x10
|
||||
bne _020419D2
|
||||
mov r0, #0x0
|
||||
mov r1, #0x2
|
||||
add r2, r0, #0x0
|
||||
b _020419EC
|
||||
_020419D2:
|
||||
ldrh r0, [r4, #0x0]
|
||||
bl sub_02039618
|
||||
lsl r0, r0, #0x10
|
||||
lsr r0, r0, #0x10
|
||||
bne _020419E6
|
||||
mov r0, #0x3
|
||||
mov r1, #0x5
|
||||
mov r2, #0x6
|
||||
b _020419EC
|
||||
_020419E6:
|
||||
mov r0, #0x7
|
||||
mov r1, #0x9
|
||||
mov r2, #0xa
|
||||
_020419EC:
|
||||
strh r0, [r7, #0x0]
|
||||
strh r1, [r6, #0x0]
|
||||
strh r2, [r5, #0x0]
|
||||
mov r0, #0x0
|
||||
pop {r3-r7, pc}
|
||||
.balign 4
|
||||
|
||||
thumb_func_start ScrCmd_Unk00E8
|
||||
ScrCmd_Unk00E8: ; 0x020419F8
|
||||
push {r3-r7, lr}
|
||||
add r5, r0, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r1, #0x8
|
||||
bl FieldSysGetAttrAddr
|
||||
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 r7, 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
|
||||
add r0, r5, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r5, #0x80
|
||||
add r1, r0, #0x0
|
||||
ldr r0, [r5, #0x0]
|
||||
bl GetVarPointer
|
||||
add r5, r0, #0x0
|
||||
ldrh r0, [r4, #0x0]
|
||||
bl sub_020395F4
|
||||
bl TrainerIsDoubleBattle
|
||||
lsl r0, r0, #0x10
|
||||
lsr r0, r0, #0x10
|
||||
bne _02041A5A
|
||||
mov r1, #0x0
|
||||
mov r0, #0x11
|
||||
add r2, r1, #0x0
|
||||
b _02041A74
|
||||
_02041A5A:
|
||||
ldrh r0, [r4, #0x0]
|
||||
bl sub_02039618
|
||||
lsl r0, r0, #0x10
|
||||
lsr r0, r0, #0x10
|
||||
bne _02041A6E
|
||||
mov r0, #0x12
|
||||
mov r1, #0x0
|
||||
mov r2, #0x6
|
||||
b _02041A74
|
||||
_02041A6E:
|
||||
mov r0, #0x13
|
||||
mov r1, #0x0
|
||||
mov r2, #0xa
|
||||
_02041A74:
|
||||
strh r0, [r7, #0x0]
|
||||
strh r1, [r6, #0x0]
|
||||
strh r2, [r5, #0x0]
|
||||
mov r0, #0x0
|
||||
pop {r3-r7, pc}
|
||||
.balign 4
|
||||
|
||||
thumb_func_start ScrCmd_Unk00E9
|
||||
ScrCmd_Unk00E9: ; 0x02041A80
|
||||
push {r3-r5, lr}
|
||||
add r5, r0, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r1, #0x8
|
||||
bl FieldSysGetAttrAddr
|
||||
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
|
||||
ldrh r0, [r4, #0x0]
|
||||
bl sub_020395F4
|
||||
bl TrainerIsDoubleBattle
|
||||
strh r0, [r5, #0x0]
|
||||
mov r0, #0x0
|
||||
pop {r3-r5, pc}
|
||||
.balign 4
|
||||
|
||||
thumb_func_start ScrCmd_Unk00EA
|
||||
ScrCmd_Unk00EA: ; 0x02041AB4
|
||||
push {r4, lr}
|
||||
add r4, r0, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r4, #0x80
|
||||
add r1, r0, #0x0
|
||||
ldr r0, [r4, #0x0]
|
||||
bl FieldSystem_VarGet
|
||||
bl sub_0204AD0C
|
||||
bl sub_02004724
|
||||
mov r0, #0x1
|
||||
pop {r4, pc}
|
||||
.balign 4
|
||||
|
||||
thumb_func_start ScrCmd_Unk00EB
|
||||
ScrCmd_Unk00EB: ; 0x02041AD4
|
||||
push {r3, lr}
|
||||
ldr r0, [r0, #0x74]
|
||||
bl CallTask_Blackout
|
||||
mov r0, #0x1
|
||||
pop {r3, pc}
|
||||
|
||||
thumb_func_start ScrCmd_Unk00EC
|
||||
ScrCmd_Unk00EC: ; 0x02041AE0
|
||||
push {r3-r5, lr}
|
||||
add r5, r0, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r1, #0x17
|
||||
bl FieldSysGetAttrAddr
|
||||
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
|
||||
ldr r0, [r4, #0x0]
|
||||
bl IsBattleResultWin
|
||||
strh r0, [r5, #0x0]
|
||||
mov r0, #0x1
|
||||
pop {r3-r5, pc}
|
||||
.balign 4
|
||||
|
||||
thumb_func_start ScrCmd_Unk00ED
|
||||
ScrCmd_Unk00ED: ; 0x02041B10
|
||||
push {r3-r5, lr}
|
||||
add r5, r0, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r1, #0x17
|
||||
bl FieldSysGetAttrAddr
|
||||
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
|
||||
ldr r0, [r4, #0x0]
|
||||
bl sub_020480C8
|
||||
strh r0, [r5, #0x0]
|
||||
mov r0, #0x1
|
||||
pop {r3-r5, pc}
|
||||
.balign 4
|
||||
|
||||
thumb_func_start ScrCmd_Unk02BC
|
||||
ScrCmd_Unk02BC: ; 0x02041B40
|
||||
push {r3-r5, lr}
|
||||
add r5, r0, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r1, #0x17
|
||||
bl FieldSysGetAttrAddr
|
||||
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
|
||||
ldr r0, [r4, #0x0]
|
||||
bl sub_020480D8
|
||||
strh r0, [r5, #0x0]
|
||||
mov r0, #0x1
|
||||
pop {r3-r5, pc}
|
||||
.balign 4
|
||||
|
||||
thumb_func_start ScrCmd_Unk00EE
|
||||
ScrCmd_Unk00EE: ; 0x02041B70
|
||||
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 SaveArray_Party_Get
|
||||
bl HasEnoughAlivePokemonForDoubleBattle
|
||||
strh r0, [r4, #0x0]
|
||||
mov r0, #0x0
|
||||
pop {r3-r5, pc}
|
||||
.balign 4
|
||||
|
||||
thumb_func_start ScrCmd_Unk00EF
|
||||
ScrCmd_Unk00EF: ; 0x02041B9C
|
||||
push {r4, lr}
|
||||
sub sp, #0x8
|
||||
add r4, r0, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r1, #0x17
|
||||
bl FieldSysGetAttrAddr
|
||||
mov r1, #0xb
|
||||
str r1, [sp, #0x0]
|
||||
str r0, [sp, #0x4]
|
||||
mov r2, #0x0
|
||||
ldr r0, [r4, #0x74]
|
||||
mov r1, #0x1
|
||||
add r3, r2, #0x0
|
||||
bl SetupAndStartTrainerBattle
|
||||
mov r0, #0x1
|
||||
add sp, #0x8
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start ScrCmd_Unk00F0
|
||||
ScrCmd_Unk00F0: ; 0x02041BC4
|
||||
push {r3-r5, lr}
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r1, #0xa
|
||||
bl FieldSysGetAttrAddr
|
||||
add r5, r0, #0x0
|
||||
ldr r0, [r5, #0x0]
|
||||
bl MapObject_GetFieldSystem
|
||||
add r4, r0, #0x0
|
||||
ldr r0, [r5, #0x0]
|
||||
bl MapObject_GetID
|
||||
add r1, r0, #0x0
|
||||
lsl r1, r1, #0x10
|
||||
add r0, r4, #0x0
|
||||
lsr r1, r1, #0x10
|
||||
bl TrainerFieldSystem_FlagSet
|
||||
mov r0, #0x0
|
||||
pop {r3-r5, pc}
|
||||
|
||||
thumb_func_start ScrCmd_Unk00F1
|
||||
ScrCmd_Unk00F1: ; 0x02041BF0
|
||||
push {r3-r7, lr}
|
||||
add r6, r0, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r1, #0xa
|
||||
bl FieldSysGetAttrAddr
|
||||
add r5, r0, #0x0
|
||||
add r0, r6, #0x0
|
||||
bl ScriptReadWord
|
||||
add r4, r0, #0x0
|
||||
ldr r0, [r5, #0x0]
|
||||
bl MapObject_GetFieldSystem
|
||||
add r7, r0, #0x0
|
||||
ldr r0, [r5, #0x0]
|
||||
bl MapObject_GetID
|
||||
add r1, r0, #0x0
|
||||
lsl r1, r1, #0x10
|
||||
add r0, r7, #0x0
|
||||
lsr r1, r1, #0x10
|
||||
bl TrainerFieldSystem_FlagCheck
|
||||
cmp r0, #0x1
|
||||
bne _02041C34
|
||||
ldr r1, [r6, #0x8]
|
||||
add r0, r6, #0x0
|
||||
add r1, r1, r4
|
||||
bl ScriptJump
|
||||
mov r0, #0x1
|
||||
pop {r3-r7, pc}
|
||||
_02041C34:
|
||||
mov r0, #0x0
|
||||
pop {r3-r7, pc}
|
||||
299
arm9/src/scrcmd_7.c
Normal file
299
arm9/src/scrcmd_7.c
Normal file
|
|
@ -0,0 +1,299 @@
|
|||
#include "global.h"
|
||||
|
||||
#include "blackout.h"
|
||||
#include "encounter.h"
|
||||
#include "scrcmd.h"
|
||||
#include "script_pokemon_util.h"
|
||||
#include "unk_0205EC84.h"
|
||||
|
||||
extern void *FieldSysGetAttrAddr(FieldSystem *fieldSystem, u8 idx);
|
||||
extern SaveFashionData *Save_FashionData_Get(SaveData *save);
|
||||
extern void TrainerFieldSystem_FlagSet(FieldSystem *fieldSystem, u16 flag);
|
||||
extern u8 TrainerFieldSystem_FlagCheck(FieldSystem *fieldSystem, u16 flag);
|
||||
|
||||
extern void *sub_0205CA4C(void *event, PlayerAvatar *playerAvatar, void *param3, void *param4, int param5, void *encounterType, u16 param7);
|
||||
extern int sub_0205CA64(void);
|
||||
extern void sub_0205CA78(void *param1);
|
||||
extern u16 sub_020395F4(u16 scriptNumber);
|
||||
extern int sub_0205F368(SaveVarsFlags *saveVarFlags);
|
||||
extern BOOL TrainerIsDoubleBattle(u16 param1);
|
||||
extern BOOL sub_02039618(u16 scriptNumber);
|
||||
extern BOOL IsBattleResultWin(u32 winFlag);
|
||||
extern int sub_0204AD0C(u16 param1);
|
||||
extern void sub_02004724(int param1);
|
||||
extern int sub_020480C8(int param1);
|
||||
extern int sub_020480D8(int param1);
|
||||
|
||||
BOOL ScrCmd_Unk00B6(ScriptContext *ctx) {
|
||||
FieldSystem *field = ctx->fieldSystem;
|
||||
void **trainer0;
|
||||
void **trainer8;
|
||||
void **trainerId;
|
||||
void **trainerEncounterType;
|
||||
void **trainer4;
|
||||
void **trainer18;
|
||||
u16 var = ScriptGetVar(ctx);
|
||||
void **trainerEvent;
|
||||
|
||||
if (var == 0) {
|
||||
trainer0 = FieldSysGetAttrAddr(field, SCRIPTENV_ENGAGED_TRAINER_0_FIELD_00);
|
||||
trainer4 = FieldSysGetAttrAddr(field, SCRIPTENV_ENGAGED_TRAINER_0_FIELD_04);
|
||||
trainer8 = FieldSysGetAttrAddr(field, SCRIPTENV_ENGAGED_TRAINER_0_FIELD_08);
|
||||
trainerId = FieldSysGetAttrAddr(field, SCRIPTENV_ENGAGED_TRAINER_0_ID);
|
||||
trainerEncounterType = FieldSysGetAttrAddr(field, SCRIPTENV_ENGAGED_TRAINER_0_ENCOUNTER_TYPE);
|
||||
trainerEvent = FieldSysGetAttrAddr(field, SCRIPTENV_ENGAGED_TRAINER_0_EVENT);
|
||||
trainer18 = FieldSysGetAttrAddr(field, SCRIPTENV_ENGAGED_TRAINER_0_FIELD_18);
|
||||
} else {
|
||||
trainer0 = FieldSysGetAttrAddr(field, SCRIPTENV_ENGAGED_TRAINER_1_FIELD_00);
|
||||
trainer4 = FieldSysGetAttrAddr(field, SCRIPTENV_ENGAGED_TRAINER_1_FIELD_04);
|
||||
trainer8 = FieldSysGetAttrAddr(field, SCRIPTENV_ENGAGED_TRAINER_1_FIELD_08);
|
||||
trainerId = FieldSysGetAttrAddr(field, SCRIPTENV_ENGAGED_TRAINER_1_ID);
|
||||
trainerEncounterType = FieldSysGetAttrAddr(field, SCRIPTENV_ENGAGED_TRAINER_1_ENCOUNTER_TYPE);
|
||||
trainerEvent = FieldSysGetAttrAddr(field, SCRIPTENV_ENGAGED_TRAINER_1_EVENT);
|
||||
trainer18 = FieldSysGetAttrAddr(field, SCRIPTENV_ENGAGED_TRAINER_1_FIELD_18);
|
||||
}
|
||||
|
||||
*trainer18 = sub_0205CA4C(*trainerEvent, field->playerAvatar, *trainer4, *trainer0, 0, *trainerEncounterType, var);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk00B7(ScriptContext *ctx) {
|
||||
u16 var1 = ScriptGetVar(ctx);
|
||||
u16 *var2 = ScriptGetVarPointer(ctx);
|
||||
void **trainer18;
|
||||
|
||||
*var2 = 0;
|
||||
|
||||
trainer18 = var1 == 0 ? FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_ENGAGED_TRAINER_0_FIELD_18) : FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_ENGAGED_TRAINER_1_FIELD_18);
|
||||
|
||||
if (*trainer18 == NULL) {
|
||||
*var2 = 1;
|
||||
|
||||
return TRUE;
|
||||
} else if (sub_0205CA64() == 1) {
|
||||
sub_0205CA78(*trainer18);
|
||||
*trainer18 = NULL;
|
||||
*var2 = 1;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk00B8(ScriptContext *ctx) {
|
||||
u16 *trainerEncounterType = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_ENGAGED_TRAINER_0_ENCOUNTER_TYPE);
|
||||
u16 *encounterTypePtr = ScriptGetVarPointer(ctx);
|
||||
|
||||
*encounterTypePtr = *trainerEncounterType;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk00B9(ScriptContext *ctx) {
|
||||
u16 *trainer0Id = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_ENGAGED_TRAINER_0_ID);
|
||||
u16 *trainer1Id = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_ENGAGED_TRAINER_1_ID);
|
||||
u16 var1 = ScriptGetVar(ctx);
|
||||
u16 *trainerId = ScriptGetVarPointer(ctx);
|
||||
u16 id = var1 == 0 ? *trainer0Id : *trainer1Id;
|
||||
|
||||
*trainerId = id;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk00E4(ScriptContext *ctx) {
|
||||
u16 *scriptNumber = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_ACTIVE_SCRIPT_NUMBER);
|
||||
u16 *var = ScriptGetVarPointer(ctx);
|
||||
|
||||
*var = sub_020395F4(*scriptNumber);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk00E5(ScriptContext *ctx) {
|
||||
FieldSystem *field = ctx->fieldSystem;
|
||||
u16 *scriptNumber = FieldSysGetAttrAddr(field, SCRIPTENV_ACTIVE_SCRIPT_NUMBER);
|
||||
u32 *winFlag = FieldSysGetAttrAddr(field, SCRIPTENV_BATTLE_WIN_FLAG);
|
||||
u16 opponentTrainer1 = ScriptGetVar(ctx);
|
||||
u16 opponentTrainer2 = ScriptGetVar(ctx);
|
||||
u32 followerTrainerNum = 0;
|
||||
|
||||
if (Save_VarsFlags_CheckHaveFollower(Save_VarsFlags_Get(ctx->fieldSystem->saveData)) == TRUE) {
|
||||
followerTrainerNum = sub_0205F368(Save_VarsFlags_Get(field->saveData));
|
||||
}
|
||||
|
||||
SetupAndStartTrainerBattle(ctx->taskManager, opponentTrainer1, opponentTrainer2, followerTrainerNum, HEAP_ID_FIELD, winFlag);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk02A0(ScriptContext *ctx) {
|
||||
FieldSystem *field = ctx->fieldSystem;
|
||||
u32 *winFlag = FieldSysGetAttrAddr(field, SCRIPTENV_BATTLE_WIN_FLAG);
|
||||
u16 followerTrainerNum = ScriptGetVar(ctx);
|
||||
u16 opponentTrainer1 = ScriptGetVar(ctx);
|
||||
u16 opponentTrainer2 = ScriptGetVar(ctx);
|
||||
|
||||
SetupAndStartTrainerBattle(ctx->taskManager, opponentTrainer1, opponentTrainer2, followerTrainerNum, HEAP_ID_FIELD, winFlag);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk00E7(ScriptContext *ctx) {
|
||||
FieldSystem *field = ctx->fieldSystem;
|
||||
u16 *scriptNumber = FieldSysGetAttrAddr(field, SCRIPTENV_ACTIVE_SCRIPT_NUMBER);
|
||||
u16 *var1 = ScriptGetVarPointer(ctx);
|
||||
u16 *var2 = ScriptGetVarPointer(ctx);
|
||||
u16 *var3 = ScriptGetVarPointer(ctx);
|
||||
int var4;
|
||||
int var5;
|
||||
int var6;
|
||||
|
||||
if ((u16)TrainerIsDoubleBattle(sub_020395F4(*scriptNumber)) == FALSE) {
|
||||
var4 = 0;
|
||||
var5 = 2;
|
||||
var6 = 0;
|
||||
} else if ((u16)sub_02039618(*scriptNumber) == FALSE) {
|
||||
var4 = 3;
|
||||
var5 = 5;
|
||||
var6 = 6;
|
||||
} else {
|
||||
var4 = 7;
|
||||
var5 = 9;
|
||||
var6 = 10;
|
||||
}
|
||||
|
||||
*var1 = var4;
|
||||
*var2 = var5;
|
||||
*var3 = var6;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk00E8(ScriptContext *ctx) {
|
||||
FieldSystem *field = ctx->fieldSystem;
|
||||
u16 *scriptNumber = FieldSysGetAttrAddr(field, SCRIPTENV_ACTIVE_SCRIPT_NUMBER);
|
||||
u16 *var1 = ScriptGetVarPointer(ctx);
|
||||
u16 *var2 = ScriptGetVarPointer(ctx);
|
||||
u16 *var3 = ScriptGetVarPointer(ctx);
|
||||
int var4;
|
||||
int var5;
|
||||
int var6;
|
||||
|
||||
if ((u16)TrainerIsDoubleBattle(sub_020395F4(*scriptNumber)) == FALSE) {
|
||||
var4 = 17;
|
||||
var5 = 0;
|
||||
var6 = 0;
|
||||
} else if ((u16)sub_02039618(*scriptNumber) == FALSE) {
|
||||
var4 = 18;
|
||||
var5 = 0;
|
||||
var6 = 6;
|
||||
} else {
|
||||
var4 = 19;
|
||||
var5 = 0;
|
||||
var6 = 10;
|
||||
}
|
||||
|
||||
*var1 = var4;
|
||||
*var2 = var5;
|
||||
*var3 = var6;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk00E9(ScriptContext *ctx) {
|
||||
FieldSystem *field = ctx->fieldSystem;
|
||||
u16 *scriptNumber = FieldSysGetAttrAddr(field, SCRIPTENV_ACTIVE_SCRIPT_NUMBER);
|
||||
u16 *var1 = ScriptGetVarPointer(ctx);
|
||||
|
||||
*var1 = TrainerIsDoubleBattle(sub_020395F4(*scriptNumber));
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk00EA(ScriptContext *ctx) {
|
||||
sub_02004724(sub_0204AD0C(ScriptGetVar(ctx)));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk00EB(ScriptContext *ctx) {
|
||||
CallTask_Blackout(ctx->taskManager);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk00EC(ScriptContext *ctx) {
|
||||
FieldSystem *field = ctx->fieldSystem;
|
||||
u32 *winFlag = FieldSysGetAttrAddr(field, SCRIPTENV_BATTLE_WIN_FLAG);
|
||||
u16 *var1 = ScriptGetVarPointer(ctx);
|
||||
|
||||
*var1 = IsBattleResultWin(*winFlag);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk00ED(ScriptContext *ctx) {
|
||||
FieldSystem *field = ctx->fieldSystem;
|
||||
u32 *var1 = FieldSysGetAttrAddr(field, SCRIPTENV_BATTLE_WIN_FLAG);
|
||||
u16 *var2 = ScriptGetVarPointer(ctx);
|
||||
|
||||
*var2 = sub_020480C8(*var1);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk02BC(ScriptContext *ctx) {
|
||||
FieldSystem *field = ctx->fieldSystem;
|
||||
u32 *var1 = FieldSysGetAttrAddr(field, SCRIPTENV_BATTLE_WIN_FLAG);
|
||||
u16 *var2 = ScriptGetVarPointer(ctx);
|
||||
|
||||
*var2 = sub_020480D8(*var1);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk00EE(ScriptContext *ctx) {
|
||||
FieldSystem *field = ctx->fieldSystem;
|
||||
u16 *var2 = ScriptGetVarPointer(ctx);
|
||||
|
||||
*var2 = HasEnoughAlivePokemonForDoubleBattle(SaveArray_Party_Get(ctx->fieldSystem->saveData));
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk00EF(ScriptContext *ctx) {
|
||||
FieldSystem *field = ctx->fieldSystem;
|
||||
u32 *winFlag = FieldSysGetAttrAddr(field, SCRIPTENV_BATTLE_WIN_FLAG);
|
||||
|
||||
SetupAndStartTrainerBattle(ctx->taskManager, 1, 0, 0, HEAP_ID_FIELD, winFlag);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk00F0(ScriptContext *ctx) {
|
||||
LocalMapObject **lastInteracted = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_LAST_INTERACTED);
|
||||
FieldSystem *field = MapObject_GetFieldSystem(*lastInteracted);
|
||||
|
||||
TrainerFieldSystem_FlagSet(field, MapObject_GetID(*lastInteracted));
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_Unk00F1(ScriptContext *ctx) {
|
||||
LocalMapObject **lastInteracted = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_LAST_INTERACTED);
|
||||
u32 ptr = ScriptReadWord(ctx);
|
||||
FieldSystem *field = MapObject_GetFieldSystem(*lastInteracted);
|
||||
|
||||
if (TrainerFieldSystem_FlagCheck(field, MapObject_GetID(*lastInteracted)) == TRUE) {
|
||||
u8 *scriptPtr = (u8 *)ctx->scriptPtr;
|
||||
|
||||
scriptPtr += ptr;
|
||||
|
||||
ScriptJump(ctx, scriptPtr);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -584,6 +584,27 @@ BOOL ScrCmd_SaveChatotCry(struct ScriptContext *ctx);
|
|||
BOOL ScrCmd_Unk005D(struct ScriptContext *ctx);
|
||||
BOOL ScrCmd_SetVolume(struct ScriptContext *ctx);
|
||||
|
||||
// scrcmd_7.c
|
||||
BOOL ScrCmd_Unk00B6(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk00B7(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk00B8(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk00B9(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk00E4(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk00E5(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk02A0(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk00E7(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk00E8(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk00E9(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk00EA(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk00EB(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk00EC(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk00ED(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk02BC(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk00EE(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk00EF(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk00F0(ScriptContext *ctx);
|
||||
BOOL ScrCmd_Unk00F1(ScriptContext *ctx);
|
||||
|
||||
// scrcmd_union.c
|
||||
BOOL ScrCmd_UnionGroup(struct ScriptContext *ctx);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user