# HG changeset patch # User Robert McIntyre # Date 1332584793 18000 # Node ID 0587f266a73506fc6859b562ba2420f87f62fa1c # Parent 10e26e7ceedb21bb027cbc6f56833b2bc5442b25 added functions for setting rival's name and text speed diff -r 10e26e7ceedb -r 0587f266a735 clojure/com/aurellem/exp/cartography --- a/clojure/com/aurellem/exp/cartography Sat Mar 24 04:29:37 2012 -0500 +++ b/clojure/com/aurellem/exp/cartography Sat Mar 24 05:26:33 2012 -0500 @@ -485,19 +485,19 @@ D346 /h (bcd) money D347 |m (bcd) money D348 \l (bcd) money -D349 -D34A -D34B -D34C -D34D -D34E -D34F -D350 -D351 -D352 -D353 -D354 -D355 +D349 / +D34A | +D34B | +D34C | +D34D | +D34E | Rival's Name +D34F | +D350 | +D351 | +D352 | +D353 \ +D354 Text Speed +D355 Badges D356 D357 D358 diff -r 10e26e7ceedb -r 0587f266a735 clojure/com/aurellem/exp/play.clj --- a/clojure/com/aurellem/exp/play.clj Sat Mar 24 04:29:37 2012 -0500 +++ b/clojure/com/aurellem/exp/play.clj Sat Mar 24 05:26:33 2012 -0500 @@ -4,7 +4,8 @@ assembly saves items pokemon status types characters species moves - pokedex)) + pokedex money rival-name + text-speed)) (:import java.io.File) (:import [com.aurellem.gb.gb_driver SaveState])) diff -r 10e26e7ceedb -r 0587f266a735 clojure/com/aurellem/gb/characters.clj --- a/clojure/com/aurellem/gb/characters.clj Sat Mar 24 04:29:37 2012 -0500 +++ b/clojure/com/aurellem/gb/characters.clj Sat Mar 24 05:26:33 2012 -0500 @@ -20,12 +20,13 @@ }) +(def end-of-name-sentinel 0x00) (def character-code->character { 0x0 "" ;; separator character? 0x58 "\n" - ;0x00 "<";;"end-of-name-sentinel" ;; begin messsage + ;;0x00 "<";;"end-of-name-sentinel" ;; begin messsage ;;0x49 "\n //" ;; ocsenave: pagebreak pokedex ;;0x4E "\n..." ; ocsenave: clearscroll pokedex page 0x4F "\n" ; newline @@ -155,8 +156,6 @@ (format "[0x%02X]" %)) codes))) - - (defn print-text ([^SaveState state begin end] (dorun diff -r 10e26e7ceedb -r 0587f266a735 clojure/com/aurellem/gb/moves.clj --- a/clojure/com/aurellem/gb/moves.clj Sat Mar 24 04:29:37 2012 -0500 +++ b/clojure/com/aurellem/gb/moves.clj Sat Mar 24 05:26:33 2012 -0500 @@ -288,7 +288,7 @@ { :absorb 20 :acid 30 - :acid-armor 40 ;; WTF happens with 3 PP-UPs??! + :acid-armor 40 ;; WTF happens with 3 PP-UPs??! (answer: 61PP!) :agility 30 :amnesia 20 :aurora-beam 20 @@ -453,5 +453,7 @@ :wrap 20}) (defn max-pp [name pp-ups] - (int (* (+ 1 (* (/ 1 5) pp-ups)) - (move-name->move-pp name)))) \ No newline at end of file + (if (= 40 (move-name->move-pp name)) + (+ 40 (* 7 pp-ups)) + (int (* (+ 1 (* (/ 1 5) pp-ups)) + (move-name->move-pp name))))) \ No newline at end of file diff -r 10e26e7ceedb -r 0587f266a735 clojure/com/aurellem/gb/rival_name.clj --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clojure/com/aurellem/gb/rival_name.clj Sat Mar 24 05:26:33 2012 -0500 @@ -0,0 +1,27 @@ +(ns com.aurellem.gb.rival-name + (:use (com.aurellem.gb gb-driver util characters)) + (:import [com.aurellem.gb.gb_driver SaveState])) + + +(def rival-name-start-address 0xD349) + +(def rival-name-width 12) + +(defn read-rival-name + ([^SaveState state] + (read-name (subvec (vec (memory state)) + rival-name-start-address + (+ rival-name-start-address + rival-name-width)))) + ([] (read-rival-name @current-state))) + +(defn set-rival-name + ([^SaveState state new-name] + (assert (<= (count new-name) 10)) + (let [codes (str->character-codes new-name)] + (set-memory-range state + rival-name-start-address + (concat codes [end-of-name-sentinel])))) + ([new-name] (set-rival-name @current-state new-name))) + + diff -r 10e26e7ceedb -r 0587f266a735 clojure/com/aurellem/gb/text_speed.clj --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clojure/com/aurellem/gb/text_speed.clj Sat Mar 24 05:26:33 2012 -0500 @@ -0,0 +1,30 @@ +(ns com.aurellem.gb.text-speed + (:use (com.aurellem.gb gb-driver util characters)) + (:import [com.aurellem.gb.gb_driver SaveState])) + +(def text-speed-address 0xD354) + +(def text-speed->code + {:slow 69 + :mid 67 + :fast 65 + :ultra 64 + }) + +(def code->text-speed + (zipmap (vals text-speed->code) + (keys text-speed->code))) + +(defn read-text-speed + ([^SaveState state] + (code->text-speed (aget (memory state) + text-speed-address))) + ([] (read-text-speed @current-state))) + +(defn set-text-speed + ([^SaveState state new-speed] + (set-memory + state + text-speed-address + (text-speed->code new-speed new-speed))) + ([new-speed] (set-text-speed @current-state new-speed))) \ No newline at end of file