Mercurial > vba-clojure
diff clojure/com/aurellem/gb_driver.clj @ 65:60c768964937
going to make restarts work
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Wed, 07 Mar 2012 21:04:55 -0600 |
parents | 02bca9640f3f |
children | 43d4fb2a6fc2 |
line wrap: on
line diff
1.1 --- a/clojure/com/aurellem/gb_driver.clj Wed Mar 07 20:47:25 2012 -0600 1.2 +++ b/clojure/com/aurellem/gb_driver.clj Wed Mar 07 21:04:55 2012 -0600 1.3 @@ -1,11 +1,16 @@ 1.4 (ns com.aurellem.gb-driver 1.5 (:import com.aurellem.gb.Gb) 1.6 + (:import java.io.File) 1.7 (:import (java.nio IntBuffer ByteOrder))) 1.8 1.9 + 1.10 +(def yellow-rom-image 1.11 + (File. "/home/r/proj/pokemon-escape/roms/yellow.gbc")) 1.12 + 1.13 (defn vba-init [] 1.14 (Gb/loadVBA) 1.15 (future 1.16 - (Gb/startEmulator "/home/r/proj/pokemon-escape/roms/yellow.gbc"))) 1.17 + (Gb/startEmulator (.getCanonicalPath yellow-rom-image)))) 1.18 1.19 (defn cpu-data [size arr-fn] 1.20 (let [store (int-array size)] 1.21 @@ -29,3 +34,26 @@ 1.22 (cpu-data Gb/NUM_REGISTERS #(Gb/getRegisters %))) 1.23 1.24 1.25 +(def key-mask 1.26 + {:a 0x0001 1.27 + :b 0x0002 1.28 + 1.29 + :l 0x0020 1.30 + :r 0x0010 1.31 + :u 0x0040 1.32 + :d 0x0080 1.33 + 1.34 + :select 0x0004 1.35 + :start 0x0008 1.36 + :restart 0x0800}) 1.37 + 1.38 +(defn keycode [& keys] 1.39 + (reduce bit-or (map key-mask keys))) 1.40 + 1.41 +(defn step 1.42 + ([] (Gb/step)) 1.43 + ([& keys] (Gb/step (apply keycode keys)))) 1.44 + 1.45 + 1.46 + 1.47 +