imrpove ppu
authorAlyssa Rosenzweig <alyssa@backtick.town>
Wed, 6 Jul 2016 23:49:19 +0000 (16:49 -0700)
committerAlyssa Rosenzweig <alyssa@backtick.town>
Wed, 6 Jul 2016 23:49:19 +0000 (16:49 -0700)
src/PPU/PPU.tosh

index a164842..98b4a31 100644 (file)
@@ -40,6 +40,23 @@ end
 define-atomic get pattern tile: (tile) scanline: (scanline) table: (table)
 set mask to item (16 * tile + scanline + table + 1) of oCHR
 
+when 1 key pressed
+ask "Cual?" and wait
+if answer = "format chr" then
+       format chr
+else
+       if answer = "format prg" then
+               format prg
+       else
+               if answer = "irom" then
+                       ask "PRG?" and wait
+                       set temp to answer
+                       ask "CHR?" and wait
+                       unpack ROM (temp) banks PRG-ROM and (answer) banks CHR-ROM
+               end
+       end
+end
+
 ; "optimizes CHR-ROM"
 
 define-atomic format chr
@@ -53,6 +70,12 @@ repeat length of CHR-ROM
        add BG: Plane 0 + BG: Plane 1 * 2 to oCHR
        change temp by 1
 end
+if length of CHR-ROM = 0 then
+       repeat 8192
+               add "0" to CHR-ROM
+               add "0" to oCHR
+       end
+end
 
 when q key pressed
 emulate frame
@@ -98,7 +121,7 @@ repeat 224
                if PPU show bg = 1 or PPU show sprites = 1 then
                        repeat cycles
                                if mX mod 8 = 0 then
-                                       read PPU memory @ (8192 + mX / 8 + 32 * floor of (mY / 8))
+                                       read PPU memory @ (PPU base nametable address + mX / 8 + 32 * floor of (mY / 8))
                                        set BG: Plane 0 to item (16 * M + PPU Background pattern table + mY mod 8 + 1) of oCHR
                                        read PPU memory @ (9152 + floor of (mX / 16) + 16 * floor of (mY / 16))
                                        set offset to 2 * <mX mod 16 > 7> + 4 * <mY mod 16 > 7>
@@ -163,7 +186,7 @@ define-atomic read PPU register (N)
 if N = 2 then
        set M to 128 * PPU vblank + 64 * PPU sprite 0 + 32 * PPU sprite overflow
        set PPU address latch to 0
-       set PPU vblank to 0
+       ; "set PPU vblank to 0"
 else
        if N = 7 then
                read PPU memory
@@ -175,7 +198,8 @@ end
 define-atomic write PPU register (N) value: (V)
 if N = 0 then
        set mask to item (1 + V) of bitmask
-       set PPU base nametable address to 2 * letter 7 of mask + letter 8 of mask
+       ask mask and wait
+       set PPU base nametable address to (2 * letter 7 of mask + letter 8 of mask) * 1024
        set PPU VRAM increment to letter 6 of mask * 31 + 1
        set PPU Sprite pattern table to letter 5 of mask * 4096
        set PPU Background pattern table to letter 4 of mask * 4096
@@ -278,7 +302,21 @@ end
 
 define-atomic write PPU memory (V)
 if PPU VRAM address < 32 * 256 then
-       replace item 1 + PPU VRAM address of CHR-ROM with V
+       replace item 1 + PPU VRAM address of CHR-ROM with item (V + 1) of hex
+       ; "TODO: debug completely"
+       if PPU VRAM address mod 16 < 8 then
+               set BG: Plane 0 to item (1 + (join "0x" (item (1 + PPU VRAM address) of CHR-ROM))) of bitmask
+               set BG: Plane 1 to item (1 + (join "0x" (item (1 + PPU VRAM address + 8) of CHR-ROM))) of bitmask
+               set BG: Plane 0 to (join "1" (BG: Plane 0))
+               set BG: Plane 1 to (join "1" (BG: Plane 1))
+               replace item 1 + PPU VRAM address of oCHR with BG: Plane 0 + BG: Plane 1 * 2
+       else
+               set BG: Plane 0 to item (1 + (join "0x" (item (1 + PPU VRAM address - 8) of CHR-ROM))) of bitmask
+               set BG: Plane 1 to item (1 + (join "0x" (item (1 + PPU VRAM address) of CHR-ROM))) of bitmask
+               set BG: Plane 0 to (join "1" (BG: Plane 0))
+               set BG: Plane 1 to (join "1" (BG: Plane 1))
+               replace item 1 + PPU VRAM address - 8 of oCHR with BG: Plane 0 + BG: Plane 1 * 2
+       end
 else
        if PPU VRAM address < 48 * 256 then
                replace item PPU VRAM address - 8191 of Nametables with V
@@ -290,7 +328,8 @@ else
                                replace item PPU VRAM address mod 32 + 1 of Palette with item (V + 1) of RGB
                        else
                                ; "TODO: PPU memory mirroring"
+                               ask V and wait
                        end
                end
        end
-end
+end
\ No newline at end of file
This page took 0.02562 seconds and 4 git commands to generate.