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)))))))) ocsenave@244: ocsenave@244: (def hxc-types ocsenave@244: "The hardcoded type names in memory. List begins at ROM@27D99, ocsenave@244: shortly before hxc-titles." ocsenave@244: (map character-codes->str ocsenave@244: (take-nth 2 ocsenave@244: (partition-by #(= 0x50 %) ocsenave@244: (take 102 ocsenave@244: (drop 0x27D99 ocsenave@244: (rom (root)))))))) ocsenave@244: 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@244: [:normal ocsenave@244: :fighting ocsenave@244: :flying ocsenave@244: :poison ocsenave@244: :ground ocsenave@244: :rock ocsenave@244: :bug ocsenave@244: :ghost ocsenave@244: :A ocsenave@244: :B ocsenave@244: :C ocsenave@244: :D ocsenave@244: :E ocsenave@244: :F ocsenave@244: :G ocsenave@244: :H ocsenave@244: :I ocsenave@244: :J ocsenave@244: :K ocsenave@244: :fire ocsenave@244: :water ocsenave@244: :grass ocsenave@244: :electric ocsenave@244: :psychic ocsenave@244: :ice ocsenave@244: :dragon ocsenave@244: ]) 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: 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))))