# HG changeset patch # User Robert McIntyre # Date 1332452050 18000 # Node ID 9a7a46c4aa1b1ac7ffbffe6cb8899a87e5818684 # Parent d954835b24a471c36f790f0007859959e05d610c extending functionality of support namespaces in prepreation of give-pokemon diff -r d954835b24a4 -r 9a7a46c4aa1b clojure/com/aurellem/gb/moves.clj --- a/clojure/com/aurellem/gb/moves.clj Thu Mar 22 15:58:39 2012 -0500 +++ b/clojure/com/aurellem/gb/moves.clj Thu Mar 22 16:34:10 2012 -0500 @@ -4,6 +4,7 @@ (def move-code->move-name { + 0x00 :end-of-moves 0x01 :pound 0x02 :karate-chop 0x03 :doubleslap @@ -170,6 +171,10 @@ 0xA4 :substitute 0xA5 :struggle}) +(def move-name->move-code + (zipmap (vals move-code->move-name) + (keys move-code->move-name))) + (def moves-codes-pokemon-1 0xD172) (defn moves-codes-start [pokemon-num] @@ -177,9 +182,20 @@ (+ moves-codes-pokemon-1 (* pokemon-num pokemon-record-width))) -(def move-name->move-code - (zipmap (vals move-code->move-name) - (keys move-code->move-name))) +(defn read-moves + ([^SaveState state poke-num] + (let [start (moves-codes-start poke-num)] + (vec + (take-while + (partial not= (move-name->move-code :end-of-moves)) + (map + move-code->move-name + (subvec (vec (memory state)) + start (+ start (num-moves state poke-num)))))))) + ([poke-num] + (read-moves @current-state poke-num))) + + (defn give-moves ([^SaveState state pokemon-num moves] @@ -247,3 +263,4 @@ ([pokemon-num move-num pp-ups current-pp] (give-pp @current-state pokemon-num move-num pp-ups current-pp))) + diff -r d954835b24a4 -r 9a7a46c4aa1b clojure/com/aurellem/gb/pokemon.clj --- a/clojure/com/aurellem/gb/pokemon.clj Thu Mar 22 15:58:39 2012 -0500 +++ b/clojure/com/aurellem/gb/pokemon.clj Thu Mar 22 16:34:10 2012 -0500 @@ -1,5 +1,8 @@ (ns com.aurellem.gb.pokemon - (:use (com.aurellem.gb gb-driver util constants characters)) + (:use (com.aurellem.gb gb-driver util constants characters + moves types items status dv species + + )) (:import [com.aurellem.gb.gb_driver SaveState])) (def pokemon-names-start 0xD2B4) @@ -179,3 +182,18 @@ poke-data)))) ([pokemon-num] (print-pokemon-record @current-state pokemon-num))) + +(def mint-berry-item-code-gsc 0x54) + +(defn pokemon-info [^SaveState state poke-num] + (assert (<= 0 poke-num 5)) + (let [dv-values (read-DV state poke-num) + type (read-type state poke-num) + species (read-species state poke-num) + + ] + + + + + )) diff -r d954835b24a4 -r 9a7a46c4aa1b clojure/com/aurellem/gb/species.clj --- a/clojure/com/aurellem/gb/species.clj Thu Mar 22 15:58:39 2012 -0500 +++ b/clojure/com/aurellem/gb/species.clj Thu Mar 22 16:34:10 2012 -0500 @@ -161,16 +161,28 @@ (zipmap (vals species-code->species-name) (keys species-code->species-name))) +(defn pokemon-species-data-address [poke-num] + (+ species-ID-1 poke-num)) + +(defn read-species + ([^SaveState state poke-num] + (assert (<= 0 poke-num 5)) + (species-code->species-name + (aget (memory state) + (pokemon-species-data-address poke-num)))) + ([poke-num] + (read-species @current-state poke-num))) + (defn set-species - ([^SaveState state pokemon-num species-name] - (assert (<= 0 pokemon-num 5)) + ([^SaveState state poke-num species-name] + (assert (<= 0 poke-num 5)) (let [species-code (species-name->species-code species-name species-name)] - (set-memory state (+ species-ID-1 pokemon-num) + (set-memory state (pokemon-species-data-address poke-num) species-code))) - ([pokemon-num species-name] - (set-species @current-state pokemon-num species-name))) + ([poke-num species-name] + (set-species @current-state poke-num species-name))) diff -r d954835b24a4 -r 9a7a46c4aa1b clojure/com/aurellem/gb/types.clj --- a/clojure/com/aurellem/gb/types.clj Thu Mar 22 15:58:39 2012 -0500 +++ b/clojure/com/aurellem/gb/types.clj Thu Mar 22 16:34:10 2012 -0500 @@ -23,10 +23,10 @@ (zipmap (vals type-code->type-name) (keys type-code->type-name))) -(def pokemon-1-types-start-address 0xD16F) +(def pokemon-1-type-start-address 0xD16F) (defn pokemon-type-start-address [poke-num] - (+ pokemon-1-types-start-address + (+ pokemon-1-type-start-address (* pokemon-record-width poke-num))) (defn give-type @@ -43,7 +43,7 @@ ([poke-num types] (give-type @current-state poke-num types))) -(defn read-types +(defn read-type ([^SaveState state poke-num] (assert (<= 0 poke-num 5)) (let [types-start (pokemon-type-start-address poke-num) @@ -54,5 +54,5 @@ [(type-code->type-name type-1)] (mapv type-code->type-name [type-1 type-2])))) ([poke-num] - (read-types @current-state poke-num))) + (read-type @current-state poke-num))) \ No newline at end of file