# HG changeset patch # User Robert McIntyre # Date 1332207037 18000 # Node ID cd930ed1fd4d47bd4dd90eac21c558105a5f7a6c # Parent b12d2408fd9b47b8c946e85dbc273d91285917b9 determined location of sixth pokemon's name's first character. diff -r b12d2408fd9b -r cd930ed1fd4d clojure/com/aurellem/pokemon.clj --- a/clojure/com/aurellem/pokemon.clj Mon Mar 19 19:56:55 2012 -0500 +++ b/clojure/com/aurellem/pokemon.clj Mon Mar 19 20:30:37 2012 -0500 @@ -1,8 +1,94 @@ (ns com.aurellem.pokemon + "Here I find out how pokemon are stored in memory." (:use (com.aurellem gb-driver vbm + rival-name title save-corruption items assembly)) + (:use com.aurellem.experiments.items) (:import [com.aurellem.gb_driver SaveState])) +(def pidgeot-lvl-36 (mid-game)) +(def pidgeot-lvl-37 (read-state "pidgeot-lvl-37")) + + +(def pidgeot-lvl-38 (read-state "pidgeot-lvl-38")) + + +(def pidgeot-lvl-39 (read-state "pidgeot-lvl-39")) + + +(def pidgeot-lvl-40 (read-state "pidgeot-lvl-40")) + + +(defn level-analysis [] + (apply common-differences + (map (comp vec memory) + [pidgeot-lvl-36 + pidgeot-lvl-37 + pidgeot-lvl-38 + pidgeot-lvl-39 + pidgeot-lvl-40]))) + +;; inconclusive -- implies that level is calculated from +;; some other values. + + +(def name-pidgeotto (read-state "name-pidgeotto")) +(def named-A (read-state "named-A")) +(def named-B (read-state "named-B")) +(def named-C (read-state "named-C")) +(def named-D (read-state "named-D")) +(def named-E (read-state "named-E")) +(def named-F (read-state "named-F")) + +(defn name-analysis [] + (apply common-differences + (map (comp vec memory) + [named-A + named-B + named-C + named-D + named-E + named-F]))) + +;; resluted in 3 separate locations that could +;; possibly hold the first letter of the pokemon's name + +0xCF4A +0xD2EB +0xCEED + +;; try changing each of them + + +(defn test-cf4a [] + (continue! + (set-memory named-A 0xCF4A (character->character-code "Z")))) +;; result -- pidgeotto named "A" + +(defn test-d2eb [] + (continue! + (set-memory named-A 0xD2EB (character->character-code "Z")))) +;; result -- pidgeotto named "Z" + +(defn test-ceed [] + (continue! + (set-memory named-A 0xCEED (character->character-code "Z")))) +;; result -- pidgeotto named "A" + +(def sixth-pokemon-name-start 0xD2EB) + + +(defn set-sixth-pokemon-name-first-character + ([state character] + (set-memory state sixth-pokemon-name-start + (character->character-code character))) + ([character] + (set-sixth-pokemon-name-first-character @current-state + character))) + + + + diff -r b12d2408fd9b -r cd930ed1fd4d clojure/com/aurellem/rival_name.clj --- a/clojure/com/aurellem/rival_name.clj Mon Mar 19 19:56:55 2012 -0500 +++ b/clojure/com/aurellem/rival_name.clj Mon Mar 19 20:30:37 2012 -0500 @@ -32,7 +32,110 @@ (println codes) (view-rival-name codes) (reset! i (+ 5 @i)))))) - + +(def character-code->character + { + 0x00 "end-of-name-sentinel" + 0x60 "A-bold" + 0x61 "B-bold" + 0x62 "C-bold" + 0x63 "D-bold" + 0x64 "E-bold" + 0x65 "F-bold" + 0x66 "G-bold" + 0x67 "H-bold" + 0x68 "I-bold" + 0x69 "V-bold" + 0x6A "S-bold" + 0x6B "L-bold" + 0x6C "M-bold" + 0x80 "A" + 0x81 "B" + 0x82 "C" + 0x83 "D" + 0x84 "E" + 0x85 "F" + 0x86 "G" + 0x87 "H" + 0x88 "I" + 0x89 "J" + 0x8A "K" + 0x8B "L" + 0x8C "M" + 0x8D "N" + 0x8E "O" + 0x8F "P" + 0x90 "Q" + 0x91 "R" + 0x92 "S" + 0x93 "T" + 0x94 "U" + 0x95 "V" + 0x96 "W" + 0x97 "X" + 0x98 "Y" + 0x99 "Z" + 0x9A "(" + 0x9B ")" + 0x9C ":" + 0x9D ";" + 0xA0 "a" + 0xA1 "b" + 0xA2 "c" + 0xA3 "d" + 0xA4 "e" + 0xA5 "f" + 0xA6 "g" + 0xA7 "h" + 0xA8 "i" + 0xA9 "j" + 0xAA "k" + 0xAB "l" + 0xAC "m" + 0xAD "n" + 0xAE "o" + 0xAF "p" + 0xB0 "q" + 0xB1 "r" + 0xB2 "s" + 0xB3 "t" + 0xB4 "u" + 0xB5 "v" + 0xB6 "w" + 0xB7 "x" + 0xB8 "y" + 0xB9 "z" + 0xBA "e-with-grave" + 0xE0 "'" + 0xE1 "PK" + 0xE2 "MN" + 0xE6 "?" + 0xE7 "!" + 0xE8 "." + 0xEF "male-symbol" + 0xF0 "pokemon-money-symbol" + 0xF1 "." + 0xF2 "/" + 0xF3 "," + 0xF4 "female-symbol" + 0xF6 "0 " + 0xF7 "1" + 0xF8 "2" + 0xF9 "3" + 0xFA "4" + 0xFB "5" + 0xFC "6" + 0xFD "7" + 0xFE "8" + 0xFF "9" + }) + +(def character->character-code + (zipmap (vals character-code->character) + (keys character-code->character))) + + + ;; 0x00 : end-of-name-sentinel @@ -293,3 +396,5 @@ ;; 0xFF : 9 + + diff -r b12d2408fd9b -r cd930ed1fd4d save-states/name-pidgeotto.sav Binary file save-states/name-pidgeotto.sav has changed diff -r b12d2408fd9b -r cd930ed1fd4d save-states/named-A.sav Binary file save-states/named-A.sav has changed diff -r b12d2408fd9b -r cd930ed1fd4d save-states/named-B.sav Binary file save-states/named-B.sav has changed diff -r b12d2408fd9b -r cd930ed1fd4d save-states/named-C.sav Binary file save-states/named-C.sav has changed diff -r b12d2408fd9b -r cd930ed1fd4d save-states/named-D.sav Binary file save-states/named-D.sav has changed diff -r b12d2408fd9b -r cd930ed1fd4d save-states/named-E.sav Binary file save-states/named-E.sav has changed diff -r b12d2408fd9b -r cd930ed1fd4d save-states/named-F.sav Binary file save-states/named-F.sav has changed diff -r b12d2408fd9b -r cd930ed1fd4d save-states/pidgeot-lvl-37.sav Binary file save-states/pidgeot-lvl-37.sav has changed diff -r b12d2408fd9b -r cd930ed1fd4d save-states/pidgeot-lvl-38.sav Binary file save-states/pidgeot-lvl-38.sav has changed diff -r b12d2408fd9b -r cd930ed1fd4d save-states/pidgeot-lvl-39.sav Binary file save-states/pidgeot-lvl-39.sav has changed diff -r b12d2408fd9b -r cd930ed1fd4d save-states/pidgeot-lvl-40.sav Binary file save-states/pidgeot-lvl-40.sav has changed