# HG changeset patch # User Robert McIntyre # Date 1340218761 18000 # Node ID f992a0a0480d3b3339d0e7f9b2ba5ec0fcf3f35b # Parent 81e43f0350dbcddea99b51722659487d969b6d85 fix compilation problem. diff -r 81e43f0350db -r f992a0a0480d clojure/com/aurellem/run/image.clj --- a/clojure/com/aurellem/run/image.clj Mon Jun 18 18:56:49 2012 -0500 +++ b/clojure/com/aurellem/run/image.clj Wed Jun 20 13:59:21 2012 -0500 @@ -126,23 +126,6 @@ (defn display-one-color "Displayes a single color onto the gameboy screen. input rgb in gameboy rgb." -<<<<<<< local - [[r g b]] - ;; construct a kernel that displays a single color - (let - [palettes (repeat 8 [r g b]) - kernel-address 0xC000 - kernel - [0xF3 ;; disable interrupts - (clear-music-registers) - (frame-metronome) - (set-palettes obj-palette-select obj-palette-data palettes) - (set-palettes bg-palette-select bg-palette-data palettes) - (infinite-loop)]] - (-> (set-memory-range (second (music-base)) - kernel-address (flatten kernel)) - (PC! kernel-address)))) -======= ([state [r g b]] ;; construct a kernel that displays a single color (let @@ -161,16 +144,16 @@ ([[r g b]] (display-one-color @current-state [r g b]))) -(require 'cortex.sense) +;;(require 'cortex.sense) (import java.awt.image.BufferedImage) -(defn show-screenshot [] - (let [im (BufferedImage. 160 144 BufferedImage/TYPE_INT_RGB) - pix (vec (pixels)) - view (cortex.sense/view-image)] - (dorun (for [x (range 160) y (range 144)] - (.setRGB im x y (pix (+ x (* 160 y)))))) - (view im))) +;; (defn show-screenshot [] +;; (let [im (BufferedImage. 160 144 BufferedImage/TYPE_INT_RGB) +;; pix (vec (pixels)) +;; view (cortex.sense/view-image)] +;; (dorun (for [x (range 160) y (range 144)] +;; (.setRGB im x y (pix (+ x (* 160 y)))))) +;; (view im))) (defn gb-rgb->vga-rgb [[r g b]] (let [vga-rgb @@ -245,15 +228,15 @@ (= (max r g b) b )) (seq (set (vals gb-color-map))))))))) - view (cortex.sense/view-image) + ;;view (cortex.sense/view-image) target (File. user-home "proj/vba-clojure/gb-color-map-unique.png")] (dorun (for [x (range 68) y (range 69)] (let [[r g b] (get pix (+ x (* 68 y)) [0 0 0]) rgb (+ (bit-shift-left r 16) (bit-shift-left g 8) b)] - (.setRGB im x y rgb)))) - (view im) + (.setRGB im x y rgb)))) + ;;(view im) (doto (.next (ImageIO/getImageWritersByFormatName "png")) (.setOutput (FileImageOutputStream. target)) @@ -269,7 +252,7 @@ (vec (for [b (range 32) g (range 32)] (gb-color-map [r g b]))))) - view (cortex.sense/view-image) + ;;view (cortex.sense/view-image) target (File. user-home "proj/vba-clojure/gb-color-map.png")] (dorun @@ -285,7 +268,7 @@ (+ 3 (* 35 (rem s-index 6)) x) (+ 3 (* 35 (int (/ s-index 6))) y) rgb)))))) - (view im) + ;;(view im) (doto (.next (ImageIO/getImageWritersByFormatName "png")) (.setOutput (FileImageOutputStream. target)) @@ -343,24 +326,38 @@ (defn absorb-combine-4 [objs] - - ) (defn palettes [^BufferedImage image] (let [palettes (map tile->palette (gb-tiles image)) unique-palettes (absorb-contract (set palettes))] unique-palettes)) - - - - - - + +(defn wait-until-v-blank + "Modified version of frame-metronome. waits untill LY == 144, + indicating start of v-blank period." + [] + (let [timing-loop + [0x01 ; \ + 0x44 ; | load 0xFF44 into BC + 0xFF ; / + 0x0A] ;; (BC) -> A, now A = LY (vertical line coord) + continue-if-144 + [0xFE + 144 ;; compare LY (in A) with 144 + 0x20 ;; jump back to beginning if LY != 144 (not-v-blank) + (->signed-8-bit + (+ -4 (- (count timing-loop))))]] + (concat timing-loop continue-if-144))) (defn display-image-kernel [^BufferedImage image] - + ;; assume image tile data is stored at 0xA000 + ;; " " palette date is at 0xB000 + - ) \ No newline at end of file + ) + + +