278 lines
8.0 KiB
NASM
278 lines
8.0 KiB
NASM
lorom
|
|
|
|
!ADD = "CLC : ADC"
|
|
!SUB = "SEC : SBC"
|
|
!BLT = "BCC"
|
|
!BGE = "BCS"
|
|
|
|
|
|
;=================================================================
|
|
org $09AE64
|
|
Sprite_SetSpawnedCoords:
|
|
|
|
;=================================================================
|
|
;Sprite_PrepOamCoord LONG
|
|
;set the oam coordinate for the sprite draw
|
|
org $06E416
|
|
Sprite_PrepOamCoord:
|
|
|
|
;=================================================================
|
|
;Sprite_CheckDamageFromPlayer LONG
|
|
;check if the sprite is getting damage from player or items
|
|
org $06F2AA
|
|
Sprite_CheckDamageFromPlayer:
|
|
|
|
;=================================================================
|
|
;Sprite_CheckDamageToPlayer LONG
|
|
;check if the sprite is touching the player to damage
|
|
org $06F121
|
|
Sprite_CheckDamageToPlayer:
|
|
|
|
;=================================================================
|
|
;Sprite_AttemptDamageToPlayerPlusRecoil LONG
|
|
;damage the player everywhere on screen?
|
|
org $06F41F
|
|
Sprite_AttemptDamageToPlayerPlusRecoil:
|
|
|
|
;=================================================================
|
|
;Sprite_OAM_AllocateDeferToPlayer LONG
|
|
;Draw the sprite depending of the position of the player (if he has to be over or under link)
|
|
org $06F864
|
|
Sprite_OAM_AllocateDeferToPlayer:
|
|
|
|
|
|
org $0DBA80
|
|
OAM_AllocateFromRegionA:
|
|
org $0DBA84
|
|
OAM_AllocateFromRegionB:
|
|
org $0DBA88
|
|
OAM_AllocateFromRegionC:
|
|
org $0DBA8C
|
|
OAM_AllocateFromRegionD:
|
|
org $0DBA90
|
|
OAM_AllocateFromRegionE:
|
|
org $0DBA94
|
|
OAM_AllocateFromRegionF:
|
|
|
|
org $05DF70
|
|
Sprite_DrawMultiple_quantity_preset:
|
|
;=================================================================
|
|
;ApplyRumbleToSprites LONG
|
|
;makes all the sprites on screen shaking?
|
|
org $0680FA
|
|
ApplyRumbleToSprites:
|
|
|
|
|
|
;=================================================================
|
|
;CheckIfHitBoxesOverlap LONG
|
|
;args :
|
|
;!pos1_low = $00
|
|
;!pos1_size = $02
|
|
;!pos2_low = $04
|
|
;!pos2_size = $06
|
|
;!pos1_high = $08
|
|
;!pos2_high = $0A
|
|
;!ans_low = $0F
|
|
;!ans_high = $0C
|
|
;returns carry clear if there was no overlap
|
|
org $0683E6
|
|
CheckIfHitBoxesOverlap:
|
|
|
|
;=================================================================
|
|
;Sprite_Get_16_bit_Coords LONG
|
|
;$0FD8 = sprite's X coordinate, $0FDA = sprite's Y coordinate
|
|
org $0684BD
|
|
Sprite_Get_16_bit_Coords:
|
|
|
|
;=================================================================
|
|
;Sprite_PrepAndDrawSingleLarge LONG
|
|
;load / draw a 16x16 sprite
|
|
org $06DBF0
|
|
Sprite_PrepAndDrawSingleLarge:
|
|
|
|
;=================================================================
|
|
;Sprite_PrepAndDrawSingleSmall LONG
|
|
;load / draw a 8x8 sprite
|
|
org $06DBF8
|
|
Sprite_PrepAndDrawSingleSmall:
|
|
|
|
;=================================================================
|
|
;Sprite_DrawShadow LONG
|
|
;draw shadow
|
|
org $06DC54
|
|
Sprite_DrawShadow:
|
|
|
|
;=================================================================
|
|
;Sprite_CheckTileCollision LONG
|
|
;check if the sprite is colliding with a solid tile set $0E70, X
|
|
;----udlr , u = up, d = down, l = left, r = right
|
|
org $06E496
|
|
Sprite_CheckTileCollision:
|
|
|
|
;=================================================================
|
|
;Sprite_GetTileAttr LONG
|
|
; $00[0x02] - Entity Y coordinate
|
|
; $02[0x03?] - Entity X coordinate
|
|
;$0FA5
|
|
org $06E87B
|
|
Sprite_GetTileAttr:
|
|
|
|
;=================================================================
|
|
;Sprite_CheckSlopedTileCollision LONG
|
|
;check if the sprite is colliding with a solid sloped tile
|
|
org $06E8FD
|
|
Sprite_CheckSlopedTileCollision:
|
|
|
|
;=================================================================
|
|
;Sprite_ApplySpeedTowardsPlayer LONG
|
|
;set the velocity x,y towards the player (A = speed)
|
|
org $06EA12
|
|
Sprite_ApplySpeedTowardsPlayer:
|
|
|
|
;=================================================================
|
|
;Sprite_DirectionToFacePlayer LONG
|
|
; \return $0E is low byte of player_y_pos - sprite_y_pos
|
|
; \return $0F is low byte of player_x_pos - sprite_x_pos
|
|
org $06EAA0
|
|
Sprite_DirectionToFacePlayer:
|
|
|
|
;=================================================================
|
|
;Sprite_IsToRightOfPlayer LONG
|
|
;if Link is to the left of the sprite, Y = 1, otherwise Y = 0.
|
|
org $06EACD
|
|
Sprite_IsToRightOfPlayer:
|
|
|
|
;=================================================================
|
|
;Sprite_IsBelowPlayer LONG
|
|
;return Y=1 sprite is below player, otherwise Y = 0
|
|
org $06EAE4
|
|
Sprite_IsBelowPlayer:
|
|
|
|
;=================================================================
|
|
;Sprite_CheckDamageToPlayerSameLayer LONG
|
|
;check damage done to player if they collide and if they are on same layer
|
|
org $06F129
|
|
Sprite_CheckDamageToPlayerSameLayer:
|
|
|
|
;=================================================================
|
|
;Sprite_CheckDamageToPlayerIgnoreLayer LONG
|
|
;check damage done to player if they collide even if they are not on same layer
|
|
org $06F131
|
|
Sprite_CheckDamageToPlayerIgnoreLayer:
|
|
|
|
;=================================================================
|
|
;Sound_SetSfx2PanLong LONG
|
|
;play a sound loaded in A
|
|
org $0DBB7C
|
|
Sound_SetSfx2PanLong:
|
|
|
|
;=================================================================
|
|
;Sprite_SpawnDynamically LONG
|
|
;spawn a new sprite on screen, A = sprite id
|
|
;when using this function you have to set the position yourself
|
|
;these values belong to the sprite who used that function not the new one
|
|
;$00 low x, $01 high x
|
|
;$02 low y, $03 high y
|
|
;$04 height, $05 low x (overlord)
|
|
;$06 high x (overlord), $07 low y (overlord)
|
|
;$08 high y (overlord)
|
|
org $1DF65D
|
|
Sprite_SpawnDynamically:
|
|
|
|
org $07F1A3
|
|
Player_ResetState:
|
|
;=================================================================
|
|
;Sprite_ApplyConveyorAdjustment LONG
|
|
;move the sprite if he stand on a conveyor belt
|
|
org $1D8010
|
|
Sprite_ApplyConveyorAdjustment:
|
|
|
|
;=================================================================
|
|
;SetupHitBox LONG
|
|
;set the hitbox of the player (i think)
|
|
org $0683EA
|
|
SetupHitBox:
|
|
|
|
;=================================================================
|
|
;Dungeon_SpriteInducedTilemapUpdate LONG
|
|
;set tile of dungeon
|
|
org $01E7A9
|
|
Dungeon_SpriteInducedTilemapUpdate:
|
|
;=================================================================
|
|
;Get random INT LONG
|
|
;GetRandomInt
|
|
org $0DBA71
|
|
GetRandomInt:
|
|
|
|
;=================================================================
|
|
;Sprite_PlayerCantPassThrough
|
|
;player can't pass through the sprite
|
|
org $1EF4F3
|
|
Sprite_PlayerCantPassThrough:
|
|
|
|
;=================================================================
|
|
;Sprite_NullifyHookshotDrag
|
|
;player can't hookshot to that sprite
|
|
org $0FF540
|
|
Sprite_NullifyHookshotDrag:
|
|
|
|
;=================================================================
|
|
;Player_HaltDashAttack
|
|
;stop the dash attack of the player
|
|
org $0791B9
|
|
Player_HaltDashAttack:
|
|
|
|
;=================================================================
|
|
;Sprite_ShowMessageUnconditional
|
|
;show a message box without any condition
|
|
; A = low byte of message ID to use.
|
|
; Y = high byte of message ID to use.
|
|
org $05E219
|
|
Sprite_ShowMessageUnconditional:
|
|
|
|
;=================================================================
|
|
;Link_ReceiveItem
|
|
;Y = item id
|
|
org $0799AD
|
|
Link_ReceiveItem:
|
|
|
|
;=================================================================
|
|
;Sprite_ShowSolicitedMessageIfPlayerFacing
|
|
;show a message if we press A and face the sprite
|
|
; A = low byte of message ID to use.
|
|
; Y = high byte of message ID to use.
|
|
org $05E1A7
|
|
Sprite_ShowSolicitedMessageIfPlayerFacing:
|
|
|
|
;=================================================================
|
|
;Sprite_ShowMessageFromPlayerContact
|
|
;show a message if we touch the sprite should be used with Sprite_PlayerCantPassThrough
|
|
; A = low byte of message ID to use.
|
|
; Y = high byte of message ID to use.
|
|
org $05E1F0
|
|
Sprite_ShowMessageFromPlayerContact:
|
|
|
|
; Parameters: Stack, A
|
|
org $008781
|
|
UseImplicitRegIndexedLocalJumpTable:
|
|
|
|
org $00893D
|
|
EnableForceBlank:
|
|
|
|
|
|
;=================================================================
|
|
;Sprite_ProjectSpeedTowardsEntityLong
|
|
;04 = X
|
|
;05 = HighX
|
|
;06 = Y
|
|
;07 = HighY
|
|
;A = Speed
|
|
|
|
;Return $00 - Y Velocity
|
|
;Return $01 - X Velocity
|
|
|
|
org $06EA22
|
|
Sprite_ProjectSpeedTowardsEntityLong:
|
|
|
|
org $0DDA06
|
|
Sprite_SpawnFireball: |