keen: better end-of-level handling
This commit is contained in:
parent
d7724283a3
commit
76254b9729
|
@ -28,6 +28,9 @@ game_over:
|
||||||
|
|
||||||
jsr page_flip
|
jsr page_flip
|
||||||
|
|
||||||
|
ldy #SFX_GAMEOVERSND
|
||||||
|
jsr play_sfx
|
||||||
|
|
||||||
query_game_over:
|
query_game_over:
|
||||||
lda KEYPRESS
|
lda KEYPRESS
|
||||||
bpl query_game_over
|
bpl query_game_over
|
||||||
|
|
|
@ -154,22 +154,57 @@ no_frame_oflo:
|
||||||
;===========================
|
;===========================
|
||||||
|
|
||||||
lda LEVEL_OVER
|
lda LEVEL_OVER
|
||||||
beq do_keen_loop
|
bne done_with_keen
|
||||||
|
|
||||||
jmp done_with_keen
|
|
||||||
|
|
||||||
do_keen_loop:
|
|
||||||
|
|
||||||
|
;===========================
|
||||||
; delay
|
; delay
|
||||||
|
;===========================
|
||||||
|
|
||||||
; lda #200
|
; lda #200
|
||||||
; jsr WAIT
|
; jsr WAIT
|
||||||
|
|
||||||
|
|
||||||
jmp keen_loop
|
jmp keen_loop
|
||||||
|
|
||||||
|
|
||||||
done_with_keen:
|
done_with_keen:
|
||||||
bit KEYRESET ; clear keypress
|
bit KEYRESET ; clear keypress
|
||||||
|
|
||||||
|
; three reasons we could get here
|
||||||
|
; NEXT_LEVEL = finished level by exiting door
|
||||||
|
; GAME_OVER = hit ESC and said Y to QUIT
|
||||||
|
; TOUCHED_ENEMY = touched an enemy
|
||||||
|
|
||||||
|
lda LEVEL_OVER
|
||||||
|
cmp #NEXT_LEVEL
|
||||||
|
beq level1_levelover
|
||||||
|
|
||||||
|
cmp #GAME_OVER
|
||||||
|
beq level1_gameover
|
||||||
|
|
||||||
|
; got here, touched enemy
|
||||||
|
|
||||||
|
ldy #SFX_KEENDIESND
|
||||||
|
jsr play_sfx
|
||||||
|
|
||||||
|
; TODO: ANIMATION
|
||||||
|
; keen turns to head, flies up screen
|
||||||
|
; play game over music if out of keens
|
||||||
|
|
||||||
|
dec KEENS
|
||||||
|
bpl level1_levelover
|
||||||
|
|
||||||
|
level1_gameover:
|
||||||
|
|
||||||
|
; mars plays this
|
||||||
|
|
||||||
|
; ldy #SFX_GAMEOVERSND
|
||||||
|
; jsr play_sfx
|
||||||
|
|
||||||
|
lda #GAME_OVER
|
||||||
|
sta LEVEL_OVER
|
||||||
|
|
||||||
|
level1_levelover:
|
||||||
|
|
||||||
lda #LOAD_MARS
|
lda #LOAD_MARS
|
||||||
sta WHICH_LOAD
|
sta WHICH_LOAD
|
||||||
|
|
|
@ -372,16 +372,16 @@ YORP_SEARCH = 2
|
||||||
LEFT = $FF
|
LEFT = $FF
|
||||||
RIGHT = $1
|
RIGHT = $1
|
||||||
|
|
||||||
enemy_data_out: .byte 1, 1, 0, 0, 0, 0, 0, 0,0
|
enemy_data_out: .byte 1, 0, 0, 0, 0, 0, 0, 0
|
||||||
enemy_data_exploding: .byte 0, 0, 0, 0, 0, 0, 0, 0,0
|
enemy_data_exploding: .byte 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
enemy_data_type: .byte YORP, YORP, YORP, YORP, YORP, YORP, YORP,YORP,YORP
|
enemy_data_type: .byte YORP, YORP, YORP, YORP, YORP, YORP,YORP,YORP
|
||||||
enemy_data_direction: .byte RIGHT, RIGHT, LEFT, LEFT, LEFT, LEFT, RIGHT,RIGHT,LEFT
|
enemy_data_direction: .byte RIGHT, LEFT, LEFT, LEFT, LEFT, RIGHT,RIGHT,LEFT
|
||||||
enemy_data_tilex: .byte 5, 19, 38, 45, 69, 81, 89, 92,100
|
enemy_data_tilex: .byte 19, 38, 45, 69, 81, 89, 92, 100
|
||||||
enemy_data_tiley: .byte 6, 13, 4, 4, 13, 4, 4, 13,10
|
enemy_data_tiley: .byte 13, 4, 4, 13, 4, 4, 13, 10
|
||||||
enemy_data_x: .byte 0, 0, 0, 0, 0, 0, 0, 0,0
|
enemy_data_x: .byte 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
enemy_data_y: .byte 0, 0, 0, 0, 0, 0, 0, 0,0
|
enemy_data_y: .byte 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
enemy_data_state: .byte 0, 0, 0, 0, 0, 0, 0, 0,0
|
enemy_data_state: .byte 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
enemy_data_count: .byte 8, 8, 8, 8, 8, 8, 8, 8,8
|
enemy_data_count: .byte 8, 8, 8, 8, 8, 8, 8, 8
|
||||||
|
|
||||||
; question: when do they activate? When do they move when offscreen?
|
; question: when do they activate? When do they move when offscreen?
|
||||||
|
|
||||||
|
|
|
@ -178,23 +178,20 @@ check_enemy:
|
||||||
bne done_check_enemy
|
bne done_check_enemy
|
||||||
|
|
||||||
touched_enemy:
|
touched_enemy:
|
||||||
dec KEENS
|
|
||||||
inc LEVEL_OVER
|
lda #TOUCHED_ENEMY
|
||||||
|
sta LEVEL_OVER
|
||||||
|
|
||||||
|
|
||||||
ldy #SFX_KEENDIESND
|
; ldy #SFX_KEENDIESND
|
||||||
jsr play_sfx
|
; jsr play_sfx
|
||||||
|
; ; TODO: ANIMATION
|
||||||
; TODO: ANIMATION
|
; ; keen turns to head, flies up screen
|
||||||
; keen turns to head, flies up screen
|
; ; play game over music if out of keens
|
||||||
|
; lda KEENS
|
||||||
; play game over music if out of keens
|
; bpl done_check_enemy
|
||||||
|
; ldy #SFX_GAMEOVERSND
|
||||||
lda KEENS
|
; jsr play_sfx
|
||||||
bpl done_check_enemy
|
|
||||||
|
|
||||||
ldy #SFX_GAMEOVERSND
|
|
||||||
jsr play_sfx
|
|
||||||
|
|
||||||
|
|
||||||
done_check_enemy:
|
done_check_enemy:
|
||||||
|
|
|
@ -38,7 +38,7 @@ mars_start:
|
||||||
|
|
||||||
sta KEEN_WALKING
|
sta KEEN_WALKING
|
||||||
sta KEEN_JUMPING
|
sta KEEN_JUMPING
|
||||||
sta LEVEL_OVER
|
; sta LEVEL_OVER
|
||||||
sta LASER_OUT
|
sta LASER_OUT
|
||||||
sta KEEN_XL
|
sta KEEN_XL
|
||||||
sta KEEN_FALLING
|
sta KEEN_FALLING
|
||||||
|
@ -53,6 +53,12 @@ mars_start:
|
||||||
; lda #11
|
; lda #11
|
||||||
; sta KEEN_Y
|
; sta KEEN_Y
|
||||||
|
|
||||||
|
; see if returning and it game over
|
||||||
|
|
||||||
|
lda LEVEL_OVER
|
||||||
|
cmp #GAME_OVER
|
||||||
|
beq return_to_title
|
||||||
|
|
||||||
;====================================
|
;====================================
|
||||||
; load mars background
|
; load mars background
|
||||||
;====================================
|
;====================================
|
||||||
|
@ -72,6 +78,9 @@ mars_start:
|
||||||
|
|
||||||
jsr fade_in
|
jsr fade_in
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta LEVEL_OVER
|
||||||
|
|
||||||
;====================================
|
;====================================
|
||||||
;====================================
|
;====================================
|
||||||
; Main loop
|
; Main loop
|
||||||
|
@ -165,11 +174,13 @@ done_with_keen:
|
||||||
|
|
||||||
return_to_title:
|
return_to_title:
|
||||||
|
|
||||||
ldy #SFX_GAMEOVERSND
|
|
||||||
jsr play_sfx
|
|
||||||
|
|
||||||
jsr game_over
|
jsr game_over
|
||||||
|
|
||||||
|
; ldy #SFX_GAMEOVERSND
|
||||||
|
; jsr play_sfx
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
lda #LOAD_TITLE
|
lda #LOAD_TITLE
|
||||||
sta WHICH_LOAD
|
sta WHICH_LOAD
|
||||||
|
|
||||||
|
|
|
@ -136,25 +136,9 @@ TILEY = $9D
|
||||||
TILE_ODD = $9E
|
TILE_ODD = $9E
|
||||||
TILEMAP_OFFSET = $9F
|
TILEMAP_OFFSET = $9F
|
||||||
|
|
||||||
;
|
MARS_X = $A0
|
||||||
|
MARS_Y = $A1
|
||||||
.if 0
|
INITIAL_SOUND = $A2
|
||||||
KEEN_FOOT_TILE1 = $A1
|
|
||||||
KEEN_FOOT_TILE2 = $A2
|
|
||||||
KEEN_FOOT_BELOW1 = $A3
|
|
||||||
KEEN_FOOT_BELOW2 = $A4
|
|
||||||
KEEN_HEAD_TILE1 = $A5
|
|
||||||
KEEN_HEAD_TILE2 = $A6
|
|
||||||
KEEN_WALK_TILE_L = $A7
|
|
||||||
KEEN_WALK_TILE_R = $A8
|
|
||||||
KEEN_FOOT_POINTER_L = $A9
|
|
||||||
KEEN_FOOT_POINTER_R = $AA
|
|
||||||
KEEN_HEAD_POINTER_L = $AB
|
|
||||||
KEEN_HEAD_POINTER_R = $AC
|
|
||||||
.endif
|
|
||||||
MARS_X = $AD
|
|
||||||
MARS_Y = $AE
|
|
||||||
INITIAL_SOUND = $AF
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -171,6 +155,7 @@ GRID_PAGE = $DF
|
||||||
ANIMATE_FRAME = $E0
|
ANIMATE_FRAME = $E0
|
||||||
LEVEL_OVER = $E1
|
LEVEL_OVER = $E1
|
||||||
GAME_OVER = $FF
|
GAME_OVER = $FF
|
||||||
|
TOUCHED_ENEMY = $80
|
||||||
NEXT_LEVEL = $01
|
NEXT_LEVEL = $01
|
||||||
LOCATIONS_L = $E2
|
LOCATIONS_L = $E2
|
||||||
LOCATIONS_H = $E3
|
LOCATIONS_H = $E3
|
||||||
|
|
Loading…
Reference in New Issue