Von SID File zu POKE

Es gibt 9 Antworten in diesem Thema, welches 1.165 mal aufgerufen wurde. Der letzte Beitrag (12. November 2022 um 16:48) ist von SkulleateR.

  • Hallo,

    ich habe ein SID-File mit einem zweistufigen, ansteigenden Ton und nach einer kurzen Pause ein kurzer dumpfer Ton.

    Ich würde die gern mittels POKE in einem BASIC Programm von mir verwenden (mit Erlaubnis der Komponistin)

    Gibt es eine einfache Möglichkeit, die nötigen POKE Kommandos anhand der Bytes im SID File zu ermitteln?

    Es geht um ein Abtipp-Programm für das Weihnachtsheft, da jetzt mittels DATA einen SID-Player reinzupacken wäre denk ich keine Lösung :wink:

    Vielen Dank!

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Nein, in SID-Files sind eigentlich spezielle PRGs mit ein paar Metainformationen und die Player dafür spezialisierte C64-Emulatoren, die keine Bildausgabe haben.

    Mit etwas Gebastel kann man aber die Werte (und die Zeiten, zu denen sie in die SID-Register geschrieben werden) mit einem gepatchten VICE oder mit viel Gesteppe im Monitor rausbekommen.

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Hm, ok.

    Ich hatte ja gehofft, so ein SID File würde im Prinzip auch "nur" eine Ansammlung dessen sein, was man in diversen Basic-Musik-Tutorials als Data-Blöcke findet (also ADSR, etc), bloß halt direkt als Bytes abgespeichert. Plus dann noch Header Informationen wie Komponist, SID-Specs, etc.

    Schade, dem scheint dann wohl nicht so zu sein?

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Die Rasterzeit für ein SID sind ja schon sehr gering. Das dürfte für ein BasicProgramm mit einer Poke-Orgie gar nicht zu schaffen zu sein. Ganz einfache SIDs dürten funktionieren, sowas wie Beethovens "Für Elise":)

  • Es würde tatsächlich nur um ein C-4 G-5 gehen, welches eine richtige Antwort akkustisch untermalt.

    Die reine Tonfolge hätte ich zb mit Envelope auf Basic 7 schon hinbekommen, aber es unterscheidet sich in Nuancen immer noch, und vor allem auch der schöne Nachklang fehlt noch.

    Deshalb war meine Hoffnung, einfach die Bytes rauszuholen, weil es auch nur um eine Stimme geht.

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Die Werte bekommst Du, indem Du VICE startest, in den Monitor gehst, watch d400 d41c und dann x eingibst, das Programm startest und dann jeweils notierst (wenn der Monitor sich aktiviert), was in die Register geschrieben wird (muss man etwas Assembler für können, ist aber nicht sooo wild) und dann jeweils mit x wieder das C64-Programm weiterlaufen lässt.

    Hier mal ein Beispiel, so sieht das nach einem poke54272,5 aus:

    Code
    (C:$e5cd) watch d400 d41c
    WATCH: 3  C:$d400-$d41c  (Stop on load store)
    (C:$e5cd) x
    --- in BASIC POKE54272,5 eingegeben ---
    #3 (Stop on store d400)   74/$04a,  47/$2f
    .C:b82a  91 14       STA ($14),Y    - A:05 X:05 Y:00 SP:f9 ..-...ZC   26756525

    Das STA schreibt den Akku, also "05". Passt.

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Alles klar, das werd ich mal probieren.

    Und diese Werte einfach aus dem SID File mit Hex-Editor rauslesen geht nicht?

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • das Programm startest

    ach, es ist ja tatsächlich ein .sid file, kein .prg.

    Kommt aus dem Goat-Tracker raus.

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Leider geht es nicht so leicht. Es gibt keine standardisierte Playerroutine und die Player schreiben ggfs. jeden Frame neue Werte in die SID-Register. Jeder Player hat andere Methoden, um diese u.U. sehr umfangreichen Daten so kompakt wie möglich zu speichern, daher kann man die nicht so leicht aus dem Sid-File lesen. 1570 ‘s Methode ist die sinnvollste, zumindest wenn es um einfache Sounds geht (sonst geht’s eh nicht in Basic).


    Edit: oder sowas wie SidDump verwenden: Bitte melde dich an, um diesen Link zu sehen.

    ────────────────────────────────────────────────────────────
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.
    ────────────────────────────────────────────────────────────

  • wenn du nur bestimmte Noten suchst, könnte diese Tabelle helfen :

    Bitte melde dich an, um diesen Link zu sehen.

    Und einer der Basic Profis hier kann dir auch bestimmt dazu erzählen, welchen Wert du wohin poken musst ;)

    "Werter Pöbel, wertes Gesocks ... aus dem Arsche zieht euch den Stock ..."