[stella] Paddle-based sound utility

Subject: [stella] Paddle-based sound utility
From: jimn8@xxxxxxxxxx (Jim Nitchals)
Date: Mon, 14 Oct 1996 10:29:21 -0700 (PDT)
;
; Utility found on Dennis Caswell's source disk for Escape from the Mindmaster
;
; Kind of like SoundX, but no volume control built in.

; File name: SOUNDS                        
;           .LIST OFF
           llchar '.'
VSYNC      .EQ $0
VBLANK     .EQ $1
WHSYNC     .EQ $2
P1CONT     .EQ $4
P2CONT     .EQ $5
P1COLOR    .EQ $6 ; 
P2COLOR    .EQ $7 ; 
PFCOLOR    .EQ $8
BCOLOR     .EQ $9
PFCONT     .EQ $A
RP1        .EQ $B
RP2        .EQ $C
PF1        .EQ $D
PF2        .EQ $E
PF3        .EQ $F
PL1POS     .EQ $10 ; 
PL2POS     .EQ $11 ; 
M1POS      .EQ $12 ; 
M2POS      .EQ $13 ; 
BALPOS     .EQ $14 ; 
S1TYPE     .EQ $15 ; 
S2TYPE     .EQ $16 ; 
S1PITCH    .EQ $17 ; 
S2PITCH    .EQ $18 ; 
S1VOL      .EQ $19 ; 
S2VOL      .EQ $1A ; 
PL1        .EQ $1B
PL2        .EQ $1C
MIS1       .EQ $1D
MIS2       .EQ $1E
BALL       .EQ $1F
P1SHFT     .EQ $20 ; 
P2SHFT     .EQ $21 ; 
M1SHFT     .EQ $22 ; 
M2SHFT     .EQ $23 ; 
BLSHFT     .EQ $24 ; 
PL1DC      .EQ $25 ; 
PL2DC      .EQ $26 ; 
BALLDC     .EQ $27
MS1RST     .EQ $28 ; 
MS2RST     .EQ $29 ; 
SHIFT      .EQ $2A ; 
SZERO      .EQ $2B
CZERO      .EQ $2C ; 
COLSN0     .EQ $30 ; 
COLSN1     .EQ $31
COLSN2     .EQ $32 ; 
COLSN3     .EQ $33
COLSN4     .EQ $34
COLSN5     .EQ $35
COLSN6     .EQ $36
COLSN7     .EQ $37
PDL1       .EQ $38
PDL2       .EQ $39
PDL3       .EQ $3A
PDL4       .EQ $3B
JSBTN1     .EQ $3C ; 
JSBTN2     .EQ $3D ; 
STICK      .EQ $280 ; 
CONSOL     .EQ $282 ; 
TIMER      .EQ $284 ; 
TIME1C     .EQ $294 ; 
TIME8C     .EQ $295 ; 
TIME64C    .EQ $296 ; 
TIME1KC    .EQ $297 ; 
           .OR $81
P1VAL      .BS 1
P2VAL      .BS 1
TYPPTR     .BS 2
PITPTR     .BS 2
TEMP       .BS 1
COLOR      .BS 1
VOLUME     .BS 1
       .OR $F800
*********************************
*                               *
* VCS SOUND DEVELOPMENT UTILITY *
*                               *
*   CONTROLS ONE SOUND VOICE:   *
*    PADDLE 1 CONTROLS TYPE;    *
*    PADDLE 2 CONTROLS PITCH.   *
* VOLUME IS INITIALIZED TO ZERO.*
* WHILE EITHER PADDLE BUTTON IS *
* HELD DOWN, THE VOLUME IS SET  *
* TO THE VALUE IN THE ZERO-PAGE *
* LOCATION "VOLUME," AND THE    *
* SOUND IS HEARD.               *
*                               *
*********************************
START  SEI
       CLD
       LDA #$00
       TAX
CLEAR  STA 0,X
       TXS
       INX
       BNE CLEAR
       LDA #$80
       STA BCOLOR
       LDA #$88
       STA P1COLOR
       LDA #$48
       STA P2COLOR
       LDA /ZERO
       STA TYPPTR+1
       STA PITPTR+1
       LDA #8
       STA VOLUME
SCREEN LDA #$FF
       STA VBLANK
       STA WHSYNC
       LDX #7
.0     DEX
       BNE .0
       STA PL1POS
       LDX #3
.1     DEX
       BNE .1
       STA PL2POS
       LDX #$48
       STX P2COLOR
       STA WHSYNC
       STA WHSYNC
       STA VSYNC
       LDA #$00
       STA WHSYNC
       STA WHSYNC
       STA WHSYNC
       STA VSYNC
       STA WHSYNC
       STA WHSYNC
       STA WHSYNC
       STA VBLANK
       LDA #0
       STA P1VAL
       STA P2VAL
       LDY #247
WAIT   STA WHSYNC
       LDA PDL3
       BMI .0
       STY P1VAL
.0     LDA PDL4
       BMI .1
       STY P2VAL
.1     DEY
       CPY #173
       BNE WAIT
       LDX #80
DOLIN1 STA WHSYNC
       LDA STYPE,X
       STA PL1
       LDA SPITCH,X
       STA PL2
       LDA PDL3
       BMI .0
       STY P1VAL
.0     LDA PDL4
       BMI .1
       STY P2VAL
.1     DEX
       DEY
       CPX #10
       BNE DOLIN1
       STA WHSYNC
       STA WHSYNC
       STA WHSYNC
       STA WHSYNC
       STA WHSYNC
       TXA		; KLUGE ALERT.
       PHA
       TYA
       SEC
       SBC #5
       TAX
       PLA
       TAY
DOLIN2 STA WHSYNC
       LDA (TYPPTR),Y
       STA PL1
       LDA (PITPTR),Y
       STA PL2
       LDA COLOR
       STA P2COLOR
       LDA PDL3
       BMI .0
       STX P1VAL
.0     LDA PDL4
       BMI .1
       STX P2VAL
.1     DEY
       BPL DOLIN2
       STA WHSYNC
       LDA #0
       STA PL1
       STA PL2
WAIT2  STA WHSYNC
       LDA PDL3
       BMI .0
       STX P1VAL
.0     LDA PDL4
       BMI .1
       STX P2VAL
.1     DEX
       BNE WAIT2
       LDA P1VAL
       BNE .9
       LDA #$FF
.9     LSR
       LSR
       LSR
       LSR
       STA S1TYPE
       STA TEMP
       LDY #10
       CLC
.2     ADC TEMP     ; MULTIPLY BY
       DEY         ;  ELEVEN.
       BNE .2
       STA TYPPTR
       LDY #$48
       LDA P2VAL
       BNE .8
       LDA #$FF
.8     EOR #$FF
       CMP #128
       BCC .3
       LDY #$4F
.3     STY COLOR
       LSR
       LSR
       LSR
       STA S1PITCH
       AND #$0F
       STA TEMP
       LDY #10
       CLC
.4     ADC TEMP
       DEY
       BNE .4
       STA PITPTR
       LDY VOLUME
       LDA STICK
       ASL
       ASL
       ASL
       ASL
       BPL .5
       ASL
       BPL .5
       LDY #0
.5     STY S1VOL
       JMP SCREEN
       align 256
; put this on a page boundary if your assembler doesn't support "align",
; for example: .OR $FA00
STYPE  .HS 0000000000000000000000
       .HS 000000
       .HS FFFFFFC0F8F8F8C0FFFFFF
       .HS 000000
       .HS C0C0C0FCFEFFC3C3FFFEFC
       .HS 000000
       .HS 18181818183C3C6666C3C3
       .HS 000000
       .HS 1818181818181818FFFFFF
       .HS 000000
       .HS 0000000000000000000000
SPITCH .HS 0000000000000000000000
       .HS 000000
       .HS C3C3C3C3FFFFFFC3C3C3C3
       .HS 000000
       .HS 3C7EFFE3C0C0C0E3FF7E3C
       .HS 000000
       .HS 1818181818181818FFFFFF
       .HS 000000
       .HS 3C3C3C18181818183C3C3C
       .HS 000000
       .HS C0C0C0FCFEFFC3C3FFFEFC
; same here: .OR or ORG to $FB00 if you don't have an align directive
       align 256

ZERO   .HS 3C7EFFE7C3C3C3E7FF7E3C
ONE    .HS 3C3C3C1818181818383818
TWO    .HS FFFFFFE0380E03E7FF7E3C
THREE  .HS 3C7EFFC3060C06C3FF7E3C
FOUR   .HS 060606FFFFFFC666361E0E
FIVE   .HS 3C7EE70307FFFCC0C0FFFF
SIX    .HS 3C7EC3C3FEFCC0C3E77E3C
SEVEN  .HS 30303030381C0E07FFFFFF
EIGHT  .HS 3C7EE7C3E77EE7C3E77E3C
NINE   .HS 3C7EE7C3033F7FC3C37E3C
A      .HS C3C3C3FFFFFFC3C3FFFF7E
B      .HS FCFEC7C7FEFCFEC7C7FEFC
C      .HS 3C7EE7C3C0C0C0C3E77E3C
D      .HS FCFEC7C3C3C3C3C3C7FEFC
E      .HS FFFFFFC0F8F8F8C0FFFFFF
F      .HS C0C0C0C0F8F8F8C0FFFFFF
       .or $FFFC
       .DA START
       
       bsave $f800,$800,2600demo.bin

	end


Current Thread