From a28b1533cb9b4fd8d201debb07cbea63105e16cd Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Tue, 29 Dec 2020 00:20:27 +0100 Subject: [PATCH] jingle changes --- .../mega65_chrout_screen_control_bell.s | 113 +++++++++++------- 1 file changed, 70 insertions(+), 43 deletions(-) diff --git a/src/kernal/screen_m65/mega65_chrout_screen_control_bell.s b/src/kernal/screen_m65/mega65_chrout_screen_control_bell.s index c4e5eedd..9921ffe2 100644 --- a/src/kernal/screen_m65/mega65_chrout_screen_control_bell.s +++ b/src/kernal/screen_m65/mega65_chrout_screen_control_bell.s @@ -2,6 +2,8 @@ ;; #LAYOUT# * * #IGNORE +; XXX invent something pleasant to hear, afterwards size-optimize the code + m65_chrout_screen_BELL: ; play bell (jingle) lda M65_BELLDSBL @@ -9,6 +11,73 @@ m65_chrout_screen_BELL: ; play bell (jingle) ; Play bell on both left&right secondary SIDs - first reset the SIDs + jsr m65_chrout_screen_BELL_clear + + lda #$0A ; volume + sta SID_SIGVOL + $20 + sta SID_SIGVOL + $60 + + ldx #$04 ; wait loop, to prevent popping sound + jsr m65_chrout_screen_BELL_wait + + lda #$23 ; channel 1 - attack/decay + sta SID_ATDCY1 + $20 + sta SID_ATDCY1 + $60 + + lda #$91 ; channel 1 - sustain/release + sta SID_SUREL1 + $20 + sta SID_SUREL1 + $60 + + lda #$1D ; channel 1 - frequency (HI) + sta SID_FREHI1 + $20 + sta SID_FREHI1 + $60 + lda #$42 ; channel 3 - frequency (HI) + sta SID_FREHI3 + $20 + sta SID_FREHI3 + $60 + + lda #$00 ; channel 1 - frequency (LO) + sta SID_FRELO1 + $20 + sta SID_FRELO1 + $60 + lda #$00 ; channel 3 - frequency (LO) + sta SID_FRELO3 + $20 + sta SID_FRELO3 + $60 + + lda #$10 ; channel 3 - waveform (triangle) + sta SID_VCREG3 + $20 + sta SID_VCREG3 + $60 + + lda #$17 ; channel 1 - waveform (triangle), synchronized, modulated + sta SID_VCREG1 + $20 + sta SID_VCREG1 + $60 + + ldx #$0F ; wait loop + jsr m65_chrout_screen_BELL_wait + + lda #$14 ; stop the jingle + sta SID_VCREG1 + $20 + sta SID_VCREG1 + $60 + + ldx #$04 ; wait loop + jsr m65_chrout_screen_BELL_wait + + ; FALLTROUGH + +m65_chrout_screen_BELL_done: + + jmp m65_chrout_screen_done + +m65_chrout_screen_BELL_wait: ; XXX this can probably be deduplicated + + phx + ldx #$FF + jsr wait_x_bars + plx + dex + bne m65_chrout_screen_BELL_wait + rts + +m65_chrout_screen_BELL_clear: + ldx #$1F lda #$00 @1: @@ -16,49 +85,7 @@ m65_chrout_screen_BELL: ; play bell (jingle) sta __SID_BASE + $60,x dex bpl @1 - - lda #$0A ; volume - sta SID_SIGVOL + $20 - sta SID_SIGVOL + $60 - - lda #$23 ; channel 1 - attack/decay - sta SID_ATDCY1 + $20 - sta SID_ATDCY1 + $60 - - lda #$52 ; channel 1 - sustain/release - sta SID_SUREL1 + $20 - sta SID_SUREL1 + $60 - - lda #$1E ; channel 1 - frequency (HI) - sta SID_FREHI1 + $20 - sta SID_FREHI1 + $60 - - lda #$00 ; channel 1 - frequency (LO) - sta SID_FRELO1 + $20 - sta SID_FRELO1 + $60 - - lda #$11 ; channel 1 - waveform - sta SID_VCREG1 + $20 - sta SID_VCREG1 + $60 - - ldx #$0E ; wait loop -@2: - phx - ldx #$FF - jsr wait_x_bars - plx - dex - bne @2 - - lda #$10 ; stop the jingle - sta SID_VCREG1 + $20 - sta SID_VCREG1 + $60 - - ; FALLTROUGH - -m65_chrout_screen_BELL_done: - - jmp m65_chrout_screen_done + rts m65_chrout_esc_G: ; enable bell