mirror of
https://frontier.innolan.net/github/AmigaExamples.git
synced 2026-09-12 02:31:47 +00:00
arrow auto move working
This commit is contained in:
+1
-2
@@ -14,8 +14,7 @@ PLAYER_TOP_Y equ (PLAYER_BOTTOM_Y-(7*16))
|
||||
PLAYER_JUMP_PIXELS equ 8 ; PLAYER_JUMP_PIXELS * PLAYER_MOVE_PIXELS must equal 16
|
||||
PLAYER_MOVE_PIXELS equ 2
|
||||
PLAYER_PAUSE_PIXELS equ 12 ; number of pixel waits between jumps
|
||||
PLAYER_JUMP_SHIFT_CONVERT equ 3 ; x = x / PLAYER_JUMP_PIXELS
|
||||
PLAYER_CHECK_MISS_PIXELS equ 10
|
||||
PLAYER_CHECK_MISS_PIXELS equ 12
|
||||
PLAYER_SPRITE_VERTICAL_BYTES equ ((16*4)+12)
|
||||
|
||||
PATHWAY_FADE_TIMER_COUNT equ 100
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
</layer>
|
||||
<layer name="items" width="100" height="8">
|
||||
<data encoding="base64" compression="zlib">
|
||||
eJxjYBgFgxk4MRJW40iEGlLNRFbnRaL5ww2AwhdfGDszoqolx3xnEvR5D+H4IDbt4QOwMCYmrJHjzgWHeh8c4rjUE6t/JIFQYBi4QsPaF094YMtLpOQZVyLU4rMfG6BGmhwoAHI7MgYBQuEZhiX8YXrcyAgLQnr8aBy+pMTfYIlrUusJdyqq9x8kYTAKRgEADZMNGQ==
|
||||
eJztlVsKgCAQRXVpPSzoCYXtfyklJEyRzihGVh7ox65TnCvIWCJmco5nMkJGMXH6TJhriPmvovzaHBf8mPWZD2fMyIz2xX1Qz54N7ZjiGnZXGvKdYd2Up+7/E3JzIHbXvcUH7EM69KgRhKzt+1eEOJNPof4dPgrM53J6DzupPFxge4ab/br0F0vXrvdEHTA/RuIgkVgBbswOFg==
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
||||
|
||||
@@ -66,4 +66,37 @@ ItemControl: macro
|
||||
dc.w \3
|
||||
.spriteAddress:
|
||||
dc.l \2
|
||||
endm
|
||||
|
||||
|
||||
PlayerMoveRight: macro
|
||||
move.w playerJumpPixels,d1
|
||||
add.w playerPausePixels,d1
|
||||
move.w d1,spriteR
|
||||
move.w #SPRITE_MOVE_RIGHT,spriteLastMove
|
||||
PlaySound Jump
|
||||
endm
|
||||
|
||||
PlayerMoveUp: macro
|
||||
move.w playerJumpPixels,d1
|
||||
add.w playerPausePixels,d1
|
||||
move.w d1,spriteU
|
||||
move.w #SPRITE_MOVE_UP,spriteLastMove
|
||||
PlaySound Jump
|
||||
endm
|
||||
|
||||
PlayerMoveDown: macro
|
||||
move.w playerJumpPixels,d1
|
||||
add.w playerPausePixels,d1
|
||||
move.w d1,spriteD
|
||||
move.w #SPRITE_MOVE_DOWN,spriteLastMove
|
||||
PlaySound Jump
|
||||
endm
|
||||
|
||||
PlayerMoveLeft: macro
|
||||
move.w playerJumpPixels,d1
|
||||
add.w playerPausePixels,d1
|
||||
move.w d1,spriteL
|
||||
move.w #SPRITE_MOVE_LEFT,spriteLastMove
|
||||
PlaySound Jump
|
||||
endm
|
||||
+83
-65
@@ -28,7 +28,7 @@ InitialisePlayer:
|
||||
add.l #6*PLAYER_SPRITE_VERTICAL_BYTES,d0
|
||||
move.l d0,currentSprite
|
||||
|
||||
;; move.w #0,spriteAutoMoveEnabled
|
||||
bsr SpriteDisableAuto
|
||||
move.w #0,spritePlayerFallingAnimation
|
||||
move.w #PLAYER_INITIAL_X,spriteX
|
||||
move.w #PLAYER_INITIAL_Y,spriteY
|
||||
@@ -70,10 +70,12 @@ UpdatePlayerFallingAnimation:
|
||||
UpdatePlayer:
|
||||
move.l playerSpriteConfig,a0
|
||||
move.l PLAYER_SPRITE_DATA(a0),d0
|
||||
move.w playerPausePixels,d2
|
||||
;; right
|
||||
cmp.w #PLAYER_PAUSE_PIXELS,spriteR
|
||||
ble .skipRight
|
||||
add.w #PLAYER_MOVE_PIXELS,spriteX
|
||||
cmp.w spriteR,d2
|
||||
bge .skipRight
|
||||
move.w playerMovePixels,d1
|
||||
add.w d1,spriteX
|
||||
add.l #7*PLAYER_SPRITE_VERTICAL_BYTES,d0
|
||||
move.l d0,currentSprite
|
||||
|
||||
@@ -81,58 +83,61 @@ UpdatePlayer:
|
||||
cmp.w #0,spriteR
|
||||
beq .notRight
|
||||
sub.w #1,spriteR
|
||||
cmp.w #PLAYER_PAUSE_PIXELS,spriteR
|
||||
bge .notRight
|
||||
cmp.w spriteR,d2
|
||||
ble .notRight
|
||||
add.l #6*PLAYER_SPRITE_VERTICAL_BYTES,d0
|
||||
move.l d0,currentSprite
|
||||
.notRight:
|
||||
;; up
|
||||
cmp.w #PLAYER_PAUSE_PIXELS,spriteU
|
||||
ble .skipUp
|
||||
cmp.w spriteU,d2
|
||||
bge .skipUp
|
||||
cmp.w #PLAYER_TOP_Y,spriteY
|
||||
ble .skipUp
|
||||
sub.w #PLAYER_MOVE_PIXELS,spriteY
|
||||
sub.w #PLAYER_MOVE_PIXELS,spriteYEnd
|
||||
move.w playerMovePixels,d1
|
||||
sub.w d1,spriteY
|
||||
sub.w d1,spriteYEnd
|
||||
add.l #1*PLAYER_SPRITE_VERTICAL_BYTES,d0
|
||||
move.l d0,currentSprite
|
||||
.skipUp:
|
||||
cmp.w #0,spriteU
|
||||
beq .notUp
|
||||
sub.w #1,spriteU
|
||||
cmp.w #PLAYER_PAUSE_PIXELS,spriteU
|
||||
bge .notUp
|
||||
cmp.w spriteU,d2
|
||||
ble .notUp
|
||||
move.l d0,currentSprite
|
||||
.notUp:
|
||||
;; down
|
||||
cmp.w #PLAYER_PAUSE_PIXELS,spriteD
|
||||
ble .skipDown
|
||||
cmp.w spriteD,d2
|
||||
bge .skipDown
|
||||
cmp.w #PLAYER_BOTTOM_Y,spriteY
|
||||
bge .skipDown
|
||||
add.w #PLAYER_MOVE_PIXELS,spriteY
|
||||
add.w #PLAYER_MOVE_PIXELS,spriteYEnd
|
||||
move.w playerMovePixels,d1
|
||||
add.w d1,spriteY
|
||||
add.w d1,spriteYEnd
|
||||
add.l #3*PLAYER_SPRITE_VERTICAL_BYTES,d0
|
||||
move.l d0,currentSprite
|
||||
.skipDown:
|
||||
cmp.w #0,spriteD
|
||||
beq .notDown
|
||||
sub.w #1,spriteD
|
||||
cmp.w #PLAYER_PAUSE_PIXELS,spriteD
|
||||
bge .notDown
|
||||
cmp.w spriteD,d2
|
||||
ble .notDown
|
||||
add.l #2*PLAYER_SPRITE_VERTICAL_BYTES,d0
|
||||
move.l d0,currentSprite
|
||||
.notDown:
|
||||
;; left
|
||||
cmp.w #PLAYER_PAUSE_PIXELS,spriteL
|
||||
ble .skipLeft
|
||||
sub.w #PLAYER_MOVE_PIXELS,spriteX
|
||||
cmp.w spriteL,d2
|
||||
bge .skipLeft
|
||||
move.w playerMovePixels,d1
|
||||
sub.w d1,spriteX
|
||||
add.l #5*PLAYER_SPRITE_VERTICAL_BYTES,d0
|
||||
move.l d0,currentSprite
|
||||
.skipLeft
|
||||
cmp.w #0,spriteL
|
||||
beq .notLeft
|
||||
sub.w #1,spriteL
|
||||
cmp.w #PLAYER_PAUSE_PIXELS,spriteL
|
||||
bge .notLeft
|
||||
cmp.w spriteL,d2
|
||||
ble .notLeft
|
||||
add.l #4*PLAYER_SPRITE_VERTICAL_BYTES,d0
|
||||
move.l d0,currentSprite
|
||||
.notLeft:
|
||||
@@ -159,6 +164,11 @@ ProcessJoystick:
|
||||
|
||||
cmp.w #0,spriteAutoMoveEnabled
|
||||
beq .autoMoveDisabled
|
||||
|
||||
move.w #4,playerPausePixels
|
||||
move.w #4,playerMissPixels
|
||||
|
||||
|
||||
bsr GetNextAutoMove
|
||||
cmp.w #1,d0
|
||||
beq .skip
|
||||
@@ -166,27 +176,19 @@ ProcessJoystick:
|
||||
.autoMoveDisabled:
|
||||
cmp.b #3,joystickpos
|
||||
bne .notRight
|
||||
move.w #PLAYER_JUMP_PIXELS+PLAYER_PAUSE_PIXELS,spriteR
|
||||
move.w #SPRITE_MOVE_RIGHT,spriteLastMove
|
||||
PlaySound Jump
|
||||
PlayerMoveRight
|
||||
.notRight:
|
||||
cmp.b #1,joystickpos
|
||||
bne .notUp
|
||||
move.w #PLAYER_JUMP_PIXELS+PLAYER_PAUSE_PIXELS,spriteU
|
||||
move.w #SPRITE_MOVE_UP,spriteLastMove
|
||||
PlaySound Jump
|
||||
PlayerMoveUp
|
||||
.notUp:
|
||||
cmp.b #5,joystickpos
|
||||
bne .notDown
|
||||
move.w #PLAYER_JUMP_PIXELS+PLAYER_PAUSE_PIXELS,spriteD
|
||||
move.w #SPRITE_MOVE_DOWN,spriteLastMove
|
||||
PlaySound Jump
|
||||
PlayerMoveDown
|
||||
.notDown:
|
||||
cmp.b #7,joystickpos
|
||||
bne .notLeft
|
||||
move.w #PLAYER_JUMP_PIXELS+PLAYER_PAUSE_PIXELS,spriteL
|
||||
move.w #SPRITE_MOVE_LEFT,spriteLastMove
|
||||
PlaySound Jump
|
||||
PlayerMoveLeft
|
||||
.notLeft:
|
||||
.skip:
|
||||
rts
|
||||
@@ -194,6 +196,14 @@ ProcessJoystick:
|
||||
SpriteEnableAuto:
|
||||
move.w #1,spriteAutoMoveEnabled
|
||||
rts
|
||||
|
||||
SpriteDisableAuto:
|
||||
move.w #0,spriteAutoMoveEnabled
|
||||
move.w #PLAYER_JUMP_PIXELS,playerJumpPixels
|
||||
move.w #PLAYER_MOVE_PIXELS,playerMovePixels
|
||||
move.w #PLAYER_PAUSE_PIXELS,playerPausePixels
|
||||
move.w #PLAYER_CHECK_MISS_PIXELS,playerMissPixels
|
||||
rts
|
||||
|
||||
SetupSpriteData:
|
||||
move.l currentSprite,a0
|
||||
@@ -254,14 +264,18 @@ CheckPlayerMiss:
|
||||
;; check if player has fallen off the left side of the play area
|
||||
cmpi.w #PLAYER_INITIAL_X-15,spriteX
|
||||
blt .doBigBang
|
||||
|
||||
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteR
|
||||
|
||||
move.w playerMissPixels,d1
|
||||
cmp.w spriteR,d1
|
||||
beq .check
|
||||
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteU
|
||||
beq .check
|
||||
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteD
|
||||
beq .check
|
||||
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteL
|
||||
move.w playerMissPixels,d1
|
||||
cmp.w spriteU,d1
|
||||
beq .check
|
||||
move.w playerMissPixels,d1
|
||||
cmp.w spriteD,d1
|
||||
beq .check
|
||||
move.w playerMissPixels,d1
|
||||
cmp.w spriteL,d1
|
||||
beq .check
|
||||
rts
|
||||
|
||||
@@ -405,31 +419,27 @@ GetNextAutoMove:
|
||||
bra .skip
|
||||
|
||||
.goRight:
|
||||
move.w #PLAYER_JUMP_PIXELS+PLAYER_PAUSE_PIXELS,spriteR
|
||||
move.w #SPRITE_MOVE_RIGHT,spriteLastMove
|
||||
PlayerMoveRight
|
||||
bra .done
|
||||
.goUp:
|
||||
move.w #PLAYER_JUMP_PIXELS+PLAYER_PAUSE_PIXELS,spriteU
|
||||
move.w #SPRITE_MOVE_UP,spriteLastMove
|
||||
PlayerMoveUp
|
||||
bra .done
|
||||
.goDown:
|
||||
move.w #PLAYER_JUMP_PIXELS+PLAYER_PAUSE_PIXELS,spriteD
|
||||
move.w #SPRITE_MOVE_DOWN,spriteLastMove
|
||||
PlayerMoveDown
|
||||
bra .done
|
||||
.goLeft:
|
||||
move.w #PLAYER_JUMP_PIXELS+PLAYER_PAUSE_PIXELS,spriteL
|
||||
move.w #SPRITE_MOVE_LEFT,spriteLastMove
|
||||
PlayerMoveLeft
|
||||
bra .done
|
||||
.done:
|
||||
PlaySound Jump
|
||||
move.w #1,d0
|
||||
rts
|
||||
.skip:
|
||||
move.w #0,spriteAutoMoveEnabled
|
||||
bsr SpriteDisableAuto
|
||||
move.w #0,d0
|
||||
rts
|
||||
|
||||
CheckDirection:
|
||||
move.w playerMissPixels,d1
|
||||
cmp.w #$7080,d0 ; dark horizontal
|
||||
beq .horizontal
|
||||
cmp.w #$708c,d0 ; light horizontal
|
||||
@@ -465,39 +475,39 @@ CheckDirection:
|
||||
jmp BigBang
|
||||
|
||||
.horizontal:
|
||||
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteR
|
||||
cmp.w spriteR,d1
|
||||
beq .ok
|
||||
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteL
|
||||
cmp.w spriteL,d1
|
||||
beq .ok
|
||||
jmp BigBang
|
||||
.vertical:
|
||||
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteU
|
||||
cmp.w spriteU,d1
|
||||
beq .ok
|
||||
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteD
|
||||
cmp.w spriteD,d1
|
||||
beq .ok
|
||||
jmp BigBang
|
||||
.topLeft:
|
||||
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteR
|
||||
cmp.w spriteR,d1
|
||||
beq .ok
|
||||
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteD
|
||||
cmp.w spriteD,d1
|
||||
beq .ok
|
||||
jmp BigBang
|
||||
.topRight:
|
||||
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteD
|
||||
cmp.w spriteD,d1
|
||||
beq .ok
|
||||
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteL
|
||||
cmp.w spriteL,d1
|
||||
beq .ok
|
||||
jmp BigBang
|
||||
.rightBottom:
|
||||
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteU
|
||||
cmp.w spriteU,d1
|
||||
beq .ok
|
||||
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteL
|
||||
cmp.w spriteL,d1
|
||||
beq .ok
|
||||
jmp BigBang
|
||||
.leftBottom:
|
||||
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteR
|
||||
cmp.w spriteR,d1
|
||||
beq .ok
|
||||
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteU
|
||||
cmp.w spriteU,d1
|
||||
beq .ok
|
||||
jmp BigBang
|
||||
.ok:
|
||||
@@ -564,4 +574,12 @@ spriteCurrentPathwayTile:
|
||||
spriteLastMove:
|
||||
dc.w 0
|
||||
spriteAutoMoveEnabled:
|
||||
dc.w 0
|
||||
dc.w 0
|
||||
playerMovePixels:
|
||||
dc.w PLAYER_MOVE_PIXELS
|
||||
playerJumpPixels:
|
||||
dc.w PLAYER_JUMP_PIXELS
|
||||
playerPausePixels
|
||||
dc.w PLAYER_PAUSE_PIXELS
|
||||
playerMissPixels
|
||||
dc.w PLAYER_CHECK_MISS_PIXELS
|
||||
Reference in New Issue
Block a user