No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[File: romhacking_head.jpg]] | [[File: romhacking_head.jpg]] | ||
<br><br> | |||
= Was ist ein ROM? = | = Was ist ein ROM? = |
Revision as of 15:34, 28 June 2011
Was ist ein ROM?
Fakten zum read only memory
- 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
- 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
- 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
- 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>