Was ist und macht ein ROM-Hacker?

  • Was ist und macht ein ROM-Hacker?


    WICHTIG: Dies ist ein sehr grundlegegende Einführung für komplette Anfänger, die nicht wissen, was ein ROM-Hack ist und was man als ROM-Hacker für Aufgaben durchaus haben kann.


    Einleitung
    Ein ROM-Hacker modifiziert Daten in einem Videospiel, wie z.B. Grafiken, Dialoge, Einstellungen und andere Elemente, um ein eigenes Spiel basierend auf der Vorlage zu entwerfen. Meistens wird dies erreicht, indem man Programme von anderen ROM-Hackern benutzt, die die modifizierung eines Spiels vereinfachen. Jedoch ist es für die meisten Bereiche sinnvoll einen sogenannten HEX-Editor zu verwenden, der die Bereiche modifiziert, von denen zwar Offsets (also einer Adresse in diesen Daten) bekannt sind, aber es noch kein Programm dafür gibt.
    Es gibt viele verschiedene Arten von ROM-Hacks, z.B. das Übersetzen von Spielen, aber auch ROM-Hacks, die Zensur aus den Spielen entfernen. Hier auf Romhackersresources werdet ihr eher mit Modifikationen in Kontakt kommen, das heißt aber nicht, das ersteres ausgeschlossen ist.


    Communities
    Es gibt viele Möglichkeiten, wie man mit ROM-Hackern in Kontakt kommt. Die erste Möglichkeit habt ihr bereits kennengelernt, als ihr euch entschieden habt auf dieses Forum zu kommen. Es gibt aber auch die Möglichkeit, via Skype oder eines IRC-Channels in Kontakt zu kommen. Die meisten ROM-Hacker arbeiten in Gruppen, um sich die Arbeit zu vereinfachen, da man extrem viele Daten ändern muss, um einen erfolgreichen ROM-Hack auf die Beine zu stellen. Deshalb sind Communites unerlässlich. Hier einige Beispiele:


    Methoden des ROM-Hackers
    Es gibt verschiedene Methoden, wie ein ROM-Hacker eine ROM zu seinen Gunsten modifizieren kann. Ich möchte euch die grundlegensten Möglichkeiten vorstellen.


    HEX-Editieren
    Der HEX-Editor ist ein unverzichtbares Tool, wenn man Dinge ändern möchte. Zum einen sehr hilfreich, wenn man Dinge umpointen (also eine andere Stelle für seine Daten verwenden möchte) oder Strukturen erweitern oder bearbeiten möchte. Neben dem Dezimalsystem (Zahlen 0-9) das eigentlich jeder von euch irgendwann mal verwendet hat, gibt es das sog. Hexadezimalsystem (Zahlen 0-F). Ein Hexeditor macht nichts anderes als die gesamten Daten in einen HEX-Code umzuwandeln. Ein Beispiel für einen kostenlosen und soliden HEX-Editor ist der HxD, dessen Grafische Oberfläche so aussieht:


    Grafiken bearbeiten
    Wenn man Grafiken abändern möchte, bedarf es sogenannter Grafik-Editoren. Ein sehr populäres Tool ist der unLZ.gba, der alle komprimierten Grafiken in der ROM anzeigen, aber auch neue einfügen und alte abändern kann. LZ ist ein Komprimierungsverfahren, andere Komprimierungsverfahren wären z.B. das *.zip-Format. Es gibt aber auch alternativen wie den NLZ.gba, von dem man bei einem gewissen Offset Grafiken laden kann. Auch dieser Bereich sollte einem guten ROM-Hacker nicht fremd sein. Es ist auf verschiedene Weisen möglich, die Art und damit auch die Wirkung seines Spieles zu ändern. Viele Menschen legen Wert darauf, wie gut die Grafik eures Spieles ist.


    Paletten editieren
    Ein "Problem" der ersten GBA-Spiele ist, dass zu große Grafikdaten eine Menge Platz verschlingen können. Da dieser meist sehr begrenzt ist, gibt es die Möglichkeit, Bilder mit einer gewissen Farbtiefe zu importieren oder exportieren. Man spricht dann oft davon, dass man eine Palette bearbeitet. Wenn ihr auf Romhackersresoureces aktiv seit, wird euch der Begriff einer Palette früher oder später um die Ohren fliegen. Meistens sind dies 16-Farben oder 256-Farben Bilder, die ihr in einer ROM bearbeiten müsst. Sollte die Farbtiefe des Bildes nicht mit der Palette überseinstimmen, führt dies unweigerlich zu Dastellungsfehlern im Spiel.


    Assembly Hacking ("ASM")
    Einer der schwierigsten aber auch zugleich effektivsten Methoden euren ROM-Hack strahlen zu lassen ist das sogenannte ASM-Hacking (kurz: ASM). Der Code varriert von Spiel zu Spiel, meistens benutzt man einen Debugger um den Code eines ASM-Abschnittes im Spiel verständlich zu machen.
    Ein Laie wird mit ASM-Hacking in aller Regel am Anfang relativ wenig anfangen können, im verlaufe der Zeit ist es aber wegen der technischen Möglichkeiten durchaus sinnvoll, sich immer mehr damit auseinanderzusetzen.


    Musik bearbeiten
    Neben dem ASM-Hacking zählt das Musik-Hacking zu einem der Bereiche, in dem man mit einigem Aufwand große Wirkung erzielen kann. Ein sehr populäres Programm, Musik abzuändern ist der Sappy Mod 2006. Solltet ihr euch nicht wirklich für Musik interessieren oder nicht in der Lage sein, eigene Musik zu erstellen, ist es aber auch nciht wirklich dramatisch, wenn ihr ein Team-Mitglied an die Sache ranlässt. Denn in Fakten Musikhacking kann man auch einiges falsch angehen.

    ROM erweitern

    Irgendwann im Verlauf der ganzen oben genannten Methoden wird es früher oder später dazu kommen, dass euch slicht und ergreifend der Speicher (für die meisten Titel) einfach zu klein wird. In dem Falle müsst ihr eine ROM erweitern. Für den GBA wird meistens das 16-MB oder das 32-MB Format verwendet. Mittlerweile unterstützen viele Tools für Pokémon erweiterte ROMs.

    Nutzung vom ROMs

    Über die Nutzung von ROM-Dateien gibt es einige Dinge zu sagen. Der Besitz einer solchen Datei liegt rechtlich gesehen in einer Grauzone, d.h. es wird nciht offiziell geregt ob dies (ill)legal ist. Defacto ist aber die Verbreitung einer solchen Datei grundsätzlich verboten. Deshalb wird oft darauf zurückgegriffen, einen Patcher zu benutzen, der die Dateiformate in legale Formate ändern kann, z.B. *.ups. Dann ist die Verbreitung auch wieder gestattet und ihr könnt andere Spieler an eurem Spiel teilhaben lassen.


    Wenn euch die Einführung gefallen hat, könnt ihr diese gerne liken :)
    Ich bin über Vorschläge sehr dankbar :)


    Mfg
    PTTV


    Im Moment wird nicht überarbeitet bis die Disskussion mit dem Wiki abgeschlossen ist. :)

  • In dem Titel heißt es, dass es sich an komplette Anfänger richtet, aber dann komm gleich in der Einführung das Wort Offset vor. Merkst du etwas? ;)
    Der unLZ zeigt nicht alle Grafiken im ROM an. Nur komprimierte. Da wird man nicht alle Sachen finden, z.B. bei Pokémon. Vielleicht möchte man auch lieber mit Offsets arbeiten, anstatt mit der eigenen Nummerierung von unLZ. Daher sollte man auch NLZ erwähnen. Von Tilemolester lese ich auch nichts.
    Manche Spiele nutzen nur Huffman z.B. Harvest Moon Fomt. Da nützt einem der unLZ gar nichts. Wenn das Programm auch LZ im Namen hat, sollte man den Leser gleich über Komprimierungsverfahren aufklären.
    Auch zum Thema Musikhacking: Sappy hilft nicht, wenn das Spiel seine Musik nicht im M4A-Format gespeichert hat, wie z.B. Super Mario Advance 3: Yoshi's Island.
    Bei ASM sollte man erst einmal schreiben, was es überhaupt ist, sprich über die Möglichkeit, Neues mit dem Befehlssatz des Prozessors zu programmieren und das man sich über den Aufbau des emulierten System und dessen Kapazitäten auseinandersetzt, sprich GBATek z.B.
    Ich selber würde darüber schreiben, dass man Daten auslesen und schreiben kann, sie verändern, mit ihnen rechnen. Eben ganz kurz beschreiben, was dieses ASM ist.
    Strahlen lassen finde ich zu abstrakt, warum schreibst du nicht, dass man das Spiel um Features erweitern, z.B. Menüs hacken, Attackensystem von irgendeinem Kampfspiel ändern oder sogar ein eigenes Intro programmieren kann?
    Du schreibst über den Hex-Editor, ohne mal ein Wort über das Hexadezimalsystem zu verlieren oder überhaupt, was diese Ansammlung von Bytes nun eigentlich ist. Für einen Anfänger nicht plausibel.
    Abgesehen von den Disziplinen, wäre auch ein Kapitel zu den Anforderungen, die man mitbringen muss, von Vorteil: Zeit, Logik, Motivation, Selbstständigkeit, Englischkenntnisse, Kreativität, Umgang mit Grafikprogrammen, etc.
    Übrigens, den Musikpart verstehe ich so, dass man sich ruhig ausruhen kann. Da versprichst du dem Anfänger ziemlich viel. Ich denke nicht, dass es großartig viele Musikhacker gibt, die sich zur Verfügung stellen.


    Zusammenfassend ist es noch zu schwammig und unvollständig. Die Rechtschreibung musst du auch noch einmal durchschauen. Da sind noch mehr Sachen enthalten. Nicht nur, was Frosto43 erwähnt hat.
    Ich würde auch zu jedem Kapitel ein paar Bilder begrüßen, damit man gleich sieht, auf was man sich da einlässt, aber auch, um Interesse zu wecken.

  • @Kayrion:
    Also ich sehe das nicht ganz so kritisch. Offset ist einfach ein englischer Begriff, der sich aus "off set" (versetzt) herleiten lässt. Wenn man den Begriff googelt (was nun nicht allzu überfordernd ist) kommt man auf http://de.wikipedia.org/wiki/S…sse#Segmentierte_Adressen. Okay, man könnte auch "Speicheradresse (Offset)" hinschreiben.
    Musik finde ich auch etwas übertrieben, >90% der kommerziellen Spiele nutzen die m4a Engine aus dem Nintendo SDK und es ist in der Regel vernachlässigbar was du sonst tust. Erwähnenswert ist es - da geb ich dir recht - dennoch.
    ASM + Hex Edit Part ebenfalls ein + von mir, da wären Korrekturen schon ganz gut.

    Du möchtest mich mal treffen? Dann sag hallo und besuche mich an der FAU in Erlangen.

  • Hm. Irgendwie muss ich Kairyon schon Recht geben. Diese Übersicht ist durchaus gut und mag aus der Sicht eines Fortgeschrittenen durchaus mehr als schlüssig erscheinen, als totaler, begriffsstutziger Anfänger aber kann man hier mit den wenigsten Begriffen etwas anfangen. Bevor du zu den Grundlagen etwas sagst, solltest du Begriffe klären. Es reicht nicht zu sagen: "Die Farbtiefe eines Bildes ist 16 / 256 Col, man bearbeitet Paletten. Diese muss mit dem Bild übereinstimmten". Dieser Satz sagt dir natürlich viel aber er wird kaum einem Anfänger helfen, zu begreifen, wie 4bpp indizierte Bilder mit ihren Paletten zusammenhängen. Und auch die Unterscheidung Hex-Editieren und ASM - meh. Hex-Editieren ist Bestandteil des ASM. Anders macht es ja keinen Sinn mmn.
    Der Grafikabschnitt ist auch sehr oberflächlich. Siehe Kairyons Kommentar. Unlz ist mmn sogar ein wirklich schlecht geeignetes Tool, ich bevorzuge Nlz weil es einfach viel mehr Darstellungsmöglichkeiten bietet (manuelle Offseteingabe, Kombination von Paletten mit Bildern). Außerdem könntest du NSE oder Tilemolester erwähnen, der dann nicht lz77 Daten darstellen kann. Auf Huffman kann man theoretisch auch verzichten - bei RHR liegt das Augenmerk auf Pokemon 3rd Generation und da existiert afaik nichtmal eine Routine die einen Softwarecall für Huffman durchführt.
    Der Musikabschnitt ist am aller Dürftigsten - es wird eigentlich nichts darüber erklärt, außer dass man ein Format einhalten muss. Und viel kaputt machen kann man nicht, sofern man nicht Daten vom Spiel überschreibt (das ist eine Gefahr, die in jedem Bereich einhergeht). Für die Stücke muss man lediglich eine passende VCG zurechtlegen und dann einfügen; das ist wirklich nicht die Welt.
    Der Grundgedanke ist super, aber hilfreich ist das nicht wirklich. Da kann ich auch ins Inhaltsverzeichnis gehen und sehe - ah ja, es gibt Grafikhacking und es gibt Scripting etc. Wobei es sich dann im einzelnen darum handelt merkt man entweder direkt am Wort oder bei Thema ("Weltkarte Ändern, Musik Einfügen...). Ich würde zumindest auf Tutorials verlinken, die dem ganzen mehr Inhalt verleihen. So ist das nicht mehr als eine ausformulierte Zusammenfassung des Inhaltsverzeichnisses.

  • Hm. Irgendwie muss ich Kairyon schon Recht geben. Diese Übersicht ist durchaus gut und mag aus der Sicht eines Fortgeschrittenen durchaus mehr als schlüssig erscheinen, als totaler, begriffsstutziger Anfänger aber kann man hier mit den wenigsten Begriffen etwas anfangen.


    Wäre es da eventuell nicht ganz pratisch einen zweiten Thread zu machen, wo man dann eine Art Lexikon für Fachbegriffe usw. übersichtlich festhält? Der könnte dann im Startpost verlinkt werden. Oder man nimmt einen Spoiler mit Tabelle drin, ginge wahrscheinlich auch.

  • Im Forum Wii-Homebrew war ein Lexikon integriert! (kein Thread - ein Lexikon)
    Hier konnten sogar normale Nutzer neue Einträge machen, eine lange und eine kurze Zusammenfassung dazu schreiben und die Worte wurden in darauf folgenden Texten von alleine gepunktet unterstrichen.
    Beim darüber fahren mit der Maus wurde dann die Kurz-Zusammenfassung gezeigt und beim anklicken ging der Lexikon-Eintrag auf... sowas wäre für RHR doch wirklich ideal, nicht?


    (sorry... wird driften vom Thema ab s: )


    MfG


    Manu

  • Generell wäre sowas auf der Hauptseite besser aufgehoben, ähnlich der alten RHW-Hauptseite. Dort kann man Tutorials bezüglich Grundlagen (Was ist ROM-Hacking, der Einstieg, Zahlensysteme usw) besser strukturieren und die speziellen Tutorials (auf Spiele bezogen, also Feuerrot / Smaragd / Minish Cap etc) dann direkt, wie gewohnt, im Forum.