OSDN Git Service

- vram address increment size 32 is supported.
authorastoria-d <astoria-d@mail.goo.ne.jp>
Fri, 6 Sep 2013 04:29:41 +0000 (13:29 +0900)
committerastoria-d <astoria-d@mail.goo.ne.jp>
Fri, 6 Sep 2013 04:29:41 +0000 (13:29 +0900)
- test case for vertical text message added.

simulation/ppu/ppu.vhd
tools/test-image/sample1.asm

index 0d7dda6..573d95e 100644 (file)
@@ -124,6 +124,7 @@ constant PPUSCROLL : std_logic_vector(2 downto 0) := "101";
 constant PPUADDR   : std_logic_vector(2 downto 0) := "110";
 constant PPUDATA   : std_logic_vector(2 downto 0) := "111";
 
+constant PPUVAI     : integer := 2;  --vram address increment
 constant PPUNEN     : integer := 7;  --nmi enable
 constant ST_VBL     : integer := 7;  --vblank
 
@@ -155,6 +156,8 @@ signal ppu_scroll_x     : std_logic_vector (dsize - 1 downto 0);
 signal ppu_scroll_y     : std_logic_vector (dsize - 1 downto 0);
 signal ppu_scroll_cnt   : std_logic_vector (0 downto 0);
 signal ppu_addr         : std_logic_vector (13 downto 0);
+signal ppu_addr_inc1    : std_logic_vector (13 downto 0);
+signal ppu_addr_inc32   : std_logic_vector (13 downto 0);
 signal ppu_addr_in      : std_logic_vector (13 downto 0);
 signal ppu_addr_cnt     : std_logic_vector (0 downto 0);
 signal ppu_data         : std_logic_vector (dsize - 1 downto 0);
@@ -210,8 +213,17 @@ begin
             port map (clk_n, ppu_latch_rst_n, ppu_scroll_cnt_ce_n, 
                                             '1', (others => '0'), ppu_scroll_cnt);
 
-    ppu_addr_inst : counter_register generic map(14, 1)
-            port map (clk_n, rst_n, ppu_data_we_n, ppu_addr_we_n, ppu_addr_in, ppu_addr);
+--    ppu_addr_inst : counter_register generic map(14, 1)
+--            port map (clk_n, rst_n, ppu_data_we_n, ppu_addr_we_n, ppu_addr_in, ppu_addr);
+
+    ppu_addr_inst_inc1 : counter_register generic map(14, 1)
+            port map (clk_n, rst_n, ppu_data_we_n, ppu_addr_we_n, ppu_addr_in, ppu_addr_inc1);
+    ppu_addr_inst_inc32 : counter_register generic map(14, 32)
+            port map (clk_n, rst_n, ppu_data_we_n, ppu_addr_we_n, ppu_addr_in, ppu_addr_inc32);
+
+    ppu_addr <= ppu_addr_inc32 when ppu_ctrl(PPUVAI) = '1' else
+                ppu_addr_inc1;
+
     ppu_addr_cnt_inst : counter_register generic map (1, 1)
             port map (clk_n, ppu_latch_rst_n, ppu_addr_cnt_ce_n, 
                                             '1', (others => '0'), ppu_addr_cnt);
index eeb0f8f..e9cfa48 100644 (file)
@@ -90,13 +90,31 @@ copymap:
        dey\r
        bne     copymap\r
 \r
+    ;;;vertical show test.\r
+       lda     #$04\r
+       sta     $2000\r
+\r
+       lda     #$20\r
+       sta     $2006\r
+       lda     #$cb\r
+       sta     $2006\r
+       ldx     #$00\r
+       ldy     #$0d\r
+\r
+    ;;load name table.\r
+copymap2:\r
+       lda     string, x\r
+       sta     $2007\r
+       inx\r
+       dey\r
+       bne     copymap2\r
+\r
+    ;;scroll reg set.\r
        lda     #$00\r
        sta     $2005\r
        sta     $2005\r
 \r
     ;;show test msg.\r
-       lda     #$00\r
-       sta     $2000\r
        lda     #$1e\r
        sta     $2001\r
 \r