mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-03-03 12:31:32 +00:00
keen: better end-of-level handling
This commit is contained in:
parent
d7724283a3
commit
76254b9729
@ -28,6 +28,9 @@ game_over:
|
||||
|
||||
jsr page_flip
|
||||
|
||||
ldy #SFX_GAMEOVERSND
|
||||
jsr play_sfx
|
||||
|
||||
query_game_over:
|
||||
lda KEYPRESS
|
||||
bpl query_game_over
|
||||
|
@ -154,22 +154,57 @@ no_frame_oflo:
|
||||
;===========================
|
||||
|
||||
lda LEVEL_OVER
|
||||
beq do_keen_loop
|
||||
|
||||
jmp done_with_keen
|
||||
|
||||
do_keen_loop:
|
||||
bne done_with_keen
|
||||
|
||||
;===========================
|
||||
; delay
|
||||
;===========================
|
||||
|
||||
; lda #200
|
||||
; jsr WAIT
|
||||
|
||||
|
||||
jmp keen_loop
|
||||
|
||||
|
||||
done_with_keen:
|
||||
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
|
||||
sta WHICH_LOAD
|
||||
|
@ -372,16 +372,16 @@ YORP_SEARCH = 2
|
||||
LEFT = $FF
|
||||
RIGHT = $1
|
||||
|
||||
enemy_data_out: .byte 1, 1, 0, 0, 0, 0, 0, 0,0
|
||||
enemy_data_exploding: .byte 0, 0, 0, 0, 0, 0, 0, 0,0
|
||||
enemy_data_type: .byte YORP, YORP, YORP, YORP, YORP, YORP, YORP,YORP,YORP
|
||||
enemy_data_direction: .byte RIGHT, RIGHT, LEFT, LEFT, LEFT, LEFT, RIGHT,RIGHT,LEFT
|
||||
enemy_data_tilex: .byte 5, 19, 38, 45, 69, 81, 89, 92,100
|
||||
enemy_data_tiley: .byte 6, 13, 4, 4, 13, 4, 4, 13,10
|
||||
enemy_data_x: .byte 0, 0, 0, 0, 0, 0, 0, 0,0
|
||||
enemy_data_y: .byte 0, 0, 0, 0, 0, 0, 0, 0,0
|
||||
enemy_data_state: .byte 0, 0, 0, 0, 0, 0, 0, 0,0
|
||||
enemy_data_count: .byte 8, 8, 8, 8, 8, 8, 8, 8,8
|
||||
enemy_data_out: .byte 1, 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
|
||||
enemy_data_direction: .byte RIGHT, LEFT, LEFT, LEFT, LEFT, RIGHT,RIGHT,LEFT
|
||||
enemy_data_tilex: .byte 19, 38, 45, 69, 81, 89, 92, 100
|
||||
enemy_data_tiley: .byte 13, 4, 4, 13, 4, 4, 13, 10
|
||||
enemy_data_x: .byte 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
|
||||
enemy_data_count: .byte 8, 8, 8, 8, 8, 8, 8, 8
|
||||
|
||||
; question: when do they activate? When do they move when offscreen?
|
||||
|
||||
|
@ -178,23 +178,20 @@ check_enemy:
|
||||
bne done_check_enemy
|
||||
|
||||
touched_enemy:
|
||||
dec KEENS
|
||||
inc LEVEL_OVER
|
||||
|
||||
lda #TOUCHED_ENEMY
|
||||
sta LEVEL_OVER
|
||||
|
||||
|
||||
ldy #SFX_KEENDIESND
|
||||
jsr play_sfx
|
||||
|
||||
; TODO: ANIMATION
|
||||
; keen turns to head, flies up screen
|
||||
|
||||
; play game over music if out of keens
|
||||
|
||||
lda KEENS
|
||||
bpl done_check_enemy
|
||||
|
||||
ldy #SFX_GAMEOVERSND
|
||||
jsr play_sfx
|
||||
; ldy #SFX_KEENDIESND
|
||||
; jsr play_sfx
|
||||
; ; TODO: ANIMATION
|
||||
; ; keen turns to head, flies up screen
|
||||
; ; play game over music if out of keens
|
||||
; lda KEENS
|
||||
; bpl done_check_enemy
|
||||
; ldy #SFX_GAMEOVERSND
|
||||
; jsr play_sfx
|
||||
|
||||
|
||||
done_check_enemy:
|
||||
|
@ -38,7 +38,7 @@ mars_start:
|
||||
|
||||
sta KEEN_WALKING
|
||||
sta KEEN_JUMPING
|
||||
sta LEVEL_OVER
|
||||
; sta LEVEL_OVER
|
||||
sta LASER_OUT
|
||||
sta KEEN_XL
|
||||
sta KEEN_FALLING
|
||||
@ -53,6 +53,12 @@ mars_start:
|
||||
; lda #11
|
||||
; sta KEEN_Y
|
||||
|
||||
; see if returning and it game over
|
||||
|
||||
lda LEVEL_OVER
|
||||
cmp #GAME_OVER
|
||||
beq return_to_title
|
||||
|
||||
;====================================
|
||||
; load mars background
|
||||
;====================================
|
||||
@ -72,6 +78,9 @@ mars_start:
|
||||
|
||||
jsr fade_in
|
||||
|
||||
lda #0
|
||||
sta LEVEL_OVER
|
||||
|
||||
;====================================
|
||||
;====================================
|
||||
; Main loop
|
||||
@ -165,11 +174,13 @@ done_with_keen:
|
||||
|
||||
return_to_title:
|
||||
|
||||
ldy #SFX_GAMEOVERSND
|
||||
jsr play_sfx
|
||||
|
||||
jsr game_over
|
||||
|
||||
; ldy #SFX_GAMEOVERSND
|
||||
; jsr play_sfx
|
||||
|
||||
|
||||
|
||||
lda #LOAD_TITLE
|
||||
sta WHICH_LOAD
|
||||
|
||||
|
@ -136,25 +136,9 @@ TILEY = $9D
|
||||
TILE_ODD = $9E
|
||||
TILEMAP_OFFSET = $9F
|
||||
|
||||
;
|
||||
|
||||
.if 0
|
||||
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
|
||||
MARS_X = $A0
|
||||
MARS_Y = $A1
|
||||
INITIAL_SOUND = $A2
|
||||
|
||||
|
||||
|
||||
@ -171,6 +155,7 @@ GRID_PAGE = $DF
|
||||
ANIMATE_FRAME = $E0
|
||||
LEVEL_OVER = $E1
|
||||
GAME_OVER = $FF
|
||||
TOUCHED_ENEMY = $80
|
||||
NEXT_LEVEL = $01
|
||||
LOCATIONS_L = $E2
|
||||
LOCATIONS_H = $E3
|
||||
|
Loading…
x
Reference in New Issue
Block a user