GMU:My favorite things/Romhacking

From Medien Wiki

Was ist ein ROM?

Fakten zum read only memory

Romhacking rom.jpg
  • Speicherabbilder von Speicherchips (EPROM)
  • in Spiele-Speichersteckmodulen (Cartridges) verbaut
  • enthalten die Dateninformationen des eigentlichen Spiels
  • können mittels Emulatoren auf dem PC verwendet werden
  • mit beschreibbaren Steckmodulen auch wieder auf der Originalkonsole spielbar

Wie ist ein ROM aufgebaut?

Wissenswertes zur Hardware

Romhacking romaufbau.jpg
  • können grundsätzlich relativ frei aufgebaut sein
  • wenige Restriktionen die eingehalten werden sollten
  • die meisten ROMs haben einen ROM-Header, der Informationen über das Rom enthält, damit es vom System korrekt geladen und verarbeitet werden kann
  • vordefinierte Offsets, an denen bestimmter Code liegen muss, der ausgeführt wird, falls ein bestimmtes Ereignis, z.B. ein Interrupt ausgelöst wird
  • manche Roms sind aus Platzgründen in Rombänke eingeteilt, z.B. die des SNES

Was ist ROM-Hacking?

Ziel und Faszination - das Modifizieren von ROMs

<videoflash type=youtube>yAzxnJKCEdU#t=60s</videoflash>

  • ein vorhandenes Spiel nach eigenen Vorstellungen ändern
  • umzugestalten
  • teilweise neu zu kreieren
  • übersetzen (sollte das Spiel nicht in der eigenen Landessprache veröffentlicht worden sein)

Welche Spiele eignen sich?

  • beliebt sind Game Boy Color- und Game Boy Advance- sowie NES- und SNES-Spiele
  • Spiele, die leicht zu modifizierende 2D-Grafik und eine relativ einfache Programmierung besitzen
  • für einige Spiele existieren Editoren, die z. B. den Aufbau eines neuen Levels oder das Ändern verschiedener physikalischer Eigenschaften wesentlich vereinfachen
  • das meistgehackte ROM-Spiel ist Super Mario Bros. für das NES

Was braucht man zum ROM-Hacking?

  • das zu hackende ROM
  • einen Emulator
  • ein Texthacking-Programm
  • ein Grafikhacking-Programm (bspw. ein Tile-Editor)
  • ein Hexeditor
  • verschiedene Gebiete im Rom-Hacking:

Texthacking, Grafikhacking, Maphacking, ASM-Hacking, Scripthacking, Soundhacking

Texthacking

das Verändern von Texten eines ROMs

Romhacking text.jpg
  • Beim Texthacken ist zu beachten, dass man in den meisten Fällen ein Tablefile erstellen muss, um die Texte richtig sehen und editieren zu können
  • Tablefile können mit Programmen wie SnesEdit, Thingy32, Translhexion etc. genutzt werden
  • Eine typische Tablefile enthält Zuweisungen, wie:
    Byte=Buchstabe/n
    00=A

Grafikhacking

das Verändern von Bildern in einem ROM

  • Eine Grafik besteht aus einer Palette und der Grafik selbst
  • Grafik kann in verschiedenen Formaten gespeichert sein:
  • 1 BPP (2 Farben = Monochrom) - Schriften - GB Spiele
  • 2 BPP (4 Farben) - GB & GBC Spiele - Layer-3-Grafiken in SNES-Spielen
  • 3 BPP (8 Farben) - SNES-Spiele zur Grafikkompression
  • 4 BPP (16 Farben) - GBA & SNES Spiele
  • 8 BPP (256 Farben) - GBA Spiele - im Mode 7 des SNES

Maphacking

das Verändern von Maps (=Landschaften/Level) eines ROMs

Romhacking map.jpg
  • Maphacking besteht aus dem Ändern von Maps, Kollisionsdaten, Events, Mapanbindungen und evtl. anderen spielspezifischen Daten
  • Jeder einzelne Bereich ist ein Kapitel für sich und birgt Möglichkeiten sowie Schwierigkeiten
  • Um Maphacking zu betreiben kann man entweder den Hexeditor oder einen für jedes Spiel seperat programmierten Mapeditor verwenden

ASM-Hacking

das Verändern von Code eines Spiels

  • schwierigste Aufgabe des Romhackings
  • Hacker, die ASM-Hacking beherrschen, zählen zur "Elite"

Soundhacking

das Verändern von Musik in einem ROM

  • eine Anreihung von Samples, die in einer festgelegten Reihenfolge und Geschwindigkeit in unterschiedlichen Tonlagen abgespielt werden
  • in Form von Scripten gespeichert, die einfach sagen 'Spiele Ton x in Tonlage y für z Sekunden ab. Danach mache Pause für z Sekunden'

Scripthacking

das Modifizieren von Scripten

  • um Scripte zu ändern, muss man zunächst wissen, wo sich diese befinden
  • Falls dies nicht dokumentiert ist, muss man sie mithilfe Debugging oder Textpointern suchen
  • man kann entweder neue Befehle hinzufügen, Befehle löschen oder Parameter eines bereits vorhandenen Befehls modifizieren

<videoflash type=youtube>WAgOIKdW810</videoflash>