Mercurial > vba-clojure
annotate clojure/com/aurellem/gb/types.clj @ 203:85a2c2e2d318
have to add default types for all pokemon.
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Fri, 23 Mar 2012 04:00:42 -0500 |
parents | 9a7a46c4aa1b |
children | 43bb461a7419 |
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@180 | 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@203 | 60 (def pokemon->type |
rlm@203 | 61 {:rhydon |
rlm@203 | 62 :kangaskhan |
rlm@203 | 63 :nidoran-male |
rlm@203 | 64 :clefairy |
rlm@203 | 65 :spearow |
rlm@203 | 66 :voltorb |
rlm@203 | 67 :nidoking |
rlm@203 | 68 :slowbro |
rlm@203 | 69 :ivysaur |
rlm@203 | 70 :exeggutor |
rlm@203 | 71 :lickitung |
rlm@203 | 72 :exeggcute |
rlm@203 | 73 :grimer |
rlm@203 | 74 :gengar |
rlm@203 | 75 :nidoran-female |
rlm@203 | 76 :nidoqueen |
rlm@203 | 77 :cubone |
rlm@203 | 78 :rhyhorn |
rlm@203 | 79 :lapras |
rlm@203 | 80 :arcanine |
rlm@203 | 81 :mew |
rlm@203 | 82 :gyarados |
rlm@203 | 83 :shellder |
rlm@203 | 84 :tentacool |
rlm@203 | 85 :gastly |
rlm@203 | 86 :scyther |
rlm@203 | 87 :staryu |
rlm@203 | 88 :blastoise |
rlm@203 | 89 :pinsir |
rlm@203 | 90 :tangela |
rlm@203 | 91 :growlithe |
rlm@203 | 92 :onix |
rlm@203 | 93 :fearow |
rlm@203 | 94 :pidgey |
rlm@203 | 95 :slowpoke |
rlm@203 | 96 :kadabra |
rlm@203 | 97 :graveler |
rlm@203 | 98 :chansey |
rlm@203 | 99 :machoke |
rlm@203 | 100 :mr-mime |
rlm@203 | 101 :hitmonlee |
rlm@203 | 102 :hitmonchan |
rlm@203 | 103 :arbok |
rlm@203 | 104 :parasect |
rlm@203 | 105 :psyduck |
rlm@203 | 106 :drowzee |
rlm@203 | 107 :golem |
rlm@203 | 108 :magmar |
rlm@203 | 109 :electabuzz |
rlm@203 | 110 :magneton |
rlm@203 | 111 :koffing |
rlm@203 | 112 :mankey |
rlm@203 | 113 :seel |
rlm@203 | 114 :diglett |
rlm@203 | 115 :tauros |
rlm@203 | 116 :farfetch'd |
rlm@203 | 117 :venonat |
rlm@203 | 118 :dragonite |
rlm@203 | 119 :doduo |
rlm@203 | 120 :poliwag |
rlm@203 | 121 :jynx |
rlm@203 | 122 :moltres |
rlm@203 | 123 :articuno |
rlm@203 | 124 :zapdos |
rlm@203 | 125 :ditto |
rlm@203 | 126 :meowth |
rlm@203 | 127 :krabby |
rlm@203 | 128 :vulpix |
rlm@203 | 129 :ninetails |
rlm@203 | 130 :pikachu |
rlm@203 | 131 :riachu |
rlm@203 | 132 :dratini |
rlm@203 | 133 :dragonair |
rlm@203 | 134 :kabuto |
rlm@203 | 135 :kabutops |
rlm@203 | 136 :horsea |
rlm@203 | 137 :sedra |
rlm@203 | 138 :sandshrew |
rlm@203 | 139 :sandslash |
rlm@203 | 140 :omanyte |
rlm@203 | 141 :omastar |
rlm@203 | 142 :jigglypuff |
rlm@203 | 143 :wigglytuff |
rlm@203 | 144 :eevee |
rlm@203 | 145 :flareon |
rlm@203 | 146 :jolteon |
rlm@203 | 147 :vaporeon |
rlm@203 | 148 :machop |
rlm@203 | 149 :zubat |
rlm@203 | 150 :ekans |
rlm@203 | 151 :paras |
rlm@203 | 152 :poliwhirl |
rlm@203 | 153 :poliwrath |
rlm@203 | 154 :weedle |
rlm@203 | 155 :kakuna |
rlm@203 | 156 :beedrill |
rlm@203 | 157 :dodrio |
rlm@203 | 158 :primeape |
rlm@203 | 159 :dugtrio |
rlm@203 | 160 :venomoth |
rlm@203 | 161 :dewgong |
rlm@203 | 162 :caterpie |
rlm@203 | 163 :metapod |
rlm@203 | 164 :butterfree |
rlm@203 | 165 :machamp |
rlm@203 | 166 :golduck |
rlm@203 | 167 :hypno |
rlm@203 | 168 :golbat |
rlm@203 | 169 :mewtwo |
rlm@203 | 170 :snorlax |
rlm@203 | 171 :magikarp |
rlm@203 | 172 :muk |
rlm@203 | 173 :kingler |
rlm@203 | 174 :cloyster |
rlm@203 | 175 :electrode |
rlm@203 | 176 :clefable |
rlm@203 | 177 :wheezing |
rlm@203 | 178 :persian |
rlm@203 | 179 :marowak |
rlm@203 | 180 :haunter |
rlm@203 | 181 :abra |
rlm@203 | 182 :alakazam |
rlm@203 | 183 :pidgeotto |
rlm@203 | 184 :pidgeot |
rlm@203 | 185 :starmie |
rlm@203 | 186 :bulbasaur |
rlm@203 | 187 :venusaur |
rlm@203 | 188 :tentacruel |
rlm@203 | 189 :goldeen |
rlm@203 | 190 :seaking |
rlm@203 | 191 :ponyta |
rlm@203 | 192 :rapidash |
rlm@203 | 193 :rattata |
rlm@203 | 194 :raticate |
rlm@203 | 195 :nidorino |
rlm@203 | 196 :nidorina |
rlm@203 | 197 :geodude |
rlm@203 | 198 :porygon |
rlm@203 | 199 :aerodactyl |
rlm@203 | 200 :magnemite |
rlm@203 | 201 :charmander |
rlm@203 | 202 :squirtle |
rlm@203 | 203 :charmeleon |
rlm@203 | 204 :wartortle |
rlm@203 | 205 :charizard |
rlm@203 | 206 :oddish |
rlm@203 | 207 :gloom |
rlm@203 | 208 :vileplume |
rlm@203 | 209 :bellsprout |
rlm@203 | 210 :weepenbell |
rlm@203 | 211 :victreebel |