Hallo Leute,
ich möchte euch heute meine noch nicht fertiggestellte Arbeit zeigen. Ob ich sie irgendwann abschließe, liegt zwar an mir – aber eben auch am Mega65.
Wie man schon an der Überschrift erkennen kann, handelt es sich um eine SID-Routine für sechs Stimmen. Das Problem an der Routine ist, dass ich es einfach nicht hinbekomme, sie in eine funktionierende IRQ-Routine zu überführen.
An diesem Problem sitze ich schon sehr lange. Egal was ich versucht habe – allein oder mit KI – am Ende funktioniert es einfach nicht. Der einzige Bereich, in dem die IRQ-Routine zuverlässig läuft, liegt zwischen $1600 und $1EFF. Das ist der Bereich, in dem das ROM ständig sichtbar ist. Verlässt man diesen Bereich, beginnen die Probleme. Man muss dafür sorgen, dass das ROM eingeblendet wird. Im Handbuch ist genau beschrieben, wie man das macht – und trotzdem scheitere ich kläglich daran.
Egal was ich unternommen habe: Der IRQ ließ sich einfach nicht umbiegen. Für ein paar Millisekunden wurde der IRQ vermutlich mit der neuen Adresse beschrieben, aber das System hat ihn sofort wieder auf den Standard zurückgesetzt. Ich habe es mit den Vektoren $0314 und $0315 sowie mit $FFFE und $FFFF versucht – nichts hat funktioniert. Das ist verdammt frustrierend.
Ich habe jede Möglichkeit ausprobiert, die ich im Netz finden konnte. Sogar die Routine aus dem Giana Sisters-Demo habe ich verwendet. Aber der liebe Mega65 hat alles abgeschmettert. Man glaubt es kaum, dass einen so eine simple IRQ-Routine in den Wahnsinn treiben kann.
Deshalb mache ich hier Schluss mit der Musikroutine. Ich stelle sie hier zur Verfügung – vielleicht findet ja jemand von euch eine Möglichkeit, eine einfache IRQ-Routine einzubinden. Und wenn ihr Erfolg habt, teilt es bitte mit allen – mich würde brennend interessieren, woran ich immer gescheitert bin.
Nun zur Musikroutine selbst:
Zunächst möchte ich sagen, dass diese Routine mit verschiedenen KIs geschrieben wurde – hauptsächlich mit ChatGPT.
Aber auch das lief nicht reibungslos. Als Grundlage habe ich einen Assemblercode von der Codebase-Seite verwendet, der von RANT Please login to see this link. stammt. Mehr steht im Kommentar-Kopf leider nicht.
Ganz am Anfang wollte ich die Routine in Assembler schreiben lassen – aber die KI hat sich ständig im Kreis gedreht, sobald ein Fehler auftrat. Irgendwann kam ich zu dem Schluss, es mal mit C zu versuchen. Da bin ich allerdings komplett auf die KI angewiesen, denn von C habe ich null Ahnung. In Assembler kenne ich mich wenigstens ein bisschen aus.
Nach kurzer Suche habe ich den Compiler „llvm-mos“ gewählt. Der läuft auch sehr gut, obwohl ich eine Weile gebraucht habe, um ihn zum Laufen zu bringen. Hätte ich halt vorher die README-Datei genau gelesen – da steht nämlich alles drin. Aber egal, ich habe es ja hinbekommen.
Auch in C hat die KI nicht immer alles richtig gemacht – auch hier drehte sie sich manchmal im Kreis. Aber mit viel Geduld habe ich schließlich eine lauffähige Musikroutine erhalten – nur eben nicht im IRQ. Momentan läuft sie in einer Schleife. Das ist für andere Anwendungen, bei denen man Musik braucht, leider völlig ungeeignet.
Das Problem mit dem IRQ hat mir den Spaß an der Mega65-Entwicklung momentan komplett verdorben.
Geplant war eigentlich, wenn die Musikroutine funktioniert hätte, noch einen Tracker zu entwickeln – in der Art von GoatTracker. Und später vielleicht sogar eine Art Musikshop. Aber wenn man schon an einem simplen IRQ beim Mega65 scheitert, mache ich mir für die anderen Projekte keine großen Hoffnungen.
Vielleicht liefern die Architekten des Mega65 ja irgendwann ein paar Beispiele, wie man eine eigene IRQ-Routine installiert. Ganz am Anfang wollte ich meine Musikroutine in Bank 4 platzieren – hat nie geklappt. Am Ende wollte ich sie in Bank 0 unterbringen – hat auch nicht funktioniert. Daher mein Frust.
Hier beende ich meinen Bericht. Ich wollte mir das einfach mal von der Seele schreiben. Ich hoffe, der eine oder andere kann damit etwas anfangen. Es gibt hier und da noch Dinge, die geändert werden müssten – aber im Großen und Ganzen läuft die Routine.
In der ZIP-Datei sind folgenden Daten enthalten:
SID_Soundbank_Spickzettel.pdf (hier werden alle Parameter der Soundbank erklärt)
musik.c (SID-Routine in C geschrieben)
song-01.h ( nicht fertig eingetipptes Lied - Gravity Falls es sind nur 2 Stimmen)
Musik_Disk.D81 ( entält das fertige Musikprogramm)
Ach noch was, was ich bis jetzt auch nicht korrieren konnnte, waren die Frequenz in der 6 Oktave.
Vielleicht weis da auch jemand einen Rat. Kann es zwar nicht verstehen, weil ich die Frequenzen auf dem Handbuch vom C64´er genommen habe.
Dann bis bald