Index: ../chameleon/chameleon_c64_joykeyb.vhd
===================================================================
--- ../chameleon/chameleon_c64_joykeyb.vhd	(revision 126)
+++ ../chameleon/chameleon_c64_joykeyb.vhd	(revision 871)
@@ -85,8 +85,13 @@
 	signal cnt : unsigned(3 downto 0) := (others => '0');
 	signal col : integer range 0 to 7 := 0;
 	signal keys_reg : unsigned(63 downto 0) := (others => '1');
+	signal last_keys_reg : unsigned(63 downto 0) := (others => '1');
+	signal approved_keys_reg : unsigned(63 downto 0) := (others => '1');
+	signal joystick1_reg : unsigned(4 downto 0);
+	signal joystick1_prev_reg : unsigned(4 downto 0);
+	signal joystick2_prev_reg : unsigned(4 downto 0);
 begin
-	keys <= keys_reg;
+	keys <= approved_keys_reg;
 	req <= req_reg;
 
 	process(clk)
@@ -193,6 +198,8 @@
 					a <= X"DC00";
 					req_reg <= not req_reg;
 					joystick1 <= d(4 downto 0);
+					joystick1_prev_reg <= joystick1_reg;
+					joystick1_reg <= d(4 downto 0);
 					state <= STORE_JOY2;
 				when STORE_JOY2 =>
 					joystick2 <= d(4 downto 0);
@@ -200,6 +207,12 @@
 					if enable_4player then
 						state <= READ_JOY34;
 					end if;
+					last_keys_reg <= keys_reg;
+					if ((joystick1_reg and d(4 downto 0) and joystick1_prev_reg and joystick2_prev_reg) = "11111" and last_keys_reg = keys_reg) then
+						approved_keys_reg <= keys_reg;
+					end if;
+					joystick2_prev_reg <= d(4 downto 0);
+
 				when READ_JOY34 =>
 					-- read user port for joystick 3 or 4
 					we <= '0';
