ich spiele gerade ein wenig mit den Pokey-Interrupts des Atari rum.
Ich habe gedacht, statt die Musikroutinen nur im VBI alle 1/50s aufzurufen, warum nicht die Pokey Interrupts nehmen und z.B. alle 1/100s die Musikroutinen aufrufen.
Grund:
Änderungen in der Musik kämen schneller, das klingt nochmal viel besser. Beispiel, ein schönes Plopp in Turbo-Basic:
Code: Alles auswählen
FOR I=15 TO 0 STEP -1
SOUND 0,35,10,I
NEXT I
Hat das schon mal jemand verwendet/ausprobiert?
Hier mal der Initialisierungscode, um einen Pokey Interrupt (den 2.) zu starten.
Code: Alles auswählen
lda #<pokey_interrupt_2
sta VTIMR2
lda #>pokey_interrupt_2
sta VTIMR2+1
lda 16
ora #2 ; erlaube pokey timer2
sta 16
lda #$10 ; 16 Bit Auflösung für Kanal 1&2
sta AUDCTL
lda #<634 ; Auf PAL 63334 / Anzahl Interrupts
sta AUDF1
lda #>634
sta AUDF2
lda #1 ; Interrupt starten
sta STIMER
lda #128+2 ; Pokey Interrupt 2 erlauben
sta IRQEN
rts
Er zählt einen Counter hoch und macht den Hintergrund schwarz oder grau. Das wandert ein wenig, weil die Interrupts nicht absolut synchron zum Screen kommen. Das OS speichert uns den Akku auf den Stack, bei RTI muss man den Akku per PLA nur wieder herstellen.
Code: Alles auswählen
counter=203
pokey_interrupt_2
inc counter
lda counter
and #1
beq white
lda #0 ; schwarzer Hintergrund
sta COLBK
sta 712
pla ; Pokey Interrupt verlassen, das ist so richtig!
rti
white
lda #$06 ; grauer Hintergrund
sta COLBK
sta 712
pla
rti
Weiß jemand mehr?