Escalator field effect
This commit is contained in:
+9
-673
@@ -5,670 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start StartEscalatorWarp
|
|
||||||
StartEscalatorWarp: @ 8084784
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
ldr r0, _080847B8 @ =Task_EscalatorWarpFieldEffect
|
|
||||||
bl CreateTask
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r2, _080847BC @ =gTasks
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
adds r1, r2
|
|
||||||
movs r0, 0
|
|
||||||
strh r0, [r1, 0xA]
|
|
||||||
cmp r4, 0x6A
|
|
||||||
bne _080847B0
|
|
||||||
movs r0, 0x1
|
|
||||||
strh r0, [r1, 0xA]
|
|
||||||
_080847B0:
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080847B8: .4byte Task_EscalatorWarpFieldEffect
|
|
||||||
_080847BC: .4byte gTasks
|
|
||||||
thumb_func_end StartEscalatorWarp
|
|
||||||
|
|
||||||
thumb_func_start Task_EscalatorWarpFieldEffect
|
|
||||||
Task_EscalatorWarpFieldEffect: @ 80847C0
|
|
||||||
push {r4,r5,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
ldr r0, _080847F0 @ =gTasks
|
|
||||||
adds r4, r1, r0
|
|
||||||
ldr r5, _080847F4 @ =sEscalatorWarpFieldEffectFuncs
|
|
||||||
_080847D2:
|
|
||||||
movs r1, 0x8
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r5
|
|
||||||
ldr r1, [r0]
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl _call_via_r1
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080847D2
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080847F0: .4byte gTasks
|
|
||||||
_080847F4: .4byte sEscalatorWarpFieldEffectFuncs
|
|
||||||
thumb_func_end Task_EscalatorWarpFieldEffect
|
|
||||||
|
|
||||||
thumb_func_start EscalatorWarpEffect_1
|
|
||||||
EscalatorWarpEffect_1: @ 80847F8
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl FreezeObjectEvents
|
|
||||||
bl CameraObjectReset2
|
|
||||||
ldrb r0, [r4, 0xA]
|
|
||||||
bl StartEscalator
|
|
||||||
movs r0, 0x1
|
|
||||||
bl sub_81128BC
|
|
||||||
ldrh r0, [r4, 0x8]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x8]
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end EscalatorWarpEffect_1
|
|
||||||
|
|
||||||
thumb_func_start EscalatorWarpEffect_2
|
|
||||||
EscalatorWarpEffect_2: @ 8084820
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r5, r0, 0
|
|
||||||
ldr r0, _08084888 @ =gPlayerAvatar
|
|
||||||
ldrb r1, [r0, 0x5]
|
|
||||||
lsls r0, r1, 3
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
ldr r1, _0808488C @ =gObjectEvents
|
|
||||||
adds r4, r0, r1
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ObjectEventIsMovementOverridden
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0808484A
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ObjectEventClearHeldMovementIfFinished
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0808487E
|
|
||||||
_0808484A:
|
|
||||||
bl GetPlayerFacingDirection
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl GetFaceDirectionMovementAction
|
|
||||||
adds r1, r0, 0
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ObjectEventSetHeldMovement
|
|
||||||
ldrh r0, [r5, 0x8]
|
|
||||||
adds r0, 0x1
|
|
||||||
movs r1, 0
|
|
||||||
strh r0, [r5, 0x8]
|
|
||||||
strh r1, [r5, 0xC]
|
|
||||||
strh r1, [r5, 0xE]
|
|
||||||
ldrb r0, [r5, 0xA]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08084878
|
|
||||||
movs r0, 0x4
|
|
||||||
strh r0, [r5, 0x8]
|
|
||||||
_08084878:
|
|
||||||
movs r0, 0x49
|
|
||||||
bl PlaySE
|
|
||||||
_0808487E:
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_08084888: .4byte gPlayerAvatar
|
|
||||||
_0808488C: .4byte gObjectEvents
|
|
||||||
thumb_func_end EscalatorWarpEffect_2
|
|
||||||
|
|
||||||
thumb_func_start EscalatorWarpEffect_3
|
|
||||||
EscalatorWarpEffect_3: @ 8084890
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl sub_80848F8
|
|
||||||
movs r1, 0xC
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
cmp r0, 0x3
|
|
||||||
ble _080848AA
|
|
||||||
bl sub_8084990
|
|
||||||
ldrh r0, [r4, 0x8]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x8]
|
|
||||||
_080848AA:
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end EscalatorWarpEffect_3
|
|
||||||
|
|
||||||
thumb_func_start EscalatorWarpEffect_4
|
|
||||||
EscalatorWarpEffect_4: @ 80848B4
|
|
||||||
push {lr}
|
|
||||||
bl sub_80848F8
|
|
||||||
bl sub_80849A0
|
|
||||||
movs r0, 0
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end EscalatorWarpEffect_4
|
|
||||||
|
|
||||||
thumb_func_start EscalatorWarpEffect_5
|
|
||||||
EscalatorWarpEffect_5: @ 80848C4
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl sub_8084944
|
|
||||||
movs r1, 0xC
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
cmp r0, 0x3
|
|
||||||
ble _080848DE
|
|
||||||
bl sub_8084990
|
|
||||||
ldrh r0, [r4, 0x8]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x8]
|
|
||||||
_080848DE:
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end EscalatorWarpEffect_5
|
|
||||||
|
|
||||||
thumb_func_start EscalatorWarpEffect_6
|
|
||||||
EscalatorWarpEffect_6: @ 80848E8
|
|
||||||
push {lr}
|
|
||||||
bl sub_8084944
|
|
||||||
bl sub_80849A0
|
|
||||||
movs r0, 0
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end EscalatorWarpEffect_6
|
|
||||||
|
|
||||||
thumb_func_start sub_80848F8
|
|
||||||
sub_80848F8: @ 80848F8
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r5, r0, 0
|
|
||||||
ldr r0, _0808493C @ =gPlayerAvatar
|
|
||||||
ldrb r0, [r0, 0x4]
|
|
||||||
lsls r4, r0, 4
|
|
||||||
adds r4, r0
|
|
||||||
lsls r4, 2
|
|
||||||
ldr r0, _08084940 @ =gSprites
|
|
||||||
adds r4, r0
|
|
||||||
movs r0, 0xC
|
|
||||||
ldrsh r1, [r5, r0]
|
|
||||||
movs r0, 0x84
|
|
||||||
bl Cos
|
|
||||||
strh r0, [r4, 0x24]
|
|
||||||
movs r0, 0xC
|
|
||||||
ldrsh r1, [r5, r0]
|
|
||||||
movs r0, 0x94
|
|
||||||
bl Sin
|
|
||||||
strh r0, [r4, 0x26]
|
|
||||||
ldrh r0, [r5, 0xE]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r5, 0xE]
|
|
||||||
movs r1, 0x1
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08084936
|
|
||||||
ldrh r0, [r5, 0xC]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r5, 0xC]
|
|
||||||
_08084936:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0808493C: .4byte gPlayerAvatar
|
|
||||||
_08084940: .4byte gSprites
|
|
||||||
thumb_func_end sub_80848F8
|
|
||||||
|
|
||||||
thumb_func_start sub_8084944
|
|
||||||
sub_8084944: @ 8084944
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r5, r0, 0
|
|
||||||
ldr r0, _08084988 @ =gPlayerAvatar
|
|
||||||
ldrb r0, [r0, 0x4]
|
|
||||||
lsls r4, r0, 4
|
|
||||||
adds r4, r0
|
|
||||||
lsls r4, 2
|
|
||||||
ldr r0, _0808498C @ =gSprites
|
|
||||||
adds r4, r0
|
|
||||||
movs r0, 0xC
|
|
||||||
ldrsh r1, [r5, r0]
|
|
||||||
movs r0, 0x7C
|
|
||||||
bl Cos
|
|
||||||
strh r0, [r4, 0x24]
|
|
||||||
movs r0, 0xC
|
|
||||||
ldrsh r1, [r5, r0]
|
|
||||||
movs r0, 0x76
|
|
||||||
bl Sin
|
|
||||||
strh r0, [r4, 0x26]
|
|
||||||
ldrh r0, [r5, 0xE]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r5, 0xE]
|
|
||||||
movs r1, 0x1
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08084982
|
|
||||||
ldrh r0, [r5, 0xC]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r5, 0xC]
|
|
||||||
_08084982:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08084988: .4byte gPlayerAvatar
|
|
||||||
_0808498C: .4byte gSprites
|
|
||||||
thumb_func_end sub_8084944
|
|
||||||
|
|
||||||
thumb_func_start sub_8084990
|
|
||||||
sub_8084990: @ 8084990
|
|
||||||
push {lr}
|
|
||||||
bl sub_8055F88
|
|
||||||
bl sub_807DC18
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_8084990
|
|
||||||
|
|
||||||
thumb_func_start sub_80849A0
|
|
||||||
sub_80849A0: @ 80849A0
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _080849E0 @ =gPaletteFade
|
|
||||||
ldrb r1, [r0, 0x7]
|
|
||||||
movs r0, 0x80
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080849DC
|
|
||||||
bl BGMusicStopped
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _080849DC
|
|
||||||
bl StopEscalator
|
|
||||||
bl WarpIntoMap
|
|
||||||
ldr r1, _080849E4 @ =gFieldCallback
|
|
||||||
ldr r0, _080849E8 @ =sub_80849F4
|
|
||||||
str r0, [r1]
|
|
||||||
ldr r0, _080849EC @ =CB2_LoadMap
|
|
||||||
bl SetMainCallback2
|
|
||||||
ldr r0, _080849F0 @ =Task_EscalatorWarpFieldEffect
|
|
||||||
bl FindTaskIdByFunc
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl DestroyTask
|
|
||||||
_080849DC:
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080849E0: .4byte gPaletteFade
|
|
||||||
_080849E4: .4byte gFieldCallback
|
|
||||||
_080849E8: .4byte sub_80849F4
|
|
||||||
_080849EC: .4byte CB2_LoadMap
|
|
||||||
_080849F0: .4byte Task_EscalatorWarpFieldEffect
|
|
||||||
thumb_func_end sub_80849A0
|
|
||||||
|
|
||||||
thumb_func_start sub_80849F4
|
|
||||||
sub_80849F4: @ 80849F4
|
|
||||||
push {lr}
|
|
||||||
bl Overworld_PlaySpecialMapMusic
|
|
||||||
bl pal_fill_for_maplights
|
|
||||||
bl sub_8111CF0
|
|
||||||
bl ScriptContext2_Enable
|
|
||||||
bl FreezeObjectEvents
|
|
||||||
ldr r0, _08084A1C @ =sub_8084A24
|
|
||||||
movs r1, 0
|
|
||||||
bl CreateTask
|
|
||||||
ldr r1, _08084A20 @ =gFieldCallback
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [r1]
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08084A1C: .4byte sub_8084A24
|
|
||||||
_08084A20: .4byte gFieldCallback
|
|
||||||
thumb_func_end sub_80849F4
|
|
||||||
|
|
||||||
thumb_func_start sub_8084A24
|
|
||||||
sub_8084A24: @ 8084A24
|
|
||||||
push {r4,r5,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
lsls r1, 3
|
|
||||||
ldr r0, _08084A54 @ =gTasks
|
|
||||||
adds r4, r1, r0
|
|
||||||
ldr r5, _08084A58 @ =gUnknown_83CC068
|
|
||||||
_08084A36:
|
|
||||||
movs r1, 0x8
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r5
|
|
||||||
ldr r1, [r0]
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl _call_via_r1
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08084A36
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08084A54: .4byte gTasks
|
|
||||||
_08084A58: .4byte gUnknown_83CC068
|
|
||||||
thumb_func_end sub_8084A24
|
|
||||||
|
|
||||||
thumb_func_start sub_8084A5C
|
|
||||||
sub_8084A5C: @ 8084A5C
|
|
||||||
push {r4,r5,lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
adds r5, r0, 0
|
|
||||||
bl CameraObjectReset2
|
|
||||||
ldr r0, _08084ABC @ =gPlayerAvatar
|
|
||||||
ldrb r0, [r0, 0x5]
|
|
||||||
lsls r4, r0, 3
|
|
||||||
adds r4, r0
|
|
||||||
lsls r4, 2
|
|
||||||
ldr r0, _08084AC0 @ =gObjectEvents
|
|
||||||
adds r4, r0
|
|
||||||
movs r0, 0x4
|
|
||||||
bl GetFaceDirectionMovementAction
|
|
||||||
adds r1, r0, 0
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ObjectEventSetHeldMovement
|
|
||||||
mov r4, sp
|
|
||||||
adds r4, 0x2
|
|
||||||
mov r0, sp
|
|
||||||
adds r1, r4, 0
|
|
||||||
bl PlayerGetDestCoords
|
|
||||||
mov r0, sp
|
|
||||||
movs r1, 0
|
|
||||||
ldrsh r0, [r0, r1]
|
|
||||||
movs r2, 0
|
|
||||||
ldrsh r1, [r4, r2]
|
|
||||||
bl MapGridGetMetatileBehaviorAt
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r1, r0, 24
|
|
||||||
ldrh r0, [r5, 0x8]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r5, 0x8]
|
|
||||||
movs r0, 0x10
|
|
||||||
strh r0, [r5, 0xA]
|
|
||||||
cmp r1, 0x6B
|
|
||||||
bne _08084AC4
|
|
||||||
movs r1, 0x1
|
|
||||||
movs r0, 0x3
|
|
||||||
strh r0, [r5, 0x8]
|
|
||||||
b _08084AC6
|
|
||||||
.align 2, 0
|
|
||||||
_08084ABC: .4byte gPlayerAvatar
|
|
||||||
_08084AC0: .4byte gObjectEvents
|
|
||||||
_08084AC4:
|
|
||||||
movs r1, 0
|
|
||||||
_08084AC6:
|
|
||||||
adds r0, r1, 0
|
|
||||||
bl StartEscalator
|
|
||||||
movs r0, 0x1
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_8084A5C
|
|
||||||
|
|
||||||
thumb_func_start sub_8084AD8
|
|
||||||
sub_8084AD8: @ 8084AD8
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r5, r0, 0
|
|
||||||
ldr r0, _08084B10 @ =gPlayerAvatar
|
|
||||||
ldrb r0, [r0, 0x4]
|
|
||||||
lsls r4, r0, 4
|
|
||||||
adds r4, r0
|
|
||||||
lsls r4, 2
|
|
||||||
ldr r0, _08084B14 @ =gSprites
|
|
||||||
adds r4, r0
|
|
||||||
movs r0, 0xA
|
|
||||||
ldrsh r1, [r5, r0]
|
|
||||||
movs r0, 0x84
|
|
||||||
bl Cos
|
|
||||||
strh r0, [r4, 0x24]
|
|
||||||
movs r0, 0xA
|
|
||||||
ldrsh r1, [r5, r0]
|
|
||||||
movs r0, 0x94
|
|
||||||
bl Sin
|
|
||||||
strh r0, [r4, 0x26]
|
|
||||||
ldrh r0, [r5, 0x8]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r5, 0x8]
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_08084B10: .4byte gPlayerAvatar
|
|
||||||
_08084B14: .4byte gSprites
|
|
||||||
thumb_func_end sub_8084AD8
|
|
||||||
|
|
||||||
thumb_func_start sub_8084B18
|
|
||||||
sub_8084B18: @ 8084B18
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldr r0, _08084B70 @ =gPlayerAvatar
|
|
||||||
ldrb r1, [r0, 0x4]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
ldr r1, _08084B74 @ =gSprites
|
|
||||||
adds r5, r0, r1
|
|
||||||
movs r0, 0xA
|
|
||||||
ldrsh r1, [r4, r0]
|
|
||||||
movs r0, 0x84
|
|
||||||
bl Cos
|
|
||||||
strh r0, [r5, 0x24]
|
|
||||||
movs r0, 0xA
|
|
||||||
ldrsh r1, [r4, r0]
|
|
||||||
movs r0, 0x94
|
|
||||||
bl Sin
|
|
||||||
strh r0, [r5, 0x26]
|
|
||||||
ldrh r0, [r4, 0xC]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0xC]
|
|
||||||
movs r1, 0x1
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08084B56
|
|
||||||
ldrh r0, [r4, 0xA]
|
|
||||||
subs r0, 0x1
|
|
||||||
strh r0, [r4, 0xA]
|
|
||||||
_08084B56:
|
|
||||||
movs r1, 0xA
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08084B66
|
|
||||||
strh r0, [r5, 0x24]
|
|
||||||
strh r0, [r5, 0x26]
|
|
||||||
movs r0, 0x5
|
|
||||||
strh r0, [r4, 0x8]
|
|
||||||
_08084B66:
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_08084B70: .4byte gPlayerAvatar
|
|
||||||
_08084B74: .4byte gSprites
|
|
||||||
thumb_func_end sub_8084B18
|
|
||||||
|
|
||||||
thumb_func_start sub_8084B78
|
|
||||||
sub_8084B78: @ 8084B78
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r5, r0, 0
|
|
||||||
ldr r0, _08084BB0 @ =gPlayerAvatar
|
|
||||||
ldrb r0, [r0, 0x4]
|
|
||||||
lsls r4, r0, 4
|
|
||||||
adds r4, r0
|
|
||||||
lsls r4, 2
|
|
||||||
ldr r0, _08084BB4 @ =gSprites
|
|
||||||
adds r4, r0
|
|
||||||
movs r0, 0xA
|
|
||||||
ldrsh r1, [r5, r0]
|
|
||||||
movs r0, 0x7C
|
|
||||||
bl Cos
|
|
||||||
strh r0, [r4, 0x24]
|
|
||||||
movs r0, 0xA
|
|
||||||
ldrsh r1, [r5, r0]
|
|
||||||
movs r0, 0x76
|
|
||||||
bl Sin
|
|
||||||
strh r0, [r4, 0x26]
|
|
||||||
ldrh r0, [r5, 0x8]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r5, 0x8]
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_08084BB0: .4byte gPlayerAvatar
|
|
||||||
_08084BB4: .4byte gSprites
|
|
||||||
thumb_func_end sub_8084B78
|
|
||||||
|
|
||||||
thumb_func_start sub_8084BB8
|
|
||||||
sub_8084BB8: @ 8084BB8
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldr r0, _08084C10 @ =gPlayerAvatar
|
|
||||||
ldrb r1, [r0, 0x4]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
ldr r1, _08084C14 @ =gSprites
|
|
||||||
adds r5, r0, r1
|
|
||||||
movs r0, 0xA
|
|
||||||
ldrsh r1, [r4, r0]
|
|
||||||
movs r0, 0x7C
|
|
||||||
bl Cos
|
|
||||||
strh r0, [r5, 0x24]
|
|
||||||
movs r0, 0xA
|
|
||||||
ldrsh r1, [r4, r0]
|
|
||||||
movs r0, 0x76
|
|
||||||
bl Sin
|
|
||||||
strh r0, [r5, 0x26]
|
|
||||||
ldrh r0, [r4, 0xC]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0xC]
|
|
||||||
movs r1, 0x1
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08084BF6
|
|
||||||
ldrh r0, [r4, 0xA]
|
|
||||||
subs r0, 0x1
|
|
||||||
strh r0, [r4, 0xA]
|
|
||||||
_08084BF6:
|
|
||||||
movs r1, 0xA
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08084C08
|
|
||||||
strh r0, [r5, 0x24]
|
|
||||||
strh r0, [r5, 0x26]
|
|
||||||
ldrh r0, [r4, 0x8]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x8]
|
|
||||||
_08084C08:
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_08084C10: .4byte gPlayerAvatar
|
|
||||||
_08084C14: .4byte gSprites
|
|
||||||
thumb_func_end sub_8084BB8
|
|
||||||
|
|
||||||
thumb_func_start sub_8084C18
|
|
||||||
sub_8084C18: @ 8084C18
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl IsEscalatorMoving
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08084C34
|
|
||||||
bl StopEscalator
|
|
||||||
ldrh r0, [r4, 0x8]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x8]
|
|
||||||
movs r0, 0x1
|
|
||||||
b _08084C36
|
|
||||||
_08084C34:
|
|
||||||
movs r0, 0
|
|
||||||
_08084C36:
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_8084C18
|
|
||||||
|
|
||||||
thumb_func_start sub_8084C3C
|
|
||||||
sub_8084C3C: @ 8084C3C
|
|
||||||
push {r4,lr}
|
|
||||||
ldr r0, _08084C94 @ =gPlayerAvatar
|
|
||||||
ldrb r1, [r0, 0x5]
|
|
||||||
lsls r0, r1, 3
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
ldr r1, _08084C98 @ =gObjectEvents
|
|
||||||
adds r4, r0, r1
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ObjectEventClearHeldMovementIfFinished
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08084C8A
|
|
||||||
bl CameraObjectReset1
|
|
||||||
bl ScriptContext2_Disable
|
|
||||||
bl UnfreezeObjectEvents
|
|
||||||
movs r0, 0x4
|
|
||||||
bl GetWalkNormalMovementAction
|
|
||||||
adds r1, r0, 0
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ObjectEventSetHeldMovement
|
|
||||||
ldr r0, _08084C9C @ =sub_8084A24
|
|
||||||
bl FindTaskIdByFunc
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl DestroyTask
|
|
||||||
movs r0, 0x2
|
|
||||||
bl sub_81128BC
|
|
||||||
_08084C8A:
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_08084C94: .4byte gPlayerAvatar
|
|
||||||
_08084C98: .4byte gObjectEvents
|
|
||||||
_08084C9C: .4byte sub_8084A24
|
|
||||||
thumb_func_end sub_8084C3C
|
|
||||||
|
|
||||||
thumb_func_start FldEff_UseWaterfall
|
thumb_func_start FldEff_UseWaterfall
|
||||||
FldEff_UseWaterfall: @ 8084CA0
|
FldEff_UseWaterfall: @ 8084CA0
|
||||||
push {r4,lr}
|
push {r4,lr}
|
||||||
@@ -1304,8 +640,8 @@ _08085144:
|
|||||||
LavaridgeGymB1FWarpEffect_5: @ 808514C
|
LavaridgeGymB1FWarpEffect_5: @ 808514C
|
||||||
push {r4,lr}
|
push {r4,lr}
|
||||||
adds r4, r0, 0
|
adds r4, r0, 0
|
||||||
bl sub_8055F88
|
bl TryFadeOutOldMapMusic
|
||||||
bl sub_807DC18
|
bl WarpFadeOutScreen
|
||||||
ldrh r0, [r4, 0x8]
|
ldrh r0, [r4, 0x8]
|
||||||
adds r0, 0x1
|
adds r0, 0x1
|
||||||
strh r0, [r4, 0x8]
|
strh r0, [r4, 0x8]
|
||||||
@@ -1808,8 +1144,8 @@ LavaridgeGym1FWarpEffect_4: @ 8085524
|
|||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
bne _08085542
|
bne _08085542
|
||||||
bl sub_8055F88
|
bl TryFadeOutOldMapMusic
|
||||||
bl sub_807DC18
|
bl WarpFadeOutScreen
|
||||||
ldrh r0, [r4, 0x8]
|
ldrh r0, [r4, 0x8]
|
||||||
adds r0, 0x1
|
adds r0, 0x1
|
||||||
strh r0, [r4, 0x8]
|
strh r0, [r4, 0x8]
|
||||||
@@ -2032,8 +1368,8 @@ _080856DC:
|
|||||||
bl sub_80857F0
|
bl sub_80857F0
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
bne _08085702
|
bne _08085702
|
||||||
bl sub_8055F88
|
bl TryFadeOutOldMapMusic
|
||||||
bl sub_807DC18
|
bl WarpFadeOutScreen
|
||||||
movs r0, 0x1
|
movs r0, 0x1
|
||||||
strh r0, [r4, 0x8]
|
strh r0, [r4, 0x8]
|
||||||
_08085702:
|
_08085702:
|
||||||
@@ -2823,8 +2159,8 @@ _08085D04:
|
|||||||
ldrh r0, [r4, 0x8]
|
ldrh r0, [r4, 0x8]
|
||||||
adds r0, 0x1
|
adds r0, 0x1
|
||||||
strh r0, [r4, 0x8]
|
strh r0, [r4, 0x8]
|
||||||
bl sub_8055F88
|
bl TryFadeOutOldMapMusic
|
||||||
bl sub_807DC18
|
bl WarpFadeOutScreen
|
||||||
_08085D1A:
|
_08085D1A:
|
||||||
add sp, 0x8
|
add sp, 0x8
|
||||||
pop {r4,r5}
|
pop {r4,r5}
|
||||||
@@ -5376,7 +4712,7 @@ sub_8087118: @ 8087118
|
|||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
beq _08087132
|
beq _08087132
|
||||||
bl sub_807DC18
|
bl WarpFadeOutScreen
|
||||||
ldrh r0, [r4, 0x8]
|
ldrh r0, [r4, 0x8]
|
||||||
adds r0, 0x1
|
adds r0, 0x1
|
||||||
strh r0, [r4, 0x8]
|
strh r0, [r4, 0x8]
|
||||||
|
|||||||
+3
-3
@@ -2611,8 +2611,8 @@ _08055F82:
|
|||||||
bx r1
|
bx r1
|
||||||
thumb_func_end GetMapMusicFadeoutSpeed
|
thumb_func_end GetMapMusicFadeoutSpeed
|
||||||
|
|
||||||
thumb_func_start sub_8055F88
|
thumb_func_start TryFadeOutOldMapMusic
|
||||||
sub_8055F88: @ 8055F88
|
TryFadeOutOldMapMusic: @ 8055F88
|
||||||
push {r4,lr}
|
push {r4,lr}
|
||||||
bl sub_8055DA4
|
bl sub_8055DA4
|
||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
@@ -2638,7 +2638,7 @@ _08055FB8:
|
|||||||
bx r0
|
bx r0
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_08055FC0: .4byte 0x00004001
|
_08055FC0: .4byte 0x00004001
|
||||||
thumb_func_end sub_8055F88
|
thumb_func_end TryFadeOutOldMapMusic
|
||||||
|
|
||||||
thumb_func_start BGMusicStopped
|
thumb_func_start BGMusicStopped
|
||||||
BGMusicStopped: @ 8055FC4
|
BGMusicStopped: @ 8055FC4
|
||||||
|
|||||||
@@ -6,25 +6,6 @@
|
|||||||
.section .rodata
|
.section .rodata
|
||||||
.align 2
|
.align 2
|
||||||
|
|
||||||
.align 2
|
|
||||||
sEscalatorWarpFieldEffectFuncs:: @ 83CC050 dataptr
|
|
||||||
.4byte EscalatorWarpEffect_1
|
|
||||||
.4byte EscalatorWarpEffect_2
|
|
||||||
.4byte EscalatorWarpEffect_3
|
|
||||||
.4byte EscalatorWarpEffect_4
|
|
||||||
.4byte EscalatorWarpEffect_5
|
|
||||||
.4byte EscalatorWarpEffect_6
|
|
||||||
|
|
||||||
.align 2
|
|
||||||
gUnknown_83CC068:: @ 83CC068 dataptr
|
|
||||||
.4byte sub_8084A5C
|
|
||||||
.4byte sub_8084AD8
|
|
||||||
.4byte sub_8084B18
|
|
||||||
.4byte sub_8084B78
|
|
||||||
.4byte sub_8084BB8
|
|
||||||
.4byte sub_8084C18
|
|
||||||
.4byte sub_8084C3C
|
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
sUseWaterfallFieldEffectFuncs:: @ 83CC084 dataptr
|
sUseWaterfallFieldEffectFuncs:: @ 83CC084 dataptr
|
||||||
.4byte waterfall_0_setup
|
.4byte waterfall_0_setup
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ void StartEscapeRopeFieldEffect(void);
|
|||||||
void FieldEffectStop(struct Sprite *sprite, u8 id);
|
void FieldEffectStop(struct Sprite *sprite, u8 id);
|
||||||
u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer);
|
u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer);
|
||||||
void FieldCB_FallWarpExit(void);
|
void FieldCB_FallWarpExit(void);
|
||||||
void StartEscalatorWarp(u8 a0, u8 a1);
|
void StartEscalatorWarp(u8 metatileBehavior, u8 priority);
|
||||||
void StartLavaridgeGymB1FWarp(u8 a0);
|
void StartLavaridgeGymB1FWarp(u8 a0);
|
||||||
void StartLavaridgeGym1FWarp(u8 a0);
|
void StartLavaridgeGym1FWarp(u8 a0);
|
||||||
void sub_8083598(u8 a0);
|
void sub_8083598(u8 a0);
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ void DoFallWarp(void);
|
|||||||
void sub_807E59C(void);
|
void sub_807E59C(void);
|
||||||
void sub_807E500(void);
|
void sub_807E500(void);
|
||||||
void sub_807DF64(void);
|
void sub_807DF64(void);
|
||||||
void sub_807DC18(void);
|
void WarpFadeOutScreen(void);
|
||||||
void FieldCallback_ReturnToEventScript2(void);
|
void FieldCallback_ReturnToEventScript2(void);
|
||||||
void FadeInFromBlack(void);
|
void FadeInFromBlack(void);
|
||||||
void FadeTransition_FadeInOnReturnToStartMenu(void);
|
void FadeTransition_FadeInOnReturnToStartMenu(void);
|
||||||
|
|||||||
+1
-1
@@ -155,7 +155,7 @@ u8 GetCurrentMapType(void);
|
|||||||
|
|
||||||
u8 get_map_light_from_warp0(void);
|
u8 get_map_light_from_warp0(void);
|
||||||
const struct MapHeader *warp1_get_mapheader(void);
|
const struct MapHeader *warp1_get_mapheader(void);
|
||||||
void sub_8055F88(void);
|
void TryFadeOutOldMapMusic(void);
|
||||||
void CB2_ReturnToFieldCableClub(void);
|
void CB2_ReturnToFieldCableClub(void);
|
||||||
void ResetGameStats(void);
|
void ResetGameStats(void);
|
||||||
|
|
||||||
|
|||||||
@@ -50,5 +50,6 @@ void QuestLogSetFlagOrVar(bool8 isFlag, u16 idx, u16 value);
|
|||||||
void sub_8110840(void *oldSave);
|
void sub_8110840(void *oldSave);
|
||||||
void sub_8112F18(u8 windowId);
|
void sub_8112F18(u8 windowId);
|
||||||
bool8 sub_8111C2C(void);
|
bool8 sub_8111C2C(void);
|
||||||
|
void sub_81128BC(u8 a0);
|
||||||
|
|
||||||
#endif //GUARD_QUEST_LOG_H
|
#endif //GUARD_QUEST_LOG_H
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
|
||||||
void StartEscalator(u8 a0);
|
void StartEscalator(bool8 goingUp);
|
||||||
void StopEscalator(void);
|
void StopEscalator(void);
|
||||||
bool8 IsEscalatorMoving(void);
|
bool8 IsEscalatorMoving(void);
|
||||||
|
|
||||||
|
|||||||
@@ -16,8 +16,11 @@
|
|||||||
#include "party_menu.h"
|
#include "party_menu.h"
|
||||||
#include "quest_log.h"
|
#include "quest_log.h"
|
||||||
#include "script.h"
|
#include "script.h"
|
||||||
|
#include "special_field_anim.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
#include "trainer_pokemon_sprites.h"
|
#include "trainer_pokemon_sprites.h"
|
||||||
|
#include "trig.h"
|
||||||
|
#include "constants/metatile_behaviors.h"
|
||||||
#include "constants/songs.h"
|
#include "constants/songs.h"
|
||||||
|
|
||||||
#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
|
#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
|
||||||
@@ -1229,3 +1232,299 @@ bool8 FallWarpEffect_7(struct Task *task)
|
|||||||
DestroyTask(FindTaskIdByFunc(Task_FallWarpFieldEffect));
|
DestroyTask(FindTaskIdByFunc(Task_FallWarpFieldEffect));
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Task_EscalatorWarpFieldEffect(u8 taskId);
|
||||||
|
bool8 EscalatorWarpEffect_1(struct Task * task);
|
||||||
|
bool8 EscalatorWarpEffect_2(struct Task * task);
|
||||||
|
bool8 EscalatorWarpEffect_3(struct Task * task);
|
||||||
|
bool8 EscalatorWarpEffect_4(struct Task * task);
|
||||||
|
bool8 EscalatorWarpEffect_5(struct Task * task);
|
||||||
|
bool8 EscalatorWarpEffect_6(struct Task * task);
|
||||||
|
void Escalator_AnimatePlayerGoingDown(struct Task * task);
|
||||||
|
void Escalator_AnimatePlayerGoingUp(struct Task * task);
|
||||||
|
void Escalator_BeginFadeOutToNewMap(void);
|
||||||
|
void Escalator_TransitionToWarpInEffect(void);
|
||||||
|
void FieldCB_EscalatorWarpIn(void);
|
||||||
|
void Task_EscalatorWarpInFieldEffect(u8 taskId);
|
||||||
|
bool8 EscalatorWarpInEffect_1(struct Task * task);
|
||||||
|
bool8 EscalatorWarpInEffect_2(struct Task * task);
|
||||||
|
bool8 EscalatorWarpInEffect_3(struct Task * task);
|
||||||
|
bool8 EscalatorWarpInEffect_4(struct Task * task);
|
||||||
|
bool8 EscalatorWarpInEffect_5(struct Task * task);
|
||||||
|
bool8 EscalatorWarpInEffect_6(struct Task * task);
|
||||||
|
bool8 EscalatorWarpInEffect_7(struct Task * task);
|
||||||
|
|
||||||
|
bool8 (*const sEscalatorWarpFieldEffectFuncs[])(struct Task * task) = {
|
||||||
|
EscalatorWarpEffect_1,
|
||||||
|
EscalatorWarpEffect_2,
|
||||||
|
EscalatorWarpEffect_3,
|
||||||
|
EscalatorWarpEffect_4,
|
||||||
|
EscalatorWarpEffect_5,
|
||||||
|
EscalatorWarpEffect_6
|
||||||
|
};
|
||||||
|
|
||||||
|
bool8 (*const sEscalatorWarpInFieldEffectFuncs[])(struct Task * task) = {
|
||||||
|
EscalatorWarpInEffect_1,
|
||||||
|
EscalatorWarpInEffect_2,
|
||||||
|
EscalatorWarpInEffect_3,
|
||||||
|
EscalatorWarpInEffect_4,
|
||||||
|
EscalatorWarpInEffect_5,
|
||||||
|
EscalatorWarpInEffect_6,
|
||||||
|
EscalatorWarpInEffect_7
|
||||||
|
};
|
||||||
|
|
||||||
|
void StartEscalatorWarp(u8 metatileBehavior, u8 priority)
|
||||||
|
{
|
||||||
|
u8 taskId = CreateTask(Task_EscalatorWarpFieldEffect, priority);
|
||||||
|
gTasks[taskId].data[1] = 0;
|
||||||
|
if (metatileBehavior == MB_UP_ESCALATOR)
|
||||||
|
gTasks[taskId].data[1] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Task_EscalatorWarpFieldEffect(u8 taskId)
|
||||||
|
{
|
||||||
|
struct Task * task = &gTasks[taskId];
|
||||||
|
while (sEscalatorWarpFieldEffectFuncs[task->data[0]](task))
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 EscalatorWarpEffect_1(struct Task * task)
|
||||||
|
{
|
||||||
|
FreezeObjectEvents();
|
||||||
|
CameraObjectReset2();
|
||||||
|
StartEscalator(task->data[1]);
|
||||||
|
sub_81128BC(1);
|
||||||
|
task->data[0]++;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 EscalatorWarpEffect_2(struct Task * task)
|
||||||
|
{
|
||||||
|
struct ObjectEvent * objectEvent;
|
||||||
|
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||||
|
if (!ObjectEventIsMovementOverridden(objectEvent) || ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||||
|
{
|
||||||
|
ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(GetPlayerFacingDirection()));
|
||||||
|
task->data[0]++;
|
||||||
|
task->data[2] = 0;
|
||||||
|
task->data[3] = 0;
|
||||||
|
if ((u8)task->data[1] == 0)
|
||||||
|
{
|
||||||
|
task->data[0] = 4;
|
||||||
|
}
|
||||||
|
PlaySE(SE_ESUKA);
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 EscalatorWarpEffect_3(struct Task * task)
|
||||||
|
{
|
||||||
|
Escalator_AnimatePlayerGoingDown(task);
|
||||||
|
if (task->data[2] > 3)
|
||||||
|
{
|
||||||
|
Escalator_BeginFadeOutToNewMap();
|
||||||
|
task->data[0]++;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 EscalatorWarpEffect_4(struct Task * task)
|
||||||
|
{
|
||||||
|
Escalator_AnimatePlayerGoingDown(task);
|
||||||
|
Escalator_TransitionToWarpInEffect();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 EscalatorWarpEffect_5(struct Task * task)
|
||||||
|
{
|
||||||
|
Escalator_AnimatePlayerGoingUp(task);
|
||||||
|
if (task->data[2] > 3)
|
||||||
|
{
|
||||||
|
Escalator_BeginFadeOutToNewMap();
|
||||||
|
task->data[0]++;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 EscalatorWarpEffect_6(struct Task * task)
|
||||||
|
{
|
||||||
|
Escalator_AnimatePlayerGoingUp(task);
|
||||||
|
Escalator_TransitionToWarpInEffect();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Escalator_AnimatePlayerGoingDown(struct Task *task)
|
||||||
|
{
|
||||||
|
struct Sprite *sprite;
|
||||||
|
sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||||
|
sprite->pos2.x = Cos(0x84, task->data[2]);
|
||||||
|
sprite->pos2.y = Sin(0x94, task->data[2]);
|
||||||
|
task->data[3]++;
|
||||||
|
if (task->data[3] & 1)
|
||||||
|
{
|
||||||
|
task->data[2]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Escalator_AnimatePlayerGoingUp(struct Task *task)
|
||||||
|
{
|
||||||
|
struct Sprite *sprite;
|
||||||
|
sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||||
|
sprite->pos2.x = Cos(0x7c, task->data[2]);
|
||||||
|
sprite->pos2.y = Sin(0x76, task->data[2]);
|
||||||
|
task->data[3]++;
|
||||||
|
if (task->data[3] & 1)
|
||||||
|
{
|
||||||
|
task->data[2]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Escalator_BeginFadeOutToNewMap(void)
|
||||||
|
{
|
||||||
|
TryFadeOutOldMapMusic();
|
||||||
|
WarpFadeOutScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Escalator_TransitionToWarpInEffect(void)
|
||||||
|
{
|
||||||
|
if (!gPaletteFade.active && BGMusicStopped() == TRUE)
|
||||||
|
{
|
||||||
|
StopEscalator();
|
||||||
|
WarpIntoMap();
|
||||||
|
gFieldCallback = FieldCB_EscalatorWarpIn;
|
||||||
|
SetMainCallback2(CB2_LoadMap);
|
||||||
|
DestroyTask(FindTaskIdByFunc(Task_EscalatorWarpFieldEffect));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FieldCB_EscalatorWarpIn(void)
|
||||||
|
{
|
||||||
|
Overworld_PlaySpecialMapMusic();
|
||||||
|
pal_fill_for_maplights();
|
||||||
|
sub_8111CF0();
|
||||||
|
ScriptContext2_Enable();
|
||||||
|
FreezeObjectEvents();
|
||||||
|
CreateTask(Task_EscalatorWarpInFieldEffect, 0);
|
||||||
|
gFieldCallback = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Task_EscalatorWarpInFieldEffect(u8 taskId)
|
||||||
|
{
|
||||||
|
struct Task * task = &gTasks[taskId];
|
||||||
|
while (sEscalatorWarpInFieldEffectFuncs[task->data[0]](task))
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 EscalatorWarpInEffect_1(struct Task *task)
|
||||||
|
{
|
||||||
|
struct ObjectEvent *objectEvent;
|
||||||
|
s16 x;
|
||||||
|
s16 y;
|
||||||
|
u8 behavior;
|
||||||
|
CameraObjectReset2();
|
||||||
|
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||||
|
ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(DIR_EAST));
|
||||||
|
PlayerGetDestCoords(&x, &y);
|
||||||
|
behavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||||
|
task->data[0]++;
|
||||||
|
task->data[1] = 16;
|
||||||
|
if (behavior == MB_DOWN_ESCALATOR)
|
||||||
|
{
|
||||||
|
behavior = 1;
|
||||||
|
task->data[0] = 3;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
behavior = 0;
|
||||||
|
}
|
||||||
|
StartEscalator(behavior);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 EscalatorWarpInEffect_2(struct Task *task)
|
||||||
|
{
|
||||||
|
struct Sprite *sprite;
|
||||||
|
sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||||
|
sprite->pos2.x = Cos(0x84, task->data[1]);
|
||||||
|
sprite->pos2.y = Sin(0x94, task->data[1]);
|
||||||
|
task->data[0]++;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 EscalatorWarpInEffect_3(struct Task *task)
|
||||||
|
{
|
||||||
|
struct Sprite *sprite;
|
||||||
|
sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||||
|
sprite->pos2.x = Cos(0x84, task->data[1]);
|
||||||
|
sprite->pos2.y = Sin(0x94, task->data[1]);
|
||||||
|
task->data[2]++;
|
||||||
|
if (task->data[2] & 1)
|
||||||
|
{
|
||||||
|
task->data[1]--;
|
||||||
|
}
|
||||||
|
if (task->data[1] == 0)
|
||||||
|
{
|
||||||
|
sprite->pos2.x = 0;
|
||||||
|
sprite->pos2.y = 0;
|
||||||
|
task->data[0] = 5;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool8 EscalatorWarpInEffect_4(struct Task *task)
|
||||||
|
{
|
||||||
|
struct Sprite *sprite;
|
||||||
|
sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||||
|
sprite->pos2.x = Cos(0x7c, task->data[1]);
|
||||||
|
sprite->pos2.y = Sin(0x76, task->data[1]);
|
||||||
|
task->data[0]++;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 EscalatorWarpInEffect_5(struct Task *task)
|
||||||
|
{
|
||||||
|
struct Sprite *sprite;
|
||||||
|
sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||||
|
sprite->pos2.x = Cos(0x7c, task->data[1]);
|
||||||
|
sprite->pos2.y = Sin(0x76, task->data[1]);
|
||||||
|
task->data[2]++;
|
||||||
|
if (task->data[2] & 1)
|
||||||
|
{
|
||||||
|
task->data[1]--;
|
||||||
|
}
|
||||||
|
if (task->data[1] == 0)
|
||||||
|
{
|
||||||
|
sprite->pos2.x = 0;
|
||||||
|
sprite->pos2.y = 0;
|
||||||
|
task->data[0]++;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 EscalatorWarpInEffect_6(struct Task *task)
|
||||||
|
{
|
||||||
|
if (IsEscalatorMoving())
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
StopEscalator();
|
||||||
|
task->data[0]++;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 EscalatorWarpInEffect_7(struct Task *task)
|
||||||
|
{
|
||||||
|
struct ObjectEvent *objectEvent;
|
||||||
|
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||||
|
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||||
|
{
|
||||||
|
CameraObjectReset1();
|
||||||
|
ScriptContext2_Disable();
|
||||||
|
UnfreezeObjectEvents();
|
||||||
|
ObjectEventSetHeldMovement(objectEvent, GetWalkNormalMovementAction(DIR_EAST));
|
||||||
|
DestroyTask(FindTaskIdByFunc(Task_EscalatorWarpInFieldEffect));
|
||||||
|
sub_81128BC(2);
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|||||||
+16
-16
@@ -91,7 +91,7 @@ void FadeInFromBlack(void)
|
|||||||
palette_bg_faded_fill_black();
|
palette_bg_faded_fill_black();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_807DC18(void)
|
void WarpFadeOutScreen(void)
|
||||||
{
|
{
|
||||||
const struct MapHeader *header = warp1_get_mapheader();
|
const struct MapHeader *header = warp1_get_mapheader();
|
||||||
if (header->regionMapSectionId != gMapHeader.regionMapSectionId && sub_80F8110(header->regionMapSectionId, FALSE))
|
if (header->regionMapSectionId != gMapHeader.regionMapSectionId && sub_80F8110(header->regionMapSectionId, FALSE))
|
||||||
@@ -530,8 +530,8 @@ bool32 sub_807E418(void)
|
|||||||
void DoWarp(void)
|
void DoWarp(void)
|
||||||
{
|
{
|
||||||
ScriptContext2_Enable();
|
ScriptContext2_Enable();
|
||||||
sub_8055F88();
|
TryFadeOutOldMapMusic();
|
||||||
sub_807DC18();
|
WarpFadeOutScreen();
|
||||||
PlayRainStoppingSoundEffect();
|
PlayRainStoppingSoundEffect();
|
||||||
PlaySE(SE_KAIDAN);
|
PlaySE(SE_KAIDAN);
|
||||||
gFieldCallback = sub_807DF64;
|
gFieldCallback = sub_807DF64;
|
||||||
@@ -541,8 +541,8 @@ void DoWarp(void)
|
|||||||
void DoDiveWarp(void)
|
void DoDiveWarp(void)
|
||||||
{
|
{
|
||||||
ScriptContext2_Enable();
|
ScriptContext2_Enable();
|
||||||
sub_8055F88();
|
TryFadeOutOldMapMusic();
|
||||||
sub_807DC18();
|
WarpFadeOutScreen();
|
||||||
PlayRainStoppingSoundEffect();
|
PlayRainStoppingSoundEffect();
|
||||||
gFieldCallback = sub_807DF64;
|
gFieldCallback = sub_807DF64;
|
||||||
CreateTask(sub_807E718, 10);
|
CreateTask(sub_807E718, 10);
|
||||||
@@ -604,7 +604,7 @@ void sub_807E58C(void)
|
|||||||
void sub_807E59C(void)
|
void sub_807E59C(void)
|
||||||
{
|
{
|
||||||
ScriptContext2_Enable();
|
ScriptContext2_Enable();
|
||||||
sub_8055F88();
|
TryFadeOutOldMapMusic();
|
||||||
CreateTask(sub_807E784, 10);
|
CreateTask(sub_807E784, 10);
|
||||||
gFieldCallback = sub_807DF94;
|
gFieldCallback = sub_807DF94;
|
||||||
}
|
}
|
||||||
@@ -612,7 +612,7 @@ void sub_807E59C(void)
|
|||||||
void sub_807E5C4(void)
|
void sub_807E5C4(void)
|
||||||
{
|
{
|
||||||
ScriptContext2_Enable();
|
ScriptContext2_Enable();
|
||||||
sub_807DC18();
|
WarpFadeOutScreen();
|
||||||
CreateTask(sub_807E718, 10);
|
CreateTask(sub_807E718, 10);
|
||||||
gFieldCallback = nullsub_60;
|
gFieldCallback = nullsub_60;
|
||||||
}
|
}
|
||||||
@@ -641,8 +641,8 @@ static void sub_807E5EC(u8 taskId)
|
|||||||
void DoCableClubWarp(void)
|
void DoCableClubWarp(void)
|
||||||
{
|
{
|
||||||
ScriptContext2_Enable();
|
ScriptContext2_Enable();
|
||||||
sub_8055F88();
|
TryFadeOutOldMapMusic();
|
||||||
sub_807DC18();
|
WarpFadeOutScreen();
|
||||||
PlaySE(SE_KAIDAN);
|
PlaySE(SE_KAIDAN);
|
||||||
CreateTask(sub_807E5EC, 10);
|
CreateTask(sub_807E5EC, 10);
|
||||||
}
|
}
|
||||||
@@ -655,7 +655,7 @@ static void sub_807E678(u8 taskId)
|
|||||||
case 0:
|
case 0:
|
||||||
ClearLinkCallback_2();
|
ClearLinkCallback_2();
|
||||||
FadeScreen(1, 0);
|
FadeScreen(1, 0);
|
||||||
sub_8055F88();
|
TryFadeOutOldMapMusic();
|
||||||
PlaySE(SE_KAIDAN);
|
PlaySE(SE_KAIDAN);
|
||||||
data[0]++;
|
data[0]++;
|
||||||
break;
|
break;
|
||||||
@@ -719,7 +719,7 @@ static void sub_807E784(u8 taskId)
|
|||||||
case 1:
|
case 1:
|
||||||
if (!sub_805DAD0())
|
if (!sub_805DAD0())
|
||||||
{
|
{
|
||||||
sub_807DC18();
|
WarpFadeOutScreen();
|
||||||
task->data[0]++;
|
task->data[0]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -773,14 +773,14 @@ static void sub_807E80C(u8 taskId)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
sub_8055F88();
|
TryFadeOutOldMapMusic();
|
||||||
sub_807DC18();
|
WarpFadeOutScreen();
|
||||||
PlayRainStoppingSoundEffect();
|
PlayRainStoppingSoundEffect();
|
||||||
task->data[0] = 0;
|
task->data[0] = 0;
|
||||||
task->func = sub_807E718;
|
task->func = sub_807E718;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
sub_8055F88();
|
TryFadeOutOldMapMusic();
|
||||||
PlayRainStoppingSoundEffect();
|
PlayRainStoppingSoundEffect();
|
||||||
task->data[0] = 0;
|
task->data[0] = 0;
|
||||||
task->func = sub_807E718;
|
task->func = sub_807E718;
|
||||||
@@ -808,7 +808,7 @@ static void sub_807E980(u8 taskId)
|
|||||||
data[15]--;
|
data[15]--;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sub_8055F88();
|
TryFadeOutOldMapMusic();
|
||||||
PlayRainStoppingSoundEffect();
|
PlayRainStoppingSoundEffect();
|
||||||
playerSpr->oam.priority = 1;
|
playerSpr->oam.priority = 1;
|
||||||
sub_807EB64(data[1], &data[2], &data[3]);
|
sub_807EB64(data[1], &data[2], &data[3]);
|
||||||
@@ -822,7 +822,7 @@ static void sub_807E980(u8 taskId)
|
|||||||
data[15]++;
|
data[15]++;
|
||||||
if (data[15] >= 12)
|
if (data[15] >= 12)
|
||||||
{
|
{
|
||||||
sub_807DC18();
|
WarpFadeOutScreen();
|
||||||
data[0]++;
|
data[0]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
+1
-1
@@ -295,7 +295,7 @@ static void Task_Seagallop_1(u8 taskId)
|
|||||||
if (++task->data[1] == 140)
|
if (++task->data[1] == 140)
|
||||||
{
|
{
|
||||||
Overworld_FadeOutMapMusic();
|
Overworld_FadeOutMapMusic();
|
||||||
sub_807DC18();
|
WarpFadeOutScreen();
|
||||||
task->func = Task_Seagallop_2;
|
task->func = Task_Seagallop_2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user