view clojure/com/aurellem/gb/characters.clj @ 198:5055ec9de278

competed move-table printing component of pokemon printing function.
author Robert McIntyre <rlm@mit.edu>
date Fri, 23 Mar 2012 00:30:34 -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)))