\r
architecture rtl of mos6502 is\r
\r
+constant cpu_io_multi : integer := 3; --io happens every 4 cpu cycle.\r
+constant bg_tile_cnt : integer := 1023;\r
+constant spr_tile_cnt : integer := 255;\r
+ \r
signal reg_oe_n : std_logic;\r
signal reg_we_n : std_logic;\r
signal reg_addr : std_logic_vector ( 15 downto 0);\r
set_ppu_p : process (pi_base_clk, pi_rst_n)\r
use ieee.std_logic_arith.conv_std_logic_vector;\r
\r
- constant cpu_io_multi : integer := 3; --io happens every 4 cpu cycle.\r
- constant bg_tile_cnt : integer := 1023;\r
- constant spr_tile_cnt : integer := 255;\r
- --constant bg_tile_cnt : integer := 127;\r
- \r
variable init_plt_cnt : integer;\r
variable init_vram_cnt : integer;\r
variable init_spr_cnt : integer;\r
begin\r
--fake ram read/write to emulate dummy i/o.\r
reg_d_out <= (others => 'Z');\r
+ reg_addr <= (others => 'Z');\r
reg_oe_n <= 'Z';\r
reg_we_n <= 'Z';\r
end;\r
else\r
io_read(16#00#);\r
if (init_plt_cnt > (32 + 3) * cpu_io_multi) then\r
- global_step_cnt := global_step_cnt + 2;\r
+ global_step_cnt := global_step_cnt + 1;\r
end if;\r
end if;\r
init_plt_cnt := init_plt_cnt + 1;\r
elsif (global_step_cnt = 2) then\r
--set dma data.\r
--dma addr = 0x0300.\r
- if (init_spr_cnt mod cpu_io_multi = 0 and init_spr_cnt <= (spr_tile_cnt + 2) * cpu_io_multi) then\r
+ if (init_spr_cnt mod cpu_io_multi = 0 and init_spr_cnt <= (spr_tile_cnt + 0) * cpu_io_multi) then\r
io_out(16#0300# + init_spr_cnt / cpu_io_multi, nes_spr_data(init_spr_cnt / cpu_io_multi));\r
\r
- elsif (init_spr_cnt = (spr_tile_cnt + 0) * cpu_io_multi) then\r
+ elsif (init_spr_cnt = (spr_tile_cnt + 1) * cpu_io_multi) then\r
--dma start.\r
io_out(16#4014#, 3);\r
\r
\r
\r
\r
------------dummy apu\r
-library ieee;\r
-use ieee.std_logic_1164.all;\r
-use ieee.std_logic_arith.conv_std_logic_vector;\r
-\r
-entity apu is \r
- port (\r
- pi_rst_n : in std_logic;\r
- pi_base_clk : in std_logic;\r
- pi_cpu_en : in std_logic_vector (7 downto 0);\r
- pi_rnd_en : in std_logic_vector (3 downto 0);\r
- pi_ce_n : in std_logic;\r
-\r
- --cpu i/f\r
- pio_oe_n : inout std_logic;\r
- pio_we_n : inout std_logic;\r
- pio_cpu_addr : inout std_logic_vector (15 downto 0);\r
- pio_cpu_d : inout std_logic_vector (7 downto 0);\r
- po_rdy : out std_logic;\r
-\r
- --sprite i/f\r
- po_spr_ce_n : out std_logic;\r
- po_spr_rd_n : out std_logic;\r
- po_spr_wr_n : out std_logic;\r
- po_spr_addr : out std_logic_vector (7 downto 0);\r
- po_spr_data : out std_logic_vector (7 downto 0)\r
- );\r
-end apu;\r
-\r
-architecture rtl of apu is\r
-begin\r
- pio_oe_n <= 'Z';\r
- pio_we_n <= 'Z';\r
- pio_cpu_addr <= (others => 'Z');\r
- pio_cpu_d <= (others => 'Z');\r
- po_rdy <= '1';\r
- po_spr_ce_n <= 'Z';\r
- po_spr_rd_n <= 'Z';\r
- po_spr_wr_n <= 'Z';\r
- po_spr_addr <= (others => 'Z');\r
- po_spr_data <= (others => 'Z');\r
-end rtl;\r
-\r
+-------------dummy apu\r
+--library ieee;\r
+--use ieee.std_logic_1164.all;\r
+--use ieee.std_logic_arith.conv_std_logic_vector;\r
+--\r
+--entity apu is \r
+-- port (\r
+-- pi_rst_n : in std_logic;\r
+-- pi_base_clk : in std_logic;\r
+-- pi_cpu_en : in std_logic_vector (7 downto 0);\r
+-- pi_rnd_en : in std_logic_vector (3 downto 0);\r
+-- pi_ce_n : in std_logic;\r
+--\r
+-- --cpu i/f\r
+-- pio_oe_n : inout std_logic;\r
+-- pio_we_n : inout std_logic;\r
+-- pio_cpu_addr : inout std_logic_vector (15 downto 0);\r
+-- pio_cpu_d : inout std_logic_vector (7 downto 0);\r
+-- po_rdy : out std_logic;\r
+--\r
+-- --sprite i/f\r
+-- po_spr_ce_n : out std_logic;\r
+-- po_spr_rd_n : out std_logic;\r
+-- po_spr_wr_n : out std_logic;\r
+-- po_spr_addr : out std_logic_vector (7 downto 0);\r
+-- po_spr_data : out std_logic_vector (7 downto 0)\r
+-- );\r
+--end apu;\r
+--\r
+--architecture rtl of apu is\r
+--begin\r
+-- pio_oe_n <= 'Z';\r
+-- pio_we_n <= 'Z';\r
+-- pio_cpu_addr <= (others => 'Z');\r
+-- pio_cpu_d <= (others => 'Z');\r
+-- po_rdy <= '1';\r
+-- po_spr_ce_n <= 'Z';\r
+-- po_spr_rd_n <= 'Z';\r
+-- po_spr_wr_n <= 'Z';\r
+-- po_spr_addr <= (others => 'Z');\r
+-- po_spr_data <= (others => 'Z');\r
+--end rtl;\r
+--\r