Port Lavaridge Gym B1F Warp from Emerald

This commit is contained in:
PikalaxALT
2020-02-28 13:18:21 -05:00
parent 8a09273846
commit 9cf19244fa
9 changed files with 294 additions and 644 deletions
+55 -597
View File
@@ -5,548 +5,6 @@
.text
thumb_func_start StartLavaridgeGymB1FWarp
StartLavaridgeGymB1FWarp: @ 8084F2C
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r0, _08084F40 @ =Task_LavaridgeGymB1FWarp
bl CreateTask
pop {r0}
bx r0
.align 2, 0
_08084F40: .4byte Task_LavaridgeGymB1FWarp
thumb_func_end StartLavaridgeGymB1FWarp
thumb_func_start Task_LavaridgeGymB1FWarp
Task_LavaridgeGymB1FWarp: @ 8084F44
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
ldr r6, _08084F8C @ =sLavaridgeGymB1FWarpEffectFuncs
ldr r2, _08084F90 @ =gTasks
ldr r5, _08084F94 @ =gPlayerAvatar
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r4, r1, r2
_08084F58:
movs r0, 0x8
ldrsh r3, [r4, r0]
lsls r3, 2
adds r3, r6
ldrb r0, [r5, 0x5]
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r0, _08084F98 @ =gObjectEvents
adds r1, r0
ldrb r0, [r5, 0x4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _08084F9C @ =gSprites
adds r2, r0
ldr r3, [r3]
adds r0, r4, 0
bl _call_via_r3
lsls r0, 24
cmp r0, 0
bne _08084F58
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08084F8C: .4byte sLavaridgeGymB1FWarpEffectFuncs
_08084F90: .4byte gTasks
_08084F94: .4byte gPlayerAvatar
_08084F98: .4byte gObjectEvents
_08084F9C: .4byte gSprites
thumb_func_end Task_LavaridgeGymB1FWarp
thumb_func_start LavaridgeGymB1FWarpEffect_1
LavaridgeGymB1FWarpEffect_1: @ 8084FA0
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
bl FreezeObjectEvents
bl CameraObjectReset2
movs r0, 0
bl SetCameraPanningCallback
ldr r0, _08084FD4 @ =gPlayerAvatar
movs r2, 0x1
strb r2, [r0, 0x6]
ldrb r0, [r5, 0x3]
movs r1, 0x4
orrs r0, r1
strb r0, [r5, 0x3]
strh r2, [r4, 0xA]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0x1
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08084FD4: .4byte gPlayerAvatar
thumb_func_end LavaridgeGymB1FWarpEffect_1
thumb_func_start LavaridgeGymB1FWarpEffect_2
LavaridgeGymB1FWarpEffect_2: @ 8084FD8
push {r4,lr}
adds r4, r0, 0
movs r0, 0xA
ldrsh r1, [r4, r0]
movs r0, 0
bl SetCameraPanning
ldrh r0, [r4, 0xA]
negs r0, r0
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x7
ble _08085004
movs r0, 0
strh r0, [r4, 0xC]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_08085004:
movs r0, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end LavaridgeGymB1FWarpEffect_2
thumb_func_start LavaridgeGymB1FWarpEffect_3
LavaridgeGymB1FWarpEffect_3: @ 808500C
push {r4,r5,lr}
adds r4, r0, 0
movs r0, 0
strh r0, [r2, 0x26]
movs r0, 0x1
strh r0, [r4, 0xE]
ldr r3, _08085054 @ =gFieldEffectArguments
movs r5, 0x10
ldrsh r0, [r1, r5]
str r0, [r3]
movs r5, 0x12
ldrsh r0, [r1, r5]
str r0, [r3, 0x4]
adds r0, r2, 0
adds r0, 0x43
ldrb r0, [r0]
subs r0, 0x1
str r0, [r3, 0x8]
ldrb r0, [r2, 0x5]
lsls r0, 28
lsrs r0, 30
str r0, [r3, 0xC]
movs r0, 0x32
bl FieldEffectStart
movs r0, 0xAB
bl PlaySE
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0x1
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08085054: .4byte gFieldEffectArguments
thumb_func_end LavaridgeGymB1FWarpEffect_3
thumb_func_start LavaridgeGymB1FWarpEffect_4
LavaridgeGymB1FWarpEffect_4: @ 8085058
push {r4-r7,lr}
adds r4, r0, 0
adds r6, r1, 0
adds r5, r2, 0
movs r0, 0xA
ldrsh r1, [r4, r0]
movs r0, 0
bl SetCameraPanning
ldrh r0, [r4, 0xA]
negs r2, r0
strh r2, [r4, 0xA]
ldrh r0, [r4, 0xC]
adds r1, r0, 0x1
strh r1, [r4, 0xC]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0x11
bgt _08085092
movs r0, 0x1
ands r1, r0
cmp r1, 0
bne _080850A4
lsls r0, r2, 16
asrs r0, 16
cmp r0, 0x3
bgt _080850A4
lsls r0, r2, 1
b _080850A2
_08085092:
movs r0, 0x4
ands r1, r0
cmp r1, 0
bne _080850A4
lsls r0, r2, 16
cmp r0, 0
ble _080850A4
asrs r0, 17
_080850A2:
strh r0, [r4, 0xA]
_080850A4:
movs r1, 0xC
ldrsh r0, [r4, r1]
cmp r0, 0x6
ble _080850F0
adds r0, r5, 0
adds r0, 0x29
movs r1, 0
ldrsb r1, [r0, r1]
lsls r2, r1, 17
negs r2, r2
movs r7, 0x26
ldrsh r3, [r5, r7]
movs r7, 0x22
ldrsh r0, [r5, r7]
adds r0, r1
ldr r1, _080850E8 @ =gSpriteCoordOffsetY
movs r7, 0
ldrsh r1, [r1, r7]
adds r0, r1
asrs r2, 16
adds r0, r2
cmn r3, r0
ble _080850EC
ldrh r0, [r5, 0x26]
ldrh r1, [r4, 0xE]
subs r0, r1
strh r0, [r5, 0x26]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0x7
bgt _080850F0
adds r0, r1, 0x1
strh r0, [r4, 0xE]
b _080850F0
.align 2, 0
_080850E8: .4byte gSpriteCoordOffsetY
_080850EC:
movs r0, 0x1
strh r0, [r4, 0x10]
_080850F0:
ldrh r2, [r4, 0x12]
movs r1, 0x12
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0808512E
movs r7, 0x26
ldrsh r1, [r5, r7]
movs r0, 0x10
negs r0, r0
cmp r1, r0
bge _0808512E
adds r0, r2, 0x1
strh r0, [r4, 0x12]
ldrb r0, [r6, 0x3]
movs r2, 0x4
orrs r0, r2
strb r0, [r6, 0x3]
ldrb r1, [r5, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r1
orrs r0, r2
strb r0, [r5, 0x5]
adds r2, r5, 0
adds r2, 0x42
ldrb r1, [r2]
movs r0, 0x3F
ands r0, r1
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
_0808512E:
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0
bne _08085144
movs r7, 0x10
ldrsh r0, [r4, r7]
cmp r0, 0
beq _08085144
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_08085144:
movs r0, 0
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end LavaridgeGymB1FWarpEffect_4
thumb_func_start LavaridgeGymB1FWarpEffect_5
LavaridgeGymB1FWarpEffect_5: @ 808514C
push {r4,lr}
adds r4, r0, 0
bl TryFadeOutOldMapMusic
bl WarpFadeOutScreen
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r0, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end LavaridgeGymB1FWarpEffect_5
thumb_func_start LavaridgeGymB1FWarpEffect_6
LavaridgeGymB1FWarpEffect_6: @ 8085168
push {lr}
ldr r0, _080851A8 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080851A0
bl BGMusicStopped
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080851A0
bl WarpIntoMap
ldr r1, _080851AC @ =gFieldCallback
ldr r0, _080851B0 @ =FieldCB_LavaridgeGymB1FWarpExit
str r0, [r1]
ldr r0, _080851B4 @ =CB2_LoadMap
bl SetMainCallback2
ldr r0, _080851B8 @ =Task_LavaridgeGymB1FWarp
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_080851A0:
movs r0, 0
pop {r1}
bx r1
.align 2, 0
_080851A8: .4byte gPaletteFade
_080851AC: .4byte gFieldCallback
_080851B0: .4byte FieldCB_LavaridgeGymB1FWarpExit
_080851B4: .4byte CB2_LoadMap
_080851B8: .4byte Task_LavaridgeGymB1FWarp
thumb_func_end LavaridgeGymB1FWarpEffect_6
thumb_func_start FieldCB_LavaridgeGymB1FWarpExit
FieldCB_LavaridgeGymB1FWarpExit: @ 80851BC
push {lr}
bl Overworld_PlaySpecialMapMusic
bl pal_fill_for_maplights
bl sub_8111CF0
bl ScriptContext2_Enable
ldr r0, _080851E0 @ =gFieldCallback
movs r1, 0
str r1, [r0]
ldr r0, _080851E4 @ =Task_LavaridgeGymB1FWarpExit
bl CreateTask
pop {r0}
bx r0
.align 2, 0
_080851E0: .4byte gFieldCallback
_080851E4: .4byte Task_LavaridgeGymB1FWarpExit
thumb_func_end FieldCB_LavaridgeGymB1FWarpExit
thumb_func_start Task_LavaridgeGymB1FWarpExit
Task_LavaridgeGymB1FWarpExit: @ 80851E8
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
ldr r6, _08085230 @ =sLavaridgeGymB1FWarpExitEffectFuncs
ldr r2, _08085234 @ =gTasks
ldr r5, _08085238 @ =gPlayerAvatar
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r4, r1, r2
_080851FC:
movs r0, 0x8
ldrsh r3, [r4, r0]
lsls r3, 2
adds r3, r6
ldrb r0, [r5, 0x5]
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r0, _0808523C @ =gObjectEvents
adds r1, r0
ldrb r0, [r5, 0x4]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _08085240 @ =gSprites
adds r2, r0
ldr r3, [r3]
adds r0, r4, 0
bl _call_via_r3
lsls r0, 24
cmp r0, 0
bne _080851FC
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08085230: .4byte sLavaridgeGymB1FWarpExitEffectFuncs
_08085234: .4byte gTasks
_08085238: .4byte gPlayerAvatar
_0808523C: .4byte gObjectEvents
_08085240: .4byte gSprites
thumb_func_end Task_LavaridgeGymB1FWarpExit
thumb_func_start LavaridgeGymB1FWarpExitEffect_1
LavaridgeGymB1FWarpExitEffect_1: @ 8085244
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
bl CameraObjectReset2
bl FreezeObjectEvents
ldr r1, _08085270 @ =gPlayerAvatar
movs r0, 0x1
strb r0, [r1, 0x6]
ldrb r0, [r4, 0x1]
movs r1, 0x20
orrs r0, r1
strb r0, [r4, 0x1]
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
movs r0, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08085270: .4byte gPlayerAvatar
thumb_func_end LavaridgeGymB1FWarpExitEffect_1
thumb_func_start LavaridgeGymB1FWarpExitEffect_2
LavaridgeGymB1FWarpExitEffect_2: @ 8085274
push {r4-r6,lr}
adds r4, r0, 0
adds r5, r1, 0
adds r6, r2, 0
bl IsWeatherNotFadingIn
lsls r0, 24
cmp r0, 0
beq _080852B4
ldr r1, _080852BC @ =gFieldEffectArguments
movs r2, 0x10
ldrsh r0, [r5, r2]
str r0, [r1]
movs r2, 0x12
ldrsh r0, [r5, r2]
str r0, [r1, 0x4]
adds r0, r6, 0
adds r0, 0x43
ldrb r0, [r0]
subs r0, 0x1
str r0, [r1, 0x8]
ldrb r0, [r6, 0x5]
lsls r0, 28
lsrs r0, 30
str r0, [r1, 0xC]
movs r0, 0x31
bl FieldEffectStart
strh r0, [r4, 0xA]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_080852B4:
movs r0, 0
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_080852BC: .4byte gFieldEffectArguments
thumb_func_end LavaridgeGymB1FWarpExitEffect_2
thumb_func_start LavaridgeGymB1FWarpExitEffect_3
LavaridgeGymB1FWarpExitEffect_3: @ 80852C0
push {r4,lr}
adds r2, r0, 0
adds r4, r1, 0
movs r0, 0xA
ldrsh r1, [r2, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _08085310 @ =gSprites
adds r0, r1
adds r0, 0x2B
ldrb r0, [r0]
cmp r0, 0x1
bls _08085308
ldrh r0, [r2, 0x8]
adds r0, 0x1
strh r0, [r2, 0x8]
ldrb r1, [r4, 0x1]
movs r0, 0x21
negs r0, r0
ands r0, r1
strb r0, [r4, 0x1]
bl CameraObjectReset1
movs r0, 0xA8
bl PlaySE
movs r0, 0x4
bl sub_8064194
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl ObjectEventSetHeldMovement
_08085308:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08085310: .4byte gSprites
thumb_func_end LavaridgeGymB1FWarpExitEffect_3
thumb_func_start LavaridgeGymB1FWarpExitEffect_4
LavaridgeGymB1FWarpExitEffect_4: @ 8085314
push {lr}
adds r0, r1, 0
bl ObjectEventClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _0808533E
ldr r1, _08085344 @ =gPlayerAvatar
movs r0, 0
strb r0, [r1, 0x6]
bl ScriptContext2_Disable
bl UnfreezeObjectEvents
ldr r0, _08085348 @ =Task_LavaridgeGymB1FWarpExit
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_0808533E:
movs r0, 0
pop {r1}
bx r1
.align 2, 0
_08085344: .4byte gPlayerAvatar
_08085348: .4byte Task_LavaridgeGymB1FWarpExit
thumb_func_end LavaridgeGymB1FWarpExitEffect_4
thumb_func_start FldEff_LavaridgeGymWarp
FldEff_LavaridgeGymWarp: @ 808534C
push {r4,lr}
@@ -1406,7 +864,7 @@ _080859C4:
FieldCallback_EscapeRopeExit: @ 80859D4
push {lr}
bl Overworld_PlaySpecialMapMusic
bl pal_fill_for_maplights
bl WarpFadeInScreen
bl sub_8111CF0
bl ScriptContext2_Enable
bl FreezeObjectEvents
@@ -1872,7 +1330,7 @@ _08085D84: .4byte Task_DoTeleportFieldEffect
FieldCallback_TeleportIn: @ 8085D88
push {lr}
bl Overworld_PlaySpecialMapMusic
bl pal_fill_for_maplights
bl WarpFadeInScreen
bl sub_8111CF0
bl ScriptContext2_Enable
bl FreezeObjectEvents
@@ -3372,10 +2830,10 @@ _0808693E:
bx r0
thumb_func_end sub_8086920
thumb_func_start sub_8086944
sub_8086944: @ 8086944
thumb_func_start FldEff_UseSurf
FldEff_UseSurf: @ 8086944
push {r4,lr}
ldr r0, _08086980 @ =sub_8086990
ldr r0, _08086980 @ =Task_FldEffUseSurf
movs r1, 0xFF
bl CreateTask
lsls r0, 24
@@ -3389,7 +2847,7 @@ sub_8086944: @ 8086944
ldr r0, [r0]
strh r0, [r1, 0x26]
bl sav1_reset_battle_music_maybe
ldr r4, _0808698C @ =0x00000131
ldr r4, _0808698C @ =0x00000131 @MUS_NAMINORI
adds r0, r4, 0
bl sub_8056124
cmp r0, 0
@@ -3402,19 +2860,19 @@ _08086978:
pop {r1}
bx r1
.align 2, 0
_08086980: .4byte sub_8086990
_08086980: .4byte Task_FldEffUseSurf
_08086984: .4byte gTasks
_08086988: .4byte gFieldEffectArguments
_0808698C: .4byte 0x00000131
thumb_func_end sub_8086944
_0808698C: .4byte 0x00000131 @MUS_NAMINORI
thumb_func_end FldEff_UseSurf
thumb_func_start sub_8086990
sub_8086990: @ 8086990
thumb_func_start Task_FldEffUseSurf
Task_FldEffUseSurf: @ 8086990
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r3, _080869B8 @ =gUnknown_83CC154
ldr r3, _080869B8 @ =sUseSurfEffectFuncs
ldr r2, _080869BC @ =gTasks
lsls r0, r1, 2
adds r0, r1
@@ -3429,12 +2887,12 @@ sub_8086990: @ 8086990
pop {r0}
bx r0
.align 2, 0
_080869B8: .4byte gUnknown_83CC154
_080869B8: .4byte sUseSurfEffectFuncs
_080869BC: .4byte gTasks
thumb_func_end sub_8086990
thumb_func_end Task_FldEffUseSurf
thumb_func_start sub_80869C0
sub_80869C0: @ 80869C0
thumb_func_start UseSurfEffect_1
UseSurfEffect_1: @ 80869C0
push {r4-r6,lr}
mov r6, r8
push {r6}
@@ -3476,10 +2934,10 @@ sub_80869C0: @ 80869C0
.align 2, 0
_08086A18: .4byte gPlayerAvatar
_08086A1C: .4byte gObjectEvents
thumb_func_end sub_80869C0
thumb_func_end UseSurfEffect_1
thumb_func_start sub_8086A20
sub_8086A20: @ 8086A20
thumb_func_start UseSurfEffect_2
UseSurfEffect_2: @ 8086A20
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, _08086A64 @ =gPlayerAvatar
@@ -3514,10 +2972,10 @@ _08086A5C:
.align 2, 0
_08086A64: .4byte gPlayerAvatar
_08086A68: .4byte gObjectEvents
thumb_func_end sub_8086A20
thumb_func_end UseSurfEffect_2
thumb_func_start sub_8086A6C
sub_8086A6C: @ 8086A6C
thumb_func_start UseSurfEffect_3
UseSurfEffect_3: @ 8086A6C
push {r4,lr}
adds r4, r0, 0
ldr r0, _08086AA8 @ =gPlayerAvatar
@@ -3551,10 +3009,10 @@ _08086AA2:
_08086AA8: .4byte gPlayerAvatar
_08086AAC: .4byte gObjectEvents
_08086AB0: .4byte gFieldEffectArguments
thumb_func_end sub_8086A6C
thumb_func_end UseSurfEffect_3
thumb_func_start sub_8086AB4
sub_8086AB4: @ 8086AB4
thumb_func_start UseSurfEffect_4
UseSurfEffect_4: @ 8086AB4
push {r4-r6,lr}
adds r6, r0, 0
movs r0, 0x6
@@ -3609,10 +3067,10 @@ _08086B1E:
_08086B24: .4byte gPlayerAvatar
_08086B28: .4byte gObjectEvents
_08086B2C: .4byte gFieldEffectArguments
thumb_func_end sub_8086AB4
thumb_func_end UseSurfEffect_4
thumb_func_start sub_8086B30
sub_8086B30: @ 8086B30
thumb_func_start UseSurfEffect_5
UseSurfEffect_5: @ 8086B30
push {r4,r5,lr}
ldr r5, _08086B9C @ =gPlayerAvatar
ldrb r1, [r5, 0x5]
@@ -3647,7 +3105,7 @@ sub_8086B30: @ 8086B30
bl ScriptContext2_Disable
movs r0, 0x9
bl FieldEffectActiveListRemove
ldr r0, _08086BA4 @ =sub_8086990
ldr r0, _08086BA4 @ =Task_FldEffUseSurf
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -3661,11 +3119,11 @@ _08086B96:
.align 2, 0
_08086B9C: .4byte gPlayerAvatar
_08086BA0: .4byte gObjectEvents
_08086BA4: .4byte sub_8086990
thumb_func_end sub_8086B30
_08086BA4: .4byte Task_FldEffUseSurf
thumb_func_end UseSurfEffect_5
thumb_func_start sub_8086BA8
sub_8086BA8: @ 8086BA8
thumb_func_start FldEff_Unk41
FldEff_Unk41: @ 8086BA8
push {lr}
ldr r0, _08086BC8 @ =gQuestLogState
ldrb r0, [r0]
@@ -3675,7 +3133,7 @@ sub_8086BA8: @ 8086BA8
movs r1, 0x59
bl sub_811278C
_08086BBA:
ldr r0, _08086BCC @ =sub_8086BD0
ldr r0, _08086BCC @ =Task_FldEffUnk41
movs r1, 0xFF
bl CreateTask
movs r0, 0
@@ -3683,16 +3141,16 @@ _08086BBA:
bx r1
.align 2, 0
_08086BC8: .4byte gQuestLogState
_08086BCC: .4byte sub_8086BD0
thumb_func_end sub_8086BA8
_08086BCC: .4byte Task_FldEffUnk41
thumb_func_end FldEff_Unk41
thumb_func_start sub_8086BD0
sub_8086BD0: @ 8086BD0
thumb_func_start Task_FldEffUnk41
Task_FldEffUnk41: @ 8086BD0
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r3, _08086BF8 @ =gUnknown_83CC168
ldr r3, _08086BF8 @ =sUnk41EffectFuncs
ldr r2, _08086BFC @ =gTasks
lsls r0, r1, 2
adds r0, r1
@@ -3707,12 +3165,12 @@ sub_8086BD0: @ 8086BD0
pop {r0}
bx r0
.align 2, 0
_08086BF8: .4byte gUnknown_83CC168
_08086BF8: .4byte sUnk41EffectFuncs
_08086BFC: .4byte gTasks
thumb_func_end sub_8086BD0
thumb_func_end Task_FldEffUnk41
thumb_func_start sub_8086C00
sub_8086C00: @ 8086C00
thumb_func_start Unk41Effect_1
Unk41Effect_1: @ 8086C00
push {r4,lr}
adds r4, r0, 0
bl ScriptContext2_Enable
@@ -3728,10 +3186,10 @@ sub_8086C00: @ 8086C00
bx r0
.align 2, 0
_08086C20: .4byte gPlayerAvatar
thumb_func_end sub_8086C00
thumb_func_end Unk41Effect_1
thumb_func_start sub_8086C24
sub_8086C24: @ 8086C24
thumb_func_start Unk41Effect_2
Unk41Effect_2: @ 8086C24
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, _08086C68 @ =gPlayerAvatar
@@ -3766,10 +3224,10 @@ _08086C60:
.align 2, 0
_08086C68: .4byte gPlayerAvatar
_08086C6C: .4byte gObjectEvents
thumb_func_end sub_8086C24
thumb_func_end Unk41Effect_2
thumb_func_start sub_8086C70
sub_8086C70: @ 8086C70
thumb_func_start Unk41Effect_3
Unk41Effect_3: @ 8086C70
push {r4-r6,lr}
adds r6, r0, 0
ldr r5, _08086C9C @ =gPlayerAvatar
@@ -3833,10 +3291,10 @@ _08086CEE:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_8086C70
thumb_func_end Unk41Effect_3
thumb_func_start sub_8086CF4
sub_8086CF4: @ 8086CF4
thumb_func_start Unk41Effect_4
Unk41Effect_4: @ 8086CF4
push {r4,lr}
ldr r4, _08086D2C @ =gPlayerAvatar
ldrb r1, [r4, 0x5]
@@ -3853,7 +3311,7 @@ sub_8086CF4: @ 8086CF4
strb r0, [r4, 0x6]
movs r0, 0x41
bl FieldEffectActiveListRemove
ldr r0, _08086D34 @ =sub_8086BD0
ldr r0, _08086D34 @ =Task_FldEffUnk41
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -3865,8 +3323,8 @@ _08086D26:
.align 2, 0
_08086D2C: .4byte gPlayerAvatar
_08086D30: .4byte gObjectEvents
_08086D34: .4byte sub_8086BD0
thumb_func_end sub_8086CF4
_08086D34: .4byte Task_FldEffUnk41
thumb_func_end Unk41Effect_4
thumb_func_start sub_8086D38
sub_8086D38: @ 8086D38
+6 -6
View File
@@ -2720,8 +2720,8 @@ StartAshFieldEffect: @ 80DC23C
_080DC26C: .4byte gFieldEffectArguments
thumb_func_end StartAshFieldEffect
thumb_func_start oei_ash
oei_ash: @ 80DC270
thumb_func_start FldEff_Ash
FldEff_Ash: @ 80DC270
push {r4,r5,lr}
sub sp, 0x4
ldr r5, _080DC2F0 @ =gFieldEffectArguments
@@ -2789,7 +2789,7 @@ _080DC2E6:
_080DC2F0: .4byte gFieldEffectArguments
_080DC2F4: .4byte gFieldEffectObjectTemplatePointers
_080DC2F8: .4byte gSprites
thumb_func_end oei_ash
thumb_func_end FldEff_Ash
thumb_func_start sub_80DC2FC
sub_80DC2FC: @ 80DC2FC
@@ -2906,8 +2906,8 @@ _080DC3C8:
bx r0
thumb_func_end sub_80DC3A8
thumb_func_start sub_80DC3D0
sub_80DC3D0: @ 80DC3D0
thumb_func_start FldEff_SurfBlob
FldEff_SurfBlob: @ 80DC3D0
push {r4,r5,lr}
ldr r4, _080DC43C @ =gFieldEffectArguments
adds r1, r4, 0x4
@@ -2964,7 +2964,7 @@ _080DC43C: .4byte gFieldEffectArguments
_080DC440: .4byte gFieldEffectObjectTemplatePointers
_080DC444: .4byte gSprites
_080DC448: .4byte 0x0000ffff
thumb_func_end sub_80DC3D0
thumb_func_end FldEff_SurfBlob
thumb_func_start sub_80DC44C
sub_80DC44C: @ 80DC44C
+11 -27
View File
@@ -6,22 +6,6 @@
.section .rodata
.align 2
.align 2
sLavaridgeGymB1FWarpEffectFuncs:: @ 83CC0A4 dataptr
.4byte LavaridgeGymB1FWarpEffect_1
.4byte LavaridgeGymB1FWarpEffect_2
.4byte LavaridgeGymB1FWarpEffect_3
.4byte LavaridgeGymB1FWarpEffect_4
.4byte LavaridgeGymB1FWarpEffect_5
.4byte LavaridgeGymB1FWarpEffect_6
.align 2
sLavaridgeGymB1FWarpExitEffectFuncs:: @ 83CC0BC dataptr
.4byte LavaridgeGymB1FWarpExitEffect_1
.4byte LavaridgeGymB1FWarpExitEffect_2
.4byte LavaridgeGymB1FWarpExitEffect_3
.4byte LavaridgeGymB1FWarpExitEffect_4
.align 2
sLavaridgeGym1FWarpEffectFuncs:: @ 83CC0CC dataptr
.4byte LavaridgeGym1FWarpEffect_1
@@ -80,19 +64,19 @@ sShowMonIndoorsEffectFuncs:: @ 83CC138 dataptr
.4byte ShowMonEffect_Indoors_7
.align 2
gUnknown_83CC154:: @ 83CC154 dataptr
.4byte sub_80869C0
.4byte sub_8086A20
.4byte sub_8086A6C
.4byte sub_8086AB4
.4byte sub_8086B30
sUseSurfEffectFuncs:: @ 83CC154 dataptr
.4byte UseSurfEffect_1
.4byte UseSurfEffect_2
.4byte UseSurfEffect_3
.4byte UseSurfEffect_4
.4byte UseSurfEffect_5
.align 2
gUnknown_83CC168:: @ 83CC168 dataptr
.4byte sub_8086C00
.4byte sub_8086C24
.4byte sub_8086C70
.4byte sub_8086CF4
sUnk41EffectFuncs:: @ 83CC168 dataptr
.4byte Unk41Effect_1
.4byte Unk41Effect_2
.4byte Unk41Effect_3
.4byte Unk41Effect_4
gUnknown_83CC178:: @ 83CC178 dataptr (incomplete)
.4byte sub_8086E70
+4 -4
View File
@@ -102,15 +102,15 @@ gFldEffScript_FieldMoveShowMon:: @ 81D97F0
end
gFldEffScript_Ash:: @ 81D97F6
loadfadedpal_callnative gUnknown_83A5348, oei_ash
loadfadedpal_callnative gUnknown_83A5348, FldEff_Ash
end
gFldEffScript_SurfBlob:: @ 81D9800
callnative sub_80DC3D0
callnative FldEff_SurfBlob
end
gFldEffScript_UseSurf:: @ 81D9806
callnative sub_8086944
callnative FldEff_UseSurf
end
gFldEffScript_Dust:: @ 81D980C
@@ -326,7 +326,7 @@ gFldEffScript_SmileyFaceIcon:: @ 81D998C
end
gFldEffScript_Unk41:: @ 81D9992
callnative sub_8086BA8
callnative FldEff_Unk41
end
gFldEffScript_DoubleExclMarkIcon:: @ 81D9998
+1
View File
@@ -117,6 +117,7 @@ bool32 RfuUnionObjectIsInvisible(u8 objectEventId);
void RfuUnionObjectStartWarp(u8 objectEventId, u8 animNo);
bool32 RfuUnionObjectIsWarping(u8 objectEventId);
u8 sub_8063F2C(u8 direction);
u8 sub_8064194(u8 direction);
void sub_805F378(s16 x, s16 y);
+1 -1
View File
@@ -16,7 +16,7 @@ void WarpFadeOutScreen(void);
void FieldCallback_ReturnToEventScript2(void);
void FadeInFromBlack(void);
void FadeTransition_FadeInOnReturnToStartMenu(void);
void pal_fill_for_maplights(void);
void WarpFadeInScreen(void);
void sub_807DCE4(void);
+209 -2
View File
@@ -1099,7 +1099,7 @@ bool8 (*const sFallWarpEffectCBPtrs[])(struct Task * task) = {
void FieldCB_FallWarpExit(void)
{
Overworld_PlaySpecialMapMusic();
pal_fill_for_maplights();
WarpFadeInScreen();
sub_8111CF0();
ScriptContext2_Enable();
FreezeObjectEvents();
@@ -1403,7 +1403,7 @@ void Escalator_TransitionToWarpInEffect(void)
void FieldCB_EscalatorWarpIn(void)
{
Overworld_PlaySpecialMapMusic();
pal_fill_for_maplights();
WarpFadeInScreen();
sub_8111CF0();
ScriptContext2_Enable();
FreezeObjectEvents();
@@ -1667,3 +1667,210 @@ bool8 dive_3_unknown(struct Task * task)
}
return FALSE;
}
void Task_LavaridgeGymB1FWarp(u8 taskId);
bool8 LavaridgeGymB1FWarpEffect_1(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite);
bool8 LavaridgeGymB1FWarpEffect_2(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite);
bool8 LavaridgeGymB1FWarpEffect_3(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite);
bool8 LavaridgeGymB1FWarpEffect_4(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite);
bool8 LavaridgeGymB1FWarpEffect_5(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite);
bool8 LavaridgeGymB1FWarpEffect_6(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite);
void FieldCB_LavaridgeGymB1FWarpExit(void);
void Task_LavaridgeGymB1FWarpExit(u8 taskId);
bool8 LavaridgeGymB1FWarpExitEffect_1(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite);
bool8 LavaridgeGymB1FWarpExitEffect_2(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite);
bool8 LavaridgeGymB1FWarpExitEffect_3(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite);
bool8 LavaridgeGymB1FWarpExitEffect_4(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite);
bool8 (*const sLavaridgeGymB1FWarpEffectFuncs[])(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite) = {
LavaridgeGymB1FWarpEffect_1,
LavaridgeGymB1FWarpEffect_2,
LavaridgeGymB1FWarpEffect_3,
LavaridgeGymB1FWarpEffect_4,
LavaridgeGymB1FWarpEffect_5,
LavaridgeGymB1FWarpEffect_6
};
bool8 (*const sLavaridgeGymB1FWarpExitEffectFuncs[])(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite) = {
LavaridgeGymB1FWarpExitEffect_1,
LavaridgeGymB1FWarpExitEffect_2,
LavaridgeGymB1FWarpExitEffect_3,
LavaridgeGymB1FWarpExitEffect_4
};
void StartLavaridgeGymB1FWarp(u8 priority)
{
CreateTask(Task_LavaridgeGymB1FWarp, priority);
}
void Task_LavaridgeGymB1FWarp(u8 taskId)
{
while (sLavaridgeGymB1FWarpEffectFuncs[gTasks[taskId].data[0]](&gTasks[taskId], &gObjectEvents[gPlayerAvatar.objectEventId], &gSprites[gPlayerAvatar.spriteId]));
}
bool8 LavaridgeGymB1FWarpEffect_1(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite)
{
FreezeObjectEvents();
CameraObjectReset2();
SetCameraPanningCallback(NULL);
gPlayerAvatar.preventStep = TRUE;
objectEvent->fixedPriority = 1;
task->data[1] = 1;
task->data[0]++;
return TRUE;
}
bool8 LavaridgeGymB1FWarpEffect_2(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite)
{
SetCameraPanning(0, task->data[1]);
task->data[1] = -task->data[1];
task->data[2]++;
if (task->data[2] > 7)
{
task->data[2] = 0;
task->data[0]++;
}
return FALSE;
}
bool8 LavaridgeGymB1FWarpEffect_3(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite)
{
sprite->pos2.y = 0;
task->data[3] = 1;
gFieldEffectArguments[0] = objectEvent->currentCoords.x;
gFieldEffectArguments[1] = objectEvent->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
gFieldEffectArguments[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_LAVARIDGE_GYM_WARP);
PlaySE(SE_W153);
task->data[0]++;
return TRUE;
}
bool8 LavaridgeGymB1FWarpEffect_4(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite)
{
s16 centerToCornerVecY;
SetCameraPanning(0, task->data[1]);
if (task->data[1] = -task->data[1], ++task->data[2] <= 17)
{
if (!(task->data[2] & 1) && (task->data[1] <= 3))
{
task->data[1] <<= 1;
}
} else if (!(task->data[2] & 4) && (task->data[1] > 0))
{
task->data[1] >>= 1;
}
if (task->data[2] > 6)
{
centerToCornerVecY = -(sprite->centerToCornerVecY << 1);
if (sprite->pos2.y > -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY))
{
sprite->pos2.y -= task->data[3];
if (task->data[3] <= 7)
{
task->data[3]++;
}
} else
{
task->data[4] = 1;
}
}
if (task->data[5] == 0 && sprite->pos2.y < -0x10)
{
task->data[5]++;
objectEvent->fixedPriority = 1;
sprite->oam.priority = 1;
sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY;
}
if (task->data[1] == 0 && task->data[4] != 0)
{
task->data[0]++;
}
return FALSE;
}
bool8 LavaridgeGymB1FWarpEffect_5(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite)
{
TryFadeOutOldMapMusic();
WarpFadeOutScreen();
task->data[0]++;
return FALSE;
}
bool8 LavaridgeGymB1FWarpEffect_6(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite)
{
if (!gPaletteFade.active && BGMusicStopped() == TRUE)
{
WarpIntoMap();
gFieldCallback = FieldCB_LavaridgeGymB1FWarpExit;
SetMainCallback2(CB2_LoadMap);
DestroyTask(FindTaskIdByFunc(Task_LavaridgeGymB1FWarp));
}
return FALSE;
}
void FieldCB_LavaridgeGymB1FWarpExit(void)
{
Overworld_PlaySpecialMapMusic();
WarpFadeInScreen();
sub_8111CF0();
ScriptContext2_Enable();
gFieldCallback = NULL;
CreateTask(Task_LavaridgeGymB1FWarpExit, 0);
}
void Task_LavaridgeGymB1FWarpExit(u8 taskId)
{
while (sLavaridgeGymB1FWarpExitEffectFuncs[gTasks[taskId].data[0]](&gTasks[taskId], &gObjectEvents[gPlayerAvatar.objectEventId], &gSprites[gPlayerAvatar.spriteId]));
}
bool8 LavaridgeGymB1FWarpExitEffect_1(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite)
{
CameraObjectReset2();
FreezeObjectEvents();
gPlayerAvatar.preventStep = TRUE;
objectEvent->invisible = TRUE;
task->data[0]++;
return FALSE;
}
bool8 LavaridgeGymB1FWarpExitEffect_2(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite)
{
if (IsWeatherNotFadingIn())
{
gFieldEffectArguments[0] = objectEvent->currentCoords.x;
gFieldEffectArguments[1] = objectEvent->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
gFieldEffectArguments[3] = sprite->oam.priority;
task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
task->data[0]++;
}
return FALSE;
}
bool8 LavaridgeGymB1FWarpExitEffect_3(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite)
{
sprite = &gSprites[task->data[1]];
if (sprite->animCmdIndex > 1)
{
task->data[0]++;
objectEvent->invisible = FALSE;
CameraObjectReset1();
PlaySE(SE_W091);
ObjectEventSetHeldMovement(objectEvent, sub_8064194(DIR_EAST));
}
return FALSE;
}
bool8 LavaridgeGymB1FWarpExitEffect_4(struct Task * task, struct ObjectEvent * objectEvent, struct Sprite * sprite)
{
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
{
gPlayerAvatar.preventStep = FALSE;
ScriptContext2_Disable();
UnfreezeObjectEvents();
DestroyTask(FindTaskIdByFunc(Task_LavaridgeGymB1FWarpExit));
}
return FALSE;
}
+6 -6
View File
@@ -50,7 +50,7 @@ void palette_bg_faded_fill_black(void)
CpuFastFill16(RGB_BLACK, gPlttBufferFaded, 0x400);
}
void pal_fill_for_maplights(void)
void WarpFadeInScreen(void)
{
switch (sub_80C9DCC(get_map_light_from_warp0(), GetCurrentMapType()))
{
@@ -178,7 +178,7 @@ static void task_mpl_807DD60(u8 taskId)
case 1:
if (gTasks[task->data[1]].isActive != TRUE)
{
pal_fill_for_maplights();
WarpFadeInScreen();
task->data[0]++;
}
break;
@@ -212,7 +212,7 @@ static void sub_807DDF0(u8 taskId)
case 1:
if (IsLinkTaskFinished())
{
pal_fill_for_maplights();
WarpFadeInScreen();
task->data[0]++;
}
break;
@@ -278,7 +278,7 @@ static void sub_807DE78(bool8 a0)
static void sub_807DF4C(bool8 a0)
{
if (!a0)
pal_fill_for_maplights();
WarpFadeInScreen();
else
FadeInFromBlack();
}
@@ -302,7 +302,7 @@ void sub_807DF7C(void)
static void sub_807DF94(void)
{
Overworld_PlaySpecialMapMusic();
pal_fill_for_maplights();
WarpFadeInScreen();
sub_8111CF0();
PlaySE(SE_TK_WARPOUT);
CreateTask(sub_807E31C, 10);
@@ -906,7 +906,7 @@ static void sub_807EC34(u8 taskId)
break;
case 0:
Overworld_PlaySpecialMapMusic();
pal_fill_for_maplights();
WarpFadeInScreen();
ScriptContext2_Enable();
sub_807ECBC(&data[1], &data[2], &data[3], &data[4], &data[5]);
data[0]++;
+1 -1
View File
@@ -162,7 +162,7 @@ static void sub_815077C(void)
static void sub_8150794(u8 taskId)
{
if (!FieldEffectActiveListContains(0x41))
if (!FieldEffectActiveListContains(FLDEFF_UNK_41))
{
UnfreezeObjectEvents();
ScriptContext2_Disable();