Beiträge von Milkymalk

    Also irgendwie blicke ich nicht durch, was da jetzt den Trick macht. Das ; am Ende ist es nicht.

    EDIT: Ah, du springst bei der Grafik die einzelnen Zeilen nochmal an, statt den normalen CRLF vom Print zu verwenden. Ja, das wäre eine Möglichkeit ... Hm, je nachdem wie sich die Ablage der Grafiken im Speicher (oder deren Auslagerung auf Disk) so entwickelt wäre das wirklich besser.

    Ach du meinst die Steuerzeichenvariante, bei der man das letzte Zeichen vorab schreibt und in Position schiebt? Ja, das ginge auch. Dann muss ich aber beim Schreiben der Beschreibungen und anderer Strings immer im Kopf behalten, dass ich das mache, wenn der Text hinten anstößt. Da bin ich auf Dauer zu faul, ich schreibe lieber vorab eine Routine und bin dann sorgenfrei :D

    Code
    10 REM ### SET CURSOR ###
    11 POKE781,CY:POKE782,CX:POKE783,0:SYS65520
    12 IFW$=""THENGOTO20
    14 PRINTLEFT$(W$,LEN(W$)-1):POKE1024+CX+CY*40+LEN(W$)-1,FNSC(ASC(RIGHT$(W$,1)))
    15 POKE55296+CX+CY*40+LEN(W$)-1,12
    19 W$=""
    20 RETURN

    Das ist jetzt die komplette Routine. Ich setze W$ auf den String, den ich PRINTen will, CY und CX auf die Koordinaten, und mache GOSUB 10. Mal schauen, ob ich überhaupt andere Schriftfarben verwende, denn wenn nicht färbe ich die letzte Spalte einmal durchgehend und nehme das dort raus, auch wenn es nur ein paar Millisekunden kostet, das immer wieder zu tun.

    Achso, da steckt hinten noch eine Funktion drin, die PETSCII in Bildschirmcode übersetzt. Das würde jetzt den Rahmen sprengen und beim N3rdroom ist das alles wunderbar erklärt ;)

    Hm, so etwas habe ich jetzt nach ausgiebigem Testen auch befürchtet. Dann schreibe ich am besten eine Subroutine, die den zu PRINTenden String hinten abschneidet und das letzte Zeichen POKEt. Alles zu POKEn habe ich schon ausprobiert, aber das ist dann doch ZU langsam.

    Mir ist das aber auch neu. Bisher dachte ich, logisch verbundene Zeilen kommen nur bei direkter Eingabe zustande. Aber bisher habe ich aus Ästhetikgründen auch immer ein Zeichen ringsum Platz gelassen, darauf habe ich diesmal verzichtet.

    Folgendes passiert:

    1. Die Unterteilungslinien werden gePRINTet

    2. Die Beschreibung oben rechts wird gePRINTet, dabei wird der Cursor per SYS-Befehl an den Anfang der nächsten Zeile gesetzt:

    Code
    POKE781,CY:POKE782,CX:POKE783,0:SYS65520

    3. Der Cursor wird per Steuerzeichen nach oben links versetzt und die PETSCII-Grafik wird per einfacher aufeinanderfolgender PRINT-Befehle ausgegeben.

    Aus irgendeinem Grund überspringt er dabei jede zweite Zeile. Wenn ich dann mit dem Cursor runtergehe und scrolle verschwinden auch immer jeweils zwei Zeilen auf einmal oben aus dem Bild. Meine Vermutung ist, dass das mit der Erkennung zusammenhängender Zeilen zusammenhängt, aber ich bin da absoluter Laie und weiß nicht weiter. Kann mir da jemand helfen?

    Ah, jetzt habe ich es verstanden ... ich muss das 0-bit des Wellenformregisters löschen, damit der Release einsetzt! Ich habe erst nicht kapiert, was du jetzt mit 32 willst, aber irgendwann hat es Klick gemacht!

    Ich habe die Adressen aus einer Registerübersicht und um mir die Adressen besser einprägen zu können habe ich nicht nur einen Offset am Ende sondern gebe die letzten beiden Stellen komplett an. Da alle mit 542 anfangen hat es sich so angeboten.

    Die Lautstärke setze ich erst nach dem Start der Wellenform hoch, weil ich hoffte, durch die minimale Verzögerung das Knacken wegzubekommen. Hat nicht geklappt, macht aber für das Ergebnis praktisch keinen Unterschied. Das Knacken nervt wirklich, kann man das nicht irgendwie abstellen?

    Hallohallo,

    Ich mache gerade erste zaghafte Schritte in die Welt der Musik und Soundeffekte. Vorab erstmal, was ich schon habe:

    Code
    1 R=54200:FOR I=72 TO 96:POKE R+I,0:NEXT I
    2 POKE R+73,3:POKE R+72,150:REM FREQUENZ
    5 POKE R+77,10*16+0:POKE R+78,5*16+10:REM WAVE 10,0,5,10
    6 REM A=0.5S D=6MS S=5/15 R=1.5S
    7 POKE R+76,33:POKE R+96,15:REM START SOUND
    8 SL=TI:REM WAIT FOR 2 SECONDS
    9 IF TI < SL+120 THEN GOTO 9
    13 POKE R+96,0:REM SOUND OFF

    in Zeile 6 habe ich nochmal notiert, was die Wellenform darstellen soll. Der Ton soll zuerst anschwellen, dann auf ein leiseres Niveau zurückfallen und über 1,5 Sekunden abklingen. Allerdings wird der Release, also das Abklingen am Ende, komplett ignoriert und der Ton bleibt bei voller Lautstärke, bis er abgeschaltet wird. Außerdem beginnt der Ton immer mit einem störenden Knacken. Ich nehme an, dass dieses Knacken vom Aktivieren des SIDs kommt, aber ich weiß nicht, wie ich es unterbinden kann.

    Dann noch eine weitere Frage: Kann ich die Frequenz des Tons während er abgespielt wird ändern, oder muss ich dafür einen neuen Ton "anschlagen"? Ich weiß, dass eine kontinuierliche Änderung der Tonhöhe in vielen Sidtunes verwendet wird, aber ist das unter Basic möglich?

    EDIT: Achja, ich arbeite mit CCS64 V3.8 :)