rlm@218: (ns com.aurellem.gb.hxc rlm@218: (:use (com.aurellem.gb assembly characters gb-driver util rlm@218: constants)) rlm@218: (:use (com.aurellem.world practice)) rlm@218: (:import [com.aurellem.gb.gb_driver SaveState])) rlm@218: rlm@218: rlm@218: (def hxc-pokenames rlm@218: "The hardcoded names of the 190 species in memory. List begins at ROM@E8000." rlm@218: (let [count-species 190 rlm@218: name-length 10] rlm@218: (map character-codes->str rlm@218: (partition name-length rlm@218: (take (* count-species name-length) rlm@218: (drop 0xE8000 rlm@218: (rom(root)))))))) rlm@218: rlm@218: (def hxc-items rlm@218: "The hardcoded names of the items in memory. List begins at ROM@45B7 " rlm@218: (map character-codes->str rlm@218: (take-nth 2 rlm@218: (partition-by #(= % 0x50) rlm@218: (take 1200 rlm@218: (drop 0x45B7 (rom (root)))))))) rlm@218: (def hxc-titles rlm@218: "The hardcoded names of the trainer titles in memory. List begins at rlm@218: ROM@27E77" rlm@218: (map character-codes->str rlm@218: (take-nth 2 rlm@218: (partition-by #(= 0x50 %) rlm@218: (take 196 rlm@218: (drop 0x27E77 rlm@218: (rom (root)))))))) rlm@218: rlm@218: rlm@218: (def hxc-pokedex rlm@218: "The hardcoded pokedex entries in memory. List begins at rlm@218: ROM@B8000, shortly before move names." rlm@218: (map character-codes->str rlm@218: (take-nth 2 rlm@218: (partition-by #(= % 0x50) rlm@218: (take 14754 rlm@218: (drop 0xB8000 rlm@218: (rom (root)))))))) rlm@218: (def hxc-moves rlm@218: "The hardcoded move names in memory. List begins at ROM@BC000" rlm@218: (map character-codes->str rlm@218: (take-nth 2 rlm@218: (partition-by #(= % 0x50) rlm@218: (take 1551 rlm@218: (drop 0xBC000 rlm@218: (rom (root)))))))) rlm@218: rlm@218: rlm@218: rlm@218: (def hxc-places rlm@218: "The hardcoded place names in memory. List begins at rlm@218: ROM@71500. Cinnabar Mansion is dynamically calculated." rlm@218: (map character-codes->str ocsenave@243: (take-nth 2 ocsenave@243: (partition-by #(= % 0x50) rlm@218: (take 560 rlm@218: (drop 0x71500 rlm@218: (rom (root)))))))) rlm@218: rlm@218: rlm@218: (def hxc-dialog rlm@218: "The hardcoded dialogue in memory, including in-game alerts. List begins at ROM@98000." rlm@218: (character-codes->str(take 0x0F728 rlm@218: (drop (+ 0x98000) rlm@218: (rom (root)))))) rlm@218: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: (def pkmn-types ocsenave@243: {0 :normal ocsenave@243: 1 :fighting ocsenave@243: 2 :flying ocsenave@243: 3 :poison ocsenave@243: 4 :ground ocsenave@243: 5 :rock ocsenave@243: 7 :bug ocsenave@243: 8 :ghost ocsenave@243: ocsenave@243: 20 :fire ocsenave@243: 21 :water ocsenave@243: 22 :grass ocsenave@243: 23 :electric ocsenave@243: 24 :psychic ocsenave@243: 25 :ice ocsenave@243: 26 :dragon ocsenave@243: }) ocsenave@243: ocsenave@243: ocsenave@243: (def hxc-advantage ocsenave@243: (map ocsenave@243: (fn [[atk def mult]] [(get pkmn-types atk (hex atk)) ocsenave@243: (get pkmn-types def (hex def)) ocsenave@243: (/ mult 10)]) ocsenave@243: (partition 3 ocsenave@243: (take-while (partial not= 0xFF) ocsenave@243: (drop 0x3E62D (rom(root))))))) ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ;; (def pkmn-types ocsenave@243: ;; [:normal ocsenave@243: ;; :fighting ocsenave@243: ;; :flying ocsenave@243: ;; :poison ocsenave@243: ;; :ground ocsenave@243: ;; :rock ocsenave@243: ;; :bird ;;? ocsenave@243: ;; :bug ocsenave@243: ;; :ghost ocsenave@243: ;; :A ocsenave@243: ;; :B ocsenave@243: ;; :C ocsenave@243: ;; :D ocsenave@243: ;; :E ocsenave@243: ;; :fire ocsenave@243: ;; :water ocsenave@243: ;; :grass ocsenave@243: ;; :electric ocsenave@243: ;; :psychic ocsenave@243: ;; :ice ocsenave@243: ;; :poision?]) ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: ocsenave@243: rlm@218: (def hxc-later rlm@218: "Running this code produces, e.g. hardcoded names NPCs give rlm@218: their pokemon. Will sort through it later." rlm@218: (print (character-codes->str(take 10000 rlm@218: (drop 0x71597 rlm@218: (rom (root))))))) rlm@218: rlm@218: (let [dex rlm@218: (partition-by #(= 0x50 %) rlm@218: (take 2540 rlm@218: (drop 0x40687 rlm@218: (rom (root)))))] rlm@218: (def dex dex) rlm@218: (def hxc-species rlm@218: (map character-codes->str rlm@218: (take-nth 4 dex))))