rlm@133: (ns com.aurellem.rival-name rlm@133: (:use (com.aurellem gb-driver vbm title save-corruption items assembly)) rlm@133: (:import [com.aurellem.gb_driver SaveState])) rlm@133: rlm@133: rlm@133: (defn talk-to-rival [] rlm@133: (read-state "talk-to-rival")) rlm@133: rlm@133: (def rival-name-start 0xD349) rlm@133: rlm@133: (defn set-rival-name [^SaveState state codes] rlm@133: (set-state! state) rlm@133: (let [mem (memory state)] rlm@133: (dorun (map (fn [index val] rlm@133: (aset mem index val)) rlm@133: (range rival-name-start rlm@133: (+ rival-name-start rlm@133: (count codes))) codes)) rlm@133: (write-memory! mem) rlm@133: (update-state))) rlm@133: rlm@133: (defn view-rival-name [name-codes] rlm@133: (-> rlm@133: (set-rival-name (talk-to-rival) name-codes) rlm@133: (step [:a]) rlm@133: (play 50))) rlm@133: rlm@133: (defn rival-name-sequence [] rlm@133: (let [i (atom 1)] rlm@133: (fn [] rlm@133: (let [codes (range @i (+ 5 @i))] rlm@133: (println codes) rlm@133: (view-rival-name codes) rlm@133: (reset! i (+ 5 @i)))))) rlm@143: rlm@143: (def character-code->character rlm@143: { rlm@143: 0x00 "end-of-name-sentinel" rlm@143: 0x60 "A-bold" rlm@143: 0x61 "B-bold" rlm@143: 0x62 "C-bold" rlm@143: 0x63 "D-bold" rlm@143: 0x64 "E-bold" rlm@143: 0x65 "F-bold" rlm@143: 0x66 "G-bold" rlm@143: 0x67 "H-bold" rlm@143: 0x68 "I-bold" rlm@143: 0x69 "V-bold" rlm@143: 0x6A "S-bold" rlm@143: 0x6B "L-bold" rlm@143: 0x6C "M-bold" rlm@143: 0x80 "A" rlm@143: 0x81 "B" rlm@143: 0x82 "C" rlm@143: 0x83 "D" rlm@143: 0x84 "E" rlm@143: 0x85 "F" rlm@143: 0x86 "G" rlm@143: 0x87 "H" rlm@143: 0x88 "I" rlm@143: 0x89 "J" rlm@143: 0x8A "K" rlm@143: 0x8B "L" rlm@143: 0x8C "M" rlm@143: 0x8D "N" rlm@143: 0x8E "O" rlm@143: 0x8F "P" rlm@143: 0x90 "Q" rlm@143: 0x91 "R" rlm@143: 0x92 "S" rlm@143: 0x93 "T" rlm@143: 0x94 "U" rlm@143: 0x95 "V" rlm@143: 0x96 "W" rlm@143: 0x97 "X" rlm@143: 0x98 "Y" rlm@143: 0x99 "Z" rlm@143: 0x9A "(" rlm@143: 0x9B ")" rlm@143: 0x9C ":" rlm@143: 0x9D ";" rlm@143: 0xA0 "a" rlm@143: 0xA1 "b" rlm@143: 0xA2 "c" rlm@143: 0xA3 "d" rlm@143: 0xA4 "e" rlm@143: 0xA5 "f" rlm@143: 0xA6 "g" rlm@143: 0xA7 "h" rlm@143: 0xA8 "i" rlm@143: 0xA9 "j" rlm@143: 0xAA "k" rlm@143: 0xAB "l" rlm@143: 0xAC "m" rlm@143: 0xAD "n" rlm@143: 0xAE "o" rlm@143: 0xAF "p" rlm@143: 0xB0 "q" rlm@143: 0xB1 "r" rlm@143: 0xB2 "s" rlm@143: 0xB3 "t" rlm@143: 0xB4 "u" rlm@143: 0xB5 "v" rlm@143: 0xB6 "w" rlm@143: 0xB7 "x" rlm@143: 0xB8 "y" rlm@143: 0xB9 "z" rlm@143: 0xBA "e-with-grave" rlm@143: 0xE0 "'" rlm@143: 0xE1 "PK" rlm@143: 0xE2 "MN" rlm@143: 0xE6 "?" rlm@143: 0xE7 "!" rlm@143: 0xE8 "." rlm@143: 0xEF "male-symbol" rlm@143: 0xF0 "pokemon-money-symbol" rlm@143: 0xF1 "." rlm@143: 0xF2 "/" rlm@143: 0xF3 "," rlm@143: 0xF4 "female-symbol" rlm@143: 0xF6 "0 " rlm@143: 0xF7 "1" rlm@143: 0xF8 "2" rlm@143: 0xF9 "3" rlm@143: 0xFA "4" rlm@143: 0xFB "5" rlm@143: 0xFC "6" rlm@143: 0xFD "7" rlm@143: 0xFE "8" rlm@143: 0xFF "9" rlm@143: }) rlm@143: rlm@143: (def character->character-code rlm@143: (zipmap (vals character-code->character) rlm@143: (keys character-code->character))) rlm@143: rlm@143: rlm@143: rlm@133: rlm@133: rlm@133: ;; 0x00 : end-of-name-sentinel rlm@133: ;; 0x01 : rlm@133: ;; 0x02 : rlm@133: ;; 0x03 : rlm@133: ;; 0x04 : rlm@133: ;; 0x05 : rlm@133: ;; 0x06 : rlm@133: ;; 0x07 : rlm@133: ;; 0x08 : rlm@133: ;; 0x09 : rlm@133: ;; 0x0A : rlm@133: ;; 0x0B : rlm@133: ;; 0x0C : rlm@133: ;; 0x0D : rlm@133: ;; 0x0E : rlm@133: ;; 0x0F : rlm@133: ;; 0x10 : rlm@133: ;; 0x11 : rlm@133: ;; 0x12 : rlm@133: ;; 0x13 : rlm@133: ;; 0x14 : rlm@133: ;; 0x15 : rlm@133: ;; 0x16 : rlm@133: ;; 0x17 : rlm@133: ;; 0x18 : rlm@133: ;; 0x19 : rlm@133: ;; 0x1A : rlm@133: ;; 0x1B : rlm@133: ;; 0x1C : rlm@133: ;; 0x1D : rlm@133: ;; 0x1E : rlm@133: ;; 0x1F : rlm@133: ;; 0x20 : rlm@133: ;; 0x21 : rlm@133: ;; 0x22 : rlm@133: ;; 0x23 : rlm@133: ;; 0x24 : rlm@133: ;; 0x25 : rlm@133: ;; 0x26 : rlm@133: ;; 0x27 : rlm@133: ;; 0x28 : rlm@133: ;; 0x29 : rlm@133: ;; 0x2A : rlm@133: ;; 0x2B : rlm@133: ;; 0x2C : rlm@133: ;; 0x2D : rlm@133: ;; 0x2E : rlm@133: ;; 0x2F : rlm@133: ;; 0x30 : rlm@133: ;; 0x31 : rlm@133: ;; 0x32 : rlm@133: ;; 0x33 : rlm@133: ;; 0x34 : rlm@133: ;; 0x35 : rlm@133: ;; 0x36 : rlm@133: ;; 0x37 : rlm@133: ;; 0x38 : rlm@133: ;; 0x39 : rlm@133: ;; 0x3A : rlm@133: ;; 0x3B : rlm@133: ;; 0x3C : rlm@133: ;; 0x3D : rlm@133: ;; 0x3E : rlm@133: ;; 0x3F : rlm@133: ;; 0x40 : rlm@133: ;; 0x41 : rlm@133: ;; 0x42 : rlm@133: ;; 0x43 : rlm@133: ;; 0x44 : rlm@133: ;; 0x45 : rlm@133: ;; 0x46 : rlm@133: ;; 0x47 : rlm@133: ;; 0x48 : rlm@133: ;; 0x49 : rlm@133: ;; 0x4A : rlm@133: ;; 0x4B : rlm@133: ;; 0x4C : rlm@133: ;; 0x4D : rlm@133: ;; 0x4E : rlm@133: ;; 0x4F : rlm@133: ;; 0x50 : rlm@133: ;; 0x51 : rlm@133: ;; 0x52 : rlm@133: ;; 0x53 : rlm@133: ;; 0x54 : rlm@133: ;; 0x55 : rlm@133: ;; 0x56 : rlm@133: ;; 0x57 : rlm@133: ;; 0x58 : rlm@133: ;; 0x59 : rlm@133: ;; 0x5A : rlm@133: ;; 0x5B : rlm@133: ;; 0x5C : rlm@133: ;; 0x5D : rlm@133: ;; 0x5E : rlm@133: ;; 0x5F : rlm@133: ;; 0x60 : A (small-bold) rlm@133: ;; 0x61 : B (small-bold) rlm@133: ;; 0x62 : C (small-bold) rlm@133: ;; 0x63 : D (small-bold) rlm@133: ;; 0x64 : E (small-bold) rlm@133: ;; 0x65 : F (small-bold) rlm@133: ;; 0x66 : G (small-bold) rlm@133: ;; 0x67 : H (small-bold) rlm@133: ;; 0x68 : I (small-bold) rlm@133: ;; 0x69 : V (small-bold) rlm@133: ;; 0x6A : S (small-bold) rlm@133: ;; 0x6B : L (small-bold) rlm@133: ;; 0x6C : M (small-bold) rlm@133: ;; 0x6D : rlm@133: ;; 0x6E : rlm@133: ;; 0x6F : rlm@133: ;; 0x70 : rlm@133: ;; 0x71 : rlm@133: ;; 0x72 : rlm@133: ;; 0x73 : rlm@133: ;; 0x74 : rlm@133: ;; 0x75 : rlm@133: ;; 0x76 : rlm@133: ;; 0x77 : rlm@133: ;; 0x78 : rlm@133: ;; 0x79 : rlm@133: ;; 0x7A : rlm@133: ;; 0x7B : rlm@133: ;; 0x7C : rlm@133: ;; 0x7D : rlm@133: ;; 0x7E : rlm@133: ;; 0x7F : rlm@133: ;; 0x80 : A rlm@133: ;; 0x81 : B rlm@133: ;; 0x82 : C rlm@133: ;; 0x83 : D rlm@133: ;; 0x84 : E rlm@133: ;; 0x85 : F rlm@133: ;; 0x86 : G rlm@133: ;; 0x87 : H rlm@133: ;; 0x88 : I rlm@133: ;; 0x89 : J rlm@133: ;; 0x8A : K rlm@133: ;; 0x8B : L rlm@133: ;; 0x8C : M rlm@133: ;; 0x8D : N rlm@133: ;; 0x8E : O rlm@133: ;; 0x8F : P rlm@133: ;; 0x90 : Q rlm@133: ;; 0x91 : R rlm@133: ;; 0x92 : S rlm@133: ;; 0x93 : T rlm@133: ;; 0x94 : U rlm@133: ;; 0x95 : V rlm@133: ;; 0x96 : W rlm@133: ;; 0x97 : X rlm@133: ;; 0x98 : Y rlm@133: ;; 0x99 : Z rlm@133: ;; 0x9A : ( rlm@133: ;; 0x9B : ) rlm@133: ;; 0x9C : : rlm@133: ;; 0x9D : ; rlm@133: ;; 0x9E : rlm@133: ;; 0x9F : rlm@133: ;; 0xA0 : a rlm@133: ;; 0xA1 : b rlm@133: ;; 0xA2 : c rlm@133: ;; 0xA3 : d rlm@133: ;; 0xA4 : e rlm@133: ;; 0xA5 : f rlm@133: ;; 0xA6 : g rlm@133: ;; 0xA7 : h rlm@133: ;; 0xA8 : i rlm@133: ;; 0xA9 : j rlm@133: ;; 0xAA : k rlm@133: ;; 0xAB : l rlm@133: ;; 0xAC : m rlm@133: ;; 0xAD : n rlm@133: ;; 0xAE : o rlm@133: ;; 0xAF : p rlm@133: ;; 0xB0 : q rlm@133: ;; 0xB1 : r rlm@133: ;; 0xB2 : s rlm@133: ;; 0xB3 : t rlm@133: ;; 0xB4 : u rlm@133: ;; 0xB5 : v rlm@133: ;; 0xB6 : w rlm@133: ;; 0xB7 : x rlm@133: ;; 0xB8 : y rlm@133: ;; 0xB9 : z rlm@133: ;; 0xBA : e-with-grave rlm@133: ;; 0xBB : rlm@133: ;; 0xBC : rlm@133: ;; 0xBD : rlm@133: ;; 0xBE : rlm@133: ;; 0xBF : rlm@133: ;; 0xC0 : rlm@133: ;; 0xC1 : rlm@133: ;; 0xC2 : rlm@133: ;; 0xC3 : rlm@133: ;; 0xC4 : rlm@133: ;; 0xC5 : rlm@133: ;; 0xC6 : rlm@133: ;; 0xC7 : rlm@133: ;; 0xC8 : rlm@133: ;; 0xC9 : rlm@133: ;; 0xCA : rlm@133: ;; 0xCB : rlm@133: ;; 0xCC : rlm@133: ;; 0xCD : rlm@133: ;; 0xCE : rlm@133: ;; 0xCF : rlm@133: ;; 0xD0 : rlm@133: ;; 0xD1 : rlm@133: ;; 0xD2 : rlm@133: ;; 0xD3 : rlm@133: ;; 0xD4 : rlm@133: ;; 0xD5 : rlm@133: ;; 0xD6 : rlm@133: ;; 0xD7 : rlm@133: ;; 0xD8 : rlm@133: ;; 0xD9 : rlm@133: ;; 0xDA : rlm@133: ;; 0xDB : rlm@133: ;; 0xDC : rlm@133: ;; 0xDD : rlm@133: ;; 0xDE : rlm@133: ;; 0xDF : rlm@133: ;; 0xE0 : ' rlm@133: ;; 0xE1 : PK rlm@133: ;; 0xE2 : MN rlm@133: ;; 0xE3 : rlm@133: ;; 0xE4 : rlm@133: ;; 0xE5 : rlm@133: ;; 0xE6 : ? rlm@133: ;; 0xE7 : ! rlm@133: ;; 0xE8 : . rlm@133: ;; 0xE9 : rlm@133: ;; 0xEA : rlm@133: ;; 0xEB : rlm@133: ;; 0xEC : rlm@133: ;; 0xED : rlm@133: ;; 0xEE : rlm@133: ;; 0xEF : male-symbol rlm@133: ;; 0xF0 : pokemon-money-symbol rlm@133: ;; 0xF1 : . rlm@133: ;; 0xF2 : / rlm@133: ;; 0xF3 : , rlm@133: ;; 0xF4 : female-symbol rlm@133: ;; 0xF5 : rlm@133: ;; 0xF6 : 0 rlm@133: ;; 0xF7 : 1 rlm@133: ;; 0xF8 : 2 rlm@133: ;; 0xF9 : 3 rlm@133: ;; 0xFA : 4 rlm@133: ;; 0xFB : 5 rlm@133: ;; 0xFC : 6 rlm@133: ;; 0xFD : 7 rlm@133: ;; 0xFE : 8 rlm@133: ;; 0xFF : 9 rlm@133: rlm@133: rlm@143: rlm@143: