# HG changeset patch # User Robert McIntyre # Date 1333172015 18000 # Node ID 5bcda2d6d13512eef759caddd46f44e49ee0a549 # Parent 0b3e89103dc2557bfe741baf6bd52d1794d0b09c item manipulation program works! diff -r 0b3e89103dc2 -r 5bcda2d6d135 clojure/com/aurellem/exp/notes.txt --- a/clojure/com/aurellem/exp/notes.txt Sat Mar 31 00:05:39 2012 -0500 +++ b/clojure/com/aurellem/exp/notes.txt Sat Mar 31 00:33:35 2012 -0500 @@ -53,7 +53,7 @@ 0x70 ;; load B into target+1 [(target) -> target+1] 0x00 -0xC3 ;; first part of absolute jump +0xC3 ;; first part of absolute jump burn-heal (0x0C) x 95 (0x5F) -- address of Route 3 memory-function @@ -63,6 +63,8 @@ 0x01 [end repeat] +;; first part of item manipulation program + 0x00 ;; this starts at address 0xD58A 0x21 ;; load target into HL diff -r 0b3e89103dc2 -r 5bcda2d6d135 clojure/com/aurellem/gb/util.clj --- a/clojure/com/aurellem/gb/util.clj Sat Mar 31 00:05:39 2012 -0500 +++ b/clojure/com/aurellem/gb/util.clj Sat Mar 31 00:33:35 2012 -0500 @@ -225,6 +225,6 @@ [n] (let [lower-seven (bit-and n 127)] (if (bit-test n 7) - (- 128 lower-seven) + (- lower-seven 128) lower-seven))) \ No newline at end of file diff -r 0b3e89103dc2 -r 5bcda2d6d135 clojure/com/aurellem/run/bootstrap_0.clj --- a/clojure/com/aurellem/run/bootstrap_0.clj Sat Mar 31 00:05:39 2012 -0500 +++ b/clojure/com/aurellem/run/bootstrap_0.clj Sat Mar 31 00:33:35 2012 -0500 @@ -784,6 +784,8 @@ (do-nothing 1)))) +("d572" "d573" "d574" "d575" "d576" "d577" "d58b" "d58e" "d58f" "ff80" "ff82" "ff84" "ff86" "ff87" "ff89") + (defn test-pc-item-program [] (-> (read-state "bootstrap-init") @@ -794,47 +796,49 @@ (flatten [ (repeat - 25 + 28 [0xFF 0x01]) - [0x00 ;; second part of item manipulation program - 0x2A - - 0x00 - 0x47 - - 0x00 - 0x3A + [;; second part of item manipulation program + 0x00 ;; this starts at address 0xD56C + 0x2A ;; save (HL)=(target) to A, increment HL 0x00 - 0x22 + 0x47 ;; save A to B 0x00 - 0X70 + 0x3A ;; save (target+1) to A, decrement HL 0x00 - 0xC3 + 0x22 ;; A -> target, increment HL [(target+1) -> target] - 0x0C + 0x00 + 0x70 ;; load B into target+1 [(target) -> target+1] + + 0x00 + 0xC3 ;; first part of absolute jump + + 0x0C ;; return control to pokemon kernel 0x5F] (repeat - 8 + 5 [0xFF 0x01]) - [0x00 - 0x21 + [;; first part of item manipulation program + 0x00 + 0x21 ;; load target into HL - 0x93 + 0x94 ;; this is the target address 0xD5 - 0x00 - 0x18 + 0x00 ;; relative jump back to first part + 0x18 - 0xE1 + 0xE1 ;; of program 0x01 - 0xFF + 0xFF ;; spacer 0x01 - 0x04 ;; target ID - 0x3E ;; target Quantity + 0x04 ;; target ID (pokeball) + 0x3E ;; target Quantity (lemonade) ]]))))