Code

aus RHWiki, der freien Romhacking-Enzyklopädie

Unter dem Code bezeichnet man den compilierten Quellcode. Das bedeutet der von der Spielekonsole auszuführene Maschinencode. Dieser Maschinencode lässt sich nach Assembler übersetzen und somit lesbarer machen. Früher wurde ein Code mithilfe von Lochkarten und Magnetbändern programmiert.

Codeaufbau

Der Maschinencode besteht aus Opcodes, die jedoch von System zu System oder ehergesagt von Prozessor zu Prozessor total unterschiedlich sind. Auch ist es möglich, dass auf einem System, wie z.B. dem Gameboy Advance mehrere Prozessoren benutzt werden und somit zwei unterschiedliche Codearten entstehen.

Jeder Assemblerquellcode (und auch C++ Quellcode) wird zu dem jeweils benötigtem Maschinencode übersetzt (Compiliert). Danach versteht der jeweilige Prozessor das Programm problemlos. Schließlich wird dem Gameboy nicht gesagt "Zeichne mir nun meine Figur auf das Bild", sondern es muss in mehreren einzelnen Schritten erledigt werden, die mühsam von Hand geschrieben werden müssen.

Hier ist ein Beispiel für den PC. Jeweils der Assemblercode und rechts dann, wie die einzelnen Bytes im Maschinencode aussehen würden:

CMP  AX, 10                    | 66 83 F8 10
SETE AL                        | 0F 94 C0
MOV  BL, AL                    | 8A D8

Codehacking

Für das "ASM-Hacking" gibt es verschiedene Bezeichnungen. Man nennt es auch "Code-Injection", da man in den meisten Fällen eigenen Code in den eigentlich fertigen Quellcode einbringt. Jedoch ist es auch schon Codehacking, wenn man nur einen Sprung erzwingt, der eigentlich bedingt ist. Beispielsweise könnte man warscheinlich durch das ändern eines einzelnen Bytes die Eingabe leerer Namen in einem Rollenspiel erlauben, die eigentlich unterbunden war.

Jedoch kann man auch komplexere Dinge einbauen oder verändern, da man durch Codehacking sogesehen den Spielquellcode bearbeiten kann. Grob gesehen könnte man durch Codehacking aus einem Rollenspiel ein Autorennspiel machen, wobei das sicherlich keinen Sinn macht, da man dann das Spiel direkt auch neu programmieren könnte.

Siehe auch

'Persönliche Werkzeuge