Hallo Besucher, der Thread wurde 5,1k mal aufgerufen und enthält 30 Antworten

letzter Beitrag von Skar am

SID Files in ein Assemblerprogramm einbetten

  • Hallo Leute,


    ich bin dabei ein kleines Demo auf dem C64 zu coden und das wichtigste fehlt mir noch. Nähmlich die Musik.
    Ich habe mir bereits ein paar SID Dateien zurecht gebastellt, die ich in der Demo verwenden würde. Diese habe ich bereits als DAT bzw. PRG Dateien vorliegen.


    Meine Frage ist wie bekomme ich den Code der SID in mein ASM File rein?

  • Ist in den Dateien nur noch der reine SID-Player drin?


    Wenn ja, ist es in der Regel ein binäres Inkludieren in den Code mit ggf. Skippen der beiden Lade-Adress-Bytes (!bin für ACME/C64Studio, !incbin ... bei anderen, etc.)


    Dann ist wichtig, dass die Adresse, an der du das File inkludest, der korrekten Adresse entspricht. Und dann musst du natürlich wissen, wie du den Player aufrufen musst.


    Die meisten haben eine Adresse für Song-Init und eine für Song-Update, das einmal pro Frame aufgerufen wird.

  • Hi


    Ich bin zwar nicht der beste Proger hier, aber bei meinen Demos habe ich das immer so geregelt


    So hat es bei mir fast immer funktioniert. Aber an der Routine musste ich aber immer wieder herum bastelen, denn je mehr der C64´er erledigen muss, desto mehr musste ich mich mit der verbleibende Zeit zurecht kommen.


    Gruss Drachen

  • Danke für Infos, aber die bringen mich leider nicht richtig weiter.


    Ich habe ein SID File, das ich mit SIDTracker64 erstellt habe und ob da der Player mit drin ist, kann ich so nicht sagen. Ich kann aber wenn gewünscht auch gerne die SID Datei mal hier hoch laden.


    Ich möchte die Demo so fertig machen, dass sie aus nur einer Datei besteht und ich nicht aus zwei (Demo+SID File). Die Musik soll sich zusammen mit dem Democode in einer Datei befinden.

  • Genau das gleiche Problem habe ich auch gerade und da die Meisten Code-Beispiele für Cross-Compiler sind („!bin c:\ ... bla bla) und ich aber ganz nativ mit Turbo Assembler direkt am C64 arbeite, bin ich gerade dabei mir eine IDE mit ACME und VICE unter Windows einzurichten.


    Ich habe eine wirklich ganz einfache Farbwechsel/Scrolltext-Demo und eine nackte SID-Datei und möchte beides verheiraten.


    Ich muss jetzt also (.... wenn ich richtig verstanden habe...):
    - Zeilen IRQ einfügen
    - SiD laden
    - SID innerhalb des Zeilensprungs aktualisieren

  • So wuerde das zB mit dem XA assembler funktionieren:


  • t0m3000:
    So wie ich das eben bei dem SIDTracker64 gesehen habe, kann man die Musikstücke in verschiedenen Formaten exportieren.
    Jetzt aus dem Bauch heraus würde ich sagen exportier das als *.prg.


    Entweder ist das denn ein ausführbares Programm oder es enthält nur den Tune und einen Player.
    Wenn es ausführbar ist, würde ich das starten und "klassisch" mit einem Monitor den Speicherbereich speichern.
    Zum Testen kannst Du das dann ja immer an die passende Position laden - für den späteren Onefile gibt es Packer/Cruncher die die einzelnen Files dann zusammenführen.


    Du kannst den Tune auch gerne hochladen oder PM und ich schaue mir das an und extrahiere die den Tune.
    Ggf. kann ich den auch die gewünschte Zieladresse relokieren - ich weiß ja nicht wo Du den eingeplant hast.


    Mit welcher Umgebung programmierst Du denn?


    @'RetroKid:
    Hier gilt wie ich oben schon sagte: das was benötigt wird in den Speicher laden (zum Testen/programmieren) und später alles mit einem Packer/Cruncher verheiraten.
    Je nachdem was Du vorhast:
    - Musik Init im Hauptprogramm
    - IRQ Startrasterzeile setzen und ggf. Raster stabilisieren
    - Effekt (Scroll/Rasterbar)
    - Musikplayer anspringen
    Ggf. vor dem Effekt die Musikabspielen - je nachdem wo du den Effekt haben willst.


    Turboasscode sollte nicht das Problem sein - sag ggf. Bescheid wo's genau hakt-

  • Ich habe ein SID File, das ich mit SIDTracker64 erstellt habe und ob da der Player mit drin ist, kann ich so nicht sagen.

    Und ich würde jetzt mal spontan behaupten: Ohne "Player" ergibt es gar keinen Sinn, da gibt es einfach zu viele Möglichkeiten, wie die Daten organisiert sein könnten. Es muss also immer Code enthalten sein, der aus den Musikdaten die SID Register regelmäßig aktualisiert.

  • Ich habe das ganze mit dem C64 Studio umsetzen können, da dort der Import von SID Files sehr einfach ist. Man benötigt nur die Abspielroutine im Assembler und FERTIG. Mit Turbo Assembler müsste man die ganzen DATA Zeilen von Hand eingeben, das ist beim Studio mit einem einfachem !import möglich. Dann einfach den Header rausrechnen lassen und gut ist.

  • Also beinhaltet eine .sid Datei nur die Noten?


    Schon merkwürdig das da so ein großes Geheimnis drum gemacht wird und dies mit Sicherheit nicht förderlich ist für zukünftige Softwareentwicklungen.

  • Also beinhaltet eine .sid Datei nur die Noten?


    Schon merkwürdig das da so ein großes Geheimnis drum gemacht wird und dies mit Sicherheit nicht förderlich ist für zukünftige Softwareentwicklungen.

    Noten werden es nicht sein, aber Daten in der bestimmten Reihenfolge und den Header (der muss weg).
    Ich habe auch etwas länger als gedacht für das Importieren des SID Files in mein Intro gebraucht.
    Schaue dir mein Intro mal an und disassembliere es mit C64 Studio dann siehst du den Quellcode.


    http://ibex-crew.org/93intro.prg


    Ich hoffe, dass es dir weiter hilft.


    Ich habe auch erst gedacht, dass das ein Top-Secret Code sein muss, der dort benötigt wird. Ich denke, dass die, die kein Plan davon haben ständig nur von der $1000hex Adresse reden, weil es das Wenige ist was sie über SIDs wissen und die, die es drauf haben es nicht so richtig aus sich rausbekommen.


    Schade eigentlich, ist aber so ;)

  • Also beinhaltet eine .sid Datei nur die Noten?

    Eben gerade nicht, wie ich nur wenige Postings darüber schon angemerkt habe ... ich würde mich sehr wundern, wenn es "SID Files" ohne Player-Code gäbe.

    Schon merkwürdig das da so ein großes Geheimnis drum gemacht wird und dies mit Sicherheit nicht förderlich ist für zukünftige Softwareentwicklungen.

    Was für ein Geheimnis? Hier ist z.B. das Format dokumentiert.

  • Eben gerade nicht, wie ich nur wenige Postings darüber schon angemerkt habe ... ich würde mich sehr wundern, wenn es "SID Files" ohne Player-Code gäbe. Was für ein Geheimnis? Hier ist z.B. das Format dokumentiert.

    Es geht ihm nicht um das Format SID, sondern um das Einbinden eines Files in Assembler.


    Dein Kommentar ist ein gutes Beispiel dafür was Moses und ich meinen.

  • Es geht ihm nicht um das Format SID, sondern um das Einbinden eines Files in Assembler.


    Dein Kommentar ist ein gutes Beispiel dafür was Moses und ich meinen.

    Was soll der Dummfug? Nix für ungut, aber es ist schon ärgerlich, so eine Reaktion zu bekommen, wenn man einfach die relevante Dokumentation verlinkt!

    • Dass in einem SID "nur Noten" gespeichert sind ist nunmal falsch, zumindest in dem Format das ich kenne
    • Mit der Dokumentation des Formats weiß man, wieviel Header man "wegschneiden" muss und wie der Rest der Daten zu nutzen ist für etwas hörbares.
  • Noten werden es nicht sein, aber Daten in der bestimmten Reihenfolge und den Header

    Der Player ist Teil des SID-Files, da es ja keine standardisierte Abspielroutine und keine standardisierten Daten auf dem C64 gibt. Die Spec ist hier zu finden, der Header enthält die Positionen der benötigten Routinen. Ein Player, der nicht auf dem C64 läuft, muss daher eine entsprechende 6502-Emulation enthalten.


    EDIT: huch, von einem halben Dutzend Postings überholt worden, während ich das getippt habe... :sleeping:

  • ***** Vorsicht! Dieser Post soll kein persönlicher Angriff sein!!! ******


    Aua Aua aua, vielen Dank für die Hilfe wenn es denn eine gewesen sein soll.


    Da bekommt man auf eine in einem deutschen Forum gestellte, offene Frage einfach einen Link zu einer englischsprachigen Internetseite von einem Author, der Zuhause höchstwahrscheinlich statt "Halt die Klappe" ersatzweise "lda#$00; sta $ d418" zu seinen Kindern sagt.


    Nicht sehr hilfreich für alle nicht-SID-Profis.


    Wenn ich Zeit dafür habe werde ich mir das alles mal durchlesen und am c64 durchkaspern.


    Falls mich z.B. mal jemand nach einer Telefonnummer fragt, schicke ich ihm einfach den Link vom "oertlichen", falls es diesen Unfug noch gibt. (Scherz)