Seite 1 von 1
Stereo Pokey how to programming
Verfasst: 14.02.2023 17:21
von LarsImNetz
Hi,
hat jemand gute Informationen, wie man die Doppel-Pokeys programmiert? Also eine Art Software Manual?
Oder weiß, wo ich so etwas finde und würde die Info mit mir teilen?
LG
Lars
Re: Stereo Pokey how to programming
Verfasst: 14.02.2023 17:29
von pps
Was hast Du denn vor? Musik abspielen geht ganz gut mit RMT (bis 1.28 mit den RMT asm Routinen sogar optimiert auf den Song und seine genutzten Features) oder RMT 1.34 und LZSS Export und dann halt mit LZSS Routine (most recent files:
rmt2lzss_new).
Auf meinem github kannst Du da was zu finden.
Ansonsten muss man halt einfach auch den 2. POKEY initialisieren und in seine Register schreiben ($D200-$D20F POKEY1 & $D210-$D21F POKEY2)
Ich nutze sehr gerne die Möglichkeit einfach Mono Songs bei vorhandenem 2. POKEY dann auch dort abzuspielen. Es gibt dann auch schöne Stereo Effekte, da beide POKEYs ja nicht zur selben Zeit ihre Daten bekommen. Die Lieder können so auch vollständig ohne 2.POKEY angehört werden.
Re: Stereo Pokey how to programming
Verfasst: 14.02.2023 19:16
von LarsImNetz
Erstmal danke pps.
RMT wollte ich nicht verwenden, weil er mir zu fett erscheint. Meine Musik-Routine belegt ca. 5kb (ungepackt) mit sämtlichen Geräuschen, Hüllkurven und Musik.
Ich wollte mal sehen, ob ich da noch ein paar Effekte anpassen könnte. Etwas Zeit habe ich ja noch.
LG
Lars
Stereo Pokey how to programming
Verfasst: 14.02.2023 20:18
von Erhard
Hi,
pps hat geschrieben: ↑14.02.2023 17:29
Lieder können so auch vollständig ohne 2.POKEY angehört werden.
werden dann auf grund der fehlenden Adressdekodierung die Werte nicht 2x in den einen POKEY geschrieben und führt das dann nicht zu wenn auch minimalen Störungen im Sound?
CU, Erhard
Re: Stereo Pokey how to programming
Verfasst: 14.02.2023 20:35
von pps
Erhard hat geschrieben: ↑14.02.2023 20:18
Hi,
pps hat geschrieben: ↑14.02.2023 17:29
Lieder können so auch vollständig ohne 2.POKEY angehört werden.
werden dann auf grund der fehlenden Adressdekodierung die Werte nicht 2x in den einen POKEY geschrieben und führt das dann nicht zu wenn auch minimalen Störungen im Sound?
CU, Erhard
Ja das passiert, wenn man bei Mono Betrieb dennoch in die Register für POKEY2 schreibt. Daher sollte man prüfen, ob ein 2. POKEY da ist und nur dann in dessen Register schreiben.
Re: Stereo Pokey how to programming
Verfasst: 14.02.2023 20:37
von pps
LarsImNetz hat geschrieben: ↑14.02.2023 19:16
Erstmal danke pps.
RMT wollte ich nicht verwenden, weil er mir zu fett erscheint. Meine Musik-Routine belegt ca. 5kb (ungepackt) mit sämtlichen Geräuschen, Hüllkurven und Musik.
Ich wollte mal sehen, ob ich da noch ein paar Effekte anpassen könnte. Etwas Zeit habe ich ja noch.
LG
Lars
Verständlich. Allerdings könnte da LZSS helfen. Das ist ja letztlich nur ein gepackter Strom der Daten, die in die Register geschrieben werden. Daher wird auch sehr wenig Rechenzeit benötigt zum Abspielen.
Stereo Pokey how to programming
Verfasst: 15.02.2023 08:16
von Erhard
Hi,
pps hat geschrieben: ↑14.02.2023 20:35
Daher sollte man prüfen, ob ein 2. POKEY da ist
stelle ich mir ein bisschen schwierig vor. Denn wenn man die Adressen für den zweiten POKEY anspricht antwortet ja der erste, wenn kein zweiter da ist.
Ich hab jetzt die POKEY-Register nicht auf dem Schirm ... aber man bräuchte eine Adresse, über die man unterschiedliche Werte erhalten kann, wenn 2 POKEYs da sind.
Da ich schon mal irgendwo gelesen habe, daß manche Programme nicht sauber erkennen, ob ein zweiter POKEY vorhanden ist scheint dies nicht ganz trivial zu sein.
CU, Erhard
Re: Stereo Pokey how to programming
Verfasst: 15.02.2023 09:11
von pps
Erhard hat geschrieben: ↑15.02.2023 08:16
Hi,
pps hat geschrieben: ↑14.02.2023 20:35
Daher sollte man prüfen, ob ein 2. POKEY da ist
stelle ich mir ein bisschen schwierig vor. Denn wenn man die Adressen für den zweiten POKEY anspricht antwortet ja der erste, wenn kein zweiter da ist.
Ich hab jetzt die POKEY-Register nicht auf dem Schirm ... aber man bräuchte eine Adresse, über die man unterschiedliche Werte erhalten kann, wenn 2 POKEYs da sind.
Da ich schon mal irgendwo gelesen habe, daß manche Programme nicht sauber erkennen, ob ein zweiter POKEY vorhanden ist scheint dies nicht ganz trivial zu sein.
CU, Erhard
Das funktioniert zuverlässig (MADS):
Code: Alles auswählen
t_stereo ;returns negative accu, if 2nd POKEY is present
inc $d40e
lda #$03
sta $d21f
sta $d210
ldx #$00
stx $d211
inx
stx $d21e
ldx:rne $d40b
stx $d219
loop ldx $d40b
bmi stop
lda #$01
bit $d20e
bne loop
stop lda $10
sta $d20e
dec $d40e
txa
rts
Es sollte alle Interrupts gestoppt sein, damit es korrekte Ergebnisse liefert!
Stereo Pokey how to programming
Verfasst: 15.02.2023 11:55
von Erhard
Hi,
vielen Dank für das Beispielprogramm, das kommt hinterher in meine Doku.
Was bedeutet
ldx:rne $d40b
in echtem 6502 Assembler?
CU, Erhard
Re: Stereo Pokey how to programming
Verfasst: 15.02.2023 12:12
von pps
Diese Vereinfachungen sind manchmal auch nicht wirklich kürzer als das Original

Stereo Pokey how to programming
Verfasst: 15.02.2023 14:46
von Erhard
Hi,
die Routine ist mir einigermaßen klar:
Im zweiten POKEY wird ein Timer eingestellt und über den ersten POKEY wird geprüft, ob das Ablaufen des Timers signalisiert wurde, was ja nur sein kann, wenn die Adressen für den zweiten POKEY _nicht_ dekodiert wurden (es also keinen zweiten POKEY gibt).
Was mir nicht klar ist sind die beiden Befehle
inc $d40e ; NMIEN
dec $d40e ; NMIEN
Da es sich hierbei um ein Nur-Schreib-Register handelt, können die Befehle keinen vorherigen Wert auslesen, um diesen dann zu inkrementieren oder zu dekrementieren.
Und selbst wenn, meines Wissens ist das Register mit $40 initialisiert, damit der VBL läuft. Was sollte die Erhöhung oder Verminderung um 1 bringen, noch dazu wo die unteren 5 Bits überhaupt nicht verwendet werden ???
CU, Erhard
Re: Stereo Pokey how to programming
Verfasst: 15.02.2023 15:11
von pps
Ich habe das nie in Frage gestellt. Die Routine funktioniert und daher habe ich sie so genutzt. Allerdings muss man ja die Interrupts vorher stoppen. Also bringt es vielleicht ja doch was. Ansonsten ist es vielleicht drin, damit jemand seine Routine wiedererkennen kann. Ich habe das ja nicht selbst geschrieben. Das war in einer Beispielroutine so drin.
Ich werde mal ohne testen und schauen, was dann passiert.
Stereo Pokey how to programming
Verfasst: 15.02.2023 16:23
von Erhard
Hi,
stellt sich auch die Frage, was passieren würde, wenn man die ANTIC Interrupts wirklich ausschaltet.
Das wäre dann ja wohl
LDA #0
STA NMIEN
Aber ob dann noch VCOUNT hochzählt ...
CU, Erhard
Re: Stereo Pokey how to programming
Verfasst: 15.02.2023 16:35
von pps
Nein, sei und cli sind nötig...
Re: Stereo Pokey how to programming
Verfasst: 18.02.2023 13:29
von LarsImNetz
So,
@pps vielen Dank für die "Ist 2ter Pokey vorhanden"-Routine, Die hab ich für mich etwas aufgeräumt, damit ich sie einfacher verwenden kann.
Night Knight klingt zumindest auf dem Altirra sehr viel besser mit 2 Pokeys, weil die Polyzähler nicht immer saubere Bässe liefern. Ist nur ein Pokey vorhanden, füttere ich nur die ersten 4 Sound Register, mit 2 Pokeys halt 8 Register. Zudem hab ich eine nette Stereo-Spielerei eingebaut.
Zu hören gibt es das alles erst zum ABBUC Software Contest 2023.
Ich würde sagen, Game ist fertig, RAM ist voll. $2000-$B755 und $BE00 - $FFFA sind belegt. Da bleibt nicht mehr viel Spielraum.
LG
Lars
Re: Stereo Pokey how to programming
Verfasst: 18.02.2023 14:18
von Kveldulfur
LarsImNetz hat geschrieben: ↑18.02.2023 13:29
Night Knight klingt zumindest auf dem Altirra sehr viel besser mit 2 Pokeys, weil die Polyzähler nicht immer saubere Bässe liefern.
Hi!
Wie jetzt? Also wenn möglich immer den 2. Pokey nehmen, selbst wenn man "Mono"-Musik hat?
Hmm, dann muss ich das für mein Spiel auch noch einprogrammieren
Danke
Janko
Re: Stereo Pokey how to programming
Verfasst: 18.02.2023 14:25
von LarsImNetz
Ja, genau.
Das klingt echt besser, auch wenn es nur Mono-Muke ist. Die "Test" Routine ist also ab sofort pflicht!
1 Pokey vorhanden, nur 1 Pokey mit Daten füttern.
2 Pokeys vorhanden, definitiv beide mit Daten füttern.
LG
Lars
Re: Stereo Pokey how to programming
Verfasst: 18.02.2023 15:11
von Kveldulfur
Hallo!
Tja, keine Ahnung, bei mir klingt der Sound schrecklich, wenn ich beide Pokeys nutze. Als ob sich die Frequenzen aufheben.
Lass ich nur links spielen... okay.
Lass ich nur recht spielen... okay.
Lass ich beide spielen... gequäke
Naja, ein Versuch war es Wert.
Grüße
Janko
Re: Stereo Pokey how to programming
Verfasst: 18.02.2023 15:34
von LarsImNetz
Hab ich schon mehrfach gehört:
Hier meine Routine zum Setzen der Daten in die Pokeys:
Das '?' am Anfang einiger Variablen steht für "lokale" Variablen innerhalb von '.local' Blöcken. Sonst ist es Plain Assembler Code. Den versteht Mann wenigstens. Ich habe mir zwischen-Register (softw_AUD*) angelegt, um die Daten on Block in die Pokeys zu setzen, ohne Schleifen.
RMT verwende ich nicht.
Code: Alles auswählen
; ist im Speicher ?stereo_pokey_available auf == 0
; dann ist nur 1 Pokey vorhanden.
AUDF1=$D200
AUDF2=$D202
AUDF3=$D204
AUDF4=$D206
AUDC1=$D201
AUDC2=$D203
AUDC3=$D205
AUDC4=$D207
@set_all_sound_register
lda ?stereo_pokey_available
beq ?mono_single_pokey
; ab hier gibt es 2 Pokeys
jsr ?left_pokey_2_to_4
; right_pokey_2_to_4
lda softw_AUDF1
sta AUDF1+$10
lda softw_AUDC1
sta AUDC1+$10
lda softw_AUDF2
sta AUDF2+$10
lda softw_AUDC2
sta AUDC2+$10
lda softw_AUDF3
sta AUDF3+$10
lda softw_AUDC3
sta AUDC3+$10
lda softw_AUDF4
sta AUDF4+$10
lda softw_AUDC4
sta AUDC4+$10
rts
?left_pokey_2_to_4
lda softw_AUDF1
sta AUDF1
lda softw_AUDC1
sta AUDC1
lda softw_AUDF2
sta AUDF2
lda softw_AUDC2
sta AUDC2
lda softw_AUDF3
sta AUDF3
lda softw_AUDC3
sta AUDC3
lda softw_AUDF4
sta AUDF4
lda softw_AUDC4
sta AUDC4
rts
; irgendwo:
softw_AUDF1
.byte 0
softw_AUDF2
.byte 0
softw_AUDF3
.byte 0
softw_AUDF4
.byte 0
softw_AUDC1
.byte 0
softw_AUDC2
.byte 0
softw_AUDC3
.byte 0
softw_AUDC4
.byte 0
Re: Stereo Pokey how to programming
Verfasst: 18.02.2023 16:00
von MichaG
LarsImNetz hat geschrieben: ↑18.02.2023 14:25
1 Pokey vorhanden, nur 1 Pokey mit Daten füttern.
2 Pokeys vorhanden, definitiv beide mit Daten füttern.
Das hieße ja, alte Programme, die sowieso nur einen nutzen, klingen auf 2 Pokey-Maschinen schlechter als auf "normalen"?
Re: Stereo Pokey how to programming
Verfasst: 18.02.2023 16:12
von LarsImNetz
Ich vermutte es sind Timing Probleme. Schon mal mit Altirra versucht? Wie klingt es dort?
Re: Stereo Pokey how to programming
Verfasst: 18.02.2023 16:31
von Kveldulfur
Hi!
Ich teste nur über den Altirra, da ich keine Stereo-Erweiterung besitze

Aber die Timing-Probleme will ich mal prüfen.
Danke
Janko
Re: Stereo Pokey how to programming
Verfasst: 18.02.2023 17:25
von Kveldulfur
Nein, will nicht, egal was ich mache. Es klingt irgendwie immer verzerrt und schrecklich. Selbst wenn ich es exakt so mache, wie Du oben zeigst.
Egal, das Spiel ist fertig und ich lasse lieber die Finger davon. Nicht, dass ich wieder Bugs reinhaue
Grüße
Janko
Re: Stereo Pokey how to programming
Verfasst: 18.02.2023 18:59
von pps
MichaG hat geschrieben: ↑18.02.2023 16:00
LarsImNetz hat geschrieben: ↑18.02.2023 14:25
1 Pokey vorhanden, nur 1 Pokey mit Daten füttern.
2 Pokeys vorhanden, definitiv beide mit Daten füttern.
Das hieße ja, alte Programme, die sowieso nur einen nutzen, klingen auf 2 Pokey-Maschinen schlechter als auf "normalen"?
Ja, da bei den ersten dual POKEY Erweiterungen immer je ein POKEY für eine Seite zuständig war. Dort gibt es kein Umschalten auf Mono Betrieb oder ein "Mischen" auf beide Seiten.
Neuere Stereo Boards habe da bessere Möglichkeiten. Nicht jeder kauft sich aber extra ein neues Bord dafür - ich z.B. nicht.
Unabhängig davon:
Allerdings klingt ein Mono Song den man auf beide POKEYs sendet nochmal deutlich fetter, da es halt einige Stereo Effekte gibt, da in die Register nacheinander und nicht zeitgleich geschrieben wird.
Re: Stereo Pokey how to programming
Verfasst: 18.02.2023 19:03
von pps
Kveldulfur hat geschrieben: ↑18.02.2023 15:11
Hallo!
Tja, keine Ahnung, bei mir klingt der Sound schrecklich, wenn ich beide Pokeys nutze. Als ob sich die Frequenzen aufheben.
Lass ich nur links spielen... okay.
Lass ich nur recht spielen... okay.
Lass ich beide spielen... gequäke
Naja, ein Versuch war es Wert.
Grüße
Janko
Du musst auf jeden Fall den 2. POKEY auch initialisieren, damit er den Sound korrekt abspielt. Wenn Du LZSS nutzt, nicht vergessen noch die selben Daten in den 2. POKEY zu schreiben, da Du sonst doppelt so schnell abspielst.
Re: Stereo Pokey how to programming
Verfasst: 18.02.2023 19:33
von CharlieChaplin
LarsImNetz hat geschrieben: ↑18.02.2023 13:29
Ich würde sagen, Game ist fertig, RAM ist voll. $2000-$B755 und $BE00 - $FFFA sind belegt. Da bleibt nicht mehr viel Spielraum.
LG
Lars
Krümelkacker sagt: $BE00-$FFFA, glaube ich nicht! Würde nämlich auf keinem A8 laufen (vielleicht ja mit MapRam, was außer XXL aber kaum einer hat). $D000-$D7FF ist wohl weitgehend (oder vollständig) ungenutzt. Müsste dann wohl $BE00-$CFFF und $D800-$FFFA heißen...
Re: Stereo Pokey how to programming
Verfasst: 18.02.2023 20:28
von Kveldulfur
pps hat geschrieben: ↑18.02.2023 19:03
Du musst auf jeden Fall den 2. POKEY auch initialisieren, damit er den Sound korrekt abspielt. Wenn Du LZSS nutzt, nicht vergessen noch die selben Daten in den 2. POKEY zu schreiben, da Du sonst doppelt so schnell abspielst.
Ja, ich habe den 2. Pokey initialisiert. Irgendetwas passt da bei mir nicht. Vllt. weil ich die Musik nicht im VBI, sondern im DLI abspiele (zu einem Zeitpunkt wo der Rechner sonst nur warten würde). Ich nutze meine eigene Engine, da ich so gleich Soundeffekte abspielen kann und die volle Kontrolle habe.
Grüße
Janko
Re: Stereo Pokey how to programming
Verfasst: 19.02.2023 18:47
von LarsImNetz
Krümelkacker sagt: $BE00-$FFFA, glaube ich nicht! Würde nämlich auf keinem A8 laufen (vielleicht ja mit MapRam, was außer XXL aber kaum einer hat). $D000-$D7FF ist wohl weitgehend (oder vollständig) ungenutzt. Müsste dann wohl $BE00-$CFFF und $D800-$FFFA heißen...
Die Lücke zw. $D000 und $D7FF sehe ich als nicht erwähnenswerte Selbstverständlichkeit an. Wenn ich von $BE00 - $FFFA spreche.
LG
Lars
Re: Stereo Pokey how to programming
Verfasst: 09.11.2023 11:29
von MichaG
LarsImNetz hat geschrieben: ↑18.02.2023 13:29
Night Knight klingt zumindest auf dem Altirra sehr viel besser mit 2 Pokeys, weil die Polyzähler nicht immer saubere Bässe liefern. (...) Zudem hab ich eine nette Stereo-Spielerei eingebaut.
Auch auf echten Ataris wirklich toll umgesetzt. Die meisten Games nutzen Stereo für die Musik, aber die Sounds von links oder rechts je nach Spielgeschehen habe ich so noch nicht erlebt. (Weitere Beispiele willkommen)
Getestet mit 800XL mit PokeyMax2 und 800XL mit Subcart.
Re: Stereo Pokey how to programming
Verfasst: 09.11.2023 16:11
von pps
MichaG hat geschrieben: ↑09.11.2023 11:29
(Weitere Beispiele willkommen).
Another Pong
Wenn ich mich richtig erinnere, auch Yoomp