mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:13:13 -06:00
revert sn76489
This commit is contained in:
@@ -34,4 +34,42 @@
|
||||
|
||||
#IFNDEF AUDIOUTILS
|
||||
#DEFINE AUDIOUTILS
|
||||
|
||||
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 WITIN 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
|
||||
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
|
||||
RET
|
||||
#ENDIF
|
||||
|
||||
@@ -7,8 +7,6 @@
|
||||
; @3.579545 OCTAVE RANGE IS 2 - 7 (Bb2/A#2 .. A7)
|
||||
; @4.000000 OCTAVE RANGE IS 2 - 7 (B2 .. A7)
|
||||
;
|
||||
;#include "cfg_state.inc"
|
||||
;
|
||||
AY_RCSND .EQU 0 ; 0 = EB MODULE, 1=MF MODULE
|
||||
;
|
||||
#IF (AYMODE == AYMODE_SCG)
|
||||
@@ -70,8 +68,6 @@ AY_IDAT .EQU 0 ; NO INSTANCE DATA ASSOCIATED WITH THIS DEVICE
|
||||
;
|
||||
; DEVICE CAPABILITIES AND CONFIGURATION
|
||||
;
|
||||
SBCV2004 .EQU 0 ; USE SBC-V2-004 HALF CLOCK DIVIDER
|
||||
;
|
||||
AY_TONECNT .EQU 3 ; COUNT NUMBER OF TONE CHANNELS
|
||||
AY_NOISECNT .EQU 1 ; COUNT NUMBER OF NOISE CHANNELS
|
||||
;
|
||||
@@ -459,7 +455,7 @@ AY_EI:
|
||||
;
|
||||
AY_WRTPSG:
|
||||
CALL AY_DI
|
||||
#IF (SBCV2004)
|
||||
#IFDEF SBCV2004
|
||||
LD A,8 ; SBC-V2-004 CHANGE
|
||||
OUT (112),A ; TO HALF CLOCK SPEED
|
||||
#ENDIF
|
||||
@@ -477,7 +473,7 @@ AY_WRTPSG:
|
||||
POP AF ; GET SAVED DCNTL VALUE
|
||||
OUT0 (Z180_DCNTL),A ; AND RESTORE IT
|
||||
#ENDIF
|
||||
#IF (SBCV2004)
|
||||
#IFDEF SBCV2004
|
||||
LD A,0 ; SBC-V2-004 CHANGE TO
|
||||
OUT (112),A ; NORMAL CLOCK SPEED
|
||||
#ENDIF
|
||||
@@ -489,7 +485,7 @@ AY_WRTPSG:
|
||||
;
|
||||
AY_RDPSG:
|
||||
CALL AY_DI
|
||||
#IF (SBCV2004)
|
||||
#IFDEF SBCV2004
|
||||
LD A,8 ; SBC-V2-004 CHANGE
|
||||
OUT (112),A ; TO HALF CLOCK SPEED
|
||||
#ENDIF
|
||||
@@ -507,7 +503,7 @@ AY_RDPSG:
|
||||
POP AF ; GET SAVED DCNTL VALUE
|
||||
OUT0 (Z180_DCNTL),A ; AND RESTORE IT
|
||||
#ENDIF
|
||||
#IF (SBCV2004)
|
||||
#IFDEF SBCV2004
|
||||
LD A,0 ; SBC-V2-004 CHANGE TO
|
||||
OUT (112),A ; NORMAL CLOCK SPEED
|
||||
#ENDIF
|
||||
|
||||
@@ -24,8 +24,7 @@ CHANNEL_1_SILENT .EQU $BF
|
||||
CHANNEL_2_SILENT .EQU $DF
|
||||
CHANNEL_3_SILENT .EQU $FF
|
||||
|
||||
SN7_SCALE .EQU 4
|
||||
SN7RATIO .EQU (SN7CLK * 100) / (32 >> SN7_SCALE)
|
||||
SN7RATIO .EQU SN7CLK * 100 / 32
|
||||
|
||||
.ECHO "SN76489 CLOCK: "
|
||||
.ECHO SN7CLK
|
||||
@@ -105,42 +104,9 @@ SN7_VOLUME:
|
||||
RET
|
||||
|
||||
SN7_NOTE:
|
||||
|
||||
; CALL PRTHEXWORDHL
|
||||
; CALL PC_COLON
|
||||
|
||||
AUDDEBUG("AUDNOTE ")
|
||||
AUDTRACE_HL
|
||||
AUDTRACE_CR
|
||||
AUDTRACE_DE
|
||||
AUDTRACE_CR
|
||||
|
||||
LD DE, SN7NOTETBL
|
||||
PUSH DE ; ON ENTRY HL IS THE NOTE TO PLAY
|
||||
LD DE, 48 ; AND DE IS THE START OF NOTE TABLE
|
||||
CALL DIV16 ; LOAD DE WITH NOTE TABLE SIZE
|
||||
; 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,SN7_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
|
||||
SN7_NOTE1:
|
||||
SRL H ; ADJUST THE PERIOD DATA
|
||||
RR L ; FOR THE DESIRED OCTAVE
|
||||
DJNZ SN7_NOTE1 ; FALL THROUGH TO SET PERIOD AND RANGE CHECK
|
||||
|
||||
; CALL PRTHEXWORDHL
|
||||
; CALL NEWLINE
|
||||
|
||||
CALL AUD_NOTE ; RETURNS PERIOD IN HL, FALL THRU
|
||||
; TO SET THIS PERIOD
|
||||
SN7_PERIOD:
|
||||
AUDTRACE(SNT_PERIOD)
|
||||
AUDTRACE_HL
|
||||
|
||||
Reference in New Issue
Block a user