Optimize PPU to loopup bitmasks
authorAlyssa Rosenzweig <alyssa@backtick.town>
Sat, 2 Jul 2016 18:15:01 +0000 (11:15 -0700)
committerAlyssa Rosenzweig <alyssa@backtick.town>
Sat, 2 Jul 2016 18:15:01 +0000 (11:15 -0700)
src/PPU/PPU.tosh

index 48f5d52..7081cd3 100644 (file)
@@ -37,9 +37,8 @@ end
 ; "TODO: buggy sprite overflow flag"
 
 define-atomic get pattern tile: (tile) scanline: (scanline) table: (table)
 ; "TODO: buggy sprite overflow flag"
 
 define-atomic get pattern tile: (tile) scanline: (scanline) table: (table)
-get bit mask (join "0x" ((item (16 * tile + scanline + table+1) of CHR-ROM)))
-set lower mask to mask
-get bit mask (join "0x" ((item (16 * tile + scanline + table+9) of CHR-ROM)))
+set lower mask to item 1 + (join "0x" ((item (16 * tile + scanline + table+1) of CHR-ROM))) of bitmask
+set mask to item 1 +  (join "0x" ((item (16 * tile + scanline + table+9) of CHR-ROM))) of bitmask
 
 define-atomic compute background pixel
 ; "Fetch it from CHR and decode, not unlike sprites"
 
 define-atomic compute background pixel
 ; "Fetch it from CHR and decode, not unlike sprites"
@@ -105,15 +104,15 @@ repeat 224
                if PPU show bg = 1 or PPU show sprites = 1 then
                        repeat cycles
                                compute pixel
                if PPU show bg = 1 or PPU show sprites = 1 then
                        repeat cycles
                                compute pixel
-                               set pen color to (tmp*1)
+                               set pen color to (tmp)
                                change mX by 1
                                change x by 1
                                compute pixel
                                change mX by 1
                                change x by 1
                                compute pixel
-                               set pen color to (tmp*1)
+                               set pen color to (tmp)
                                change x by 1
                                change mX by 1
                                compute pixel
                                change x by 1
                                change mX by 1
                                compute pixel
-                               set pen color to (tmp*1)
+                               set pen color to (tmp)
                                change x by 1
                                change mX by 1
                        end
                                change x by 1
                                change mX by 1
                        end
@@ -158,19 +157,11 @@ else
        end
 end
 
        end
 end
 
-define-atomic get bit mask (N)
-set temp to N
-set mask to ""
-repeat 8
-       set mask to (join (<temp mod 2 = 1> * 1) (mask))
-       set temp to (temp - temp mod 2) * 0.5
-end
-
 ; "TODO: use O(logN) lookup instead of O(N)"
 
 define-atomic write PPU register (N) value: (V)
 if N = 0 then
 ; "TODO: use O(logN) lookup instead of O(N)"
 
 define-atomic write PPU register (N) value: (V)
 if N = 0 then
-       get bit mask (V)
+       set mask to item 1 + V of bitmask
        set PPU base nametable address to 2 * letter 7 of mask + letter 8 of mask
        set PPU VRAM increment to letter 6 of mask * 31 + 1
        set PPU Sprite pattern table to letter 5 of mask * 4096
        set PPU base nametable address to 2 * letter 7 of mask + letter 8 of mask
        set PPU VRAM increment to letter 6 of mask * 31 + 1
        set PPU Sprite pattern table to letter 5 of mask * 4096
@@ -180,7 +171,7 @@ if N = 0 then
        set PPU generate NMI to letter 1 of mask
 else
        if N = 1 then
        set PPU generate NMI to letter 1 of mask
 else
        if N = 1 then
-               get bit mask (V)
+               set mask to item 1 + V of bitmask
                set PPU grayscale to letter 8 of mask
                set PPU show left8 bg to letter 7 of mask
                set PPU show left8 sprites to letter 6 of mask
                set PPU grayscale to letter 8 of mask
                set PPU show left8 bg to letter 7 of mask
                set PPU show left8 sprites to letter 6 of mask
@@ -269,4 +260,4 @@ else
                        end
                end
        end
                        end
                end
        end
-end
+end
\ No newline at end of file
This page took 0.026451 seconds and 4 git commands to generate.