annotate clojure/com/aurellem/world/practice.clj @ 247:22f58fa47c3c

starting work on unoptimized bootstrap script.
author Robert McIntyre <rlm@mit.edu>
date Mon, 26 Mar 2012 03:08:54 -0500
parents d5dddf33543c
children b2f9a0cb13e3
rev   line source
ocsenave@185 1 (ns com.aurellem.world.practice
ocsenave@227 2 (:use (com.aurellem.gb gb-driver))
ocsenave@227 3
ocsenave@227 4 (:use (com.aurellem.gb saves util constants gb-driver vbm items assembly characters))
ocsenave@227 5 (:use (com.aurellem.run title))
ocsenave@227 6 (:use (com.aurellem.exp pokemon))
ocsenave@227 7 (:use (com.aurellem.exp item-bridge))
ocsenave@227 8 (:import [com.aurellem.gb.gb_driver SaveState]))
ocsenave@227 9
ocsenave@227 10
ocsenave@227 11 ;;(def original-rom (rom(root)))
ocsenave@227 12
ocsenave@185 13
ocsenave@185 14 (def hex-pc (comp hex PC))
ocsenave@185 15
ocsenave@194 16 (defn nstep [state n]
ocsenave@194 17 (if (zero? n) state
ocsenave@194 18 (recur (step state) (dec n))))
ocsenave@185 19
ocsenave@185 20
ocsenave@185 21 (defn view-memory* [state start length]
ocsenave@185 22 ((comp vec map)
ocsenave@194 23 #((comp aget) (memory state) %)
ocsenave@185 24 (range start (+ start length))))
ocsenave@185 25
ocsenave@185 26
ocsenave@185 27 (defn state-surprise
ocsenave@185 28 "This is one tick before the trainer goes [!]"
ocsenave@185 29 []
ocsenave@185 30 (->
ocsenave@185 31 (pre-trainer-battle)
ocsenave@185 32 (step [:r])
ocsenave@185 33 (step)
ocsenave@185 34 (ntick 88147)
ocsenave@185 35 ;(step [:r])
ocsenave@185 36
ocsenave@185 37 ;(step [:r])
ocsenave@185 38 ;(step [:r])
ocsenave@185 39 ;(step [:r])
ocsenave@185 40 ;(step [:r])
ocsenave@185 41 ))
ocsenave@194 42 (defn state-inject
ocsenave@194 43 "I have replaced the letter e with e-acute @ 0xC4E8."
ocsenave@194 44 []
ocsenave@194 45 (read-state "inject-surprise"))
ocsenave@185 46
ocsenave@185 47
ocsenave@185 48
ocsenave@185 49
ocsenave@194 50 (defn pc-trail
ocsenave@194 51 "Track the PC for a number of ticks."
ocsenave@194 52 [state ticks]
ocsenave@194 53 (tick state)
ocsenave@194 54 (set-state! state)
ocsenave@194 55 (loop [pcs [(PC)] ]
ocsenave@194 56 (if (> (count pcs) ticks) pcs
ocsenave@194 57 (do
ocsenave@194 58 (com.aurellem.gb.Gb/tick)
ocsenave@194 59 (recur (conj pcs (PC)))))))
ocsenave@185 60
ocsenave@185 61
ocsenave@185 62
ocsenave@194 63 (defn differences [list-1 list-2]
ocsenave@194 64 (remove
ocsenave@194 65 (fn [[a b c]] (= b c))
ocsenave@194 66 (map vector
ocsenave@194 67 (range)
ocsenave@194 68 list-1
ocsenave@194 69 list-2)))
ocsenave@194 70
ocsenave@194 71 (defn pc-diff [state-1 state-2]
ocsenave@194 72 (differences (map hex (pc-trail state-1 10000))
ocsenave@194 73 (map hex (pc-trail state-2 10000))))
ocsenave@194 74
ocsenave@194 75
ocsenave@194 76 (defn memory-diff [state-1 state-2]
ocsenave@194 77 (remove
ocsenave@194 78 (fn[[a b c]] (= b c))
ocsenave@194 79 (map (comp vec (partial map hex) list)
ocsenave@194 80 (range)
ocsenave@194 81 (vec (memory state-1))
ocsenave@194 82 (vec (memory state-2)))
ocsenave@194 83 )
ocsenave@194 84 )
ocsenave@194 85
ocsenave@194 86
ocsenave@194 87
ocsenave@194 88 (defn state-speak
ocsenave@194 89 "This is when the trainer speaks."
ocsenave@194 90 []
ocsenave@194 91 (->
ocsenave@194 92 (pre-trainer-battle)
ocsenave@194 93 (set-memory 0xD354 0x0)
ocsenave@194 94 (step [:r])
ocsenave@194 95 (step)
ocsenave@194 96 (ntick 88147)
ocsenave@194 97 (tick)
ocsenave@194 98 (nstep 102)
ocsenave@194 99
ocsenave@194 100 ;(step [:r])
ocsenave@194 101
ocsenave@194 102 ;(step [:r])
ocsenave@194 103 ;(step [:r])
ocsenave@194 104 ;(step [:r])
ocsenave@194 105 ;(step [:r])
ocsenave@194 106 ))
ocsenave@194 107
ocsenave@194 108
ocsenave@194 109
ocsenave@194 110 (defn get-memory [state n]
ocsenave@194 111 (aget (memory state) n))
ocsenave@194 112
ocsenave@194 113 (defn first-change
ocsenave@194 114 "Watch the current memory location as it ticks,
ocsenave@194 115 return the first state that differs at location mem."
ocsenave@194 116 [state n]
ocsenave@194 117 (tick state)
ocsenave@194 118 (set-state! state)
ocsenave@194 119 (let [init (aget (memory state) n)]
ocsenave@194 120 (loop []
ocsenave@194 121 (if (= (aget (memory) n) init)
ocsenave@194 122 (do
ocsenave@194 123 (com.aurellem.gb.Gb/tick)
ocsenave@194 124 (recur))))
ocsenave@194 125 (update-state)))
ocsenave@194 126
ocsenave@194 127
ocsenave@194 128
ocsenave@227 129
ocsenave@227 130 (defn spell-array
ocsenave@227 131 [array mem n]
ocsenave@227 132 (character-codes->str
ocsenave@194 133 (take n (drop mem
ocsenave@227 134 (vec array)))))
ocsenave@194 135
ocsenave@227 136 (defn spell
ocsenave@227 137 ([state mem n]
ocsenave@227 138 (spell (memory state) mem n))
ocsenave@227 139 ([mem n] (spell @current-state mem n)))
ocsenave@194 140
ocsenave@227 141
ocsenave@227 142
ocsenave@227 143 (comment
ocsenave@194 144 (println)
ocsenave@194 145 (print (character-codes->str (take 6000 (drop 0xA75F4
ocsenave@227 146 (vec(com.aurellem.gb.gb-driver/rom)))))))
ocsenave@194 147
ocsenave@194 148 ;(dorun (map println (view-memory* (state-surprise) 0x1AEF 1600)))
ocsenave@194 149
ocsenave@194 150
ocsenave@194 151
ocsenave@194 152 (def surprise-words
ocsenave@194 153 [0x80 0xAB 0xAB 0x7F 0xB1 0xA8 0xA6 0xA7 0xB3 0xE7 0x7F 0x8B 0xA4 0xB3 0xE0 0xB2 0x7F 0xB1 0xAE 0xAB 0xAB 0x7F 0xB3 0xA7 0xA4 0x7F 0xA3 0xA8 0xA2 0xA4 0xE7])
ocsenave@194 154
ocsenave@194 155 (defn sublist
ocsenave@194 156 "Unshifts the list until the sublist is at the start."
ocsenave@194 157 [list sub]
ocsenave@194 158 (cond
ocsenave@194 159 (empty? sub) list
ocsenave@194 160 (empty? list) nil
ocsenave@194 161 (= (take (count sub) list) sub) list
ocsenave@194 162 :else (recur (rest list) sub)))
ocsenave@194 163
ocsenave@227 164 (defn find-sublist
ocsenave@194 165 "Returns the position of the first occurence of sublist."
ocsenave@194 166 [list sub]
ocsenave@194 167 (loop [n 0 a list]
ocsenave@194 168 (cond
ocsenave@194 169 (empty? a) nil
ocsenave@194 170 (= (take (count sub) a) sub) n
ocsenave@194 171 :else (recur (inc n) (rest a)))))
ocsenave@194 172
ocsenave@227 173 (defn find-sublists
ocsenave@227 174 "Returns a vector of the occurences of sublists."
ocsenave@227 175 [list sub]
ocsenave@227 176 (let [m (find-sublist list sub)]
ocsenave@227 177 (if (nil? m) '()
ocsenave@227 178 (cons m
ocsenave@227 179 (map (partial + (inc m))
ocsenave@227 180 (find-sublists
ocsenave@227 181 (drop (inc m) list)
ocsenave@227 182 sub))))))
ocsenave@227 183
ocsenave@227 184 (defn spelling-bee
ocsenave@227 185 "Search for the given string in ROM, returning short snippets of
ocsenave@227 186 text around the results."
ocsenave@227 187 [str k]
ocsenave@227 188 (let [rom (rom(root))]
ocsenave@227 189 (map
ocsenave@227 190 (fn [n]
ocsenave@227 191 [(hex n)
ocsenave@227 192 (character-codes->str (take k (drop n rom)))])
ocsenave@227 193
ocsenave@227 194 (find-sublists
ocsenave@227 195 rom
ocsenave@227 196 (str->character-codes str)))))
ocsenave@227 197
ocsenave@194 198
ocsenave@194 199
ocsenave@194 200
ocsenave@194 201 (defn change-speech
ocsenave@194 202 ([state str k]
ocsenave@194 203 (loop [ops str
ocsenave@194 204 s state
ocsenave@194 205 n k]
ocsenave@194 206 (if (empty? ops) s
ocsenave@194 207 (recur
ocsenave@194 208 (rest ops)
ocsenave@194 209 (set-memory (first-change s (+ 0xC4B9 n)) (+ 0xC4B9 n)
ocsenave@194 210 (first ops))
ocsenave@194 211 (if (not= n 19) (inc n)
ocsenave@194 212 (+ n 21))))))
ocsenave@194 213 ([str k]
ocsenave@194 214 (change-speech (state-speak) str k))
ocsenave@194 215 ([str]
ocsenave@227 216 (change-speech str 0)))
ocsenave@227 217
ocsenave@227 218
ocsenave@227 219
ocsenave@227 220 (defn rewrite-memory
ocsenave@227 221 "Alters the vector of memory. Treats strings as lists of character
ocsenave@227 222 ops."
ocsenave@227 223 ([mem start strs-or-ops]
ocsenave@227 224 (let [x (first strs-or-ops)]
ocsenave@227 225 (cond (empty? strs-or-ops) mem
ocsenave@227 226 (string? x)
ocsenave@227 227
ocsenave@227 228 (recur mem start
ocsenave@227 229 (concat
ocsenave@227 230 (str->character-codes x)
ocsenave@227 231 (rest strs-or-ops)))
ocsenave@227 232 :else
ocsenave@227 233 (recur
ocsenave@227 234 (assoc mem start x)
ocsenave@227 235 (inc start)
ocsenave@227 236 (rest strs-or-ops))))))
ocsenave@227 237
ocsenave@227 238 (def rewrite-rom
ocsenave@227 239 "Alters the ROM array using write-memory."
ocsenave@227 240 (partial rewrite-memory (vec (rom(root)))))
ocsenave@227 241
ocsenave@227 242 (defn restore-rom! [] (write-rom! original-rom))
ocsenave@227 243
ocsenave@227 244
ocsenave@227 245
ocsenave@227 246 (def oak-intro
ocsenave@227 247
ocsenave@227 248 (list "Hello there!"
ocsenave@227 249 0x4F
ocsenave@227 250 "Welcome to the"
ocsenave@227 251 0x55
ocsenave@227 252 "world of "
ocsenave@227 253 0x54
ocsenave@227 254 "MON!"
ocsenave@227 255 0x51
ocsenave@227 256 "My name is OAK!"
ocsenave@227 257 0x4F
ocsenave@227 258 "People call me"
ocsenave@227 259 0x55
ocsenave@227 260 "the "
ocsenave@227 261 0x54
ocsenave@227 262 "MON PROF!"
ocsenave@227 263 0x58
ocsenave@227 264 "This world is"
ocsenave@227 265 0x4F
ocsenave@227 266 "inhabited by"
ocsenave@227 267 0x55
ocsenave@227 268 "creatures called"
ocsenave@227 269 0x55
ocsenave@227 270 0x54
ocsenave@227 271 "MON!"
ocsenave@227 272 0x50
ocsenave@227 273 0x50
ocsenave@227 274 0x51
ocsenave@227 275 "For some people, "
ocsenave@227 276 0x4F
ocsenave@227 277 0x54
ocsenave@227 278 "MON are"
ocsenave@227 279 0x55
ocsenave@227 280 "pets. Others use"
ocsenave@227 281 0x55
ocsenave@227 282 "them for fights."
ocsenave@227 283 0x51
ocsenave@227 284 "Myself..."
ocsenave@227 285 0x51
ocsenave@227 286 "I study "
ocsenave@227 287 0x54
ocsenave@227 288 "MON"
ocsenave@227 289 0x4F
ocsenave@227 290 "as a profession."
ocsenave@227 291 0x58
ocsenave@227 292 "First, what is"
ocsenave@227 293 0x4F
ocsenave@227 294 "your name?"
ocsenave@227 295 0x58
ocsenave@227 296 "This is my grand-"
ocsenave@227 297 0x4F
ocsenave@227 298 "son. He's been"
ocsenave@227 299 0x55
ocsenave@227 300 "your rival since"
ocsenave@227 301 0x55
ocsenave@227 302 "you were a baby."
ocsenave@227 303 0x51
ocsenave@227 304 "...Erm, what is"
ocsenave@227 305 0x4F
ocsenave@227 306 "his name again?"
ocsenave@227 307 0x58
ocsenave@227 308 0x52
ocsenave@227 309 "!"
ocsenave@227 310 0x51
ocsenave@227 311 "Your very own"
ocsenave@227 312 0x4F
ocsenave@227 313 0x54
ocsenave@227 314 "MON legend is"
ocsenave@227 315 0x55
ocsenave@227 316 "about to unfold!"
ocsenave@227 317 0x51
ocsenave@227 318 "A world of dreams"
ocsenave@227 319 0x4F
ocsenave@227 320 "and adventures"
ocsenave@227 321 0x55
ocsenave@227 322 "with "
ocsenave@227 323 0x54
ocsenave@227 324 "MON"
ocsenave@227 325 0x55
ocsenave@227 326 "awaits! Let's go!"
ocsenave@227 327 0x57) )
ocsenave@227 328
ocsenave@227 329 (defn state-intro
ocsenave@227 330 "Professor Oak speaks!"
ocsenave@227 331 []
ocsenave@227 332 (do
ocsenave@227 333 (->
ocsenave@227 334 (rewrite-rom 0xA07BB
ocsenave@227 335 (list 0x87 0xA4 0xAB 0xAB 0xAE 0x7F 0xB3 0xA7 0xA4 0xB1 0xA4 0xE7 0x4F 0x96 0xA4 0xAB 0xA2 0xAE 0xAC 0xA4 0x7F 0xB3 0xAE 0x7F 0xB3 0xA7 0xA4 0x55 0xB6 0xAE 0xB1 0xAB 0xA3 0x7F 0xAE 0xA5 0x7F 0x54 0x8C 0x8E 0x8D 0xE7 0x51 0x8C 0xB8 0x7F 0xAD 0xA0 0xAC 0xA4 0x7F 0xA8 0xB2 0x7F 0x8E 0x80 0x8A 0xE7 0x4F 0x8F 0xA4 0xAE 0xAF 0xAB 0xA4 0x7F 0xA2 0xA0 0xAB 0xAB 0x7F 0xAC 0xA4 0x55 0xB3 0xA7 0xA4 0x7F 0x8F 0x8C 0x8E 0x8D 0x7F 0x8F 0x91 0x8E 0x85 0xE7 0x58 0x93 0xA7 0xA8 0xB2 0x7F 0xB6 0xAE 0xB1 0xAB 0xA3 0x7F 0xA8 0xB2 0x4F 0xA8 0xAD 0xA7 0xA0 0xA1 0xA8 0xB3 0xA4 0xA3 0x7F 0xA1 0xB8 0x55 0xA2 0xB1 0xA4 0xA0 0xB3 0xB4 0xB1 0xA4 0xB2 0x7F 0xA2 0xA0 0xAB 0xAB 0xA4 0xA3 0x55 0x54 0x8C 0x8E 0x8D 0xE7 0x50 0x50 0x51 0x85 0xAE 0xB1 0x7F 0xB2 0xAE 0xAC 0xA4 0x7F 0xAF 0xA4 0xAE 0xAF 0xAB 0xA4 0xF3 0x7F 0x4F 0x54 0x8C 0x8E 0x8D 0x7F 0xA0 0xB1 0xA4 0x55 0xAF 0xA4 0xB3 0xB2 0xF1 0x7F 0x8E 0xB3 0xA7 0xA4 0xB1 0xB2 0x7F 0xB4 0xB2 0xA4 0x55 0xB3 0xA7 0xA4 0xAC 0x7F 0xA5 0xAE 0xB1 0x7F 0xA5 0xA8 0xA6 0xA7 0xB3 0xB2 0xF1 0x51 0x8C 0xB8 0xB2 0xA4 0xAB 0xA5 0xF1 0xF1 0xF1 0x51 0x88 0x7F 0xB2 0xB3 0xB4 0xA3 0xB8 0x7F 0x54 0x8C 0x8E 0x8D 0x4F 0xA0 0xB2 0x7F 0xA0 0x7F 0xAF 0xB1 0xAE 0xA5 0xA4 0xB2 0xB2 0xA8 0xAE 0xAD 0xF1 0x58 0x85 0xA8 0xB1 0xB2 0xB3 0xF3 0x7F 0x7F 0xB6 0xA7 0xA0 0xB3 0x7F 0xA8 0xB2 0x4F 0xB8 0xAE 0xB4 0xB1 0x7F 0xAD 0xA0 0xAC 0xA4 0xE6 0x58 0x93 0xA7 0xA8 0xB2 0x7F 0xA8 0xB2 0x7F 0xAC 0xB8 0x7F 0xA6 0xB1 0xA0 0xAD 0xA3 0xE3 0x4F 0xB2 0xAE 0xAD 0xF1 0x7F 0x87 0xA4 0xE0 0xB2 0x7F 0xA1 0xA4 0xA4 0xAD 0x55 0xB8 0xAE 0xB4 0xB1 0x7F 0xB1 0xA8 0xB5 0xA0 0xAB 0x7F 0xB2 0xA8 0xAD 0xA2 0xA4 0x55 0xB8 0xAE 0xB4 0x7F 0xB6 0xA4 0xB1 0xA4 0x7F 0xA0 0x7F 0xA1 0xA0 0xA1 0xB8 0xF1 0x51 0xF1 0xF1 0xF1 0x84 0xB1 0xAC 0xF3 0x7F 0x7F 0xB6 0xA7 0xA0 0xB3 0x7F 0xA8 0xB2 0x4F 0xA7 0xA8 0xB2 0x7F 0xAD 0xA0 0xAC 0xA4 0x7F 0xA0 0xA6 0xA0 0xA8 0xAD 0xE6 0x58 0x52 0xE7 0x51 0x98 0xAE 0xB4 0xB1 0x7F 0xB5 0xA4 0xB1 0xB8 0x7F 0xAE 0xB6 0xAD 0x4F 0x54 0x8C 0x8E 0x8D 0x7F 0xAB 0xA4 0xA6 0xA4 0xAD 0xA3 0x7F 0xA8 0xB2 0x55 0xA0 0xA1 0xAE 0xB4 0xB3 0x7F 0xB3 0xAE 0x7F 0xB4 0xAD 0xA5 0xAE 0xAB 0xA3 0xE7 0x51 0x80 0x7F 0xB6 0xAE 0xB1 0xAB 0xA3 0x7F 0xAE 0xA5 0x7F 0xA3 0xB1 0xA4 0xA0 0xAC 0xB2 0x4F 0xA0 0xAD 0xA3 0x7F 0xA0 0xA3 0xB5 0xA4 0xAD 0xB3 0xB4 0xB1 0xA4 0xB2 0x55 0xB6 0xA8 0xB3 0xA7 0x7F 0x54 0x8C 0x8E 0x8D 0x55 0xA0 0xB6 0xA0 0xA8 0xB3 0xB2 0xE7 0x7F 0x8B 0xA4 0xB3 0xE0 0xB2 0x7F 0xA6 0xAE 0xE7 0x57 0x0 0x83 0xAE 0x7F 0xB8 0xAE 0xB4 0x7F 0xB6 0xA0 0xAD 0xB3 0x7F 0xB3 0xAE 0x4F 0xA6 0xA8 0xB5 0xA4 0x7F 0xA0 0x7F 0xAD 0xA8 0xA2 0xAA 0xAD 0xA0 0xAC 0xA4 0x55 0xB3 0xAE 0x7F 0x50 0x1 0x6D 0xCD 0x0 0xE6 0x57 0x0 0x91 0xA8 0xA6 0xA7 0xB3 0xE7 0x7F 0x92 0xAE 0x7F 0xB8 0xAE 0xB4 0xB1 0x4F 0xAD 0xA0 0xAC 0xA4 0x7F 0xA8 0xB2 0x7F 0x52 0xE7 0x58 0x0 0x93 0xA7 0xA0 0xB3 0xBD 0x7F 0xB1 0xA8 0xA6 0xA7 0xB3 0xE7 0x7F 0x88 0x4F 0xB1 0xA4 0xAC 0xA4 0xAC 0xA1 0xA4 0xB1 0x7F 0xAD 0xAE 0xB6 0xE7 0x7F 0x87 0xA8 0xB2 0x55 0xAD 0xA0 0xAC 0xA4 0x7F 0xA8 0xB2 0x7F 0x53 0xE7 0x58 0x1 0x3F 0xCD 0x0 0x7F 0xA0 0xAD 0xA3 0x4F 0x50 0x1 0x6D 0xCD 0x0 0x7F 0xB6 0xA8 0xAB 0xAB 0x55 0xA1 0xA4 0x7F 0xB3 0xB1 0xA0 0xA3 0xA4 0xA3 0xE8 0x57 0x0 0x98 0xAE 0xB4 0x7F 0xAD 0xA4 0xA4 0xA3 0x7F 0xF9 0x7F 0x54 0x8C 0x8E 0x8D 0x4F 0xB3 0xAE 0x7F 0xA5 0xA8 0xA6 0xA7 0xB3 0xE7 0x58 0x0 0x92 0xAE 0xB1 0xB1 0xB8 0xF4 0x7F 0x8C 0x84 0x96 0x7F 0xA2 0xA0 0xAD 0xBE 0x4F 0xA0 0xB3 0xB3 0xA4 0xAD 0xA3 0xE7 0x58 0x0 0x98 0xAE 0xB4 0xB1 0x7F 0x54 0x8C 0x8E 0x8D 0x7F 0xAC 0xB4 0xB2 0xB3 0x4F 0xA0 0xAB 0xAB 0x7F 0xA1 0xA4 0x7F 0xA3 0xA8 0xA5 0xA5 0xA4 0xB1 0xA4 0xAD 0xB3 0xE7 0x58 0x0 0x8D 0xAE 0x7F 0x54 0x8C 0x8E 0x8D 0x7F 0xA2 0xA0 0xAD 0x4F 0xA4 0xB7 0xA2 0xA4 0xA4 0xA3 0x7F 0x8B 0xFB 0xFB 0xE7 0x58 0x0 0x80 0xAB 0xAB 0x7F 0x54 0x8C 0x8E 0x8D 0x7F 0xAC 0xB4 0xB2 0xB3 0x4F 0xA1 0xA4 0x7F 0xA0 0xB3 0x7F 0xAB 0xA4 0xA0 0xB2 0xB3 0x7F 0x8B 0xFB 0xF6 0xE7 0x58 0x0 0x98 0xAE 0xB4 0xB1 0x7F 0xB3 0xAE 0xB3 0xA0 0xAB 0x7F 0xAB 0xA4 0xB5 0xA4 0xAB 0xB2 0x4F 0xA4 0xB7 0xA2 0xA4 0xA4 0xA3 0x7F 0xF7 0xFB 0xFB 0xE7 0x58 0x0 0x8D 0xAE 0x7F 0x54 0x8C 0x8E 0x8D 0x7F 0xA2 0xA0 0xAD 0x4F 0xA4 0xB7 0xA2 0xA4 0xA4 0xA3 0x7F 0x8B 0xF9 0xF6 0xE7 0x58 0x0 0x80 0xAB 0xAB 0x7F 0x54 0x8C 0x8E 0x8D 0x7F 0xAC 0xB4 0xB2 0xB3 0x4F 0xA1 0xA4 0x7F 0xA0 0xB3 0x7F 0xAB 0xA4 0xA0 0xB2 0xB3 0x7F 0x8B 0xF8 0xFB 0xE7 0x58 0x0 0x98 0xAE 0xB4 0xB1 0x7F 0xB3 0xAE 0xB3 0xA0 0xAB 0x7F 0xAB 0xA4 0xB5 0xA4 0xAB 0xB2 0x4F 0xA4 0xB7 0xA2 0xA4 0xA4 0xA3 0x7F 0xFE 0xF6 0xE7 0x58 0x0 0x8D 0xAE 0x7F 0x54 0x8C 0x8E 0x8D 0x7F 0xA2 0xA0 0xAD 0x4F 0xA4 0xB7 0xA2 0xA4 0xA4 0xA3 0x7F 0x8B 0xF8 0xF6 0xE7 0x58 0x0 0x80 0xAB 0xAB 0x7F 0x54 0x8C 0x8E 0x8D 0x7F 0xAC 0xB4 0xB2 0xB3 0x4F 0xA1 0xA4 0x7F 0xA0 0xB3 0x7F 0xAB 0xA4 0xA0 0xB2 0xB3 0x7F 0x8B 0xF7 0xFB 0xE7 0x58 0x0 0x98 0xAE 0xB4 0xB1 0x7F 0xB3 0xAE 0xB3 0xA0 0xAB 0x7F 0xAB 0xA4 0xB5 0xA4 0xAB 0xB2 0x4F 0xA4 0xB7 0xA2 0xA4 0xA4 0xA3 0x7F 0xFB 0xF6 0xE7 0x58 0x1 0x6D 0xCD 0x0 0x7F 0xA8 0xB2 0x7F 0xAE 0xB5 0xA4 0xB1 0x4F 0xFC 0x71 0xFE 0x73 0x7F 0xB3 0xA0 0xAB 0xAB 0xE7 0x58 0x1 0x6D 0xCD 0x0)
ocsenave@227 336 ;; (list
ocsenave@227 337 ;; "Sleeping on the"
ocsenave@227 338 ;; 0x4F
ocsenave@227 339 ;; "job again are we?"
ocsenave@227 340 ;; 0x51
ocsenave@227 341 ;; 0x00
ocsenave@227 342 ;; "test"
ocsenave@227 343 ;; 0x59
ocsenave@227 344 ;; "EOM")
ocsenave@227 345
ocsenave@227 346
ocsenave@227 347 )
ocsenave@227 348 (int-array)
ocsenave@227 349 (write-rom!))
ocsenave@227 350 (root)
ocsenave@227 351
ocsenave@227 352 )
ocsenave@227 353
ocsenave@194 354 )
ocsenave@194 355
ocsenave@227 356 (comment
ocsenave@227 357 "Hello there![0x4F]Welcome to the[0x55]world of [POKE]MON![0x51]My
ocsenave@227 358 name is OAK![0x4F]People call me[0x55]the [POKE]MON PROF![0x58]This
ocsenave@227 359 world is[0x4F]inhabited by[0x55]creatures
ocsenave@227 360 called[0x55][POKE]MON![0x50][0x50][0x51]For some people,
ocsenave@227 361 [0x4F][POKE]MON are[0x55]pets. Others use[0x55]them for
ocsenave@227 362 fights.[0x51]Myself...[0x51]I study [POKE]MON[0x4F]as a
ocsenave@227 363 profession.[0x58]First, what is[0x4F]your name?[0x58]This is my
ocsenave@227 364 grand-[0x4F]son. He's been[0x55]your rival since[0x55]you were a
ocsenave@227 365 baby.[0x51]...Erm, what is[0x4F]his name again?[0x58][RED]![0x51]Your
ocsenave@227 366 very own[0x4F][POKE]MON legend is[0x55]about to unfold![0x51]A world
ocsenave@227 367 of dreams[0x4F]and adventures[0x55]with [POKE]MON[0x55]awaits! Let's
ocsenave@227 368 go![0x57]")
ocsenave@227 369
ocsenave@227 370
ocsenave@227 371
ocsenave@227 372
ocsenave@227 373
ocsenave@227 374
ocsenave@227 375
ocsenave@227 376
ocsenave@227 377
ocsenave@227 378
ocsenave@227 379
ocsenave@227 380
ocsenave@227 381