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
$00004895