view clojure/com/aurellem/gb/characters.clj @ 192:fd549c8f42ae

fixed compilation problems, added more functionality to pokemon-info
author Robert McIntyre <rlm@mit.edu>
date Thu, 22 Mar 2012 22:35:57 -0500
parents 95b2758dd517
children 67c42608ef9d
line wrap: on
line source
1 (ns com.aurellem.gb.characters
2 (:use (com.aurellem.gb gb-driver constants))
3 (:import [com.aurellem.gb.gb_driver SaveState]))
5 (def character-code->character
6 {
7 0x00 "end-of-name-sentinel"
8 0x50 "end-of-pokemon-name-sentinel"
9 0x60 "A-bold"
10 0x61 "B-bold"
11 0x62 "C-bold"
12 0x63 "D-bold"
13 0x64 "E-bold"
14 0x65 "F-bold"
15 0x66 "G-bold"
16 0x67 "H-bold"
17 0x68 "I-bold"
18 0x69 "V-bold"
19 0x6A "S-bold"
20 0x6B "L-bold"
21 0x6C "M-bold"
22 0x80 "A"
23 0x81 "B"
24 0x82 "C"
25 0x83 "D"
26 0x84 "E"
27 0x85 "F"
28 0x86 "G"
29 0x87 "H"
30 0x88 "I"
31 0x89 "J"
32 0x8A "K"
33 0x8B "L"
34 0x8C "M"
35 0x8D "N"
36 0x8E "O"
37 0x8F "P"
38 0x90 "Q"
39 0x91 "R"
40 0x92 "S"
41 0x93 "T"
42 0x94 "U"
43 0x95 "V"
44 0x96 "W"
45 0x97 "X"
46 0x98 "Y"
47 0x99 "Z"
48 0x9A "("
49 0x9B ")"
50 0x9C ":"
51 0x9D ";"
52 0xA0 "a"
53 0xA1 "b"
54 0xA2 "c"
55 0xA3 "d"
56 0xA4 "e"
57 0xA5 "f"
58 0xA6 "g"
59 0xA7 "h"
60 0xA8 "i"
61 0xA9 "j"
62 0xAA "k"
63 0xAB "l"
64 0xAC "m"
65 0xAD "n"
66 0xAE "o"
67 0xAF "p"
68 0xB0 "q"
69 0xB1 "r"
70 0xB2 "s"
71 0xB3 "t"
72 0xB4 "u"
73 0xB5 "v"
74 0xB6 "w"
75 0xB7 "x"
76 0xB8 "y"
77 0xB9 "z"
78 0xBA "e-with-grave"
79 0xE0 "'"
80 0xE1 "PK"
81 0xE2 "MN"
82 0xE3 "-"
83 0xE6 "?"
84 0xE7 "!"
85 0xE8 "."
86 0xEF "male-symbol"
87 0xF0 "pokemon-money-symbol"
88 0xF1 "."
89 0xF2 "/"
90 0xF3 ","
91 0xF4 "female-symbol"
92 0xF6 "0 "
93 0xF7 "1"
94 0xF8 "2"
95 0xF9 "3"
96 0xFA "4"
97 0xFB "5"
98 0xFC "6"
99 0xFD "7"
100 0xFE "8"
101 0xFF "9"
102 })
104 (def character->character-code
105 (zipmap (vals character-code->character)
106 (keys character-code->character)))
108 (defn str->character-codes [s]
109 (map character->character-code (map str s)))
111 (defn character-codes->str [codes]
112 (apply str
113 (map #(character-code->character
114 %
115 (format "[0x%02X]" %))
116 codes)))
118 (defn print-text
119 ([^SaveState state begin end]
120 (dorun
121 (map (fn [character-code line]
122 (println
123 (format "0x%04X: " line)
124 (str (character-code->character character-code))))
125 (subvec (vec (memory state)) begin end)
126 (range begin end)))
127 state)
128 ([begin end]
129 (print-text @current-state begin end)))
131 (defn read-name [codes]
132 (character-codes->str
133 (take-while
134 (partial not= end-of-name-marker) codes)))