first pass at auto move

This commit is contained in:
alpine9000
2016-05-07 09:39:54 +10:00
parent a304a4b614
commit ce21d65776
4 changed files with 115 additions and 17 deletions
+9 -4
View File
@@ -1,16 +1,21 @@
MPANEL_COPPER_WAIT equ $9ad1 ; controls the vertical position of the message panel
SPRITE_MOVE_UP equ 1
SPRITE_MOVE_DOWN equ 2
SPRITE_MOVE_LEFT equ 3
SPRITE_MOVE_RIGHT equ 4
PLAYER_INITIAL_X equ $c0
PLAYER_LEFT_X equ $c0
PLAYER_INITIAL_Y equ $e4-32
PLAYER_BOTTOM_Y equ $e4+16
PLAYER_TOP_Y equ (PLAYER_BOTTOM_Y-(7*16))
PLAYER_JUMP_PIXELS equ 8
PLAYER_JUMP_SHIFT_CONVERT equ 3 ; x = x / PLAYER_JUMP_PIXELS
PLAYER_CHECK_MISS_PIXELS equ 10
PLAYER_PAUSE_PIXELS equ 12
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_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/pAFXaFj7AnEojjDBlpdIyTOuRKj1pVF5OBgByO3IGARILYOQ48SNjLAgpMePxuFLSvwNlrgmNY7cqajef5CEwSgYBQB8ggzC
eJxjYBgFgxk4MRJW40iEGlLNRFbnRaL5ww2AwhdfGDszoqolx3xnEvR5D+H4IDbt4QOwMCYmrJHjzgWHeh8c4rjUE6t/JIFQYBi4QsPaF094YMtLpOQZVyLU4rMfG6BGmhwoAHI7MgYBQuEZhiX8YXrcyAgLQnr8aBy+pMTfYIlrUusJdyqq9x8kYTAKRgEADZMNGQ==
</data>
</layer>
</map>
+11 -2
View File
@@ -54,13 +54,22 @@ DetectItemCollisions:
add.w #ITEM_SPRITE_Y_COLLISION_OFFSET,d2
cmp.w d2,d4
bne .skip
cmpi.w #ITEM_SPRITE_ARROW_INDEX,ITEM_SPRITE(a1)
bge .arrowCollision
.coinCollision:
bsr DeleteItemSprite
lea coinCounterText,a0
jsr IncrementCounter
bsr RenderCoinScore
PlaySound Chaching
rts
.arrowCollision:
bsr DeleteItemSprite
jsr SpriteEnableAuto
rts
.skip:
add.l #ITEM_STRUCT_SIZE,a1
dbra d1,.loop
+94 -10
View File
@@ -1,5 +1,6 @@
include "includes.i"
xdef GetNextAutoMove
xdef CheckPlayerMiss
xdef UpdatePlayer
xdef ProcessJoystick
@@ -11,6 +12,7 @@
xdef UpdatePlayerFallingAnimation
xdef InstallPlayerColorPalette
xdef SelectNextPlayerSprite
xdef SpriteEnableAuto
xdef spriteLagX
xdef spriteY
@@ -25,7 +27,8 @@ InitialisePlayer:
move.l PLAYER_SPRITE_DATA(a0),d0
add.l #6*PLAYER_SPRITE_VERTICAL_BYTES,d0
move.l d0,currentSprite
;; move.w #0,spriteAutoMoveEnabled
move.w #0,spritePlayerFallingAnimation
move.w #PLAYER_INITIAL_X,spriteX
move.w #PLAYER_INITIAL_Y,spriteY
@@ -153,31 +156,45 @@ ProcessJoystick:
bne .skip
cmp.w #0,spriteL
bne .skip
cmp.w #0,spriteAutoMoveEnabled
beq .autoMoveDisabled
bsr GetNextAutoMove
cmp.w #1,d0
beq .skip
.autoMoveDisabled:
cmp.b #3,joystickpos
bne .notRight
move.w #PLAYER_JUMP_PIXELS+PLAYER_PAUSE_PIXELS,spriteR
move.w #SPRITE_MOVE_RIGHT,spriteLastMove
PlaySound Jump
.notRight:
cmp.b #1,joystickpos
bne .notUp
move.w #PLAYER_JUMP_PIXELS+PLAYER_PAUSE_PIXELS,spriteU
move.w #SPRITE_MOVE_UP,spriteLastMove
PlaySound Jump
.notUp:
cmp.b #5,joystickpos
bne .notDown
move.w #PLAYER_JUMP_PIXELS+PLAYER_PAUSE_PIXELS,spriteD
move.w #SPRITE_MOVE_DOWN,spriteLastMove
PlaySound Jump
.notDown:
cmp.b #7,joystickpos
bne .notLeft
move.w #PLAYER_JUMP_PIXELS+PLAYER_PAUSE_PIXELS,spriteL
move.w #SPRITE_MOVE_LEFT,spriteLastMove
PlaySound Jump
.notLeft:
.skip:
rts
SpriteEnableAuto:
move.w #1,spriteAutoMoveEnabled
rts
SetupSpriteData:
move.l currentSprite,a0
move.w spriteLagX,d0
@@ -290,7 +307,6 @@ CheckPlayerMiss:
;; a2 now points at the pathway tile under the sprite
move.w (a2),d0
move.w spriteCurrentPathwayTile,spriteLastPathwayTile
move.w d0,spriteCurrentPathwayTile
bsr CheckDirection
@@ -344,6 +360,75 @@ CheckPlayerMiss:
rts
GetNextAutoMove:
move.w spriteCurrentPathwayTile,d0
lsr.w #4,d0
cmp.w #$708,d0
beq .horizontal
cmp.w #$690,d0
beq .topLeft
cmp.w #$5a0,d0
beq .leftBottom
cmp.w #$4b0,d0
beq .rightBottom
cmp.w #$528,d0
beq .topRight
cmp.w #$618,d0
beq .vertical
bra .skip
.horizontal:
cmp.w #SPRITE_MOVE_RIGHT,spriteLastMove
beq .goRight
bra .goLeft
.topLeft:
cmp.w #SPRITE_MOVE_RIGHT,spriteLastMove
beq .goUp
bra .goLeft
.leftBottom:
cmp.w #SPRITE_MOVE_RIGHT,spriteLastMove
beq .goDown
bra .goLeft
.topRight:
cmp.w #SPRITE_MOVE_DOWN,spriteLastMove
beq .goRight
bra .goUp
.rightBottom:
cmp.w #SPRITE_MOVE_UP,spriteLastMove
beq .goRight
bra .goDown
.vertical:
cmp.w #SPRITE_MOVE_UP,spriteLastMove
beq .goUp
bra .goDown
.default:
bra .skip
.goRight:
move.w #PLAYER_JUMP_PIXELS+PLAYER_PAUSE_PIXELS,spriteR
move.w #SPRITE_MOVE_RIGHT,spriteLastMove
bra .done
.goUp:
move.w #PLAYER_JUMP_PIXELS+PLAYER_PAUSE_PIXELS,spriteU
move.w #SPRITE_MOVE_UP,spriteLastMove
bra .done
.goDown:
move.w #PLAYER_JUMP_PIXELS+PLAYER_PAUSE_PIXELS,spriteD
move.w #SPRITE_MOVE_DOWN,spriteLastMove
bra .done
.goLeft:
move.w #PLAYER_JUMP_PIXELS+PLAYER_PAUSE_PIXELS,spriteL
move.w #SPRITE_MOVE_LEFT,spriteLastMove
bra .done
.done:
PlaySound Jump
move.w #1,d0
rts
.skip:
move.w #0,spriteAutoMoveEnabled
move.w #0,d0
rts
CheckDirection:
cmp.w #$7080,d0 ; dark horizontal
beq .horizontal
@@ -390,8 +475,7 @@ CheckDirection:
beq .ok
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteD
beq .ok
jmp BigBang
jmp BigBang
.topLeft:
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteR
beq .ok
@@ -415,8 +499,7 @@ CheckDirection:
beq .ok
cmp.w #PLAYER_CHECK_MISS_PIXELS,spriteU
beq .ok
jmp BigBang
jmp BigBang
.ok:
rts
@@ -424,7 +507,6 @@ CheckDirection:
SelectNextPlayerSprite:
cmp.l #tankPlayerSpriteConfig,playerSpriteConfig
beq .s1
;; move.l #robotPlayerSpriteConfig,playerSpriteConfig
add.l #3*4,playerSpriteConfig
bra .done
.s1:
@@ -479,5 +561,7 @@ spriteYEnd:
dc.w $f5
spriteCurrentPathwayTile:
dc.w 0
spriteLastPathwayTile:
spriteLastMove:
dc.w 0
spriteAutoMoveEnabled:
dc.w 0