Teleport field effect

This commit is contained in:
PikalaxALT
2020-02-28 14:26:54 -05:00
parent fb56341fe4
commit 410aaa00ff
4 changed files with 236 additions and 645 deletions
-599
View File
@@ -5,605 +5,6 @@
.text
thumb_func_start CreateTeleportFieldEffectTask
CreateTeleportFieldEffectTask: @ 8085B64
push {lr}
ldr r0, _08085B74 @ =Task_DoTeleportFieldEffect
movs r1, 0
bl CreateTask
pop {r0}
bx r0
.align 2, 0
_08085B74: .4byte Task_DoTeleportFieldEffect
thumb_func_end CreateTeleportFieldEffectTask
thumb_func_start Task_DoTeleportFieldEffect
Task_DoTeleportFieldEffect: @ 8085B78
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r3, _08085BA0 @ =sTeleportEffectFuncs
ldr r2, _08085BA4 @ =gTasks
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
movs r2, 0x8
ldrsh r1, [r0, r2]
lsls r1, 2
adds r1, r3
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_08085BA0: .4byte sTeleportEffectFuncs
_08085BA4: .4byte gTasks
thumb_func_end Task_DoTeleportFieldEffect
thumb_func_start TeleportFieldEffectTask1
TeleportFieldEffectTask1: @ 8085BA8
push {r4,lr}
adds r4, r0, 0
bl ScriptContext2_Enable
bl FreezeObjectEvents
bl CameraObjectReset2
bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
pop {r4}
pop {r0}
bx r0
thumb_func_end TeleportFieldEffectTask1
thumb_func_start TeleportFieldEffectTask2
TeleportFieldEffectTask2: @ 8085BD0
push {r4,r5,lr}
sub sp, 0x8
adds r4, r0, 0
ldr r1, _08085C54 @ =gUnknown_83CC108
mov r0, sp
movs r2, 0x5
bl memcpy
ldr r0, _08085C58 @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08085C5C @ =gObjectEvents
adds r5, r0, r1
ldrh r1, [r4, 0xA]
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r0, 0
beq _08085C02
subs r0, r1, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
cmp r0, 0
bne _08085C1C
_08085C02:
ldrb r0, [r5, 0x18]
lsls r0, 28
lsrs r0, 28
add r0, sp
ldrb r1, [r0]
adds r0, r5, 0
bl ObjectEventTurn
movs r0, 0x8
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
_08085C1C:
movs r1, 0xC
ldrsh r0, [r4, r1]
cmp r0, 0x7
ble _08085C4A
movs r2, 0x26
ldrsh r1, [r4, r2]
ldrb r0, [r5, 0x18]
lsls r0, 28
lsrs r0, 28
cmp r1, r0
bne _08085C4A
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0x4
strh r0, [r4, 0xA]
movs r0, 0x8
strh r0, [r4, 0xC]
movs r0, 0x1
strh r0, [r4, 0xE]
movs r0, 0x27
bl PlaySE
_08085C4A:
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08085C54: .4byte gUnknown_83CC108
_08085C58: .4byte gPlayerAvatar
_08085C5C: .4byte gObjectEvents
thumb_func_end TeleportFieldEffectTask2
thumb_func_start TeleportFieldEffectTask3
TeleportFieldEffectTask3: @ 8085C60
push {r4,r5,lr}
sub sp, 0x8
adds r4, r0, 0
ldr r1, _08085D24 @ =gUnknown_83CC108
mov r0, sp
movs r2, 0x5
bl memcpy
ldr r2, _08085D28 @ =gPlayerAvatar
ldrb r1, [r2, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08085D2C @ =gObjectEvents
adds r3, r0, r1
ldrb r1, [r2, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _08085D30 @ =gSprites
adds r5, r0, r1
ldrh r0, [r4, 0xA]
subs r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
cmp r0, 0
bgt _08085CAA
movs r0, 0x4
strh r0, [r4, 0xA]
ldrb r0, [r3, 0x18]
lsls r0, 28
lsrs r0, 28
add r0, sp
ldrb r1, [r0]
adds r0, r3, 0
bl ObjectEventTurn
_08085CAA:
ldrh r0, [r5, 0x22]
ldrh r1, [r4, 0xE]
subs r0, r1
strh r0, [r5, 0x22]
ldrh r1, [r4, 0xE]
ldrh r2, [r4, 0x10]
adds r0, r1, r2
strh r0, [r4, 0x10]
ldrh r0, [r4, 0xC]
subs r0, 0x1
strh r0, [r4, 0xC]
lsls r0, 16
cmp r0, 0
bgt _08085CD6
movs r0, 0x4
strh r0, [r4, 0xC]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0x7
bgt _08085CD6
lsls r0, r1, 1
strh r0, [r4, 0xE]
_08085CD6:
movs r1, 0x10
ldrsh r0, [r4, r1]
cmp r0, 0x8
ble _08085D04
ldrb r1, [r5, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r1
movs r1, 0x4
orrs r0, r1
strb r0, [r5, 0x5]
adds r2, r5, 0
adds r2, 0x42
ldrb r1, [r2]
movs r0, 0xC0
ands r0, r1
cmp r0, 0
beq _08085D04
movs r0, 0x3F
ands r0, r1
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
_08085D04:
movs r2, 0x10
ldrsh r0, [r4, r2]
cmp r0, 0xA7
ble _08085D1A
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
bl TryFadeOutOldMapMusic
bl WarpFadeOutScreen
_08085D1A:
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08085D24: .4byte gUnknown_83CC108
_08085D28: .4byte gPlayerAvatar
_08085D2C: .4byte gObjectEvents
_08085D30: .4byte gSprites
thumb_func_end TeleportFieldEffectTask3
thumb_func_start TeleportFieldEffectTask4
TeleportFieldEffectTask4: @ 8085D34
push {lr}
ldr r0, _08085D74 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _08085D70
bl BGMusicStopped
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08085D70
bl copy_saved_warp3_bank_and_enter_x_to_warp1
bl WarpIntoMap
ldr r0, _08085D78 @ =CB2_LoadMap
bl SetMainCallback2
ldr r1, _08085D7C @ =gFieldCallback
ldr r0, _08085D80 @ =FieldCallback_TeleportIn
str r0, [r1]
ldr r0, _08085D84 @ =Task_DoTeleportFieldEffect
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_08085D70:
pop {r0}
bx r0
.align 2, 0
_08085D74: .4byte gPaletteFade
_08085D78: .4byte CB2_LoadMap
_08085D7C: .4byte gFieldCallback
_08085D80: .4byte FieldCallback_TeleportIn
_08085D84: .4byte Task_DoTeleportFieldEffect
thumb_func_end TeleportFieldEffectTask4
thumb_func_start FieldCallback_TeleportIn
FieldCallback_TeleportIn: @ 8085D88
push {lr}
bl Overworld_PlaySpecialMapMusic
bl WarpFadeInScreen
bl sub_8111CF0
bl ScriptContext2_Enable
bl FreezeObjectEvents
ldr r1, _08085DCC @ =gFieldCallback
movs r0, 0
str r0, [r1]
ldr r2, _08085DD0 @ =gObjectEvents
ldr r0, _08085DD4 @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0, 0x1]
movs r2, 0x20
orrs r1, r2
strb r1, [r0, 0x1]
bl CameraObjectReset2
ldr r0, _08085DD8 @ =Task_DoTeleportInFieldEffect
movs r1, 0
bl CreateTask
pop {r0}
bx r0
.align 2, 0
_08085DCC: .4byte gFieldCallback
_08085DD0: .4byte gObjectEvents
_08085DD4: .4byte gPlayerAvatar
_08085DD8: .4byte Task_DoTeleportInFieldEffect
thumb_func_end FieldCallback_TeleportIn
thumb_func_start Task_DoTeleportInFieldEffect
Task_DoTeleportInFieldEffect: @ 8085DDC
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r3, _08085E04 @ =sTeleportInEffectFuncs
ldr r2, _08085E08 @ =gTasks
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
movs r2, 0x8
ldrsh r1, [r0, r2]
lsls r1, 2
adds r1, r3
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_08085E04: .4byte sTeleportInEffectFuncs
_08085E08: .4byte gTasks
thumb_func_end Task_DoTeleportInFieldEffect
thumb_func_start TeleportInFieldEffectTask1
TeleportInFieldEffectTask1: @ 8085E0C
push {r4-r6,lr}
adds r6, r0, 0
bl IsWeatherNotFadingIn
lsls r0, 24
cmp r0, 0
beq _08085E82
ldr r5, _08085E88 @ =gPlayerAvatar
ldrb r0, [r5, 0x4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _08085E8C @ =gSprites
adds r2, r0
adds r0, r2, 0
adds r0, 0x29
movs r4, 0
ldrsb r4, [r0, r4]
lsls r0, r4, 17
negs r0, r0
ldrh r1, [r2, 0x22]
ldr r3, _08085E90 @ =gSpriteCoordOffsetY
adds r1, r4
ldrh r3, [r3]
adds r1, r3
asrs r0, 16
adds r0, r1
negs r0, r0
strh r0, [r2, 0x26]
ldr r3, _08085E94 @ =gObjectEvents
ldrb r0, [r5, 0x5]
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
adds r1, r3
ldrb r3, [r1, 0x1]
movs r0, 0x21
negs r0, r0
ands r0, r3
strb r0, [r1, 0x1]
ldrh r0, [r6, 0x8]
adds r0, 0x1
strh r0, [r6, 0x8]
movs r0, 0x8
strh r0, [r6, 0xA]
movs r0, 0x1
strh r0, [r6, 0xC]
adds r2, 0x42
ldrb r0, [r2]
lsrs r0, 6
strh r0, [r6, 0x24]
bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x26]
movs r0, 0x27
bl PlaySE
_08085E82:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08085E88: .4byte gPlayerAvatar
_08085E8C: .4byte gSprites
_08085E90: .4byte gSpriteCoordOffsetY
_08085E94: .4byte gObjectEvents
thumb_func_end TeleportInFieldEffectTask1
thumb_func_start TeleportInFieldEffectTask2
TeleportInFieldEffectTask2: @ 8085E98
push {r4-r7,lr}
sub sp, 0x8
adds r4, r0, 0
ldr r1, _08085F00 @ =gUnknown_83CC108
mov r0, sp
movs r2, 0x5
bl memcpy
ldr r2, _08085F04 @ =gPlayerAvatar
ldrb r1, [r2, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08085F08 @ =gObjectEvents
adds r6, r0, r1
ldrb r1, [r2, 0x4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _08085F0C @ =gSprites
adds r5, r0, r1
ldrh r0, [r4, 0xA]
ldrh r1, [r5, 0x26]
adds r0, r1
strh r0, [r5, 0x26]
lsls r0, 16
asrs r0, 16
movs r1, 0x8
negs r1, r1
cmp r0, r1
blt _08085F10
ldrh r1, [r4, 0x22]
movs r2, 0x22
ldrsh r0, [r4, r2]
cmp r0, 0
bne _08085F36
adds r0, r1, 0x1
strh r0, [r4, 0x22]
ldrb r0, [r6]
movs r1, 0x4
orrs r0, r1
strb r0, [r6]
ldrh r1, [r4, 0x24]
adds r3, r5, 0
adds r3, 0x42
lsls r1, 6
ldrb r2, [r3]
movs r0, 0x3F
ands r0, r2
orrs r0, r1
strb r0, [r3]
b _08085F36
.align 2, 0
_08085F00: .4byte gUnknown_83CC108
_08085F04: .4byte gPlayerAvatar
_08085F08: .4byte gObjectEvents
_08085F0C: .4byte gSprites
_08085F10:
ldrb r1, [r5, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r1
movs r1, 0x4
orrs r0, r1
strb r0, [r5, 0x5]
adds r2, r5, 0
adds r2, 0x42
ldrb r1, [r2]
movs r0, 0xC0
ands r0, r1
cmp r0, 0
beq _08085F36
movs r0, 0x3F
ands r0, r1
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
_08085F36:
ldrh r2, [r5, 0x26]
movs r3, 0x26
ldrsh r1, [r5, r3]
movs r0, 0x30
negs r0, r0
cmp r1, r0
blt _08085F5A
ldrh r1, [r4, 0xA]
movs r3, 0xA
ldrsh r0, [r4, r3]
cmp r0, 0x1
ble _08085F5A
movs r0, 0x1
ands r0, r2
cmp r0, 0
bne _08085F5A
subs r0, r1, 0x1
strh r0, [r4, 0xA]
_08085F5A:
ldrh r0, [r4, 0xC]
subs r0, 0x1
movs r7, 0
strh r0, [r4, 0xC]
lsls r0, 16
cmp r0, 0
bne _08085F7C
movs r0, 0x4
strh r0, [r4, 0xC]
ldrb r0, [r6, 0x18]
lsls r0, 28
lsrs r0, 28
add r0, sp
ldrb r1, [r0]
adds r0, r6, 0
bl ObjectEventTurn
_08085F7C:
movs r1, 0x26
ldrsh r0, [r5, r1]
cmp r0, 0
blt _08085F92
strh r7, [r5, 0x26]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0x1
strh r0, [r4, 0xA]
strh r7, [r4, 0xC]
_08085F92:
add sp, 0x8
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end TeleportInFieldEffectTask2
thumb_func_start TeleportInFieldEffectTask3
TeleportInFieldEffectTask3: @ 8085F9C
push {r4,r5,lr}
sub sp, 0x8
adds r4, r0, 0
ldr r1, _08086018 @ =gUnknown_83CC108
mov r0, sp
movs r2, 0x5
bl memcpy
ldr r0, _0808601C @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08086020 @ =gObjectEvents
adds r5, r0, r1
ldrh r0, [r4, 0xA]
subs r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
cmp r0, 0
bne _08086010
ldrb r0, [r5, 0x18]
lsls r0, 28
lsrs r0, 28
add r0, sp
ldrb r1, [r0]
adds r0, r5, 0
bl ObjectEventTurn
movs r0, 0x8
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
ble _08086010
movs r0, 0x24
ldrsh r1, [r4, r0]
ldrb r0, [r5, 0x18]
lsls r0, 28
lsrs r0, 28
cmp r1, r0
bne _08086010
bl ScriptContext2_Disable
bl CameraObjectReset1
bl UnfreezeObjectEvents
ldr r0, _08086024 @ =Task_DoTeleportInFieldEffect
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_08086010:
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08086018: .4byte gUnknown_83CC108
_0808601C: .4byte gPlayerAvatar
_08086020: .4byte gObjectEvents
_08086024: .4byte Task_DoTeleportInFieldEffect
thumb_func_end TeleportInFieldEffectTask3
thumb_func_start FldEff_FieldMoveShowMon
FldEff_FieldMoveShowMon: @ 8086028
push {r4,lr}