Mercurial > vba-clojure
annotate clojure/com/aurellem/gb/types.clj @ 204:43bb461a7419
constructing default types....
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Fri, 23 Mar 2012 04:19:38 -0500 |
parents | 85a2c2e2d318 |
children | 28d35c9e3ab6 |
rev | line source |
---|---|
rlm@180 | 1 (ns com.aurellem.gb.types |
rlm@180 | 2 (:use (com.aurellem.gb gb-driver util constants)) |
rlm@180 | 3 (:import [com.aurellem.gb.gb_driver SaveState])) |
rlm@180 | 4 |
rlm@180 | 5 (def type-code->type-name |
rlm@180 | 6 {0x00 :normal |
rlm@180 | 7 0x01 :fighting |
rlm@180 | 8 0x02 :flying |
rlm@180 | 9 0x03 :poision |
rlm@180 | 10 0x04 :ground |
rlm@180 | 11 0x05 :rock |
rlm@180 | 12 0x07 :bug |
rlm@180 | 13 0x08 :ghost |
rlm@180 | 14 0x14 :fire |
rlm@180 | 15 0x15 :water |
rlm@180 | 16 0x16 :grass |
rlm@180 | 17 0x17 :electric |
rlm@180 | 18 0x18 :psychic |
rlm@180 | 19 0x19 :ice |
rlm@204 | 20 0x1A :dragon }) |
rlm@180 | 21 |
rlm@180 | 22 (def type-name->type-code |
rlm@180 | 23 (zipmap (vals type-code->type-name) |
rlm@180 | 24 (keys type-code->type-name))) |
rlm@180 | 25 |
rlm@190 | 26 (def pokemon-1-type-start-address 0xD16F) |
rlm@180 | 27 |
rlm@180 | 28 (defn pokemon-type-start-address [poke-num] |
rlm@190 | 29 (+ pokemon-1-type-start-address |
rlm@180 | 30 (* pokemon-record-width poke-num))) |
rlm@180 | 31 |
rlm@180 | 32 (defn give-type |
rlm@180 | 33 ([^SaveState state poke-num types] |
rlm@180 | 34 (assert (<= 0 poke-num 5)) |
rlm@180 | 35 (let [types* |
rlm@180 | 36 (if (= (count types) 1) |
rlm@180 | 37 [(first types) (first types)] |
rlm@180 | 38 types)] |
rlm@180 | 39 (set-memory-range |
rlm@180 | 40 state |
rlm@180 | 41 (pokemon-type-start-address poke-num) |
rlm@180 | 42 (map type-name->type-code types)))) |
rlm@180 | 43 ([poke-num types] |
rlm@180 | 44 (give-type @current-state poke-num types))) |
rlm@180 | 45 |
rlm@190 | 46 (defn read-type |
rlm@180 | 47 ([^SaveState state poke-num] |
rlm@180 | 48 (assert (<= 0 poke-num 5)) |
rlm@180 | 49 (let [types-start (pokemon-type-start-address poke-num) |
rlm@180 | 50 [type-1 type-2] |
rlm@180 | 51 (subvec (vec (memory state)) |
rlm@180 | 52 types-start (+ 2 types-start))] |
rlm@180 | 53 (if (= type-1 type-2) |
rlm@180 | 54 [(type-code->type-name type-1)] |
rlm@180 | 55 (mapv type-code->type-name [type-1 type-2])))) |
rlm@180 | 56 ([poke-num] |
rlm@190 | 57 (read-type @current-state poke-num))) |
rlm@203 | 58 |
rlm@203 | 59 |
rlm@204 | 60 |
rlm@204 | 61 :normal nor |
rlm@204 | 62 :fighting fig |
rlm@204 | 63 :flying fly |
rlm@204 | 64 :poision poi |
rlm@204 | 65 :ground gro |
rlm@204 | 66 :rock roc |
rlm@204 | 67 :bug bug |
rlm@204 | 68 :ghost gho |
rlm@204 | 69 :fire fir |
rlm@204 | 70 :water wat |
rlm@204 | 71 :grass gra |
rlm@204 | 72 :electric ele |
rlm@204 | 73 :psychic psy |
rlm@204 | 74 :ice ice |
rlm@204 | 75 :dragon dra |
rlm@204 | 76 |
rlm@204 | 77 |
rlm@204 | 78 |
rlm@203 | 79 (def pokemon->type |
rlm@204 | 80 { |
rlm@204 | 81 :abra psy |
rlm@204 | 82 :aerodactyl rck fly |
rlm@204 | 83 :alakazam psy |
rlm@204 | 84 :arbok poi |
rlm@204 | 85 :arcanine fir |
rlm@204 | 86 :articuno ice fly |
rlm@204 | 87 :beedrill bug poi |
rlm@204 | 88 :bellsprout gra poi |
rlm@204 | 89 :blastoise wat |
rlm@204 | 90 :bulbasaur gra poi |
rlm@204 | 91 :butterfree bug fly |
rlm@204 | 92 :caterpie bug |
rlm@204 | 93 :chansey nor |
rlm@204 | 94 :charizard fir fly |
rlm@204 | 95 :charmander fir |
rlm@204 | 96 :charmeleon fir |
rlm@204 | 97 :clefable nor |
rlm@204 | 98 :clefairy nor |
rlm@204 | 99 :cloyster wat ice |
rlm@204 | 100 :cubone gro |
rlm@204 | 101 :dewgong wat ice |
rlm@204 | 102 :diglett gro |
rlm@204 | 103 :ditto nor |
rlm@204 | 104 :dodrio nor fly |
rlm@204 | 105 :doduo nor fly |
rlm@204 | 106 :dragonair drg |
rlm@204 | 107 :dragonite drg fly |
rlm@204 | 108 :dratini drg |
rlm@204 | 109 :drowzee psy |
rlm@204 | 110 :dugtrio gro |
rlm@204 | 111 :eevee nor |
rlm@204 | 112 :ekans poi |
rlm@204 | 113 :electabuzz ele |
rlm@204 | 114 :electrode ele |
rlm@204 | 115 :exeggcute gra psy |
rlm@204 | 116 :exeggutor gra psy |
rlm@204 | 117 :farfetchd nor fly |
rlm@204 | 118 :fearow nor fly |
rlm@204 | 119 :flareon fir |
rlm@204 | 120 :gastly gho poi |
rlm@204 | 121 :gengar gho poi |
rlm@204 | 122 :geodude rck gro |
rlm@204 | 123 :gloom gra poi |
rlm@204 | 124 :golbat poi fly |
rlm@204 | 125 :goldeen wat |
rlm@204 | 126 :golduck wat |
rlm@204 | 127 :golem rck gro |
rlm@204 | 128 :graveler rck gro |
rlm@204 | 129 :grimer poi |
rlm@204 | 130 :growlithe fir |
rlm@204 | 131 :gyarados wat fly |
rlm@204 | 132 :haunter gho poi |
rlm@204 | 133 :hitmonchan fgt |
rlm@204 | 134 :hitmonlee fgt |
rlm@204 | 135 :horsea wat |
rlm@204 | 136 :hypno psy |
rlm@204 | 137 :ivysaur gra poi |
rlm@204 | 138 :jigglypuff nor |
rlm@204 | 139 :jolteon ele |
rlm@204 | 140 :jynx ice psy |
rlm@204 | 141 :kabuto rck wat |
rlm@204 | 142 :kabutops rck wat |
rlm@204 | 143 :kadabra psy |
rlm@204 | 144 :kakuna bug poi |
rlm@204 | 145 :kangaskhan nor |
rlm@204 | 146 :kingler wat |
rlm@204 | 147 :koffing poi |
rlm@204 | 148 :krabby wat |
rlm@204 | 149 :lapras wat ice |
rlm@204 | 150 :lickitung nor |
rlm@204 | 151 :machamp fgt |
rlm@204 | 152 :machoke fgt |
rlm@204 | 153 :machop fgt |
rlm@204 | 154 :magikarp wat |
rlm@204 | 155 :magmar fir |
rlm@204 | 156 :magnemite ele |
rlm@204 | 157 :magneton ele |
rlm@204 | 158 :mankey fgt |
rlm@204 | 159 :marowak gro |
rlm@204 | 160 :meowth nor |
rlm@204 | 161 :metapod bug |
rlm@204 | 162 :mew psy |
rlm@204 | 163 :mewtwo psy |
rlm@204 | 164 :moltres fir fly |
rlm@204 | 165 :mr-mime psy |
rlm@204 | 166 :muk poi |
rlm@204 | 167 :nidoking poi gro |
rlm@204 | 168 :nidoqueen poi gro |
rlm@204 | 169 :nidoran-female poi |
rlm@204 | 170 :nidoran-male poi |
rlm@204 | 171 :nidorina poi |
rlm@204 | 172 :nidorino poi |
rlm@204 | 173 :ninetails fir |
rlm@204 | 174 :oddish gra poi |
rlm@204 | 175 :omanyte rck wat |
rlm@204 | 176 :omastar rck wat |
rlm@204 | 177 :onix rck gro |
rlm@204 | 178 :paras bug gra |
rlm@204 | 179 :parasect bug gra |
rlm@204 | 180 :persian nor |
rlm@204 | 181 :pidgeot nor fly |
rlm@204 | 182 :pidgeotto nor fly |
rlm@204 | 183 :pidgey nor fly |
rlm@204 | 184 :pikachu ele |
rlm@204 | 185 :pinsir bug |
rlm@204 | 186 :poliwag wat |
rlm@204 | 187 :poliwhirl wat |
rlm@204 | 188 :poliwrath wat fgt |
rlm@204 | 189 :ponyta fir |
rlm@204 | 190 :porygon nor |
rlm@204 | 191 :primeape fgt |
rlm@204 | 192 :psyduck wat |
rlm@204 | 193 :raichu ele |
rlm@204 | 194 :rapidash fir |
rlm@204 | 195 :raticate nor |
rlm@204 | 196 :rattata nor |
rlm@204 | 197 :rhydon gro rck |
rlm@204 | 198 :rhyhorn gro rck |
rlm@204 | 199 :sandshrew gro |
rlm@204 | 200 :sandslash gro |
rlm@204 | 201 :scyther bug fly |
rlm@204 | 202 :seaking wat |
rlm@204 | 203 :sedra wat |
rlm@204 | 204 :seel wat |
rlm@204 | 205 :shellder wat |
rlm@204 | 206 :slowbro wat psy |
rlm@204 | 207 :slowpoke wat psy |
rlm@204 | 208 :snorlax nor |
rlm@204 | 209 :spearow nor fly |
rlm@204 | 210 :squirtle wat |
rlm@204 | 211 :starmie wat psy |
rlm@204 | 212 :staryu wat |
rlm@204 | 213 :tangela gra |
rlm@204 | 214 :tauros nor |
rlm@204 | 215 :tentacool wat poi |
rlm@204 | 216 :tentacruel wat poi |
rlm@204 | 217 :vaporeon wat |
rlm@204 | 218 :venomoth bug poi |
rlm@204 | 219 :venonat bug poi |
rlm@204 | 220 :venusaur gra poi |
rlm@204 | 221 :victreebel gra poi |
rlm@204 | 222 :vileplume gra poi |
rlm@204 | 223 :voltorb ele |
rlm@204 | 224 :vulpix fir |
rlm@204 | 225 :wartortle wat |
rlm@204 | 226 :weedle bug poi |
rlm@204 | 227 :weepenbell gra poi |
rlm@204 | 228 :wheezing poi |
rlm@204 | 229 :wigglytuff nor |
rlm@204 | 230 :zapdos ele fly |
rlm@204 | 231 :zubat poi fly |