added sprite functions library

This commit is contained in:
scawful
2022-10-03 04:15:34 -05:00
parent 5c81941429
commit b8e70184cb

View File

@@ -0,0 +1,278 @@
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: