mirror of
https://github.com/thornAvery/kep-hack.git
synced 2026-02-06 15:45:24 +13:00
Identify wSpriteStateData1 and wSpriteStateData2 offsets, like pokeyellow
This commit is contained in:
parent
7ab43f4d17
commit
2b2ed54bbf
62 changed files with 182 additions and 179 deletions
|
|
@ -12,7 +12,7 @@ PlayerStepOutFromDoor::
|
|||
ld a, D_DOWN
|
||||
ld [wSimulatedJoypadStatesEnd], a
|
||||
xor a
|
||||
ld [wSpriteStateData1 + 2], a
|
||||
ld [wSpritePlayerStateData1ImageIndex], a
|
||||
call StartSimulatingJoypadStates
|
||||
ret
|
||||
.notStandingOnDoor
|
||||
|
|
@ -110,7 +110,7 @@ PalletMovementScript_WalkToLab:
|
|||
swap a
|
||||
ld [wNPCMovementScriptSpriteOffset], a
|
||||
xor a
|
||||
ld [wSpriteStateData2 + $06], a
|
||||
ld [wSpritePlayerStateData2MovementByte1], a
|
||||
ld hl, wSimulatedJoypadStatesEnd
|
||||
ld de, RLEList_PlayerWalkToLab
|
||||
call DecodeRLEList
|
||||
|
|
@ -228,7 +228,7 @@ PewterMovementScript_WalkToGym:
|
|||
swap a
|
||||
ld [wNPCMovementScriptSpriteOffset], a
|
||||
xor a
|
||||
ld [wSpriteStateData2 + $06], a
|
||||
ld [wSpritePlayerStateData2MovementByte1], a
|
||||
ld hl, wSimulatedJoypadStatesEnd
|
||||
ld de, RLEList_PewterGymPlayer
|
||||
call DecodeRLEList
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ CutOrBoulderDustAnimationTilesAndAttributes:
|
|||
db $FE,$10,$FF,$10
|
||||
|
||||
GetCutOrBoulderDustAnimationOffsets:
|
||||
ld hl, wSpriteStateData1 + 4
|
||||
ld hl, wSpritePlayerStateData1YPixels
|
||||
ld a, [hli] ; player's sprite screen Y position
|
||||
ld b, a
|
||||
inc hl
|
||||
|
|
@ -187,7 +187,7 @@ ReplaceTreeTileBlock:
|
|||
ld h, [hl]
|
||||
ld l, a
|
||||
add hl, bc
|
||||
ld a, [wSpriteStateData1 + 9] ; player sprite's facing direction
|
||||
ld a, [wSpritePlayerStateData1FacingDirection]
|
||||
and a
|
||||
jr z, .down
|
||||
cp SPRITE_FACING_UP
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ AnimateBoulderDust:
|
|||
jp LoadPlayerSpriteGraphics
|
||||
|
||||
GetMoveBoulderDustFunctionPointer:
|
||||
ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
|
||||
ld a, [wSpritePlayerStateData1FacingDirection]
|
||||
ld hl, MoveBoulderDustFunctionPointerTable
|
||||
ld c, a
|
||||
ld b, $0
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ EmotionBubble:
|
|||
jr nz, .loop
|
||||
|
||||
; get the screen coordinates of the sprite the bubble is to be displayed above
|
||||
ld hl, wSpriteStateData1 + 4
|
||||
ld hl, wSpritePlayerStateData1YPixels
|
||||
ld a, [wEmotionBubbleSpriteIndex]
|
||||
swap a
|
||||
ld c, a
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ CheckForHiddenObject::
|
|||
; checks if the coordinates in front of the player's sprite match Y in b and X in c
|
||||
; [hCoordsInFrontOfPlayerMatch] = $00 if they match, $ff if they don't match
|
||||
CheckIfCoordsInFrontOfPlayerMatch:
|
||||
ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
|
||||
ld a, [wSpritePlayerStateData1FacingDirection]
|
||||
cp SPRITE_FACING_UP
|
||||
jr z, .facingUp
|
||||
cp SPRITE_FACING_LEFT
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ HandleLedges::
|
|||
and a ; OVERWORLD
|
||||
ret nz
|
||||
predef GetTileAndCoordsInFrontOfPlayer
|
||||
ld a, [wSpriteStateData1 + 9]
|
||||
ld a, [wSpritePlayerStateData1FacingDirection]
|
||||
ld b, a
|
||||
aCoord 8, 9
|
||||
ld c, a
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@ InitMapSprites::
|
|||
call InitOutsideMapSprites
|
||||
ret c ; return if the map is an outside map (already handled by above call)
|
||||
; if the map is an inside map (i.e. mapID >= $25)
|
||||
ld hl, wSpriteStateData1
|
||||
ld de, wSpriteStateData2 + $0d
|
||||
ld hl, wSpritePlayerStateData1PictureID
|
||||
ld de, wSpritePlayerStateData2PictureID
|
||||
; Loop to copy picture ID's from $C1X0 to $C2XD for LoadMapSpriteTilePatterns.
|
||||
.copyPictureIDLoop
|
||||
ld a, [hl] ; $C1X0 (picture ID)
|
||||
|
|
@ -37,7 +37,7 @@ LoadMapSpriteTilePatterns:
|
|||
.spritesExist
|
||||
ld c, a ; c = [wNumSprites]
|
||||
ld b, $10 ; number of sprite slots
|
||||
ld hl, wSpriteStateData2 + $0d
|
||||
ld hl, wSpritePlayerStateData2PictureID
|
||||
xor a
|
||||
ld [hFourTileSpriteCount], a
|
||||
.copyPictureIDLoop ; loop to copy picture ID from $C2XD to $C2XE
|
||||
|
|
@ -48,9 +48,9 @@ LoadMapSpriteTilePatterns:
|
|||
ld l, a
|
||||
dec b
|
||||
jr nz, .copyPictureIDLoop
|
||||
ld hl, wSpriteStateData2 + $1e
|
||||
ld hl, wSprite01StateData2ImageBaseOffset
|
||||
.loadTilePatternLoop
|
||||
ld de, wSpriteStateData2 + $1d
|
||||
ld de, wSprite01StateData2PictureID
|
||||
; Check if the current picture ID has already had its tile patterns loaded.
|
||||
; This done by looping through the previous sprite slots and seeing if any of
|
||||
; their picture ID's match that of the current sprite slot.
|
||||
|
|
@ -70,7 +70,7 @@ LoadMapSpriteTilePatterns:
|
|||
ld e, a
|
||||
jr .checkIfAlreadyLoadedLoop
|
||||
.notAlreadyLoaded
|
||||
ld de, wSpriteStateData2 + $0e
|
||||
ld de, wSpritePlayerStateData2ImageBaseOffset
|
||||
ld b, $01
|
||||
; loop to find the highest tile pattern VRAM slot (among the first 10 slots) used by a previous sprite slot
|
||||
; this is done in order to find the first free VRAM slot available
|
||||
|
|
@ -215,7 +215,7 @@ LoadMapSpriteTilePatterns:
|
|||
ld l, a
|
||||
dec c
|
||||
jp nz, .loadTilePatternLoop
|
||||
ld hl, wSpriteStateData2 + $0d
|
||||
ld hl, wSpritePlayerStateData2PictureID
|
||||
ld b, $10
|
||||
; the pictures ID's stored at $C2XD are no longer needed, so zero them
|
||||
.zeroStoredPictureIDLoop
|
||||
|
|
@ -287,7 +287,7 @@ InitOutsideMapSprites:
|
|||
jr nc, .noCarry2
|
||||
inc d
|
||||
.noCarry2
|
||||
ld hl, wSpriteStateData2 + $0d
|
||||
ld hl, wSpritePlayerStateData2PictureID
|
||||
ld a, SPRITE_RED
|
||||
ld [hl], a
|
||||
ld bc, wSpriteSet
|
||||
|
|
@ -323,7 +323,7 @@ InitOutsideMapSprites:
|
|||
call LoadMapSpriteTilePatterns
|
||||
pop af
|
||||
ld [wNumSprites], a ; restore number of sprites
|
||||
ld hl, wSpriteStateData2 + $1e
|
||||
ld hl, wSprite01StateData2ImageBaseOffset
|
||||
ld b, $0f
|
||||
; The VRAM tile pattern slots that LoadMapSpriteTilePatterns set are in the
|
||||
; order of the map's sprite set, not the order of the actual sprites loaded
|
||||
|
|
@ -337,7 +337,7 @@ InitOutsideMapSprites:
|
|||
dec b
|
||||
jr nz, .zeroVRAMSlotsLoop
|
||||
.skipLoadingSpriteSet
|
||||
ld hl, wSpriteStateData1 + $10
|
||||
ld hl, wSprite01StateData1
|
||||
; This loop stores the correct VRAM tile pattern slots according the sprite
|
||||
; data from the map's header. Since the VRAM tile pattern slots are filled in
|
||||
; the order of the sprite set, in order to find the VRAM tile pattern slot
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
MAP_TILESET_SIZE EQU $60
|
||||
|
||||
UpdatePlayerSprite:
|
||||
ld a, [wSpriteStateData2]
|
||||
ld a, [wSpritePlayerStateData2WalkAnimationCounter]
|
||||
and a
|
||||
jr z, .checkIfTextBoxInFrontOfSprite
|
||||
cp $ff
|
||||
jr z, .disableSprite
|
||||
dec a
|
||||
ld [wSpriteStateData2], a
|
||||
ld [wSpritePlayerStateData2WalkAnimationCounter], a
|
||||
jr .disableSprite
|
||||
; check if a text box is in front of the sprite by checking if the lower left
|
||||
; background tile the sprite is standing on is greater than $5F, which is
|
||||
|
|
@ -19,7 +19,7 @@ UpdatePlayerSprite:
|
|||
jr c, .lowerLeftTileIsMapTile
|
||||
.disableSprite
|
||||
ld a, $ff
|
||||
ld [wSpriteStateData1 + 2], a
|
||||
ld [wSpritePlayerStateData1ImageIndex], a
|
||||
ret
|
||||
.lowerLeftTileIsMapTile
|
||||
call DetectCollisionBetweenSprites
|
||||
|
|
@ -51,11 +51,11 @@ UpdatePlayerSprite:
|
|||
.notMoving
|
||||
; zero the animation counters
|
||||
xor a
|
||||
ld [wSpriteStateData1 + 7], a
|
||||
ld [wSpriteStateData1 + 8], a
|
||||
ld [wSpritePlayerStateData1IntraAnimFrameCounter], a
|
||||
ld [wSpritePlayerStateData1AnimFrameCounter], a
|
||||
jr .calcImageIndex
|
||||
.next
|
||||
ld [wSpriteStateData1 + 9], a ; facing direction
|
||||
ld [wSpritePlayerStateData1FacingDirection], a
|
||||
ld a, [wFontLoaded]
|
||||
bit 0, a
|
||||
jr nz, .notMoving
|
||||
|
|
@ -79,11 +79,11 @@ UpdatePlayerSprite:
|
|||
and $3
|
||||
ld [hl], a
|
||||
.calcImageIndex
|
||||
ld a, [wSpriteStateData1 + 8]
|
||||
ld a, [wSpritePlayerStateData1AnimFrameCounter]
|
||||
ld b, a
|
||||
ld a, [wSpriteStateData1 + 9]
|
||||
ld a, [wSpritePlayerStateData1FacingDirection]
|
||||
add b
|
||||
ld [wSpriteStateData1 + 2], a
|
||||
ld [wSpritePlayerStateData1ImageIndex], a
|
||||
.skipSpriteAnim
|
||||
; If the player is standing on a grass tile, make the player's sprite have
|
||||
; lower priority than the background so that it's partially obscured by the
|
||||
|
|
@ -97,7 +97,7 @@ UpdatePlayerSprite:
|
|||
jr nz, .next2
|
||||
ld a, $80
|
||||
.next2
|
||||
ld [wSpriteStateData2 + 7], a
|
||||
ld [wSpritePlayerStateData2GrassPriority], a
|
||||
ret
|
||||
|
||||
UnusedReadSpriteDataFunction:
|
||||
|
|
@ -397,7 +397,7 @@ UpdateSpriteMovementDelay:
|
|||
notYetMoving:
|
||||
ld h, wSpriteStateData1 / $100
|
||||
ld a, [hCurrentSpriteOffset]
|
||||
add $8
|
||||
add wSpritePlayerStateData1AnimFrameCounter - wSpritePlayerStateData1
|
||||
ld l, a
|
||||
ld [hl], $0 ; c1x8 = 0 (walk animation frame)
|
||||
jp UpdateSpriteImage
|
||||
|
|
@ -452,7 +452,7 @@ InitializeSpriteStatus:
|
|||
InitializeSpriteScreenPosition:
|
||||
ld h, wSpriteStateData2 / $100
|
||||
ld a, [hCurrentSpriteOffset]
|
||||
add $4
|
||||
add wSpritePlayerStateData2MapY - wSpritePlayerStateData2
|
||||
ld l, a
|
||||
ld a, [wYCoord]
|
||||
ld b, a
|
||||
|
|
@ -480,13 +480,13 @@ CheckSpriteAvailability:
|
|||
jp nz, .spriteInvisible
|
||||
ld h, wSpriteStateData2 / $100
|
||||
ld a, [hCurrentSpriteOffset]
|
||||
add $6
|
||||
add wSpritePlayerStateData2MovementByte1 - wSpritePlayerStateData2
|
||||
ld l, a
|
||||
ld a, [hl] ; c2x6: movement byte 1
|
||||
cp $fe
|
||||
jr c, .skipXVisibilityTest ; movement byte 1 < $fe (i.e. the sprite's movement is scripted)
|
||||
ld a, [hCurrentSpriteOffset]
|
||||
add $4
|
||||
add wSpritePlayerStateData2MapY - wSpritePlayerStateData2
|
||||
ld l, a
|
||||
ld b, [hl] ; c2x4: Y pos (+4)
|
||||
ld a, [wYCoord]
|
||||
|
|
@ -528,7 +528,7 @@ CheckSpriteAvailability:
|
|||
.spriteInvisible
|
||||
ld h, wSpriteStateData1 / $100
|
||||
ld a, [hCurrentSpriteOffset]
|
||||
add $2
|
||||
add wSpritePlayerStateData1ImageIndex - wSpritePlayerStateData1
|
||||
ld l, a
|
||||
ld [hl], $ff ; c1x2
|
||||
scf
|
||||
|
|
@ -582,7 +582,7 @@ UpdateSpriteImage:
|
|||
CanWalkOntoTile:
|
||||
ld h, wSpriteStateData2 / $100
|
||||
ld a, [hCurrentSpriteOffset]
|
||||
add $6
|
||||
add wSpritePlayerStateData2MovementByte1 - wSpritePlayerStateData2
|
||||
ld l, a
|
||||
ld a, [hl] ; c2x6 (movement byte 1)
|
||||
cp $fe
|
||||
|
|
@ -610,7 +610,7 @@ CanWalkOntoTile:
|
|||
jr z, .impassable ; if $ff, no movement allowed (however, changing direction is)
|
||||
ld h, wSpriteStateData1 / $100
|
||||
ld a, [hCurrentSpriteOffset]
|
||||
add $4
|
||||
add wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
|
||||
ld l, a
|
||||
ld a, [hli] ; c1x4 (screen Y pos)
|
||||
add $4 ; align to blocks (Y pos is always 4 pixels off)
|
||||
|
|
@ -636,7 +636,7 @@ CanWalkOntoTile:
|
|||
jr nz, .impassable ; collision between sprites, don't go there
|
||||
ld h, wSpriteStateData2 / $100
|
||||
ld a, [hCurrentSpriteOffset]
|
||||
add $2
|
||||
add wSpritePlayerStateData2YDisplacement - wSpritePlayerStateData2
|
||||
ld l, a
|
||||
ld a, [hli] ; c2x2 (sprite Y displacement, initialized at $8, keep track of where a sprite did go)
|
||||
bit 7, d ; check if going upwards (d=$ff)
|
||||
|
|
@ -665,7 +665,7 @@ CanWalkOntoTile:
|
|||
and a ; clear carry (marking success)
|
||||
ret
|
||||
.impassable
|
||||
ld h, $c1
|
||||
ld h, wSpriteStateData1 / $100
|
||||
ld a, [hCurrentSpriteOffset]
|
||||
inc a
|
||||
ld l, a
|
||||
|
|
@ -693,7 +693,7 @@ CanWalkOntoTile:
|
|||
GetTileSpriteStandsOn:
|
||||
ld h, wSpriteStateData1 / $100
|
||||
ld a, [hCurrentSpriteOffset]
|
||||
add $4
|
||||
add wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
|
||||
ld l, a
|
||||
ld a, [hli] ; c1x4: screen Y position
|
||||
add $4 ; align to 2*2 tile blocks (Y position is always off 4 pixels to the top)
|
||||
|
|
@ -807,12 +807,12 @@ InitScriptedNPCMovement:
|
|||
jp AnimScriptedNPCMovement
|
||||
|
||||
GetSpriteScreenYPointer:
|
||||
ld a, $4
|
||||
ld a, wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
|
||||
ld b, a
|
||||
jr GetSpriteScreenXYPointerCommon
|
||||
|
||||
GetSpriteScreenXPointer:
|
||||
ld a, $6
|
||||
ld a, wSpritePlayerStateData1XPixels - wSpritePlayerStateData1
|
||||
ld b, a
|
||||
|
||||
GetSpriteScreenXYPointerCommon:
|
||||
|
|
@ -826,7 +826,7 @@ GetSpriteScreenXYPointerCommon:
|
|||
AnimScriptedNPCMovement:
|
||||
ld hl, wSpriteStateData2
|
||||
ld a, [hCurrentSpriteOffset]
|
||||
add $e
|
||||
add wSpritePlayerStateData2ImageBaseOffset - wSpritePlayerStateData2
|
||||
ld l, a
|
||||
ld a, [hl] ; VRAM slot
|
||||
dec a
|
||||
|
|
@ -834,7 +834,7 @@ AnimScriptedNPCMovement:
|
|||
ld b, a
|
||||
ld hl, wSpriteStateData1
|
||||
ld a, [hCurrentSpriteOffset]
|
||||
add $9
|
||||
add wSpritePlayerStateData1FacingDirection - wSpritePlayerStateData1
|
||||
ld l, a
|
||||
ld a, [hl] ; facing direction
|
||||
cp SPRITE_FACING_DOWN
|
||||
|
|
@ -853,7 +853,7 @@ AnimScriptedNPCMovement:
|
|||
call AdvanceScriptedNPCAnimFrameCounter
|
||||
ld hl, wSpriteStateData1
|
||||
ld a, [hCurrentSpriteOffset]
|
||||
add $2
|
||||
add wSpritePlayerStateData1ImageIndex - wSpritePlayerStateData1
|
||||
ld l, a
|
||||
ld a, [hSpriteVRAMSlotAndFacing]
|
||||
ld b, a
|
||||
|
|
|
|||
|
|
@ -77,14 +77,14 @@ FindPathToPlayer:
|
|||
CalcPositionOfPlayerRelativeToNPC:
|
||||
xor a
|
||||
ld [hNPCPlayerRelativePosFlags], a
|
||||
ld a, [wSpriteStateData1 + 4] ; player's sprite screen Y position in pixels
|
||||
ld a, [wSpritePlayerStateData1YPixels]
|
||||
ld d, a
|
||||
ld a, [wSpriteStateData1 + 6] ; player's sprite screen X position in pixels
|
||||
ld a, [wSpritePlayerStateData1XPixels]
|
||||
ld e, a
|
||||
ld hl, wSpriteStateData1
|
||||
ld a, [hNPCSpriteOffset]
|
||||
add l
|
||||
add $4
|
||||
add wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
|
||||
ld l, a
|
||||
jr nc, .noCarry
|
||||
inc h
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
EnterMapAnim::
|
||||
call InitFacingDirectionList
|
||||
ld a, $ec
|
||||
ld [wSpriteStateData1 + 4], a ; player's sprite Y screen position
|
||||
ld [wSpritePlayerStateData1YPixels], a
|
||||
call Delay3
|
||||
push hl
|
||||
call GBFadeInFromWhite
|
||||
|
|
@ -227,19 +227,19 @@ DoFlyAnimation:
|
|||
ld a, [wFlyAnimBirdSpriteImageIndex]
|
||||
xor $1 ; make the bird flap its wings
|
||||
ld [wFlyAnimBirdSpriteImageIndex], a
|
||||
ld [wSpriteStateData1 + 2], a
|
||||
ld [wSpritePlayerStateData1ImageIndex], a
|
||||
call Delay3
|
||||
ld a, [wFlyAnimUsingCoordList]
|
||||
cp $ff
|
||||
jr z, .skipCopyingCoords ; if the bird is flapping its wings in place
|
||||
ld hl, wSpriteStateData1 + 4
|
||||
ld hl, wSpritePlayerStateData1YPixels
|
||||
ld a, [de]
|
||||
inc de
|
||||
ld [hli], a
|
||||
ld [hli], a ; y
|
||||
inc hl
|
||||
ld a, [de]
|
||||
inc de
|
||||
ld [hl], a
|
||||
ld [hl], a ; x
|
||||
.skipCopyingCoords
|
||||
ld a, [wFlyAnimCounter]
|
||||
dec a
|
||||
|
|
@ -258,15 +258,15 @@ LoadBirdSpriteGraphics:
|
|||
jp CopyVideoData
|
||||
|
||||
InitFacingDirectionList:
|
||||
ld a, [wSpriteStateData1 + 2] ; player's sprite facing direction (image index is locked to standing images)
|
||||
ld a, [wSpritePlayerStateData1ImageIndex] ; (image index is locked to standing images)
|
||||
ld [wSavedPlayerFacingDirection], a
|
||||
ld a, [wSpriteStateData1 + 4] ; player's sprite Y screen position
|
||||
ld a, [wSpritePlayerStateData1YPixels]
|
||||
ld [wSavedPlayerScreenY], a
|
||||
ld hl, PlayerSpinningFacingOrder
|
||||
ld de, wFacingDirectionList
|
||||
ld bc, 4
|
||||
call CopyData
|
||||
ld a, [wSpriteStateData1 + 2] ; player's sprite facing direction (image index is locked to standing images)
|
||||
ld a, [wSpritePlayerStateData1ImageIndex] ; (image index is locked to standing images)
|
||||
ld hl, wFacingDirectionList
|
||||
; find the place in the list that matches the current facing direction
|
||||
.loop
|
||||
|
|
@ -284,7 +284,7 @@ PlayerSpinningFacingOrder:
|
|||
SpinPlayerSprite:
|
||||
; copy the current value from the list into the sprite data and rotate the list
|
||||
ld a, [hl]
|
||||
ld [wSpriteStateData1 + 2], a ; player's sprite facing direction (image index is locked to standing images)
|
||||
ld [wSpritePlayerStateData1ImageIndex], a ; (image index is locked to standing images)
|
||||
push hl
|
||||
ld hl, wFacingDirectionList
|
||||
ld de, wFacingDirectionList - 1
|
||||
|
|
@ -320,9 +320,9 @@ PlayerSpinWhileMovingUpOrDown:
|
|||
call SpinPlayerSprite
|
||||
ld a, [wPlayerSpinWhileMovingUpOrDownAnimDeltaY]
|
||||
ld c, a
|
||||
ld a, [wSpriteStateData1 + 4] ; player's sprite Y screen position
|
||||
ld a, [wSpritePlayerStateData1YPixels]
|
||||
add c
|
||||
ld [wSpriteStateData1 + 4], a
|
||||
ld [wSpritePlayerStateData1YPixels], a
|
||||
ld c, a
|
||||
ld a, [wPlayerSpinWhileMovingUpOrDownAnimMaxY]
|
||||
cp c
|
||||
|
|
@ -334,9 +334,9 @@ PlayerSpinWhileMovingUpOrDown:
|
|||
|
||||
RestoreFacingDirectionAndYScreenPos:
|
||||
ld a, [wSavedPlayerScreenY]
|
||||
ld [wSpriteStateData1 + 4], a
|
||||
ld [wSpritePlayerStateData1YPixels], a
|
||||
ld a, [wSavedPlayerFacingDirection]
|
||||
ld [wSpriteStateData1 + 2], a
|
||||
ld [wSpritePlayerStateData1ImageIndex], a ; (image index is locked to standing images)
|
||||
ret
|
||||
|
||||
; if SGB, 2 frames, else 3 frames
|
||||
|
|
@ -387,7 +387,7 @@ FishingAnim:
|
|||
ld a, $4
|
||||
ld hl, RedFishingTiles
|
||||
call LoadAnimSpriteGfx
|
||||
ld a, [wSpriteStateData1 + 2]
|
||||
ld a, [wSpritePlayerStateData1ImageIndex]
|
||||
ld c, a
|
||||
ld b, $0
|
||||
ld hl, FishingRodOAM
|
||||
|
|
@ -410,7 +410,7 @@ FishingAnim:
|
|||
; shake the player's sprite vertically
|
||||
ld b, 10
|
||||
.loop
|
||||
ld hl, wSpriteStateData1 + 4 ; player's sprite Y screen position
|
||||
ld hl, wSpritePlayerStateData1YPixels
|
||||
call .ShakePlayerSprite
|
||||
ld hl, wOAMBuffer + $9c
|
||||
call .ShakePlayerSprite
|
||||
|
|
@ -420,7 +420,7 @@ FishingAnim:
|
|||
|
||||
; If the player is facing up, hide the fishing rod so it doesn't overlap with
|
||||
; the exclamation bubble that will be shown next.
|
||||
ld a, [wSpriteStateData1 + 2] ; player's sprite facing direction
|
||||
ld a, [wSpritePlayerStateData1ImageIndex] ; (image index is locked to standing images)
|
||||
cp SPRITE_FACING_UP
|
||||
jr nz, .skipHidingFishingRod
|
||||
ld a, $a0
|
||||
|
|
@ -434,7 +434,7 @@ FishingAnim:
|
|||
predef EmotionBubble
|
||||
|
||||
; If the player is facing up, unhide the fishing rod.
|
||||
ld a, [wSpriteStateData1 + 2] ; player's sprite facing direction
|
||||
ld a, [wSpritePlayerStateData1ImageIndex] ; (image index is locked to standing images)
|
||||
cp SPRITE_FACING_UP
|
||||
jr nz, .skipUnhidingFishingRod
|
||||
ld a, $44
|
||||
|
|
@ -507,7 +507,7 @@ _HandleMidJump::
|
|||
ld hl, PlayerJumpingYScreenCoords
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
ld [wSpriteStateData1 + 4], a ; player's sprite y coordinate
|
||||
ld [wSpritePlayerStateData1YPixels], a
|
||||
ret
|
||||
.finishedJump
|
||||
ld a, [wWalkCounter]
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ IsPlayerFacingEdgeOfMap::
|
|||
push hl
|
||||
push de
|
||||
push bc
|
||||
ld a, [wSpriteStateData1 + 9] ; player sprite's facing direction
|
||||
ld a, [wSpritePlayerStateData1FacingDirection]
|
||||
srl a
|
||||
ld c, a
|
||||
ld b, $0
|
||||
|
|
@ -158,7 +158,7 @@ IsWarpTileInFrontOfPlayer::
|
|||
ld a, [wCurMap]
|
||||
cp SS_ANNE_BOW
|
||||
jr z, IsSSAnneBowWarpTileInFrontOfPlayer
|
||||
ld a, [wSpriteStateData1 + 9] ; player sprite's facing direction
|
||||
ld a, [wSpritePlayerStateData1FacingDirection]
|
||||
srl a
|
||||
ld c, a
|
||||
ld b, 0
|
||||
|
|
@ -263,7 +263,7 @@ _GetTileAndCoordsInFrontOfPlayer:
|
|||
ld d, a
|
||||
ld a, [wXCoord]
|
||||
ld e, a
|
||||
ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
|
||||
ld a, [wSpritePlayerStateData1FacingDirection]
|
||||
and a ; cp SPRITE_FACING_DOWN
|
||||
jr nz, .notFacingDown
|
||||
; facing down
|
||||
|
|
@ -302,7 +302,7 @@ GetTileTwoStepsInFrontOfPlayer:
|
|||
ld a, [hli]
|
||||
ld d, a
|
||||
ld e, [hl]
|
||||
ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
|
||||
ld a, [wSpritePlayerStateData1FacingDirection]
|
||||
and a ; cp SPRITE_FACING_DOWN
|
||||
jr nz, .notFacingDown
|
||||
; facing down
|
||||
|
|
@ -375,7 +375,7 @@ CheckForBoulderCollisionWithSprites:
|
|||
swap a
|
||||
ld d, 0
|
||||
ld e, a
|
||||
ld hl, wSpriteStateData2 + $14
|
||||
ld hl, wSprite01StateData2MapY
|
||||
add hl, de
|
||||
ld a, [hli] ; map Y position
|
||||
ld [hPlayerYCoord], a
|
||||
|
|
@ -384,7 +384,7 @@ CheckForBoulderCollisionWithSprites:
|
|||
ld a, [wNumSprites]
|
||||
ld c, a
|
||||
ld de, $f
|
||||
ld hl, wSpriteStateData2 + $14
|
||||
ld hl, wSprite01StateData2MapY
|
||||
ld a, [hPlayerFacing]
|
||||
and $3 ; facing up or down?
|
||||
jr z, .pushingHorizontallyLoop
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ TryPushingBoulder::
|
|||
ld [wBoulderSpriteIndex], a
|
||||
and a
|
||||
jp z, ResetBoulderPushFlags
|
||||
ld hl, wSpriteStateData1 + 1
|
||||
ld hl, wSpritePlayerStateData1MovementStatus
|
||||
ld d, $0
|
||||
ld a, [hSpriteIndexOrTextID]
|
||||
swap a
|
||||
|
|
@ -36,7 +36,7 @@ TryPushingBoulder::
|
|||
jp nz, ResetBoulderPushFlags
|
||||
ld a, [hJoyHeld]
|
||||
ld b, a
|
||||
ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
|
||||
ld a, [wSpritePlayerStateData1FacingDirection]
|
||||
cp SPRITE_FACING_UP
|
||||
jr z, .pushBoulderUp
|
||||
cp SPRITE_FACING_LEFT
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
_UpdateSprites::
|
||||
ld h, $c1
|
||||
inc h
|
||||
ld a, $e ; wSpriteStateData2 + $0e
|
||||
ld a, wSpritePlayerStateData2ImageBaseOffset - wSpritePlayerStateData2
|
||||
.spriteLoop
|
||||
ld l, a
|
||||
sub $e
|
||||
sub wSpritePlayerStateData2ImageBaseOffset - wSpritePlayerStateData2
|
||||
ld c, a
|
||||
ld [hCurrentSpriteOffset], a
|
||||
ld a, [hl]
|
||||
|
|
@ -20,7 +20,7 @@ _UpdateSprites::
|
|||
.skipSprite
|
||||
ld a, l
|
||||
add $10 ; move to next sprite
|
||||
cp $e ; test for overflow (back at $0e)
|
||||
cp wSpritePlayerStateData2ImageBaseOffset - wSpritePlayerStateData2 ; test for overflow (back at beginning)
|
||||
jr nz, .spriteLoop
|
||||
ret
|
||||
.updateCurrentSprite
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
_GetSpritePosition1::
|
||||
ld hl, wSpriteStateData1
|
||||
ld de, $4
|
||||
ld de, wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
|
||||
ld a, [wSpriteIndex]
|
||||
ld [hSpriteIndex], a
|
||||
call GetSpriteDataPointer
|
||||
|
|
@ -9,7 +9,7 @@ _GetSpritePosition1::
|
|||
inc hl
|
||||
ld a, [hl] ; c1x6 (screen X pos)
|
||||
ld [hSpriteScreenXCoord], a
|
||||
ld de, (wSpriteStateData2 + $4) - (wSpriteStateData1 + $6)
|
||||
ld de, wSpritePlayerStateData2MapY - wSpritePlayerStateData1XPixels
|
||||
add hl, de
|
||||
ld a, [hli] ; c2x4 (map Y pos)
|
||||
ld [hSpriteMapYCoord], a
|
||||
|
|
@ -19,7 +19,7 @@ _GetSpritePosition1::
|
|||
|
||||
_GetSpritePosition2::
|
||||
ld hl, wSpriteStateData1
|
||||
ld de, $4
|
||||
ld de, wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
|
||||
ld a, [wSpriteIndex]
|
||||
ld [hSpriteIndex], a
|
||||
call GetSpriteDataPointer
|
||||
|
|
@ -28,7 +28,7 @@ _GetSpritePosition2::
|
|||
inc hl
|
||||
ld a, [hl] ; c1x6 (screen X pos)
|
||||
ld [wSavedSpriteScreenX], a
|
||||
ld de, (wSpriteStateData2 + $4) - (wSpriteStateData1 + $6)
|
||||
ld de, wSpritePlayerStateData2MapY - wSpritePlayerStateData1XPixels
|
||||
add hl, de
|
||||
ld a, [hli] ; c2x4 (map Y pos)
|
||||
ld [wSavedSpriteMapY], a
|
||||
|
|
@ -38,7 +38,7 @@ _GetSpritePosition2::
|
|||
|
||||
_SetSpritePosition1::
|
||||
ld hl, wSpriteStateData1
|
||||
ld de, $4
|
||||
ld de, wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
|
||||
ld a, [wSpriteIndex]
|
||||
ld [hSpriteIndex], a
|
||||
call GetSpriteDataPointer
|
||||
|
|
@ -47,7 +47,7 @@ _SetSpritePosition1::
|
|||
inc hl
|
||||
ld a, [hSpriteScreenXCoord] ; c1x6 (screen X pos)
|
||||
ld [hl], a
|
||||
ld de, (wSpriteStateData2 + $4) - (wSpriteStateData1 + $6)
|
||||
ld de, wSpritePlayerStateData2MapY - wSpritePlayerStateData1XPixels
|
||||
add hl, de
|
||||
ld a, [hSpriteMapYCoord] ; c2x4 (map Y pos)
|
||||
ld [hli], a
|
||||
|
|
@ -57,7 +57,7 @@ _SetSpritePosition1::
|
|||
|
||||
_SetSpritePosition2::
|
||||
ld hl, wSpriteStateData1
|
||||
ld de, 4
|
||||
ld de, wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
|
||||
ld a, [wSpriteIndex]
|
||||
ld [hSpriteIndex], a
|
||||
call GetSpriteDataPointer
|
||||
|
|
@ -66,7 +66,7 @@ _SetSpritePosition2::
|
|||
inc hl
|
||||
ld a, [wSavedSpriteScreenX]
|
||||
ld [hl], a ; c1x6 (screen X pos)
|
||||
ld de, (wSpriteStateData2 + $4) - (wSpriteStateData1 + $6)
|
||||
ld de, wSpritePlayerStateData2MapY - wSpritePlayerStateData1XPixels
|
||||
add hl, de
|
||||
ld a, [wSavedSpriteMapY]
|
||||
ld [hli], a ; c2x4 (map Y pos)
|
||||
|
|
@ -165,7 +165,7 @@ TrainerEngage:
|
|||
push hl
|
||||
push de
|
||||
ld a, [wTrainerSpriteOffset]
|
||||
add $2
|
||||
add wSpritePlayerStateData1ImageIndex - wSpritePlayerStateData1
|
||||
ld d, $0
|
||||
ld e, a
|
||||
ld hl, wSpriteStateData1
|
||||
|
|
@ -176,7 +176,7 @@ TrainerEngage:
|
|||
jp .noEngage
|
||||
.spriteOnScreen
|
||||
ld a, [wTrainerSpriteOffset]
|
||||
add $9
|
||||
add wSpritePlayerStateData1FacingDirection - wSpritePlayerStateData1
|
||||
ld d, $0
|
||||
ld e, a
|
||||
ld hl, wSpriteStateData1
|
||||
|
|
@ -234,7 +234,7 @@ TrainerEngage:
|
|||
; reads trainer's Y position to wTrainerScreenY and X position to wTrainerScreenX
|
||||
ReadTrainerScreenPosition:
|
||||
ld a, [wTrainerSpriteOffset]
|
||||
add $4
|
||||
add wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
|
||||
ld d, $0
|
||||
ld e, a
|
||||
ld hl, wSpriteStateData1
|
||||
|
|
@ -242,7 +242,7 @@ ReadTrainerScreenPosition:
|
|||
ld a, [hl] ; c1x4 (sprite Y pos)
|
||||
ld [wTrainerScreenY], a
|
||||
ld a, [wTrainerSpriteOffset]
|
||||
add $6
|
||||
add wSpritePlayerStateData1XPixels - wSpritePlayerStateData1
|
||||
ld d, $0
|
||||
ld e, a
|
||||
ld hl, wSpriteStateData1
|
||||
|
|
@ -295,7 +295,7 @@ CheckPlayerIsInFrontOfSprite:
|
|||
cp POWER_PLANT
|
||||
jp z, .engage ; bypass this for power plant to get voltorb fake items to work
|
||||
ld a, [wTrainerSpriteOffset]
|
||||
add $4
|
||||
add wSpritePlayerStateData1YPixels - wSpritePlayerStateData1
|
||||
ld d, $0
|
||||
ld e, a
|
||||
ld hl, wSpriteStateData1
|
||||
|
|
@ -307,7 +307,7 @@ CheckPlayerIsInFrontOfSprite:
|
|||
.notOnTopmostTile
|
||||
ld [wTrainerScreenY], a
|
||||
ld a, [wTrainerSpriteOffset]
|
||||
add $6
|
||||
add wSpritePlayerStateData1XPixels - wSpritePlayerStateData1
|
||||
ld d, $0
|
||||
ld e, a
|
||||
ld hl, wSpriteStateData1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue