Added assembly-time USE_AYDATA1 define:

. USE_AYDATA1=0: use the Cybernoid noisy section of 48 AY-reg sets
  - keys (to change A-period): 1...5; Q...T
. USE_AYDATA1=1: use just 2 AY-reg sets
  - keys (to change A-period): 1,2; Q,W
This commit is contained in:
tomcw 2021-01-02 21:41:06 +00:00
parent 0378adc3b1
commit 25a3efc4ff
1 changed files with 83 additions and 11 deletions

View File

@ -6,6 +6,7 @@
*=$4000
AY_UPDATE_OLD = 0
USE_AYDATA1 = 0
;------------------------------------------------------------------------------
@ -242,7 +243,7 @@ MB1x sty CARD_BASE+SY6522_ORA
lda #AY_LATCH
MB2x sta CARD_BASE+SY6522_ORB
MB3x stx CARD_BASE+SY6522_ORB ; Set INACTIVE
MBsmc1 lda AYData,y
MBsmc1 lda AYData1,y
MB4x sta CARD_BASE+SY6522_ORA
lda #AY_WRITE
MB5x sta CARD_BASE+SY6522_ORB
@ -253,7 +254,7 @@ MB7x sty CARD_BASE+SY6522_ORA
lda #AY_LATCH
MB8x sta CARD_BASE+SY6522_ORB
MB9x stx CARD_BASE+SY6522_ORB ; Set INACTIVE
MBsmc2 lda AYData,y
MBsmc2 lda AYData1,y
MBAx sta CARD_BASE+SY6522_ORA
lda #AY_WRITE
MBBx sta CARD_BASE+SY6522_ORB
@ -398,10 +399,17 @@ SF_GetTimerL:
;--------------------------------------
InitAYData
lda #<AYData
!if USE_AYDATA1 {
lda #<AYData1
sta pAYData+0
lda #>AYData
lda #>AYData1
sta pAYData+1
} else {
lda #<AYData2
sta pAYData+0
lda #>AYData2
sta pAYData+1
}
rts
;------------------------------------------------------------------------------
@ -474,10 +482,14 @@ smc2 lda #$00
; Odd lines
lda #<(AYData+14)
sta pAYData+0
lda #>(AYData+14)
sta pAYData+1
jsr InitAYData
clc
lda pAYData+0
adc #14 ; 1st odd set
sta pAYData+0
lda pAYData+1
adc #0
sta pAYData+1
lda #<TonesTblOdd
sta pTonesTbl+0
@ -540,6 +552,7 @@ PrintTones
sta $402
sta $403
!if USE_AYDATA1 {
lda TonesTbl+1*3+1
sta $404
lda TonesTbl+1*3+0
@ -575,6 +588,16 @@ PrintTones
lda #$A0
sta $412
sta $413
} else {
lda TonesTbl+2*3+1
sta $404
lda TonesTbl+2*3+0
sta $405
lda #$A0
sta $406
sta $407
}
sec
rts
@ -582,6 +605,7 @@ PrintTones
;--------------------------------------
TonesInc
!if USE_AYDATA1 {
ldy #0
cmp #'1'+$80
beq .inc
@ -598,6 +622,15 @@ TonesInc
iny
cmp #'5'+$80
beq .inc
} else {
ldy #0
cmp #'1'+$80
beq .inc
iny ; skip 'evens' end marker
iny
cmp #'2'+$80
beq .inc
}
clc
rts
@ -629,6 +662,7 @@ TonesInc
;--------------------------------------
TonesDec
!if USE_AYDATA1 {
ldy #0
cmp #'Q'+$80
beq .dec
@ -645,6 +679,15 @@ TonesDec
iny
cmp #'T'+$80
beq .dec
} else {
ldy #0
cmp #'Q'+$80
beq .dec
iny ; skip 'evens' end marker
iny
cmp #'W'+$80
beq .dec
}
clc
rts
@ -676,6 +719,7 @@ TonesDec
;--------------------------------------
InitTones
!if USE_AYDATA1 {
ldy #0*3
lda #$01
sta TonesTbl+0*3+1
@ -701,12 +745,24 @@ InitTones
sta TonesTbl+5*3+1
lda #$f4
sta TonesTbl+5*3+0
} else {
ldy #0*3
lda #$01
sta TonesTbl+0*3+1
lda #$e9
sta TonesTbl+0*3+0
;
lda #$00
sta TonesTbl+2*3+1
lda #$cd
sta TonesTbl+2*3+0
}
rts
;--------------------------------------
TonesTbl ; word freq, byte count
!if USE_AYDATA1 {
; even sets
!word $01e9
!byte 18
@ -725,10 +781,24 @@ TonesTblOdd
!byte 6
!word $ffff ; end
!byte $ff
} else {
; even sets
!word $01e9
!byte 1
!word $ffff ; end
!byte $ff
TonesTblOdd
; odd sets
!word $00cd
!byte 1
!word $ffff ; end
!byte $ff
}
;--------------------------------------
AYData
AYData1
; A-period C-period Ena BVol Envelope
; B-period Noise AVol CVol
; Cybernoid AY-regs generated by AppleII Cybernoid (so has Mockingboard tone freqs)
@ -783,5 +853,7 @@ AYData
!byte $F4,$00,$00,$00,$00,$00,$2F,$3E,$00,$00,$00,$64,$00,$0A
!byte $ff,$ff
AYDataReset
!byte $00,$00,$00,$00,$00,$00,$00,$3F,$00,$00,$00,$00,$00,$00 ; Set all channels off
AYData2 ; just freq modulation (no amplitude modulation)
!byte $E9,$01,$00,$00,$00,$00,$2F,$3E,$0D,$00,$00,$64,$00,$0A
!byte $CD,$00,$00,$00,$00,$00,$2F,$3E,$0D,$00,$00,$64,$00,$0A
!byte $ff,$ff