diff options
author | Rangi <remy.oukaour+rangi42@gmail.com> | 2020-11-04 15:16:20 -0500 |
---|---|---|
committer | Rangi <remy.oukaour+rangi42@gmail.com> | 2020-11-04 19:44:31 -0500 |
commit | aae999f72bd81a3156c7e00da4ebf499f52da5a6 (patch) | |
tree | 32fef70a31af3a0b5ad2b0d34042c312574fb42d /engine/pikachu_movement.asm | |
parent | 87131eaa1ba5dc898e64c7415b5bce61c6aa146d (diff) |
Start reorganizing pokeyellow
Diffstat (limited to 'engine/pikachu_movement.asm')
-rwxr-xr-x | engine/pikachu_movement.asm | 1048 |
1 files changed, 0 insertions, 1048 deletions
diff --git a/engine/pikachu_movement.asm b/engine/pikachu_movement.asm deleted file mode 100755 index 2d87e947..00000000 --- a/engine/pikachu_movement.asm +++ /dev/null @@ -1,1048 +0,0 @@ -ApplyPikachuMovementData_:: - ld a, b - ld [wPikachuMovementScriptBank], a - ld a, l - ld [wPikachuMovementScriptAddress], a - ld a, h - ld [wPikachuMovementScriptAddress + 1], a - call .SwapSpriteStateData -.loop - call LoadPikachuMovementCommandData - jr nc, .done - call ExecutePikachuMovementCommand - jr .loop - -.done - call .SwapSpriteStateData - call DelayFrame - ret - -.SwapSpriteStateData: - ld a, [wUpdateSpritesEnabled] - push af - ld a, $ff - ld [wUpdateSpritesEnabled], a - push hl - push de - push bc - - ld hl, wSpritePlayerStateData1 - ld de, wSpritePikachuStateData1 - ld c, $10 - call .SwapBytes - - ld hl, wSpritePlayerStateData2 - ld de, wSpritePikachuStateData2 - ld c, $10 - call .SwapBytes - - pop bc - pop de - pop hl - pop af - ld [wUpdateSpritesEnabled], a - ret - -.SwapBytes: - ld b, [hl] - ld a, [de] - ld [hli], a - ld a, b - ld [de], a - inc de - dec c - jr nz, .SwapBytes - ret - -LoadPikachuMovementCommandData: - call GetPikachuMovementScriptByte - cp $3f - ret z - ld c, a - ld b, 0 - ld hl, PikachuMovementDatabase - add hl, bc - add hl, bc - add hl, bc - add hl, bc - ld a, [hli] - ld [wCurPikaMovementFunc1], a - ld a, [hli] - cp $80 - jr nz, .no_param - call GetPikachuMovementScriptByte -.no_param - ld [wCurPikaMovementParam1], a - ld a, [hli] - ld [wCurPikaMovementFunc2], a - ld a, [hli] - cp $80 - jr nz, .no_param2 - call GetPikachuMovementScriptByte -.no_param2 - ld [wCurPikaMovementParam2], a - xor a - ld [wd451], a - scf - ret - -ExecutePikachuMovementCommand: - xor a - ld [wPikachuMovementFlags], a - ld [wPikachuStepTimer], a - ld [wPikachuStepSubtimer], a - ld a, [wSpritePlayerStateData2GrassPriority] - push af -.loop - ld bc, wSpritePlayerStateData1 ; Currently holds Pikachu's sprite state data - ld a, [wCurPikaMovementFunc1] - ld hl, PikaMovementFunc1Jumptable - call .JumpTable - ld a, [wCurPikaMovementFunc2] - ld hl, PikaMovementFunc2Jumptable - call .JumpTable - call GetCoordsForPikachuShadow - call AnimatePikachuShadow - call DelayFrame - call DelayFrame - ld hl, wPikachuMovementFlags - bit 7, [hl] - jr z, .loop - pop af - ld [wSpritePlayerStateData2GrassPriority], a - scf - ret - -.JumpTable: - ld e, a - ld d, 0 - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl - -GetCoordsForPikachuShadow: - ld hl, wSpritePlayerStateData1ImageIndex - wSpritePlayerStateData1 - add hl, bc - ld a, [wCurPikaMovementSpriteImageIdx] - ld [hl], a - ld a, [wPikaSpriteY] - ld d, a - ld a, [wPikachuMovementYOffset] - add d - ld hl, wSpritePlayerStateData1YPixels - wSpritePlayerStateData1 - add hl, bc - ld [hl], a - ld a, [wPikaSpriteX] - ld d, a - ld a, [wPikachuMovementXOffset] - add d - ld hl, wSpritePlayerStateData1XPixels - wSpritePlayerStateData1 - add hl, bc - ld [hl], a - ld hl, wPikachuMovementFlags - bit 6, [hl] - ret z - ld hl, wSpritePlayerStateData2GrassPriority - wSpritePlayerStateData1 - add hl, bc - ld [hl], 0 - ret - -AnimatePikachuShadow: - ld hl, wPikachuMovementFlags - bit 6, [hl] - res 6, [hl] - ld hl, wd736 - res 6, [hl] - ret z - set 6, [hl] - call LoadPikachuShadowOAMData - ret - -PikachuMovementDatabase: - db $01, 1 - 1, $00, 1 - 1 ; $00 start - - db $03, $80, $01, 1 - 1 ; $01 - db $04, $80, $01, 1 - 1 ; $02 - db $05, $80, $01, 1 - 1 ; $03 - db $06, $80, $01, 1 - 1 ; $04 - db $07, $80, $01, 1 - 1 ; $05 - db $08, $80, $01, 1 - 1 ; $06 - db $09, $80, $01, 1 - 1 ; $07 - db $0a, $80, $01, 1 - 1 ; $08 - - db $03, $80, $06, 1 - 1 ; $09 - db $04, $80, $06, 1 - 1 ; $0a - db $05, $80, $06, 1 - 1 ; $0b - db $06, $80, $06, 1 - 1 ; $0c - db $07, $80, $06, 1 - 1 ; $0d - db $08, $80, $06, 1 - 1 ; $0e - db $09, $80, $06, 1 - 1 ; $0f - db $0a, $80, $06, 1 - 1 ; $10 - - db $03, $80, $03, $80 ; $11 - db $04, $80, $03, $80 ; $12 - db $05, $80, $03, $80 ; $13 - db $06, $80, $03, $80 ; $14 - db $07, $80, $03, $80 ; $15 - db $08, $80, $03, $80 ; $16 - db $09, $80, $03, $80 ; $17 - db $0a, $80, $03, $80 ; $18 - - db $03, $80, $07, $80 ; $19 - db $04, $80, $07, $80 ; $1a - db $05, $80, $07, $80 ; $1b - db $06, $80, $07, $80 ; $1c - - db $0b, (1 << 5) | 8 - 1, $02, 1 - 1 ; $1d step down - db $0c, (1 << 5) | 8 - 1, $02, 1 - 1 ; $1e step up - db $0d, (1 << 5) | 8 - 1, $02, 1 - 1 ; $1f step left - db $0e, (1 << 5) | 8 - 1, $02, 1 - 1 ; $20 step right - db $0f, (1 << 5) | 8 - 1, $02, 1 - 1 ; $21 step down left - db $10, (1 << 5) | 8 - 1, $02, 1 - 1 ; $22 step down right - db $11, (1 << 5) | 8 - 1, $02, 1 - 1 ; $23 step up left - db $12, (1 << 5) | 8 - 1, $02, 1 - 1 ; $24 step up right - - db $0b, 16 - 1, $02, 1 - 1 ; $25 slide down - db $0c, 16 - 1, $02, 1 - 1 ; $26 slide up - db $0d, 16 - 1, $02, 1 - 1 ; $27 slide left - db $0e, 16 - 1, $02, 1 - 1 ; $28 slide right - db $0f, 16 - 1, $02, 1 - 1 ; $29 slide down left - db $10, 16 - 1, $02, 1 - 1 ; $2a slide down right - db $11, 16 - 1, $02, 1 - 1 ; $2b slide up left - db $12, 16 - 1, $02, 1 - 1 ; $2c slide up right - - db $0b, 16 - 1, $08, (1 << 4) | 8 - 1 ; $2d hop down - db $0c, 16 - 1, $08, (1 << 4) | 8 - 1 ; $2e hop up - db $0d, 16 - 1, $08, (1 << 4) | 8 - 1 ; $2f hop left - db $0e, 16 - 1, $08, (1 << 4) | 8 - 1 ; $30 hop right - db $0f, 16 - 1, $08, (1 << 4) | 8 - 1 ; $31 hop down left - db $10, 16 - 1, $08, (1 << 4) | 8 - 1 ; $32 hop down right - db $11, 16 - 1, $08, (1 << 4) | 8 - 1 ; $33 hop up left - db $12, 16 - 1, $08, (1 << 4) | 8 - 1 ; $34 hop up right - - db $13, 16 - 1, $06, 1 - 1 ; $35 look down - db $14, 16 - 1, $06, 1 - 1 ; $36 look up - db $15, 16 - 1, $06, 1 - 1 ; $37 look left - db $16, 16 - 1, $06, 1 - 1 ; $38 look right - - db $02, $80, $04, 1 - 1 ; $39 - db $02, $80, $05, 1 - 1 ; $3a - db $02, $80, $03, $80 ; $3b - db $02, $80, $07, $80 ; $3c - db $02, $80, $09, $80 ; $3d - db $02, $80, $06, 1 - 1 ; $3e - -PikaMovementFunc1Jumptable: - dw PikaMovementFunc1_EndCommand_ ; 00 - dw PikaMovementFunc1_LoadPikachuCurrentPosition ; 01 - dw PikaMovementFunc1_DelayFrames ; 02 - dw PikaMovementFunc1_WalkInCurrentFacingDirection ; 03 - dw PikaMovementFunc1_WalkInOppositeFacingDirection ; 04 - dw PikaMovementFunc1_StepTurningCounterclockwise ; 05 - dw PikaMovementFunc1_StepTurningClockwise ; 06 - dw PikaMovementFunc1_StepForwardLeft ; 07 - dw PikaMovementFunc1_StepForwardRight ; 08 - dw PikaMovementFunc1_StepBackwardLeft ; 09 - dw PikaMovementFunc1_StepBackwardRight ; 0a - dw PikaMovementFunc1_MoveDown ; 0b - dw PikaMovementFunc1_MoveUp ; 0c - dw PikaMovementFunc1_MoveLeft ; 0d - dw PikaMovementFunc1_MoveRight ; 0e - dw PikaMovementFunc1_MoveDownLeft ; 0f - dw PikaMovementFunc1_MoveDownRight ; 10 - dw PikaMovementFunc1_MoveUpLeft ; 11 - dw PikaMovementFunc1_MoveUpRight ; 12 - dw PikaMovementFunc1_LookDown ; 13 - dw PikaMovementFunc1_LookUp ; 14 - dw PikaMovementFunc1_LookLeft ; 15 - dw PikaMovementFunc1_LookRight ; 16 - dw PikaMovementFunc1_EndCommand_ ; 17 - -PikaMovementFunc1_EndCommand: - ld a, [wPikachuMovementFlags] - set 7, a - ld [wPikachuMovementFlags], a - ret - -PikaMovementFunc1_EndCommand_: - call PikaMovementFunc1_EndCommand - ret - -PikaMovementFunc1_LoadPikachuCurrentPosition: - ld hl, wSpritePlayerStateData1YPixels - wSpritePlayerStateData1 - add hl, bc - ld a, [hl] - ld [wPikaSpriteY], a - ld hl, wSpritePlayerStateData1XPixels - wSpritePlayerStateData1 - add hl, bc - ld a, [hl] - ld [wPikaSpriteX], a - xor a - ld [wPikachuMovementYOffset], a - ld [wPikachuMovementXOffset], a - call PikaMovementFunc1_EndCommand - ret - -PikaMovementFunc1_DelayFrames: - call CheckPikachuStepTimer1 - ret nz - call PikaMovementFunc1_EndCommand - ret - -PikaMovementFunc1_WalkInCurrentFacingDirection: - call GetPikachuFacing - jr PikaMovementFunc1_ApplyStepVector - -PikaMovementFunc1_WalkInOppositeFacingDirection: - call GetPikachuFacing - xor %100 - jr PikaMovementFunc1_ApplyStepVector - -PikaMovementFunc1_StepTurningCounterclockwise: - call GetPikachuFacing - ld hl, .Data - call PikaMovementFunc1_GetNextFacing - jr PikaMovementFunc1_ApplyStepVector - -.Data: - db SPRITE_FACING_DOWN, PIKASTEPDIR_RIGHT << 2 - db SPRITE_FACING_UP, PIKASTEPDIR_LEFT << 2 - db SPRITE_FACING_LEFT, PIKASTEPDIR_DOWN << 2 - db SPRITE_FACING_RIGHT, PIKASTEPDIR_UP << 2 - db $ff - -PikaMovementFunc1_StepTurningClockwise: - call GetPikachuFacing - ld hl, .Data - call PikaMovementFunc1_GetNextFacing - jr PikaMovementFunc1_ApplyStepVector - -.Data: - db SPRITE_FACING_DOWN, PIKASTEPDIR_LEFT << 2 - db SPRITE_FACING_UP, PIKASTEPDIR_RIGHT << 2 - db SPRITE_FACING_LEFT, PIKASTEPDIR_UP << 2 - db SPRITE_FACING_RIGHT, PIKASTEPDIR_DOWN << 2 - db $ff - -PikaMovementFunc1_StepForwardLeft: - call GetPikachuFacing - ld hl, .Data - call PikaMovementFunc1_GetNextFacing - jr PikaMovementFunc1_ApplyStepVector - -.Data: - db SPRITE_FACING_DOWN, PIKASTEPDIR_DOWN_RIGHT << 2 - db SPRITE_FACING_UP, PIKASTEPDIR_UP_LEFT << 2 - db SPRITE_FACING_LEFT, PIKASTEPDIR_DOWN_LEFT << 2 - db SPRITE_FACING_RIGHT, PIKASTEPDIR_UP_RIGHT << 2 - -PikaMovementFunc1_StepForwardRight: - call GetPikachuFacing - ld hl, .Data - call PikaMovementFunc1_GetNextFacing - jr PikaMovementFunc1_ApplyStepVector - -.Data: - db SPRITE_FACING_DOWN, PIKASTEPDIR_DOWN_LEFT << 2 - db SPRITE_FACING_UP, PIKASTEPDIR_UP_RIGHT << 2 - db SPRITE_FACING_LEFT, PIKASTEPDIR_UP_LEFT << 2 - db SPRITE_FACING_RIGHT, PIKASTEPDIR_DOWN_RIGHT << 2 - -PikaMovementFunc1_StepBackwardLeft: - call GetPikachuFacing - ld hl, .Data - call PikaMovementFunc1_GetNextFacing - jr PikaMovementFunc1_ApplyStepVector - -.Data: - db SPRITE_FACING_DOWN, PIKASTEPDIR_UP_RIGHT << 2 - db SPRITE_FACING_UP, PIKASTEPDIR_DOWN_LEFT << 2 - db SPRITE_FACING_LEFT, PIKASTEPDIR_DOWN_RIGHT << 2 - db SPRITE_FACING_RIGHT, PIKASTEPDIR_UP_LEFT << 2 - -PikaMovementFunc1_StepBackwardRight: - call GetPikachuFacing - ld hl, .Data - call PikaMovementFunc1_GetNextFacing - jr PikaMovementFunc1_ApplyStepVector - -.Data: - db SPRITE_FACING_DOWN, PIKASTEPDIR_UP_LEFT << 2 - db SPRITE_FACING_UP, PIKASTEPDIR_DOWN_RIGHT << 2 - db SPRITE_FACING_LEFT, PIKASTEPDIR_UP_RIGHT << 2 - db SPRITE_FACING_RIGHT, PIKASTEPDIR_DOWN_LEFT << 2 - -PikaMovementFunc1_ApplyStepVector: - rrca - rrca - and $7 - ld e, a - call GetPikachuStepVectorMagnitude - ld d, a - call UpdatePikachuPosition - call CheckPikachuStepTimer1 - ret nz - call PikaMovementFunc1_EndCommand - ret - -PikaMovementFunc1_GetNextFacing: - push de - ld d, a -.loop - ld a, [hli] - cp d - jr z, .found - inc hl - cp $ff - jr nz, .loop - pop de - ret - -.found - ld a, [hl] - pop de - scf - ret - -PikaMovementFunc1_MoveDown: - ld a, PIKASTEPDIR_DOWN - jr PikaMovementFunc1_ApplyFacingAndMove - -PikaMovementFunc1_MoveUp: - ld a, PIKASTEPDIR_UP - jr PikaMovementFunc1_ApplyFacingAndMove - -PikaMovementFunc1_MoveLeft: - ld a, PIKASTEPDIR_LEFT - jr PikaMovementFunc1_ApplyFacingAndMove - -PikaMovementFunc1_MoveRight: - ld a, PIKASTEPDIR_RIGHT - jr PikaMovementFunc1_ApplyFacingAndMove - -PikaMovementFunc1_MoveDownLeft: - ld e, PIKASTEPDIR_DOWN_LEFT - jr PikaMovementFunc1_MoveDiagonally - -PikaMovementFunc1_MoveDownRight: - ld e, PIKASTEPDIR_DOWN_RIGHT - jr PikaMovementFunc1_MoveDiagonally - -PikaMovementFunc1_MoveUpLeft: - ld e, PIKASTEPDIR_UP_LEFT - jr PikaMovementFunc1_MoveDiagonally - -PikaMovementFunc1_MoveUpRight: - ld e, PIKASTEPDIR_UP_RIGHT - jr PikaMovementFunc1_MoveDiagonally - -PikaMovementFunc1_ApplyFacingAndMove: - ld e, a - call SetPikachuFacing -PikaMovementFunc1_MoveDiagonally: - call GetPikachuStepVectorMagnitude - ld d, a - push de - call UpdatePikachuPosition - pop de - call CheckPikachuStepTimer1 - ret nz - ld a, e - call ApplyPikachuStepVector - call PikaMovementFunc1_EndCommand - ret - -PikaMovementFunc1_LookDown: - ld a, PIKASTEPDIR_DOWN - jr PikaMovementFunc1_ApplyFacing - -PikaMovementFunc1_LookUp: - ld a, PIKASTEPDIR_UP - jr PikaMovementFunc1_ApplyFacing - -PikaMovementFunc1_LookLeft: - ld a, PIKASTEPDIR_LEFT - jr PikaMovementFunc1_ApplyFacing - -PikaMovementFunc1_LookRight: - ld a, PIKASTEPDIR_RIGHT - jr PikaMovementFunc1_ApplyFacing - -PikaMovementFunc1_ApplyFacing: - call SetPikachuFacing - call PikaMovementFunc1_EndCommand - ret - -UpdatePikachuPosition: - push de - ld d, 0 - ld hl, .Jumptable - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - pop de - ld a, d - jp hl - -.Jumptable: - dw .Down - dw .Up - dw .Left - dw .Right - dw .DownLeft - dw .DownRight - dw .UpLeft - dw .UpRight - -.Down: - ld d, 0 - ld e, a - jr .ApplyVector - -.Up: - ld d, 0 - cpl - inc a - ld e, a - jr .ApplyVector - -.Left: - cpl - inc a - ld d, a - ld e, 0 - jr .ApplyVector - -.Right: - ld d, a - ld e, 0 - jr .ApplyVector - -.DownLeft: - ld e, a - cpl - inc a - ld d, a - jr .ApplyVector - -.DownRight: - ld e, a - ld d, a - jr .ApplyVector - -.UpLeft: - cpl - inc a - ld e, a - ld d, a - jr .ApplyVector - -.UpRight: - ld d, a - cpl - inc a - ld e, a - jr .ApplyVector - -.ApplyVector: - ld a, [wPikaSpriteX] - add d - ld [wPikaSpriteX], a - ld a, [wPikaSpriteY] - add e - ld [wPikaSpriteY], a - ret - -PikaMovementFunc2Jumptable: - dw PikaMovementFunc2_ResetFrameCounterAndFaceCurrent ; 0 - dw PikaMovementFunc2_UpdateSpriteImageIdxWithPreviousImageIdxDirection ; 1 - dw PikaMovementFunc2_UpdateSpriteImageIdxWithFacing ; 2 - dw PikaMovementFunc2_TurnParameter ; 3 - dw PikaMovementFunc2_TurnClockwise ; 4 - dw PikaMovementFunc2_TurnCounterClockwise ; 5 - dw PikaMovementFunc2_CopySpriteImageIdxDirectionToSpriteImageIdx ; 6 - dw PikaMovementFunc2_UpdateJumpWithPreviousImageIdxDirection ; 7 - dw PikaMovementFunc2_UpdateJumpWithFacing ; 8 - dw PikaMovementFunc2_CopyFacingToJump ; 9 - dw PikaMovementFunc2_nop ; 10 - -PikaMovement_SetSpawnShadow: - ld hl, wPikachuMovementFlags - set 6, [hl] - ret - -PikaMovementFunc2_ResetFrameCounterAndFaceCurrent: - ld hl, wSpritePlayerStateData1IntraAnimFrameCounter - wSpritePlayerStateData1 - add hl, bc - xor a - ld [hli], a - ld [hl], a - call PikaMovementFunc2_GetImageBaseOffset - ld d, a - call GetPikachuFacing - or d - ld [wCurPikaMovementSpriteImageIdx], a - ret - -PikaMovementFunc2_nop: - ret - -PikaMovementFunc2_CopySpriteImageIdxDirectionToSpriteImageIdx: - call PikaMovementFunc2_GetImageBaseOffset - ld d, a - call PikaMovementFunc2_GetSpriteImageIdxDirection - or d - ld [wCurPikaMovementSpriteImageIdx], a - ret - -PikaMovementFunc2_UpdateSpriteImageIdxWithFacing: - call PikaMovementFunc2_GetImageBaseOffset - ld d, a - call GetPikachuFacing - or d - ld d, a - jr PikaMovementFunc2_UpdateSpriteImageIdx - -PikaMovementFunc2_UpdateSpriteImageIdxWithPreviousImageIdxDirection: - call PikaMovementFunc2_GetImageBaseOffset - ld d, a - call PikaMovementFunc2_GetSpriteImageIdxDirection - or d - ld d, a -PikaMovementFunc2_UpdateSpriteImageIdx: - ld hl, wSpritePlayerStateData1AnimFrameCounter - wSpritePlayerStateData1 - add hl, bc - call CheckPikachuStepTimer2 ; does not preserve hl - jr nz, .skip - inc [hl] -.skip - ld a, [hl] - rrca - rrca - and 3 - or d - ld [wCurPikaMovementSpriteImageIdx], a - ret - -PikaMovementFunc2_UpdateJumpWithFacing: - call GetPikachuFacing - ld d, a - jr PikaMovementFunc2_UpdateJump - -PikaMovementFunc2_UpdateJumpWithPreviousImageIdxDirection: - call PikaMovementFunc2_GetSpriteImageIdxDirection - ld d, a -PikaMovementFunc2_UpdateJump: - call PikaMovementFunc2_GetImageBaseOffset - or d - ld d, a - call PikaMovementFunc2_Timer - or d - ld [wCurPikaMovementSpriteImageIdx], a - call PikaMovementFunc_Sine - ld [wPikachuMovementYOffset], a - and a - ret z - call PikaMovement_SetSpawnShadow - ret - -PikaMovementFunc2_CopyFacingToJump: - call GetPikachuFacing - ld d, a - call PikaMovementFunc2_GetImageBaseOffset - or d - ld [wCurPikaMovementSpriteImageIdx], a - call PikaMovementFunc_Sine - ld [wPikachuMovementYOffset], a - ret - -PikaMovementFunc2_TurnParameter: - ld a, [wCurPikaMovementParam2] - and $40 - cp $40 - jr z, PikaMovementFunc2_TurnClockwise - jr PikaMovementFunc2_TurnCounterClockwise - -PikaMovementFunc2_TurnClockwise: - call PikaMovementFunc2_GetSpriteImageIdxDirection - ld d, a - call CheckPikachuStepTimer2 - jr nz, .skip - ld hl, Data_fd731 -.loop - ld a, [hli] - cp d - jr nz, .loop - ld d, [hl] -.skip - call PikaMovementFunc2_GetImageBaseOffset - or d - ld [wCurPikaMovementSpriteImageIdx], a - ret - -PikaMovementFunc2_TurnCounterClockwise: - call PikaMovementFunc2_GetSpriteImageIdxDirection - ld d, a - call CheckPikachuStepTimer2 - jr nz, .skip - ld hl, Data_fd731End -.loop - ld a, [hld] - cp d - jr nz, .loop - ld d, [hl] -.skip - call PikaMovementFunc2_GetImageBaseOffset - or d - ld [wCurPikaMovementSpriteImageIdx], a - ret - -Data_fd731: - db SPRITE_FACING_DOWN - db SPRITE_FACING_LEFT - db SPRITE_FACING_UP - db SPRITE_FACING_RIGHT - db SPRITE_FACING_DOWN -Data_fd731End: - -PikaMovementFunc2_Timer: - push hl - ld hl, wSpritePlayerStateData1IntraAnimFrameCounter - wSpritePlayerStateData1 - add hl, bc - ld a, [hl] - inc a - and $3 - ld [hli], a - jr nz, .load_pop - ld a, [hl] - inc a - and $3 - ld [hl], a -.load_pop - ld a, [hl] - pop hl - ret - -PikaMovementFunc2_GetImageBaseOffset: - push hl - ld hl, wSpritePlayerStateData2ImageBaseOffset - wSpritePlayerStateData1 - add hl, bc - ld a, [hl] - dec a - swap a - pop hl - ret - -PikaMovementFunc2_GetSpriteImageIdxDirection: - push hl - ld hl, wSpritePlayerStateData1ImageIndex - wSpritePlayerStateData1 - add hl, bc - ld a, [hl] - and $c - pop hl - ret - -GetPikachuFacing: - push hl - ld hl, wSpritePlayerStateData1FacingDirection - wSpritePlayerStateData1 - add hl, bc - ld a, [hl] - and $c - pop hl - ret - -SetPikachuFacing: - push hl - ld hl, wSpritePlayerStateData1FacingDirection - wSpritePlayerStateData1 - add hl, bc - add a - add a - and $c - ld [hl], a - pop hl - ret - -CheckPikachuStepTimer1: - ld hl, wPikachuStepTimer - inc [hl] - ld a, [wCurPikaMovementParam1] - and $1f - inc a - cp [hl] - ret nz - ld [hl], 0 - ret - -GetPikachuStepVectorMagnitude: - ; *XX***** - ld a, [wCurPikaMovementParam1] - swap a - rrca - and $3 - inc a - ret - -CheckPikachuStepTimer2: - ld hl, wPikachuStepSubtimer - inc [hl] - ld a, [wCurPikaMovementParam2] - and $f - inc a - cp [hl] - ret nz - ld [hl], 0 - ret - -PikaMovementFunc_Sine: - call .GetArgument - ld a, [wPikachuStepSubtimer] - add e - ld [wPikachuStepSubtimer], a - add $20 - ld e, a - push hl - push bc - call Sine_e - pop bc - pop hl - ret - -.GetArgument: - ld a, [wCurPikaMovementParam2] - and $f - inc a - ld d, a - ld a, [wCurPikaMovementParam2] - swap a - and $7 - ld e, a - ld a, 1 - jr z, .okay -.loop - add a - dec e - jr nz, .loop -.okay - ld e, a - ret - -ApplyPikachuStepVector: - push bc - ld c, a - ld b, 0 - ld hl, .StepVectors - add hl, bc - add hl, bc - ld d, [hl] - inc hl - ld e, [hl] - pop bc - ld hl, wSpritePlayerStateData2MapY - wSpritePlayerStateData1 - add hl, bc - ld a, [hl] - add e - ld [hli], a - ld a, [hl] - add d - ld [hl], a - ret - -.StepVectors: - db 0, 1 - db 0, -1 - db -1, 0 - db 1, 0 - db -1, 1 - db 1, 1 - db -1, -1 - db 1, -1 - -LoadPikachuShadowOAMData: - push bc - push de - push hl - - ld bc, wOAMBuffer + 4 * 36 - ld a, [wPikaSpriteY] - ld e, a - ld a, [wPikaSpriteX] - ld d, a - ld hl, .OAMData - call .LoadOAMData - - pop hl - pop de - pop bc - ret - -.OAMData: - db 2 - db $0c, $00, $ff, 0 - db $0c, $08, $ff, 1 << OAM_X_FLIP - -.LoadOAMData: - ld a, e - add $10 - ld e, a - ld a, d - add $8 - ld d, a - ld a, [hli] -.loop - push af - ld a, [hli] - add e - ld [bc], a - inc bc - ld a, [hli] - add d - ld [bc], a - inc bc - ld a, [hli] - ld [bc], a - inc bc - ld a, [hli] - ld [bc], a - inc bc - pop af - dec a - jr nz, .loop - ret - -LoadPikachuShadowIntoVRAM:: - ld hl, vNPCSprites2 + $7f * $10 - ld de, LedgeHoppingShadowGFX_3F - lb bc, BANK(LedgeHoppingShadowGFX_3F), (LedgeHoppingShadowGFX_3FEnd - LedgeHoppingShadowGFX_3F) / 8 - jp CopyVideoDataDoubleAlternate - -LedgeHoppingShadowGFX_3F: -INCBIN "gfx/overworld/shadow.1bpp" -LedgeHoppingShadowGFX_3FEnd: - -LoadPikachuBallIconIntoVRAM: - ld hl, vNPCSprites2 + $7e * $10 - ld de, GFX_fd86b - lb bc, BANK(GFX_fd86b), 1 - jp CopyVideoDataDoubleAlternate - -Func_fd851: - ld hl, vNPCSprites + $c * $10 - ld a, 3 -.loop - push af - push hl - ld de, GFX_fd86b - lb bc, BANK(GFX_fd86b), 4 - call CopyVideoDataAlternate - pop hl - ld de, 4 * $10 - add hl, de - pop af - dec a - jr nz, .loop - ret - -GFX_fd86b: -INCBIN "gfx/unknown_fd86b.2bpp" - -LoadPikachuSpriteIntoVRAM: - ld de, PikachuSprite - lb bc, BANK(PikachuSprite), (SandshrewSprite - PikachuSprite) / 32 - ld hl, vNPCSprites + $c * $10 - push bc - call CopyVideoDataAlternate - ld de, PikachuSprite + $c * $10 - ld hl, vNPCSprites2 + $c * $10 - ldh a, [hFFFC] - and a - jr z, .load - ld de, PikachuSprite + $c * $10 - ld hl, vNPCSprites2 + $4c * $10 -.load - pop bc - call CopyVideoDataAlternate - call LoadPikachuShadowIntoVRAM - call LoadPikachuBallIconIntoVRAM - ret - -PikachuPewterPokecenterCheck: - ld a, [wCurMap] - cp PEWTER_POKECENTER - ret nz - call EnablePikachuFollowingPlayer - call StarterPikachuEmotionCommand_turnawayfromplayer - ret - -PikachuFanClubCheck: - ld a, [wCurMap] - cp POKEMON_FAN_CLUB - ret nz - call EnablePikachuFollowingPlayer - call StarterPikachuEmotionCommand_turnawayfromplayer - ret - -PikachuBillsHouseCheck: - ld a, [wCurMap] - cp BILLS_HOUSE - ret nz - call EnablePikachuFollowingPlayer - ret - -Pikachu_LoadCurrentMapViewUpdateSpritesAndDelay3: - call LoadCurrentMapView - call UpdateSprites - call Delay3 - ret - -Cosine_e: ; cosine? - ld a, e - add $10 - jr asm_fd908 - -Sine_e: ; sine? - ld a, e -asm_fd908: - and $3f - cp $20 - jr nc, .asm_fd913 - call GetSine - ld a, h - ret - -.asm_fd913 - and $1f - call GetSine - ld a, h - cpl - inc a - ret - -GetSine: - ld e, a - ld a, d - ld d, 0 - ld hl, SineWave_3f - add hl, de - add hl, de - ld e, [hl] - inc hl - ld d, [hl] - ld hl, 0 -.asm_fd92b - srl a - jr nc, .asm_fd930 - add hl, de -.asm_fd930 - sla e - rl d - and a - jr nz, .asm_fd92b - ret - -SineWave_3f: - sine_wave $100 |