diff --git a/Sprites/sprite_functions_hooks.asm b/Sprites/sprite_functions_hooks.asm new file mode 100644 index 0000000..3bbca6b --- /dev/null +++ b/Sprites/sprite_functions_hooks.asm @@ -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: \ No newline at end of file