changeset 133:424510993296

saving progress
author Robert McIntyre <rlm@mit.edu>
date Sun, 18 Mar 2012 00:33:00 -0500
parents d16cf9d829dd
children 718abf3bec8a
files clojure/com/aurellem/item_bridge.clj clojure/com/aurellem/rival_name.clj
diffstat 2 files changed, 346 insertions(+), 281 deletions(-) [+]
line wrap: on
line diff
     1.1 --- a/clojure/com/aurellem/item_bridge.clj	Sat Mar 17 21:32:29 2012 -0500
     1.2 +++ b/clojure/com/aurellem/item_bridge.clj	Sun Mar 18 00:33:00 2012 -0500
     1.3 @@ -9,294 +9,64 @@
     1.4  (defn corrupt-item-state []
     1.5    (read-state "corrupt-items"))
     1.6  
     1.7 -(defn talk-to-rival []
     1.8 -  (read-state "talk-to-rival"))
     1.9  
    1.10 -(def rival-name-start 0xD349)
    1.11 +(defn view-memory-range [state start end]
    1.12 +  (dorun
    1.13 +   (map (fn [loc val]
    1.14 +          (println (format "%04X : %02X" loc val)))
    1.15 +        
    1.16 +        (range start end) (subvec (vec (memory state)) start end)))
    1.17 +  state)
    1.18  
    1.19 -
    1.20 -(defn set-rival-name [^SaveState state codes]
    1.21 +(defn set-memory [state location value]
    1.22    (set-state! state)
    1.23    (let [mem (memory state)]
    1.24 -    (dorun (map (fn [index val]
    1.25 -                  (aset mem index val))
    1.26 -                (range rival-name-start
    1.27 -                       (+ rival-name-start
    1.28 -                          (count codes))) codes))
    1.29 +    (aset mem location value)
    1.30      (write-memory! mem)
    1.31      (update-state)))
    1.32  
    1.33 -(defn view-rival-name [name-codes]
    1.34 -  (->
    1.35 -   (set-rival-name (talk-to-rival) name-codes)
    1.36 -   (step [:a])
    1.37 -   (play 50)))
    1.38 +(defn almost-broken
    1.39 +  "if one more memory location is turned into 0x03, the game crashes."
    1.40 +  [n]
    1.41 +  (view-memory-range
    1.42 +   (set-inv-mem (mid-game)
    1.43 +                (concat [0xFF] (repeat 64 0x03)
    1.44 +                        (subvec (vec (memory (mid-game)))
    1.45 +                                (+ item-list-start 65)
    1.46 +                                (+ item-list-start 65 n))
    1.47 +                        (repeat (- 255 65 n) 0x03)
    1.48 +                        ))
    1.49 +                
    1.50 +   item-list-start (+ item-list-start 255)))
    1.51  
    1.52 -(defn rival-name-sequence []
    1.53 -  (let [i (atom 1)]
    1.54 -    (fn []
    1.55 -      (let [codes (range @i (+ 5 @i))]
    1.56 -        (println codes)
    1.57 -        (view-rival-name codes)
    1.58 -        (reset! i (+ 5 @i))))))
    1.59 -      
    1.60 +(defn actually-broken
    1.61 +  "if one more memory location is turned into 0x03, the game crashes."
    1.62 +  []
    1.63 +  (set-memory (mid-game) 0xD35D 0x03))
    1.64  
    1.65  
    1.66 -;; 0x00 :  end-of-name-sentinel
    1.67 -;; 0x01 :  
    1.68 -;; 0x02 :  
    1.69 -;; 0x03 :  
    1.70 -;; 0x04 :  
    1.71 -;; 0x05 :  
    1.72 -;; 0x06 :  
    1.73 -;; 0x07 :  
    1.74 -;; 0x08 :  
    1.75 -;; 0x09 :  
    1.76 -;; 0x0A :  
    1.77 -;; 0x0B :  
    1.78 -;; 0x0C :  
    1.79 -;; 0x0D :  
    1.80 -;; 0x0E :  
    1.81 -;; 0x0F :  
    1.82 -;; 0x10 :  
    1.83 -;; 0x11 :  
    1.84 -;; 0x12 :  
    1.85 -;; 0x13 :  
    1.86 -;; 0x14 :  
    1.87 -;; 0x15 :  
    1.88 -;; 0x16 :  
    1.89 -;; 0x17 :  
    1.90 -;; 0x18 :  
    1.91 -;; 0x19 :  
    1.92 -;; 0x1A :  
    1.93 -;; 0x1B :  
    1.94 -;; 0x1C :  
    1.95 -;; 0x1D :  
    1.96 -;; 0x1E :  
    1.97 -;; 0x1F :  
    1.98 -;; 0x20 :  
    1.99 -;; 0x21 :  
   1.100 -;; 0x22 :  
   1.101 -;; 0x23 :  
   1.102 -;; 0x24 :  
   1.103 -;; 0x25 :  
   1.104 -;; 0x26 :  
   1.105 -;; 0x27 :  
   1.106 -;; 0x28 :  
   1.107 -;; 0x29 :  
   1.108 -;; 0x2A :  
   1.109 -;; 0x2B :  
   1.110 -;; 0x2C :  
   1.111 -;; 0x2D :  
   1.112 -;; 0x2E :  
   1.113 -;; 0x2F :  
   1.114 -;; 0x30 :  
   1.115 -;; 0x31 :  
   1.116 -;; 0x32 :  
   1.117 -;; 0x33 :  
   1.118 -;; 0x34 :  
   1.119 -;; 0x35 :  
   1.120 -;; 0x36 :  
   1.121 -;; 0x37 :  
   1.122 -;; 0x38 :  
   1.123 -;; 0x39 :  
   1.124 -;; 0x3A :  
   1.125 -;; 0x3B :  
   1.126 -;; 0x3C :  
   1.127 -;; 0x3D :  
   1.128 -;; 0x3E :  
   1.129 -;; 0x3F :  
   1.130 -;; 0x40 :  
   1.131 -;; 0x41 :  
   1.132 -;; 0x42 :  
   1.133 -;; 0x43 :  
   1.134 -;; 0x44 :  
   1.135 -;; 0x45 :  
   1.136 -;; 0x46 :  
   1.137 -;; 0x47 :  
   1.138 -;; 0x48 :  
   1.139 -;; 0x49 :  
   1.140 -;; 0x4A :  
   1.141 -;; 0x4B :  
   1.142 -;; 0x4C :  
   1.143 -;; 0x4D :  
   1.144 -;; 0x4E :  
   1.145 -;; 0x4F :  
   1.146 -;; 0x50 :  
   1.147 -;; 0x51 :  
   1.148 -;; 0x52 :  
   1.149 -;; 0x53 :  
   1.150 -;; 0x54 :  
   1.151 -;; 0x55 :  
   1.152 -;; 0x56 :  
   1.153 -;; 0x57 :  
   1.154 -;; 0x58 :  
   1.155 -;; 0x59 :  
   1.156 -;; 0x5A :  
   1.157 -;; 0x5B :  
   1.158 -;; 0x5C :  
   1.159 -;; 0x5D :  
   1.160 -;; 0x5E :  
   1.161 -;; 0x5F :  
   1.162 -;; 0x60 :  A (small-bold)
   1.163 -;; 0x61 :  B (small-bold)
   1.164 -;; 0x62 :  C (small-bold)
   1.165 -;; 0x63 :  D (small-bold)
   1.166 -;; 0x64 :  E (small-bold)
   1.167 -;; 0x65 :  F (small-bold)
   1.168 -;; 0x66 :  G (small-bold)
   1.169 -;; 0x67 :  H (small-bold)
   1.170 -;; 0x68 :  I (small-bold)
   1.171 -;; 0x69 :  V (small-bold)
   1.172 -;; 0x6A :  S (small-bold)
   1.173 -;; 0x6B :  L (small-bold)
   1.174 -;; 0x6C :  M (small-bold)
   1.175 -;; 0x6D :  
   1.176 -;; 0x6E :  
   1.177 -;; 0x6F :  
   1.178 -;; 0x70 :  
   1.179 -;; 0x71 :  
   1.180 -;; 0x72 :  
   1.181 -;; 0x73 :  
   1.182 -;; 0x74 :  
   1.183 -;; 0x75 :  
   1.184 -;; 0x76 :  
   1.185 -;; 0x77 :  
   1.186 -;; 0x78 :  
   1.187 -;; 0x79 :  
   1.188 -;; 0x7A :  
   1.189 -;; 0x7B :  
   1.190 -;; 0x7C :  
   1.191 -;; 0x7D :  
   1.192 -;; 0x7E :  
   1.193 -;; 0x7F :  
   1.194 -;; 0x80 :  A
   1.195 -;; 0x81 :  B
   1.196 -;; 0x82 :  C
   1.197 -;; 0x83 :  D
   1.198 -;; 0x84 :  E
   1.199 -;; 0x85 :  F
   1.200 -;; 0x86 :  G
   1.201 -;; 0x87 :  H
   1.202 -;; 0x88 :  I
   1.203 -;; 0x89 :  J
   1.204 -;; 0x8A :  K
   1.205 -;; 0x8B :  L
   1.206 -;; 0x8C :  M
   1.207 -;; 0x8D :  N
   1.208 -;; 0x8E :  O
   1.209 -;; 0x8F :  P
   1.210 -;; 0x90 :  Q
   1.211 -;; 0x91 :  R
   1.212 -;; 0x92 :  S
   1.213 -;; 0x93 :  T
   1.214 -;; 0x94 :  U
   1.215 -;; 0x95 :  V
   1.216 -;; 0x96 :  W
   1.217 -;; 0x97 :  X
   1.218 -;; 0x98 :  Y
   1.219 -;; 0x99 :  Z
   1.220 -;; 0x9A :  (
   1.221 -;; 0x9B :  )
   1.222 -;; 0x9C :   :
   1.223 -;; 0x9D :  ;
   1.224 -;; 0x9E :  
   1.225 -;; 0x9F :  
   1.226 -;; 0xA0 :  a
   1.227 -;; 0xA1 :  b
   1.228 -;; 0xA2 :  c
   1.229 -;; 0xA3 :  d
   1.230 -;; 0xA4 :  e
   1.231 -;; 0xA5 :  f
   1.232 -;; 0xA6 :  g
   1.233 -;; 0xA7 :  h
   1.234 -;; 0xA8 :  i
   1.235 -;; 0xA9 :  j
   1.236 -;; 0xAA :  k
   1.237 -;; 0xAB :  l
   1.238 -;; 0xAC :  m
   1.239 -;; 0xAD :  n
   1.240 -;; 0xAE :  o
   1.241 -;; 0xAF :  p
   1.242 -;; 0xB0 :  q
   1.243 -;; 0xB1 :  r
   1.244 -;; 0xB2 :  s
   1.245 -;; 0xB3 :  t
   1.246 -;; 0xB4 :  u
   1.247 -;; 0xB5 :  v
   1.248 -;; 0xB6 :  w
   1.249 -;; 0xB7 :  x
   1.250 -;; 0xB8 :  y
   1.251 -;; 0xB9 :  z
   1.252 -;; 0xBA :  e-with-grave
   1.253 -;; 0xBB :  
   1.254 -;; 0xBC :  
   1.255 -;; 0xBD :  
   1.256 -;; 0xBE :  
   1.257 -;; 0xBF :  
   1.258 -;; 0xC0 :  
   1.259 -;; 0xC1 :  
   1.260 -;; 0xC2 :  
   1.261 -;; 0xC3 :  
   1.262 -;; 0xC4 :  
   1.263 -;; 0xC5 :  
   1.264 -;; 0xC6 :  
   1.265 -;; 0xC7 :  
   1.266 -;; 0xC8 :  
   1.267 -;; 0xC9 :  
   1.268 -;; 0xCA :  
   1.269 -;; 0xCB :  
   1.270 -;; 0xCC :  
   1.271 -;; 0xCD :  
   1.272 -;; 0xCE :  
   1.273 -;; 0xCF :  
   1.274 -;; 0xD0 :  
   1.275 -;; 0xD1 :  
   1.276 -;; 0xD2 :  
   1.277 -;; 0xD3 :  
   1.278 -;; 0xD4 :  
   1.279 -;; 0xD5 :  
   1.280 -;; 0xD6 :  
   1.281 -;; 0xD7 :  
   1.282 -;; 0xD8 :  
   1.283 -;; 0xD9 :  
   1.284 -;; 0xDA :  
   1.285 -;; 0xDB :  
   1.286 -;; 0xDC :  
   1.287 -;; 0xDD :  
   1.288 -;; 0xDE :  
   1.289 -;; 0xDF :  
   1.290 -;; 0xE0 :  '
   1.291 -;; 0xE1 :  PK
   1.292 -;; 0xE2 :  MN
   1.293 -;; 0xE3 :  
   1.294 -;; 0xE4 :  
   1.295 -;; 0xE5 :  
   1.296 -;; 0xE6 :  ?
   1.297 -;; 0xE7 :  !
   1.298 -;; 0xE8 :  .
   1.299 -;; 0xE9 :  
   1.300 -;; 0xEA :  
   1.301 -;; 0xEB :  
   1.302 -;; 0xEC :  
   1.303 -;; 0xED :  
   1.304 -;; 0xEE :  
   1.305 -;; 0xEF :  male-symbol
   1.306 -;; 0xF0 :  pokemon-money-symbol
   1.307 -;; 0xF1 :  .
   1.308 -;; 0xF2 :  /
   1.309 -;; 0xF3 :  ,
   1.310 -;; 0xF4 :  female-symbol
   1.311 -;; 0xF5 :  
   1.312 -;; 0xF6 :  0 
   1.313 -;; 0xF7 :  1
   1.314 -;; 0xF8 :  2
   1.315 -;; 0xF9 :  3
   1.316 -;; 0xFA :  4
   1.317 -;; 0xFB :  5
   1.318 -;; 0xFC :  6
   1.319 -;; 0xFD :  7
   1.320 -;; 0xFE :  8
   1.321 -;; 0xFF :  9
   1.322 -           
   1.323 -                
   1.324 +;; (almost-broken 20) more or less works
   1.325 +
   1.326 +(defn capture-program-counter
   1.327 +  "records the program counter for each tick"
   1.328 +  [^SaveState state ticks]
   1.329 +  (let [i (atom 0)]
   1.330 +    (reduce (fn [[program-counters state] _]
   1.331 +              (println (swap! i inc))
   1.332 +               [(conj program-counters (PC state))
   1.333 +                (tick state)])
   1.334 +              [[] state]
   1.335 +              (range ticks))))
   1.336 +
   1.337 +
   1.338 +(defn capture-program-counter
   1.339 +  [^SaveState state ticks]
   1.340 +  (set-state! state)
   1.341 +  (loop [i 0
   1.342 +         pcs []]
   1.343 +    (if (= i ticks)
   1.344 +      pcs
   1.345 +      (do 
   1.346 +        (com.aurellem.gb.Gb/tick)
   1.347 +        (recur (inc i)
   1.348 +               (conj pcs (first (registers))))))))
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/clojure/com/aurellem/rival_name.clj	Sun Mar 18 00:33:00 2012 -0500
     2.3 @@ -0,0 +1,295 @@
     2.4 +(ns com.aurellem.rival-name
     2.5 +  (:use (com.aurellem gb-driver vbm title save-corruption items assembly))
     2.6 +  (:import [com.aurellem.gb_driver SaveState]))
     2.7 +
     2.8 +
     2.9 +(defn talk-to-rival []
    2.10 +  (read-state "talk-to-rival"))
    2.11 +
    2.12 +(def rival-name-start 0xD349)
    2.13 +
    2.14 +(defn set-rival-name [^SaveState state codes]
    2.15 +  (set-state! state)
    2.16 +  (let [mem (memory state)]
    2.17 +    (dorun (map (fn [index val]
    2.18 +                  (aset mem index val))
    2.19 +                (range rival-name-start
    2.20 +                       (+ rival-name-start
    2.21 +                          (count codes))) codes))
    2.22 +    (write-memory! mem)
    2.23 +    (update-state)))
    2.24 +
    2.25 +(defn view-rival-name [name-codes]
    2.26 +  (->
    2.27 +   (set-rival-name (talk-to-rival) name-codes)
    2.28 +   (step [:a])
    2.29 +   (play 50)))
    2.30 +
    2.31 +(defn rival-name-sequence []
    2.32 +  (let [i (atom 1)]
    2.33 +    (fn []
    2.34 +      (let [codes (range @i (+ 5 @i))]
    2.35 +        (println codes)
    2.36 +        (view-rival-name codes)
    2.37 +        (reset! i (+ 5 @i))))))
    2.38 +      
    2.39 +
    2.40 +
    2.41 +;; 0x00 :  end-of-name-sentinel
    2.42 +;; 0x01 :  
    2.43 +;; 0x02 :  
    2.44 +;; 0x03 :  
    2.45 +;; 0x04 :  
    2.46 +;; 0x05 :  
    2.47 +;; 0x06 :  
    2.48 +;; 0x07 :  
    2.49 +;; 0x08 :  
    2.50 +;; 0x09 :  
    2.51 +;; 0x0A :  
    2.52 +;; 0x0B :  
    2.53 +;; 0x0C :  
    2.54 +;; 0x0D :  
    2.55 +;; 0x0E :  
    2.56 +;; 0x0F :  
    2.57 +;; 0x10 :  
    2.58 +;; 0x11 :  
    2.59 +;; 0x12 :  
    2.60 +;; 0x13 :  
    2.61 +;; 0x14 :  
    2.62 +;; 0x15 :  
    2.63 +;; 0x16 :  
    2.64 +;; 0x17 :  
    2.65 +;; 0x18 :  
    2.66 +;; 0x19 :  
    2.67 +;; 0x1A :  
    2.68 +;; 0x1B :  
    2.69 +;; 0x1C :  
    2.70 +;; 0x1D :  
    2.71 +;; 0x1E :  
    2.72 +;; 0x1F :  
    2.73 +;; 0x20 :  
    2.74 +;; 0x21 :  
    2.75 +;; 0x22 :  
    2.76 +;; 0x23 :  
    2.77 +;; 0x24 :  
    2.78 +;; 0x25 :  
    2.79 +;; 0x26 :  
    2.80 +;; 0x27 :  
    2.81 +;; 0x28 :  
    2.82 +;; 0x29 :  
    2.83 +;; 0x2A :  
    2.84 +;; 0x2B :  
    2.85 +;; 0x2C :  
    2.86 +;; 0x2D :  
    2.87 +;; 0x2E :  
    2.88 +;; 0x2F :  
    2.89 +;; 0x30 :  
    2.90 +;; 0x31 :  
    2.91 +;; 0x32 :  
    2.92 +;; 0x33 :  
    2.93 +;; 0x34 :  
    2.94 +;; 0x35 :  
    2.95 +;; 0x36 :  
    2.96 +;; 0x37 :  
    2.97 +;; 0x38 :  
    2.98 +;; 0x39 :  
    2.99 +;; 0x3A :  
   2.100 +;; 0x3B :  
   2.101 +;; 0x3C :  
   2.102 +;; 0x3D :  
   2.103 +;; 0x3E :  
   2.104 +;; 0x3F :  
   2.105 +;; 0x40 :  
   2.106 +;; 0x41 :  
   2.107 +;; 0x42 :  
   2.108 +;; 0x43 :  
   2.109 +;; 0x44 :  
   2.110 +;; 0x45 :  
   2.111 +;; 0x46 :  
   2.112 +;; 0x47 :  
   2.113 +;; 0x48 :  
   2.114 +;; 0x49 :  
   2.115 +;; 0x4A :  
   2.116 +;; 0x4B :  
   2.117 +;; 0x4C :  
   2.118 +;; 0x4D :  
   2.119 +;; 0x4E :  
   2.120 +;; 0x4F :  
   2.121 +;; 0x50 :  
   2.122 +;; 0x51 :  
   2.123 +;; 0x52 :  
   2.124 +;; 0x53 :  
   2.125 +;; 0x54 :  
   2.126 +;; 0x55 :  
   2.127 +;; 0x56 :  
   2.128 +;; 0x57 :  
   2.129 +;; 0x58 :  
   2.130 +;; 0x59 :  
   2.131 +;; 0x5A :  
   2.132 +;; 0x5B :  
   2.133 +;; 0x5C :  
   2.134 +;; 0x5D :  
   2.135 +;; 0x5E :  
   2.136 +;; 0x5F :  
   2.137 +;; 0x60 :  A (small-bold)
   2.138 +;; 0x61 :  B (small-bold)
   2.139 +;; 0x62 :  C (small-bold)
   2.140 +;; 0x63 :  D (small-bold)
   2.141 +;; 0x64 :  E (small-bold)
   2.142 +;; 0x65 :  F (small-bold)
   2.143 +;; 0x66 :  G (small-bold)
   2.144 +;; 0x67 :  H (small-bold)
   2.145 +;; 0x68 :  I (small-bold)
   2.146 +;; 0x69 :  V (small-bold)
   2.147 +;; 0x6A :  S (small-bold)
   2.148 +;; 0x6B :  L (small-bold)
   2.149 +;; 0x6C :  M (small-bold)
   2.150 +;; 0x6D :  
   2.151 +;; 0x6E :  
   2.152 +;; 0x6F :  
   2.153 +;; 0x70 :  
   2.154 +;; 0x71 :  
   2.155 +;; 0x72 :  
   2.156 +;; 0x73 :  
   2.157 +;; 0x74 :  
   2.158 +;; 0x75 :  
   2.159 +;; 0x76 :  
   2.160 +;; 0x77 :  
   2.161 +;; 0x78 :  
   2.162 +;; 0x79 :  
   2.163 +;; 0x7A :  
   2.164 +;; 0x7B :  
   2.165 +;; 0x7C :  
   2.166 +;; 0x7D :  
   2.167 +;; 0x7E :  
   2.168 +;; 0x7F :  
   2.169 +;; 0x80 :  A
   2.170 +;; 0x81 :  B
   2.171 +;; 0x82 :  C
   2.172 +;; 0x83 :  D
   2.173 +;; 0x84 :  E
   2.174 +;; 0x85 :  F
   2.175 +;; 0x86 :  G
   2.176 +;; 0x87 :  H
   2.177 +;; 0x88 :  I
   2.178 +;; 0x89 :  J
   2.179 +;; 0x8A :  K
   2.180 +;; 0x8B :  L
   2.181 +;; 0x8C :  M
   2.182 +;; 0x8D :  N
   2.183 +;; 0x8E :  O
   2.184 +;; 0x8F :  P
   2.185 +;; 0x90 :  Q
   2.186 +;; 0x91 :  R
   2.187 +;; 0x92 :  S
   2.188 +;; 0x93 :  T
   2.189 +;; 0x94 :  U
   2.190 +;; 0x95 :  V
   2.191 +;; 0x96 :  W
   2.192 +;; 0x97 :  X
   2.193 +;; 0x98 :  Y
   2.194 +;; 0x99 :  Z
   2.195 +;; 0x9A :  (
   2.196 +;; 0x9B :  )
   2.197 +;; 0x9C :  :
   2.198 +;; 0x9D :  ;
   2.199 +;; 0x9E :  
   2.200 +;; 0x9F :  
   2.201 +;; 0xA0 :  a
   2.202 +;; 0xA1 :  b
   2.203 +;; 0xA2 :  c
   2.204 +;; 0xA3 :  d
   2.205 +;; 0xA4 :  e
   2.206 +;; 0xA5 :  f
   2.207 +;; 0xA6 :  g
   2.208 +;; 0xA7 :  h
   2.209 +;; 0xA8 :  i
   2.210 +;; 0xA9 :  j
   2.211 +;; 0xAA :  k
   2.212 +;; 0xAB :  l
   2.213 +;; 0xAC :  m
   2.214 +;; 0xAD :  n
   2.215 +;; 0xAE :  o
   2.216 +;; 0xAF :  p
   2.217 +;; 0xB0 :  q
   2.218 +;; 0xB1 :  r
   2.219 +;; 0xB2 :  s
   2.220 +;; 0xB3 :  t
   2.221 +;; 0xB4 :  u
   2.222 +;; 0xB5 :  v
   2.223 +;; 0xB6 :  w
   2.224 +;; 0xB7 :  x
   2.225 +;; 0xB8 :  y
   2.226 +;; 0xB9 :  z
   2.227 +;; 0xBA :  e-with-grave
   2.228 +;; 0xBB :  
   2.229 +;; 0xBC :  
   2.230 +;; 0xBD :  
   2.231 +;; 0xBE :  
   2.232 +;; 0xBF :  
   2.233 +;; 0xC0 :  
   2.234 +;; 0xC1 :  
   2.235 +;; 0xC2 :  
   2.236 +;; 0xC3 :  
   2.237 +;; 0xC4 :  
   2.238 +;; 0xC5 :  
   2.239 +;; 0xC6 :  
   2.240 +;; 0xC7 :  
   2.241 +;; 0xC8 :  
   2.242 +;; 0xC9 :  
   2.243 +;; 0xCA :  
   2.244 +;; 0xCB :  
   2.245 +;; 0xCC :  
   2.246 +;; 0xCD :  
   2.247 +;; 0xCE :  
   2.248 +;; 0xCF :  
   2.249 +;; 0xD0 :  
   2.250 +;; 0xD1 :  
   2.251 +;; 0xD2 :  
   2.252 +;; 0xD3 :  
   2.253 +;; 0xD4 :  
   2.254 +;; 0xD5 :  
   2.255 +;; 0xD6 :  
   2.256 +;; 0xD7 :  
   2.257 +;; 0xD8 :  
   2.258 +;; 0xD9 :  
   2.259 +;; 0xDA :  
   2.260 +;; 0xDB :  
   2.261 +;; 0xDC :  
   2.262 +;; 0xDD :  
   2.263 +;; 0xDE :  
   2.264 +;; 0xDF :  
   2.265 +;; 0xE0 :  '
   2.266 +;; 0xE1 :  PK
   2.267 +;; 0xE2 :  MN
   2.268 +;; 0xE3 :  
   2.269 +;; 0xE4 :  
   2.270 +;; 0xE5 :  
   2.271 +;; 0xE6 :  ?
   2.272 +;; 0xE7 :  !
   2.273 +;; 0xE8 :  .
   2.274 +;; 0xE9 :  
   2.275 +;; 0xEA :  
   2.276 +;; 0xEB :  
   2.277 +;; 0xEC :  
   2.278 +;; 0xED :  
   2.279 +;; 0xEE :  
   2.280 +;; 0xEF :  male-symbol
   2.281 +;; 0xF0 :  pokemon-money-symbol
   2.282 +;; 0xF1 :  .
   2.283 +;; 0xF2 :  /
   2.284 +;; 0xF3 :  ,
   2.285 +;; 0xF4 :  female-symbol
   2.286 +;; 0xF5 :  
   2.287 +;; 0xF6 :  0 
   2.288 +;; 0xF7 :  1
   2.289 +;; 0xF8 :  2
   2.290 +;; 0xF9 :  3
   2.291 +;; 0xFA :  4
   2.292 +;; 0xFB :  5
   2.293 +;; 0xFC :  6
   2.294 +;; 0xFD :  7
   2.295 +;; 0xFE :  8
   2.296 +;; 0xFF :  9
   2.297 +           
   2.298 +