OSDN Git Service

sprite bit pattern corrected.
authorastoria-d <astoria-d@mail.goo.ne.jp>
Mon, 19 Sep 2016 03:18:28 +0000 (12:18 +0900)
committerastoria-d <astoria-d@mail.goo.ne.jp>
Mon, 19 Sep 2016 03:18:28 +0000 (12:18 +0900)
de0_cv_nes/ppu/render.vhd

index 98c9007..3bf875e 100644 (file)
@@ -1083,9 +1083,25 @@ end;
                     --sprite pattern is read from vram.\r
                     if (reg_s_oam_cur_state = REG_SET1) then\r
                         if (reg_nes_x mod 8 = 6) then\r
-                            reg_spr_ptn_l((reg_nes_x - 256) / 8) <= pi_v_data;\r
+                            if (reg_spr_attr((reg_nes_x - 256) / 8)(SPRHFL) = '1') then\r
+                                --normal\r
+                                reg_spr_ptn_l((reg_nes_x - 256) / 8) <=\r
+                                    reg_v_data(0) & reg_v_data(1) & reg_v_data(2) & reg_v_data(3) &\r
+                                    reg_v_data(4) & reg_v_data(5) & reg_v_data(6) & reg_v_data(7);\r
+                            else\r
+                                --flip horizontally\r
+                                reg_spr_ptn_l((reg_nes_x - 256) / 8) <= reg_v_data;\r
+                            end if;\r
                         elsif (reg_nes_x mod 8 = 0) then\r
-                            reg_spr_ptn_h((reg_nes_x - 256) / 8 - 1) <= pi_v_data;\r
+                            if (reg_spr_attr((reg_nes_x - 256) / 8 - 1)(SPRHFL) = '1') then\r
+                                --normal\r
+                                reg_spr_ptn_h((reg_nes_x - 256) / 8 - 1) <=\r
+                                    reg_v_data(0) & reg_v_data(1) & reg_v_data(2) & reg_v_data(3) &\r
+                                    reg_v_data(4) & reg_v_data(5) & reg_v_data(6) & reg_v_data(7);\r
+                            else\r
+                                --flip horizontally\r
+                                reg_spr_ptn_h((reg_nes_x - 256) / 8 - 1) <= reg_v_data;\r
+                            end if;\r
                         end if;\r
                     end if;\r
 \r