Transcription
Hallo da, Internet! In diesem Video werden wir uns etwas ansehen, das ich neulich beim Stöbern im Internet gefunden habe, und zwar dies hier. Dies ist eine GitHub-Seite, die in der Beschreibung verlinkt sein wird. Sie stammt von äh, PREt, dem Pokémon Reverse Engineering Team, und was sie getan haben, ist, dass sie die ursprünglichen Pokémon Rot und Blau Spiele genommen und sie disassembliert haben. Jetzt können wir uns den tatsächlichen Code ansehen, aus dem die Spiele bestehen, und wir können damit herumspielen. Das ist also das, was ich in diesem Video tun wollte. Wir werden uns den Code ansehen, herumstöbern, ein paar Dinge kaputt machen und sehen, was passiert. Wenn Sie also den Code herunterladen möchten, können Sie einfach zu GitHub gehen. Die Seite wird, wie gesagt, verlinkt sein. Wir können das einfach herunterladen, auf "Clone with HTTPS" klicken und dann zu einem Terminal gehen. Stellen Sie sicher, dass Sie Git installiert haben. Sie werden auch etwas namens "Make" und Visual Boy Advance oder einen Game Boy Emulator installiert haben wollen. Das sind also die Dinge, die Sie brauchen werden. Es wird Links in der Beschreibung für all diese Art von Dingen geben. Wir tippen "git clone", das wird das nette kleine Git-Repository herunterladen und dann schauen wir mal. Wir sollten sehen, dass wir ein neues, äh, kleines Verzeichnis dort haben, und das sollte den gesamten Code enthalten. Und was wir tun können, ist, wenn ich sagen würde, äh, "make", äh, und dann sagen würde, äh, ja, sagen wir "make" für jetzt. Was es tun wird, ist, dass es eine ganze Reihe von Kompilierungen durchführen wird und eine Datei erstellen wird, die wir mit einem Emulator spielen können. Das ist also erledigt, und Sie sollten jetzt sehen, ja, also haben wir "pokeblue" und wir haben auch "pokemon red.gbc". Was wir jetzt tun können, ist, wir können sagen "open pokeyred.gbc" und was das tun wird, ist, dass es Pokémon in einem frechen kleinen Emulator wie diesem öffnen wird. Wow, ist das nicht erstaunlich? Und dann können wir, wissen Sie, das Spiel spielen. Was ich also tun wollte, ist, wir werden uns das ansehen und wir werden damit beginnen, einfach zu sehen, was im Code ist, und dann werden wir wahrscheinlich ein paar Dinge kaputt machen. Vielleicht ändern wir die Starter-Pokémon in etwas wie eines davon, Mew oder so etwas. Gehen wir also hin und sehen uns den gesamten Code an. Gehen wir also herum. Es gibt eine Reihe von Ordnern, die wir uns ansehen können. Einer davon heißt "constants" und wenn wir hier hineinschauen, enthält dies die Pokémon-Konstanten, die Sie dort sehen können. Wenn wir also hier hineinschauen, werden wir eine Liste aller Pokémon sehen, richtig? Und was ich ziemlich interessant daran fand, ist, dass wir tatsächlich MissingNo. hier drin haben. Es gibt tatsächlich ein paar MissingNos. Wenn Sie sich an die Spiele erinnern, gab es früher einen Fehler, bei dem, wenn Sie auf Cinnabar Island auf und ab gesurft sind, dieses Pokémon namens MissingNo. auftauchte. Und jetzt weiß ich nicht, ob diese tatsächlich von den Spieldesignern dort platziert wurden oder ob sie als Ergebnis des Disassemblierungsprozesses hier platziert wurden. Aber was wir hier sehen können, sind offensichtlich alle Namen für alle Pokémon. Sie sind alle in Großbuchstaben und wenn wir ein Pokémon ändern wollten, äh, irgendwann im Spiel, müssten wir uns auf diese Namen beziehen, die sie hier haben. Wenn wir uns das also ansehen, können wir eine Datei finden. Es gibt eine Datei in diesem Ordner namens "starter months" und diese sagt uns, was die Starter sind, richtig? Sie haben also "start one Charmander", "starter two is Squirtle" und natürlich "starter three is Bulbasaur", was statistisch gesehen das Beste ist. Wenn ich also das Spiel starte, richtig, wenn wir hier rauskommen, zurückgehen und einfach Pokémon Rot öffnen, und was ich tun werde, ist, ich werde schnell durchgehen und zu dem Punkt gelangen, an dem wir tatsächlich unseren Starter-Pokémon auswählen können. Okay, ich bin jetzt an dem Punkt, an dem Sie Ihren ersten Starter-Pokémon auswählen können. Wenn wir uns all diese, äh, diese Bälle hier ansehen, haben wir den frechen kleinen Glurak dort und natürlich, wenn wir wissen, dass wir das nicht wollen, wenn wir uns das ansehen, sagen wir mal dieses hier, Schiggy, offensichtlich. Und natürlich ist das letzte ein Bisasam. Wenn wir uns das also noch einmal ansehen, wenn ich schnell speichern und dann zum Code zurückkehren würde, wenn wir uns diesen Code ansehen, was wir tun können, ist, wir können zurückgehen und uns diese Konstanten ansehen, die "start and one's" Datei, und wenn wir zum Beispiel Schiggy nehmen und es in Mew ändern würden, richtig, wir können das speichern, dann können wir "make" aufrufen, um das Programm, das Spiel, neu zu kompilieren, und dann können wir es wieder öffnen. Da ich den Zustand gespeichert habe, sollte ich in der Lage sein, das einfach zu laden, und ich kann es groß machen. Und wenn wir uns zu diesem hier bewegen, wo Schiggy war, werden wir jetzt feststellen, dass wir Mew dort haben. Das ist also ziemlich cool. Jetzt haben wir also Mew anstelle von Schiggy. Dann geben wir ihm einen Spitznamen. Und so wählt er Glurak. Wenn wir uns unsere Gruppe ansehen, hat sie tatsächlich Mew dort, im Gegensatz zu Glurak. Das nächste, was ich mir ansehen wollte, war, äh, die Pokémon, die auf Routen erscheinen. Und es stellt sich heraus, dass die Art und Weise, wie sie das gemacht haben, oder zumindest die Art und Weise, wie es in disassemblierten Programmen angezeigt wird, ist, dass jede Route eine Liste von Pokémon hat und sie unterschiedliche Pokémon hat, die offensichtlich für jede Route erscheinen werden, und sie haben eine andere Häufigkeit dieser Pokémon. Wenn wir also in den Datenordner schauen, gibt es einen weiteren Ordner namens "wild pokemon". Wenn wir dort hineinschauen, können wir alle Routen und alle Gebiete sehen, zu denen wir tatsächlich gehen können. Von Pallet Town bis äh, Viridian City ist, glaube ich, Viridian ist Route eins. Wir können also hier hineinschauen und wir können sehen, dass hier die Pokémon sind, die wir haben. Was das ist, ist, dass dies das Level hier sagt, also Level drei, und dann sagt es, äh, das Pokémon, das tatsächlich erscheint. Wenn wir das alles einfach ausschalten, äh, eigentlich, lassen wir eins übrig und ändern das. Wir könnten also sagen, ändern wir das in Mew2 und machen wir es, ich weiß nicht, Level 100. Und dann könnten wir dasselbe noch einmal tun, aber diesmal, wissen Sie, nehmen wir zum Beispiel Ditto. Und was ich tun werde, weil die Anzahl der Male, in denen diese Dinge erscheinen, auf ihrer Häufigkeit beruht, werde ich diese einfach ein paar Mal kopieren. Oops, ja, ich hätte die ganze Zeile ein paar Mal kopieren sollen. Ah, das wollte ich nicht tun, das wollte ich tun. Nein, wir werden das richtig machen. Da ist es. Cool. Wenn wir also ein paar Verzeichnisse zurückgehen und "make" wieder aufrufen, werden wir das neu kompilieren und dann das Programm, das Spiel, wieder öffnen. Und das wird sich wieder öffnen. Ich werde es groß machen und dann werde ich einen Zustand laden, den letzten Zustand laden, wo auch immer der Knopf ist. Da ist er. Und wenn wir jetzt hineingehen, ist es dieses Gras. Wir sollten jetzt feststellen, dass wir irgendwann eines dieser Pokémon bekommen und es wird Level 100 sein. Es fängt an zu arbeiten. Da ist es, es ist Level 100. Ein Problem hier ist, dass wir nichts fangen können, weil wir keine Pokébälle mehr haben. Und es gibt auch keinen wirklichen Weg, wie wir ein Level 100 fangen werden. Der Weg, den wir tatsächlich tun müssen, ist, zum Geschäft zu gehen und Pokébälle zu kaufen. Aber wäre es nicht cool, wenn wir dort hingehen und anstatt Pokébälle zu kaufen, Meisterbälle kaufen könnten und auch so etwas wie Sonderbonbons und so etwas kaufen könnten? Schauen wir uns also an, wie wir das tun könnten. Wenn wir im Datenverzeichnis nachsehen, finden wir zwei Dateien, die uns interessieren werden. Eine davon heißt "item prices" und die andere heißt "master inventories". Wenn wir uns zuerst "item prices" ansehen, können wir hier sehen, dass wir im Grunde diese Liste haben, die auf der einen Seite den Preis eines Artikels hat. Wenn wir also den Pokeball von 200 auf null ändern würden, wäre er jetzt kostenlos. Wir sehen, dass wir hier einen Meisterball haben, der nichts kostet. Wenn wir nach unten gehen und das Sonderbonbon finden, können wir das auf null ändern und das wird jetzt kostenlos sein. Aber wir müssen es ins Geschäft bringen. Um das zu tun, wenn wir die Datei "mart inventories" öffnen, können wir hier sehen, dass wir eine Liste der tatsächlichen Artikel haben, die wir in jedem einzelnen Geschäft kaufen können. Wir schauen uns also Viridian an. Wenn ich also sagen würde, Meisterball und Sonderbonbon, wenn wir gleich nach Viridian gehen und dort ins Geschäft gehen, werden wir tatsächlich einen Pokeball kostenlos kaufen können, weil wir den Preis von Pokébällen geändert haben. Wir werden Bonbons kostenlos bekommen können und wir werden auch Meisterbälle kostenlos bekommen können. Wenn wir uns das also jetzt ansehen, können wir das tun. Ich werde das alles wiederholen, es öffnen und ich werde vorspulen, um tatsächlich ins Geschäft zu gehen. Wenn wir also ins Geschäft gehen, können wir mit dem äh, dem Kassierer hier reden und wir können sehen, dass die Pokébälle kostenlos sind. Und wenn wir nach unten gehen, hoffentlich sollten wir einen Meisterball und Sonderbonbons haben. Wir können also so viele davon bestellen, wie wir möchten, 99 davon und lassen uns auch 99 Sonderbonbons bestellen, weil wir das absolut tun können. Jetzt können wir nach unten gehen und diese, eines der Pokémon, die wir hier finden, fangen, was entweder Mewtu oder Ditto sein wird. Wenn wir zu "item rare candy master ball" gehen, wird das sofort gespeichert und gefangen. Perfekt. Es gibt also noch ein paar andere Dinge, die ich mir ansehen wollte. Gehen wir also hin und sehen uns diese Dinge an. Etwas, das ich mir ansehen wollte, war, was passiert, wenn man in Pokémon durch eine Tür geht. Was tatsächlich passiert, ist, dass das Spiel dieses Konzept eines Warps hat, richtig? Wir könnten uns die Daten ansehen und dann gibt es einen Ordner namens "map objects" und hier sind all die Orte, an die man im Spiel gehen kann, richtig? Wir sind gerade in Viridian City. Wenn wir uns das ansehen, können wir hier sehen, dass wir diese Idee eines Warps haben. Und was ein Warp ist, ist zu sagen: Okay, also auf diesen Feldern, wenn wir dieses Feld erreichen, wenn wir auf dieses Feld treten, gehen wir zum Pokémon Center. Und tatsächlich, wenn wir hier hineinschauen würden, würden wir wahrscheinlich feststellen, dass es eine Datei namens, wenn ich sie richtig buchstabieren kann, Pokémon Center gibt. Wenn wir uns das Pokémon Center ansehen, haben wir das, und dann sagt uns das, was passiert ist und wohin wir, wohin wir uns warpieren, und wir werden uns zurück warpieren, woher wir kamen, wenn wir wieder aus der Tür gehen, aus der wir kamen. Schauen wir also noch einmal hier zurück. Wenn wir dieses Pokémon Center in "Hall of Fame" ändern würden, "Hall of Fame", und dann das Programm neu machen, wieder öffnen, es schön groß machen, den letzten Zustand laden. Wir sind gerade in Viridian City. Wenn wir durch das Pokémon Center gehen würden, sollten wir zur Hall of Fame gehen, obwohl es aus irgendeinem seltsamen Grund vielleicht nicht beim ersten Mal funktioniert. Ich habe bemerkt, dass es mit dem eigentlichen Game Boy zu tun haben könnte. Kommen wir also durch und versuchen es noch einmal. Wir sollten zur Hall of Fame gehen. Und jetzt können wir das alles durchgehen und wir haben das Spiel im Grunde abgeschlossen, obwohl wir es wirklich nicht haben. Und das liegt einfach daran, wie das Spiel funktioniert, dass es eine Reihe von Dingen gibt, die passieren, wenn man auf bestimmte Orte tritt, und wir können uns diese Dinge ansehen. Und neben dem Treten auf Orte gibt es auch vordefinierte Dinge, die passieren, wenn andere Dinge passieren. Zum Beispiel, Sie lösen eine bestimmte Aktion aus, weil etwas im Spiel passiert. Nun, eine Reihe von Dingen werden in einem imperativen Stil passieren. Wenn wir also im Engine-Ordner nachsehen, können wir eine ganze Reihe dieser Dinge sehen. Zum Beispiel haben wir Dinge wie Blackout. Wenn all Ihre Pokémon keine KP mehr haben, was passiert, nun, wir können uns ansehen, was passiert. Eines der Dinge, die passieren, ist, dass Sie die Hälfte Ihres Geldes verlieren. Wenn wir hier nachsehen, machen wir so etwas. Ihr Geld wird halbiert, und dann wird Ihre Gruppe geheilt. Und tatsächlich gibt es eine Reihe von Aktionen zur Heilung der Gruppe in der Engine. Dies wird im Grunde jedes Mal aufgerufen, wenn Sie Ihre Pokémon heilen möchten, sagen wir in einem Pokémon Center oder wenn Sie zum Beispiel bewusstlos werden. Und es tut hier alle möglichen Dinge. Sie können also sehen, dass es die PP, also die Attacken der Pokémon, wiederherstellt und auch die KP aller Pokémon in Ihrer Gruppe wiederherstellt. Und wir können uns jetzt auch ansehen, was in der Hall of Fame passiert. Was in der Hall of Fame passiert, ist eine ganze Reihe von Dingen, denn wenn Sie die Hall of Fame betreten, löst das einfach eine Aktion aus. Sie beginnen, sich in Richtung Professor Eich zu bewegen. Er beginnt zu reden, und dann passiert eine ganze Reihe von Dingen, einschließlich Dingen wie, dass es durch Ihre gesamte Gruppe geht. Es durchläuft alle Pokémon in Ihrer Gruppe, und sobald es damit fertig ist, zeigt es sie an und es wird auch eine Textbox erstellt, die Dinge wie die Gruppe, die Pokémon in Ihrer Gruppe anzeigt, und es wird Dinge wie die Spielzeit anzeigen, die Sie hatten. Wenn wir also nach Zeit suchen, glaube ich, dass es das ist. Wir können hier sehen, dass wir diese Spielzeit haben, die wir haben. Wir haben auch den Namen unseres Spielers, und das wird angezeigt. Und dann passiert es, dass wir das alles durchgehen, und dann sollte es so etwas wie die Credits aufrufen, was es hier tut. Ich glaube, das ist so ziemlich alles, was ich in diesem Video behandeln wollte, denn es war eher eine Erkundung des disassemblierten Codes. Wie gesagt, wenn Sie das selbst tun möchten, können Sie sich das GitHub ansehen und die Links in der Beschreibung. Und Sie sollten in der Lage sein, das alles nachzuvollziehen, und das wird alles gut sein. Cool. Vielleicht mache ich in Zukunft noch ein paar dieser Videos, je nachdem, was die Leute denken. Also ja, danke fürs Zuschauen. Tschüss.