mirror of
https://github.com/pret/pokefirered.git
synced 2026-04-24 06:46:58 -05:00
Merge branch 'master' of github.com:pret/pokefirered into pokemon_storage_system
This commit is contained in:
commit
0367cc7d78
|
|
@ -79,7 +79,7 @@ sub_80BD100: @ 80BD100
|
|||
lsls r4, 2
|
||||
ldr r0, _080BD160 @ =gObjectEvents
|
||||
adds r4, r0
|
||||
bl player_get_direction_upper_nybble
|
||||
bl GetPlayerMovementDirection
|
||||
lsls r0, 24
|
||||
lsrs r7, r0, 24
|
||||
movs r0, 0
|
||||
|
|
@ -195,7 +195,7 @@ sub_80BD1E8: @ 80BD1E8
|
|||
lsls r2, 16
|
||||
lsrs r2, 16
|
||||
mov r8, r2
|
||||
bl player_get_direction_upper_nybble
|
||||
bl GetPlayerMovementDirection
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
adds r7, r5, 0
|
||||
|
|
@ -881,7 +881,7 @@ Bike_HandleBumpySlopeJump: @ 80BD6C4
|
|||
beq _080BD70C
|
||||
movs r0, 0x2
|
||||
strb r0, [r5, 0x8]
|
||||
bl player_get_direction_upper_nybble
|
||||
bl GetPlayerMovementDirection
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl nullsub_24
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -923,7 +923,7 @@ _0806CFA4: .4byte gDirectionToVectors
|
|||
_0806CFA8: .4byte gObjectEvents
|
||||
_0806CFAC:
|
||||
movs r4, 0
|
||||
ldr r1, _0806CFE4 @ =gUnknown_2031DEC
|
||||
ldr r1, _0806CFE4 @ =gLinkPlayerObjectEvents
|
||||
_0806CFB0:
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0x1
|
||||
|
|
@ -953,7 +953,7 @@ _0806CFDE:
|
|||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0806CFE4: .4byte gUnknown_2031DEC
|
||||
_0806CFE4: .4byte gLinkPlayerObjectEvents
|
||||
_0806CFE8: .4byte gSelectedObjectEvent
|
||||
_0806CFEC: .4byte gSpecialVar_LastTalked
|
||||
_0806CFF0: .4byte gSpecialVar_Facing
|
||||
|
|
@ -3083,7 +3083,7 @@ _0806E046:
|
|||
GetObjectEventScriptPointerForComparison: @ 806E050
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x8
|
||||
bl player_get_direction_upper_nybble
|
||||
bl GetPlayerMovementDirection
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
|
|
@ -3112,7 +3112,7 @@ GetObjectEventScriptPointerForComparison: @ 806E050
|
|||
SetCableClubWarp: @ 806E08C
|
||||
push {r4,lr}
|
||||
sub sp, 0x8
|
||||
bl player_get_direction_upper_nybble
|
||||
bl GetPlayerMovementDirection
|
||||
mov r4, sp
|
||||
mov r0, sp
|
||||
bl player_get_pos_to_and_height
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ sub_805B3B8: @ 805B3B8
|
|||
ldr r2, _0805B3D4 @ =gObjectEvents
|
||||
adds r0, r2
|
||||
ldr r2, _0805B3D8 @ =sub_805B3DC
|
||||
bl ObjectEventStep
|
||||
bl UpdateObjectEventCurrentMovement
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
|
|
@ -104,7 +104,7 @@ sub_805B45C: @ 805B45C
|
|||
cmp r0, 0
|
||||
bne _0805B4A6
|
||||
adds r0, r4, 0
|
||||
bl ObjectEventGetSpecialAnim
|
||||
bl ObjectEventGetHeldMovementActionId
|
||||
lsls r0, 24
|
||||
movs r1, 0xDF
|
||||
lsls r1, 24
|
||||
|
|
@ -119,7 +119,7 @@ sub_805B45C: @ 805B45C
|
|||
cmp r0, r5
|
||||
beq _0805B4A2
|
||||
adds r0, r4, 0
|
||||
bl ObjectEventClearAnim
|
||||
bl ObjectEventClearHeldMovement
|
||||
b _0805B4A6
|
||||
_0805B4A2:
|
||||
movs r0, 0x1
|
||||
|
|
@ -245,7 +245,7 @@ sub_805B528: @ 805B528
|
|||
strh r0, [r5, 0x1C]
|
||||
_0805B57A:
|
||||
ldr r0, [r4]
|
||||
bl ObjectEventClearAnim
|
||||
bl ObjectEventClearHeldMovement
|
||||
ldrb r0, [r5, 0x1C]
|
||||
bl sub_805C2CC
|
||||
_0805B586:
|
||||
|
|
@ -374,7 +374,7 @@ ForcedMovement_None: @ 805B644
|
|||
ldrb r1, [r0, 0x18]
|
||||
lsls r1, 28
|
||||
lsrs r1, 28
|
||||
bl ObjectEventSetDirection
|
||||
bl SetObjectEventDirection
|
||||
ldrb r1, [r4]
|
||||
movs r0, 0xBF
|
||||
ands r0, r1
|
||||
|
|
@ -816,7 +816,7 @@ CheckMovementInputNotOnBike: @ 805B96C
|
|||
.align 2, 0
|
||||
_0805B980: .4byte gPlayerAvatar
|
||||
_0805B984:
|
||||
bl player_get_direction_upper_nybble
|
||||
bl GetPlayerMovementDirection
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r4, r0
|
||||
|
|
@ -1678,8 +1678,8 @@ _0805BFD8: .4byte gObjectEvents
|
|||
_0805BFDC: .4byte gPlayerAvatar
|
||||
thumb_func_end player_set_x22
|
||||
|
||||
thumb_func_start player_get_x22
|
||||
player_get_x22: @ 805BFE0
|
||||
thumb_func_start PlayerGetCopyableMovement
|
||||
PlayerGetCopyableMovement: @ 805BFE0
|
||||
ldr r2, _0805BFF4 @ =gObjectEvents
|
||||
ldr r0, _0805BFF8 @ =gPlayerAvatar
|
||||
ldrb r1, [r0, 0x5]
|
||||
|
|
@ -1693,7 +1693,7 @@ player_get_x22: @ 805BFE0
|
|||
.align 2, 0
|
||||
_0805BFF4: .4byte gObjectEvents
|
||||
_0805BFF8: .4byte gPlayerAvatar
|
||||
thumb_func_end player_get_x22
|
||||
thumb_func_end PlayerGetCopyableMovement
|
||||
|
||||
thumb_func_start sub_805BFFC
|
||||
sub_805BFFC: @ 805BFFC
|
||||
|
|
@ -1708,7 +1708,7 @@ sub_805BFFC: @ 805BFFC
|
|||
lsls r0, 2
|
||||
ldr r2, _0805C020 @ =gObjectEvents
|
||||
adds r0, r2
|
||||
bl ObjectEventForceSetSpecialAnim
|
||||
bl ObjectEventForceSetHeldMovement
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
|
|
@ -1854,7 +1854,7 @@ sub_805C11C: @ 805C11C
|
|||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8063FB0
|
||||
bl GetWalkFastMovementAction
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
movs r1, 0x2
|
||||
|
|
@ -1896,7 +1896,7 @@ sub_805C164: @ 805C164
|
|||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8064034
|
||||
bl GetWalkFastestMovementAction
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
movs r1, 0x2
|
||||
|
|
@ -1942,7 +1942,7 @@ PlayerOnBikeCollide: @ 805C1AC
|
|||
adds r0, r4, 0
|
||||
bl sub_805C438
|
||||
adds r0, r4, 0
|
||||
bl GetStepInPlaceDelay16AnimId
|
||||
bl GetWalkInPlaceNormalMovementAction
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
movs r1, 0x2
|
||||
|
|
@ -1990,7 +1990,7 @@ sub_805C20C: @ 805C20C
|
|||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8063EE4
|
||||
bl GetWalkSlowMovementAction
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
movs r1, 0x1
|
||||
|
|
@ -2004,7 +2004,7 @@ sub_805C224: @ 805C224
|
|||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8064270
|
||||
bl GetWalkInPlaceSlowMovementAction
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
movs r1, 0x1
|
||||
|
|
@ -2022,7 +2022,7 @@ sub_805C23C: @ 805C23C
|
|||
movs r0, 0xA
|
||||
bl PlaySE
|
||||
adds r0, r4, 0
|
||||
bl GetJumpLedgeAnimId
|
||||
bl GetJump2MovementAction
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
movs r1, 0x8
|
||||
|
|
@ -2600,8 +2600,8 @@ _0805C6DC: .4byte gObjectEvents
|
|||
_0805C6E0: .4byte gPlayerAvatar
|
||||
thumb_func_end GetPlayerFacingDirection
|
||||
|
||||
thumb_func_start player_get_direction_upper_nybble
|
||||
player_get_direction_upper_nybble: @ 805C6E4
|
||||
thumb_func_start GetPlayerMovementDirection
|
||||
GetPlayerMovementDirection: @ 805C6E4
|
||||
ldr r2, _0805C6F8 @ =gObjectEvents
|
||||
ldr r0, _0805C6FC @ =gPlayerAvatar
|
||||
ldrb r1, [r0, 0x5]
|
||||
|
|
@ -2615,7 +2615,7 @@ player_get_direction_upper_nybble: @ 805C6E4
|
|||
.align 2, 0
|
||||
_0805C6F8: .4byte gObjectEvents
|
||||
_0805C6FC: .4byte gPlayerAvatar
|
||||
thumb_func_end player_get_direction_upper_nybble
|
||||
thumb_func_end GetPlayerMovementDirection
|
||||
|
||||
thumb_func_start PlayerGetZCoord
|
||||
PlayerGetZCoord: @ 805C700
|
||||
|
|
@ -2651,7 +2651,7 @@ sub_805C71C: @ 805C71C
|
|||
lsls r2, 16
|
||||
asrs r2, 16
|
||||
adds r1, r3, 0
|
||||
bl sub_805F724
|
||||
bl MoveObjectEventToMapCoords
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
|
|
@ -2712,7 +2712,7 @@ sub_805C780: @ 805C780
|
|||
lsls r1, 28
|
||||
lsrs r1, 28
|
||||
adds r0, r4, 0
|
||||
bl ObjectEventSetDirection
|
||||
bl SetObjectEventDirection
|
||||
movs r0, 0x6
|
||||
bl TestPlayerAvatarFlags
|
||||
lsls r0, 24
|
||||
|
|
@ -2787,8 +2787,8 @@ GetPlayerAvatarGraphicsIdByStateId: @ 805C808
|
|||
_0805C820: .4byte gPlayerAvatar
|
||||
thumb_func_end GetPlayerAvatarGraphicsIdByStateId
|
||||
|
||||
thumb_func_start sub_805C824
|
||||
sub_805C824: @ 805C824
|
||||
thumb_func_start GetPlayerAvatarGenderByGraphicsId
|
||||
GetPlayerAvatarGenderByGraphicsId: @ 805C824
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
|
|
@ -2803,7 +2803,7 @@ _0805C836:
|
|||
_0805C838:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_805C824
|
||||
thumb_func_end GetPlayerAvatarGenderByGraphicsId
|
||||
|
||||
thumb_func_start PartyHasMonWithSurf
|
||||
PartyHasMonWithSurf: @ 805C83C
|
||||
|
|
@ -2854,7 +2854,7 @@ _0805C888: .4byte gPlayerParty
|
|||
thumb_func_start IsPlayerSurfingNorth
|
||||
IsPlayerSurfingNorth: @ 805C88C
|
||||
push {lr}
|
||||
bl player_get_direction_upper_nybble
|
||||
bl GetPlayerMovementDirection
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x2
|
||||
|
|
@ -3546,7 +3546,7 @@ sub_805CD84: @ 805CD84
|
|||
adds r0, r4, 0
|
||||
bl ObjectEventClearHeldMovementIfFinished
|
||||
ldrb r0, [r6, 0xC]
|
||||
bl GetStepInPlaceDelay16AnimId
|
||||
bl GetWalkInPlaceNormalMovementAction
|
||||
adds r1, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
|
|
@ -4296,7 +4296,7 @@ fish1: @ 805D35C
|
|||
lsls r4, 2
|
||||
adds r4, r3
|
||||
adds r0, r4, 0
|
||||
bl ObjectEventClearAnimIfSpecialAnimActive
|
||||
bl ObjectEventClearHeldMovementIfActive
|
||||
ldrb r0, [r4, 0x1]
|
||||
movs r1, 0x8
|
||||
orrs r0, r1
|
||||
|
|
@ -4830,7 +4830,7 @@ sub_805D7C0: @ 805D7C0
|
|||
bl GetPlayerFacingDirection
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8063500
|
||||
bl GetFishingBiteDirectionAnimNum
|
||||
adds r1, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
|
|
@ -4886,7 +4886,7 @@ sub_805D838: @ 805D838
|
|||
bl GetPlayerFacingDirection
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8063500
|
||||
bl GetFishingBiteDirectionAnimNum
|
||||
adds r1, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
|
|
@ -5455,7 +5455,7 @@ _0805DC9A:
|
|||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
adds r0, r4, 0
|
||||
bl ObjectEventForceSetSpecialAnim
|
||||
bl ObjectEventForceSetHeldMovement
|
||||
movs r0, 0
|
||||
mov r9, r0
|
||||
strh r6, [r5, 0x2]
|
||||
|
|
@ -5623,7 +5623,7 @@ _0805DDE4:
|
|||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
adds r0, r5, 0
|
||||
bl ObjectEventForceSetSpecialAnim
|
||||
bl ObjectEventForceSetHeldMovement
|
||||
movs r0, 0
|
||||
strh r0, [r6]
|
||||
ldrb r0, [r5, 0x18]
|
||||
|
|
|
|||
|
|
@ -4637,11 +4637,11 @@ sub_8057024: @ 8057024
|
|||
cmp r4, 0
|
||||
bne _08057050
|
||||
movs r0, 0
|
||||
bl npc_paltag_set_load
|
||||
bl InitObjectEventPalettes
|
||||
b _08057056
|
||||
_08057050:
|
||||
movs r0, 0x1
|
||||
bl npc_paltag_set_load
|
||||
bl InitObjectEventPalettes
|
||||
_08057056:
|
||||
bl FieldEffectActiveListClear
|
||||
bl sub_8079C08
|
||||
|
|
@ -4664,10 +4664,10 @@ sub_8057074: @ 8057074
|
|||
strh r1, [r0]
|
||||
ldr r0, _08057098 @ =gTotalCameraPixelOffsetY
|
||||
strh r1, [r0]
|
||||
bl sub_805DE74
|
||||
bl ResetObjectEvents
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
bl sub_805EC30
|
||||
bl TrySpawnObjectEvents
|
||||
bl mapheader_run_first_tag4_script_list_match
|
||||
pop {r0}
|
||||
bx r0
|
||||
|
|
@ -4685,7 +4685,7 @@ mli4_mapscripts_and_other: @ 805709C
|
|||
strh r1, [r0]
|
||||
ldr r0, _080570F8 @ =gTotalCameraPixelOffsetY
|
||||
strh r1, [r0]
|
||||
bl sub_805DE74
|
||||
bl ResetObjectEvents
|
||||
mov r4, sp
|
||||
adds r4, 0x2
|
||||
mov r0, sp
|
||||
|
|
@ -4708,7 +4708,7 @@ mli4_mapscripts_and_other: @ 805709C
|
|||
bl ResetInitialPlayerAvatarState
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
bl sub_805EC30
|
||||
bl TrySpawnObjectEvents
|
||||
bl mapheader_run_first_tag4_script_list_match
|
||||
add sp, 0x4
|
||||
pop {r4,r5}
|
||||
|
|
@ -6611,7 +6611,7 @@ sub_8057F84: @ 8057F84
|
|||
movs r0, 0x1
|
||||
_08057F96:
|
||||
strb r0, [r6, 0x1]
|
||||
ldr r1, _08057FE8 @ =gUnknown_2031DEC
|
||||
ldr r1, _08057FE8 @ =gLinkPlayerObjectEvents
|
||||
lsls r0, r4, 2
|
||||
adds r0, r1
|
||||
ldrb r0, [r0, 0x3]
|
||||
|
|
@ -6647,7 +6647,7 @@ _08057F96:
|
|||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08057FE8: .4byte gUnknown_2031DEC
|
||||
_08057FE8: .4byte gLinkPlayerObjectEvents
|
||||
thumb_func_end sub_8057F84
|
||||
|
||||
thumb_func_start sub_8057FEC
|
||||
|
|
@ -7143,18 +7143,18 @@ ZeroLinkPlayerObjectEvent: @ 8058370
|
|||
bx lr
|
||||
thumb_func_end ZeroLinkPlayerObjectEvent
|
||||
|
||||
thumb_func_start strange_npc_table_clear
|
||||
strange_npc_table_clear: @ 8058378
|
||||
thumb_func_start ClearLinkPlayerObjectEvents
|
||||
ClearLinkPlayerObjectEvents: @ 8058378
|
||||
push {lr}
|
||||
ldr r0, _08058388 @ =gUnknown_2031DEC
|
||||
ldr r0, _08058388 @ =gLinkPlayerObjectEvents
|
||||
movs r1, 0
|
||||
movs r2, 0x10
|
||||
bl memset
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08058388: .4byte gUnknown_2031DEC
|
||||
thumb_func_end strange_npc_table_clear
|
||||
_08058388: .4byte gLinkPlayerObjectEvents
|
||||
thumb_func_end ClearLinkPlayerObjectEvents
|
||||
|
||||
thumb_func_start ZeroObjectEvent
|
||||
ZeroObjectEvent: @ 805838C
|
||||
|
|
@ -7190,12 +7190,12 @@ SpawnLinkPlayerObjectEvent: @ 805839C
|
|||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
mov r8, r2
|
||||
bl GetIndexOfFirstInactiveObjectEvent
|
||||
bl GetFirstInactiveObjectEventId
|
||||
adds r6, r0, 0
|
||||
lsls r6, 24
|
||||
lsrs r6, 24
|
||||
lsls r4, r7, 2
|
||||
ldr r0, _08058440 @ =gUnknown_2031DEC
|
||||
ldr r0, _08058440 @ =gLinkPlayerObjectEvents
|
||||
adds r4, r0
|
||||
lsls r5, r6, 3
|
||||
adds r5, r6
|
||||
|
|
@ -7247,7 +7247,7 @@ SpawnLinkPlayerObjectEvent: @ 805839C
|
|||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08058440: .4byte gUnknown_2031DEC
|
||||
_08058440: .4byte gLinkPlayerObjectEvents
|
||||
_08058444: .4byte gObjectEvents
|
||||
thumb_func_end SpawnLinkPlayerObjectEvent
|
||||
|
||||
|
|
@ -7290,7 +7290,7 @@ sub_8058488: @ 8058488
|
|||
lsls r0, 24
|
||||
lsls r1, 24
|
||||
lsrs r2, r1, 24
|
||||
ldr r1, _080584B0 @ =gUnknown_2031DEC
|
||||
ldr r1, _080584B0 @ =gLinkPlayerObjectEvents
|
||||
lsrs r0, 22
|
||||
adds r1, r0, r1
|
||||
ldrb r0, [r1]
|
||||
|
|
@ -7307,7 +7307,7 @@ _080584AA:
|
|||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080584B0: .4byte gUnknown_2031DEC
|
||||
_080584B0: .4byte gLinkPlayerObjectEvents
|
||||
_080584B4: .4byte gObjectEvents
|
||||
thumb_func_end sub_8058488
|
||||
|
||||
|
|
@ -7316,7 +7316,7 @@ sub_80584B8: @ 80584B8
|
|||
push {r4,r5,lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 22
|
||||
ldr r1, _080584F8 @ =gUnknown_2031DEC
|
||||
ldr r1, _080584F8 @ =gLinkPlayerObjectEvents
|
||||
adds r5, r0, r1
|
||||
ldrb r1, [r5, 0x2]
|
||||
lsls r0, r1, 3
|
||||
|
|
@ -7345,7 +7345,7 @@ _080584E4:
|
|||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080584F8: .4byte gUnknown_2031DEC
|
||||
_080584F8: .4byte gLinkPlayerObjectEvents
|
||||
_080584FC: .4byte gObjectEvents
|
||||
_08058500: .4byte gSprites
|
||||
thumb_func_end sub_80584B8
|
||||
|
|
@ -7353,7 +7353,7 @@ _08058500: .4byte gSprites
|
|||
thumb_func_start sub_8058504
|
||||
sub_8058504: @ 8058504
|
||||
lsls r0, 24
|
||||
ldr r1, _0805851C @ =gUnknown_2031DEC
|
||||
ldr r1, _0805851C @ =gLinkPlayerObjectEvents
|
||||
lsrs r0, 22
|
||||
adds r0, r1
|
||||
ldrb r1, [r0, 0x2]
|
||||
|
|
@ -7365,14 +7365,14 @@ sub_8058504: @ 8058504
|
|||
ldrb r0, [r0, 0x4]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0805851C: .4byte gUnknown_2031DEC
|
||||
_0805851C: .4byte gLinkPlayerObjectEvents
|
||||
_08058520: .4byte gObjectEvents
|
||||
thumb_func_end sub_8058504
|
||||
|
||||
thumb_func_start sub_8058524
|
||||
sub_8058524: @ 8058524
|
||||
lsls r0, 24
|
||||
ldr r3, _08058544 @ =gUnknown_2031DEC
|
||||
ldr r3, _08058544 @ =gLinkPlayerObjectEvents
|
||||
lsrs r0, 22
|
||||
adds r0, r3
|
||||
ldrb r3, [r0, 0x2]
|
||||
|
|
@ -7387,14 +7387,14 @@ sub_8058524: @ 8058524
|
|||
strh r0, [r2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08058544: .4byte gUnknown_2031DEC
|
||||
_08058544: .4byte gLinkPlayerObjectEvents
|
||||
_08058548: .4byte gObjectEvents
|
||||
thumb_func_end sub_8058524
|
||||
|
||||
thumb_func_start sub_805854C
|
||||
sub_805854C: @ 805854C
|
||||
lsls r0, 24
|
||||
ldr r1, _08058564 @ =gUnknown_2031DEC
|
||||
ldr r1, _08058564 @ =gLinkPlayerObjectEvents
|
||||
lsrs r0, 22
|
||||
adds r0, r1
|
||||
ldrb r1, [r0, 0x2]
|
||||
|
|
@ -7406,14 +7406,14 @@ sub_805854C: @ 805854C
|
|||
ldrb r0, [r0, 0x19]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08058564: .4byte gUnknown_2031DEC
|
||||
_08058564: .4byte gLinkPlayerObjectEvents
|
||||
_08058568: .4byte gObjectEvents
|
||||
thumb_func_end sub_805854C
|
||||
|
||||
thumb_func_start sub_805856C
|
||||
sub_805856C: @ 805856C
|
||||
lsls r0, 24
|
||||
ldr r1, _08058588 @ =gUnknown_2031DEC
|
||||
ldr r1, _08058588 @ =gLinkPlayerObjectEvents
|
||||
lsrs r0, 22
|
||||
adds r0, r1
|
||||
ldrb r1, [r0, 0x2]
|
||||
|
|
@ -7427,14 +7427,14 @@ sub_805856C: @ 805856C
|
|||
lsrs r0, 28
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08058588: .4byte gUnknown_2031DEC
|
||||
_08058588: .4byte gLinkPlayerObjectEvents
|
||||
_0805858C: .4byte gObjectEvents
|
||||
thumb_func_end sub_805856C
|
||||
|
||||
thumb_func_start sub_8058590
|
||||
sub_8058590: @ 8058590
|
||||
lsls r0, 24
|
||||
ldr r1, _080585B0 @ =gUnknown_2031DEC
|
||||
ldr r1, _080585B0 @ =gLinkPlayerObjectEvents
|
||||
lsrs r0, 22
|
||||
adds r0, r1
|
||||
ldrb r1, [r0, 0x2]
|
||||
|
|
@ -7450,7 +7450,7 @@ sub_8058590: @ 8058590
|
|||
subs r0, r1
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_080585B0: .4byte gUnknown_2031DEC
|
||||
_080585B0: .4byte gLinkPlayerObjectEvents
|
||||
_080585B4: .4byte gObjectEvents
|
||||
thumb_func_end sub_8058590
|
||||
|
||||
|
|
@ -7458,7 +7458,7 @@ _080585B4: .4byte gObjectEvents
|
|||
GetLinkPlayerIdAt: @ 80585B8
|
||||
push {r4-r6,lr}
|
||||
movs r2, 0
|
||||
ldr r5, _080585FC @ =gUnknown_2031DEC
|
||||
ldr r5, _080585FC @ =gLinkPlayerObjectEvents
|
||||
lsls r0, 16
|
||||
asrs r4, r0, 16
|
||||
lsls r1, 16
|
||||
|
|
@ -7492,7 +7492,7 @@ _080585DA:
|
|||
adds r0, r2, 0
|
||||
b _08058610
|
||||
.align 2, 0
|
||||
_080585FC: .4byte gUnknown_2031DEC
|
||||
_080585FC: .4byte gLinkPlayerObjectEvents
|
||||
_08058600: .4byte gObjectEvents
|
||||
_08058604:
|
||||
adds r0, r2, 0x1
|
||||
|
|
@ -7515,7 +7515,7 @@ sub_8058618: @ 8058618
|
|||
lsrs r3, r1, 24
|
||||
adds r2, r3, 0
|
||||
lsrs r0, 22
|
||||
ldr r1, _08058648 @ =gUnknown_2031DEC
|
||||
ldr r1, _08058648 @ =gLinkPlayerObjectEvents
|
||||
adds r5, r0, r1
|
||||
ldrb r1, [r5, 0x2]
|
||||
lsls r0, r1, 3
|
||||
|
|
@ -7534,7 +7534,7 @@ sub_8058618: @ 8058618
|
|||
strb r0, [r6]
|
||||
b _08058674
|
||||
.align 2, 0
|
||||
_08058648: .4byte gUnknown_2031DEC
|
||||
_08058648: .4byte gLinkPlayerObjectEvents
|
||||
_0805864C: .4byte gObjectEvents
|
||||
_08058650:
|
||||
ldr r4, _0805867C @ =gUnknown_826D374
|
||||
|
|
@ -7651,7 +7651,7 @@ sub_80586CC: @ 80586CC
|
|||
movs r3, 0
|
||||
ldrsh r2, [r6, r3]
|
||||
adds r0, r5, 0
|
||||
bl npc_coords_shift
|
||||
bl ShiftObjectEventCoords
|
||||
adds r0, r5, 0
|
||||
bl ObjectEventUpdateZCoord
|
||||
movs r0, 0x1
|
||||
|
|
@ -7708,7 +7708,7 @@ sub_8058754: @ 8058754
|
|||
cmp r0, 0
|
||||
bne _08058784
|
||||
adds r0, r4, 0
|
||||
bl npc_coords_shift_still
|
||||
bl ShiftStillObjectEventCoords
|
||||
movs r0, 0x2
|
||||
strb r0, [r6, 0x3]
|
||||
_08058784:
|
||||
|
|
@ -7851,7 +7851,7 @@ sub_8058878: @ 8058878
|
|||
lsls r1, 24
|
||||
lsrs r3, r1, 24
|
||||
lsls r2, r5, 2
|
||||
ldr r0, _080588B4 @ =gUnknown_2031DEC
|
||||
ldr r0, _080588B4 @ =gLinkPlayerObjectEvents
|
||||
adds r2, r0
|
||||
ldrb r1, [r2, 0x2]
|
||||
lsls r0, r1, 3
|
||||
|
|
@ -7874,7 +7874,7 @@ sub_8058878: @ 8058878
|
|||
bl sub_805C7C8
|
||||
b _080588C6
|
||||
.align 2, 0
|
||||
_080588B4: .4byte gUnknown_2031DEC
|
||||
_080588B4: .4byte gLinkPlayerObjectEvents
|
||||
_080588B8: .4byte gObjectEvents
|
||||
_080588BC:
|
||||
ldrb r0, [r4]
|
||||
|
|
@ -7925,7 +7925,7 @@ SpriteCB_LinkPlayer: @ 805890C
|
|||
movs r0, 0x2E
|
||||
ldrsh r4, [r5, r0]
|
||||
lsls r4, 2
|
||||
ldr r0, _08058970 @ =gUnknown_2031DEC
|
||||
ldr r0, _08058970 @ =gLinkPlayerObjectEvents
|
||||
adds r4, r0
|
||||
ldrb r1, [r4, 0x2]
|
||||
lsls r0, r1, 3
|
||||
|
|
@ -7958,7 +7958,7 @@ SpriteCB_LinkPlayer: @ 805890C
|
|||
cmp r0, 0
|
||||
bne _08058978
|
||||
ldrb r0, [r6, 0x19]
|
||||
bl ObjectEventDirectionToImageAnimId
|
||||
bl GetFaceDirectionAnimNum
|
||||
adds r1, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
|
|
@ -7966,11 +7966,11 @@ SpriteCB_LinkPlayer: @ 805890C
|
|||
bl StartSpriteAnim
|
||||
b _0805898A
|
||||
.align 2, 0
|
||||
_08058970: .4byte gUnknown_2031DEC
|
||||
_08058970: .4byte gLinkPlayerObjectEvents
|
||||
_08058974: .4byte gObjectEvents
|
||||
_08058978:
|
||||
ldrb r0, [r6, 0x19]
|
||||
bl get_go_image_anim_num
|
||||
bl GetMoveDirectionAnimNum
|
||||
adds r1, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -154,22 +154,28 @@
|
|||
#define OBJ_EVENT_GFX_DEOXYS_N 150
|
||||
#define OBJ_EVENT_GFX_SS_ANNE 151
|
||||
|
||||
#define OBJ_EVENT_GFX_VAR_0 240
|
||||
#define OBJ_EVENT_GFX_VAR_1 241
|
||||
#define OBJ_EVENT_GFX_VAR_2 242
|
||||
#define OBJ_EVENT_GFX_VAR_3 243
|
||||
#define OBJ_EVENT_GFX_VAR_4 244
|
||||
#define OBJ_EVENT_GFX_VAR_5 245
|
||||
#define OBJ_EVENT_GFX_VAR_6 246
|
||||
#define OBJ_EVENT_GFX_VAR_7 247
|
||||
#define OBJ_EVENT_GFX_VAR_8 248
|
||||
#define OBJ_EVENT_GFX_VAR_9 249
|
||||
#define OBJ_EVENT_GFX_VAR_A 250
|
||||
#define OBJ_EVENT_GFX_VAR_B 251
|
||||
#define OBJ_EVENT_GFX_VAR_C 252
|
||||
#define OBJ_EVENT_GFX_VAR_D 253
|
||||
#define OBJ_EVENT_GFX_VAR_E 254
|
||||
#define OBJ_EVENT_GFX_VAR_F 255
|
||||
#define NUM_OBJ_EVENT_GFX 239
|
||||
|
||||
// These are dynamic object gfx ids.
|
||||
// They correspond with the values of the VAR_OBJ_GFX_ID_X vars.
|
||||
// More info about them in include/constants/vars.h
|
||||
#define OBJ_EVENT_GFX_VARS (NUM_OBJ_EVENT_GFX + 1)
|
||||
#define OBJ_EVENT_GFX_VAR_0 (OBJ_EVENT_GFX_VARS + 0x0) // 240
|
||||
#define OBJ_EVENT_GFX_VAR_1 (OBJ_EVENT_GFX_VARS + 0x1)
|
||||
#define OBJ_EVENT_GFX_VAR_2 (OBJ_EVENT_GFX_VARS + 0x2)
|
||||
#define OBJ_EVENT_GFX_VAR_3 (OBJ_EVENT_GFX_VARS + 0x3)
|
||||
#define OBJ_EVENT_GFX_VAR_4 (OBJ_EVENT_GFX_VARS + 0x4)
|
||||
#define OBJ_EVENT_GFX_VAR_5 (OBJ_EVENT_GFX_VARS + 0x5)
|
||||
#define OBJ_EVENT_GFX_VAR_6 (OBJ_EVENT_GFX_VARS + 0x6)
|
||||
#define OBJ_EVENT_GFX_VAR_7 (OBJ_EVENT_GFX_VARS + 0x7)
|
||||
#define OBJ_EVENT_GFX_VAR_8 (OBJ_EVENT_GFX_VARS + 0x8)
|
||||
#define OBJ_EVENT_GFX_VAR_9 (OBJ_EVENT_GFX_VARS + 0x9)
|
||||
#define OBJ_EVENT_GFX_VAR_A (OBJ_EVENT_GFX_VARS + 0xA)
|
||||
#define OBJ_EVENT_GFX_VAR_B (OBJ_EVENT_GFX_VARS + 0xB)
|
||||
#define OBJ_EVENT_GFX_VAR_C (OBJ_EVENT_GFX_VARS + 0xC)
|
||||
#define OBJ_EVENT_GFX_VAR_D (OBJ_EVENT_GFX_VARS + 0xD)
|
||||
#define OBJ_EVENT_GFX_VAR_E (OBJ_EVENT_GFX_VARS + 0xE)
|
||||
#define OBJ_EVENT_GFX_VAR_F (OBJ_EVENT_GFX_VARS + 0xF) // 255
|
||||
|
||||
#define SHADOW_SIZE_S 0
|
||||
#define SHADOW_SIZE_M 1
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef GUARD_CONSTANTS_FIELD_EFFECTS_H
|
||||
#define GUARD_CONSTANTS_FIELD_EFFECTS_H
|
||||
|
||||
|
||||
#define FLDEFF_EXCLAMATION_MARK_ICON 0
|
||||
#define FLDEFF_USE_CUT_ON_GRASS 1
|
||||
#define FLDEFF_USE_CUT_ON_TREE 2
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
#define BAG_POKEBALLS_COUNT 13
|
||||
#define BAG_TMHM_COUNT 58
|
||||
#define BAG_BERRIES_COUNT 43
|
||||
#define OBJECT_EVENT_TEMPLATES_COUNT 64
|
||||
|
||||
#define QUEST_LOG_SCENE_COUNT 4
|
||||
|
||||
|
|
|
|||
|
|
@ -13,21 +13,21 @@
|
|||
#define MB_SEMI_DEEP_WATER 0x11
|
||||
#define MB_DEEP_WATER 0x12
|
||||
#define MB_WATERFALL 0x13
|
||||
#define MB_SPLASHING_WATER 0x15
|
||||
#define MB_OCEAN_WATER 0x15
|
||||
#define MB_PUDDLE 0x16
|
||||
#define MB_WATERFALL_BOTTOM 0x17
|
||||
#define MB_SHALLOW_WATER 0x17
|
||||
#define MB_19 0x19
|
||||
#define MB_1A 0x1A
|
||||
#define MB_1B 0x1B
|
||||
#define MB_STRENGTH_BUTTON 0x20
|
||||
#define MB_21 0x21
|
||||
#define MB_SAND 0x21
|
||||
#define MB_22 0x22
|
||||
#define MB_ICE 0x23
|
||||
#define MB_THIN_ICE 0x26
|
||||
#define MB_CRACKED_ICE 0x27
|
||||
#define MB_HOT_SPRINGS 0x28
|
||||
#define MB_ROCK_STAIRS 0x2A
|
||||
#define MB_SAND 0x2B
|
||||
#define MB_SAND_CAVE 0x2B
|
||||
#define MB_IMPASSABLE_EAST 0x30
|
||||
#define MB_IMPASSABLE_WEST 0x31
|
||||
#define MB_IMPASSABLE_NORTH 0x32
|
||||
|
|
|
|||
|
|
@ -3,12 +3,10 @@
|
|||
|
||||
#include "global.h"
|
||||
|
||||
#define NUM_OBJECT_GRAPHICS_INFO 239
|
||||
#define SPRITE_VAR 240
|
||||
|
||||
// Exported struct declarations
|
||||
|
||||
enum SpinnerRunnerFollowPatterns {
|
||||
enum SpinnerRunnerFollowPatterns
|
||||
{
|
||||
RUNFOLLOW_ANY,
|
||||
RUNFOLLOW_NORTH_SOUTH,
|
||||
RUNFOLLOW_EAST_WEST,
|
||||
|
|
@ -22,6 +20,39 @@ enum SpinnerRunnerFollowPatterns {
|
|||
RUNFOLLOW_SOUTH_EAST_WEST
|
||||
};
|
||||
|
||||
struct UnkStruct_083A3698
|
||||
{
|
||||
const union AnimCmd *const *anims;
|
||||
u8 animPos[4];
|
||||
};
|
||||
|
||||
#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_SPAWN (1 << 0)
|
||||
#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_MOVE (1 << 1)
|
||||
#define GROUND_EFFECT_FLAG_LONG_GRASS_ON_SPAWN (1 << 2)
|
||||
#define GROUND_EFFECT_FLAG_LONG_GRASS_ON_MOVE (1 << 3)
|
||||
#define GROUND_EFFECT_FLAG_ICE_REFLECTION (1 << 4)
|
||||
#define GROUND_EFFECT_FLAG_REFLECTION (1 << 5)
|
||||
#define GROUND_EFFECT_FLAG_SHALLOW_FLOWING_WATER (1 << 6)
|
||||
#define GROUND_EFFECT_FLAG_SAND (1 << 7)
|
||||
#define GROUND_EFFECT_FLAG_DEEP_SAND (1 << 8)
|
||||
#define GROUND_EFFECT_FLAG_RIPPLES (1 << 9)
|
||||
#define GROUND_EFFECT_FLAG_PUDDLE (1 << 10)
|
||||
#define GROUND_EFFECT_FLAG_SAND_PILE (1 << 11)
|
||||
#define GROUND_EFFECT_FLAG_LAND_IN_TALL_GRASS (1 << 12)
|
||||
#define GROUND_EFFECT_FLAG_LAND_IN_LONG_GRASS (1 << 13)
|
||||
#define GROUND_EFFECT_FLAG_LAND_IN_SHALLOW_WATER (1 << 14)
|
||||
#define GROUND_EFFECT_FLAG_LAND_IN_DEEP_WATER (1 << 15)
|
||||
#define GROUND_EFFECT_FLAG_LAND_ON_NORMAL_GROUND (1 << 16)
|
||||
#define GROUND_EFFECT_FLAG_SHORT_GRASS (1 << 17)
|
||||
#define GROUND_EFFECT_FLAG_HOT_SPRINGS (1 << 18)
|
||||
#define GROUND_EFFECT_FLAG_SEAWEED (1 << 19)
|
||||
|
||||
struct PairedPalettes
|
||||
{
|
||||
u16 tag;
|
||||
const u16 *data;
|
||||
};
|
||||
|
||||
// Exported RAM declarations
|
||||
|
||||
// Exported ROM declarations
|
||||
|
|
@ -30,83 +61,91 @@ void sub_808D438(void);
|
|||
u8 GetObjectEventIdByLocalIdAndMap(u8, u8, u8);
|
||||
bool8 TryGetObjectEventIdByLocalIdAndMap(u8, u8, u8, u8 *);
|
||||
u8 GetObjectEventIdByXY(s16, s16);
|
||||
void ObjectEventSetDirection(struct ObjectEvent *, u8);
|
||||
void SetObjectEventDirection(struct ObjectEvent *, u8);
|
||||
u8 sub_808D4F4(void);
|
||||
void RemoveObjectEventByLocalIdAndMap(u8, u8, u8);
|
||||
void LoadPlayerObjectReflectionPalette(u16, u8);
|
||||
void LoadSpecialObjectReflectionPalette(u16, u8);
|
||||
void sub_805F7C4(u8, u8, u8, s16, s16);
|
||||
void TryMoveObjectEventToMapCoords(u8, u8, u8, s16, s16);
|
||||
void PatchObjectPalette(u16, u8);
|
||||
void sub_808E16C(s16, s16);
|
||||
void sub_808F28C(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat);
|
||||
void sub_8092FF0(s16, s16, s16 *, s16 *);
|
||||
u8 ObjectEventDirectionToImageAnimId(u8);
|
||||
void sub_8063AD4(s16, s16, s16 *, s16 *);
|
||||
u8 GetFaceDirectionAnimNum(u8);
|
||||
void sub_8063BC4(s16 *, s16 *, s16, s16);
|
||||
void ObjectEventClearAnim(struct ObjectEvent *);
|
||||
void ObjectEventClearAnimIfSpecialAnimActive(struct ObjectEvent *);
|
||||
void ObjectEventClearHeldMovement(struct ObjectEvent *);
|
||||
void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *);
|
||||
void SpawnObjectEventsInView(s16, s16);
|
||||
u8 sprite_new(u8, u8, s16, s16, u8, u8);
|
||||
u8 AddPseudoObjectEvent(u16, SpriteCallback, s16, s16, u8);
|
||||
u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup);
|
||||
int SpawnSpecialObjectEventParameterized(u8, u8, u8, s16, s16, u8);
|
||||
u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *);
|
||||
void sub_8093038(s16, s16, s16 *, s16 *);
|
||||
void CameraObjectReset1(void);
|
||||
void CameraObjectReset2(void);
|
||||
void ObjectEventSetGraphicsId(struct ObjectEvent *, u8);
|
||||
void ObjectEventTurn(struct ObjectEvent *, u8);
|
||||
void ObjectEventTurnByLocalIdAndMap(u8, u8, u8, u8);
|
||||
void ObjectEventForceSetSpecialAnim(struct ObjectEvent *, u8);
|
||||
u8 sub_8064270(u8 a0);
|
||||
void ObjectEventForceSetHeldMovement(struct ObjectEvent *, u8);
|
||||
const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8);
|
||||
void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8);
|
||||
void gpu_pal_allocator_reset__manage_upper_four(void);
|
||||
void FreeAndReserveObjectSpritePalettes(void);
|
||||
void sub_808E82C(u8, u8, u8, s16, s16);
|
||||
void sub_805F400(u8, u8, u8);
|
||||
void sub_805F3A8(u8, u8, u8, u8);
|
||||
void sub_808E75C(s16, s16);
|
||||
void ObjectEventGetLocalIdAndMap(struct ObjectEvent * objectEvent, u8 *localId, u8 *mapNum, u8 *mapGroup);
|
||||
void npc_coords_shift(struct ObjectEvent *, s16, s16);
|
||||
void ObjectEventGetLocalIdAndMap(struct ObjectEvent *objectEvent, void *localId, void *mapNum, void *mapGroup);
|
||||
void ShiftObjectEventCoords(struct ObjectEvent *, s16, s16);
|
||||
void sub_808EB08(struct ObjectEvent *, s16, s16);
|
||||
void sub_805FE94(u8, u8, u8);
|
||||
void ObjectEventStep(struct ObjectEvent *, struct Sprite *, bool8(struct ObjectEvent *, struct Sprite *));
|
||||
void TryOverrideObjectEventTemplateCoords(u8, u8, u8);
|
||||
void UpdateObjectEventCurrentMovement(struct ObjectEvent *, struct Sprite *, bool8(struct ObjectEvent *, struct Sprite *));
|
||||
u8 ObjectEventFaceOppositeDirection(struct ObjectEvent *, u8);
|
||||
u8 GetOppositeDirection(u8);
|
||||
u8 GetStepInPlaceDelay4AnimId(u32);
|
||||
u8 GetWalkInPlaceFastMovementAction(u32);
|
||||
u8 GetStepInPlaceDelay8AnimId(u32);
|
||||
u8 GetStepInPlaceDelay16AnimId(u32);
|
||||
u8 GetWalkInPlaceNormalMovementAction(u32);
|
||||
u8 GetWalkInPlaceSlowMovementAction(u32);
|
||||
u8 GetStepInPlaceDelay32AnimId(u32);
|
||||
u8 GetCollisionAtCoords(struct ObjectEvent *, s16, s16, u32);
|
||||
void MoveCoords(u8, s16 *, s16 *);
|
||||
bool8 ObjectEventIsSpecialAnimActive(struct ObjectEvent *);
|
||||
bool8 ObjectEventIsHeldMovementActive(struct ObjectEvent *);
|
||||
u8 ObjectEventClearHeldMovementIfFinished(struct ObjectEvent *);
|
||||
u8 GetObjectEventIdByXYZ(u16 x, u16 y, u8 z);
|
||||
void sub_8063E28(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 ObjectEventSetHeldMovement(struct ObjectEvent *, u8);
|
||||
void npc_coords_shift_still(struct ObjectEvent *);
|
||||
void TryOverrideTemplateCoordsForObjectEvent(struct ObjectEvent *, u8);
|
||||
void ShiftStillObjectEventCoords(struct ObjectEvent *);
|
||||
void OverrideMovementTypeForObjectEvent(const struct ObjectEvent *, u8);
|
||||
void SetTrainerMovementType(struct ObjectEvent *, u8);
|
||||
u8 sub_80634F0(u8 direction);
|
||||
u8 sub_8063500(u8 a0);
|
||||
u8 GetFishingNoCatchDirectionAnimNum(u8 direction);
|
||||
u8 GetFishingBiteDirectionAnimNum(u8 a0);
|
||||
void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 a1);
|
||||
u8 sub_805EB44(u8, u8, s16, s16);
|
||||
void npc_paltag_set_load(u8 mode);
|
||||
void InitObjectEventPalettes(u8 mode);
|
||||
bool8 ObjectEventIsMovementOverridden(struct ObjectEvent *objectEvent);
|
||||
u8 ObjectEventCheckHeldMovementStatus(struct ObjectEvent *objectEvent);
|
||||
u8 GetWalkNormalMovementAction(u8 direction);
|
||||
u8 GetWalkNormalMovementAction(u32);
|
||||
u8 GetWalkFastMovementAction(u32);
|
||||
u8 GetWalkFastestMovementAction(u32);
|
||||
u8 sub_8063F2C(u32 direction);
|
||||
u8 GetTrainerFacingDirectionMovementType(u8 direction);
|
||||
void CameraObjectSetFollowedObjectId(u8 spriteId);
|
||||
u8 GetFaceDirectionMovementAction(u32);
|
||||
void CameraObjectSetFollowedObjectId(u8 objectId);
|
||||
void UnfreezeObjectEvents(void);
|
||||
void sub_8069058(u8, u8);
|
||||
u8 GetSlideMovementAction(u32);
|
||||
u8 GetJumpInPlaceMovementAction(u32);
|
||||
u8 GetJumpMovementAction(u32);
|
||||
u8 GetJump2MovementAction(u32);
|
||||
bool8 sub_8068BCC(struct Sprite *sprite);
|
||||
void sub_8068D1C(struct Sprite *, u8, u8, u8);
|
||||
u8 sub_8068D3C(struct Sprite *);
|
||||
u8 sub_8068DC4(struct Sprite *);
|
||||
void TurnObjectEvent(u8, u8);
|
||||
const u8 *GetObjectEventScriptPointerByObjectEventId(u8 objectEventId);
|
||||
u8 GetIndexOfFirstInactiveObjectEvent(void);
|
||||
u8 GetFirstInactiveObjectEventId(void);
|
||||
u8 GetCollisionFlagsAtCoords(struct ObjectEvent * objectEvent, s16 x, s16 y, u8 direction);
|
||||
u8 GetFaceDirectionMovementAction(u8 direction);
|
||||
u8 GetJumpInPlaceMovementAction(u8 direction);
|
||||
u8 sub_8063FB0(u8 direction);
|
||||
void OverrideTemplateCoordsForObjectEvent(struct ObjectEvent *);
|
||||
void sub_805C774(void);
|
||||
|
||||
void OverrideTemplateCoordsForObjectEvent(const struct ObjectEvent *objectEvent);void sub_805C774(void);
|
||||
void FreezeObjectEvents(void);
|
||||
bool8 FreezeObjectEvent(struct ObjectEvent *);
|
||||
void UnfreezeObjectEvent(struct ObjectEvent *);
|
||||
|
|
@ -116,21 +155,36 @@ void RfuUnionObjectToggleInvisibility(u8 objectEventId, bool32 invisible);
|
|||
bool32 RfuUnionObjectIsInvisible(u8 objectEventId);
|
||||
void RfuUnionObjectStartWarp(u8 objectEventId, u8 animNo);
|
||||
bool32 RfuUnionObjectIsWarping(u8 objectEventId);
|
||||
u8 sub_8063F2C(u8 direction);
|
||||
u8 sub_8064194(u8 direction);
|
||||
u8 sub_80641C0(u8 direction);
|
||||
|
||||
u8 sub_80641C0(u32 direction);
|
||||
void sub_805F378(s16 x, s16 y);
|
||||
void sub_805F724(struct ObjectEvent *, s16 x, s16 y);
|
||||
void MoveObjectEventToMapCoords(struct ObjectEvent *objectEvent, s16 x, s16 y);
|
||||
u8 CreateCopySpriteAt(struct Sprite * sprite, s16 x, s16 y, u8 subpriority);
|
||||
u16 GetObjectPaletteTag(u8 paletteIndex);
|
||||
void SetSpritePosToMapCoords(s16 x, s16 y, s16 *x2, s16 *y2);
|
||||
void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible);
|
||||
bool8 AreZCoordsCompatible(u8, u8);
|
||||
u8 ZCoordToPriority(u8 z);
|
||||
void ObjectEventUpdateZCoord(struct ObjectEvent *pObject);
|
||||
void SetObjectSubpriorityByZCoord(u8 z, struct Sprite * sprite, u8 offset);
|
||||
bool8 IsZCoordMismatchAt(u8, s16, s16);
|
||||
void MakeObjectTemplateFromObjectEventGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables);
|
||||
u8 AddCameraObject(u8 trackedSpriteId);
|
||||
void UpdateObjectEventsForCameraUpdate(s16 x, s16 y);
|
||||
void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *);
|
||||
void SetMovementDelay(struct Sprite *, s16);
|
||||
bool8 WaitForMovementDelay(struct Sprite *);
|
||||
void oamt_npc_ministep_reset(struct Sprite *, u8, u8);
|
||||
bool8 obj_npc_ministep(struct Sprite *sprite);
|
||||
void sub_8068BBC(struct Sprite *, u8);
|
||||
void sub_8068C58(struct Sprite *, u8);
|
||||
bool8 sub_8068C68(struct Sprite *sprite);
|
||||
void sub_8068C08(struct Sprite *, u8);
|
||||
bool8 sub_8068C18(struct Sprite *sprite);
|
||||
void DoShadowFieldEffect(struct ObjectEvent *);
|
||||
void sub_8068CA4(struct Sprite *, u8);
|
||||
bool8 sub_8068CB4(struct Sprite *sprite);
|
||||
void SetAndStartSpriteAnim(struct Sprite *, u8, u8);
|
||||
bool8 SpriteAnimEnded(struct Sprite *);
|
||||
|
||||
// Exported data declarations
|
||||
|
||||
|
|
@ -138,7 +192,6 @@ extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
|
|||
extern const struct SpritePalette gUnknown_83A5348;
|
||||
extern const struct SpriteTemplate * const gFieldEffectObjectTemplatePointers[];
|
||||
extern const struct OamData gObjectEventBaseOam_32x32;
|
||||
extern const struct UCoords16 gUnknown_83A64C8[];
|
||||
extern const u16 gUnknown_8398648[];
|
||||
extern const u16 gUnknown_8398688[];
|
||||
extern const u8 gReflectionEffectPaletteMap[];
|
||||
|
|
|
|||
|
|
@ -15,10 +15,9 @@ struct CameraObject
|
|||
s32 y;
|
||||
};
|
||||
|
||||
extern struct CameraObject gFieldCamera;
|
||||
|
||||
// Exported RAM declarations
|
||||
|
||||
extern struct CameraObject gFieldCamera;
|
||||
extern u16 gTotalCameraPixelOffsetX;
|
||||
extern u16 gTotalCameraPixelOffsetY;
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ extern u32 gUnknown_3005078;
|
|||
void RestartWildEncounterImmunitySteps(void);
|
||||
void ClearPoisonStepCounter(void);
|
||||
void SetCableClubWarp(void);
|
||||
void sub_806DE28(struct ObjectEvent *);
|
||||
void dive_warp(struct MapPosition * pos, u16 behavior);
|
||||
|
||||
#endif //GUARD_FIELD_CONTROL_AVATAR_H
|
||||
|
|
|
|||
|
|
@ -12,10 +12,15 @@
|
|||
// Exported RAM declarations
|
||||
|
||||
// Exported ROM declarations
|
||||
u8 sub_8154228(void);
|
||||
bool8 sub_80DCBE0(struct ObjectEvent *);
|
||||
|
||||
u8 CreateWarpArrowSprite(void);
|
||||
void sub_80DC44C(u8, u8);
|
||||
void sub_80DC478(u8, u8);
|
||||
void StartAshFieldEffect(s16, s16, u16, s16);
|
||||
void sub_80DCBB8(struct ObjectEvent *);
|
||||
bool8 sub_80DCBE0(struct ObjectEvent *);
|
||||
void SetUpReflection(struct ObjectEvent*, struct Sprite*, u8);
|
||||
u32 StartFieldEffectForObjectEvent(u8, struct ObjectEvent*);
|
||||
u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y);
|
||||
|
||||
#endif //GUARD_FIELD_EFFECT_HELPERS_H
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
//
|
||||
// Created by scott on 9/6/2017.
|
||||
//
|
||||
|
||||
#ifndef GUARD_FIELD_GROUND_EFFECT_H
|
||||
#define GUARD_FIELD_GROUND_EFFECT_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
// Exported type declarations
|
||||
|
||||
// Exported RAM declarations
|
||||
|
||||
// Exported ROM declarations
|
||||
void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8);
|
||||
void InitObjectPriorityByZCoord(struct Sprite *, u8);
|
||||
bool8 IsZCoordMismatchAt(u8, s16, s16);
|
||||
bool8 AreZCoordsCompatible(u8, u8);
|
||||
void ObjectEventUpdateSubpriority(struct ObjectEvent *, struct Sprite *);
|
||||
void DoGroundEffects_OnSpawn(struct ObjectEvent *, struct Sprite *);
|
||||
void DoGroundEffects_OnBeginStep(struct ObjectEvent *, struct Sprite *);
|
||||
void DoGroundEffects_OnFinishStep(struct ObjectEvent *, struct Sprite *);
|
||||
|
||||
#endif //GUARD_FIELD_GROUND_EFFECT_H
|
||||
|
|
@ -9,8 +9,8 @@ u8 GetPlayerAvatarGenderByGraphicsId(u8);
|
|||
bool8 TestPlayerAvatarFlags(u8);
|
||||
void PlayerGetDestCoords(s16 *, s16 *);
|
||||
u8 GetPlayerFacingDirection(void);
|
||||
u8 player_get_direction_upper_nybble(void);
|
||||
u8 player_get_x22(void);
|
||||
u8 GetPlayerMovementDirection(void);
|
||||
u8 PlayerGetCopyableMovement(void);
|
||||
|
||||
void sub_808D074(u8);
|
||||
void sub_805C270(void);
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ extern struct BackupMapLayout VMap;
|
|||
extern const struct MapLayout Route1_Layout;
|
||||
|
||||
u32 MapGridGetMetatileIdAt(int, int);
|
||||
u32 MapGridGetMetatileBehaviorAt(int, int);
|
||||
u32 MapGridGetMetatileBehaviorAt(s16, s16);
|
||||
u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y);
|
||||
void MapGridSetMetatileIdAt(int, int, u16);
|
||||
void MapGridSetMetatileEntryAt(int, int, u16);
|
||||
|
|
|
|||
|
|
@ -207,13 +207,13 @@ struct ObjectEvent
|
|||
/*27*/ u32 hideReflection:1;
|
||||
/*0x04*/ u8 spriteId;
|
||||
/*0x05*/ u8 graphicsId;
|
||||
/*0x06*/ u8 animPattern;
|
||||
/*0x06*/ u8 movementType;
|
||||
/*0x07*/ u8 trainerType;
|
||||
/*0x08*/ u8 localId;
|
||||
/*0x09*/ u8 mapNum;
|
||||
/*0x0A*/ u8 mapGroup;
|
||||
/*0x0B*/ u8 mapobj_unk_0B_0:4;
|
||||
u8 elevation:4;
|
||||
/*0x0B*/ u8 currentElevation:4;
|
||||
u8 previousElevation:4;
|
||||
/*0x0C*/ struct Coords16 initialCoords;
|
||||
/*0x10*/ struct Coords16 currentCoords;
|
||||
/*0x14*/ struct Coords16 previousCoords;
|
||||
|
|
@ -221,14 +221,14 @@ struct ObjectEvent
|
|||
/*0x18*/ u8 movementDirection:4;
|
||||
/*0x19*/ union ObjectEventRange range;
|
||||
/*0x1A*/ u8 fieldEffectSpriteId;
|
||||
/*0x1B*/ u8 mapobj_unk_1B;
|
||||
/*0x1C*/ u8 mapobj_unk_1C;
|
||||
/*0x1B*/ u8 warpArrowSpriteId;
|
||||
/*0x1C*/ u8 movementActionId;
|
||||
/*0x1D*/ u8 trainerRange_berryTreeId;
|
||||
/*0x1E*/ u8 currentMetatileBehavior;
|
||||
/*0x1F*/ u8 previousMetatileBehavior;
|
||||
/*0x20*/ u8 mapobj_unk_20;
|
||||
/*0x20*/ u8 previousMovementDirection;
|
||||
/*0x21*/ u8 directionSequenceIndex;
|
||||
/*0x22*/ u8 animId;
|
||||
/*0x22*/ u8 playerCopyableMovement;
|
||||
/*size = 0x24*/
|
||||
};
|
||||
|
||||
|
|
@ -274,7 +274,28 @@ enum
|
|||
|
||||
enum
|
||||
{
|
||||
COLLISION_LEDGE_JUMP = 6
|
||||
COLLISION_NONE,
|
||||
COLLISION_OUTSIDE_RANGE,
|
||||
COLLISION_IMPASSABLE,
|
||||
COLLISION_ELEVATION_MISMATCH,
|
||||
COLLISION_OBJECT_EVENT,
|
||||
COLLISION_STOP_SURFING,
|
||||
COLLISION_LEDGE_JUMP,
|
||||
COLLISION_PUSHED_BOULDER,
|
||||
COLLISION_ROTATING_GATE,
|
||||
COLLISION_WHEELIE_HOP,
|
||||
COLLISION_ISOLATED_VERTICAL_RAIL,
|
||||
COLLISION_ISOLATED_HORIZONTAL_RAIL,
|
||||
COLLISION_VERTICAL_RAIL,
|
||||
COLLISION_HORIZONTAL_RAIL,
|
||||
};
|
||||
|
||||
// player tile transition states
|
||||
enum
|
||||
{
|
||||
T_NOT_MOVING,
|
||||
T_TILE_TRANSITION,
|
||||
T_TILE_CENTER, // player is on a frame in which they are centered on a tile during which the player either stops or keeps their momentum and keeps going, changing direction if necessary.
|
||||
};
|
||||
|
||||
struct PlayerAvatar /* 0x202E858 */
|
||||
|
|
|
|||
|
|
@ -3,15 +3,15 @@
|
|||
|
||||
#include "global.h"
|
||||
|
||||
bool8 MetatileBehavior_UnusedReturnTrue(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsATile(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsJumpEast(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsJumpWest(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsJumpNorth(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsJumpSouth(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsTallGrass(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsMB21OrSand(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsSandOrDeepSand(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_ReturnFalse(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsPokeGrass(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsSand(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsSandOrShallowFlowingWater(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsDeepSand(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsReflective(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsIce(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsWarpDoor(u8 metatileBehavior);
|
||||
|
|
@ -50,12 +50,12 @@ bool8 MetatileBehavior_IsSlideEast(u8 metatileBehavior);
|
|||
bool8 MetatileBehavior_IsCounter(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 tile, u8 playerDirection);
|
||||
bool8 MetatileBehavior_IsPC(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsPondWaterOrPuddle(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_HasRipples(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsPuddle(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsTallGrass_2(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsLongGrass(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_ReturnFalse_4(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_ReturnFalse_5(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsFootprints(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsBridge(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_GetBridgeType(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_UnusedIsMB_01(u8 metatileBehavior);
|
||||
|
|
@ -64,7 +64,7 @@ bool8 MetatileBehavior_IsIndoorEncounter(u8 metatileBehavior);
|
|||
bool8 MetatileBehavior_IsMountain(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsDeepOrSemiDeepWater(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsMB19(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsWaterfallBottom(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsShallowFlowingWater(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsThinIce(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsCrackedIce(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsDeepSemiDeepOrSplashingWater(u8 metatileBehavior);
|
||||
|
|
@ -74,7 +74,7 @@ bool8 MetatileBehavior_IsEastBlocked(u8 metatileBehavior);
|
|||
bool8 MetatileBehavior_IsWestBlocked(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsNorthBlocked(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsSouthBlocked(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_ReturnFalse_8(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsShortGrass(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsHotSprings(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsWaterfall(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_ReturnFalse_9(u8 metatileBehavior);
|
||||
|
|
@ -82,7 +82,7 @@ bool8 MetatileBehavior_UnusedReturnFalse(u8 metatileBehavior);
|
|||
bool8 MetatileBehavior_UnusedReturnFalse_2(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_UnusedReturnFalse_3(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_UnusedReturnFalse_4(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_ReturnFalse_10(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsPacifidlogLog(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_ReturnFalse_11(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsRegionMap(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_UnusedReturnFalse_5(u8 metatileBehavior);
|
||||
|
|
@ -103,7 +103,7 @@ bool8 MetatileBehavior_ReturnFalse_15(u8 metatileBehavior);
|
|||
bool8 MetatileBehavior_ReturnFalse_16(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_ReturnFalse_17(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_ReturnFalse_18(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsMB22(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsSeaweed(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsMB0A(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_UnusedReturnFalse_9(u8 metatileBehavior);
|
||||
bool8 MetatileBehavior_IsBookshelf(u8 metatileBehavior);
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ struct LinkPlayerObjectEvent
|
|||
{
|
||||
u8 active;
|
||||
u8 linkPlayerId;
|
||||
u8 mapObjId;
|
||||
u8 objEventId;
|
||||
u8 mode;
|
||||
};
|
||||
|
||||
|
|
@ -99,7 +99,7 @@ void Overworld_ChangeMusicTo(u16);
|
|||
|
||||
bool32 IsUpdateLinkStateCBActive(void);
|
||||
|
||||
void strange_npc_table_clear(void);
|
||||
void ClearLinkPlayerObjectEvents(void);
|
||||
const struct MapHeader *Overworld_GetMapHeaderByGroupAndId(u16, u16);
|
||||
void ObjectEventMoveDestCoords(struct ObjectEvent *, u32, s16 *, s16 *);
|
||||
void sub_8086230(void);
|
||||
|
|
@ -145,6 +145,7 @@ void sub_8055864(u8 mapGroup, u8 mapNum);
|
|||
void CB2_Overworld(void);
|
||||
void CB2_OverworldBasic(void);
|
||||
void CB2_NewGame(void);
|
||||
bool8 IsMapTypeOutdoors(u8 mapType);
|
||||
bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType);
|
||||
void Overworld_ResetStateAfterTeleport(void);
|
||||
|
||||
|
|
|
|||
|
|
@ -49,6 +49,8 @@ void *QuestLogGetFlagOrVarPtr(bool8 isFlag, u16 idx);
|
|||
void QuestLogSetFlagOrVar(bool8 isFlag, u16 idx, u16 value);
|
||||
void sub_8110840(void *oldSave);
|
||||
void sub_8112F18(u8 windowId);
|
||||
void sub_811246C(struct Sprite *sprite);
|
||||
void sub_81124EC(u8 a0, u8 a1, u8 a2, u8 a3);
|
||||
bool8 sub_8111C2C(void);
|
||||
void sub_81128BC(u8 a0);
|
||||
void sub_811278C(u8, u8);
|
||||
|
|
|
|||
|
|
@ -316,6 +316,9 @@ void CopyFromSprites(u8 *dest);
|
|||
u8 SpriteTileAllocBitmapOp(u16 bit, u8 op);
|
||||
void ClearSpriteCopyRequests(void);
|
||||
void ResetAffineAnimData(void);
|
||||
void sub_8007FFC(struct Sprite* sprite, s16 a2, s16 a3);
|
||||
void sub_80075C0(struct Sprite *sprite);
|
||||
s16 AllocSpriteTiles(u16 tileCount);
|
||||
void obj_pos2_update_enable(struct Sprite* sprite, s16 xmod, s16 ymod);
|
||||
|
||||
#endif //GUARD_SPRITE_H
|
||||
|
|
|
|||
|
|
@ -93,8 +93,7 @@ SECTIONS {
|
|||
src/field_camera.o(.text);
|
||||
src/field_door.o(.text);
|
||||
asm/field_player_avatar.o(.text);
|
||||
asm/event_object_movement.o(.text);
|
||||
src/event_object_80688E4.o(.text); /* event_object_movement */
|
||||
src/event_object_movement.o(.text);
|
||||
src/field_message_box.o(.text);
|
||||
src/event_object_lock.o(.text);
|
||||
src/text_window_graphics.o(.text);
|
||||
|
|
@ -434,7 +433,7 @@ SECTIONS {
|
|||
src/field_door.o(.rodata);
|
||||
data/field_player_avatar.o(.rodata);
|
||||
data/event_object_movement.o(.rodata);
|
||||
src/event_object_80688E4.o(.rodata); /* event_object_movement */
|
||||
src/event_object_movement.o(.rodata);
|
||||
src/scrcmd.o(.rodata);
|
||||
src/coord_event_weather.o(.rodata);
|
||||
src/field_tasks.o(.rodata);
|
||||
|
|
|
|||
|
|
@ -461,7 +461,7 @@ u8 BattleSetup_GetTerrainId(void)
|
|||
return BATTLE_TERRAIN_GRASS;
|
||||
if (MetatileBehavior_IsLongGrass(tileBehavior))
|
||||
return BATTLE_TERRAIN_LONG_GRASS;
|
||||
if (MetatileBehavior_IsSandOrDeepSand(tileBehavior))
|
||||
if (MetatileBehavior_IsSandOrShallowFlowingWater(tileBehavior))
|
||||
return BATTLE_TERRAIN_SAND;
|
||||
switch (gMapHeader.mapType)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,653 +0,0 @@
|
|||
#include "global.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "field_effect.h"
|
||||
#include "field_ground_effect.h"
|
||||
|
||||
// This is part of evobjmv.c (see assert statement in DoObjectUnionRoomWarpYDisplacement).
|
||||
|
||||
static void DoObjectUnionRoomWarpYDisplacement(struct Sprite * sprite);
|
||||
|
||||
bool8 FreezeObjectEvent(struct ObjectEvent * objectEvent)
|
||||
{
|
||||
if (objectEvent->heldMovementActive || objectEvent->frozen)
|
||||
return TRUE;
|
||||
objectEvent->frozen = TRUE;
|
||||
objectEvent->spriteAnimPausedBackup = gSprites[objectEvent->spriteId].animPaused;
|
||||
objectEvent->spriteAffineAnimPausedBackup = gSprites[objectEvent->spriteId].affineAnimPaused;
|
||||
gSprites[objectEvent->spriteId].animPaused = TRUE;
|
||||
gSprites[objectEvent->spriteId].affineAnimPaused = TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void FreezeObjectEvents(void)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
|
||||
{
|
||||
if (gObjectEvents[i].active && i != gPlayerAvatar.objectEventId)
|
||||
FreezeObjectEvent(&gObjectEvents[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void FreezeObjectEventsExceptOne(u8 noFreeze)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
|
||||
{
|
||||
if (i != noFreeze && gObjectEvents[i].active && i != gPlayerAvatar.objectEventId)
|
||||
FreezeObjectEvent(&gObjectEvents[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void UnfreezeObjectEvent(struct ObjectEvent * objectEvent)
|
||||
{
|
||||
if (objectEvent->active && objectEvent->frozen)
|
||||
{
|
||||
objectEvent->frozen = FALSE;
|
||||
gSprites[objectEvent->spriteId].animPaused = objectEvent->spriteAnimPausedBackup;
|
||||
gSprites[objectEvent->spriteId].affineAnimPaused = objectEvent->spriteAffineAnimPausedBackup;
|
||||
}
|
||||
}
|
||||
|
||||
void UnfreezeObjectEvents(void)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
|
||||
{
|
||||
if (gObjectEvents[i].active)
|
||||
UnfreezeObjectEvent(&gObjectEvents[i]);
|
||||
}
|
||||
}
|
||||
|
||||
#define tObjectEventId data[0]
|
||||
#define tZCoord data[1]
|
||||
#define tInvisible data[2]
|
||||
|
||||
#define tDirection data[3]
|
||||
#define tSpeed data[4]
|
||||
#define tStepNo data[5]
|
||||
|
||||
static void little_step(struct Sprite * sprite, u8 direction)
|
||||
{
|
||||
sprite->pos1.x += gUnknown_83A64C8[direction].x;
|
||||
sprite->pos1.y += gUnknown_83A64C8[direction].y;
|
||||
}
|
||||
|
||||
static void double_little_steps(struct Sprite * sprite, u8 direction)
|
||||
{
|
||||
sprite->pos1.x += 2 * gUnknown_83A64C8[direction].x;
|
||||
sprite->pos1.y += 2 * gUnknown_83A64C8[direction].y;
|
||||
}
|
||||
|
||||
static void triple_little_steps(struct Sprite * sprite, u8 direction)
|
||||
{
|
||||
sprite->pos1.x += 2 * gUnknown_83A64C8[direction].x + gUnknown_83A64C8[direction].x;
|
||||
sprite->pos1.y += 2 * gUnknown_83A64C8[direction].y + gUnknown_83A64C8[direction].y;
|
||||
}
|
||||
|
||||
static void quad_little_steps(struct Sprite * sprite, u8 direction)
|
||||
{
|
||||
sprite->pos1.x += 4 * gUnknown_83A64C8[direction].x;
|
||||
sprite->pos1.y += 4 * gUnknown_83A64C8[direction].y;
|
||||
}
|
||||
|
||||
static void oct_little_steps(struct Sprite * sprite, u8 direction)
|
||||
{
|
||||
sprite->pos1.x += 8 * gUnknown_83A64C8[direction].x;
|
||||
sprite->pos1.y += 8 * gUnknown_83A64C8[direction].y;
|
||||
}
|
||||
|
||||
void oamt_npc_ministep_reset(struct Sprite * sprite, u8 direction, u8 speed)
|
||||
{
|
||||
sprite->tDirection = direction;
|
||||
sprite->tSpeed = speed;
|
||||
sprite->tStepNo = 0;
|
||||
}
|
||||
|
||||
typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 direction);
|
||||
|
||||
static const SpriteStepFunc sSpeed0[] = {
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step
|
||||
};
|
||||
|
||||
static const SpriteStepFunc sSpeed1[] = {
|
||||
double_little_steps,
|
||||
double_little_steps,
|
||||
double_little_steps,
|
||||
double_little_steps,
|
||||
double_little_steps,
|
||||
double_little_steps,
|
||||
double_little_steps,
|
||||
double_little_steps
|
||||
};
|
||||
|
||||
static const SpriteStepFunc sSpeed2[] = {
|
||||
double_little_steps,
|
||||
triple_little_steps,
|
||||
triple_little_steps,
|
||||
double_little_steps,
|
||||
triple_little_steps,
|
||||
triple_little_steps
|
||||
};
|
||||
|
||||
static const SpriteStepFunc sSpeed3[] = {
|
||||
quad_little_steps,
|
||||
quad_little_steps,
|
||||
quad_little_steps,
|
||||
quad_little_steps
|
||||
};
|
||||
|
||||
static const SpriteStepFunc sSpeed4[] = {
|
||||
oct_little_steps,
|
||||
oct_little_steps
|
||||
};
|
||||
|
||||
static const SpriteStepFunc *const sSpriteStepFuncsBySpeed[] = {
|
||||
sSpeed0,
|
||||
sSpeed1,
|
||||
sSpeed2,
|
||||
sSpeed3,
|
||||
sSpeed4
|
||||
};
|
||||
|
||||
static const s16 sSpriteStepCountsBySpeed[] = {
|
||||
NELEMS(sSpeed0),
|
||||
NELEMS(sSpeed1),
|
||||
NELEMS(sSpeed2),
|
||||
NELEMS(sSpeed3),
|
||||
NELEMS(sSpeed4)
|
||||
};
|
||||
|
||||
bool8 obj_npc_ministep(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->tStepNo >= sSpriteStepCountsBySpeed[sprite->tSpeed])
|
||||
return FALSE;
|
||||
|
||||
sSpriteStepFuncsBySpeed[sprite->tSpeed][sprite->tStepNo](sprite, sprite->tDirection);
|
||||
|
||||
sprite->tStepNo++;
|
||||
|
||||
if (sprite->tStepNo < sSpriteStepCountsBySpeed[sprite->tSpeed])
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#undef tStepNo
|
||||
#undef tSpeed
|
||||
#undef tDirection
|
||||
|
||||
#define tDirection data[3]
|
||||
#define tDelay data[4]
|
||||
#define tStepNo data[5]
|
||||
|
||||
void sub_8068BBC(struct Sprite *sprite, u8 direction)
|
||||
{
|
||||
sprite->tDirection = direction;
|
||||
sprite->tDelay = 0;
|
||||
sprite->tStepNo = 0;
|
||||
}
|
||||
|
||||
// used by an_walk_any_2
|
||||
bool8 sub_8068BCC(struct Sprite *sprite)
|
||||
{
|
||||
if (!(sprite->tDelay & 1))
|
||||
{
|
||||
little_step(sprite, sprite->tDirection);
|
||||
sprite->tStepNo++;
|
||||
}
|
||||
|
||||
sprite->tDelay++;
|
||||
|
||||
if (sprite->tStepNo > 15)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8068C08(struct Sprite *sprite, u8 direction)
|
||||
{
|
||||
sprite->tDirection = direction;
|
||||
sprite->tDelay = 0;
|
||||
sprite->tStepNo = 0;
|
||||
}
|
||||
|
||||
bool8 sub_8068C18(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->tDelay < 3)
|
||||
{
|
||||
little_step(sprite, sprite->tDirection);
|
||||
sprite->tStepNo++;
|
||||
}
|
||||
else
|
||||
sprite->tDelay = 0;
|
||||
|
||||
if (sprite->tStepNo > 15)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8068C58(struct Sprite *sprite, u8 direction)
|
||||
{
|
||||
sprite->tDirection = direction;
|
||||
sprite->tDelay = 0;
|
||||
sprite->tStepNo = 0;
|
||||
}
|
||||
|
||||
bool8 sub_8068C68(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->tDelay > 9)
|
||||
{
|
||||
sprite->tDelay = 0;
|
||||
little_step(sprite, sprite->tDirection);
|
||||
sprite->tStepNo++;
|
||||
}
|
||||
|
||||
if (sprite->tStepNo > 15)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8068CA4(struct Sprite *sprite, u8 direction)
|
||||
{
|
||||
sprite->tDirection = direction;
|
||||
sprite->tDelay = 0;
|
||||
sprite->tStepNo = 0;
|
||||
}
|
||||
|
||||
bool8 sub_8068CB4(struct Sprite *sprite)
|
||||
{
|
||||
if ((++sprite->tDelay) & 1)
|
||||
{
|
||||
little_step(sprite, sprite->tDirection);
|
||||
sprite->tStepNo++;
|
||||
}
|
||||
else
|
||||
{
|
||||
double_little_steps(sprite, sprite->tDirection);
|
||||
sprite->tStepNo += 2;
|
||||
}
|
||||
|
||||
if (sprite->tStepNo > 15)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#undef tStepNo
|
||||
#undef tDelay
|
||||
#undef tDirection
|
||||
|
||||
#define tDirection data[3]
|
||||
#define tJumpSpeed data[4]
|
||||
#define tJumpHeight data[5]
|
||||
#define tStepNo data[6]
|
||||
|
||||
static const s8 sJumpHeight12[] = {
|
||||
-4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
|
||||
};
|
||||
|
||||
static const s8 sJumpHeight6[] = {
|
||||
0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
|
||||
};
|
||||
|
||||
static const s8 sJumpHeight10[] = {
|
||||
-2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
|
||||
};
|
||||
|
||||
static const s8 *const sYDisplacementPtrs[] = {
|
||||
sJumpHeight12,
|
||||
sJumpHeight6,
|
||||
sJumpHeight10
|
||||
};
|
||||
|
||||
static s16 GetJumpYDisplacement(s16 stepno, u8 jumpno)
|
||||
{
|
||||
return sYDisplacementPtrs[jumpno][stepno];
|
||||
}
|
||||
|
||||
void sub_8068D1C(struct Sprite *sprite, u8 direction, u8 speed, u8 height)
|
||||
{
|
||||
sprite->tDirection = direction;
|
||||
sprite->tJumpSpeed = speed;
|
||||
sprite->tJumpHeight = height;
|
||||
sprite->tStepNo = 0;
|
||||
}
|
||||
|
||||
u8 sub_8068D3C(struct Sprite *sprite)
|
||||
{
|
||||
s16 duration[3] = {0x10, 0x10, 0x20};
|
||||
u8 shifts[3] = {0, 0, 1};
|
||||
u8 jumpPhase = 0;
|
||||
|
||||
if (sprite->tJumpSpeed != 0)
|
||||
little_step(sprite, sprite->tDirection);
|
||||
|
||||
sprite->pos2.y = GetJumpYDisplacement(sprite->tStepNo >> shifts[sprite->tJumpSpeed], sprite->tJumpHeight);
|
||||
|
||||
sprite->tStepNo++;
|
||||
|
||||
if (sprite->tStepNo == (duration[sprite->tJumpSpeed] >> 1))
|
||||
jumpPhase = 1;
|
||||
|
||||
if (sprite->tStepNo >= duration[sprite->tJumpSpeed])
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
jumpPhase = -1;
|
||||
}
|
||||
|
||||
return jumpPhase;
|
||||
}
|
||||
|
||||
u8 sub_8068DC4(struct Sprite *sprite)
|
||||
{
|
||||
s16 duration[3] = {0x20, 0x20, 0x40};
|
||||
u8 shifts[3] = {1, 1, 2};
|
||||
u8 jumpPhase = 0;
|
||||
|
||||
if (sprite->tJumpSpeed != 0 && !(sprite->tStepNo & 1))
|
||||
little_step(sprite, sprite->tDirection);
|
||||
|
||||
sprite->pos2.y = GetJumpYDisplacement(sprite->tStepNo >> shifts[sprite->tJumpSpeed], sprite->tJumpHeight);
|
||||
|
||||
sprite->tStepNo++;
|
||||
|
||||
if (sprite->tStepNo == (duration[sprite->tJumpSpeed] >> 1))
|
||||
jumpPhase = 1;
|
||||
|
||||
if (sprite->tStepNo >= duration[sprite->tJumpSpeed])
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
jumpPhase = -1;
|
||||
}
|
||||
|
||||
return jumpPhase;
|
||||
}
|
||||
|
||||
#undef tStepNo
|
||||
#undef tJumpHeight
|
||||
#undef tJumpSpeed
|
||||
#undef tDirection
|
||||
|
||||
#define tDelay data[3]
|
||||
|
||||
void SetObjectEventStepTimer(struct Sprite *sprite, s16 delay)
|
||||
{
|
||||
sprite->tDelay = delay;
|
||||
}
|
||||
|
||||
bool8 RunObjectEventStepTimer(struct Sprite *sprite)
|
||||
{
|
||||
sprite->tDelay--;
|
||||
|
||||
if (sprite->tDelay == 0)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#undef tDelay
|
||||
|
||||
void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 animNum, u8 animCmdIndex)
|
||||
{
|
||||
sprite->animNum = animNum;
|
||||
sprite->animPaused = FALSE;
|
||||
SeekSpriteAnim(sprite, animCmdIndex);
|
||||
}
|
||||
|
||||
bool8 SpriteAnimEnded(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->animEnded)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible)
|
||||
{
|
||||
u16 x, y;
|
||||
s16 x2, y2;
|
||||
|
||||
sprite->invisible = invisible;
|
||||
|
||||
if (sprite->coordOffsetEnabled)
|
||||
{
|
||||
x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
|
||||
y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
|
||||
y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
|
||||
}
|
||||
|
||||
x2 = x - (sprite->centerToCornerVecX >> 1);
|
||||
y2 = y - (sprite->centerToCornerVecY >> 1);
|
||||
|
||||
if ((s16)x > 255 || x2 < -16)
|
||||
sprite->invisible = TRUE;
|
||||
if ((s16)y > 175 || y2 < -16)
|
||||
sprite->invisible = TRUE;
|
||||
}
|
||||
|
||||
void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *sprite)
|
||||
{
|
||||
DoObjectUnionRoomWarpYDisplacement(sprite);
|
||||
SetObjectSubpriorityByZCoord(sprite->tZCoord, sprite, 1);
|
||||
UpdateObjectEventSpriteVisibility(sprite, sprite->tInvisible);
|
||||
}
|
||||
|
||||
void sub_8068FD0(void)
|
||||
{
|
||||
s32 i;
|
||||
for (i = 0; i < MAX_SPRITES; i++)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[i];
|
||||
if (sprite->inUse && sprite->callback == UpdateObjectEventSpriteSubpriorityAndVisibility)
|
||||
{
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#define tUnionRoomWarpAnimNo data[3]
|
||||
#define tUnionRoomWarpAnimState data[4]
|
||||
|
||||
static int GetObjectEventSpriteId(u8 objectEventId)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < MAX_SPRITES; i++)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[i];
|
||||
if (sprite->inUse && sprite->callback == UpdateObjectEventSpriteSubpriorityAndVisibility && (u8)sprite->tObjectEventId == objectEventId)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return MAX_SPRITES;
|
||||
}
|
||||
|
||||
void TurnObjectEvent(u8 objectEventId, u8 direction)
|
||||
{
|
||||
u8 animNum;
|
||||
u8 spriteId = GetObjectEventSpriteId(objectEventId);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[spriteId];
|
||||
StartSpriteAnim(sprite, ObjectEventDirectionToImageAnimId(direction));
|
||||
}
|
||||
}
|
||||
|
||||
void RfuUnionObjectSetFacingDirection(u8 objectEventId, u8 direction)
|
||||
{
|
||||
u8 animNum;
|
||||
int spriteId = GetObjectEventSpriteId(objectEventId);
|
||||
u16 baseBlock;
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[spriteId];
|
||||
const struct ObjectEventGraphicsInfo * info = GetObjectEventGraphicsInfo(direction);
|
||||
baseBlock = sprite->oam.tileNum;
|
||||
sprite->oam = *info->oam;
|
||||
sprite->oam.tileNum = baseBlock;
|
||||
sprite->oam.paletteNum = info->paletteSlot;
|
||||
sprite->images = info->images;
|
||||
if (info->subspriteTables == NULL)
|
||||
{
|
||||
sprite->subspriteTables = NULL;
|
||||
sprite->subspriteTableNum = 0;
|
||||
sprite->subspriteMode = SUBSPRITES_OFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetSubspriteTables(sprite, info->subspriteTables);
|
||||
sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY;
|
||||
}
|
||||
StartSpriteAnim(sprite, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void RfuUnionObjectToggleInvisibility(u8 objectEventId, bool32 invisible)
|
||||
{
|
||||
u8 spriteId = GetObjectEventSpriteId(objectEventId);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
if (invisible)
|
||||
gSprites[spriteId].tInvisible = TRUE;
|
||||
else
|
||||
gSprites[spriteId].tInvisible = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 RfuUnionObjectIsInvisible(u8 objectEventId)
|
||||
{
|
||||
u8 spriteId = GetObjectEventSpriteId(objectEventId);
|
||||
if (spriteId == MAX_SPRITES)
|
||||
return FALSE;
|
||||
return gSprites[spriteId].tInvisible == TRUE;
|
||||
}
|
||||
|
||||
void RfuUnionObjectStartWarp(u8 objectEventId, u8 animNo)
|
||||
{
|
||||
u8 spriteId = GetObjectEventSpriteId(objectEventId);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].tUnionRoomWarpAnimNo = animNo;
|
||||
gSprites[spriteId].tUnionRoomWarpAnimState = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void DoObjectUnionRoomWarpYDisplacementUpwards(struct Sprite * sprite)
|
||||
{
|
||||
switch (sprite->tUnionRoomWarpAnimState)
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.y = 0;
|
||||
sprite->tUnionRoomWarpAnimState++;
|
||||
// fallthrough
|
||||
case 1:
|
||||
if ((sprite->pos2.y -= 8) == -160)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->tInvisible = 1;
|
||||
sprite->tUnionRoomWarpAnimNo = 0;
|
||||
sprite->tUnionRoomWarpAnimState = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void DoObjectUnionRoomWarpYDisplacementDownwards(struct Sprite * sprite)
|
||||
{
|
||||
switch (sprite->tUnionRoomWarpAnimState)
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.y = -160;
|
||||
sprite->tUnionRoomWarpAnimState++;
|
||||
// fallthrough
|
||||
case 1:
|
||||
if ((sprite->pos2.y += 8) == 0)
|
||||
{
|
||||
sprite->tUnionRoomWarpAnimNo = 0;
|
||||
sprite->tUnionRoomWarpAnimState = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void DoObjectUnionRoomWarpYDisplacement(struct Sprite * sprite)
|
||||
{
|
||||
switch (sprite->tUnionRoomWarpAnimNo)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
DoObjectUnionRoomWarpYDisplacementDownwards(sprite);
|
||||
break;
|
||||
case 2:
|
||||
DoObjectUnionRoomWarpYDisplacementUpwards(sprite);
|
||||
break;
|
||||
default:
|
||||
sprite->tUnionRoomWarpAnimNo = 0;
|
||||
AGB_ASSERT_EX(0, ABSPATH("evobjmv.c"), 13331);
|
||||
}
|
||||
}
|
||||
|
||||
bool32 RfuUnionObjectIsWarping(u8 objectEventId)
|
||||
{
|
||||
u8 spriteId = GetObjectEventSpriteId(objectEventId);
|
||||
if (spriteId == MAX_SPRITES)
|
||||
return FALSE;
|
||||
if (gSprites[spriteId].tUnionRoomWarpAnimNo)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#undef tUnionRoomWarpAnimState
|
||||
#undef tUnionRoomWarpAnimNo
|
||||
#undef tInvisible
|
||||
#undef tZCoord
|
||||
#undef tObjectEventId
|
||||
|
||||
u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct ObjectEvent * objectEvent)
|
||||
{
|
||||
ObjectEventGetLocalIdAndMap(objectEvent, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
|
||||
return FieldEffectStart(fieldEffectId);
|
||||
}
|
||||
|
||||
void DoShadowFieldEffect(struct ObjectEvent *objectEvent)
|
||||
{
|
||||
if (!objectEvent->hasShadow)
|
||||
{
|
||||
objectEvent->hasShadow = TRUE;
|
||||
oe_exec_and_other_stuff(FLDEFF_SHADOW, objectEvent);
|
||||
}
|
||||
}
|
||||
|
||||
void DoRippleFieldEffect(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
|
||||
gFieldEffectArguments[0] = sprite->pos1.x;
|
||||
gFieldEffectArguments[1] = sprite->pos1.y + (graphicsInfo->height >> 1) - 2;
|
||||
gFieldEffectArguments[2] = 151;
|
||||
gFieldEffectArguments[3] = 3;
|
||||
FieldEffectStart(FLDEFF_RIPPLE);
|
||||
}
|
||||
|
|
@ -109,5 +109,5 @@ void Script_FacePlayer(void)
|
|||
|
||||
void Script_ClearHeldMovement(void)
|
||||
{
|
||||
ObjectEventClearAnimIfSpecialAnimActive(&gObjectEvents[gSelectedObjectEvent]);
|
||||
ObjectEventClearHeldMovementIfActive(&gObjectEvents[gSelectedObjectEvent]);
|
||||
}
|
||||
|
|
|
|||
8860
src/event_object_movement.c
Normal file
8860
src/event_object_movement.c
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -1004,7 +1004,7 @@ static void FCSetup_ResetTasksAndSpriteResources(void)
|
|||
ResetSpriteData();
|
||||
ResetAllPicSprites();
|
||||
ResetPaletteFade();
|
||||
npc_paltag_set_load(0);
|
||||
InitObjectEventPalettes(0);
|
||||
gReservedSpritePaletteCount = 7;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -549,7 +549,7 @@ static void CameraPanningCB_PanAhead(void)
|
|||
gUnknown_3000E9C = 0;
|
||||
}
|
||||
|
||||
var = player_get_direction_upper_nybble();
|
||||
var = GetPlayerMovementDirection();
|
||||
if (var == 2)
|
||||
{
|
||||
if (sVerticalCameraPan > -8)
|
||||
|
|
|
|||
|
|
@ -1863,7 +1863,7 @@ static bool8 LavaridgeGymB1FWarpExitEffect_3(struct Task * task, struct ObjectEv
|
|||
objectEvent->invisible = FALSE;
|
||||
CameraObjectReset1();
|
||||
PlaySE(SE_W091);
|
||||
ObjectEventSetHeldMovement(objectEvent, sub_8064194(DIR_EAST));
|
||||
ObjectEventSetHeldMovement(objectEvent, GetJumpMovementAction(DIR_EAST));
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -1949,7 +1949,7 @@ static bool8 LavaridgeGym1FWarpEffect_2(struct Task * task, struct ObjectEvent *
|
|||
} else
|
||||
{
|
||||
task->data[1]++;
|
||||
ObjectEventSetHeldMovement(objectEvent, GetStepInPlaceDelay4AnimId(objectEvent->facingDirection));
|
||||
ObjectEventSetHeldMovement(objectEvent, GetWalkInPlaceFastMovementAction(objectEvent->facingDirection));
|
||||
PlaySE(SE_FU_ZUZUZU);
|
||||
}
|
||||
}
|
||||
|
|
@ -2063,7 +2063,7 @@ static void EscapeRopeFieldEffect_Step1(struct Task * task)
|
|||
}
|
||||
if (data[4] == 1 && !gPaletteFade.active && BGMusicStopped() == TRUE)
|
||||
{
|
||||
ObjectEventSetDirection(playerObj, task->data[15]);
|
||||
SetObjectEventDirection(playerObj, task->data[15]);
|
||||
sub_80555E0();
|
||||
WarpIntoMap();
|
||||
gFieldCallback = FieldCallback_EscapeRopeExit;
|
||||
|
|
@ -3025,7 +3025,7 @@ static void UseVsSeekerEffect_3(struct Task * task)
|
|||
ObjectEventSetGraphicsId(playerObj, GetPlayerAvatarGraphicsIdByStateId(2));
|
||||
else
|
||||
ObjectEventSetGraphicsId(playerObj, GetPlayerAvatarGraphicsIdByStateId(0));
|
||||
ObjectEventForceSetSpecialAnim(playerObj, GetFaceDirectionMovementAction(playerObj->facingDirection));
|
||||
ObjectEventForceSetHeldMovement(playerObj, GetFaceDirectionMovementAction(playerObj->facingDirection));
|
||||
task->data[0]++;
|
||||
}
|
||||
}
|
||||
|
|
@ -3202,7 +3202,7 @@ static void UseFlyEffect_7(struct Task * task)
|
|||
if ((++task->data[2]) >= 10)
|
||||
{
|
||||
struct ObjectEvent * objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
ObjectEventClearAnimIfSpecialAnimActive(objectEvent);
|
||||
ObjectEventClearHeldMovementIfActive(objectEvent);
|
||||
objectEvent->inanimate = FALSE;
|
||||
objectEvent->hasShadow = FALSE;
|
||||
sub_8087204(task->data[1], objectEvent->spriteId);
|
||||
|
|
@ -3511,7 +3511,7 @@ static void FlyInEffect_4(struct Task * task)
|
|||
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
sprite = &gSprites[objectEvent->spriteId];
|
||||
objectEvent->inanimate = FALSE;
|
||||
sub_805F724(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y);
|
||||
MoveObjectEventToMapCoords(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y);
|
||||
sprite->pos2.x = 0;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->coordOffsetEnabled = TRUE;
|
||||
|
|
@ -3642,7 +3642,7 @@ u32 FldEff_MoveDeoxysRock(void)
|
|||
y = objectEvent->currentCoords.y - 7;
|
||||
x = (gFieldEffectArguments[3] - x) * 16;
|
||||
y = (gFieldEffectArguments[4] - y) * 16;
|
||||
npc_coords_shift(objectEvent, gFieldEffectArguments[3] + 7, gFieldEffectArguments[4] + 7);
|
||||
ShiftObjectEventCoords(objectEvent, gFieldEffectArguments[3] + 7, gFieldEffectArguments[4] + 7);
|
||||
taskId = CreateTask(Task_MoveDeoxysRock_Step, 0x50);
|
||||
gTasks[taskId].data[1] = objectEvent->spriteId;
|
||||
gTasks[taskId].data[2] = gSprites[objectEvent->spriteId].pos1.x + x;
|
||||
|
|
@ -3681,7 +3681,7 @@ static void Task_MoveDeoxysRock_Step(u8 taskId)
|
|||
objectEvent = &gObjectEvents[data[9]];
|
||||
sprite->pos1.x = data[2];
|
||||
sprite->pos1.y = data[3];
|
||||
npc_coords_shift_still(objectEvent);
|
||||
ShiftStillObjectEventCoords(objectEvent);
|
||||
objectEvent->triggerGroundEffectsOnStop = TRUE;
|
||||
FieldEffectActiveListRemove(FLDEFF_MOVE_DEOXYS_ROCK);
|
||||
DestroyTask(taskId);
|
||||
|
|
|
|||
|
|
@ -253,7 +253,7 @@ void UpdateShadowFieldEffect(struct Sprite * sprite)
|
|||
sprite->pos1.x = linkedSprite->pos1.x;
|
||||
sprite->pos1.y = linkedSprite->pos1.y + sprite->data[3];
|
||||
if (!objectEvent->active || !objectEvent->hasShadow
|
||||
|| MetatileBehavior_IsTallGrass(objectEvent->currentMetatileBehavior)
|
||||
|| MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior)
|
||||
|| MetatileBehavior_IsSurfable(objectEvent->currentMetatileBehavior)
|
||||
|| MetatileBehavior_IsSurfable(objectEvent->previousMetatileBehavior)
|
||||
|| MetatileBehavior_IsReflective(objectEvent->currentMetatileBehavior)
|
||||
|
|
|
|||
|
|
@ -753,7 +753,7 @@ static void sub_807E80C(u8 taskId)
|
|||
case 1:
|
||||
if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
|
||||
{
|
||||
ObjectEventClearAnimIfSpecialAnimActive(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)]);
|
||||
ObjectEventClearHeldMovementIfActive(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)]);
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], MOVEMENT_ACTION_WALK_NORMAL_UP);
|
||||
task->data[0] = 2;
|
||||
}
|
||||
|
|
@ -853,13 +853,13 @@ static void sub_807EAC4(s16 a0, s16 a1, s16 *a2, s16 *a3, s16 *a4)
|
|||
playerSpr->pos2.y = *a3 >> 5;
|
||||
if (playerObj->heldMovementFinished)
|
||||
{
|
||||
ObjectEventForceSetSpecialAnim(playerObj, GetStepInPlaceDelay16AnimId(GetPlayerFacingDirection()));
|
||||
ObjectEventForceSetHeldMovement(playerObj, GetWalkInPlaceNormalMovementAction(GetPlayerFacingDirection()));
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_807EB64(u16 a0, s16 *a1, s16 *a2)
|
||||
{
|
||||
ObjectEventForceSetSpecialAnim(&gObjectEvents[gPlayerAvatar.objectEventId], GetStepInPlaceDelay16AnimId(GetPlayerFacingDirection()));
|
||||
ObjectEventForceSetHeldMovement(&gObjectEvents[gPlayerAvatar.objectEventId], GetWalkInPlaceNormalMovementAction(GetPlayerFacingDirection()));
|
||||
sub_807EBBC(a0, a1, a2);
|
||||
}
|
||||
|
||||
|
|
@ -931,7 +931,7 @@ static void sub_807ECBC(s16 *a0, s16 *a1, s16 *a2, s16 *a3, s16 *a4)
|
|||
r1 = 3;
|
||||
else
|
||||
r1 = 4;
|
||||
ObjectEventForceSetSpecialAnim(&gObjectEvents[gPlayerAvatar.objectEventId], sub_8064270(r1));
|
||||
ObjectEventForceSetHeldMovement(&gObjectEvents[gPlayerAvatar.objectEventId], GetWalkInPlaceSlowMovementAction(r1));
|
||||
sub_807EBBC(behavior, a0, a1);
|
||||
*a2 = *a0 * 16;
|
||||
*a3 = *a1 * 16;
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ static bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *conne
|
|||
static bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset);
|
||||
|
||||
struct BackupMapLayout VMap;
|
||||
static EWRAM_DATA u16 gBackupMapLayout[VIRTUAL_MAP_SIZE] = {};
|
||||
EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {};
|
||||
EWRAM_DATA struct MapHeader gMapHeader = {};
|
||||
EWRAM_DATA struct Camera gCamera = {};
|
||||
static EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {};
|
||||
|
|
@ -79,8 +79,8 @@ void InitMapFromSavedGame(void)
|
|||
static void InitMapLayoutData(struct MapHeader * mapHeader)
|
||||
{
|
||||
const struct MapLayout * mapLayout = mapHeader->mapLayout;
|
||||
CpuFastFill(0x03FF03FF, gBackupMapLayout, sizeof(gBackupMapLayout));
|
||||
VMap.map = gBackupMapLayout;
|
||||
CpuFastFill(0x03FF03FF, gBackupMapData, sizeof(gBackupMapData));
|
||||
VMap.map = gBackupMapData;
|
||||
VMap.Xsize = mapLayout->width + 15;
|
||||
VMap.Ysize = mapLayout->height + 14;
|
||||
AGB_ASSERT_EX(VMap.Xsize * VMap.Ysize <= VIRTUAL_MAP_SIZE, ABSPATH("fieldmap.c"), 158);
|
||||
|
|
@ -458,7 +458,7 @@ u32 MapGridGetMetatileAttributeAt(s16 x, s16 y, u8 attr)
|
|||
return GetBehaviorByMetatileIdAndMapLayout(gMapHeader.mapLayout, metatileId, attr);
|
||||
}
|
||||
|
||||
u32 MapGridGetMetatileBehaviorAt(s32 x, s32 y)
|
||||
u32 MapGridGetMetatileBehaviorAt(s16 x, s16 y)
|
||||
{
|
||||
return MapGridGetMetatileAttributeAt(x, y, 0);
|
||||
}
|
||||
|
|
@ -540,7 +540,7 @@ void save_serialize_map(void)
|
|||
{
|
||||
for (j = x; j < x + 15; j++)
|
||||
{
|
||||
*mapView++ = gBackupMapLayout[width * i + j];
|
||||
*mapView++ = gBackupMapData[width * i + j];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -581,7 +581,7 @@ static void LoadSavedMapView(void)
|
|||
{
|
||||
for (j = x; j < x + 15; j++)
|
||||
{
|
||||
gBackupMapLayout[j + width * i] = *mapView;
|
||||
gBackupMapData[j + width * i] = *mapView;
|
||||
mapView++;
|
||||
}
|
||||
}
|
||||
|
|
@ -636,7 +636,7 @@ static void sub_8059250(u8 a1)
|
|||
desti = width * (y + y0);
|
||||
srci = (y + r8) * 15 + r9;
|
||||
src = &mapView[srci + i];
|
||||
dest = &gBackupMapLayout[x0 + desti + j];
|
||||
dest = &gBackupMapData[x0 + desti + j];
|
||||
*dest = *src;
|
||||
i++;
|
||||
j++;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ static const bool8 sTileSurfable[METATILE_COUNT] = {
|
|||
[MB_SEMI_DEEP_WATER] = TRUE,
|
||||
[MB_DEEP_WATER] = TRUE,
|
||||
[MB_WATERFALL] = TRUE,
|
||||
[MB_SPLASHING_WATER] = TRUE,
|
||||
[MB_OCEAN_WATER] = TRUE,
|
||||
[MB_1A] = TRUE,
|
||||
[MB_1B] = TRUE,
|
||||
[MB_EASTWARD_CURRENT] = TRUE,
|
||||
|
|
@ -24,7 +24,7 @@ static const u8 sTileBitAttributes[32] = {
|
|||
[4] = 0x08,
|
||||
};
|
||||
|
||||
bool8 MetatileBehavior_UnusedReturnTrue(u8 metatileBehavior)
|
||||
bool8 MetatileBehavior_IsATile(u8 metatileBehavior)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -61,7 +61,7 @@ bool8 MetatileBehavior_IsJumpSouth(u8 metatileBehavior)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 MetatileBehavior_IsTallGrass(u8 metatileBehavior)
|
||||
bool8 MetatileBehavior_IsPokeGrass(u8 metatileBehavior)
|
||||
{
|
||||
if(metatileBehavior == MB_TALL_GRASS || metatileBehavior == MB_CYCLING_ROAD_PULL_DOWN_GRASS)
|
||||
return TRUE;
|
||||
|
|
@ -69,23 +69,23 @@ bool8 MetatileBehavior_IsTallGrass(u8 metatileBehavior)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 MetatileBehavior_IsMB21OrSand(u8 metatileBehavior)
|
||||
bool8 MetatileBehavior_IsSand(u8 metatileBehavior)
|
||||
{
|
||||
if(metatileBehavior == MB_21 || metatileBehavior == MB_SAND)
|
||||
if(metatileBehavior == MB_SAND || metatileBehavior == MB_SAND_CAVE)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 MetatileBehavior_IsSandOrDeepSand(u8 metatileBehavior)
|
||||
bool8 MetatileBehavior_IsSandOrShallowFlowingWater(u8 metatileBehavior)
|
||||
{
|
||||
if(metatileBehavior == MB_21 || metatileBehavior == MB_WATERFALL_BOTTOM)
|
||||
if(metatileBehavior == MB_SAND || metatileBehavior == MB_SHALLOW_WATER)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 MetatileBehavior_ReturnFalse(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_IsDeepSand(u8 metatileBehavior) { return FALSE; }
|
||||
|
||||
bool8 MetatileBehavior_IsReflective(u8 metatileBehavior)
|
||||
{
|
||||
|
|
@ -412,7 +412,7 @@ bool8 MetatileBehavior_IsPC(u8 metatileBehavior)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 MetatileBehavior_IsPondWaterOrPuddle(u8 metatileBehavior)
|
||||
bool8 MetatileBehavior_HasRipples(u8 metatileBehavior)
|
||||
{
|
||||
if(metatileBehavior == MB_POND_WATER || metatileBehavior == MB_PUDDLE)
|
||||
return TRUE;
|
||||
|
|
@ -438,7 +438,7 @@ bool8 MetatileBehavior_IsTallGrass_2(u8 metatileBehavior)
|
|||
|
||||
bool8 MetatileBehavior_IsLongGrass(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_ReturnFalse_4(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_ReturnFalse_5(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_IsFootprints(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_IsBridge(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_GetBridgeType(u8 metatileBehavior) { return FALSE; }
|
||||
|
||||
|
|
@ -490,9 +490,9 @@ bool8 MetatileBehavior_IsMB19(u8 metatileBehavior)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 MetatileBehavior_IsWaterfallBottom(u8 metatileBehavior)
|
||||
bool8 MetatileBehavior_IsShallowFlowingWater(u8 metatileBehavior)
|
||||
{
|
||||
if(metatileBehavior == MB_WATERFALL_BOTTOM)
|
||||
if(metatileBehavior == MB_SHALLOW_WATER)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
|
|
@ -517,7 +517,7 @@ bool8 MetatileBehavior_IsCrackedIce(u8 metatileBehavior)
|
|||
bool8 MetatileBehavior_IsDeepSemiDeepOrSplashingWater(u8 metatileBehavior)
|
||||
{
|
||||
if((metatileBehavior >= MB_SEMI_DEEP_WATER && metatileBehavior <= MB_DEEP_WATER)
|
||||
|| metatileBehavior == MB_SPLASHING_WATER)
|
||||
|| metatileBehavior == MB_OCEAN_WATER)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
|
|
@ -580,7 +580,7 @@ bool8 MetatileBehavior_IsSouthBlocked(u8 metatileBehavior)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 MetatileBehavior_ReturnFalse_8(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_IsShortGrass(u8 metatileBehavior) { return FALSE; }
|
||||
|
||||
bool8 MetatileBehavior_IsHotSprings(u8 metatileBehavior)
|
||||
{
|
||||
|
|
@ -603,7 +603,7 @@ bool8 MetatileBehavior_UnusedReturnFalse(u8 metatileBehavior){ return FALSE; }
|
|||
bool8 MetatileBehavior_UnusedReturnFalse_2(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_UnusedReturnFalse_3(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_UnusedReturnFalse_4(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_ReturnFalse_10(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_IsPacifidlogLog(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_ReturnFalse_11(u8 metatileBehavior) { return FALSE; }
|
||||
|
||||
bool8 MetatileBehavior_IsRegionMap(u8 metatileBehavior)
|
||||
|
|
@ -647,7 +647,7 @@ bool8 MetatileBehavior_IsUnionRoomWarp(u8 metatileBehavior)
|
|||
bool8 MetatileBehavior_IsWater(u8 metatileBehavior)
|
||||
{
|
||||
if((metatileBehavior >= MB_POND_WATER && metatileBehavior <= MB_DEEP_WATER)
|
||||
|| metatileBehavior == MB_SPLASHING_WATER
|
||||
|| metatileBehavior == MB_OCEAN_WATER
|
||||
|| (metatileBehavior >= MB_EASTWARD_CURRENT && metatileBehavior <= MB_SOUTHWARD_CURRENT))
|
||||
return TRUE;
|
||||
else
|
||||
|
|
@ -683,7 +683,7 @@ bool8 MetatileBehavior_ReturnFalse_16(u8 metatileBehavior) { return FALSE; }
|
|||
bool8 MetatileBehavior_ReturnFalse_17(u8 metatileBehavior) { return FALSE; }
|
||||
bool8 MetatileBehavior_ReturnFalse_18(u8 metatileBehavior) { return FALSE; }
|
||||
|
||||
bool8 MetatileBehavior_IsMB22(u8 metatileBehavior)
|
||||
bool8 MetatileBehavior_IsSeaweed(u8 metatileBehavior)
|
||||
{
|
||||
if(metatileBehavior == MB_22)
|
||||
return TRUE;
|
||||
|
|
|
|||
|
|
@ -28,10 +28,10 @@ void SetQuestLogObjectEventsData(struct QuestLog * questLog)
|
|||
questLog->unk_008[i].disableJumpLandingGroundEffect = gObjectEvents[i].disableJumpLandingGroundEffect;
|
||||
questLog->unk_008[i].fixedPriority = gObjectEvents[i].fixedPriority;
|
||||
questLog->unk_008[i].mapobj_unk_18 = gObjectEvents[i].facingDirection;
|
||||
questLog->unk_008[i].mapobj_unk_0B_0 = gObjectEvents[i].mapobj_unk_0B_0;
|
||||
questLog->unk_008[i].elevation = gObjectEvents[i].elevation;
|
||||
questLog->unk_008[i].mapobj_unk_0B_0 = gObjectEvents[i].currentElevation;
|
||||
questLog->unk_008[i].elevation = gObjectEvents[i].previousElevation;
|
||||
questLog->unk_008[i].graphicsId = gObjectEvents[i].graphicsId;
|
||||
questLog->unk_008[i].animPattern = gObjectEvents[i].animPattern;
|
||||
questLog->unk_008[i].animPattern = gObjectEvents[i].movementType;
|
||||
questLog->unk_008[i].trainerType = gObjectEvents[i].trainerType;
|
||||
questLog->unk_008[i].localId = gObjectEvents[i].localId;
|
||||
questLog->unk_008[i].mapNum = gObjectEvents[i].mapNum;
|
||||
|
|
@ -41,7 +41,7 @@ void SetQuestLogObjectEventsData(struct QuestLog * questLog)
|
|||
questLog->unk_008[i].trainerRange_berryTreeId = gObjectEvents[i].trainerRange_berryTreeId;
|
||||
questLog->unk_008[i].previousMetatileBehavior = gObjectEvents[i].previousMetatileBehavior;
|
||||
questLog->unk_008[i].directionSequenceIndex = gObjectEvents[i].directionSequenceIndex;
|
||||
questLog->unk_008[i].animId = gObjectEvents[i].animId;
|
||||
questLog->unk_008[i].animId = gObjectEvents[i].playerCopyableMovement;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -72,10 +72,10 @@ void sub_815A1F8(const struct QuestLog * questLog, const struct ObjectEventTempl
|
|||
gObjectEvents[i].disableJumpLandingGroundEffect = questLogObjectEvents[i].disableJumpLandingGroundEffect;
|
||||
gObjectEvents[i].fixedPriority = questLogObjectEvents[i].fixedPriority;
|
||||
gObjectEvents[i].facingDirection = questLogObjectEvents[i].mapobj_unk_18;
|
||||
gObjectEvents[i].mapobj_unk_0B_0 = questLogObjectEvents[i].mapobj_unk_0B_0;
|
||||
gObjectEvents[i].elevation = questLogObjectEvents[i].elevation;
|
||||
gObjectEvents[i].currentElevation = questLogObjectEvents[i].mapobj_unk_0B_0;
|
||||
gObjectEvents[i].previousElevation = questLogObjectEvents[i].elevation;
|
||||
gObjectEvents[i].graphicsId = questLogObjectEvents[i].graphicsId;
|
||||
gObjectEvents[i].animPattern = questLogObjectEvents[i].animPattern;
|
||||
gObjectEvents[i].movementType = questLogObjectEvents[i].animPattern;
|
||||
gObjectEvents[i].trainerType = questLogObjectEvents[i].trainerType;
|
||||
gObjectEvents[i].localId = questLogObjectEvents[i].localId;
|
||||
gObjectEvents[i].mapNum = questLogObjectEvents[i].mapNum;
|
||||
|
|
@ -85,7 +85,7 @@ void sub_815A1F8(const struct QuestLog * questLog, const struct ObjectEventTempl
|
|||
gObjectEvents[i].trainerRange_berryTreeId = questLogObjectEvents[i].trainerRange_berryTreeId;
|
||||
gObjectEvents[i].previousMetatileBehavior = questLogObjectEvents[i].previousMetatileBehavior;
|
||||
gObjectEvents[i].directionSequenceIndex = questLogObjectEvents[i].directionSequenceIndex;
|
||||
gObjectEvents[i].animId = questLogObjectEvents[i].animId;
|
||||
gObjectEvents[i].playerCopyableMovement = questLogObjectEvents[i].animId;
|
||||
|
||||
for (j = 0; j < 0x40; j++)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ static void sub_8150530(void)
|
|||
else
|
||||
{
|
||||
sub_81507BC(objectEvent, GetPlayerAvatarGraphicsIdByStateId(4));
|
||||
StartSpriteAnim(sprite, sub_80634F0(objectEvent->facingDirection));
|
||||
StartSpriteAnim(sprite, GetFishingNoCatchDirectionAnimNum(objectEvent->facingDirection));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -99,10 +99,10 @@ static void sub_81505C4(u8 taskId)
|
|||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
ObjectEventClearAnimIfSpecialAnimActive(objectEvent);
|
||||
ObjectEventClearHeldMovementIfActive(objectEvent);
|
||||
objectEvent->enableAnim = TRUE;
|
||||
sub_81507BC(objectEvent, GetPlayerAvatarGraphicsIdByStateId(4));
|
||||
StartSpriteAnim(sprite, sub_80634F0(objectEvent->facingDirection));
|
||||
StartSpriteAnim(sprite, GetFishingNoCatchDirectionAnimNum(objectEvent->facingDirection));
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
break;
|
||||
|
|
@ -114,7 +114,7 @@ static void sub_81505C4(u8 taskId)
|
|||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
StartSpriteAnim(sprite, sub_8063500(GetPlayerFacingDirection()));
|
||||
StartSpriteAnim(sprite, GetFishingBiteDirectionAnimNum(GetPlayerFacingDirection()));
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 3:
|
||||
|
|
|
|||
|
|
@ -1082,7 +1082,7 @@ bool8 ScrCmd_setobjectxy(struct ScriptContext * ctx)
|
|||
u16 x = VarGet(ScriptReadHalfword(ctx));
|
||||
u16 y = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
sub_805F7C4(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, x, y);
|
||||
TryMoveObjectEventToMapCoords(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, x, y);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
@ -1100,7 +1100,7 @@ bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext * ctx)
|
|||
{
|
||||
u16 localId = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
sub_805FE94(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||
TryOverrideObjectEventTemplateCoords(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -205,7 +205,7 @@ static void ScriptMovement_TakeStep(u8 taskId, u8 moveScrId, u8 objEventId, cons
|
|||
|
||||
if (IsMovementScriptFinished(taskId, moveScrId) == TRUE)
|
||||
return;
|
||||
if (ObjectEventIsSpecialAnimActive(&gObjectEvents[objEventId])
|
||||
if (ObjectEventIsHeldMovementActive(&gObjectEvents[objEventId])
|
||||
&& !ObjectEventClearHeldMovementIfFinished(&gObjectEvents[objEventId]))
|
||||
return;
|
||||
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ static u8 GetTrainerApproachDistanceSouth(struct ObjectEvent *trainerObj, s16 ra
|
|||
&& y > trainerObj->currentCoords.y
|
||||
&& y <= trainerObj->currentCoords.y + range)
|
||||
{
|
||||
if (range > 3 && GetIndexOfFirstInactiveObjectEvent() == OBJECT_EVENTS_COUNT)
|
||||
if (range > 3 && GetFirstInactiveObjectEventId() == OBJECT_EVENTS_COUNT)
|
||||
return 0;
|
||||
return (y - trainerObj->currentCoords.y);
|
||||
}
|
||||
|
|
@ -315,9 +315,9 @@ static bool8 TrainerSeeFunc_WaitExclMark(u8 taskId, struct Task * task, struct O
|
|||
else
|
||||
{
|
||||
task->tFuncId++;
|
||||
if (trainerObj->animPattern == MOVEMENT_TYPE_TREE_DISGUISE || trainerObj->animPattern == MOVEMENT_TYPE_MOUNTAIN_DISGUISE)
|
||||
if (trainerObj->movementType == MOVEMENT_TYPE_TREE_DISGUISE || trainerObj->movementType == MOVEMENT_TYPE_MOUNTAIN_DISGUISE)
|
||||
task->tFuncId = 6;
|
||||
if (trainerObj->animPattern == MOVEMENT_TYPE_HIDDEN)
|
||||
if (trainerObj->movementType == MOVEMENT_TYPE_HIDDEN)
|
||||
task->tFuncId = 8;
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -349,7 +349,7 @@ static bool8 TrainerSeeFunc_PrepareToEngage(u8 taskId, struct Task * task, struc
|
|||
return FALSE;
|
||||
|
||||
SetTrainerMovementType(trainerObj, GetTrainerFacingDirectionMovementType(trainerObj->facingDirection));
|
||||
TryOverrideTemplateCoordsForObjectEvent(trainerObj, GetTrainerFacingDirectionMovementType(trainerObj->facingDirection));
|
||||
OverrideMovementTypeForObjectEvent(trainerObj, GetTrainerFacingDirectionMovementType(trainerObj->facingDirection));
|
||||
OverrideTemplateCoordsForObjectEvent(trainerObj);
|
||||
|
||||
playerObj = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
|
|
@ -468,7 +468,7 @@ static bool8 TrainerSeeFunc_OffscreenAboveTrainerCameraObjMoveUp(u8 taskId, stru
|
|||
|
||||
if (task->tData5 != task->tTrainerRange - 1)
|
||||
{
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[specialObjectId], sub_8063FB0(DIR_NORTH));
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[specialObjectId], GetWalkFastMovementAction(DIR_NORTH));
|
||||
task->tData5++;
|
||||
}
|
||||
else
|
||||
|
|
@ -494,7 +494,7 @@ static bool8 TrainerSeeFunc_OffscreenAboveTrainerCameraObjMoveDown(u8 taskId, st
|
|||
|
||||
if (task->tData5 != task->tTrainerRange - 1)
|
||||
{
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[specialObjectId], sub_8063FB0(DIR_SOUTH));
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[specialObjectId], GetWalkFastMovementAction(DIR_SOUTH));
|
||||
task->tData5++;
|
||||
}
|
||||
else
|
||||
|
|
@ -523,14 +523,14 @@ static void Task_RevealTrainer_RunTrainerSeeFuncList(u8 taskId)
|
|||
LoadWordFromTwoHalfwords((u16 *)&task->data[1], (uintptr_t *)&trainerObj);
|
||||
if (!task->data[7])
|
||||
{
|
||||
ObjectEventClearAnim(trainerObj);
|
||||
ObjectEventClearHeldMovement(trainerObj);
|
||||
task->data[7]++;
|
||||
}
|
||||
sTrainerSeeFuncList2[task->data[0]](taskId, task, trainerObj);
|
||||
if (task->data[0] == 3 && !FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH))
|
||||
{
|
||||
SetTrainerMovementType(trainerObj, GetTrainerFacingDirectionMovementType(trainerObj->facingDirection));
|
||||
TryOverrideTemplateCoordsForObjectEvent(trainerObj, GetTrainerFacingDirectionMovementType(trainerObj->facingDirection));
|
||||
OverrideMovementTypeForObjectEvent(trainerObj, GetTrainerFacingDirectionMovementType(trainerObj->facingDirection));
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -633,7 +633,7 @@ void sub_810C444(void)
|
|||
|
||||
for (i = 0; i < gMapHeader.events->objectEventCount; i++)
|
||||
{
|
||||
if ((templates[i].trainerType == 1 || templates[i].trainerType == 3) && (templates[i].movementType == 0x4D || templates[i].movementType == 0x4E || templates[i].movementType == 0x4F))
|
||||
if ((templates[i].trainerType == 1 || templates[i].trainerType == 3) && (templates[i].movementType == MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN || templates[i].movementType == MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP || templates[i].movementType == MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT))
|
||||
{
|
||||
r6 = sub_810CF54();
|
||||
TryGetObjectEventIdByLocalIdAndMap(templates[i].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &sp0);
|
||||
|
|
@ -696,7 +696,7 @@ static void sub_810C594(void)
|
|||
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
|
||||
{
|
||||
struct ObjectEvent * objectEvent = &gObjectEvents[i];
|
||||
if (objectEvent->animPattern == 0x4D || objectEvent->animPattern == 0x4E || objectEvent->animPattern == 0x4F)
|
||||
if (objectEvent->movementType == MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN || objectEvent->movementType == MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP || objectEvent->movementType == MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT)
|
||||
{
|
||||
u8 r3 = sub_810CF54();
|
||||
if (objectEvent->active && gSprites[objectEvent->spriteId].data[0] == i)
|
||||
|
|
@ -918,7 +918,7 @@ static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0)
|
|||
else
|
||||
{
|
||||
gSaveBlock1Ptr->trainerRematches[sVsSeeker->trainerInfo[vsSeekerIdx].localId] = r7;
|
||||
npc_coords_shift_still(&gObjectEvents[sVsSeeker->trainerInfo[vsSeekerIdx].objectEventId]);
|
||||
ShiftStillObjectEventCoords(&gObjectEvents[sVsSeeker->trainerInfo[vsSeekerIdx].objectEventId]);
|
||||
StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], sMovementScript_TrainerRematch);
|
||||
sVsSeeker->trainerIdxArray[sVsSeeker->numRematchableTrainers] = r8;
|
||||
sVsSeeker->runningBehaviourEtcArray[sVsSeeker->numRematchableTrainers] = GetRunningBehaviorFromGraphicsId(sVsSeeker->trainerInfo[vsSeekerIdx].graphicsId);
|
||||
|
|
@ -961,12 +961,12 @@ void sub_810CB90(void)
|
|||
TryGetObjectEventIdByLocalIdAndMap(r4[r8].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &sp0);
|
||||
r4_2 = &gObjectEvents[sp0];
|
||||
sub_810CF54(&r4[r8]); // You are using this function incorrectly. Please consult the manual.
|
||||
TryOverrideTemplateCoordsForObjectEvent(r4_2, gUnknown_8453F67[r4_2->facingDirection]);
|
||||
OverrideMovementTypeForObjectEvent(r4_2, gUnknown_8453F67[r4_2->facingDirection]);
|
||||
gSaveBlock1Ptr->trainerRematches[r4[r8].localId] = 0;
|
||||
if (gSelectedObjectEvent == sp0)
|
||||
r4_2->animPattern = gUnknown_8453F67[r4_2->facingDirection];
|
||||
r4_2->movementType = gUnknown_8453F67[r4_2->facingDirection];
|
||||
else
|
||||
r4_2->animPattern = MOVEMENT_TYPE_FACE_DOWN;
|
||||
r4_2->movementType = MOVEMENT_TYPE_FACE_DOWN;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1322,7 +1322,7 @@ static void StartAllRespondantIdleMovements(void)
|
|||
|
||||
if (sub_810CF04(sVsSeeker->trainerInfo[j].objectEventId) == 1)
|
||||
SetTrainerMovementType(r4, sVsSeeker->runningBehaviourEtcArray[i]);
|
||||
TryOverrideTemplateCoordsForObjectEvent(r4, sVsSeeker->runningBehaviourEtcArray[i]);
|
||||
OverrideMovementTypeForObjectEvent(r4, sVsSeeker->runningBehaviourEtcArray[i]);
|
||||
gSaveBlock1Ptr->trainerRematches[sVsSeeker->trainerInfo[j].localId] = GetNextAvailableRematchTrainer(sVsSeekerData, sVsSeeker->trainerInfo[j].trainerIdx, &dummy);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ gUnknown_2031DE8: @ 2031DE8
|
|||
gUnknown_2031DEA: @ 2031DEA
|
||||
.space 0x2
|
||||
|
||||
gUnknown_2031DEC: @ 2031DEC
|
||||
gLinkPlayerObjectEvents: @ 2031DEC
|
||||
.space 0x10
|
||||
|
||||
.align 2
|
||||
|
|
@ -87,20 +87,14 @@ gUnknown_2036E30: @ 2036E30
|
|||
gUnknown_2036E34: @ 2036E34
|
||||
.space 0x4
|
||||
|
||||
.align 2
|
||||
@ .include "src/event_object_movement.o"
|
||||
gObjectEvents: @ 2036E38
|
||||
.space 0x240
|
||||
|
||||
gPlayerAvatar: @ 2037078
|
||||
.space 0x20
|
||||
|
||||
gUnknown_2037098: @ 2037098
|
||||
.space 0x2
|
||||
|
||||
gUnknown_203709A: @ 203709A
|
||||
.space 0x2
|
||||
|
||||
.align 2
|
||||
.include "src/event_object_movement.o"
|
||||
.align 2
|
||||
.include "src/field_message_box.o"
|
||||
.align 2
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user