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