1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-01 13:41:34 +00:00

add sound command

this behives the same as BASIC

sound(voice, pitch, distortion, volume)
This commit is contained in:
Mariano Dominguez 2023-01-05 21:12:58 -08:00
parent e944a30b6a
commit f9024d132a
2 changed files with 49 additions and 0 deletions

View File

@ -235,6 +235,12 @@ extern void __fastcall__ _scroll (signed char numlines);
/* numlines < 0 scrolls down */
/*****************************************************************************/
/* Sound function */
/*****************************************************************************/
extern void __fastcall__ sound (unsigned char voice, unsigned char frequency, unsigned char distortion, unsigned char volume); /* plays a sound in the specidied voice, to silence call with in other params*/
/*****************************************************************************/
/* Misc. functions */
/*****************************************************************************/

43
libsrc/atari/sound.s Normal file
View File

@ -0,0 +1,43 @@
;
; Mariano Domínguez
; 2022-12-4
;
; atari lib
;
.include "atari.inc"
.export _sound
.import popa
; play sound, arguments: voice, pitch, distortion, volume. same as BASIC
.proc _sound
sta STORE2 ;save volume
jsr popa ;get distortion
sta STORE1 ;save distortion
jsr popa ;get pitch
pha ;save in stack
jsr popa ;get voice
asl a ;adjust voice *2 for offset in x
tax
pla ;get pitch from stack
sta AUDF1,x ; store pitch
lda #0
sta AUDCTL
lda #3
stx SKCTL ; init sound
lda STORE1 ;get distortion
asl a ;ignore the high nibble
asl a
asl a
asl a
clc ; setup for adding volume
adc STORE2 ; add volume
sta AUDC1,x ; volume + distortion in control channel
rts
.endproc
; reserve 2 bytes for temp storage
.bss
STORE1: .res 1
STORE2: .res 1