arrow auto move working

This commit is contained in:
alpine9000
2016-05-07 10:49:32 +10:00
parent ce21d65776
commit 2af194e717
4 changed files with 118 additions and 68 deletions
+1 -2
View File
@@ -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
+1 -1
View File
@@ -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>
+33
View File
@@ -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
View File
@@ -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