do Zielonego wyslalem, ale do Ciebie Świety e-maila nie mam, podaj go to tez wysle pseudo player do synthow
;-------------------
;- Synth Player v1.0
;- 20.02.2004
;-------------------
opt h+
org $b000
tmp equ $00
tempo equ 6 ; tempo, ilosc pelnych przebiegow length_Loop
length_Loop equ 255 ; dlugosc petli playera, ile ma odegrac wartosci z sampla
audc1 equ $d201 ;rejestry Pokeya
audc2 equ $d203
audc3 equ $d205
audc4 equ $d207
;------------------------------------
;- PROCEDURKA PLAYER-a DLA 4 KANALOW
;------------------------------------
player equ *
;- kanal #1
clc
delay0 lda #0
delay0m adc #0
sta delay0+1
lda adres0+1
adc #0
sta adres0+1
adres0 ldx $ffff ; adres 1-ego sampla
volume0 lda $ff00,x ; adres tablicy glosnosci dla 1-ego sampla
ch0 sta audc1
;- kanal #2
clc
delay1 lda #0
delay1m adc #0
sta delay1+1
lda adres1+1
adc #0
sta adres1+1
adres1 ldx $ffff ; adres 2-ego sampla
volume1 lda $ff00,x ; adres tablicy glosnosci dla 2-ego sampla
ch1 sta audc2
;- kanal #3
clc
delay2 lda #0
delay2m adc #0
sta delay2+1
lda adres2+1
adc #0
sta adres2+1
adres2 ldx $ffff ; adres 3-ego sampla
volume2 lda $ff00,x ; adres tablicy glosnosci dla 3-ego sampla
ch2 sta audc3
;- kanal #4
clc
delay3 lda #0
delay3m adc #0
sta delay3+1
lda adres3+1
adc #0
sta adres3+1
adres3 ldx $ffff ; adres 4-ego sampla
volume3 lda $ff00,x ; adres tablicy glosnosci dla 4-ego sampla
ch3 sta audc4
dey
beq test
jmp player
*-----------------
test ldy #length_Loop
dec tmp ; tempo wyrazone w liczbie powtorzen petli playera
beq HEAD
jmp player
;-----------------------------------
;- dekodowanie patternu
;- ustawienie nowych czestotliwosci
;- glosnosci itp.
;-----------------------------------
HEAD
inc timer+1 ; licznik na potrzeby testow, ustawia po kolei 32 glosnosci i 32 czestotliwosci
timer lda #0
and #$1f
tay
tax
; ldx #0 ; numer sampla i czestotliwosc
* track 0
lda Adr_Volume,y
sta volume0+2
lda frq,x
sta delay0m+1
lda #0
sta delay0+1
lda Adr_Instr,x
sta adres0+2
lda #0 ; mlodszy adres sampla =0
sta adres0+1
* track 1
lda Adr_Volume,y
sta volume1+2
lda frq,x
sta delay1m+1
lda #0
sta delay1+1
lda Adr_Instr,x
sta adres1+2
lda #0
sta adres1+1
* track 2
lda Adr_Volume,y
sta volume2+2
lda frq,x
sta delay2m+1
lda #0
sta delay2+1
lda Adr_Instr,x
sta adres2+2
lda #0
sta adres2+1
* track 3
lda Adr_Volume,y
sta volume3+2
lda frq,x
sta delay3m+1
lda #0
sta delay3+1
lda Adr_Instr,x
sta adres3+2
lda #0
sta adres3+1
* let's go
lda #tempo
sta tmp
ldy #length_Loop
jmp player
*----
*- tutaj startuje program po wczytaniu do pamieci
*----
main
lda 20
cmp 20
beq *-2
sei ;wylaczenie ROM-u i wszystkich przerwan
lda #0
sta $d40e
sta $d400
lda #$fe
sta $d301
lda #0 ;zerujemy POKEY
sta $d208
lda #3
sta $d20f
ldx #33
ldy #0 ;ustawiamy 4-bit w tablicach glosnosci dla Pokeya
cnv0 lda volume,y ;w przypadku Covoxa, nie musielibysmy tego robic
ora #%00010000
cnv1 sta volume,y
iny
bne cnv0
inc cnv0+2
inc cnv1+2
dex
bne cnv0
jmp timer ;startujemy od zera (timer=0)
*----
*- tablice na 4-ej stronie
*----
org $0400
*----
*- instrumenty, czyli 256-bajtowe sample (32)
*----
Sampl00 ; fala prostokatna
:128 dta b($0f)
:128 dta b($00)
Sampl01 ; fala trojkatna
:8 dta b(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)
;- adresy instrumentow
Adr_Instr
:32 dta h(Sampl01)
*----
*- tablice z opuznieniami dla kazdej z czestotliwosci (nuty)
*----
;- oryginalna z INERTI (2 bajtowe wartosci L, H)
; dta l(50),l(53),l(57),l(60),l(63)
; dta l(67),l(71),l(76),l(80)
; dta l(85),l(90),l(95),l(101)
; dta l(107),l(113),l(120),l(127)
; dta l(135),l(143),l(151),l(160)
; dta l(170),l(180),l(190),l(202)
; dta l(214),l(227),l(240),l(254)
; dta l(270),l(286),l(302),l(320)
; dta l(339),l(360),l(381),l(404)
; dta l(428),l(453),l(480),l(508)
; dta l(539),l(571),l(605),l(641)
; dta l(679),l(719),l(762)
*- i dla obecnego playera, wziete z kosmosu :), trzeba je dobrac porzadniej
*- 48 wartosci
frq
dta l(050,053,056,059,062,065,068,071,074,077,080,083)
dta l(086,089,092,095,098,101,104,107,110,113,116,119)
dta l(122,125,128,131,134,137,140,143,146,149,152,155)
dta l(158,161,164,167,107,173,176,179,182,185,188,191)
*----
*- tablica ze starszymi adresami glosnosci (33)
*----
Adr_Volume
dta h(volume,volume+$100,volume+$200,volume+$300,volume+$400,volume+$500,volume+$600,volume+$700)
dta h(volume+$800,volume+$900,volume+$a00,volume+$b00,volume+$c00,volume+$d00,volume+$e00,volume+$f00)
dta h(volume+$1000,volume+$1100,volume+$1200,volume+$1300,volume+$1400,volume+$1500,volume+$1600,volume+$1700)
dta h(volume+$1800,volume+$1900,volume+$1a00,volume+$1b00,volume+$1c00,volume+$1d00,volume+$1e00,volume+$1f00)
dta h(volume+$2000)
*----
*- 33 tablice z glosnosciami, kazda po 256 bajtow
*- dla Pokeya, trzeba ustawic 4-bit we wszystkich tablicach
*----
org $1000
volume ins 'volume.tab'
*---
run main
*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C