mirror of
https://github.com/Gehstock/Mist_FPGA.git
synced 2026-01-17 08:33:16 +00:00
Bugfix Controls by Dar
This commit is contained in:
parent
e7ec22c1e5
commit
23b68ea072
Binary file not shown.
@ -54,7 +54,7 @@ localparam CONF_STR = {
|
||||
"O5,Blend,Off,On;",
|
||||
"O6,Service,Off,On;",
|
||||
"T0,Reset;",
|
||||
"V,v1.0.",`BUILD_DATE
|
||||
"V,v1.1.",`BUILD_DATE
|
||||
};
|
||||
|
||||
assign LED = ~ioctl_downl;
|
||||
@ -194,7 +194,7 @@ satans_hollow satans_hollow(
|
||||
|
||||
.cocktail(0),
|
||||
.coin_meters(),
|
||||
.service_toggle(status[6]),
|
||||
.service(status[6]),
|
||||
.cpu_rom_addr ( rom_addr ),
|
||||
.cpu_rom_do ( rom_addr[0] ? rom_do[15:8] : rom_do[7:0] ),
|
||||
.cpu_rom_rd ( rom_rd ),
|
||||
|
||||
@ -161,7 +161,7 @@ port(
|
||||
cocktail : in std_logic;
|
||||
coin_meters : in std_logic;
|
||||
|
||||
service_toggle : in std_logic;
|
||||
service : in std_logic;
|
||||
|
||||
dbg_cpu_addr : out std_logic_vector(15 downto 0);
|
||||
cpu_rom_addr : out std_logic_vector(15 downto 0);
|
||||
@ -238,12 +238,10 @@ architecture struct of satans_hollow is
|
||||
signal bg_code : std_logic_vector(7 downto 0);
|
||||
signal bg_code_r : std_logic_vector(7 downto 0);
|
||||
signal bg_attr : std_logic_vector(7 downto 0);
|
||||
--signal bg_attr_r : std_logic_vector(7 downto 0);
|
||||
|
||||
signal bg_code_line : std_logic_vector(12 downto 0);
|
||||
signal bg_graphx1_do : std_logic_vector( 7 downto 0);
|
||||
signal bg_graphx2_do : std_logic_vector( 7 downto 0);
|
||||
--signal bg_vid : std_logic_vector( 3 downto 0);
|
||||
signal bg_palette_addr : std_logic_vector( 5 downto 0);
|
||||
|
||||
signal sp_ram_cache_addr : std_logic_vector(8 downto 0);
|
||||
@ -305,9 +303,6 @@ architecture struct of satans_hollow is
|
||||
signal input_1 : std_logic_vector(7 downto 0);
|
||||
signal input_2 : std_logic_vector(7 downto 0);
|
||||
signal input_3 : std_logic_vector(7 downto 0);
|
||||
|
||||
signal service_toggle_r : std_logic;
|
||||
signal service : std_logic;
|
||||
|
||||
begin
|
||||
|
||||
@ -315,13 +310,6 @@ clock_vid <= clock_40;
|
||||
clock_vidn <= not clock_40;
|
||||
reset_n <= not reset;
|
||||
|
||||
-- debug
|
||||
process (reset, clock_vid)
|
||||
begin
|
||||
if rising_edge(clock_vid) and cpu_ena ='1' and cpu_mreq_n ='0' then
|
||||
dbg_cpu_addr<= "000000000000000"&service; --cpu_addr;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
-- make enables clock from clock_vid
|
||||
process (clock_vid, reset)
|
||||
@ -376,32 +364,6 @@ begin
|
||||
video_blankn <= '0';
|
||||
if hcnt >= 2+16 and hcnt < 514+16 and
|
||||
vcnt >= 2 and vcnt < 481 then video_blankn <= '1';end if;
|
||||
|
||||
-- -- test pattern
|
||||
--
|
||||
-- video_blankn <= '1';
|
||||
--
|
||||
-- video_r <= "0000";
|
||||
-- video_g <= "0000";
|
||||
-- video_b <= "0000";
|
||||
--
|
||||
-- if hcnt >= 0 and hcnt < 512 and
|
||||
-- vcnt >= 0 and vcnt < 480 then video_b <= "0100"; end if;
|
||||
--
|
||||
-- if hcnt >= 1 and hcnt < 511 and
|
||||
-- vcnt >= 1 and vcnt < 479 then video_r <= "0100"; end if;
|
||||
--
|
||||
-- if hcnt >= 0 and hcnt < 512 and
|
||||
-- vcnt >= 0 and vcnt < 480 then video_g <= "0100"; end if;
|
||||
--
|
||||
-- if hcnt >= 0 and hcnt < 512 and
|
||||
-- vcnt >= 0 and vcnt < 480 and
|
||||
-- hcnt(5 downto 0) = vcnt(5 downto 0) then
|
||||
-- video_r <= "1100";
|
||||
-- video_g <= "1100";
|
||||
-- video_b <= "1100";
|
||||
-- end if;
|
||||
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
@ -417,36 +379,21 @@ input_1 <= not fire1_c & not fire2_c & not right_c & not left_c & not fire1 & no
|
||||
input_2 <= x"FF";
|
||||
input_3 <= "111111" & cocktail & coin_meters;
|
||||
|
||||
process (clock_vid, reset)
|
||||
begin
|
||||
if reset = '1' then
|
||||
service <= '0';
|
||||
else
|
||||
if rising_edge(clock_vid) then
|
||||
service_toggle_r <= service_toggle;
|
||||
|
||||
if service_toggle_r = '0' and service_toggle ='1' then
|
||||
service <= not service;
|
||||
end if;
|
||||
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
------------------------------------------
|
||||
-- cpu data input with address decoding --
|
||||
------------------------------------------
|
||||
cpu_di <= cpu_rom_do when cpu_mreq_n = '0' and cpu_addr(15 downto 12) < X"C" else -- 0000-BFFF
|
||||
wram_do when cpu_mreq_n = '0' and cpu_addr(15 downto 13) = "110" else -- C000-C7FF/C800-CFFF/D000-D7FF/D800-DFFF
|
||||
sp_ram_cache_do when cpu_mreq_n = '0' and cpu_addr(15 downto 11) = "11110" else -- sprite ram F000-F1FF + mirroring adresses
|
||||
bg_ram_do_r when cpu_mreq_n = '0' and cpu_addr(15 downto 11) = "11111" else -- video ram F800-FFFF + mirroring adresses
|
||||
ctc_controler_do when cpu_ioreq_n = '0' and cpu_m1_n = '0' else -- ctc ctrl (interrupt vector)
|
||||
ssio_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 4) = X"0" else
|
||||
ctc_counter_3_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F3" else
|
||||
ctc_counter_2_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F2" else
|
||||
ctc_counter_1_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F1" else
|
||||
ctc_counter_0_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F0" else
|
||||
X"FF";
|
||||
cpu_di <= cpu_rom_do when cpu_mreq_n = '0' and cpu_addr(15 downto 12) < X"C" else -- 0000-BFFF
|
||||
wram_do when cpu_mreq_n = '0' and (cpu_addr and X"E000") = x"C000" else -- C000-C7FF + mirroring 1800
|
||||
sp_ram_cache_do when cpu_mreq_n = '0' and (cpu_addr and x"E800") = x"E000" else -- sprite ram E000-E1FF + mirroring 1600
|
||||
bg_ram_do_r when cpu_mreq_n = '0' and (cpu_addr and x"E800") = x"E800" else -- video ram E800-EFFF + mirroring 1000
|
||||
ctc_controler_do when cpu_ioreq_n = '0' and cpu_m1_n = '0' else -- ctc ctrl (interrupt vector)
|
||||
ssio_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 5) = "000" else -- 0x00-0x1F
|
||||
ctc_counter_3_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F3" else
|
||||
ctc_counter_2_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F2" else
|
||||
ctc_counter_1_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F1" else
|
||||
ctc_counter_0_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F0" else
|
||||
X"FF";
|
||||
|
||||
------------------------------------------------------------------------
|
||||
-- Misc registers : ctc write enable / interrupt acknowledge
|
||||
@ -462,10 +409,10 @@ ctc_int_ack <= '1' when cpu_ioreq_n = '0' and cpu_m1_n = '0' else '0';
|
||||
------------------------------------------
|
||||
-- write enable / ram access from CPU --
|
||||
------------------------------------------
|
||||
wram_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and cpu_addr(15 downto 12) = X"C" else '0';
|
||||
sp_ram_cache_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and cpu_addr(15 downto 11) = "11110" else '0';
|
||||
sp_ram_cache_cpu_access <= '1' when cpu_mreq_n = '0' and (cpu_wr_n = '0' or cpu_rd_n = '0') and cpu_addr(15 downto 11) = "11110" else '0';
|
||||
bg_ram_cpu_access <= '1' when cpu_mreq_n = '0' and (cpu_wr_n = '0' or cpu_rd_n = '0') and cpu_addr(15 downto 11) = "11111" and hcnt(0) = '0' else '0';
|
||||
wram_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and (cpu_addr and x"E000") = x"C000" else '0';
|
||||
sp_ram_cache_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and (cpu_addr and x"E800") = x"E000" else '0';
|
||||
sp_ram_cache_cpu_access <= '1' when cpu_mreq_n = '0' and (cpu_wr_n = '0' or cpu_rd_n = '0') and (cpu_addr and x"E800") = x"E000" else '0';
|
||||
bg_ram_cpu_access <= '1' when cpu_mreq_n = '0' and (cpu_wr_n = '0' or cpu_rd_n = '0') and (cpu_addr and x"E800") = x"E800" and hcnt(0) = '0' else '0';
|
||||
bg_ram_we <= '1' when bg_ram_cpu_access = '1' and cpu_wr_n = '0' else '0';
|
||||
|
||||
ssio_iowe <= '1' when cpu_wr_n = '0' and cpu_ioreq_n = '0' else '0';
|
||||
@ -586,26 +533,15 @@ begin
|
||||
|
||||
if hcnt(0) = '0' then bg_ram_do_r <= bg_ram_do; end if;
|
||||
|
||||
if pix_ena = '1' then
|
||||
|
||||
-- if hcnt(3 downto 0) = "1101" then
|
||||
-- bg_code <= bg_ram_do;
|
||||
-- end if;
|
||||
--
|
||||
-- if hcnt(3 downto 0) = "1111" then
|
||||
-- bg_code_r <= bg_code;
|
||||
-- bg_attr <= bg_ram_do;
|
||||
-- end if;
|
||||
|
||||
if pix_ena = '1' then
|
||||
if hcnt(0) = '1' then
|
||||
case hcnt(3 downto 1) is
|
||||
when "110" => bg_code <= bg_ram_do;
|
||||
when "111" => bg_attr <= bg_ram_do;
|
||||
bg_code_r <= bg_code;
|
||||
when others => null;
|
||||
end case;
|
||||
|
||||
case hcnt(2 downto 1) is
|
||||
end case;
|
||||
case hcnt(2 downto 1) xor (bg_attr(1) & bg_attr(1)) is
|
||||
when "00" => bg_palette_addr <= bg_attr(4 downto 3) & bg_graphx2_do(7 downto 6) & bg_graphx1_do(7 downto 6);
|
||||
when "01" => bg_palette_addr <= bg_attr(4 downto 3) & bg_graphx2_do(5 downto 4) & bg_graphx1_do(5 downto 4);
|
||||
when "10" => bg_palette_addr <= bg_attr(4 downto 3) & bg_graphx2_do(3 downto 2) & bg_graphx1_do(3 downto 2);
|
||||
@ -883,6 +819,7 @@ port map(
|
||||
input_1 => input_1,
|
||||
input_2 => input_2,
|
||||
input_3 => input_3,
|
||||
input_4 => x"FF",
|
||||
|
||||
separate_audio => separate_audio,
|
||||
audio_out_l => audio_out_l,
|
||||
|
||||
@ -67,7 +67,7 @@ port(
|
||||
input_1 : in std_logic_vector(7 downto 0);
|
||||
input_2 : in std_logic_vector(7 downto 0);
|
||||
input_3 : in std_logic_vector(7 downto 0);
|
||||
|
||||
input_4 : in std_logic_vector(7 downto 0);
|
||||
separate_audio : in std_logic;
|
||||
|
||||
audio_out_l : out std_logic_vector(15 downto 0);
|
||||
@ -238,13 +238,13 @@ ay1_bc1 <= not (not ay1_cs or cpu_addr(1) );
|
||||
ay2_bdir <= not (not ay2_cs or cpu_addr(0) );
|
||||
ay2_bc1 <= not (not ay2_cs or cpu_addr(1) );
|
||||
|
||||
ssio_do <= input_0 when main_cpu_addr = X"00" else -- Input 0 -- players, coins, ...
|
||||
input_1 when main_cpu_addr = X"01" else -- Input 1
|
||||
input_2 when main_cpu_addr = X"02" else -- Input 2
|
||||
input_3 when main_cpu_addr = X"03" else -- Input 3 -- sw1 dip
|
||||
x"FF" when main_cpu_addr = X"04" else -- Input 4 -- sw2 dip
|
||||
ssio_status when main_cpu_addr = X"07" else -- ssio status
|
||||
x"FF";
|
||||
ssio_do <= input_0 when main_cpu_addr(2 downto 0) = "000" else -- Input 0 -- players, coins, ...
|
||||
input_1 when main_cpu_addr(2 downto 0) = "001" else -- Input 1
|
||||
input_2 when main_cpu_addr(2 downto 0) = "010" else -- Input 2
|
||||
input_3 when main_cpu_addr(2 downto 0) = "011" else -- Input 3 -- sw1 dip
|
||||
input_4 when main_cpu_addr(2 downto 0) = "100" else -- Input 4
|
||||
ssio_status when main_cpu_addr(2 downto 0) = "111" else -- ssio status
|
||||
x"FF";
|
||||
|
||||
process (clock_snd)
|
||||
begin
|
||||
|
||||
@ -1,17 +1,18 @@
|
||||
---------------------------------------------------------------------------------
|
||||
--
|
||||
-- Arcade: SatansHollow port to MiST by Gehstock
|
||||
-- Arcade: Tron port to MiST by Gehstock
|
||||
-- 13 November 2019
|
||||
--
|
||||
-- VGA Only
|
||||
|
||||
Controls
|
||||
|
||||
Coin : ESC
|
||||
Start : F1 or F2
|
||||
Aim : Button F and G
|
||||
Movement : Joystick or Arrow Keys
|
||||
Fire : Fire Button or Space
|
||||
|
||||
|
||||
-- Some Controls needs a Fix
|
||||
---------------------------------------------------------------------------------
|
||||
-- DE10_lite Top level for Kick (Midway MCR) by Dar (darfpga@aol.fr) (19/10/2019)
|
||||
-- http://darfpga.blogspot.fr
|
||||
|
||||
Binary file not shown.
@ -55,7 +55,7 @@ localparam CONF_STR = {
|
||||
"O6,Service,Off,On;",
|
||||
"O7,Allow Continue,Off,On;",
|
||||
"T0,Reset;",
|
||||
"V,v1.0.",`BUILD_DATE
|
||||
"V,v1.1.",`BUILD_DATE
|
||||
};
|
||||
|
||||
assign LED = ~ioctl_downl;
|
||||
|
||||
@ -2,6 +2,13 @@
|
||||
-- Tron by Dar (darfpga@aol.fr) (09/11/2019)
|
||||
-- http://darfpga.blogspot.fr
|
||||
---------------------------------------------------------------------------------
|
||||
--
|
||||
-- release 01 : improve ssio read input (fix mirror addressing)
|
||||
-- improve memory access (fix mirror addressing)
|
||||
--
|
||||
-- release 00 : initial release
|
||||
--
|
||||
---------------------------------------------------------------------------------
|
||||
-- gen_ram.vhd & io_ps2_keyboard
|
||||
--------------------------------
|
||||
-- Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com)
|
||||
@ -26,12 +33,12 @@
|
||||
-- Coctail mode : NO
|
||||
-- Sound : OK
|
||||
|
||||
-- Use with MAME roms from shollow.zip
|
||||
-- Use with MAME roms from tron.zip
|
||||
--
|
||||
-- Use make_satans_hollow_proms.bat to build vhd file from binaries
|
||||
-- Use make_tron_hollow_proms.bat to build vhd file from binaries
|
||||
-- (CRC list included)
|
||||
|
||||
-- Satans hollow (midway mcr) Hardware caracteristics :
|
||||
-- Tron (midway mcr) Hardware caracteristics :
|
||||
--
|
||||
-- VIDEO : 1xZ80@3MHz CPU accessing its program rom, working ram,
|
||||
-- sprite data ram, I/O, sound board register and trigger.
|
||||
@ -51,7 +58,7 @@
|
||||
|
||||
-- Sprites line buffer rams : 1 scan line delay flip/flop 2x256x8bits
|
||||
--
|
||||
-- SOUND : see satans_hollow_sound_board.vhd
|
||||
-- SOUND : see tron_hollow_sound_board.vhd
|
||||
|
||||
---------------------------------------------------------------------------------
|
||||
-- Schematics remarks :
|
||||
@ -120,6 +127,7 @@
|
||||
--
|
||||
---------------------------------------------------------------------------------
|
||||
|
||||
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.std_logic_unsigned.all;
|
||||
@ -156,6 +164,7 @@ port(
|
||||
buttonf : in std_logic;
|
||||
buttong : in std_logic;
|
||||
buttont : in std_logic;
|
||||
|
||||
left_c : in std_logic;
|
||||
right_c : in std_logic;
|
||||
up_c : in std_logic;
|
||||
@ -243,12 +252,10 @@ architecture struct of satans_hollow is
|
||||
signal bg_code : std_logic_vector(7 downto 0);
|
||||
signal bg_code_r : std_logic_vector(7 downto 0);
|
||||
signal bg_attr : std_logic_vector(7 downto 0);
|
||||
--signal bg_attr_r : std_logic_vector(7 downto 0);
|
||||
|
||||
signal bg_code_line : std_logic_vector(12 downto 0);
|
||||
signal bg_graphx1_do : std_logic_vector( 7 downto 0);
|
||||
signal bg_graphx2_do : std_logic_vector( 7 downto 0);
|
||||
--signal bg_vid : std_logic_vector( 3 downto 0);
|
||||
signal bg_palette_addr : std_logic_vector( 5 downto 0);
|
||||
|
||||
signal sp_ram_cache_addr : std_logic_vector(8 downto 0);
|
||||
@ -397,32 +404,6 @@ begin
|
||||
video_blankn <= '0';
|
||||
if hcnt >= 2+16 and hcnt < 514+16 and
|
||||
vcnt >= 2 and vcnt < 481 then video_blankn <= '1';end if;
|
||||
|
||||
-- -- test pattern
|
||||
--
|
||||
-- video_blankn <= '1';
|
||||
--
|
||||
-- video_r <= "0000";
|
||||
-- video_g <= "0000";
|
||||
-- video_b <= "0000";
|
||||
--
|
||||
-- if hcnt >= 0 and hcnt < 512 and
|
||||
-- vcnt >= 0 and vcnt < 480 then video_b <= "0100"; end if;
|
||||
--
|
||||
-- if hcnt >= 1 and hcnt < 511 and
|
||||
-- vcnt >= 1 and vcnt < 479 then video_r <= "0100"; end if;
|
||||
--
|
||||
-- if hcnt >= 0 and hcnt < 512 and
|
||||
-- vcnt >= 0 and vcnt < 480 then video_g <= "0100"; end if;
|
||||
--
|
||||
-- if hcnt >= 0 and hcnt < 512 and
|
||||
-- vcnt >= 0 and vcnt < 480 and
|
||||
-- hcnt(5 downto 0) = vcnt(5 downto 0) then
|
||||
-- video_r <= "1100";
|
||||
-- video_g <= "1100";
|
||||
-- video_b <= "1100";
|
||||
-- end if;
|
||||
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
@ -441,17 +422,17 @@ input_4 <= '1' & angle_c;
|
||||
------------------------------------------
|
||||
-- cpu data input with address decoding --
|
||||
------------------------------------------
|
||||
cpu_di <= cpu_rom_do when cpu_mreq_n = '0' and cpu_addr(15 downto 12) < X"C" else -- 0000-BFFF
|
||||
wram_do when cpu_mreq_n = '0' and cpu_addr(15 downto 13) = "110" else -- C000-C7FF/C800-CFFF/D000-D7FF/D800-DFFF
|
||||
sp_ram_cache_do when cpu_mreq_n = '0' and cpu_addr(15 downto 11) = "11110" else -- sprite ram F000-F1FF + mirroring adresses
|
||||
bg_ram_do_r when cpu_mreq_n = '0' and cpu_addr(15 downto 11) = "11111" else -- video ram F800-FFFF + mirroring adresses
|
||||
ctc_controler_do when cpu_ioreq_n = '0' and cpu_m1_n = '0' else -- ctc ctrl (interrupt vector)
|
||||
ssio_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 4) = X"0" else
|
||||
ctc_counter_3_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F3" else
|
||||
ctc_counter_2_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F2" else
|
||||
ctc_counter_1_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F1" else
|
||||
ctc_counter_0_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F0" else
|
||||
X"FF";
|
||||
cpu_di <= cpu_rom_do when cpu_mreq_n = '0' and cpu_addr(15 downto 12) < X"C" else -- 0000-BFFF
|
||||
wram_do when cpu_mreq_n = '0' and (cpu_addr and X"E000") = x"C000" else -- C000-C7FF + mirroring 1800
|
||||
sp_ram_cache_do when cpu_mreq_n = '0' and (cpu_addr and x"E800") = x"E000" else -- sprite ram E000-E1FF + mirroring 1600
|
||||
bg_ram_do_r when cpu_mreq_n = '0' and (cpu_addr and x"E800") = x"E800" else -- video ram E800-EFFF + mirroring 1000
|
||||
ctc_controler_do when cpu_ioreq_n = '0' and cpu_m1_n = '0' else -- ctc ctrl (interrupt vector)
|
||||
ssio_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 5) = "000" else -- 0x00-0x1F
|
||||
ctc_counter_3_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F3" else
|
||||
ctc_counter_2_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F2" else
|
||||
ctc_counter_1_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F1" else
|
||||
ctc_counter_0_do when cpu_ioreq_n = '0' and cpu_addr(7 downto 0) = X"F0" else
|
||||
X"FF";
|
||||
|
||||
------------------------------------------------------------------------
|
||||
-- Misc registers : ctc write enable / interrupt acknowledge
|
||||
@ -467,10 +448,10 @@ ctc_int_ack <= '1' when cpu_ioreq_n = '0' and cpu_m1_n = '0' else '0';
|
||||
------------------------------------------
|
||||
-- write enable / ram access from CPU --
|
||||
------------------------------------------
|
||||
wram_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and cpu_addr(15 downto 12) = X"C" else '0';
|
||||
sp_ram_cache_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and cpu_addr(15 downto 11) = "11110" else '0';
|
||||
sp_ram_cache_cpu_access <= '1' when cpu_mreq_n = '0' and (cpu_wr_n = '0' or cpu_rd_n = '0') and cpu_addr(15 downto 11) = "11110" else '0';
|
||||
bg_ram_cpu_access <= '1' when cpu_mreq_n = '0' and (cpu_wr_n = '0' or cpu_rd_n = '0') and cpu_addr(15 downto 11) = "11111" and hcnt(0) = '0' else '0';
|
||||
wram_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and (cpu_addr and x"E000") = x"C000" else '0';
|
||||
sp_ram_cache_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and (cpu_addr and x"E800") = x"E000" else '0';
|
||||
sp_ram_cache_cpu_access <= '1' when cpu_mreq_n = '0' and (cpu_wr_n = '0' or cpu_rd_n = '0') and (cpu_addr and x"E800") = x"E000" else '0';
|
||||
bg_ram_cpu_access <= '1' when cpu_mreq_n = '0' and (cpu_wr_n = '0' or cpu_rd_n = '0') and (cpu_addr and x"E800") = x"E800" and hcnt(0) = '0' else '0';
|
||||
bg_ram_we <= '1' when bg_ram_cpu_access = '1' and cpu_wr_n = '0' else '0';
|
||||
|
||||
ssio_iowe <= '1' when cpu_wr_n = '0' and cpu_ioreq_n = '0' else '0';
|
||||
|
||||
@ -238,14 +238,14 @@ ay1_bc1 <= not (not ay1_cs or cpu_addr(1) );
|
||||
ay2_bdir <= not (not ay2_cs or cpu_addr(0) );
|
||||
ay2_bc1 <= not (not ay2_cs or cpu_addr(1) );
|
||||
|
||||
ssio_do <= input_0 when main_cpu_addr = X"00" else -- Input 0 -- players, coins, ...
|
||||
input_1 when main_cpu_addr = X"01" else -- Input 1
|
||||
input_2 when main_cpu_addr = X"02" else -- Input 2
|
||||
input_3 when main_cpu_addr = X"03" else -- Input 3 -- sw1 dip
|
||||
input_4 when main_cpu_addr = X"04" else -- Input 4
|
||||
ssio_status when main_cpu_addr = X"07" else -- ssio status
|
||||
ssio_do <= input_0 when main_cpu_addr(2 downto 0) = "000" else -- Input 0 -- players, coins, ...
|
||||
input_1 when main_cpu_addr(2 downto 0) = "001" else -- Input 1
|
||||
input_2 when main_cpu_addr(2 downto 0) = "010" else -- Input 2
|
||||
input_3 when main_cpu_addr(2 downto 0) = "011" else -- Input 3 -- sw1 dip
|
||||
input_4 when main_cpu_addr(2 downto 0) = "100" else -- Input 4
|
||||
ssio_status when main_cpu_addr(2 downto 0) = "111" else -- ssio status
|
||||
x"FF";
|
||||
|
||||
|
||||
process (clock_snd)
|
||||
begin
|
||||
if rising_edge(clock_snd) then
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user