[SGB] Pokémon Gold Beta

Begonnen von Takeshi, 10. August 2024, 00:18:02

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Takeshi

Pokémon Gold Beta

Vor einigen Jahren wurde unerwartet eine uralte Beta von Pokémon Gold geleakt. Das Spiel ist nicht einfach nur eine unfertige Version des veröffentlichten Spiels. Es enthält Pokémon, die erst in späteren Editionen oder sogar bis veröffentlicht wurden. Die Städte und die ganze Karte sehen anders aus und mir scheint, als ob selbst die Geschichte eine andere ist. Das Spiel ist also durchaus interessant! Jahre nach dem Leak hat es mich nun gepackt und ich musste mir das genauer ansehen.

Zur groben Einordnung, Pokémon Rot/Grün (hier Rot/Blau) erschien in Japan 1996, in Europa 1999. Pokémon Gold/Silber erschien in Japan ebenfalls 1999, in Europa 2001. Der Game Boy Color erschien 1998 in Japan und Europa. Die Beta-Version zeigt im Startbildschirm das Jahr 1996. Zu der Zeit war der Game Boy Color also noch längst nicht auf dem Markt und Pokémon Gold/Silber wurde ursprünglich für Ende 1997 angekündigt. Deshalb wurde das Spiel damals nicht für den GBC ausgelegt, dafür aber für den Super Game Boy (SGB), das Modul, mit dem GB-Spiele auf dem SNES spielbar sind. Dadurch enthält es trotzdem Farben in Form von Farbpaletten. Die Karte besteht wie beim klassischen Game Boy aus 4 verschiedenen "Farben", nur dass diese beim klassischen Game Boy Graustufen waren und beim SGB echte Farben annehmen, die von Bild zu Bild wechseln. Im Kampf weisen wiederum die einzelnen Elemente (Pokémon, HP-Anzeige) jeweils 4 Farben auf, von Element zu Element aber verschieden. Es ist also weniger bunt als ein GBC-Spiel, aber dennoch bunter als ein altes GB-Spiel auf dem GBC.

Auf der "Nintendo Space World 1997" wurde eine Demo von Gold und Silber präsentiert. Auf PokéWiki scheint es keine Informationen zu der Beta zu geben, nur zur der Demo. Die Demo ist näher an der Beta als am finalen Spiel, was gemäß des Alters zu erwarten ist. Die Demo ist aber nicht all zu weit spielbar. Sie endet vor der ersten Stadt, auch wenn sie weitere Städte enthält. Die Demo ist aber eben als Demo konzipiert und daher mit einem gezielten Ende nach einem kurzen Spiel versehen. Mich hat daher die Beta mehr interessiert. Die Beta hat wie die Demo keine Speicherfunktion.

Der Spieler heißt サトシ (Satoshi). Es lässt sich aber wie gewohnt ein beliebiger Name eingeben. Abweichend zum finalen Spiel soll der Spieler hier aber auch direkt den Namen des Rivalen シゲル (Shigeru) eingeben, dazu die aktuelle Uhrzeit und den Wochentag. Nachdem man das Haus verlässt, trifft man sofort auf den Rivalen, der (glaube ich) einen fragt, wie man seine Mutter nennt, warum auch immer. Wenn du das Dorf verlassen möchtest, wist du von einer Person aufgehalten und zum Labor von Professor "ōkido" begleitet. Dort gibt es die nächste große Überraschung, denn werden einem die Starterpokémon ハッパ (Happa, Pflanze, 152), ホノオグマ (Honōguma, Feuer, 155) und クルス (Kurusu, Wasser, 158) angeboten. Happa entspricht Endivie, das im Japanischen später チコリータ (Chikorita) heißt. Die anderen beiden wurden verworfen und haben es nie in ein veröffentlichtes Spiel geschafft.

Nachdem sich der Spieler für ein Pokémon entschieden hat, sucht sich der Rivale wie gewohnt das Pokémon mit dem überlegenen Typ aus. Im Anschluss gibt es gleich den Pokédex (im finalen Spiel erst später). Möchte der Spieler das Labor verlassen, wird er vom Rivalen zum Kampf aufgefordert. So weit normal. Dummerweise setzt der Rivale nicht das vorher gewählte Pokémon ein. Manchmal erscheint ein Pokémon mit Pixelbrei (ähnlich Missingno.). Welche Pokémon er einsetzt, variiert von Versuch zu versuch. Wovon das genau abhängig ist, ist mir noch nicht klar, aber das Level ist in der Regel zu hoch, um zu gewinnen. Wähle ich ホノオグマ, hat er sogar 6 Pokémon und das immer! Manchmal war das erste sogar über Lv. 100, also keine Chance. Nicht so schlimm, sollte man meinen, verliert man halt den Kampf. Doch wird der Kampf verloren, sagt mir der Rivale "つぎは がんばるぞ!!", also ich solle mich beim nächsten Mal (mehr) anstrengen - und das Spiel geht zurück zum Startbildschirm! Sprich, ohne Sieg keine Chance weiterzuspielen und keine Chance auf einen Sieg. Nach zig Versuchen gab es nicht einen Kampf, den ich hätte gewinnen können. Also begann ich zum ersten Mal mit dem Hacken des RAMs eines Spiels, um den Kampf zu überstehen, was ich auch geschafft habe. Wie bin ich vorgegangen?

Für diejenigen, die so gut wie gar keine Ahnung davon haben, aber versuchen wollen es ein wenig zu verstehen: Ein Byte besteht aus 8 Bit, mit denen insgesamt 256 verschiedene Zustände gespeichert werden können. Mit 2 Byte (16 Bit) sind es 65536 verschiedene Zustände. Repräsentiert das Byte eine Zahl, dann meistens von 0 bis 255 und bei zwei Byte 0 bis 65535. Bytes werden üblicherweise in der Hexadezimal-Schreibweise dargestellt, wobei 4 Bit jeweils für ein Zeichen von 0123456789ABCDEF verwendet wird, für ein Byte also 2 dieser Zeichen.

Zunächst einmal musste die Information für die Pokémon, die ich bei mir trage, im RAM stecken. Der wird als WRAM (Working RAM) bezeichnet, ist 8 kB (8192 Byte) groß und hat den Adressebereich C000 bis DFFF (also Länge 1FFF). Das ist noch überschaubar. Der Game Boy ist sehr einfach gestrickt. Deshalb war davon auszugehen, dass alle Informationen zu einem Pokémon beeinander liegen und auch immer an der gleichen Adresse, sofern sich die Position in der Liste nicht ändert. Außerdem werden Zahlenwerte möglichst einfach hinterlegt sein. Wenn Zahlen im Spiel nahe 0 beginnen können, 255 nicht überschreiten, aber die 127 überschreiten, werden sie wohl als direkte Zahl vorzufinden sein. Um den Eintrag mit dem Pokémon zu finden, bietet sich eine sehr charakteristische Zahl an, die eher selten vorkommen wird: Die Nummer bzw. ID des Pokémon. Das geht bei Gold besser als bei Rot, weil die Nummer recht hoch ist. 01, 04 und 07 wird häufiger im WRAM stehen. In HEX dargestellt:
152 = 0x98
155 = 0x9B
158 = 0x9E
Und tatsächlich, wenn ich das Pokémon 152 wähle, finde ich 10 Einträge. Nicht zu viele, um das mit den andern Startern durchzuprobieren. Zu meiner Verwunderung befand sich die ID des gewählten Starters gleich 6 Adressen, nämlich
0xCB5B
0xCD78
0xCE07
0xD265
0xD6AB
0xD6B2

An 0xD265 scheint generell meine Wahl des Starters gespeichert zu sein und bei 0xD266 die Wahl des Rivalen. Den Wert zu ändern hat keinerlei Einfluss auf meine mitgeführten Pokémon. Der Wert bei 0xD6AB hat allerdings einen direkten Einfluss. Ändere ich den Wert, habe ich das Pokémon mit der ID an erster Stelle. Nun war die Idee, ich ändere einfach die ID (und später wieder zurück), nur ist das tatsächlich ausschließlich die ID. Eine Änderung hat keinen Einfluss auf die Statuswerte. Ich verliere also genau so schnell wie vorher.
Mein Pokémon hatte 22 HP (0x16), die ebenfalls so im WRAM stehen, und zwar zwei Mal. An der Adresse 0xD6D6 bis 0xD6D7 stehen die maximalen HP, bei 0xD6D4 bis 0xD6D5 die verbleibenden HP. Trägt man an beiden Adressen 0x03E7 ein, hat das Pokémon 999 HP. Mit 0x03E8 hat es übrigens 0 und nicht 1000 ;) Damit war es mir dann möglich zu gewinnen. Aber Achtung: Auch diese Manipulation hat einen kleineren Effekt als erwartet. Beim Levelaufstieg werden alle Statuswerte neu berechnet und die erhöhten HP sind wieder zurückgesetzt, sprich normal. Beim Kampf gegen mehr als ein Pokémon wird es also schwierig, weil die Werte immer wieder erneut verändert werden müssen. Das hat aber auch den Vorteil, dass die Werte getrost aller verändert werden können und das Pokémon nach dem Kampf wieder normal ist.

Die HP sollte man auch besser nicht überschätzen, denn der Angriffwert ist niedrig, der Verteidigungswert ebenfalls. Da verliert man trotzdem schnell gegen ein Pokémon über Level 15. Die aktuellen HP stehen an der Adresse 0xCA12/CA13 und lassen sich dort zurücksetzen. Die anderen Statuswerte stehen an den Adressen 0xD6D8 bis 0xD6E1. Wer ganz auf Nummer Sicher gehen will, trägt dort überall 0x00FF ein für 255. Höhere Werte werden angezeigt, führen aber später zum Absturz.

Wer den Kampf gewinnt, erhält darauf 6 Pokébälle und kann nun Route 1 betreten. Leider endet die Beta wie die Demo nach Route 1 am "GATE". Jetzt muss ich einen Weg daran vorbei finden. Ich hoffe, das geht und das Spiel ist noch ein Stück weit spielbar.

Anakin94

Mit Pokémon kenne ich mich zwar nicht aus, aber Betaversionen finde ich auch immer recht interessant.
Vor allem die Unterschiede zu vergleichen find ich toll.

Zitat von: Takeshi am 10. August 2024, 00:18:02Die Demo ist aber eben als Demo konzipiert und daher mit einem gezielten Ende nach einem kurzen Spiel versehen.
Sollte es dafür keine Patches in Form von ROM-Hacks geben, um das zu umgehen?

Zitat von: Takeshi am 10. August 2024, 00:18:02Die Beta hat wie die Demo keine Speicherfunktion.
Da machen Save-States sinn. ;D

Zitat von: Takeshi am 10. August 2024, 00:18:02Für diejenigen, die so gut wie gar keine Ahnung davon haben, aber versuchen wollen es ein wenig zu verstehen...
Mit RAM-Hacks hatte ich mich auch mal beschäftigt.
Mehr als einfache Werte konnte ich nicht verändern, weil ich die Positionen nicht gefunden hatte.
Also das waren dann bspw. nur Health- oder Geld Hacks, die ich hinbekam.

SCPH-102 - OneChip Stealth + NTSC Fix
SCPH-102 PM-41(2) - OneChip Standard
SCPH-30004 V3 - Matrix Infinity v1.93 (Blue Dot)
SCPH-30004 V4 - Matrix Infinity v1.93 (Green Dot)
SCPH-30004R V6? - FMCB v1.965re
SCPH-50004 V10 - Romeo-Fix @5V + Crystal 1.2
SCPH-70004a V12 (EG+GS) - SubZero Fix - Modbo 750 v1.99 (2021)
SCPH-70004b V13 (EE+GS) - Matrix Infinity v1.93 (Green Dot)
SCPH-70004b V13 (EE+GS) - Modbo 760 v1.93 mit Z (2009)
SCPH-90004a V17a 8B
SCPH-90004a V17b 8C 2.20
SCPH-90004a V17b 8C 2.30 - MechaPwn
SCPH-90004a V17c 9C - Mars Pro GM-806HD

Takeshi

#2
Zitat von: Anakin94 am 10. August 2024, 16:23:26Vor allem die Unterschiede zu vergleichen find ich toll.

Dazu habe ich noch einen Artikel aus dem Jahr 2017 gefunden, 1 Jahr vor dem Leak.
Inside Nintendo 127: Die verschollene Beta-Version von Pokémon Gold und Silber

Kurz zusammengefasst waren die Entwickler von dem Erfolg sehr überrascht und das Team überfordert. Während die Entwicklung des ersten Teils 6 Jahre dauerte, ging es beim zweiten viel schneller, keine 2 Jahre. Die wollten in dem zweiten Teil das realisieren, was sie im ersten nicht geschafft haben und es sollte auch gleichzeitig der Abschluss der Serie werden. Aber dann gab es "Druck" von oben, noch mehr aus dem Spiel herauszuholen und so wurde das halbe Spiel verworfen und zwei weitere Jahre bearbeitet. Insgesamt wurden sogar 100 Pokémon verworfen. In der Beta/Demo sind gar nicht alle drin.

Zitat von: Anakin94 am 10. August 2024, 16:23:26Sollte es dafür keine Patches in Form von ROM-Hacks geben, um das zu umgehen?

Wie ich inzwischen gelesen habe, gibt es von der Demo eine (originale) Debug-Version, mit der man (mit einer kleinen Änderung) weiterkommen soll, zumindest, wenn ich das richtig verstanden habe. Das muss ich mir mal noch ansehen. Vermutlich nutzt jeder die Demo, weil es da schon einfach möglich ist, wahrscheinlich einige Bugs beseitigt bzw. weitere Funktionen eingebaut wurden, aber kaum etwas rausgeworfen wurde, weil die Forderungen erst später kamen.

tcrf.net - Proto:Pokémon Gold and Silver/Spaceworld 1997 Demo

Zitat von: Anakin94 am 10. August 2024, 16:23:26Da machen Save-States sinn. ;D

Gut kombiniert :P

Zitat von: Anakin94 am 10. August 2024, 16:23:26Mit RAM-Hacks hatte ich mich auch mal beschäftigt.
Mehr als einfache Werte konnte ich nicht verändern, weil ich die Positionen nicht gefunden hatte.
Also das waren dann bspw. nur Health- oder Geld Hacks, die ich hinbekam.
Mir ging es darum, für diejenigen, die gar keine Ahnung haben, kurz Hexadezimalzahlen zu erklären, damit der nachfolgende Text ansatzweise verständlich ist.

Was kann man aber auch sonst mit RAM-Hacks bewirken, außer Statuswerte, Items und die Position zu verändern?

Vielleicht eine kleine Geschichte noch dazu: Es gibt ja immer zwei Editionen, wobei in jeder teilweise unterschiedliche Pokémon fangbar sind. Ich hab mal Pokémon Rot im Emulator gespielt, den Spielstand dann mit Blau geladen und dort dann die Pokémon gefangen, die es in Rot nicht gibt. So ist es möglich, die Pokémon beider Editionen zu bekommen und zwar so, dass sie alle meine Trainer-ID haben. Das geht über einen RAM-Hack natürlich auch, aber so ist es leichter und irgendwie ist es auch eine Art (S)RAM-Hack.


Edit: Jetzt bin ich etwas irritiert. Ich war mir sicher, dass in der Beta 1996 stand, jetzt lese ich da 1997.

Jedenfalls ist Prüfsumme nicht identisch zu einer der Space-World-ROMs, aber die Beta, die ich gefunden habe, verhält sich exakt so wie die Debug-Version von Gold aus dem Leak. Also so wie es aussieht, habe ich mir die Arbeit "umsonst" gemacht, denn über das Debug-Menü lassen sich die Pokémon auch verändern, direkt über das Spiel. Aber gut, interessant war es trotzdem und vielleicht ist das erlangte Wissen noch mal nützlich. Dann werde ich bei der nächsten Gelegenheit einmal versuchen, mir die Demo genauer anzuschauen.

Anakin94

Zitat von: Takeshi am 10. August 2024, 22:03:05tcrf.net - Proto:Pokémon Gold and Silver/Spaceworld 1997 Demo
Genau, bei The Cutting Room Floor und Hidden Palace gibt es viele Informationen bezüglich unfertigen Versionen.
Auch findet man da Patches für Betas und Demos.

Zitat von: Takeshi am 10. August 2024, 22:03:05Was kann man aber auch sonst mit RAM-Hacks bewirken, außer Statuswerte, Items und die Position zu verändern?
Es lassen sich auch so Sachen wie Sprunghöhe ändern, oder verstecke Level, Fahrzeuge, Figuren, Texturen laden.
Auch so was wie das deaktivieren von Funktionen und KI Modifikationen, z.B. dass man diese steuern kann.
Oder auch Kamerahacks, nicht spielbare Demos spielbar machen oder ganze Texturen swappen.
Das ist sowas was ich meine, was ich nicht hinbekomme.

Zitat von: Takeshi am 10. August 2024, 22:03:05Jedenfalls ist Prüfsumme nicht identisch zu einer der Space-World-ROMs, aber die Beta, die ich gefunden habe, verhält sich exakt so wie die Debug-Version von Gold aus dem Leak.
Vielleicht sind die modifiziert, weswegen sich die Prüfsummen unterscheiden.
SCPH-102 - OneChip Stealth + NTSC Fix
SCPH-102 PM-41(2) - OneChip Standard
SCPH-30004 V3 - Matrix Infinity v1.93 (Blue Dot)
SCPH-30004 V4 - Matrix Infinity v1.93 (Green Dot)
SCPH-30004R V6? - FMCB v1.965re
SCPH-50004 V10 - Romeo-Fix @5V + Crystal 1.2
SCPH-70004a V12 (EG+GS) - SubZero Fix - Modbo 750 v1.99 (2021)
SCPH-70004b V13 (EE+GS) - Matrix Infinity v1.93 (Green Dot)
SCPH-70004b V13 (EE+GS) - Modbo 760 v1.93 mit Z (2009)
SCPH-90004a V17a 8B
SCPH-90004a V17b 8C 2.20
SCPH-90004a V17b 8C 2.30 - MechaPwn
SCPH-90004a V17c 9C - Mars Pro GM-806HD