vermutet er, dass die Type im Video davor schon mehrfach die Register gesetzt hatte. Es war also nicht leer. Hat er beim Erstellen des Videos bloß nicht dran gedacht.
Ja das meinte ich. Aber wo ich mir das Video jetzt nochmal angucke, da war das wohl die falsche Erklärung. Der Poket ja mit den Datazeilen im ersten Durchlauf alles auf 0, beim 2. Durchlauf müsste er dann imho das Problem bekommen...
Ich hab leider grad keinen Emulator zur Hand und kann alles nur aus dem Gedächtnis sagen.
kommt kein Ton und auch ein nachfolgendes korrektes Poken funktioniert dann nicht mehr.
Das hatte ich noch überlesen:
Das unterste Bit von 4 steuert die Hüllkurve, den Lautstärkeverlauf des Tons, ADSR.
Ist es gesetzt, dann laufen Attack/Decay/Sustain ab. Ist Sustain 0, weil es noch nicht in Register 6 geschrieben wurde, dann endet der Teil schnell bei Lautstärke 0.
Ist es gelöscht, dann läuft der Release-Teil ab, der Ton klingt dann vom Sustain-Level bis Laustärke 0 aus.
Setzen und löschen müssen sich abwechseln. Beim ersten Lauf des Programms endet der Ton mit Sustain-Level 0. Beim 2. Lauf bleibt der Ton dann bei 0, weil das Bit in SI+4 nie gelöscht wurde.
...Soweit jedenfalls die Theorie, aber das ist wohl nicht wirklich das Problem, oder nur zum Teil. Runstop/Restore setzt glaub ich eh alles im SID auf 0.
Mein Verdacht: Rumfummeln an an AD, SI+5, bringt was durcheinander, während grad die AD-Phase läuft. Da gibt es einen Bug im SID, an den ich mich aber nicht mehr richtig erinnere, und testen kann ich grad nicht. Probier mal Si+5,0, wie im Video, und dann probier mal weitere Läufe mit anderen Werten.
Warum wäre das "richtiger" als die 0?
Beides startet den Release-Teil, in dem der Ton ausklingen kann. 32 lässt dabei den Sägezahn als Wellenform an, man kann das Ausklingen hören. 0 schaltet jede Wellenform ab, der Ton endet sofort.
Ich weiß die Speicheradresse nicht auswendig aber ist das Register für die Lautstärke gesetzt?
Das ist das SI+24,15 am Ende.