Wie macht man einen 3-Achsen Kamera Modifizierer?

-Starte den XLINK Trainer
-Wechsle die Kamera und suche UNGLEICH
-Fahre durch die Gegend und suche GLEICH
-Wiederhole diese Prozedur, bis eine übersichtliche Anzahl Adressen verbleibt
-ändere die Adressen von Hand und beobachte die Wirkung
Bei manchen Spielen wird die Kamera Position nun geändert, so daß man diese Adressen direkt verwenden kann.
Bei anderen Spielen wird die Adresse ständig durch das Programm aktualisiert. Dann muß man den Breakpoint manipulieren.
Dazu schaut man im Disassembler vor dem Breakpoint nach einem LOAD Befehl, der den Wert setzt und manipuliert diesen.
Ein solches Beispiel ist das populäre "Tony Hawk's Skateboarding PAL"
Betrachten wir Breakpoint und Umgebung:
800251dc: 10400006  beqz $v0,0x800251f8        ; verzweigt abhängig von eingestellter Kamera
800251e0: 24020182  addiu $v0,$zero,0x0182     ; Distanz 1
800251e4: 2403001e  addiu $v1,$zero,0x001e     ; Winkel 1
800251e8: 3c01800d  sw $v0,[0x800d2150]
800251f0: 08009483  j 0x8002520c
800251f4: 2402ff60  addiu $v0,$zero,0xffffff60 ; Höhe 1
800251f8: 24020122  addiu $v0,$zero,0x0122     ; Distanz 2
800251fc: 24030096  addiu $v1,$zero,0x0096     ; Winkel 2
80025200: 3c01800d  sw $v0,[0x800d2150]        ; Distanzadresse
80025208: 2402ff94  addiu $v0,$zero,0xffffff94 ; Höhe 2
8002520c: 3c01800d  sw $v1,[0x800d2154]        ; Winkeladresse
80025214: 3c01800d  sw $v0,[0x800d2158]        ; Höhenadresse
Damit wir nicht alles doppelt machen müssen, löschen wir die Verzweigung.
Praktischerweise nicht mit einem NOP, sondern mit der Sprungadresse für den folgenden Supercode.

3-Achsen Kamera-Modifizierer
{Sprungadresse}
  000251DC   JAL 0x00007A00

{Jokeradresse}
  00007A00   LUI t2, 0x000D
  00007A04   ORI t2, t2, 0xBE32
  00007A08   NOP

{Distanz Modifizierer}
  00007A0C   LUI t3, 0x0002         ; Distanz
  00007A10   ORI t3, t3, 0x51E0     ; "    
  00007A14   LHU t0, 0x0000(t2)
  00007A18   ORI t4, zero, 0xFBBF   ; L1 & Unten
  00007A1C   BNE t0, t4, 0x00007A30
  00007A20   LH t1, 0x0000(t3)
  00007A24   NOP
  00007A28   ADDI t1, t1, 0xFFF8    ; minus 8
  00007A2C   SH t1, t3, 0x0000      
  00007A30   LHU t0, 0x0000(t2)
  00007A34   ORI t4, zero, 0xFBEF   ; L1 & Oben
  00007A38   BNE t0, t4, 0x00007A48
  00007A3C   LH t1, 0x0000(t3)
  00007A40   ADDI t1, t1, 0x0008    ; plus 8
  00007A44   SH t1, t3, 0x0000      

{Winkel Modifizierer}
  00007A48   LUI t3, 0x0002         ; Winkel
  00007A4C   ORI t3, t3, 0x51E4     ; "
  00007A50   LHU t0, 0x0000(t2)
  00007A54   ORI t4, zero, 0xFDBF   ; R2 & Unten
  00007A58   BNE t0, t4, 0x00007A6C
  00007A5C   LH t1, 0x0000(t3)
  00007A60   NOP
  00007A64   ADDI t1, t1, 0xFFF0    ; minus 16
  00007A68   SH t1, t3, 0x0000      
  00007A6C   LHU t0, 0x0000(t2)
  00007A70   ORI t4, zero, 0xFDEF   ; R2 & Oben
  00007A74   BNE t0, t4, 0x00007A84
  00007A78   LH t1, 0x0000(t3)
  00007A7C   ADDI t1, t1, 0x0010    ; plus 16
  00007A80   SH t1, t3, 0x0000      

{Höhen Modifizierer}
  00007A84   LUI t3, 0x0002         ; Höhe
  00007A88   ORI t3, t3, 0x51F4     ; "
  00007A8C   LHU t0, 0x0000(t2)
  00007A90   ORI t4, zero, 0xFEBF   ; L2 & Unten
  00007A94   BNE t0, t4, 0x00007AA8
  00007A98   LH t1, 0x0000(t3)
  00007A9C   NOP
  00007AA0   ADDI t1, t1, 0xFFFF    ; minus 1
  00007AA4   SH t1, t3, 0x0000      
  00007AA8   LHU t0, 0x0000(t2)
  00007AAC   ORI t4, zero, 0xFEEF   ; L2 & Oben
  00007AB0   BNE t0, t4, 0x00007AC0
  00007AB4   LH t1, 0x0000(t3)
  00007AB8   ADDI t1, t1, 0x0001    ; plus 1
  00007ABC   SH t1, t3, 0x0000      

{Ende}
  00007AC0   JR ra
Das ergibt den folgenden Xploder Code:
**3-Achsen Kamera-Modifizierer (Note 4)
*Aus
(Druecke R1 & R2)
$700DBE32F5FF
$500251DC001A
$060040108201
$02241E000324
$0D80013C5021
$22AC83940008
$60FFDEADC0DE
*An
(Druecke L1 & L2)
$700DBE32FAFF
$500251DC0004
$801E000CBEEF
$90007A023C0A 
$50007A0000C4 
$0D000A3C32BE 
$4A3500000000
$02000B3CE051
$6B3500004895
$BFFB0C340400
$0C1500006985
$00000000F8FF
$2921000069A5
$00004895EFFB
$0C3403000C15
$000069850800
$2921000069A5
$02000B3CE451
$6B3500004895
$BFFD0C340400
$0C1500006985
$00000000F0FF
$2921000069A5
$00004895EFFD
$0C3403000C15
$000069851000
$2921000069A5
$02000B3CF451
$6B3500004895
$BFFE0C340400
$0C1500006985
$00000000FFFF
$2921000069A5
$00004895EFFE
$0C3403000C15
$000069850100
$2921000069A5
$0800E003C0DE
Note 4:
Zur bequemeren Einstellung zuerst den Skater einfrieren.
L1 & Oben/Unten ändert die Distanz
R2 & Oben/Unten ändert den Winkel
L2 & Oben/Unten ändert die Höhe

Zum Ausschalten werden 26 Bytes ursprünglicher Code restauriert.
Zum Einschalten wird die Sprungadresse und der Supercode gesetzt.

Falls du einen solchen Code für andere Spiele machen willst, editiere die Adressen, Joker Werte und Größe der Änderung.
Suche einen scheinbar überflüssigen Befehl für die Sprungadresse in der Nähe des Breakpoints.
Achte beim Ändern der Jokerwerte darauf, daß du keine $Fxxxxxxxxxxx Zeile erzeugst.
Verwende ggf. den "normalen" Joker.
Beachte die Byte-Schreibweise in den Supercode Daten im Vergleich zur Schreibweise im $5 und $7 Befehl.

Dieses FAQ wurde geschrieben von Nachbrenner