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