Jump to content

  • Log In with Google      Sign In   
  • Create Account





A C64 Game - Step 46

Posted by Endurion, in C64 17 March 2012 · 914 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.

Attached Image

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 #<TEXT_STORY_1
		  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,"*"
		


Previous Step Next Step

Attached Files






Ahh, nothing quite like some story to make the game better ;)
I know its not the same but that sure brings back memories of coding Z80 ASM, ah the good old days :-)

October 2014 »

S M T W T F S
   1234
567891011
12131415161718
192021222324 25
262728293031 
PARTNERS