Skip to main content
GameDev.net gamedev.net

PRO Tired of ads? Read GameDev.net ad-free and help keep the community independent with GameDev Pro — $3/month.

A C64 Game - Step 71

A C64 Game - Step 71

Endurion
Endurion
New Old Things · · 1 min read
3,302 3

Now a little polish for Sams dark powers, they were a tad too dark to see

Realistic colors are one thing, but if it hampers the gameplay they have to go. So dark powers are now white.
And animated.


Core routine is this, it redraws every char of the beam with one of four random characters:

;redraw force beam (randomly)
!zone RedrawForceBeam
RedrawForceBeam
          ldy SAM_FORCE_START_Y

          lda SCREEN_LINE_OFFSET_TABLE_LO,y
          sta ZEROPAGE_POINTER_1
          lda SCREEN_LINE_OFFSET_TABLE_HI,y
          sta ZEROPAGE_POINTER_1 + 1

          lda SAM_FORCE_LENGTH
          sta PARAM1

          ldy SAM_FORCE_START_X

-
          jsr GenerateRandomNumber
          and #$03clcadc #252
          sta (ZEROPAGE_POINTER_1),y

          iny
          dec PARAM1
          bne -
          rts

Most of the other changes include a call to the routine above, some are fixes for crashes that were introduces.


For one, when removing the beam item images could be clipped, a simple call to

jsr RedrawItems

fixes that.


And a little change to gameplay, if Sam moves (falls/jumps) while holding an enemy and moves too far, he loses grip on the enemy.
This is done via a little comparison between the beam start Y pos and the players pos. Too far, and the enemy is released.

          ;release beam when moving
          lda SAM_FORCE_START_Y
          clc
          adc #1
          cmp SPRITE_CHAR_POS_Y,x
          bne .SamNotFirePushed

          ;Sam needs to keep pressed
          jsr RedrawForceBeam

Have fun!

step71.zip

Previous Step Next Step


Discussion

Loading comments...