sound fix, time display on game
This commit is contained in:
@@ -26,7 +26,7 @@ play_init:
|
|||||||
jsr clear_screen
|
jsr clear_screen
|
||||||
+prtext 0, 0, WHITE, txt_t1, 7
|
+prtext 0, 0, WHITE, txt_t1, 7
|
||||||
+prtext 0, 7, CYAN, txt_t2, 3
|
+prtext 0, 7, CYAN, txt_t2, 3
|
||||||
+prtext 0, 28, LGREY, txt_goal, txt_goale-txt_goal
|
+prtext 0, 34, LGREY, txt_goal, txt_goale-txt_goal
|
||||||
+prtext 24, 6, DGREY, txt_hint, txt_hinte-txt_hint
|
+prtext 24, 6, DGREY, txt_hint, txt_hinte-txt_hint
|
||||||
|
|
||||||
lda #COL_WALL
|
lda #COL_WALL
|
||||||
@@ -124,6 +124,9 @@ ps_exit:
|
|||||||
sta sy
|
sta sy
|
||||||
sta cool
|
sta cool
|
||||||
sta rotflash
|
sta rotflash
|
||||||
|
sta tframe ; the clock starts when the maze is done
|
||||||
|
sta tsec
|
||||||
|
sta tmin
|
||||||
lda #1
|
lda #1
|
||||||
sta cfheld
|
sta cfheld
|
||||||
sta rfheld
|
sta rfheld
|
||||||
@@ -420,6 +423,25 @@ ecoltab: ; anything but the white runner / grey walls
|
|||||||
; one frame of play
|
; one frame of play
|
||||||
; ============================================================
|
; ============================================================
|
||||||
play_update:
|
play_update:
|
||||||
|
inc tframe ; the round clock: 50 frames = one second
|
||||||
|
lda tframe
|
||||||
|
cmp #50
|
||||||
|
bne pu_clock
|
||||||
|
lda #0
|
||||||
|
sta tframe
|
||||||
|
inc tsec
|
||||||
|
lda tsec
|
||||||
|
cmp #60
|
||||||
|
bne pu_clock
|
||||||
|
lda #0
|
||||||
|
sta tsec
|
||||||
|
inc tmin
|
||||||
|
lda tmin
|
||||||
|
cmp #100 ; the clock pegs at 99:59
|
||||||
|
bne pu_clock
|
||||||
|
lda #99
|
||||||
|
sta tmin
|
||||||
|
pu_clock:
|
||||||
lda cool ; the spin recharge ticks down
|
lda cool ; the spin recharge ticks down
|
||||||
beq pu_nocool
|
beq pu_nocool
|
||||||
dec cool
|
dec cool
|
||||||
@@ -434,6 +456,7 @@ pu_nocool:
|
|||||||
jsr upd_cursor
|
jsr upd_cursor
|
||||||
jsr upd_flash
|
jsr upd_flash
|
||||||
jsr upd_status
|
jsr upd_status
|
||||||
|
jsr upd_clock
|
||||||
jmp upd_sprites
|
jmp upd_sprites
|
||||||
pu_end:
|
pu_end:
|
||||||
cmp #1
|
cmp #1
|
||||||
@@ -1046,7 +1069,7 @@ upd_status:
|
|||||||
us_show:
|
us_show:
|
||||||
lda cool
|
lda cool
|
||||||
beq us_ready
|
beq us_ready
|
||||||
+prtext 0, 12, LRED, txt_wait, 4
|
+prtext 0, 17, LRED, txt_wait, 4
|
||||||
lda cool ; pixels left: cool / 2 = 0-80
|
lda cool ; pixels left: cool / 2 = 0-80
|
||||||
lsr
|
lsr
|
||||||
sta ptmp
|
sta ptmp
|
||||||
@@ -1070,23 +1093,43 @@ us_part:
|
|||||||
us_empty:
|
us_empty:
|
||||||
lda #$20
|
lda #$20
|
||||||
us_put:
|
us_put:
|
||||||
sta SCREEN+18,x ; bar cells: row 0, columns 18-27
|
sta SCREEN+23,x ; bar cells: row 0, columns 23-32
|
||||||
lda #LRED
|
lda #LRED
|
||||||
sta COLRAM+18,x
|
sta COLRAM+23,x
|
||||||
inx
|
inx
|
||||||
cpx #10
|
cpx #10
|
||||||
bne us_bar
|
bne us_bar
|
||||||
rts
|
rts
|
||||||
us_ready:
|
us_ready:
|
||||||
+prtext 0, 12, LGREEN, txt_ready, 5
|
+prtext 0, 17, LGREEN, txt_ready, 5
|
||||||
lda #$20 ; clear the bar area
|
lda #$20 ; clear the bar area
|
||||||
ldx #9
|
ldx #9
|
||||||
us_clr:
|
us_clr:
|
||||||
sta SCREEN+18,x
|
sta SCREEN+23,x
|
||||||
dex
|
dex
|
||||||
bpl us_clr
|
bpl us_clr
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
; ---- the round clock, live on the status row ----
|
||||||
|
upd_clock:
|
||||||
|
lda tmin
|
||||||
|
jsr two_digits
|
||||||
|
stx SCREEN+11 ; clock cells: row 0, columns 11-15
|
||||||
|
sta SCREEN+12
|
||||||
|
lda #$3a ; ':'
|
||||||
|
sta SCREEN+13
|
||||||
|
lda tsec
|
||||||
|
jsr two_digits
|
||||||
|
stx SCREEN+14
|
||||||
|
sta SCREEN+15
|
||||||
|
ldx #4
|
||||||
|
ucl_col:
|
||||||
|
lda #LGREY
|
||||||
|
sta COLRAM+11,x
|
||||||
|
dex
|
||||||
|
bpl ucl_col
|
||||||
|
rts
|
||||||
|
|
||||||
; ---- drive the eight sprites from the grid state ----
|
; ---- drive the eight sprites from the grid state ----
|
||||||
upd_sprites:
|
upd_sprites:
|
||||||
lda framectr
|
lda framectr
|
||||||
@@ -1195,7 +1238,7 @@ us_dead:
|
|||||||
ebit: !byte 8, 16, 32, 64
|
ebit: !byte 8, 16, 32, 64
|
||||||
|
|
||||||
; ---- play texts ----
|
; ---- play texts ----
|
||||||
txt_goal: !scr "reach the "
|
txt_goal: !scr "exit "
|
||||||
!byte CH_EXIT
|
!byte CH_EXIT
|
||||||
txt_goale:
|
txt_goale:
|
||||||
txt_hint: !scr "p1: joy2/wasd p2: joy1/ijkl"
|
txt_hint: !scr "p1: joy2/wasd p2: joy1/ijkl"
|
||||||
@@ -1238,6 +1281,9 @@ wch: !byte 0
|
|||||||
hlcol: !byte 0 ; mark_slots color parameter
|
hlcol: !byte 0 ; mark_slots color parameter
|
||||||
latwcol: !byte 0 ; draw_lattice colors: walls, posts
|
latwcol: !byte 0 ; draw_lattice colors: walls, posts
|
||||||
latpcol: !byte 0
|
latpcol: !byte 0
|
||||||
|
tframe: !byte 0 ; round clock: frame, second, minute
|
||||||
|
tsec: !byte 0
|
||||||
|
tmin: !byte 0
|
||||||
frame8: !byte 0 ; framectr / 8: the animation beat
|
frame8: !byte 0 ; framectr / 8: the animation beat
|
||||||
ei: !byte 0 ; enemy loop index
|
ei: !byte 0 ; enemy loop index
|
||||||
etries: !byte 0
|
etries: !byte 0
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ sfx_init:
|
|||||||
sta SID_VOL
|
sta SID_VOL
|
||||||
lda #0
|
lda #0
|
||||||
sta SID_V1CR
|
sta SID_V1CR
|
||||||
|
sta SID_V1FH
|
||||||
|
sta SID_V1FL
|
||||||
sta sfx_timer
|
sta sfx_timer
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@@ -44,9 +46,10 @@ sfx_update:
|
|||||||
beq su_idle
|
beq su_idle
|
||||||
dec sfx_timer
|
dec sfx_timer
|
||||||
bne su_slide
|
bne su_slide
|
||||||
lda sfx_ctrl ; time is up: gate off
|
lda #0 ; time is up: hard-silence the voice -
|
||||||
and #$fe
|
sta SID_V1CR ; waveform and frequency go too, so a
|
||||||
sta SID_V1CR
|
sta SID_V1FH ; hung envelope (the 6581 ADSR bug on
|
||||||
|
sta SID_V1FL ; fast retriggers) cannot whistle on
|
||||||
rts
|
rts
|
||||||
su_slide:
|
su_slide:
|
||||||
lda sfx_fh ; bend the pitch by the slide value
|
lda sfx_fh ; bend the pitch by the slide value
|
||||||
|
|||||||
@@ -11,6 +11,17 @@ win_init:
|
|||||||
+prtext 11, 15, WHITE, txt_welldone, txt_welldonee-txt_welldone
|
+prtext 11, 15, WHITE, txt_welldone, txt_welldonee-txt_welldone
|
||||||
+prtext 13, 10, LGREY, txt_beaten, txt_beatene-txt_beaten
|
+prtext 13, 10, LGREY, txt_beaten, txt_beatene-txt_beaten
|
||||||
|
|
||||||
|
; the round time into the readout: "time: mm:ss"
|
||||||
|
lda tmin
|
||||||
|
jsr two_digits
|
||||||
|
stx txt_timev
|
||||||
|
sta txt_timev+1
|
||||||
|
lda tsec
|
||||||
|
jsr two_digits
|
||||||
|
stx txt_timev+3
|
||||||
|
sta txt_timev+4
|
||||||
|
+prtext 15, 14, CYAN, txt_time, txt_timee-txt_time
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta washphase
|
sta washphase
|
||||||
+setupd win_update
|
+setupd win_update
|
||||||
@@ -75,11 +86,26 @@ wu_input:
|
|||||||
wu_stay:
|
wu_stay:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
two_digits: ; A (0-99) -> X / A: two digit screen codes
|
||||||
|
ldx #$30
|
||||||
|
td_tens:
|
||||||
|
cmp #10
|
||||||
|
bcc td_ones
|
||||||
|
sbc #10 ; carry is set here
|
||||||
|
inx
|
||||||
|
bne td_tens
|
||||||
|
td_ones:
|
||||||
|
ora #$30
|
||||||
|
rts
|
||||||
|
|
||||||
; ---- win texts ----
|
; ---- win texts ----
|
||||||
txt_escaped: !scr "escaped"
|
txt_escaped: !scr "escaped"
|
||||||
txt_welldone: !scr "well done!"
|
txt_welldone: !scr "well done!"
|
||||||
txt_welldonee:
|
txt_welldonee:
|
||||||
txt_beaten: !scr "you beat labyrintwo"
|
txt_beaten: !scr "you beat labyrintwo"
|
||||||
txt_beatene:
|
txt_beatene:
|
||||||
|
txt_time: !scr "time: "
|
||||||
|
txt_timev: !scr "00:00"
|
||||||
|
txt_timee:
|
||||||
txt_firemenu: !scr "fire = menu"
|
txt_firemenu: !scr "fire = menu"
|
||||||
txt_firemenue:
|
txt_firemenue:
|
||||||
|
|||||||
Reference in New Issue
Block a user