# HG changeset patch # User Dylan Holmes # Date 1332065599 18000 # Node ID eb6ba88088d344d8547c8861602749b8d7f977d8 # Parent 718abf3bec8af02d564eeb954d721d792a5afe4b Wrote a more efficient input-number-assembly program; 91 oc -> 60 oc. diff -r 718abf3bec8a -r eb6ba88088d3 clojure/com/aurellem/assembly.clj --- a/clojure/com/aurellem/assembly.clj Sun Mar 18 00:56:29 2012 -0500 +++ b/clojure/com/aurellem/assembly.clj Sun Mar 18 05:13:19 2012 -0500 @@ -390,7 +390,7 @@ 0x50 ;D354 --> 0xD3 ;D355 --> D31F - 0xEA ;D356 ; load (A), which is + 0xEA ;D356 ; load A, which is 0x00 ;D357 --> ; 00010000, into FF00 0xFF ;D358 --> FF00 @@ -467,55 +467,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + (defn write-memory-assembly* [] [ + ;; --------- FRAME METRONOME + 0x18 ;; D31D - 0x02 - 0x00 ;; frame-count D31F - 0x00 ;; v-blank-prev D320 + 0x01 + 0x00 ;; v-blank-prev D31F 0xFA ;; load modes into A 0x41 0xFF - - 0x47 - - 0xCB + + 0x47 ;; A -> B + 0xCB ;; rotate A 0x2F - 0x2F + 0x2F ;; invert A 0xA0 - 0xE6 - 0x01 - 0x47 ;; now B contains (VB==1) + 0x47 ;; now B_0 contains (VB==1) 0xFA ;; load v-blank-prev - 0x20 - 0xD3 - - 0x2F - - 0xA0 - 0x4F ;; now C contains increment? - - 0xFA ;; load frame count 0x1F 0xD3 - 0x81 ;; add A+C->A - 0xEA ;; spit A --> fc - 0x1F - 0xD3 + 0x2F ;; complement v-blank-prev + + 0xA0 ;; A & B --> A + 0x4F ;; now C_0 contains increment? + 0x78 ;; B->A 0xEA ;; spit A --> vbprev - 0x20 + 0x1F 0xD3 - 0xC3 ;D40F ; go back to beginning - 0x1D ;D410 - 0xD3 ;D411 + 0x41 ;test C_0 + 0x20 ; nonzero jump + 0x04 + + 0xC3 ; ; go back to beginning + 0x1D ; + 0xD3 ; + + ;; -------- GET BUTTON INPUT + 0x00 ;; var: which-input D339 + ;; prepare to select bits + + 0x01 ;; load 0x0000 into BC + 0x00 + 0x00 + + 0x3E ;; load 0x20 into A + 0x20 + + + 0xEA ;; load A into [FF00] ;; D33F (not D33C) + 0x00 + 0xFF + + 0xFA ;; load A from [FF00] + 0x00 + 0xFF + + 0xE6 ;; bitmask 00001111 + 0x0F + + 0xB0 ;; A or B --> A + + 0xCB + 0x41 ;; test bit 0 of C + 0x20 ;; jump forward if 1 + 0x08 + + 0x47 ;; A -> B + 0xCB ;; swap B nybbles + 0x30 + 0x0C ;; increment C + 0x3E ;; load 0x10 into A + 0x10 + 0x18 ;; JUMP back to "load A into [FF00]" [20 steps?] + 0xEB + + ;; now A contains the pressed keys + 0xEA ;; copy keys to input-number [D339] + 0x39 + 0xD3 + 0x18 ;; + 0xEB + + ] ) @@ -525,6 +592,51 @@ (inject-item-assembly (write-memory-assembly*)))) +(defn dylan [] + (-> + (write-mem-dyl) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + (tick) + + + (d-tick) + + + (view-register "A" A) + (view-register "B" B) + (view-register "C" C) + + )) + + + + (defn d2 [] (-> (write-mem-dyl) @@ -532,34 +644,21 @@ step step step step step (view-memory 0xD31F))) -(defn dylan [] - (-> - (write-mem-dyl) - (tick) - (tick) - (tick) - (tick) - (tick) - (tick) - (tick) - (tick) - (tick) - (tick) - (tick) - (tick) - (tick) - (tick) - (tick) - (tick) - (tick) - (d-tick) - (view-register "A" A) - (view-register "B" B) - (view-register "C" C) - - )) + + + + + + + + + + + + + diff -r 718abf3bec8a -r eb6ba88088d3 clojure/com/aurellem/vbm.clj --- a/clojure/com/aurellem/vbm.clj Sun Mar 18 00:56:29 2012 -0500 +++ b/clojure/com/aurellem/vbm.clj Sun Mar 18 05:13:19 2012 -0500 @@ -6,7 +6,7 @@ ;;;;;;;;;;;;; read vbm file (def ^:dynamic *moves-cache* - (File. user-home "proj/pokemon-escape/moves/"))) + (File. user-home "proj/pokemon-escape/moves/")) (defn buttons [mask] (loop [buttons []