pokediamond/arm9/asm/unk_02046030.s

293 lines
5.8 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.extern gSystem
.text
thumb_func_start CallTask_UseSunyshoreBinoculars
CallTask_UseSunyshoreBinoculars: ; 0x02046030
push {r4, lr}
add r4, r0, #0x0
mov r0, #0xb
mov r1, #0xc
bl Heap_AllocAtEnd
add r2, r0, #0x0
mov r0, #0x0
strb r0, [r2, #0x0]
strb r0, [r2, #0x1]
strb r0, [r2, #0x2]
strb r0, [r2, #0x3]
strb r0, [r2, #0x4]
strb r0, [r2, #0x5]
strb r0, [r2, #0x6]
strb r0, [r2, #0x7]
strb r0, [r2, #0x8]
strb r0, [r2, #0x9]
strb r0, [r2, #0xa]
strb r0, [r2, #0xb]
ldr r0, [r4, #0x10]
ldr r1, _02046064 ; =sub_02046068
bl TaskManager_Call
pop {r4, pc}
nop
_02046064: .word sub_02046068
thumb_func_start sub_02046068
sub_02046068: ; 0x02046068
push {r4-r6, lr}
sub sp, #0x38
add r6, r0, #0x0
bl TaskManager_GetFieldSystem
add r5, r0, #0x0
add r0, r6, #0x0
bl TaskManager_GetEnvironment
add r4, r0, #0x0
ldr r0, [r5, #0xc]
bl Save_VarsFlags_Get
ldrb r1, [r4, #0x8]
cmp r1, #0xb
bls _0204608A
b _020461F8
_0204608A:
add r2, r1, r1
add r2, pc
ldrh r2, [r2, #0x6]
lsl r2, r2, #0x10
asr r2, r2, #0x10
add pc, r2
_02046096: ; jump table (using 16-bit offset)
.short _020460AE - _02046096 - 2; case 0
.short _020460D4 - _02046096 - 2; case 1
.short _020460E2 - _02046096 - 2; case 2
.short _0204610A - _02046096 - 2; case 3
.short _02046118 - _02046096 - 2; case 4
.short _02046150 - _02046096 - 2; case 5
.short _02046160 - _02046096 - 2; case 6
.short _0204618A - _02046096 - 2; case 7
.short _02046198 - _02046096 - 2; case 8
.short _020461C0 - _02046096 - 2; case 9
.short _020461CE - _02046096 - 2; case 10
.short _020461E4 - _02046096 - 2; case 11
_020460AE:
ldr r0, [r5, #0x38]
bl PlayerAvatar_GetXCoord
strh r0, [r4, #0x4]
ldr r0, [r5, #0x38]
bl PlayerAvatar_GetZCoord
strh r0, [r4, #0x6]
add r0, r5, #0x0
mov r1, #0x1
bl sub_0206367C
add r0, r6, #0x0
bl CallTask_FadeToBlack
ldrb r0, [r4, #0x8]
add r0, r0, #0x1
strb r0, [r4, #0x8]
b _020461F8
_020460D4:
add r0, r6, #0x0
bl sub_0204AF3C
ldrb r0, [r4, #0x8]
add r0, r0, #0x1
strb r0, [r4, #0x8]
b _020461F8
_020460E2:
bl sub_0205F1C4
mov r0, #0xac
str r0, [sp, #0x24]
sub r0, #0xad
str r0, [sp, #0x28]
ldr r0, _02046200 ; =0x0000034F
add r1, sp, #0x24
str r0, [sp, #0x2c]
ldr r0, _02046204 ; =0x00000231
str r0, [sp, #0x30]
mov r0, #0x1
str r0, [sp, #0x34]
add r0, r6, #0x0
bl sub_02049160
ldrb r0, [r4, #0x8]
add r0, r0, #0x1
strb r0, [r4, #0x8]
b _020461F8
_0204610A:
add r0, r6, #0x0
bl CallTask_RestoreOverworld
ldrb r0, [r4, #0x8]
add r0, r0, #0x1
strb r0, [r4, #0x8]
b _020461F8
_02046118:
ldr r0, [r5, #0x38]
mov r1, #0x1
bl sub_02046214
add r0, r5, #0x0
bl sub_02046224
mov r0, #0x0
str r0, [sp, #0x0]
mov r0, #0x6
str r0, [sp, #0x4]
mov r0, #0x1
str r0, [sp, #0x8]
mov r0, #0xb
str r0, [sp, #0xc]
ldr r3, _02046208 ; =0x0000FFFF
add r0, r6, #0x0
mov r1, #0x3
mov r2, #0x11
bl sub_0204C1B4
ldr r0, _0204620C ; =0x00000679
bl PlaySE
ldrb r0, [r4, #0x8]
add r0, r0, #0x1
strb r0, [r4, #0x8]
b _020461F8
_02046150:
ldr r0, _02046210 ; =gSystem
ldr r2, [r0, #0x48]
mov r0, #0x3
tst r0, r2
beq _020461F8
add r0, r1, #0x1
strb r0, [r4, #0x8]
b _020461F8
_02046160:
mov r0, #0x0
str r0, [sp, #0x0]
mov r0, #0x6
str r0, [sp, #0x4]
mov r0, #0x1
str r0, [sp, #0x8]
mov r0, #0xb
str r0, [sp, #0xc]
ldr r3, _02046208 ; =0x0000FFFF
add r0, r6, #0x0
mov r1, #0x3
mov r2, #0x10
bl sub_0204C1B4
ldr r0, _0204620C ; =0x00000679
bl PlaySE
ldrb r0, [r4, #0x8]
add r0, r0, #0x1
strb r0, [r4, #0x8]
b _020461F8
_0204618A:
add r0, r6, #0x0
bl sub_0204AF3C
ldrb r0, [r4, #0x8]
add r0, r0, #0x1
strb r0, [r4, #0x8]
b _020461F8
_02046198:
bl sub_0205F1D4
ldrh r2, [r4, #0x6]
ldrh r1, [r4, #0x4]
mov r0, #0xa4
str r0, [sp, #0x10]
sub r0, #0xa5
str r0, [sp, #0x14]
mov r0, #0x0
str r1, [sp, #0x18]
str r0, [sp, #0x20]
str r2, [sp, #0x1c]
add r0, r6, #0x0
add r1, sp, #0x10
bl sub_02049160
ldrb r0, [r4, #0x8]
add r0, r0, #0x1
strb r0, [r4, #0x8]
b _020461F8
_020461C0:
add r0, r6, #0x0
bl CallTask_RestoreOverworld
ldrb r0, [r4, #0x8]
add r0, r0, #0x1
strb r0, [r4, #0x8]
b _020461F8
_020461CE:
ldr r0, [r5, #0x38]
mov r1, #0x0
bl sub_02046214
add r0, r6, #0x0
bl CallTask_FadeFromBlack
ldrb r0, [r4, #0x8]
add r0, r0, #0x1
strb r0, [r4, #0x8]
b _020461F8
_020461E4:
add r0, r4, #0x0
bl Heap_Free
add r0, r5, #0x0
mov r1, #0x0
bl sub_0206367C
add sp, #0x38
mov r0, #0x1
pop {r4-r6, pc}
_020461F8:
mov r0, #0x0
add sp, #0x38
pop {r4-r6, pc}
nop
_02046200: .word 0x0000034F
_02046204: .word 0x00000231
_02046208: .word 0x0000FFFF
_0204620C: .word 0x00000679
_02046210: .word gSystem
thumb_func_start sub_02046214
sub_02046214: ; 0x02046214
push {r4, lr}
add r4, r1, #0x0
bl PlayerAvatar_GetMapObject
add r1, r4, #0x0
bl MapObject_SetVisible
pop {r4, pc}
thumb_func_start sub_02046224
sub_02046224: ; 0x02046224
push {r3-r4, lr}
sub sp, #0x14
add r4, r0, #0x0
ldr r0, _02046278 ; =0x000008C1
ldr r1, [r4, #0x20]
bl Camera_SetPerspectiveAngle
ldr r0, _0204627C ; =0x000F81B8
ldr r1, [r4, #0x20]
bl Camera_SetDistance
ldr r0, _02046280 ; =0x0350523D
str r0, [sp, #0x8]
ldr r0, _02046284 ; =0x0015EDB7
str r0, [sp, #0xc]
ldr r0, _02046288 ; =0x023DA40E
str r0, [sp, #0x10]
ldr r1, [r4, #0x20]
add r0, sp, #0x8
bl Camera_SetLookAtCamTarget
ldr r1, _0204628C ; =0x00000823
add r0, sp, #0x0
strh r1, [r0, #0x0]
mov r1, #0x52
lsl r1, r1, #0x4
strh r1, [r0, #0x2]
mov r1, #0x0
strh r1, [r0, #0x4]
ldr r1, [r4, #0x20]
add r0, sp, #0x0
bl Camera_SetAnglePos
mov r0, #0x3
ldr r1, _02046290 ; =0x0061C000
ldr r2, [r4, #0x20]
lsl r0, r0, #0xe
bl Camera_SetPerspectiveClippingPlane
add sp, #0x14
pop {r3-r4, pc}
nop
_02046278: .word 0x000008C1
_0204627C: .word 0x000F81B8
_02046280: .word 0x0350523D
_02046284: .word 0x0015EDB7
_02046288: .word 0x023DA40E
_0204628C: .word 0x00000823
_02046290: .word 0x0061C000