From 16475fe4081044783125f61aaf1e66a173c0c744 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Mon, 9 Jan 2023 16:08:42 -0800 Subject: [PATCH] Audio Driver Cleanup Resolved some consistency issues between the AY-3-8910 and SN76489 audio drivers. --- Source/HBIOS/audio.inc | 105 +++++++++++++++++++++------------- Source/HBIOS/ay38910.asm | 109 ++++++++++++++++++------------------ Source/HBIOS/cfg_dyno.asm | 10 ++-- Source/HBIOS/cfg_ezz80.asm | 10 ++-- Source/HBIOS/cfg_master.asm | 10 ++-- Source/HBIOS/cfg_mbc.asm | 10 ++-- Source/HBIOS/cfg_mk4.asm | 10 ++-- Source/HBIOS/cfg_n8.asm | 10 ++-- Source/HBIOS/cfg_rcz180.asm | 10 ++-- Source/HBIOS/cfg_rcz280.asm | 10 ++-- Source/HBIOS/cfg_rcz80.asm | 10 ++-- Source/HBIOS/cfg_rph.asm | 10 ++-- Source/HBIOS/cfg_sbc.asm | 10 ++-- Source/HBIOS/cfg_scz180.asm | 10 ++-- Source/HBIOS/hbios.asm | 37 ++++++++++++ Source/HBIOS/sn76489.asm | 94 +++++++++++++++++++------------ Source/ver.inc | 2 +- Source/ver.lib | 2 +- 18 files changed, 276 insertions(+), 193 deletions(-) diff --git a/Source/HBIOS/audio.inc b/Source/HBIOS/audio.inc index f821e2cc..fcb686c7 100644 --- a/Source/HBIOS/audio.inc +++ b/Source/HBIOS/audio.inc @@ -1,4 +1,5 @@ #IF AUDIOTRACE +; #DEFINE AUDTRACE(STR) PUSH DE \ LD DE, STR \ CALL WRITESTR \ POP DE #DEFINE AUDTRACE_A CALL PRTHEXBYTE #DEFINE AUDTRACE_B PUSH AF \ LD A, B \ CALL PRTHEXBYTE \ POP AF @@ -9,12 +10,13 @@ #DEFINE AUDTRACE_BC PUSH HL \ PUSH BC \ POP HL \ CALL PRTHEXWORDHL \ POP HL #DEFINE AUDTRACE_DE PUSH HL \ PUSH DE \ POP HL \ CALL PRTHEXWORDHL \ POP HL #DEFINE AUDTRACE_IY PUSH HL \ PUSH IY \ POP HL \ CALL PRTHEXWORDHL \ POP HL - +; #DEFINE AUDDEBUG(S) push hl \ CALL PRTSTRD \ .TEXT S \ .TEXT "$" \ pop hl ; $$$$$$ PRINT STRING S TO CONSOLE - PRTD("HELLO") - NO TRAILING $ REQUIRED - +; #DEFINE AUDTRACE_CR AUDDEBUG("\r\n$") - +; #ELSE +; #DEFINE AUDTRACE(S) #DEFINE AUDTRACE_A #DEFINE AUDTRACE_B @@ -25,51 +27,76 @@ #DEFINE AUDTRACE_HL #DEFINE AUDTRACE_DE #DEFINE AUDTRACE_IY - +; #DEFINE AUDDEBUG(STR) - +; #DEFINE AUDTRACE_CR +; #ENDIF - - -#IFNDEF AUDIOUTILS -#DEFINE AUDIOUTILS - +; +#IFNDEF AUDIO_INC +#DEFINE AUDIO_INC +; +; NOTE TABLE VALUES ARE SHIFTED A FEW EXTRA BITS TO MAKE THE +; DIVISION AS ACCURATE AS POSSIBLE. +; +AUD_SCALE .EQU 3 +; +; ON ENTRY, DE IS ADDRESS OF NOTE TABLE, HL IS NOTE TO PLAY +; NOTE VALUE 0 MEANS B0b/A0# IN OCTAVE 0 WHICH IS THE FIRST ENTRY +; OF THE NOTE TABLE. THE NOTE TABLE REPRESENTS THE FREQUENCIES +; FOR 1 FULL OCTAVE IN QUARTER NOTES. SINCE THERE ARE 12 NOTES +; IN AN OCTAVE, THE TABLE HAS 48 ENTRIES FOR ALL QUARTER NOTES. +; +; ON EXIT, HL CONTAINS THE PERIOD VALUE TO PROGRAM INTO THE PSG +; DERIVED FROM THE NOTE TABLE SCALED TO THE REQUESTED OCTAVE. +; AUD_NOTE: AUDDEBUG("AUDNOTE ") AUDTRACE_HL AUDTRACE_CR AUDTRACE_DE AUDTRACE_CR - - push de - LD DE, 48 - CALL DIV16 - ; BC IS OCTAVE COUNT - ; HL is NOTE WITHIN OCTAVE - ADD HL, HL - pop de - ADD HL, DE - - LD A, (HL) ; RETRIEVE PERIOD COUNT FROM SN7NOTETBL - INC HL - LD H, (HL) - LD L, A - - INC C +; + ; START BY SEPARATING THE NOTE AND OCTAVE PORTION + ; OF THE INCOMING TONE VALUE IN HL + PUSH DE ; SAVE NOTE TABLE ADR + LD DE,48 ; 48 QUARTERNOTES PER OCTAVE + CALL DIV16 ; SEPARATE OCTAVE AND NOTE +; + ; THE QUOTIENT (BC) IS THE OCTAVE NUMBER REQUESTED + ; THE REMAINDER (HL) IS THE QUARTER NOTE WITHIN THE OCTAVE. +; + ; NOW USE THE QUARTER NOTE VALUE TO LOOKUP THE CORRESPONDING + ; PSG PERIOD VALUE IN THE NOTE TABLE. + ADD HL,HL ; SCALE FOR 2 BYTE TABLE ENTRY SIZE + POP DE ; RECOVER THE TABLE ADR + ADD HL,DE ; HL := DESIRED TABLE ENTRY ADR + LD A,(HL) ; GET LOW BYTE OF PERIOD TO A + INC HL ; POINT TO HIGH BYTE VALUE + LD H,(HL) ; GET HIGH BYTE OF PERIOD TO H + LD L,A ; PUT LOW BYTE INTO L +; + ; NOW WE SCALE THE PERIOD VALUE DOWN BASED ON THE OCTAVE VALUE IN C + ; AND BY THE AUD_SCALE VALUE THAT WAS USED IN THE NOTE TABLE. + ; FOR EACH OCTAVE, THE PERIOD IS HALVED WHICH DOUBLES THE FREQUENCY + ; THAT WILL BE PRODUCED BY THE PSG. SINCE MOVING UP AN OCTAVE + ; SHOULD PRODUCE A FREQUENCY THAT IS TWICE THE LOWER OCTIAVE, THIS + ; WORKS NICELY, ALTHOUGH SOME ERROR MAY BE INTRODUCED. +; + LD A,AUD_SCALE ; SHIFT BY AUD_SCALE BITS + ADD A,C ; ... AND OCTAVE + LD B,A ; USE AS LOOP COUNTER AUD_NOTE1: - DEC C - JR Z, AUD_NOTE2 - SRL H - RR L - JR AUD_NOTE1 - -AUD_NOTE2: - LD A, L ; IF NOT ZERO - OR H - RET NZ ; RETURN THE CALCULATED PERIOD - - LD H, $FF ; OTHERWISE RETURN -1 PERIOD (ERROR) - LD L, $FF + SRL H ; RIGHT SHIFT HL + RR L ; ... BY ONE BIT + DJNZ AUD_NOTE1 ; LOOP UNTIL DONE +; + ; IF THE RESULTANT PERIOD IS ZERO, IT MEANS THAT THE REQUESTED + ; PERIOD IS TOO LOW (FREQUENCY TOO HIGH) FOR THE PSG TO PRODUCE. + LD A, L ; CHECK FOR ZERO + OR H ; ... MEANING PSG CAN'T DO IT + RET NZ ; IF NOT ZERO, RETURN THE CALCULATED PERIOD + DEC HL ; OTHERWISE RETURN -1 PERIOD (ERROR) RET #ENDIF diff --git a/Source/HBIOS/ay38910.asm b/Source/HBIOS/ay38910.asm index c591e3b8..6a6df229 100644 --- a/Source/HBIOS/ay38910.asm +++ b/Source/HBIOS/ay38910.asm @@ -4,8 +4,12 @@ ; ;====================================================================== ; -; @3.579545 OCTAVE RANGE IS 2 - 7 (Bb2/A#2 .. A7) -; @4.000000 OCTAVE RANGE IS 2 - 7 (B2 .. A7) +; AY-3-8910 & YM2149 PSG CHIPS NEED AN INPUT CLOCK FREQUENCY OF +; NO MORE THAN 2 MHZ. THE CLOSEST THING THERE IS TO A STANDARD +; IS THE MSX FREQ OF 1.7897725 MHZ. +; +; @1.7897725 OCTAVE RANGE IS 2 - 7 (Bb2/A#2 .. A7) +; @2.0000000 OCTAVE RANGE IS 2 - 7 (B2 .. A7) ; AY_RCSND .EQU 0 ; 0 = EB MODULE, 1=MF MODULE ; @@ -14,7 +18,6 @@ AY_RSEL .EQU $9A AY_RDAT .EQU $9B AY_RIN .EQU AY_RSEL AY_ACR .EQU $9C -AY_CLK .SET 3579545 ; MSX NTSC COLOUR BURST FREQ = 315/88 #ENDIF ; #IF (AYMODE == AYMODE_N8) @@ -53,7 +56,6 @@ AY_RSEL .EQU $A0 AY_RDAT .EQU $A1 AY_RIN .EQU AY_RSEL AY_ACR .EQU $A2 -AY_CLK .SET 3579545 ; MSX NTSC COLOUR BURST FREQ = 315/88 #ENDIF ; ;====================================================================== @@ -92,14 +94,16 @@ AY_IDAT .EQU 0 ; NO INSTANCE DATA ASSOCIATED WITH THIS DEVICE ; AY_TONECNT .EQU 3 ; COUNT NUMBER OF TONE CHANNELS AY_NOISECNT .EQU 1 ; COUNT NUMBER OF NOISE CHANNELS +;; +;#IF (AY_CLK > 3579545) ; DEPENDING ON THE +;AY_SCALE .EQU 2 ; INPUT CLOCK FREQUENCY +;#ELSE ; PRESCALE THE TONE PERIOD +;AY_SCALE .EQU 3 ; DATA TO MAINTAIN MAXIMUM +;#ENDIF ; RANGE AND ACCURACY ; -#IF (AY_CLK > 3579545) ; DEPENDING ON THE -AY_SCALE .EQU 2 ; INPUT CLOCK FREQUENCY -#ELSE ; PRESCALE THE TONE PERIOD -AY_SCALE .EQU 3 ; DATA TO MAINTAIN MAXIMUM -#ENDIF ; RANGE AND ACCURACY -; -AY_RATIO .EQU (AY_CLK * 100) / (16 >> AY_SCALE) + .ECHO "SN76489 CLOCK: " + .ECHO SN7CLK + .ECHO "\n" ; #INCLUDE "audio.inc" ; @@ -306,38 +310,8 @@ AY_VOLUME: ;====================================================================== ; AY_NOTE: - AUDTRACE(AYT_NOTE) - AUDTRACE_HL - AUDTRACE_CR -; -; CALL PRTHEXWORDHL -; CALL PC_COLON -; - LD DE, AY3NOTETBL ; ON ENTRY HL IS THE NOTE TO PLAY - PUSH DE ; AND DE IS THE START OF NOTE TABLE - LD DE, 48 ; LOAD DE WITH NOTE TABLE SIZE - CALL DIV16 ; AND CALCULATE OCTAVE COUNT IN BC -; - ADD HL, HL ; HL IS THE REMAINDER FROM ABOVE DIVISION (0-47) AND THE NOTE - POP DE ; TO PLAY IN THE OCTAVE. ADD IT TO THE START OF THE NOTE TABLE - ADD HL, DE ; TO POINT TO THE PERIOD FOR THE NOTE WE WANT TO PLAY. -; - LD A, (HL) ; HL POINT TO CURRENT PERIOD COUNT WE WANT TO PLAY - INC HL ; SO LOAD PERIOD COUNT FROM NOTE TABLE INTO HL - LD H, (HL) ; SO WE CAN UPDATE IT FOR THE REQUIRED OCTAVE - LD L, A -; - ;LD A,AY_SCALE - 1 ; THE NOTE TABLE PERIOD DATA HAS BEEN - LD A,AY_SCALE ; THE NOTE TABLE PERIOD DATA HAS BEEN - ADD A,C ; PRESCALED TO MAINTAIN RANGE SO ALLOW - LD B,A ; FOR THIS WHEN CHANGING OCTAVE -AY_NOTE1: - SRL H ; ADJUST THE PERIOD DATA - RR L ; FOR THE DESIRED OCTAVE - DJNZ AY_NOTE1 ; FALL THROUGH TO SET PERIOD AND RANGE CHECK -; -; CALL PRTHEXWORDHL -; CALL NEWLINE + LD DE, AY3NOTETBL + CALL AUD_NOTE ; RETURNS PERIOD IN HL, FALL THRU ; ;====================================================================== ; SOUND DRIVER FUNCTION - PERIOD @@ -347,21 +321,22 @@ AY_PERIOD: AUDTRACE(AYT_PERIOD) AUDTRACE_HL AUDTRACE_CR - - LD A, H ; IF ZERO - ERROR +; + LD A,H ; IF ZERO - ERROR OR L - JR Z, AY_PERIOD1 + JR Z,AY_PERIOD1 ; - LD A, H ; MAXIMUM TONE PERIOD IS 12-BITS + LD A,H ; MAXIMUM TONE PERIOD IS 12-BITS AND 11110000B ; ALLOWED RANGE IS 0001-0FFF (4095) - JR NZ, AY_PERIOD1 ; RETURN NZ IF NUMBER TOO LARGE - LD (AY_PENDING_PERIOD), HL ; SAVE AND RETURN SUCCESSFUL + JR NZ,AY_PERIOD1 ; RETURN NZ IF NUMBER TOO LARGE + LD (AY_PENDING_PERIOD),HL ; SAVE AND RETURN SUCCESSFUL + XOR A ; SET SUCCESS RET ; AY_PERIOD1: - LD A, $FF ; REQUESTED PERIOD IS LARGER - LD (AY_PENDING_PERIOD), A ; THAN THE DEVICE CAN SUPPORT - LD (AY_PENDING_PERIOD+1), A; SO SET PERIOD TO FFFF + LD HL,$FFFF ; REQUESTED PERIOD IS LARGER + LD (AY_PENDING_PERIOD),HL ; THAN PSG CAN SUPPORT, SO + OR $FF ; SET PERIOD TO $FFFF RET ; AND RETURN FAILURE ; ;====================================================================== @@ -612,10 +587,32 @@ AYT_REGWR .DB "\r\nOUT AY-3-8910 $" ; QUARTER TONE FREQUENCY TABLE ;====================================================================== ; -; THE FREQUENCY BY QUARTER TONE STARTING AT A0# OCTAVE 0 -; USED TO MAP EACH OCTAVE (DIV BY 2 TO JUMP AN OCTAVE UP) -; FIRST PLAYABLE NOTE WILL BE 0 -; ASSUMING A CLOCK OF 1843200 THIS MAPS TO A0# +; THE FOLLOWING TABLE MAPS A FULL OCTAVE OF QUARTER-NOTES +; STARTING AT A# IN OCTAVE 0 TO THE CORRESPONDING PERIOD +; VALUE TO USE ON THE PSG TO ACHIEVE THE DESIRED NOTE FREQUENCY. +; +; THE FREQUENCY PRODUCED BY THE AY-3-8910 IS: +; FREQ = CLOCK / 16 / PERIOD +; +; SO, TO MAP A DESIRED FREQUENCY TO A PERIOD, WE USE: +; PERIOD = CLOCK / 16 / FREQ +; +; IN ORDER TO IMPROVE THE RESOLUTION OF THE FREQUENCY +; VALUE USED, WE ALSO MULTPLY BOTH SIDES OF THE EQUATION +; BY 100: +; PERIOD * 100 = (CLOCK / 16 / FREQ) * 100 +; +; THE RESULTING PERIOD VALUE CAN BE REPEATEDLY HALVED +; TO TO JUMP UP AS MANY OCTAVES AS DESIRED. +; +; THE FINAL VALUE IS SHIFTED BY AUD_SCALE BITS +; IN ORDER TO IMPROVE THE RESOLUTION. THIS FINAL SHIFT +; IS REMOVED WHEN IN THE AY_NOTE ROUTINE. +; +; ASSUMING A CLOCK OF 1.7897725 MHZ, THE FIRST PLAYABLE +; NOTE WILL BE A0#/B0b (HBIOS NOTE CODE 0). +; +AY_RATIO .EQU (AY_CLK * 100) / (16 >> AUD_SCALE) ; AY3NOTETBL: .DW AY_RATIO / 2913 ; A0#/B0b 178977250 / 2913 = 61440; PROOF: 61440 >> 3 = 7680, 3579545 / 7680 / 16 = 29.13 diff --git a/Source/HBIOS/cfg_dyno.asm b/Source/HBIOS/cfg_dyno.asm index 2bffd67a..fb5cb3c0 100644 --- a/Source/HBIOS/cfg_dyno.asm +++ b/Source/HBIOS/cfg_dyno.asm @@ -196,13 +196,13 @@ PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP ; UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) ; -SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER -SN7CLK .EQU 3579545 ; DEFAULT TO NTSC -SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC|VGM] +SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD +SNMODE .EQU SNMODE_NONE ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; -AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER -AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 +AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_ezz80.asm b/Source/HBIOS/cfg_ezz80.asm index fde81ae0..28fea35d 100644 --- a/Source/HBIOS/cfg_ezz80.asm +++ b/Source/HBIOS/cfg_ezz80.asm @@ -240,13 +240,13 @@ PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP ; UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) ; -SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER -SN7CLK .EQU 3579545 ; DEFAULT TO NTSC -SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC|VGM] +SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD +SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; -AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER -AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 +AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index 1f09a9f2..968a488f 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -320,13 +320,13 @@ PIOSBASE .EQU $60 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) UFBASE .EQU $0C ; UF: REGISTERS BASE ADR ; -SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER -SN7CLK .EQU 3579545 ; DEFAULT TO NTSC -SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC|VGM] +SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD +SNMODE .EQU SNMODE_NONE ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; -AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER -AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 +AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_mbc.asm b/Source/HBIOS/cfg_mbc.asm index d9ce9007..2820b8fb 100644 --- a/Source/HBIOS/cfg_mbc.asm +++ b/Source/HBIOS/cfg_mbc.asm @@ -244,13 +244,13 @@ PIOSBASE .EQU $60 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) UFBASE .EQU $0C ; UF: REGISTERS BASE ADR ; -SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER -SN7CLK .EQU 3579545 ; DEFAULT TO NTSC -SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC|VGM] +SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD +SNMODE .EQU SNMODE_NONE ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; -AY38910ENABLE .EQU TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER -AY_CLK .EQU 3579545 / 2 ; DEFAULT TO CPUOSC / 4 +AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD AYMODE .EQU AYMODE_MBC ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] ; SPKENABLE .EQU TRUE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index 3f9e7024..555b40b7 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -246,13 +246,13 @@ PIOSBASE .EQU $60 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) UFBASE .EQU $0C ; UF: REGISTERS BASE ADR ; -SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER -SN7CLK .EQU 3579545 ; DEFAULT TO NTSC -SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC|VGM] +SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD +SNMODE .EQU SNMODE_VGM ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; -AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER -AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 +AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD AYMODE .EQU AYMODE_SCG ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index 1a8ef6a3..2653c052 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -241,13 +241,13 @@ PIOSBASE .EQU N8_PPI0 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) FIFO_BASE .EQU $0C ; UF: REGISTERS BASE ADR ; -SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER -SN7CLK .EQU 3579545 ; DEFAULT TO NTSC -SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC|VGM] +SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD +SNMODE .EQU SNMODE_VGM ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; -AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER -AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 +AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD AYMODE .EQU AYMODE_N8 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index 30792515..8e87167c 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -253,13 +253,13 @@ PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP ; UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) ; -SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER -SN7CLK .EQU 3579545 ; DEFAULT TO NTSC -SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC|VGM] +SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD +SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; -AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER -AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 +AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_rcz280.asm b/Source/HBIOS/cfg_rcz280.asm index 66926fb6..9501676b 100644 --- a/Source/HBIOS/cfg_rcz280.asm +++ b/Source/HBIOS/cfg_rcz280.asm @@ -268,13 +268,13 @@ PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP ; UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) ; -SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER -SN7CLK .EQU 3579545 ; DEFAULT TO NTSC -SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC|VGM] +SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD +SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; -AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER -AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 +AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 34908eb8..b85d6df7 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.asm @@ -260,13 +260,13 @@ PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP ; UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) ; -SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER -SN7CLK .EQU 3579545 ; DEFAULT TO NTSC -SNMODE .EQU SNMODE_RC ; DRIVER MODE: SNMODE_[NONE|RC|VGM] +SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD +SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; -AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER -AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 +AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_rph.asm b/Source/HBIOS/cfg_rph.asm index 33bb97f1..5010d8a5 100644 --- a/Source/HBIOS/cfg_rph.asm +++ b/Source/HBIOS/cfg_rph.asm @@ -241,13 +241,13 @@ PIOSBASE .EQU RPH_PPI0 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) FIFO_BASE .EQU $0C ; UF: REGISTERS BASE ADR ; -SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER -SN7CLK .EQU 3579545 ; DEFAULT TO NTSC -SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC|VGM] +SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD +SNMODE .EQU SNMODE_NONE ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; -AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER -AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 +AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD AYMODE .EQU AYMODE_N8 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index 068d884b..48c1de7a 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -244,13 +244,13 @@ PIOSBASE .EQU $60 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) UFBASE .EQU $0C ; UF: REGISTERS BASE ADR ; -SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER -SN7CLK .EQU 3579545 ; DEFAULT TO NTSC -SNMODE .EQU SNMODE_VGM ; DRIVER MODE: SNMODE_[NONE|RC|VGM] +SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD +SNMODE .EQU SNMODE_VGM ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; -AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER -AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 +AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD AYMODE .EQU AYMODE_SCG ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index 1bd33caa..154cb8e4 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -248,13 +248,13 @@ PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP ; UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) ; -SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER +SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER -SN7CLK .EQU 3579545 ; DEFAULT TO NTSC -SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC|VGM] +SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD +SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] ; -AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER -AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 +AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC] ; SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 636d869c..1969d3a2 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2812,6 +2812,43 @@ INITSYS3: ; #ENDIF ; +#IF 0 +; + LD HL,0 + CALL DBG_NOTE + LD HL,48 + CALL DBG_NOTE + LD HL,204 + CALL DBG_NOTE + LD HL,268 + CALL DBG_NOTE + LD HL,436 + CALL DBG_NOTE +; + JP INITSYS4 +; +DBG_NOTE: + PUSH HL + CALL NEWLINE + PRTS("AY: $") + CALL PRTDEC16 + PRTS("=$") + CALL AY_NOTE + LD HL,(AY_PENDING_PERIOD) + CALL PRTDEC16 + POP HL +; + PRTS(" SN: $") + CALL PRTDEC16 + PRTS("=$") + CALL SN7_NOTE + LD HL,(SN7_PENDING_PERIOD) + CALL PRTDEC16 +; + RET +; +#ENDIF +; INITSYS4: ; #IF (MEMMGR == MM_Z280) diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index acfcad1e..59570c07 100644 --- a/Source/HBIOS/sn76489.asm +++ b/Source/HBIOS/sn76489.asm @@ -1,9 +1,13 @@ ;====================================================================== -; SN76489 sound driver +; SN76489 SOUND DRIVER ; ; WRITTEN BY: DEAN NETHERTON ;====================================================================== ; +; SN74489 PSG CHIP NEEDS AN INPUT CLOCK FREQUENCY OF +; NO MORE THAN 4 MHZ. THE CLOSEST THING THERE IS TO A STANDARD +; IS THE MSX FREQ OF 3.579545 MHZ. +; ; TODO: ; 1. PROVIDE SUPPORT FOR NOISE CHANNEL ; 2. DOES THIS WORK FOR FASTER CPUS? ONLY BEEN TESTED ON A Z80 7MHZ UNIT @@ -15,15 +19,13 @@ #IF (SNMODE == SNMODE_VGM) SN76489_PORT_LEFT .EQU $C6 ; PORTS FOR ACCESSING THE SN76489 CHIP (LEFT) SN76489_PORT_RIGHT .EQU $C7 ; PORTS FOR ACCESSING THE SN76489 CHIP (RIGHT) -;SN7CLK .EQU 3575950 ; CLOCK SPEED DRIVING THE SN76489 CHIPS #ENDIF - +; #IF (SNMODE == SNMODE_RC) SN76489_PORT_LEFT .EQU $FF ; PORTS FOR ACCESSING THE SN76489 CHIP (LEFT) SN76489_PORT_RIGHT .EQU $FB ; PORTS FOR ACCESSING THE SN76489 CHIP (RIGHT) -;SN7CLK .EQU 3575950 ; CLOCK SPEED DRIVING THE SN76489 CHIPS #ENDIF - +; SN7_IDAT .EQU 0 SN7_TONECNT .EQU 3 ; COUNT NUMBER OF TONE CHANNELS SN7_NOISECNT .EQU 1 ; COUNT NUMBER OF NOISE CHANNELS @@ -32,15 +34,13 @@ CHANNEL_0_SILENT .EQU $9F CHANNEL_1_SILENT .EQU $BF CHANNEL_2_SILENT .EQU $DF CHANNEL_3_SILENT .EQU $FF - -SN7RATIO .EQU SN7CLK * 100 / 32 - +; .ECHO "SN76489 CLOCK: " .ECHO SN7CLK .ECHO "\n" - +; #INCLUDE "audio.inc" - +; SN76489_INIT: LD IY, SN7_IDAT ; POINTER TO INSTANCE DATA LD BC, SN7_FNTBL ; BC := FUNCTION TABLE ADDRESS @@ -125,33 +125,29 @@ SN7_VOLUME: SN7_NOTE: LD DE, SN7NOTETBL CALL AUD_NOTE ; RETURNS PERIOD IN HL, FALL THRU - ; TO SET THIS PERIOD +; SN7_PERIOD: AUDTRACE(SNT_PERIOD) AUDTRACE_HL AUDTRACE_CR - - LD A, H ; IF ZERO - ERROR +; + LD A,H ; IF ZERO - ERROR OR L - JR Z, SN7_QUERY_PERIOD1 - - LD (SN7_PENDING_PERIOD), HL ;ASSUME SUCCESS - - OR A ; IF >= 401 ERROR - LD DE, $401 - SBC HL, DE - JR NC, SN7_QUERY_PERIOD1 - - XOR A ; SIGNAL SUCCESS - RET - -SN7_QUERY_PERIOD1: ; REQUESTED PERIOD IS LARGER THAN THE SN76489 CAN SUPPORT - LD A, $FF - LD L, A - LD H, A - LD (SN7_PENDING_PERIOD), HL + JR Z,SN7_PERIOD1 +; + LD A,H ; MAXIMUM TONE PERIOD IS 10-BITS + AND 11111100B ; ALLOWED RANGE IS 0001-03FF (1023) + JR NZ,SN7_PERIOD1 ; RETURN NZ IF NUMBER TOO LARGE + LD (SN7_PENDING_PERIOD),HL ; SAVE AND RETURN SUCCESSFUL + XOR A ; SET SUCCESS RET - +; +SN7_PERIOD1: + LD HL,$FFFF ; REQUESTED PERIOD IS LARGER + LD (SN7_PENDING_PERIOD),HL ; THAN PSG CAN SUPPORT, SO + OR $FF ; SET PERIOD TO $FFFF + RET ; AND RETURN FAILURE +; SN7_PLAY: AUDTRACE(SNT_PLAY) AUDTRACE_D @@ -408,12 +404,38 @@ SNT_PERIOD .DB "\r\nSN7_PERIOD: $" SNT_PLAY .DB "\r\nSN7_PLAY CH: $" SNT_REGWR .DB "\r\nOUT SN76489, $" #ENDIF - -; THE FREQUENCY BY QUARTER TONE STARTING AT A0# -; USED TO MAP EACH OCTAVE (DIV BY 2 TO JUMP AN OCTAVE UP) -; ASSUMING A CLOCK OF 3575950 HZ, THE FIRST PLAYABLE +; +;====================================================================== +; QUARTER TONE FREQUENCY TABLE +;====================================================================== +; +; THE FOLLOWING TABLE MAPS A FULL OCTAVE OF QUARTER-NOTES +; STARTING AT A# IN OCTAVE 0 TO THE CORRESPONDING PERIOD +; VALUE TO USE ON THE PSG TO ACHIEVE THE DESIRED NOTE FREQUENCY. +; +; THE FREQUENCY PRODUCED BY THE SN76489 IS: +; FREQ = CLOCK / 32 / PERIOD +; +; SO, TO MAP A DESIRED FREQUENCY TO A PERIOD, WE USE: +; PERIOD = CLOCK / 32 / FREQ +; +; IN ORDER TO IMPROVE THE RESOLUTION OF THE FREQUENCY +; VALUE USED, WE ALSO MULTPLY BOTH SIDES OF THE EQUATION +; BY 100: +; PERIOD * 100 = (CLOCK / 32 / FREQ) * 100 +; +; THE RESULTING PERIOD VALUE CAN BE REPEATEDLY HALVED +; TO TO JUMP UP AS MANY OCTAVES AS DESIRED. +; +; THE FINAL VALUE IS SHIFTED BY AUD_SCALE BITS +; IN ORDER TO IMPROVE THE RESOLUTION. THIS FINAL SHIFT +; IS REMOVED WHEN IN THE AY_NOTE ROUTINE. +; +; ASSUMING A CLOCK OF 3.579545 MHZ, THE FIRST PLAYABLE ; NOTE WILL BE A2 (HBIOS NOTE CODE 92). - +; +SN7RATIO .EQU (SN7CLK * 100) / (32 >> AUD_SCALE) +; SN7NOTETBL: .DW SN7RATIO / 2913 ; A0#/B0b .DW SN7RATIO / 2956 ; diff --git a/Source/ver.inc b/Source/ver.inc index a28e2b6c..04683e23 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1.1-pre.190" +#DEFINE BIOSVER "3.1.1-pre.191" diff --git a/Source/ver.lib b/Source/ver.lib index 21ab6b99..1974dabc 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 1 rtp equ 0 biosver macro - db "3.1.1-pre.190" + db "3.1.1-pre.191" endm