Finish field_control_avatar
This commit is contained in:
@@ -1,799 +0,0 @@
|
|||||||
.include "asm/macros.inc"
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
thumb_func_start IsWarpMetatileBehavior
|
|
||||||
IsWarpMetatileBehavior: @ 806DAF4
|
|
||||||
push {r4,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl MetatileBehavior_IsWarpDoor
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _0806DB7C
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl MetatileBehavior_IsLadder
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _0806DB7C
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl MetatileBehavior_IsEscalator
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _0806DB7C
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl MetatileBehavior_IsCaveDoor
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _0806DB7C
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl MetatileBehavior_IsLavaridgeB1FWarp
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _0806DB7C
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl MetatileBehavior_IsLavaridge1FWarp
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _0806DB7C
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl MetatileBehavior_IsWarpPad
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _0806DB7C
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl MetatileBehavior_IsFallWarp
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _0806DB7C
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl MetatileBehavior_IsUnionRoomWarp
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _0806DB7C
|
|
||||||
movs r0, 0
|
|
||||||
b _0806DB7E
|
|
||||||
_0806DB7C:
|
|
||||||
movs r0, 0x1
|
|
||||||
_0806DB7E:
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end IsWarpMetatileBehavior
|
|
||||||
|
|
||||||
thumb_func_start sub_806DB84
|
|
||||||
sub_806DB84: @ 806DB84
|
|
||||||
push {r4,lr}
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
cmp r1, 0x3
|
|
||||||
beq _0806DB98
|
|
||||||
cmp r1, 0x4
|
|
||||||
beq _0806DBB0
|
|
||||||
b _0806DBD0
|
|
||||||
_0806DB98:
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl MetatileBehavior_IsUnknownWarp6D
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0806DBCC
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl MetatileBehavior_IsUnknownWarp6F
|
|
||||||
b _0806DBC6
|
|
||||||
_0806DBB0:
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl MetatileBehavior_IsUnknownWarp6C
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0806DBCC
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl MetatileBehavior_IsUnknownWarp6E
|
|
||||||
_0806DBC6:
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0806DBD0
|
|
||||||
_0806DBCC:
|
|
||||||
movs r0, 0x1
|
|
||||||
b _0806DBD2
|
|
||||||
_0806DBD0:
|
|
||||||
movs r0, 0
|
|
||||||
_0806DBD2:
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_806DB84
|
|
||||||
|
|
||||||
thumb_func_start IsArrowWarpMetatileBehavior
|
|
||||||
IsArrowWarpMetatileBehavior: @ 806DBD8
|
|
||||||
push {lr}
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
adds r2, r1, 0
|
|
||||||
cmp r1, 0x2
|
|
||||||
beq _0806DBFC
|
|
||||||
cmp r1, 0x2
|
|
||||||
bgt _0806DBF2
|
|
||||||
cmp r1, 0x1
|
|
||||||
beq _0806DC06
|
|
||||||
b _0806DC28
|
|
||||||
_0806DBF2:
|
|
||||||
cmp r2, 0x3
|
|
||||||
beq _0806DC10
|
|
||||||
cmp r2, 0x4
|
|
||||||
beq _0806DC1A
|
|
||||||
b _0806DC28
|
|
||||||
_0806DBFC:
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl MetatileBehavior_IsNorthArrowWarp
|
|
||||||
b _0806DC22
|
|
||||||
_0806DC06:
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl MetatileBehavior_IsSouthArrowWarp
|
|
||||||
b _0806DC22
|
|
||||||
_0806DC10:
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl MetatileBehavior_IsWestArrowWarp
|
|
||||||
b _0806DC22
|
|
||||||
_0806DC1A:
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl MetatileBehavior_IsEastArrowWarp
|
|
||||||
_0806DC22:
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
b _0806DC2A
|
|
||||||
_0806DC28:
|
|
||||||
movs r0, 0
|
|
||||||
_0806DC2A:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end IsArrowWarpMetatileBehavior
|
|
||||||
|
|
||||||
thumb_func_start GetWarpEventAtMapPosition
|
|
||||||
GetWarpEventAtMapPosition: @ 806DC30
|
|
||||||
push {lr}
|
|
||||||
adds r3, r1, 0
|
|
||||||
ldrh r1, [r3]
|
|
||||||
subs r1, 0x7
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r1, 16
|
|
||||||
ldrh r2, [r3, 0x2]
|
|
||||||
subs r2, 0x7
|
|
||||||
lsls r2, 16
|
|
||||||
lsrs r2, 16
|
|
||||||
ldrb r3, [r3, 0x4]
|
|
||||||
bl map_warp_check
|
|
||||||
lsls r0, 24
|
|
||||||
asrs r0, 24
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end GetWarpEventAtMapPosition
|
|
||||||
|
|
||||||
thumb_func_start SetupWarp
|
|
||||||
SetupWarp: @ 806DC54
|
|
||||||
push {r4-r7,lr}
|
|
||||||
adds r5, r2, 0
|
|
||||||
ldr r0, _0806DC74 @ =gMapHeader
|
|
||||||
ldr r0, [r0, 0x4]
|
|
||||||
lsls r1, 24
|
|
||||||
asrs r7, r1, 24
|
|
||||||
lsls r6, r7, 3
|
|
||||||
ldr r0, [r0, 0x8]
|
|
||||||
adds r4, r0, r6
|
|
||||||
ldrb r0, [r4, 0x6]
|
|
||||||
cmp r0, 0x7F
|
|
||||||
bne _0806DC78
|
|
||||||
ldrb r0, [r4, 0x5]
|
|
||||||
bl copy_saved_warp2_bank_and_enter_x_to_warp1
|
|
||||||
b _0806DCC4
|
|
||||||
.align 2, 0
|
|
||||||
_0806DC74: .4byte gMapHeader
|
|
||||||
_0806DC78:
|
|
||||||
movs r0, 0x7
|
|
||||||
ldrsb r0, [r4, r0]
|
|
||||||
movs r1, 0x6
|
|
||||||
ldrsb r1, [r4, r1]
|
|
||||||
movs r2, 0x5
|
|
||||||
ldrsb r2, [r4, r2]
|
|
||||||
bl warp1_set_2
|
|
||||||
movs r1, 0
|
|
||||||
ldrsh r0, [r5, r1]
|
|
||||||
movs r2, 0x2
|
|
||||||
ldrsh r1, [r5, r2]
|
|
||||||
bl sub_805550C
|
|
||||||
ldrb r0, [r4, 0x7]
|
|
||||||
ldrb r1, [r4, 0x6]
|
|
||||||
bl Overworld_GetMapHeaderByGroupAndId
|
|
||||||
ldr r1, [r0, 0x4]
|
|
||||||
ldrb r0, [r4, 0x5]
|
|
||||||
ldr r1, [r1, 0x8]
|
|
||||||
lsls r0, 3
|
|
||||||
adds r0, r1
|
|
||||||
ldrb r0, [r0, 0x6]
|
|
||||||
cmp r0, 0x7F
|
|
||||||
bne _0806DCC4
|
|
||||||
adds r0, r6, r1
|
|
||||||
ldrb r0, [r0, 0x5]
|
|
||||||
ldr r1, _0806DCCC @ =gSaveBlock1Ptr
|
|
||||||
ldr r2, [r1]
|
|
||||||
movs r1, 0x4
|
|
||||||
ldrsb r1, [r2, r1]
|
|
||||||
ldrb r2, [r2, 0x5]
|
|
||||||
lsls r2, 24
|
|
||||||
asrs r2, 24
|
|
||||||
adds r3, r7, 0
|
|
||||||
bl saved_warp2_set
|
|
||||||
_0806DCC4:
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0806DCCC: .4byte gSaveBlock1Ptr
|
|
||||||
thumb_func_end SetupWarp
|
|
||||||
|
|
||||||
thumb_func_start TryDoorWarp
|
|
||||||
TryDoorWarp: @ 806DCD0
|
|
||||||
push {r4-r7,lr}
|
|
||||||
adds r6, r0, 0
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r5, r1, 16
|
|
||||||
lsls r2, 24
|
|
||||||
lsrs r2, 24
|
|
||||||
cmp r2, 0x2
|
|
||||||
bne _0806DD30
|
|
||||||
lsls r0, r5, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl MetatileBehavior_IsWarpDoor
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _0806DD30
|
|
||||||
ldr r7, _0806DD2C @ =gMapHeader
|
|
||||||
adds r0, r7, 0
|
|
||||||
adds r1, r6, 0
|
|
||||||
bl GetWarpEventAtMapPosition
|
|
||||||
lsls r0, 24
|
|
||||||
asrs r4, r0, 24
|
|
||||||
movs r0, 0x1
|
|
||||||
negs r0, r0
|
|
||||||
cmp r4, r0
|
|
||||||
beq _0806DD30
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl IsWarpMetatileBehavior
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _0806DD30
|
|
||||||
bl StoreInitialPlayerAvatarState
|
|
||||||
adds r0, r7, 0
|
|
||||||
adds r1, r4, 0
|
|
||||||
adds r2, r6, 0
|
|
||||||
bl SetupWarp
|
|
||||||
bl DoDoorWarp
|
|
||||||
movs r0, 0x1
|
|
||||||
b _0806DD32
|
|
||||||
.align 2, 0
|
|
||||||
_0806DD2C: .4byte gMapHeader
|
|
||||||
_0806DD30:
|
|
||||||
movs r0, 0
|
|
||||||
_0806DD32:
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end TryDoorWarp
|
|
||||||
|
|
||||||
thumb_func_start map_warp_check
|
|
||||||
map_warp_check: @ 806DD38
|
|
||||||
push {r4-r6,lr}
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r6, r1, 16
|
|
||||||
lsls r2, 16
|
|
||||||
lsrs r5, r2, 16
|
|
||||||
lsls r3, 24
|
|
||||||
lsrs r4, r3, 24
|
|
||||||
ldr r0, [r0, 0x4]
|
|
||||||
ldr r1, [r0, 0x8]
|
|
||||||
ldrb r3, [r0, 0x1]
|
|
||||||
movs r2, 0
|
|
||||||
cmp r2, r3
|
|
||||||
bge _0806DD76
|
|
||||||
_0806DD52:
|
|
||||||
ldrh r0, [r1]
|
|
||||||
cmp r0, r6
|
|
||||||
bne _0806DD6E
|
|
||||||
ldrh r0, [r1, 0x2]
|
|
||||||
cmp r0, r5
|
|
||||||
bne _0806DD6E
|
|
||||||
ldrb r0, [r1, 0x4]
|
|
||||||
cmp r0, r4
|
|
||||||
beq _0806DD68
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0806DD6E
|
|
||||||
_0806DD68:
|
|
||||||
lsls r0, r2, 24
|
|
||||||
asrs r0, 24
|
|
||||||
b _0806DD7A
|
|
||||||
_0806DD6E:
|
|
||||||
adds r2, 0x1
|
|
||||||
adds r1, 0x8
|
|
||||||
cmp r2, r3
|
|
||||||
blt _0806DD52
|
|
||||||
_0806DD76:
|
|
||||||
movs r0, 0x1
|
|
||||||
negs r0, r0
|
|
||||||
_0806DD7A:
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end map_warp_check
|
|
||||||
|
|
||||||
thumb_func_start trigger_activate
|
|
||||||
trigger_activate: @ 806DD80
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
cmp r4, 0
|
|
||||||
beq _0806DDB6
|
|
||||||
ldr r1, [r4, 0xC]
|
|
||||||
cmp r1, 0
|
|
||||||
bne _0806DD96
|
|
||||||
ldrb r0, [r4, 0x6]
|
|
||||||
bl trigger_activate_weather
|
|
||||||
b _0806DDB6
|
|
||||||
_0806DD96:
|
|
||||||
ldrh r0, [r4, 0x6]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0806DDB0
|
|
||||||
ldrh r0, [r4, 0x6]
|
|
||||||
bl VarGet
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
ldrb r1, [r4, 0x8]
|
|
||||||
cmp r0, r1
|
|
||||||
bne _0806DDB6
|
|
||||||
ldr r0, [r4, 0xC]
|
|
||||||
b _0806DDB8
|
|
||||||
_0806DDB0:
|
|
||||||
adds r0, r1, 0
|
|
||||||
bl ScriptContext2_RunNewScript
|
|
||||||
_0806DDB6:
|
|
||||||
movs r0, 0
|
|
||||||
_0806DDB8:
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end trigger_activate
|
|
||||||
|
|
||||||
thumb_func_start GetCoordEventScriptAtPosition
|
|
||||||
GetCoordEventScriptAtPosition: @ 806DDC0
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r10
|
|
||||||
mov r6, r9
|
|
||||||
mov r5, r8
|
|
||||||
push {r5-r7}
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r1, 16
|
|
||||||
mov r10, r1
|
|
||||||
lsls r2, 16
|
|
||||||
lsrs r2, 16
|
|
||||||
mov r9, r2
|
|
||||||
lsls r3, 24
|
|
||||||
lsrs r3, 24
|
|
||||||
mov r8, r3
|
|
||||||
ldr r0, [r0, 0x4]
|
|
||||||
ldr r1, [r0, 0xC]
|
|
||||||
ldrb r7, [r0, 0x2]
|
|
||||||
movs r6, 0
|
|
||||||
cmp r6, r7
|
|
||||||
bge _0806DE16
|
|
||||||
adds r5, r1, 0
|
|
||||||
adds r4, r5, 0
|
|
||||||
_0806DDEC:
|
|
||||||
ldrh r0, [r4]
|
|
||||||
cmp r0, r10
|
|
||||||
bne _0806DE0C
|
|
||||||
ldrh r0, [r4, 0x2]
|
|
||||||
cmp r0, r9
|
|
||||||
bne _0806DE0C
|
|
||||||
ldrb r0, [r4, 0x4]
|
|
||||||
cmp r0, r8
|
|
||||||
beq _0806DE02
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0806DE0C
|
|
||||||
_0806DE02:
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl trigger_activate
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0806DE18
|
|
||||||
_0806DE0C:
|
|
||||||
adds r4, 0x10
|
|
||||||
adds r5, 0x10
|
|
||||||
adds r6, 0x1
|
|
||||||
cmp r6, r7
|
|
||||||
blt _0806DDEC
|
|
||||||
_0806DE16:
|
|
||||||
movs r0, 0
|
|
||||||
_0806DE18:
|
|
||||||
pop {r3-r5}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
mov r10, r5
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end GetCoordEventScriptAtPosition
|
|
||||||
|
|
||||||
thumb_func_start sub_806DE28
|
|
||||||
sub_806DE28: @ 806DE28
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r5, r0, 0
|
|
||||||
movs r1, 0x10
|
|
||||||
ldrsh r0, [r5, r1]
|
|
||||||
movs r2, 0x12
|
|
||||||
ldrsh r1, [r5, r2]
|
|
||||||
bl MapGridGetMetatileBehaviorAt
|
|
||||||
cmp r0, 0x66
|
|
||||||
bne _0806DE64
|
|
||||||
movs r0, 0x25
|
|
||||||
bl PlaySE
|
|
||||||
ldrb r0, [r5, 0x8]
|
|
||||||
ldr r4, _0806DE6C @ =gSaveBlock1Ptr
|
|
||||||
ldr r2, [r4]
|
|
||||||
ldrb r1, [r2, 0x5]
|
|
||||||
ldrb r2, [r2, 0x4]
|
|
||||||
bl RemoveObjectEventByLocalIdAndMap
|
|
||||||
ldrb r0, [r5, 0x8]
|
|
||||||
ldr r2, [r4]
|
|
||||||
ldrb r1, [r2, 0x5]
|
|
||||||
ldrb r2, [r2, 0x4]
|
|
||||||
bl sub_805FCD8
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
bl FlagClear
|
|
||||||
_0806DE64:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0806DE6C: .4byte gSaveBlock1Ptr
|
|
||||||
thumb_func_end sub_806DE28
|
|
||||||
|
|
||||||
thumb_func_start sub_806DE70
|
|
||||||
sub_806DE70: @ 806DE70
|
|
||||||
push {r4-r7,lr}
|
|
||||||
lsls r0, 16
|
|
||||||
lsls r1, 16
|
|
||||||
ldr r2, _0806DEC0 @ =gMapHeader
|
|
||||||
ldr r2, [r2, 0x4]
|
|
||||||
ldr r4, [r2, 0xC]
|
|
||||||
ldrb r5, [r2, 0x2]
|
|
||||||
lsrs r7, r0, 16
|
|
||||||
asrs r0, 16
|
|
||||||
lsrs r6, r1, 16
|
|
||||||
asrs r1, 16
|
|
||||||
bl MapGridGetMetatileBehaviorAt
|
|
||||||
cmp r0, 0x20
|
|
||||||
bne _0806DEB8
|
|
||||||
cmp r5, 0
|
|
||||||
beq _0806DEB8
|
|
||||||
_0806DE92:
|
|
||||||
ldrh r0, [r4]
|
|
||||||
adds r0, 0x7
|
|
||||||
cmp r0, r7
|
|
||||||
bne _0806DEB0
|
|
||||||
ldrh r0, [r4, 0x2]
|
|
||||||
adds r0, 0x7
|
|
||||||
cmp r0, r6
|
|
||||||
bne _0806DEB0
|
|
||||||
bl sub_8112364
|
|
||||||
ldr r0, [r4, 0xC]
|
|
||||||
bl ScriptContext1_SetupScript
|
|
||||||
bl ScriptContext2_Enable
|
|
||||||
_0806DEB0:
|
|
||||||
adds r4, 0x10
|
|
||||||
subs r5, 0x1
|
|
||||||
cmp r5, 0
|
|
||||||
bne _0806DE92
|
|
||||||
_0806DEB8:
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0806DEC0: .4byte gMapHeader
|
|
||||||
thumb_func_end sub_806DE70
|
|
||||||
|
|
||||||
thumb_func_start sub_806DEC4
|
|
||||||
sub_806DEC4: @ 806DEC4
|
|
||||||
push {r4,lr}
|
|
||||||
ldr r4, _0806DEE8 @ =gMapHeader
|
|
||||||
ldrh r1, [r0]
|
|
||||||
subs r1, 0x7
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r1, 16
|
|
||||||
ldrh r2, [r0, 0x2]
|
|
||||||
subs r2, 0x7
|
|
||||||
lsls r2, 16
|
|
||||||
lsrs r2, 16
|
|
||||||
ldrb r3, [r0, 0x4]
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl GetCoordEventScriptAtPosition
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0806DEE8: .4byte gMapHeader
|
|
||||||
thumb_func_end sub_806DEC4
|
|
||||||
|
|
||||||
thumb_func_start GetBackgroundEventAtPosition
|
|
||||||
GetBackgroundEventAtPosition: @ 806DEEC
|
|
||||||
push {r4-r7,lr}
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r7, r1, 16
|
|
||||||
lsls r2, 16
|
|
||||||
lsrs r6, r2, 16
|
|
||||||
lsls r3, 24
|
|
||||||
lsrs r5, r3, 24
|
|
||||||
ldr r0, [r0, 0x4]
|
|
||||||
ldr r4, [r0, 0x10]
|
|
||||||
ldrb r3, [r0, 0x3]
|
|
||||||
movs r2, 0
|
|
||||||
cmp r2, r3
|
|
||||||
bcs _0806DF32
|
|
||||||
_0806DF06:
|
|
||||||
lsls r0, r2, 1
|
|
||||||
adds r0, r2
|
|
||||||
lsls r0, 2
|
|
||||||
adds r1, r0, r4
|
|
||||||
ldrh r0, [r1]
|
|
||||||
cmp r0, r7
|
|
||||||
bne _0806DF28
|
|
||||||
ldrh r0, [r1, 0x2]
|
|
||||||
cmp r0, r6
|
|
||||||
bne _0806DF28
|
|
||||||
ldrb r0, [r1, 0x4]
|
|
||||||
cmp r0, r5
|
|
||||||
beq _0806DF24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0806DF28
|
|
||||||
_0806DF24:
|
|
||||||
adds r0, r1, 0
|
|
||||||
b _0806DF34
|
|
||||||
_0806DF28:
|
|
||||||
adds r0, r2, 0x1
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r2, r0, 24
|
|
||||||
cmp r2, r3
|
|
||||||
bcc _0806DF06
|
|
||||||
_0806DF32:
|
|
||||||
movs r0, 0
|
|
||||||
_0806DF34:
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end GetBackgroundEventAtPosition
|
|
||||||
|
|
||||||
thumb_func_start dive_warp
|
|
||||||
dive_warp: @ 806DF3C
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r5, r1, 16
|
|
||||||
ldr r0, _0806DF70 @ =gMapHeader
|
|
||||||
ldrb r0, [r0, 0x17]
|
|
||||||
cmp r0, 0x5
|
|
||||||
bne _0806DF74
|
|
||||||
lsls r0, r5, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl MetatileBehavior_IsMB19
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0806DF74
|
|
||||||
ldrh r0, [r4]
|
|
||||||
subs r0, 0x7
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
ldrh r1, [r4, 0x2]
|
|
||||||
subs r1, 0x7
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r1, 16
|
|
||||||
bl sub_8055824
|
|
||||||
b _0806DF98
|
|
||||||
.align 2, 0
|
|
||||||
_0806DF70: .4byte gMapHeader
|
|
||||||
_0806DF74:
|
|
||||||
lsls r0, r5, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl MetatileBehavior_IsDeepOrSemiDeepWater
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _0806DFB0
|
|
||||||
ldrh r0, [r4]
|
|
||||||
subs r0, 0x7
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
ldrh r1, [r4, 0x2]
|
|
||||||
subs r1, 0x7
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r1, 16
|
|
||||||
bl sub_8055844
|
|
||||||
_0806DF98:
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0806DFB0
|
|
||||||
bl StoreInitialPlayerAvatarState
|
|
||||||
bl DoDiveWarp
|
|
||||||
movs r0, 0xE2
|
|
||||||
bl PlaySE
|
|
||||||
movs r0, 0x1
|
|
||||||
b _0806DFB2
|
|
||||||
_0806DFB0:
|
|
||||||
movs r0, 0
|
|
||||||
_0806DFB2:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end dive_warp
|
|
||||||
|
|
||||||
thumb_func_start sub_806DFB8
|
|
||||||
sub_806DFB8: @ 806DFB8
|
|
||||||
push {r4,r5,lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
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 r5, r0, 24
|
|
||||||
ldr r0, _0806E010 @ =gMapHeader
|
|
||||||
ldrb r0, [r0, 0x17]
|
|
||||||
cmp r0, 0x5
|
|
||||||
bne _0806E014
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl MetatileBehavior_IsMB19
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0806E014
|
|
||||||
mov r0, sp
|
|
||||||
ldrh r0, [r0]
|
|
||||||
subs r0, 0x7
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
ldrh r1, [r4]
|
|
||||||
subs r1, 0x7
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r1, 16
|
|
||||||
bl sub_8055824
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _0806E044
|
|
||||||
movs r0, 0x1
|
|
||||||
b _0806E046
|
|
||||||
.align 2, 0
|
|
||||||
_0806E010: .4byte gMapHeader
|
|
||||||
_0806E014:
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl MetatileBehavior_IsDeepOrSemiDeepWater
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _0806E044
|
|
||||||
mov r0, sp
|
|
||||||
ldrh r0, [r0]
|
|
||||||
subs r0, 0x7
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
ldrh r1, [r4]
|
|
||||||
subs r1, 0x7
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r1, 16
|
|
||||||
bl sub_8055844
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _0806E044
|
|
||||||
movs r0, 0x2
|
|
||||||
b _0806E046
|
|
||||||
_0806E044:
|
|
||||||
movs r0, 0
|
|
||||||
_0806E046:
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_806DFB8
|
|
||||||
|
|
||||||
thumb_func_start GetObjectEventScriptPointerForComparison
|
|
||||||
GetObjectEventScriptPointerForComparison: @ 806E050
|
|
||||||
push {r4,r5,lr}
|
|
||||||
sub sp, 0x8
|
|
||||||
bl GetPlayerMovementDirection
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
mov r5, sp
|
|
||||||
mov r0, sp
|
|
||||||
bl GetInFrontOfPlayerPosition
|
|
||||||
mov r0, sp
|
|
||||||
movs r1, 0
|
|
||||||
ldrsh r0, [r0, r1]
|
|
||||||
movs r2, 0x2
|
|
||||||
ldrsh r1, [r5, r2]
|
|
||||||
bl MapGridGetMetatileBehaviorAt
|
|
||||||
adds r1, r0, 0
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
mov r0, sp
|
|
||||||
adds r2, r4, 0
|
|
||||||
bl GetInteractedObjectEventScript
|
|
||||||
add sp, 0x8
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end GetObjectEventScriptPointerForComparison
|
|
||||||
|
|
||||||
thumb_func_start SetCableClubWarp
|
|
||||||
SetCableClubWarp: @ 806E08C
|
|
||||||
push {r4,lr}
|
|
||||||
sub sp, 0x8
|
|
||||||
bl GetPlayerMovementDirection
|
|
||||||
mov r4, sp
|
|
||||||
mov r0, sp
|
|
||||||
bl GetPlayerPosition
|
|
||||||
mov r0, sp
|
|
||||||
movs r1, 0
|
|
||||||
ldrsh r0, [r0, r1]
|
|
||||||
movs r2, 0x2
|
|
||||||
ldrsh r1, [r4, r2]
|
|
||||||
bl MapGridGetMetatileBehaviorAt
|
|
||||||
ldr r4, _0806E0CC @ =gMapHeader
|
|
||||||
adds r0, r4, 0
|
|
||||||
mov r1, sp
|
|
||||||
bl GetWarpEventAtMapPosition
|
|
||||||
adds r1, r0, 0
|
|
||||||
lsls r1, 24
|
|
||||||
asrs r1, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
mov r2, sp
|
|
||||||
bl SetupWarp
|
|
||||||
movs r0, 0
|
|
||||||
add sp, 0x8
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0806E0CC: .4byte gMapHeader
|
|
||||||
thumb_func_end SetCableClubWarp
|
|
||||||
|
|
||||||
.align 2, 0 @ Don't pad with nop.
|
|
||||||
+19
-19
@@ -1036,8 +1036,8 @@ SetWarpDestination: @ 805538C
|
|||||||
_080553C4: .4byte gUnknown_2031DBC
|
_080553C4: .4byte gUnknown_2031DBC
|
||||||
thumb_func_end SetWarpDestination
|
thumb_func_end SetWarpDestination
|
||||||
|
|
||||||
thumb_func_start warp1_set_2
|
thumb_func_start SetWarpDestinationToMapWarp
|
||||||
warp1_set_2: @ 80553C8
|
SetWarpDestinationToMapWarp: @ 80553C8
|
||||||
push {lr}
|
push {lr}
|
||||||
sub sp, 0x4
|
sub sp, 0x4
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
@@ -1053,10 +1053,10 @@ warp1_set_2: @ 80553C8
|
|||||||
add sp, 0x4
|
add sp, 0x4
|
||||||
pop {r0}
|
pop {r0}
|
||||||
bx r0
|
bx r0
|
||||||
thumb_func_end warp1_set_2
|
thumb_func_end SetWarpDestinationToMapWarp
|
||||||
|
|
||||||
thumb_func_start saved_warp2_set
|
thumb_func_start SetDynamicWarp
|
||||||
saved_warp2_set: @ 80553E8
|
SetDynamicWarp: @ 80553E8
|
||||||
push {r4,r5,lr}
|
push {r4,r5,lr}
|
||||||
sub sp, 0x8
|
sub sp, 0x8
|
||||||
ldr r0, _08055418 @ =gSaveBlock1Ptr
|
ldr r0, _08055418 @ =gSaveBlock1Ptr
|
||||||
@@ -1082,7 +1082,7 @@ saved_warp2_set: @ 80553E8
|
|||||||
bx r0
|
bx r0
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_08055418: .4byte gSaveBlock1Ptr
|
_08055418: .4byte gSaveBlock1Ptr
|
||||||
thumb_func_end saved_warp2_set
|
thumb_func_end SetDynamicWarp
|
||||||
|
|
||||||
thumb_func_start SetDynamicWarpWithCoords
|
thumb_func_start SetDynamicWarpWithCoords
|
||||||
SetDynamicWarpWithCoords: @ 805541C
|
SetDynamicWarpWithCoords: @ 805541C
|
||||||
@@ -1114,8 +1114,8 @@ SetDynamicWarpWithCoords: @ 805541C
|
|||||||
_08055450: .4byte gSaveBlock1Ptr
|
_08055450: .4byte gSaveBlock1Ptr
|
||||||
thumb_func_end SetDynamicWarpWithCoords
|
thumb_func_end SetDynamicWarpWithCoords
|
||||||
|
|
||||||
thumb_func_start copy_saved_warp2_bank_and_enter_x_to_warp1
|
thumb_func_start SetWarpDestinationToDynamicWarp
|
||||||
copy_saved_warp2_bank_and_enter_x_to_warp1: @ 8055454
|
SetWarpDestinationToDynamicWarp: @ 8055454
|
||||||
ldr r2, _08055464 @ =gUnknown_2031DBC
|
ldr r2, _08055464 @ =gUnknown_2031DBC
|
||||||
ldr r0, _08055468 @ =gSaveBlock1Ptr
|
ldr r0, _08055468 @ =gSaveBlock1Ptr
|
||||||
ldr r0, [r0]
|
ldr r0, [r0]
|
||||||
@@ -1127,7 +1127,7 @@ copy_saved_warp2_bank_and_enter_x_to_warp1: @ 8055454
|
|||||||
.align 2, 0
|
.align 2, 0
|
||||||
_08055464: .4byte gUnknown_2031DBC
|
_08055464: .4byte gUnknown_2031DBC
|
||||||
_08055468: .4byte gSaveBlock1Ptr
|
_08055468: .4byte gSaveBlock1Ptr
|
||||||
thumb_func_end copy_saved_warp2_bank_and_enter_x_to_warp1
|
thumb_func_end SetWarpDestinationToDynamicWarp
|
||||||
|
|
||||||
thumb_func_start sub_805546C
|
thumb_func_start sub_805546C
|
||||||
sub_805546C: @ 805546C
|
sub_805546C: @ 805546C
|
||||||
@@ -1220,8 +1220,8 @@ _08055500:
|
|||||||
_08055508: .4byte gSaveBlock1Ptr
|
_08055508: .4byte gSaveBlock1Ptr
|
||||||
thumb_func_end SetLastHealLocationWarp
|
thumb_func_end SetLastHealLocationWarp
|
||||||
|
|
||||||
thumb_func_start sub_805550C
|
thumb_func_start UpdateEscapeWarp
|
||||||
sub_805550C: @ 805550C
|
UpdateEscapeWarp: @ 805550C
|
||||||
push {r4-r7,lr}
|
push {r4-r7,lr}
|
||||||
sub sp, 0x4
|
sub sp, 0x4
|
||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
@@ -1290,7 +1290,7 @@ _08055590:
|
|||||||
.align 2, 0
|
.align 2, 0
|
||||||
_08055598: .4byte gUnknown_2031DBC
|
_08055598: .4byte gUnknown_2031DBC
|
||||||
_0805559C: .4byte gSaveBlock1Ptr
|
_0805559C: .4byte gSaveBlock1Ptr
|
||||||
thumb_func_end sub_805550C
|
thumb_func_end UpdateEscapeWarp
|
||||||
|
|
||||||
thumb_func_start SetEscapeWarp
|
thumb_func_start SetEscapeWarp
|
||||||
SetEscapeWarp: @ 80555A0
|
SetEscapeWarp: @ 80555A0
|
||||||
@@ -1650,8 +1650,8 @@ _0805581A:
|
|||||||
bx r1
|
bx r1
|
||||||
thumb_func_end sub_80557C4
|
thumb_func_end sub_80557C4
|
||||||
|
|
||||||
thumb_func_start sub_8055824
|
thumb_func_start SetDiveWarpEmerge
|
||||||
sub_8055824: @ 8055824
|
SetDiveWarpEmerge: @ 8055824
|
||||||
push {lr}
|
push {lr}
|
||||||
adds r3, r0, 0
|
adds r3, r0, 0
|
||||||
adds r2, r1, 0
|
adds r2, r1, 0
|
||||||
@@ -1666,10 +1666,10 @@ sub_8055824: @ 8055824
|
|||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
pop {r1}
|
pop {r1}
|
||||||
bx r1
|
bx r1
|
||||||
thumb_func_end sub_8055824
|
thumb_func_end SetDiveWarpEmerge
|
||||||
|
|
||||||
thumb_func_start sub_8055844
|
thumb_func_start SetDiveWarpDive
|
||||||
sub_8055844: @ 8055844
|
SetDiveWarpDive: @ 8055844
|
||||||
push {lr}
|
push {lr}
|
||||||
adds r3, r0, 0
|
adds r3, r0, 0
|
||||||
adds r2, r1, 0
|
adds r2, r1, 0
|
||||||
@@ -1684,7 +1684,7 @@ sub_8055844: @ 8055844
|
|||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
pop {r1}
|
pop {r1}
|
||||||
bx r1
|
bx r1
|
||||||
thumb_func_end sub_8055844
|
thumb_func_end SetDiveWarpDive
|
||||||
|
|
||||||
thumb_func_start sub_8055864
|
thumb_func_start sub_8055864
|
||||||
sub_8055864: @ 8055864
|
sub_8055864: @ 8055864
|
||||||
@@ -6694,7 +6694,7 @@ sub_805801C: @ 805801C
|
|||||||
cmp r0, 0x2
|
cmp r0, 0x2
|
||||||
bne _0805802E
|
bne _0805802E
|
||||||
adds r0, r1, 0x4
|
adds r0, r1, 0x4
|
||||||
bl sub_806DEC4
|
bl GetCoordEventScriptAtMapPosition
|
||||||
b _08058030
|
b _08058030
|
||||||
_0805802E:
|
_0805802E:
|
||||||
movs r0, 0
|
movs r0, 0
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
gSelectedObjectEvent
|
||||||
|
gUnknown_3005078
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
#ifndef GUARD_COORD_EVENT_WEATHER_H
|
||||||
|
#define GUARD_COORD_EVENT_WEATHER_H
|
||||||
|
|
||||||
|
void DoCoordEventWeather(u8 weatherId);
|
||||||
|
|
||||||
|
#endif //GUARD_COORD_EVENT_WEATHER_H
|
||||||
@@ -63,7 +63,8 @@ bool8 TryGetObjectEventIdByLocalIdAndMap(u8, u8, u8, u8 *);
|
|||||||
u8 GetObjectEventIdByXY(s16, s16);
|
u8 GetObjectEventIdByXY(s16, s16);
|
||||||
void SetObjectEventDirection(struct ObjectEvent *, u8);
|
void SetObjectEventDirection(struct ObjectEvent *, u8);
|
||||||
u8 sub_808D4F4(void);
|
u8 sub_808D4F4(void);
|
||||||
void RemoveObjectEventByLocalIdAndMap(u8, u8, u8);
|
void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup);
|
||||||
|
u16 sub_805FCD8(u8 localId, u8 mapNum, u8 mapGroup);
|
||||||
void LoadPlayerObjectReflectionPalette(u16, u8);
|
void LoadPlayerObjectReflectionPalette(u16, u8);
|
||||||
void LoadSpecialObjectReflectionPalette(u16, u8);
|
void LoadSpecialObjectReflectionPalette(u16, u8);
|
||||||
void TryMoveObjectEventToMapCoords(u8, u8, u8, s16, s16);
|
void TryMoveObjectEventToMapCoords(u8, u8, u8, s16, s16);
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ extern struct FieldInput gUnknown_3005078;
|
|||||||
|
|
||||||
void RestartWildEncounterImmunitySteps(void);
|
void RestartWildEncounterImmunitySteps(void);
|
||||||
void ClearPoisonStepCounter(void);
|
void ClearPoisonStepCounter(void);
|
||||||
void SetCableClubWarp(void);
|
int SetCableClubWarp(void);
|
||||||
void sub_806DE28(struct ObjectEvent *);
|
void sub_806DE28(struct ObjectEvent *);
|
||||||
void dive_warp(struct MapPosition * pos, u16 behavior);
|
bool8 dive_warp(struct MapPosition * pos, u16 behavior);
|
||||||
|
|
||||||
#endif //GUARD_FIELD_CONTROL_AVATAR_H
|
#endif //GUARD_FIELD_CONTROL_AVATAR_H
|
||||||
|
|||||||
@@ -110,20 +110,18 @@ struct ObjectEventTemplate
|
|||||||
struct WarpEvent
|
struct WarpEvent
|
||||||
{
|
{
|
||||||
s16 x, y;
|
s16 x, y;
|
||||||
s8 warpId;
|
u8 elevation;
|
||||||
u8 mapGroup;
|
u8 warpId;
|
||||||
u8 mapNum;
|
u8 mapNum;
|
||||||
u8 unk7;
|
u8 mapGroup;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CoordEvent
|
struct CoordEvent
|
||||||
{
|
{
|
||||||
s16 x, y;
|
u16 x, y;
|
||||||
u8 unk4;
|
u8 elevation;
|
||||||
u8 filler_5;
|
|
||||||
u16 trigger;
|
u16 trigger;
|
||||||
u16 index;
|
u16 index;
|
||||||
u8 filler_A[0x2];
|
|
||||||
u8 *script;
|
u8 *script;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -152,7 +150,7 @@ union BgUnion
|
|||||||
struct BgEvent
|
struct BgEvent
|
||||||
{
|
{
|
||||||
u16 x, y;
|
u16 x, y;
|
||||||
u8 unk4;
|
u8 elevation;
|
||||||
u8 kind;
|
u8 kind;
|
||||||
// 0x2 padding for the union beginning.
|
// 0x2 padding for the union beginning.
|
||||||
union BgUnion bgUnion;
|
union BgUnion bgUnion;
|
||||||
|
|||||||
@@ -62,8 +62,8 @@ bool8 MetatileBehavior_UnusedIsMB_01(u8 metatileBehavior);
|
|||||||
bool8 MetatileBehavior_UnusedIsTallGrass(u8 metatileBehavior);
|
bool8 MetatileBehavior_UnusedIsTallGrass(u8 metatileBehavior);
|
||||||
bool8 MetatileBehavior_IsIndoorEncounter(u8 metatileBehavior);
|
bool8 MetatileBehavior_IsIndoorEncounter(u8 metatileBehavior);
|
||||||
bool8 MetatileBehavior_IsMountain(u8 metatileBehavior);
|
bool8 MetatileBehavior_IsMountain(u8 metatileBehavior);
|
||||||
bool8 MetatileBehavior_IsDeepOrSemiDeepWater(u8 metatileBehavior);
|
bool8 MetatileBehavior_IsDiveable(u8 metatileBehavior);
|
||||||
bool8 MetatileBehavior_IsMB19(u8 metatileBehavior);
|
bool8 MetatileBehavior_IsUnableToEmerge(u8 metatileBehavior);
|
||||||
bool8 MetatileBehavior_IsShallowFlowingWater(u8 metatileBehavior);
|
bool8 MetatileBehavior_IsShallowFlowingWater(u8 metatileBehavior);
|
||||||
bool8 MetatileBehavior_IsThinIce(u8 metatileBehavior);
|
bool8 MetatileBehavior_IsThinIce(u8 metatileBehavior);
|
||||||
bool8 MetatileBehavior_IsCrackedIce(u8 metatileBehavior);
|
bool8 MetatileBehavior_IsCrackedIce(u8 metatileBehavior);
|
||||||
|
|||||||
+6
-3
@@ -72,7 +72,7 @@ void Overworld_SetMapObjTemplateMovementType(u8, u8);
|
|||||||
|
|
||||||
void SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
void SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
||||||
|
|
||||||
void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
|
void SetDynamicWarp(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
|
||||||
void SetDynamicWarpWithCoords(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
void SetDynamicWarpWithCoords(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
||||||
void SetFixedDiveWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
void SetFixedDiveWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
||||||
void SetFixedHoleWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
void SetFixedHoleWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
||||||
@@ -110,9 +110,9 @@ void WarpIntoMap(void);
|
|||||||
u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
|
u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
|
||||||
void sub_8086194(void);
|
void sub_8086194(void);
|
||||||
void sub_8084CCC(u8 spawn);
|
void sub_8084CCC(u8 spawn);
|
||||||
void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpNum);
|
void SetWarpDestinationToMapWarp(s8 mapGroup, s8 mapNum, s8 warpNum);
|
||||||
void c2_load_new_map(void);
|
void c2_load_new_map(void);
|
||||||
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
|
void SetWarpDestinationToDynamicWarp(u8 unused);
|
||||||
void mapldr_default(void);
|
void mapldr_default(void);
|
||||||
|
|
||||||
u32 GetGameStat(u8 statId);
|
u32 GetGameStat(u8 statId);
|
||||||
@@ -195,6 +195,9 @@ void CB1_Overworld(void);
|
|||||||
void sub_80568C4(void);
|
void sub_80568C4(void);
|
||||||
u8 GetLastUsedWarpMapSectionId(void);
|
u8 GetLastUsedWarpMapSectionId(void);
|
||||||
void StoreInitialPlayerAvatarState(void);
|
void StoreInitialPlayerAvatarState(void);
|
||||||
|
void UpdateEscapeWarp(s16 x, s16 y);
|
||||||
|
bool8 SetDiveWarpEmerge(u16 x, u16 y);
|
||||||
|
bool8 SetDiveWarpDive(u16 x, u16 y);
|
||||||
|
|
||||||
extern u16 *gBGTilemapBuffers1;
|
extern u16 *gBGTilemapBuffers1;
|
||||||
extern u16 *gBGTilemapBuffers2;
|
extern u16 *gBGTilemapBuffers2;
|
||||||
|
|||||||
@@ -100,7 +100,6 @@ SECTIONS {
|
|||||||
src/script.o(.text);
|
src/script.o(.text);
|
||||||
src/scrcmd.o(.text);
|
src/scrcmd.o(.text);
|
||||||
src/field_control_avatar.o(.text);
|
src/field_control_avatar.o(.text);
|
||||||
asm/field_control_avatar.o(.text);
|
|
||||||
src/event_data.o(.text);
|
src/event_data.o(.text);
|
||||||
src/coord_event_weather.o(.text);
|
src/coord_event_weather.o(.text);
|
||||||
src/field_tasks.o(.text);
|
src/field_tasks.o(.text);
|
||||||
|
|||||||
+1
-1
@@ -762,7 +762,7 @@ void CleanupLinkRoomState(void)
|
|||||||
LoadPlayerParty();
|
LoadPlayerParty();
|
||||||
SavePlayerBag();
|
SavePlayerBag();
|
||||||
}
|
}
|
||||||
copy_saved_warp2_bank_and_enter_x_to_warp1(127);
|
SetWarpDestinationToDynamicWarp(127);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExitLinkRoom(void)
|
void ExitLinkRoom(void)
|
||||||
|
|||||||
+34
-32
@@ -1,46 +1,48 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
#include "constants/weather.h"
|
||||||
|
|
||||||
void nullsub_27(void) {}
|
// These were all dummied out because it's always sunny in Viridian
|
||||||
void nullsub_28(void) {}
|
void WeatherCoordEvent_SunnyClouds(void) {}
|
||||||
void nullsub_29(void) {}
|
void WeatherCoordEvent_Sunny(void) {}
|
||||||
void nullsub_30(void) {}
|
void WeatherCoordEvent_Rain(void) {}
|
||||||
void nullsub_31(void) {}
|
void WeatherCoordEvent_Snow(void) {}
|
||||||
void nullsub_32(void) {}
|
void WeatherCoordEvent_RainThunderstorm(void) {}
|
||||||
void nullsub_33(void) {}
|
void WeatherCoordEvent_FogHorizontal(void) {}
|
||||||
void nullsub_34(void) {}
|
void WeatherCoordEvent_VolcanicAsh(void) {}
|
||||||
void nullsub_35(void) {}
|
void WeatherCoordEvent_Sandstorm(void) {}
|
||||||
void nullsub_36(void) {}
|
void WeatherCoordEvent_FogDiagonal(void) {}
|
||||||
void nullsub_37(void) {}
|
void WeatherCoordEvent_Underwater(void) {}
|
||||||
void nullsub_38(void) {}
|
void WeatherCoordEvent_Shade(void) {}
|
||||||
void nullsub_39(void) {}
|
void WeatherCoordEvent_Route119Cycle(void) {}
|
||||||
|
void WeatherCoordEvent_Route123Cycle(void) {}
|
||||||
|
|
||||||
struct {
|
static struct {
|
||||||
u8 weatherId;
|
u8 weatherId;
|
||||||
void (*callback)(void);
|
void (*callback)(void);
|
||||||
} const gUnknown_83A72A8[] = {
|
} const sWeatherCoordEventFuncs[] = {
|
||||||
{0x01, nullsub_27},
|
{WEATHER_SUNNY_CLOUDS, WeatherCoordEvent_SunnyClouds },
|
||||||
{0x02, nullsub_28},
|
{WEATHER_SUNNY, WeatherCoordEvent_Sunny },
|
||||||
{0x03, nullsub_29},
|
{WEATHER_RAIN, WeatherCoordEvent_Rain },
|
||||||
{0x04, nullsub_30},
|
{WEATHER_SNOW, WeatherCoordEvent_Snow },
|
||||||
{0x05, nullsub_31},
|
{WEATHER_RAIN_THUNDERSTORM, WeatherCoordEvent_RainThunderstorm},
|
||||||
{0x06, nullsub_32},
|
{WEATHER_FOG_HORIZONTAL, WeatherCoordEvent_FogHorizontal },
|
||||||
{0x07, nullsub_33},
|
{WEATHER_VOLCANIC_ASH, WeatherCoordEvent_VolcanicAsh },
|
||||||
{0x08, nullsub_34},
|
{WEATHER_SANDSTORM, WeatherCoordEvent_Sandstorm },
|
||||||
{0x09, nullsub_35},
|
{WEATHER_FOG_DIAGONAL, WeatherCoordEvent_FogDiagonal },
|
||||||
{0x0a, nullsub_36},
|
{WEATHER_UNDERWATER, WeatherCoordEvent_Underwater },
|
||||||
{0x0b, nullsub_37},
|
{WEATHER_SHADE, WeatherCoordEvent_Shade },
|
||||||
{0x14, nullsub_38},
|
{WEATHER_ROUTE119_CYCLE, WeatherCoordEvent_Route119Cycle },
|
||||||
{0x15, nullsub_39}
|
{WEATHER_ROUTE123_CYCLE, WeatherCoordEvent_Route123Cycle }
|
||||||
};
|
};
|
||||||
|
|
||||||
void trigger_activate_weather(u8 weatherId)
|
void DoCoordEventWeather(u8 weatherId)
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i;
|
||||||
for (i = 0; i < NELEMS(gUnknown_83A72A8); i++)
|
for (i = 0; i < NELEMS(sWeatherCoordEventFuncs); i++)
|
||||||
{
|
{
|
||||||
if (gUnknown_83A72A8[i].weatherId == weatherId)
|
if (sWeatherCoordEventFuncs[i].weatherId == weatherId)
|
||||||
{
|
{
|
||||||
gUnknown_83A72A8[i].callback();
|
sWeatherCoordEventFuncs[i].callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+289
-1
@@ -1,6 +1,7 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "gflib.h"
|
#include "gflib.h"
|
||||||
#include "bike.h"
|
#include "bike.h"
|
||||||
|
#include "coord_event_weather.h"
|
||||||
#include "daycare.h"
|
#include "daycare.h"
|
||||||
#include "event_data.h"
|
#include "event_data.h"
|
||||||
#include "event_object_movement.h"
|
#include "event_object_movement.h"
|
||||||
@@ -28,6 +29,7 @@
|
|||||||
#include "constants/event_bg.h"
|
#include "constants/event_bg.h"
|
||||||
#include "constants/event_objects.h"
|
#include "constants/event_objects.h"
|
||||||
#include "constants/maps.h"
|
#include "constants/maps.h"
|
||||||
|
#include "constants/metatile_behaviors.h"
|
||||||
|
|
||||||
void sub_806CA4C(struct FieldInput *input, u16 *newKeys, u16 *heldKeys);
|
void sub_806CA4C(struct FieldInput *input, u16 *newKeys, u16 *heldKeys);
|
||||||
bool8 sub_80699D4(void);
|
bool8 sub_80699D4(void);
|
||||||
@@ -60,9 +62,11 @@ bool8 sub_806DB84(u16 metatileBehavior, u8 playerDirection);
|
|||||||
void SetupWarp(struct MapHeader * mapHeader, s8 warpId, struct MapPosition * position);
|
void SetupWarp(struct MapHeader * mapHeader, s8 warpId, struct MapPosition * position);
|
||||||
bool8 IsArrowWarpMetatileBehavior(u16 metatileBehavior, u8 playerDirection);
|
bool8 IsArrowWarpMetatileBehavior(u16 metatileBehavior, u8 playerDirection);
|
||||||
s8 GetWarpEventAtMapPosition(struct MapHeader * mapHeader, struct MapPosition * mapPosition);
|
s8 GetWarpEventAtMapPosition(struct MapHeader * mapHeader, struct MapPosition * mapPosition);
|
||||||
const u8 *GetCoordEventScriptAtPosition(struct MapHeader * mapHeader, u16 x, u16 y, u8 z);
|
|
||||||
bool8 TryDoorWarp(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection);
|
bool8 TryDoorWarp(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection);
|
||||||
|
s8 GetWarpEventAtPosition(struct MapHeader * mapHeader, u16 x, u16 y, u8 z);
|
||||||
|
const u8 *GetCoordEventScriptAtPosition(struct MapHeader * mapHeader, u16 x, u16 y, u8 z);
|
||||||
|
|
||||||
|
u8 gSelectedObjectEvent;
|
||||||
struct FieldInput gUnknown_3005078;
|
struct FieldInput gUnknown_3005078;
|
||||||
|
|
||||||
void FieldClearPlayerInput(struct FieldInput *input)
|
void FieldClearPlayerInput(struct FieldInput *input)
|
||||||
@@ -889,3 +893,287 @@ bool8 TryStartWarpEventScript(struct MapPosition *position, u16 metatileBehavior
|
|||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool8 IsWarpMetatileBehavior(u16 metatileBehavior)
|
||||||
|
{
|
||||||
|
if (MetatileBehavior_IsWarpDoor(metatileBehavior) == TRUE)
|
||||||
|
return TRUE;
|
||||||
|
if (MetatileBehavior_IsLadder(metatileBehavior) == TRUE)
|
||||||
|
return TRUE;
|
||||||
|
if (MetatileBehavior_IsEscalator(metatileBehavior) == TRUE)
|
||||||
|
return TRUE;
|
||||||
|
if (MetatileBehavior_IsCaveDoor(metatileBehavior) == TRUE)
|
||||||
|
return TRUE;
|
||||||
|
if (MetatileBehavior_IsLavaridgeB1FWarp(metatileBehavior) == TRUE)
|
||||||
|
return TRUE;
|
||||||
|
if (MetatileBehavior_IsLavaridge1FWarp(metatileBehavior) == TRUE)
|
||||||
|
return TRUE;
|
||||||
|
if (MetatileBehavior_IsWarpPad(metatileBehavior) == TRUE)
|
||||||
|
return TRUE;
|
||||||
|
if (MetatileBehavior_IsFallWarp(metatileBehavior) == TRUE)
|
||||||
|
return TRUE;
|
||||||
|
if (MetatileBehavior_IsUnionRoomWarp(metatileBehavior) == TRUE)
|
||||||
|
return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sub_806DB84(u16 metatileBehavior, u8 playerDirection)
|
||||||
|
{
|
||||||
|
switch (playerDirection)
|
||||||
|
{
|
||||||
|
case DIR_WEST:
|
||||||
|
if (MetatileBehavior_IsUnknownWarp6D(metatileBehavior))
|
||||||
|
return TRUE;
|
||||||
|
if (MetatileBehavior_IsUnknownWarp6F(metatileBehavior))
|
||||||
|
return TRUE;
|
||||||
|
break;
|
||||||
|
case DIR_EAST:
|
||||||
|
if (MetatileBehavior_IsUnknownWarp6C(metatileBehavior))
|
||||||
|
return TRUE;
|
||||||
|
if (MetatileBehavior_IsUnknownWarp6E(metatileBehavior))
|
||||||
|
return TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 IsArrowWarpMetatileBehavior(u16 metatileBehavior, u8 direction)
|
||||||
|
{
|
||||||
|
switch (direction)
|
||||||
|
{
|
||||||
|
case DIR_NORTH:
|
||||||
|
return MetatileBehavior_IsNorthArrowWarp(metatileBehavior);
|
||||||
|
case DIR_SOUTH:
|
||||||
|
return MetatileBehavior_IsSouthArrowWarp(metatileBehavior);
|
||||||
|
case DIR_WEST:
|
||||||
|
return MetatileBehavior_IsWestArrowWarp(metatileBehavior);
|
||||||
|
case DIR_EAST:
|
||||||
|
return MetatileBehavior_IsEastArrowWarp(metatileBehavior);
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
s8 GetWarpEventAtMapPosition(struct MapHeader *mapHeader, struct MapPosition *position)
|
||||||
|
{
|
||||||
|
return GetWarpEventAtPosition(mapHeader, position->x - 7, position->y - 7, position->height);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetupWarp(struct MapHeader *unused, s8 warpEventId, struct MapPosition *position)
|
||||||
|
{
|
||||||
|
const struct WarpEvent *warpEvent;
|
||||||
|
|
||||||
|
warpEvent = &gMapHeader.events->warps[warpEventId];
|
||||||
|
|
||||||
|
if (warpEvent->mapNum == MAP_NUM(NONE))
|
||||||
|
{
|
||||||
|
SetWarpDestinationToDynamicWarp(warpEvent->warpId);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const struct MapHeader *mapHeader;
|
||||||
|
|
||||||
|
SetWarpDestinationToMapWarp(warpEvent->mapGroup, warpEvent->mapNum, warpEvent->warpId);
|
||||||
|
UpdateEscapeWarp(position->x, position->y);
|
||||||
|
mapHeader = Overworld_GetMapHeaderByGroupAndId(warpEvent->mapGroup, warpEvent->mapNum);
|
||||||
|
if (mapHeader->events->warps[warpEvent->warpId].mapNum == MAP_NUM(NONE))
|
||||||
|
SetDynamicWarp(mapHeader->events->warps[warpEventId].warpId, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, warpEventId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 TryDoorWarp(struct MapPosition *position, u16 metatileBehavior, u8 direction)
|
||||||
|
{
|
||||||
|
s8 warpEventId;
|
||||||
|
|
||||||
|
if (direction == DIR_NORTH)
|
||||||
|
{
|
||||||
|
if (MetatileBehavior_IsWarpDoor(metatileBehavior) == TRUE)
|
||||||
|
{
|
||||||
|
warpEventId = GetWarpEventAtMapPosition(&gMapHeader, position);
|
||||||
|
if (warpEventId != -1 && IsWarpMetatileBehavior(metatileBehavior) == TRUE)
|
||||||
|
{
|
||||||
|
StoreInitialPlayerAvatarState();
|
||||||
|
SetupWarp(&gMapHeader, warpEventId, position);
|
||||||
|
DoDoorWarp();
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
s8 GetWarpEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation)
|
||||||
|
{
|
||||||
|
s32 i;
|
||||||
|
struct WarpEvent *warpEvent = mapHeader->events->warps;
|
||||||
|
u8 warpCount = mapHeader->events->warpCount;
|
||||||
|
|
||||||
|
for (i = 0; i < warpCount; i++, warpEvent++)
|
||||||
|
{
|
||||||
|
if ((u16)warpEvent->x == x && (u16)warpEvent->y == y)
|
||||||
|
{
|
||||||
|
if (warpEvent->elevation == elevation || warpEvent->elevation == 0)
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
const u8 *TryRunCoordEventScript(struct CoordEvent *coordEvent)
|
||||||
|
{
|
||||||
|
if (coordEvent != NULL)
|
||||||
|
{
|
||||||
|
if (coordEvent->script == NULL)
|
||||||
|
{
|
||||||
|
DoCoordEventWeather(coordEvent->trigger);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if (coordEvent->trigger == 0)
|
||||||
|
{
|
||||||
|
ScriptContext2_RunNewScript(coordEvent->script);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if (VarGet(coordEvent->trigger) == (u8)coordEvent->index)
|
||||||
|
return coordEvent->script;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
const u8 *GetCoordEventScriptAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation)
|
||||||
|
{
|
||||||
|
s32 i;
|
||||||
|
struct CoordEvent *coordEvents = mapHeader->events->coordEvents;
|
||||||
|
u8 coordEventCount = mapHeader->events->coordEventCount;
|
||||||
|
|
||||||
|
for (i = 0; i < coordEventCount; i++)
|
||||||
|
{
|
||||||
|
if ((u16)coordEvents[i].x == x && (u16)coordEvents[i].y == y)
|
||||||
|
{
|
||||||
|
if (coordEvents[i].elevation == elevation || coordEvents[i].elevation == 0)
|
||||||
|
{
|
||||||
|
const u8 *script = TryRunCoordEventScript(&coordEvents[i]);
|
||||||
|
if (script != NULL)
|
||||||
|
return script;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_806DE28(struct ObjectEvent * object)
|
||||||
|
{
|
||||||
|
if (MapGridGetMetatileBehaviorAt(object->currentCoords.x, object->currentCoords.y) == MB_FALL_WARP)
|
||||||
|
{
|
||||||
|
PlaySE(SE_RU_HYUU);
|
||||||
|
// w-why?!
|
||||||
|
RemoveObjectEventByLocalIdAndMap(object->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||||
|
FlagClear(sub_805FCD8(object->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_806DE70(u16 x, u16 y)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
const struct CoordEvent * events = gMapHeader.events->coordEvents;
|
||||||
|
int n = gMapHeader.events->coordEventCount;
|
||||||
|
|
||||||
|
if (MapGridGetMetatileBehaviorAt(x, y) == MB_STRENGTH_BUTTON)
|
||||||
|
{
|
||||||
|
for (i = 0; i < n; i++)
|
||||||
|
{
|
||||||
|
if (events[i].x + 7 == x && events[i].y + 7 == y)
|
||||||
|
{
|
||||||
|
sub_8112364();
|
||||||
|
ScriptContext1_SetupScript(events[i].script);
|
||||||
|
ScriptContext2_Enable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *position)
|
||||||
|
{
|
||||||
|
return GetCoordEventScriptAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
|
||||||
|
}
|
||||||
|
|
||||||
|
const struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation)
|
||||||
|
{
|
||||||
|
u8 i;
|
||||||
|
struct BgEvent *bgEvents = mapHeader->events->bgEvents;
|
||||||
|
u8 bgEventCount = mapHeader->events->bgEventCount;
|
||||||
|
|
||||||
|
for (i = 0; i < bgEventCount; i++)
|
||||||
|
{
|
||||||
|
if ((u16)bgEvents[i].x == x && (u16)bgEvents[i].y == y)
|
||||||
|
{
|
||||||
|
if (bgEvents[i].elevation == elevation || bgEvents[i].elevation == 0)
|
||||||
|
return &bgEvents[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 dive_warp(struct MapPosition *position, u16 metatileBehavior)
|
||||||
|
{
|
||||||
|
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && !MetatileBehavior_IsUnableToEmerge(metatileBehavior))
|
||||||
|
{
|
||||||
|
if (SetDiveWarpEmerge(position->x - 7, position->y - 7))
|
||||||
|
{
|
||||||
|
StoreInitialPlayerAvatarState();
|
||||||
|
DoDiveWarp();
|
||||||
|
PlaySE(SE_W291);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (MetatileBehavior_IsDiveable(metatileBehavior) == TRUE)
|
||||||
|
{
|
||||||
|
if (SetDiveWarpDive(position->x - 7, position->y - 7))
|
||||||
|
{
|
||||||
|
StoreInitialPlayerAvatarState();
|
||||||
|
DoDiveWarp();
|
||||||
|
PlaySE(SE_W291);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 TrySetDiveWarp(void)
|
||||||
|
{
|
||||||
|
s16 x, y;
|
||||||
|
u8 metatileBehavior;
|
||||||
|
|
||||||
|
PlayerGetDestCoords(&x, &y);
|
||||||
|
metatileBehavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||||
|
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && !MetatileBehavior_IsUnableToEmerge(metatileBehavior))
|
||||||
|
{
|
||||||
|
if (SetDiveWarpEmerge(x - 7, y - 7) == TRUE)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else if (MetatileBehavior_IsDiveable(metatileBehavior) == TRUE)
|
||||||
|
{
|
||||||
|
if (SetDiveWarpDive(x - 7, y - 7) == TRUE)
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
const u8 *GetObjectEventScriptPointerPlayerFacing(void)
|
||||||
|
{
|
||||||
|
u8 direction;
|
||||||
|
struct MapPosition position;
|
||||||
|
|
||||||
|
direction = GetPlayerMovementDirection();
|
||||||
|
GetInFrontOfPlayerPosition(&position);
|
||||||
|
return GetInteractedObjectEventScript(&position, MapGridGetMetatileBehaviorAt(position.x, position.y), direction);
|
||||||
|
}
|
||||||
|
|
||||||
|
int SetCableClubWarp(void)
|
||||||
|
{
|
||||||
|
struct MapPosition position;
|
||||||
|
|
||||||
|
GetPlayerMovementDirection(); //unnecessary
|
||||||
|
GetPlayerPosition(&position);
|
||||||
|
MapGridGetMetatileBehaviorAt(position.x, position.y); //unnecessary
|
||||||
|
SetupWarp(&gMapHeader, GetWarpEventAtMapPosition(&gMapHeader, &position), &position);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|||||||
@@ -474,7 +474,7 @@ bool8 MetatileBehavior_IsMountain(u8 metatileBehavior)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 MetatileBehavior_IsDeepOrSemiDeepWater(u8 metatileBehavior)
|
bool8 MetatileBehavior_IsDiveable(u8 metatileBehavior)
|
||||||
{
|
{
|
||||||
if(metatileBehavior >= MB_SEMI_DEEP_WATER && metatileBehavior <= MB_DEEP_WATER)
|
if(metatileBehavior >= MB_SEMI_DEEP_WATER && metatileBehavior <= MB_DEEP_WATER)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -482,7 +482,7 @@ bool8 MetatileBehavior_IsDeepOrSemiDeepWater(u8 metatileBehavior)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 MetatileBehavior_IsMB19(u8 metatileBehavior)
|
bool8 MetatileBehavior_IsUnableToEmerge(u8 metatileBehavior)
|
||||||
{
|
{
|
||||||
if(metatileBehavior == MB_19)
|
if(metatileBehavior == MB_19)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|||||||
+1
-1
@@ -4393,7 +4393,7 @@ static void sub_80C527C(u16 mapsec)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
warp1_set_2(sMapsecToSpawn[idx][0], sMapsecToSpawn[idx][1], -1);
|
SetWarpDestinationToMapWarp(sMapsecToSpawn[idx][0], sMapsecToSpawn[idx][1], -1);
|
||||||
}
|
}
|
||||||
ReturnToFieldFromFlyMapSelect();
|
ReturnToFieldFromFlyMapSelect();
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-10
@@ -47,21 +47,12 @@ gFieldLinkPlayerCount: @ 3005030
|
|||||||
|
|
||||||
.align 4
|
.align 4
|
||||||
.include "fieldmap.o"
|
.include "fieldmap.o"
|
||||||
|
|
||||||
.align 4
|
.align 4
|
||||||
.include "field_camera.o"
|
.include "field_camera.o"
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
.include "scrcmd.o"
|
.include "scrcmd.o"
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
@ .include "field_control_avatar.o"
|
.include "field_control_avatar.o"
|
||||||
gSelectedObjectEvent: @ 3005074
|
|
||||||
.space 0x4
|
|
||||||
|
|
||||||
gUnknown_3005078: @ 3005078
|
|
||||||
.space 0x4
|
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
.include "event_data.o"
|
.include "event_data.o"
|
||||||
.align 2
|
.align 2
|
||||||
|
|||||||
Reference in New Issue
Block a user