Compiler und Assembler für das N64

Das Programmieren fürs Nintendo 64 ist nicht gerade einfach. Man sollte schon eine gewisse Programmiererfahrung haben und Geduld mitbringen da man Informationen und Programme sich mühevoll zusammensuchen muss. Hier ist ein Teil des Ergebnisses meiner Suche. Eine Übersicht der Compiler und Assembler die ich gefunden habe.

Das Problem mit den Bibliotheken

Das Nintendo 64

Das eigentliche Probleme vor dem man steht, wenn man für das N64 programmieren will, ist eigentlich gar nicht irgendeinen Compiler für den MIPS-Prozessor zu finden. Es gibt Assembler und den GNU Compiler für MIPS-Prozessoren, aber damit ist es nicht möglich den Grafikprozessor und seine speziellen Befehle auszuführen, man kann dann lediglich in einem Framebuffer-Modus einzelne Pixel setzen aber keine texturierten Dreiecke mit Prozessorunterstützung anzeigen lassen.

Die entsprechenden Grafikfunktionen stellte Nintendo mit Bibliotheken zur Verfügung. Leider hat die N64-Szene sich nie groß damit beschäftigt die Funktionsweise dieser Befehle rauszufinden und eine eigene Bibliothek zu schreiben. Also etwas ähnliches zu schaffen wie es auf dem NDS gelungen ist.

Auch die Programmierer der Emulatoren haben sich nicht wirklich mit diesem Problem beschäftigt. Anstatt den Grafikprozessor von Grund auf zu emulieren haben sie sich mit der Interpretation der HighLevel-Funktionen der einzelnen Grafikbibliotheken begnügt. Erleichtert wurde dies auch dadurch das Nintendo den Entwicklern das schreiben eigener Grafikfunktionen mehr oder weniger verboten hatte, einige Entwickler (z.B. Rare, Factor 5) ausgenommen die später dann auch die Grafikleistung des N64 besser ausreitzten. Diese Spiele erkennt man dann auch daran das dann oft viele Grafikfehler im Spiel auftauchen wenn man sie mit einem Emulator spielt, da nicht alle Grafikfunktionen richtig interpretiert werden.

Da nun aber nur die offiziellen Bibliotheken auf den Emulatoren laufen, muss man quasi, wenn man seine Programme auf dem Emulator laufen lassen will, die offiziellen Bibliotheken benutzen dann klappts auch meist mit den Emulatoren. Der Framebuffermodus, den man leicht benutzen kann, wird wiederum nicht von allen Emulatoren unterstützt, weil die offiziellen Spiele diesen so gut wie gar nicht verwendet haben.

Ausnahme ist hierbei moogle-tech.com, wo es über einen N64 Emulator für MESS geht, wo den 3D Funktionen wirklich auf den Grund gegangen wird/wurde. Leider seit 1,5 Jahren nicht mehr aktualisiert worden.

Compiler und Assembler

Hier nun eine kurze Übersicht über alle Assembler und Compiler die ich bei meiner Suche gefundne habe.

  • LemAsm (zophar.net, romhacking.net)
    LemAsm ist eher ein N64 Rom Editor oder Disassembler als ein Assembbler. Das Tool beinhaltet einen Hex Viewer, Mips Editor und Image Viewer.
  • N64 Development „Starter Kit“
    Ein Assembler von hcs.
    Damit hat er den NES-Emulator Neon64 programmiert.
  • Open Source Nintendo 64
    Hier gibt es die GNU Compiler Collection für die MIPS umgesetzt. Bibliotheken sind auch dabei, allerdings unterstützen diese nur den Framebuffermodus, also 2D Grafiken. Unter den Low Level Funktionen sollten auch Kontrollerabfagen sein, womit man ein Spiel für das N64 schreiben können sollte.
    Ich hab damit keine Erfahrung, da ich diesen Weg nicht wirklich ausprobiert habe. Außer das ich mir selber einen GNU Compiler für MIPS mal erstellt habe und dann im Framebuffermodus ein paar einzelne Pixel gesetzt habe.
  • N64 Development Tools
    Im Neo-Forum gibt es die GCC in einer neueren Version. Dazu kommen noch ein paar Bibliotheken.
    Im „N64 Development libraries/docs/code snippets“-Thread gibt es noch ein paar mehr Bibliotheken. Darunter auch „YETI 3D“ womit man 3D-Grafik hinbekommt, aber auch nur per Software berechnet und mit Hilfe des Framebuffermodus angezeigt. Leider keine echte Hardware Unterstützung.
  • Psy-Q
    Das offizielle SDK, zumindest das Paket aus dem Compiler und den Bibliotheken, heißt Psy-Q. Man hat in den Foren immer darüber gesprochen, aber es gab keine direkten Links zu einem Download. Man wurde immer nur darauf verwiesen das man es mit Google im Internet findet und deswegen verweise ich auch hiermit an Google.
    Mit den offiziellen Bibliotheken kann man dann natürlich auch auf die 3D Hardware zugreifen.
    Bilder von der Hardware, die die Entwickler hatten, gibt es hier.

Kommentare zu “Compiler und Assembler für das N64”

  1. WarChris

    Hallo.

    Ich beschäftige mich seit ein paar Tagen auch etwas genauer mit dem N64. Ich fände es echt gut wenn du erklären könntest, wie man sich selber de benötigte Toolchain erstellt, Alle links zu Anleitungen sind etweder down oder wichtige Dateien die in den anleitungen verlinkt sind, sind nicht mehr vorhanden.
    Die Linkliste ist echt gut. vielen Dank das du die veröffentlicht hast.

    WarChris

  2. sfan

    Auch ich beschäftige mich mit Devlopment auf N64 und habe das gleiche Problem wie WarChris.
    Vielen Dank auch von mir für die Linkliste.

    Sfan

  3. Jim

    Hab auch gerade gesehen das bei „Open Source Nintendo 64″ die Downloads für die Compiler offline sind. Aber ich hab hier noch einen Link wo man ein paar Compiler und Assembler fürs N64 herunterladen kann (RCP64, Nintendo 64 Machine). Eigentlich wollte ich nämlich auf das GroundZero Devkit verlinken (auch ein GNU-Compiler).

    Das erstellen der GNU-Compiler ist bei mir schon länger her. Da muss ich am Wochenende erst mal nach den Daten schauen. Hab die Festplatte dafür im Moment nicht bei mir.
    Wenn ich dann noch ein Einstiegsprojekt von mir mit Assembler oder Compiler (kein Psy-Q) finde werde ich das auch noch hier hochladen. Vielleicht hilft euch das auch weiter.

  4. WarChris

    @Jim: Danke für die schnelle antwort. Der neue Link ist echt gut. Der Compiler funktioniert nämlich.

  5. WarChris

    Hallo
    Ich wollte nochmal wegen des GNU GCC’s nachfragen, weißt du inzwischen wieder wie man den erstellt?
    Ich nutze inzwischen hauptsächlich Linux und immer WINE nutzen um die Tools zu benutzen ist ziemlich lästig und das klappt auch manchmal nicht so wie es soll.

    WarChris

  6. Jim

    Hier sind ein paar Dateien von dextrose.com. In der Datei „gnuintro.zip“ ist eine Anleitung dabei mit den Befehlen um die binutils und gcc entsprechend zu erstellen.

Kommentar verfassen

XHTML: Du kannst folgende Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>