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

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

    Keine Sorge, fasse ich auch nicht so auf. Ist ja Weihnachten ;) !

    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.

    Das war aber nicht "einfach ein Link", sondern eine deutschsprachige Erklärung, die zumindest allgemeinverständlich gedacht war (wie erfolgreich das war, ist eine andere Frage), mit einem zusätzlichen weiterführenden Link für den Fall dass man genaueres wissen will. Wenn man ein Buch liest, gibt es ja auch oft Verweise auf tiefergehende Literatur. Kann man dann lesen, muss man aber nicht.


    EDIT: öhm, oder meintest Du @zrs1? Dann hat der ja schon für sich selber gesprochen... ^^

  • öhm, oder meintest Du zrs1?

    Ich nehme mal stark an, dass das an mich ging, bin mir aber nicht ganz sicher, wir haben ja inhaltlich ungefähr das gleiche geschrieben und auch die gleiche Dokumentation verlinkt -- eben die erste, die man mit Google findet, eventuell ja auch die einzige, die existiert.


    Auf jeden Fall finde ich diese Haltung albern und habe darauf ein bisschen ärgerlicher reagiert als du ;). Wenn das Ziel ist, ein Demo zu coden, dann sollte man schon in der Lage sein (oder sich das aneignen), diese Doku auch zu verstehen. Wenn konkrete Fragen auftauchen sollten kann ich sicher auch konkreter helfen -- aber eine Dokumentation des Dateiformats ist definitiv der richtige/empfehlenswerte Einstiegspunkt.


    Man kann natürlich auch einfach schreiben "nichts leicher als das, schneide $7c bytes vorne weg, linke den Rest zu deinem Programm, rufe einmal $1000 auf und dann in nem Raster-IRQ $1003". Schön. Klappt oft, hilft dem Fragesteller aber kein bisschen weiter, wenn er an ein SID file gerät, das eine andere Play-Adresse nutzt, CIA timing nutzt, 2x speed erwartet, oder was auch immer. Das alles kann man aus dem Header rauslesen und die verlinkte Doku ist die Referenz dazu.

  • Ich nehme mal stark an, dass das an mich ging, bin mir aber nicht ganz sicher, wir haben ja inhaltlich ungefähr das gleiche geschrieben und auch die gleiche Dokumentation verlinkt -- eben die erste, die man mit Google findet, eventuell ja auch die einzige, die existiert.
    Auf jeden Fall finde ich diese Haltung albern und habe darauf ein bisschen ärgerlicher reagiert als du ;). Wenn das Ziel ist, ein Demo zu coden, dann sollte man schon in der Lage sein (oder sich das aneignen), diese Doku auch zu verstehen. Wenn konkrete Fragen auftauchen sollten kann ich sicher auch konkreter helfen -- aber eine Dokumentation des Dateiformats ist definitiv der richtige/empfehlenswerte Einstiegspunkt.


    Man kann natürlich auch einfach schreiben "nichts leicher als das, schneide $7c bytes vorne weg, linke den Rest zu deinem Programm, rufe einmal $1000 auf und dann in nem Raster-IRQ $1003". Schön. Klappt oft, hilft dem Fragesteller aber kein bisschen weiter, wenn er an ein SID file gerät, das eine andere Play-Adresse nutzt, CIA timing nutzt, 2x speed erwartet, oder was auch immer. Das alles kann man aus dem Header rauslesen und die verlinkte Doku ist die Referenz dazu.

    sehe ich auch so. Aber viele wollen halt alles direkt auf dem Silbertablett angeboten haben. Bei trivialen Sachen seh ich das auch gar nicht mal so eng, wenn die Lösung nur ein paar Zeilen Code umfasst, aber in so einem Fall brauchts halt schon ein paar Details (Basics) mehr.

  • Man kann natürlich auch einfach schreiben "nichts leicher als das, schneide $7c bytes vorne weg, linke den Rest zu deinem Programm, rufe einmal $1000 auf und dann in nem Raster-IRQ $1003". Schön. Klappt oft, hilft dem Fragesteller aber kein bisschen weiter, wenn er an ein SID file gerät, das eine andere Play-Adresse nutzt, CIA timing nutzt, 2x speed erwartet, oder was auch immer. Das alles kann man aus dem Header rauslesen und die verlinkte Doku ist die Referenz dazu.

    Genau das wäre eine brauchbare Antwort gewesen, vielen Dank, ***perfekt ***.


    Ich bin auch nicht böse, das dies 23 Beiträge erfordert hat.


    Kurz zum Thema wer gemeint war: Ich meinte alle Verlinker.


    Und ein Silbertablett ist in weiter Ferne.


    Alles gut.

  • Genau das wäre eine brauchbare Antwort gewesen

    Das ist halt Ansichtssache ;) Warum ich das nicht für brauchbar halte hab ich kurz angerissen: Es passt für gefühlt 95% aller SIDs (habe noch vergessen zu erwähnen, dass man den kram auch nach $1000 laden sollte), aber eben nicht für alle. Das SID Dateiformat ist sehr viel flexibler, daher denke ich persönlich, dass jeder am meisten davon hat, wenn er sich die Doku in Ruhe zu Gemüte führt .... und wie gesagt gerne konkrete Fragen stellt, wenn irgendwas daran unverständlich ist! Aber egal, mal sehen was hier noch so kommt :)

  • So, auch gelernt das die SID Files einen Player enthalten - selber hatte ich ein File vom SIDTracker noch nicht in der Hand.
    Daher war der Link zu der Doku nicht schlecht.


    Zu der hier angesprochenen $1000/$1003 Geschichte - ja das war/ist eine verbreitete Adresse für die Tunes und hier war quasi die "JMP-Table" um den ganzen Initkrams zu machen und im Anschluß den Tune abzuspielen und daher auch verständlich das dieses meist als Bespiel herangezogen wird.


    Zum TurboAss:
    Wenn der Tune schon einmal im Speicher liegt und man weiß wo, kann man sich per "<- 6" den Speicherinhalt als .byte in den Source holen. Je nach Version wird auf ein .include unterstützt.

  • Dann noch einen drauf zur Hilfe:


    Die SID-Files haben in der Regel den Player drin. Man kann aber nicht immer davon ausgehen, dass Player und Musik am Stück vorliegen. Es ist auch bei einigen SIDs der Fall, dass große Teile relativ überflüssig mit enthalten sind.
    Oder dass jemand für das SID-File mehrere Songs, die sich eigentlich nicht im Speicher vertragen, in ein File gestopft hat. Da wird dann beim Umschalten des Songs statt ein Byte zu ändern, der komplette Player- und Song-Datenblock an eine Zieladresse kopiert. Technisch funktioniert das, für ein Spiel ist das aber tödlich, mal eben 3 Frames zum Daten umkopieren zu verbraten, nur um den Song zu wechseln.