sound fix, time display on game

This commit is contained in:
2026-07-21 16:54:26 +02:00
parent 8420213065
commit b5c4de4f75
3 changed files with 85 additions and 10 deletions
+53 -7
View File
@@ -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
+6 -3
View File
@@ -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
+26
View File
@@ -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: