A C64 Game - Step 86

posted in New Old Things
Published February 09, 2013
Advertisement

And something different for a change: Added road side stones to the story pages to make it look a bit neater.

Looks better in motion :)



It's actually pretty simple: We add a stone in front and one in the back. Store positions and update them every frame with different deltas.

Start with the position value variables:

MOVE_STONES 
          !byte 0
          
MOVE_STONE_POS_BACK 
          !byte 0
          
MOVE_STONE_POS_FRONT 
          !byte 0

...and the actual code.


STONE_BACK_DISTANCE = 20
STONE_FRONT_DISTANCE = 24 
          lda MOVE_STONES 
          bne + 
          jmp .NoStones
          
+ 

          ;background
          ldy #19 
          lda SCREEN_LINE_OFFSET_TABLE_LO,y 
          sta ZEROPAGE_POINTER_1 
          sta ZEROPAGE_POINTER_2 
          lda SCREEN_LINE_OFFSET_TABLE_HI,y 
          sta ZEROPAGE_POINTER_1 + 1 
          clc
          adc #( ( SCREEN_COLOR - SCREEN_CHAR ) >> 8 ) 
          sta ZEROPAGE_POINTER_2 + 1 
          ldy MOVE_STONE_POS_BACK
          
- 
          lda #32 
          sta (ZEROPAGE_POINTER_1),y 
          tya
          clc 
          adc #STONE_BACK_DISTANCE 
          tay
          cpy #39 
          bcc - 
          
          lda MOVE_STONE_POS_BACK 
          clc
          adc #1
          
- 
          cmp #STONE_BACK_DISTANCE 
          bcc + 
          sec 
          sbc #STONE_BACK_DISTANCE 
          jmp - 
          
+
          sta MOVE_STONE_POS_BACK 
          ldy MOVE_STONE_POS_BACK
          
-
          lda #149
          sta (ZEROPAGE_POINTER_1),y 
          lda #8 
          sta (ZEROPAGE_POINTER_2),y 
          tya
          clc
          adc #STONE_BACK_DISTANCE
          tay
          cpy
          #39
          bcc - 
          
          ;foreground
          ldy #22
          lda SCREEN_LINE_OFFSET_TABLE_LO,y
          sta ZEROPAGE_POINTER_1 
          sta ZEROPAGE_POINTER_2 
          lda SCREEN_LINE_OFFSET_TABLE_HI,y 
          sta ZEROPAGE_POINTER_1 + 1 
          clc
          adc #( ( SCREEN_COLOR - SCREEN_CHAR ) >> 8 ) 
          sta ZEROPAGE_POINTER_2 + 1 
          
          ldy MOVE_STONE_POS_FRONT
          
-
          lda #32
          sta (ZEROPAGE_POINTER_1),y 
          tya 
          clc
          adc #STONE_FRONT_DISTANCE 
          tay
          cpy #39
          bcc - 
          
          lda MOVE_STONE_POS_FRONT 
          clc
          adc #2
          
-
          cmp #STONE_FRONT_DISTANCE
          bcc +
          sec
          sbc #STONE_FRONT_DISTANCE 
          jmp -
          
+
          sta MOVE_STONE_POS_FRONT 
          ldy MOVE_STONE_POS_FRONT
          
-
          lda #148
          sta (ZEROPAGE_POINTER_1),y 
          lda #9
          sta (ZEROPAGE_POINTER_2),y
          tya 
          clc
          adc #STONE_FRONT_DISTANCE 
          tay
          cpy #39
          bcc - 
          
.NoStones 

step86.zip


Previous Step Next Step

Previous Entry A C64 Game - Step 85
0 likes 0 comments

Comments

Nobody has left a comment. You can be the first!
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement