Browse Source

Merge pull request #276 from b1ackmai1er/dev

Impossibility Loop
pull/283/head
Wayne Warthen 4 years ago
committed by GitHub
parent
commit
4484d7f377
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. BIN
      Binary/Apps/Tunes/FILTHY01.VGM
  2. BIN
      Binary/Apps/Tunes/ITSGAMOV.VGM
  3. BIN
      Binary/Apps/Tunes/LEMMIN01.VGM
  4. BIN
      Binary/Apps/Tunes/PENGUI03.VGM
  5. BIN
      Binary/Apps/Tunes/PITFAL02.VGM
  6. BIN
      Binary/Apps/Tunes/TIGER02.VGM
  7. 1
      Source/Apps/Tune/Build.cmd
  8. BIN
      Source/Apps/Tune/Tunes/ITSGAMOV.VGM
  9. BIN
      Source/Apps/Tune/Tunes/LEMMIN01.VGM
  10. BIN
      Source/Apps/Tune/Tunes/PENGUI03.VGM
  11. BIN
      Source/Apps/Tune/Tunes/PITFAL02.VGM
  12. BIN
      Source/Apps/Tune/Tunes/TIGER02.VGM
  13. BIN
      Source/Apps/Tune/Tunes/WONDER01.VGM
  14. 472
      Source/Apps/Tune/VGMPLAY.ASM
  15. 43
      Source/Apps/Tune/VGMPLAY.TXT
  16. 2
      Source/HBIOS/Config/SBC_max.asm
  17. 1
      Source/HBIOS/cfg_dyno.asm
  18. 1
      Source/HBIOS/cfg_ezz80.asm
  19. 1
      Source/HBIOS/cfg_master.asm
  20. 1
      Source/HBIOS/cfg_mbc.asm
  21. 1
      Source/HBIOS/cfg_mk4.asm
  22. 1
      Source/HBIOS/cfg_n8.asm
  23. 1
      Source/HBIOS/cfg_rcz180.asm
  24. 1
      Source/HBIOS/cfg_rcz280.asm
  25. 1
      Source/HBIOS/cfg_rcz80.asm
  26. 3
      Source/HBIOS/cfg_sbc.asm
  27. 1
      Source/HBIOS/cfg_scz180.asm
  28. 17
      Source/HBIOS/sn76489.asm
  29. 8
      Source/HBIOS/std.asm

BIN
Binary/Apps/Tunes/FILTHY01.VGM

Binary file not shown.

BIN
Binary/Apps/Tunes/ITSGAMOV.VGM

Binary file not shown.

BIN
Binary/Apps/Tunes/LEMMIN01.VGM

Binary file not shown.

BIN
Binary/Apps/Tunes/PENGUI03.VGM

Binary file not shown.

BIN
Binary/Apps/Tunes/PITFAL02.VGM

Binary file not shown.

BIN
Binary/Apps/Tunes/TIGER02.VGM

Binary file not shown.

1
Source/Apps/Tune/Build.cmd

@ -8,6 +8,7 @@ set TASMTABS=%TOOLS%\tasm32
tasm -t180 -g3 -fFF -dWBW tune.asm tune.com tune.lst || exit /b
tasm -t180 -g3 -fFF -dZX tune.asm tunezx.com tunezx.lst || exit /b
tasm -t180 -g3 -fFF -dMSX tune.asm tunemsx.com tunemsx.lst || exit /b
tasm -t180 -g3 -fFF -dWBW vgmplay.asm vgmplay.com vgmplay.lst || exit /b
copy /Y tune*.com ..\..\..\Binary\Apps\ || exit /b
copy /Y Tunes\*.* ..\..\..\Binary\Apps\Tunes\ || exit /b

BIN
Source/Apps/Tune/Tunes/ITSGAMOV.VGM

Binary file not shown.

BIN
Source/Apps/Tune/Tunes/LEMMIN01.VGM

Binary file not shown.

BIN
Source/Apps/Tune/Tunes/PENGUI03.VGM

Binary file not shown.

BIN
Source/Apps/Tune/Tunes/PITFAL02.VGM

Binary file not shown.

BIN
Source/Apps/Tune/Tunes/TIGER02.VGM

Binary file not shown.

BIN
Source/Apps/Tune/Tunes/WONDER01.VGM

Binary file not shown.

472
Source/Apps/Tune/VGMPLAY.ASM

@ -0,0 +1,472 @@
; SN76489 + AY-3-8910 + YM2162 VGM player for CP/M
;
; Based on VGM player by J.B. Langston
; https://github.com/jblang/SN76489
;
; Enhanced with multi-chip support by Marco Maccaferri
;
; YM2162/YM3484, GD3 support added by Phil Summers
;
; Compile with:
;
; TASM -80 -b VGMPLAY.ASM VGMPLAY.COM
P8X180 .EQU 0 ; System configuration
RC2014 .EQU 0
SBCECB .EQU 1
.IF P8X180
RSEL .EQU 82H ; Primary AY-3-8910 Register selection
RDAT .EQU 83H ; Primary AY-3-8910 Register data
RSEL2 .EQU 88H ; Secondary AY-3-8910 Register selection
RDAT2 .EQU 89H ; Secondary AY-3-8910 Register data
PSGREG .EQU 84H ; Primary SN76489
PSG2REG .EQU 8AH ; Secondary SN76489
FRAME_DLY .EQU 48 ; Frame delay (~ 1/44100)
.ENDIF
.IF RC2014
RSEL .EQU 0D8H ; Primary AY-3-8910 Register selection
RDAT .EQU 0D0H ; Primary AY-3-8910 Register data
RSEL2 .EQU 0A0H ; Secondary AY-3-8910 Register selection
RDAT2 .EQU 0A1H ; Secondary AY-3-8910 Register data
PSGREG .EQU 0FFH ; Primary SN76489
PSG2REG .EQU 0FBH ; Secondary SN76489
FRAME_DLY .EQU 15 ; Frame delay (~ 1/44100)
.ENDIF
.IF SBCECB
RSEL .EQU 0D8H ; Primary AY-3-8910 Register selection
RDAT .EQU 0D0H ; Primary AY-3-8910 Register data
RSEL2 .EQU 0A0H ; Secondary AY-3-8910 Register selection
RDAT2 .EQU 0A1H ; Secondary AY-3-8910 Register data
YMSEL .EQU 0C0H ; 11000000 a1=0 a0=0
YMDAT .EQU 0C1H ; 11000001 a1=0 a0=1
YM2SEL .EQU 0C2H ; 11000010 a1=1 a0=0
YM2DAT .EQU 0C3H ; 11000011 a1=1 a0=1
PSGREG .EQU 0C6H ; Primary SN76489
PSG2REG .EQU 0C7H ; Secondary SN76489
FRAME_DLY .EQU 10 ; Frame delay (~ 1/44100)
#DEFINE SBCV2004
HB_RTCVAL .EQU 0FFEEH
RTCIO .EQU 070H
.ENDIF
#DEFINE setreg(reg,val) \
#DEFCONT \ ld a,reg
#DEFCONT \ out (YMSEL),a
#DEFCONT \ nop
#DEFCONT \ nop
#DEFCONT \ ld a,val
#DEFCONT \ out (YMDAT),a
D50 .EQU 500 ; 900 ;735
D60 .EQU 600 ; 1000 ;882
VGM_GG_W .EQU 04FH ; GAME GEAR PSG STEREO. WRITE DD TO PORT 0X06
VGM_PSG_W .EQU 050H ; PSG (SN76489/SN76496) WRITE VALUE DD
VGM_YM2612_W .EQU 052H ; YM2612 WRITE VALUE DD
VGM_WNS .EQU 061H ; WAIT N SAMPLES
VGM_W735 .EQU 062H ; WAIT 735 SAMPLES (1/60TH SECOND)
VGM_W882 .EQU 063H ; WAIT 882 SAMPLES (1/50TH SECOND)
VGM_ESD .EQU 066H ; END OF SOUND DATA
BOOT .EQU 0000H ; boot location
BDOS .EQU 0005H ; bdos entry point
FCB .EQU 005CH ; file control block
FCBCR .EQU FCB + 20H ; fcb current record
BUFF .EQU 0080H ; DMA buffer
PRINTF .EQU 9 ; BDOS print string function
OPENF .EQU 15 ; BDOS open file function
CLOSEF .EQU 16 ; BDOS close file function
READF .EQU 20 ; BDOS sequential read function
CR .EQU 0DH ; carriage return
LF .EQU 0AH ; line feed
EOS .EQU '$' ; end of string marker
.ORG 100H
LD (OLDSTACK),SP ; save old stack pointer
LD SP,STACK ; set new stack pointer
LD DE,MSG_WELC ; Welcome Message
CALL PRTSTR
LD C,OPENF
LD DE,FCB
CALL BDOS
INC A
JP Z, ERR
XOR A ; Read VGM file into memory
LD (FCBCR), A
LD DE, VGMDATA
LD (VGMPOS), DE
RLOOP LD C, READF
LD DE, FCB
CALL BDOS
OR A
JR NZ, RDONE
LD HL, BUFF
LD DE, (VGMPOS)
LD BC, 128
LDIR
LD (VGMPOS), DE
JR RLOOP
RDONE LD C, CLOSEF ; Close the file
LD DE, FCB
CALL BDOS
LD DE,MSG_BADF ; Check valid file
LD HL,VGMDATA
LD A,(HL)
CP 'V'
JP NZ,EXIT_ERR
INC HL
LD A,(HL)
CP 'g'
JP NZ,EXIT_ERR
INC HL
LD A,(HL)
CP 'm'
JP NZ,EXIT_ERR
INC HL
LD A,(HL)
CP ' '
JP NZ,EXIT_ERR
LD HL,VGMDATA+08H ; Get version in DE:HL
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD B,(HL)
INC HL
LD C,(HL)
EX DE,HL
PUSH BC
POP DE
; CALL PRTHEX32
LD HL,(VGMDATA+16H) ; Is GD3 in range?
LD A,H
OR L
JR NZ,SKIP_GD3
LD HL,(VGMDATA+14H) ; Is there a GD3 header
LD DE,VGMDATA+14H
ADD HL,DE
LD A,(HL)
CP 'G'
JR NZ,SKIP_GD3
INC HL
LD A,(HL)
CP 'd'
JR NZ,SKIP_GD3
INC HL
LD A,(HL)
CP '3'
JR NZ,SKIP_GD3
INC HL
LD A,(HL)
CP ' '
JR NZ,SKIP_GD3
LD DE,0009H ; Skip version and size
ADD HL,DE
CALL CRLF
GD3_NXT: LD A,(HL) ; Print English Track
OR A
INC HL
INC HL
JR Z,GD3_NXT1
CALL PRTCHR
JR GD3_NXT
GD3_NXT1: LD A,(HL) ; Skip Japanese Track
OR A
INC HL
INC HL
JR NZ,GD3_NXT1
; JR GD3_NXT1
CALL CRLF
GD3_NXT2: LD A,(HL) ; Print English Title
OR A
INC HL
INC HL
JR Z,GD3_NXT3
CALL PRTCHR
JR GD3_NXT2
GD3_NXT3: CALL CRLF
SKIP_GD3: LD HL, (VGMDATA + 34H) ; Determine start of VGM
LD A, H ; data.
OR L
JR NZ, _S1
LD HL, 000CH ; Default location (40H - 34H)
_S1 LD DE, VGMDATA + 34H
ADD HL, DE
LD (VGMPOS), HL
LD HL,D60 ; VGM delay (60hz)
LD (VGMDLY), HL
MAINLOOP CALL PLAY ; Play one frame
LD C,6 ; Check for keypress
LD E,0FFH
CALL BDOS
OR A
JR NZ,EXIT
LD HL,(VGMDLY) ; Frame delay
L1 LD B,FRAME_DLY
DJNZ $
DEC HL
LD A,H
OR L
JR NZ,L1
JR MAINLOOP
EXIT
#IFDEF SBCV2004
CALL FASTIO
#ENDIF
LD A, 9FH ; Mute all channels on psg
OUT (PSGREG), A
OUT (PSG2REG), A
LD A, 0BFH
OUT (PSGREG), A
OUT (PSG2REG), A
LD A, 0DFH
OUT (PSGREG), A
OUT (PSG2REG), A
LD A, 0FFH
OUT (PSGREG), A
OUT (PSG2REG), A
LD A, 8 ; Mute all channels on ay
OUT (RSEL), A
OUT (RSEL2), A
XOR A
OUT (RDAT), A
OUT (RDAT2), A
LD A, 9
OUT (RSEL), A
OUT (RSEL2), A
XOR A
OUT (RDAT), A
OUT (RDAT2), A
LD A, 10
OUT (RSEL), A
OUT (RSEL2), A
XOR A
OUT (RDAT), A
OUT (RDAT2), A
CALL FASTIO
setreg($22,$00) ; lfo off
setreg($27,$00) ; note off ch 0
setreg($28,$01) ; note off ch 1
setreg($28,$02) ; note off ch 2
setreg($28,$03) ; note off ch 3
setreg($28,$04) ; note off ch 4
setreg($28,$05) ; note off ch 5
setreg($28,$06) ; note off ch 6
setreg($28,$01) ; note off ch 1
setreg($2b,$00) ; dac off
setreg($28,$00) ; key off
LD DE,MSG_EXIT
EXIT_ERR: CALL PRTSTR
LD SP, (OLDSTACK)
RST 00H
ERR LD C, PRINTF
LD DE, NOFILE
CALL BDOS
RST 00H
NOFILE .DB "File not found", CR, LF, EOS
MSG_EXIT .DB "FINISHED.",CR,LF,0
;------------------------------------------------------------------------------
; VGM Player.
;------------------------------------------------------------------------------
PLAY
#IFDEF SBCV2004
CALL SLOWIO
#ENDIF
LD HL, (VGMPOS) ; Start processing VGM commands
NEXT LD A, (HL)
INC HL
LD (VGMPOS), HL
CP VGM_ESD ; Restart VGM cmd
JR NZ, NEXT1
LD HL, (VGMDATA + 1CH) ; Loop offset
LD A, H
OR L
JP Z, EXIT
LD DE, VGMDATA + 1CH
ADD HL, DE
LD (VGMPOS), HL
JR NEXT
NEXT1 CP VGM_GG_W ; Game Gear SN76489 stereo. Ignored
JR NZ, PSG
INC HL
JR NEXT
PSG CP VGM_PSG_W ; Write byte to SN76489.
JR NZ, PSG2
LD A, (HL)
INC HL
OUT (PSGREG), A
JR NEXT
PSG2 CP 30H ; Write byte to second SN76489.
JR NZ, AY
LD A, (HL)
INC HL
OUT (PSG2REG), A
JR NEXT
; AY SECTION
AY CP 0A0H
JR NZ,YM
LD A, (HL)
INC HL
BIT 7, A ; Bit 7=1 for second AY-3-8910
JR Z, AY1
AND 7FH
OUT (RSEL2), A
LD A, (HL)
INC HL
OUT (RDAT2), A
JR NEXT
AY1 OUT (RSEL), A
LD A, (HL)
INC HL
OUT (RDAT), A
JR NEXT
; YM SECTION
YM: CP 052H
JR NZ, YM2
LD A,(HL)
OUT (YMSEL),A
INC HL
LD A,(HL)
OUT (YMDAT),A
INC HL
JR NEXT
YM2: CP 053H
JR NZ, PCM
LD A,(HL)
OUT (YM2SEL),A
INC HL
LD A,(HL)
OUT (YM2DAT),A
INC HL
JP NEXT
PCM:
WAITNN CP 61H ; Wait nn samples
JR NZ, WAIT60
LD A, (HL)
INC HL
LD D, (HL)
INC HL
LD (VGMPOS), HL
LD L, A
LD H, D
LD (VGMDLY), HL
RET
WAIT60 CP VGM_W735 ; Wait 735 samples (60Hz)
JR NZ, WAIT50
LD (VGMPOS), HL
LD HL, D50
LD (VGMDLY), HL
RET
WAIT50 CP VGM_W882 ; Wait 882 samples (50Hz)
JR NZ, WAIT1
LD (VGMPOS), HL
LD HL, D60
LD (VGMDLY), HL
RET
WAIT1 CP 70H ; WAIT 0-15 SAMPLES
JR C, UNK ; CODES 70-7FH
CP 80H
JP NC, UNK
SUB 6FH
LD L, A
LD H, 0
LD (VGMDLY), HL
RET
UNK: CALL PRTDOT
CALL PRTHEX
JP NEXT
SLOWIO:
#IFDEF SBCV2004
PUSH AF
LD A,(HB_RTCVAL)
OR %00001000 ; SBC-V2-004+ CHANGE
OUT (RTCIO),A ; TO HALF CLOCK SPEED
POP AF
#ENDIF
RET
FASTIO:
#IFDEF SBCV2004
LD A,(HB_RTCVAL)
AND %11110111 ; SBC-V2-004+ CHANGE TO
OUT (RTCIO),A ; NORMAL CLOCK SPEED
#ENDIF
RET
#INCLUDE "printing.inc"
MSG_WELC: .DB "VGM Player for RomWBW v0.1, 8-Nov-2021",CR,LF
; .DB "J.B. Langston/Marco Maccaferri/Phil Summers",CR,LF
.DB 0
MSG_BADF: .DB "Not a VGM file",CR,LF,0
;------------------------------------------------------------------------------
; Variables
;------------------------------------------------------------------------------
VGMPOS .DW 0
VGMDLY .DW 0
OLDSTACK .DW 0 ; original stack pointer
.DS 40H ; space for stack
STACK ; top of stack
;------------------------------------------------------------------------------
; VGM data
;------------------------------------------------------------------------------
VGMDATA
.END

43
Source/Apps/Tune/VGMPLAY.TXT

@ -0,0 +1,43 @@
VGM Player for Z80
==================
Simple player for VGM (Video Game Music) files.
Usage:
VGMPLAY MUSIC.VGM
Default Ports:
D8H-D0H - First AY-3-8910 (RSEL/RDAT)
A0H-A1H - Second AY-3-8910
FFH - First SN76489
FBH - Second SN76489
C6H-C7H - YM2612/YM3484
If your system uses different ports you need to recompile the source.
Note: The player should be compatible with VGM files up to version 1.51
but there are very few controls (if any) in the code, be sure to have
a good VGM file that doesn't contain much extra data. These files can be
very big, the player is limited to the available TPA space which is
typically around 54-55k, bigger files will overwrite the CP/M code and/or
wrap around the 64k limit.
The played is designed to run on a standard RC2014 with a 7.3728 MHz clock,
if your system uses a different clock you need to adjust the frame delay accordingly.
Example Music Files
===================
LEMMIN01.VGM - SN76489 - Lemmings: Title Screen
PENGUI03.VGM - AY-3-8910 - Penguin Adventure: Forest Path
PITFAL02.VGM - 2xSN76489 - Pitfall II: Scene 1
TIGER02.VGM - 2xAY-3-8910 - Tiger Hely: First Mission
WONDER01.VGM - 2xSN76489 - Wonder Boy in Monster Land
FILTHY01.VGM - YM3484 - Columns : Filthy
ITSGAMOV.VGM - YM3484+SN76489 - Puyo Puyo Tsuu : It's Game Over!
Original Source by J.B Langston, Marco Maccaferri
ROMWBW + YM2612/YM3484 version by Phil Summers

2
Source/HBIOS/Config/SBC_max.asm

@ -63,3 +63,5 @@ SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
PRPENABLE .SET TRUE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
;
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
;
SN7ENABLE .SET TRUE ; SN : SN76489 DRIVER

1
Source/HBIOS/cfg_dyno.asm

@ -187,6 +187,7 @@ UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC2014|VGM]
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4

1
Source/HBIOS/cfg_ezz80.asm

@ -229,6 +229,7 @@ UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC2014|VGM]
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4

1
Source/HBIOS/cfg_master.asm

@ -296,6 +296,7 @@ UFBASE .EQU $0C ; UF: REGISTERS BASE ADR
SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC2014|VGM]
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4

1
Source/HBIOS/cfg_mbc.asm

@ -228,6 +228,7 @@ UFBASE .EQU $0C ; UF: REGISTERS BASE ADR
SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC2014|VGM]
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4

1
Source/HBIOS/cfg_mk4.asm

@ -229,6 +229,7 @@ UFBASE .EQU $0C ; UF: REGISTERS BASE ADR
SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC2014|VGM]
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4

1
Source/HBIOS/cfg_n8.asm

@ -227,6 +227,7 @@ FIFO_BASE .EQU $0C ; UF: REGISTERS BASE ADR
SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC2014|VGM]
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4

1
Source/HBIOS/cfg_rcz180.asm

@ -241,6 +241,7 @@ UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC2014|VGM]
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4

1
Source/HBIOS/cfg_rcz280.asm

@ -257,6 +257,7 @@ UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC2014|VGM]
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4

1
Source/HBIOS/cfg_rcz80.asm

@ -246,6 +246,7 @@ UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
SNMODE .EQU SNMODE_RCZ80 ; DRIVER MODE: SNMODE_[NONE|RC2014|VGM]
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4

3
Source/HBIOS/cfg_sbc.asm

@ -227,7 +227,8 @@ UFBASE .EQU $0C ; UF: REGISTERS BASE ADR
;
SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
SN7CLK .EQU 3575950 ; DEFAULT OSCILLATOR
SNMODE .EQU SNMODE_VGM ; DRIVER MODE: SNMODE_[NONE|RC2014|VGM]
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4

1
Source/HBIOS/cfg_scz180.asm

@ -236,6 +236,7 @@ UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
SNMODE .EQU SNMODE_NONE ; DRIVER MODE: SNMODE_[NONE|RC2014|VGM]
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4

17
Source/HBIOS/sn76489.asm

@ -12,9 +12,18 @@
; CONSTANTS
;======================================================================
;
#IF (PLATFORM == PLT_SBC) & (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 (PLATFORM == PLT_RCZ80) & (SNMODE == SNMODE_RCZ80)
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 CPUOSC/4; DEFAULT TO CPUOSC / 4
#ENDIF
SN7_IDAT .EQU 0
SN7_TONECNT .EQU 3 ; COUNT NUMBER OF TONE CHANNELS
SN7_NOISECNT .EQU 1 ; COUNT NUMBER OF NOISE CHANNELS
@ -263,7 +272,7 @@ SN7_APPLY_VOL: ; APPLY VOLUME TO BOTH LEFT AND RIGHT CHANNELS
#IFDEF SBCV2004
LD A,(HB_RTCVAL)
OR %11110111 ; SBC-V2-004+ CHANGE TO
AND %11110111 ; SBC-V2-004+ CHANGE TO
OUT (RTCIO),A ; NORMAL CLOCK SPEED
#ENDIF
@ -308,7 +317,7 @@ SN7_APPLY_PRD:
#IFDEF SBCV2004
LD A,(HB_RTCVAL)
OR %11110111 ; SBC-V2-004+ CHANGE TO
AND %11110111 ; SBC-V2-004+ CHANGE TO
OUT (RTCIO),A ; NORMAL CLOCK SPEED
#ENDIF
@ -345,7 +354,7 @@ SN7_APPLY_PRD:
#IFDEF SBCV2004
LD A,(HB_RTCVAL)
OR %11110111 ; SBC-V2-004+ CHANGE TO
AND %11110111 ; SBC-V2-004+ CHANGE TO
OUT (RTCIO),A ; NORMAL CLOCK SPEED
#ENDIF
@ -403,7 +412,7 @@ SNT_PLAY .DB "\r\nSN7_PLAY CH: $"
SNT_REGWR .DB "\r\nOUT SN76489, $"
#ENDIF
; THE FREQUENCY BY QUARTER TONE STARTING AT A0# OCATVE 0
; 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 $2E
; ASSUMING A CLOCK OF 1843200 THIS MAPS TO

8
Source/HBIOS/std.asm

@ -200,7 +200,7 @@ SDMODE_MK4 .EQU 7 ; MARK IV
SDMODE_SC .EQU 8 ; SC (Steve Cousins)
SDMODE_MT .EQU 9 ; MT (Shift register SPI WIZNET for RC2014)
;
; SOUND CHIP MODE SELECTIONS
; AY SOUND CHIP MODE SELECTIONS
;
AYMODE_NONE .EQU 0
AYMODE_N8 .EQU 1 ; N8 BUILT-IN SOUND
@ -210,6 +210,12 @@ AYMODE_RCZ180 .EQU 4 ; RC2014 SOUND MODULE BY ED BRINDLEY ON Z180
AYMODE_MSX .EQU 5 ; RC2014 SOUND MODULE REV6 BY ED BRINDLEY ON Z80/Z180 AT MSX PORTS
AYMODE_LINC .EQU 6 ; LINC Z50 AY SOUND CARD
;
; SN SOUND CHIP MODE SELECTIONS
;
SNMODE_NONE .EQU 0
SNMODE_RCZ80 .EQU 1 ; RC2014 SOUND MODULE
SNMODE_VGM .EQU 2 ; VGM ECB BOARD
;
; TMS VIDEO MODE SELECTIONS
;
TMSMODE_NONE .EQU 0

Loading…
Cancel
Save