OSDN Git Service

- scroll x and bg color test updated
authorastoria-d <astoria-d@mail.goo.ne.jp>
Sun, 15 Sep 2013 01:18:48 +0000 (10:18 +0900)
committerastoria-d <astoria-d@mail.goo.ne.jp>
Sun, 15 Sep 2013 01:18:48 +0000 (10:18 +0900)
- scroll x rendering ok

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

index c565ae3..fea18b0 100644 (file)
@@ -248,7 +248,6 @@ signal clk_n            : std_logic;
 
 --timing adjust
 signal io_cnt           : std_logic_vector(0 downto 0);
-signal vram_io          : std_logic;
 
 --vram i/o
 signal io_oe_n          : std_logic;
@@ -359,19 +358,17 @@ begin
 
     cnt_x_en_n <= '0';
 
-    vram_io <= not io_cnt(0) when ppu_scroll_x(0) = '0' else
-               io_cnt(0);
-    ale <= vram_io when ppu_mask(PPUSBG) = '1' and
+    ale <= io_cnt(0) when ppu_mask(PPUSBG) = '1' and
                 (cur_y < conv_std_logic_vector(VSCAN, X_SIZE) or 
                 cur_y = conv_std_logic_vector(VSCAN_MAX - 1, X_SIZE)) else
-           vram_io when ppu_mask(PPUSSP) = '1' and
+           io_cnt(0) when ppu_mask(PPUSSP) = '1' and
                 (cur_y < conv_std_logic_vector(VSCAN, X_SIZE) or 
                 cur_y = conv_std_logic_vector(VSCAN_MAX - 1, X_SIZE)) else
            'Z';
-    rd_n <= vram_io when ppu_mask(PPUSBG) = '1' and
+    rd_n <= io_cnt(0) when ppu_mask(PPUSBG) = '1' and
                 (cur_y < conv_std_logic_vector(VSCAN, X_SIZE) or 
                 cur_y = conv_std_logic_vector(VSCAN_MAX - 1, X_SIZE)) else
-            vram_io when ppu_mask(PPUSSP) = '1' and
+            io_cnt(0) when ppu_mask(PPUSSP) = '1' and
                 (cur_y < conv_std_logic_vector(VSCAN, X_SIZE) or 
                 cur_y = conv_std_logic_vector(VSCAN_MAX - 1, X_SIZE)) else
             'Z';
@@ -382,10 +379,10 @@ begin
                 (cur_y < conv_std_logic_vector(VSCAN, X_SIZE) or 
                 cur_y = conv_std_logic_vector(VSCAN_MAX - 1, X_SIZE)) else
             'Z';
-    io_oe_n <= not vram_io when ppu_mask(PPUSBG) = '1' and
+    io_oe_n <= not io_cnt(0) when ppu_mask(PPUSBG) = '1' and
                 (cur_y < conv_std_logic_vector(VSCAN, X_SIZE) or 
                 cur_y = conv_std_logic_vector(VSCAN_MAX - 1, X_SIZE)) else
-               not vram_io when ppu_mask(PPUSSP) = '1' and
+               not io_cnt(0) when ppu_mask(PPUSSP) = '1' and
                 (cur_y < conv_std_logic_vector(VSCAN, X_SIZE) or 
                 cur_y = conv_std_logic_vector(VSCAN_MAX - 1, X_SIZE)) else
                '1';
index afc9d26..93ffefb 100644 (file)
@@ -114,12 +114,9 @@ at_st:
     bpl at_st\r
 \r
     ;;set universal bg color.\r
-    lda #$3f\r
-    sta $2006\r
-    lda #$10\r
-    sta $2006\r
     lda #$3d\r
-    sta $2007\r
+    sta $0302\r
+    jsr set_bg_col\r
 \r
     ;;set scroll reg.\r
     lda #05\r
@@ -176,6 +173,7 @@ read_status:
 \r
 nmi_test:\r
     jsr set_scroll\r
+    jsr set_bg_col\r
 \r
     rti\r
 \r
@@ -208,14 +206,33 @@ no_carry:
 set_scroll:\r
     lda $0300\r
     sta $2005\r
-    adc #$01\r
+    clc\r
+    adc #$05\r
     sta $0300\r
     lda $0301\r
     sta $2005\r
+    clc\r
     adc #04\r
 ;;    sta $0301\r
     rts\r
 \r
+set_bg_col:\r
+    lda #$3f\r
+    sta $2006\r
+    lda #$10\r
+    sta $2006\r
+    lda $0302\r
+    sta $2007\r
+    cmp #$30\r
+    bne bg_dec\r
+    lda #$3d\r
+    sta $0302\r
+    jmp bg_done\r
+bg_dec:\r
+    dec $0302\r
+bg_done:\r
+    rts\r
+\r
 nt1:\r
        .byte   $61, $62, $63, $64, $65, $66, $67, $68, $69, $6a, $6b\r
        .byte   $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $3a\r