• entries
    104
  • comments
    101
  • views
    255217

A C64 Game - Step 46

Sign in to follow this  
Endurion

1691 views

This time we'll add a chapter intro. The game is supposed to be separated in themed chapters with an intro for each. There's nothing much to it, we'll display a short text while the boys drive to their new target.

step46.png

For now we simply show the first page after starting the game:

          lda #0
          jsr ShowStory


Most of the code is spent to actually setup the impala and driver sprites. The text itself is displayed by our trusty DisplayText routine. Followed by the obligatory wait for button press and release.

;------------------------------------------------------------
;story pages
;------------------------------------------------------------
!zone ShowStory
ShowStory
          ;clear screen
          lda #32
          ldy #1
          jsr ClearScreen

          lda # sta ZEROPAGE_POINTER_1
          lda #>TEXT_STORY_1
          sta ZEROPAGE_POINTER_1 + 1
          lda #1
          sta PARAM1
          lda #1
          sta PARAM2
          jsr DisplayText

          lda #41
          sta PARAM1
          lda #20
          sta PARAM2
          lda #TYPE_IMPALA_1
          sta PARAM3
          jsr FindEmptySpriteSlot
          jsr SpawnObject
          lda #44
          sta PARAM1
          lda #TYPE_IMPALA_DRIVER
          sta PARAM3
          jsr FindEmptySpriteSlot
          jsr SpawnObject
          lda #44
          sta PARAM1
          lda #TYPE_IMPALA_2
          sta PARAM3
          jsr FindEmptySpriteSlot
          jsr SpawnObject
          lda #47
          sta PARAM1
          lda #TYPE_IMPALA_3
          sta PARAM3
          jsr FindEmptySpriteSlot
          jsr SpawnObject
          lda #48
          sta PARAM1
          lda #TYPE_IMPALA_DEBRIS
          sta PARAM3
          jsr FindEmptySpriteSlot
          jsr SpawnObject

          lda #12
          sta VIC_SPRITE_MULTICOLOR_1
          lda #11
          sta VIC_SPRITE_MULTICOLOR_2

          lda #0
          sta BUTTON_RELEASED

.StoryLoop
          jsr WaitFrame

          jsr ObjectControl
          ;ldx #0
          ;jsr MoveSpriteLeft
          ;inx
          ;jsr MoveSpriteLeft
          ;inx
          ;jsr MoveSpriteLeft
          ;inx
          ;jsr MoveSpriteLeft
          ;inx
          ;jsr MoveSpriteLeft

          lda #$10
          bit JOYSTICK_PORT_II
          bne .ButtonNotPressed

          ;button pushed
          lda BUTTON_RELEASED
          beq .StoryLoop

          lda #0
          sta VIC_SPRITE_ENABLE
          lda #11
          sta VIC_SPRITE_MULTICOLOR_1
          lda #1
          sta VIC_SPRITE_MULTICOLOR_2
          rts

.ButtonNotPressed
          lda #1
          sta BUTTON_RELEASED
          jmp .StoryLoop



The impala objects are simple game objects with the same behaviour. Move to the center, wait for a while and then move off the left side.

;------------------------------------------------------------
;drive left/pause/drive off left
;------------------------------------------------------------
!zone BehaviourImpala
BehaviourImpalaDebris
          inc SPRITE_ANIM_DELAY,x
          lda SPRITE_ANIM_DELAY,x
          and #$04
          lsr
          lsr
          clc
          adc #SPRITE_DEBRIS_1
          sta SPRITE_POINTER_BASE,x
          BehaviourImpala
          lda SPRITE_STATE,x
          beq .DriveFirstHalf
          cmp #1
          beq .HandlePause

          ;drive off
          jsr MoveSpriteLeft
          lda SPRITE_POS_X,x
          beq .DriveDone
          rts

.DriveDone
          jsr RemoveObject
          rts

.DriveFirstHalf
          jsr MoveSpriteLeft
          inc SPRITE_MOVE_POS,x
          lda SPRITE_MOVE_POS,x
          cmp #200
          beq .NextState
          rts

.NextState
          inc SPRITE_STATE,x
          lda #0
          sta SPRITE_MOVE_POS,x
          rts

.HandlePause
          inc SPRITE_MOVE_POS,x
          beq .NextState
          rts


The text is stored as usual. Nice to see, a - acts as CR, * as end of text.

TEXT_STORY_1
          !text "A LOCAL NEWSPAPER MENTIONS SEVERAL-"
          !text "MISSING PEOPLE",59," THIS SEEMS TO BE A-"
          !text "RECURRING PATTERN EVERY 44 YEARS",59,"-"
          !text "WE SHOULD INVESTIGATE THE TOWN-"
          !text "CEMETARY",59,"*"


step46.zip

Previous Step Next Step

Sign in to follow this  


2 Comments


Recommended Comments

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now