From c16b473f7a10e630a57ea844bfbfa9022ad2e411 Mon Sep 17 00:00:00 2001 From: Gyorgy Szombathelyi Date: Tue, 31 Dec 2019 14:33:19 +0100 Subject: [PATCH] ATetris: add joystick swap option --- Arcade_MiST/Atari Tetris/Tetris.qsf | 35 ++++++++++++++++++++- Arcade_MiST/Atari Tetris/rtl/Tetris_MiST.sv | 12 ++++--- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/Arcade_MiST/Atari Tetris/Tetris.qsf b/Arcade_MiST/Atari Tetris/Tetris.qsf index e8ed7753..3c7abb8a 100644 --- a/Arcade_MiST/Atari Tetris/Tetris.qsf +++ b/Arcade_MiST/Atari Tetris/Tetris.qsf @@ -41,7 +41,7 @@ # ======================== set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL -set_global_assignment -name LAST_QUARTUS_VERSION 13.1 +set_global_assignment -name LAST_QUARTUS_VERSION "13.1 SP4.26" set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl" # Pin & Location Assignments @@ -117,6 +117,39 @@ set_location_assignment PIN_33 -to SDRAM_CKE set_location_assignment PIN_43 -to SDRAM_CLK set_location_assignment PLL_1 -to "pll:pll|altpll:altpll_component" +set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[*] +set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[*] +set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_BA[0] +set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_BA[1] +set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQMH +set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQML +set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_nRAS +set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_nCAS +set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_nWE +set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_nCS +set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[*] +set_instance_assignment -name FAST_INPUT_REGISTER ON -to SDRAM_DQ[*] + +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_A[*] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_DQ[*] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_BA[*] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_DQML +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_DQMH +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nRAS +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nCAS +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nWE +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nCS +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_CKE +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_CLK +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_R[*] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_G[*] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_B[*] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_HS +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_VS +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to AUDIO_L +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to AUDIO_R +set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to SPI_DO + # Classic Timing Assignments # ========================== set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 diff --git a/Arcade_MiST/Atari Tetris/rtl/Tetris_MiST.sv b/Arcade_MiST/Atari Tetris/rtl/Tetris_MiST.sv index 27331c7b..f9ef58de 100644 --- a/Arcade_MiST/Atari Tetris/rtl/Tetris_MiST.sv +++ b/Arcade_MiST/Atari Tetris/rtl/Tetris_MiST.sv @@ -36,6 +36,7 @@ localparam CONF_STR = { "O2,Service,Off,On;", "O34,Scanlines,Off,25%,50%,75%;", "O5,Blend,Off,On;", + "O6,Joystick Swap,Off,On;", "T0,Reset;", "V,v1.0.",`BUILD_DATE }; @@ -58,8 +59,8 @@ pll_mist pll( wire [31:0] status; wire [1:0] buttons; wire [1:0] switches; -wire [7:0] joystick_0; -wire [7:0] joystick_1; +wire [7:0] joy_0; +wire [7:0] joy_1; wire scandoublerD; wire ypbpr; wire [15:0] audio; @@ -221,8 +222,8 @@ user_io( .key_strobe (key_strobe ), .key_pressed (key_pressed ), .key_code (key_code ), - .joystick_0 (joystick_0 ), - .joystick_1 (joystick_1 ), + .joystick_0 (joy_0 ), + .joystick_1 (joy_1 ), .status (status ) ); @@ -235,6 +236,9 @@ dac_l( .dac_o(AUDIO_L) ); +wire [7:0] joystick_0 = status[6] ? joy_1 : joy_0; +wire [7:0] joystick_1 = status[6] ? joy_0 : joy_1; + wire m_down1 = btn_down | joystick_0[2]; wire m_left1 = btn_left | joystick_0[1]; wire m_right1 = btn_right | joystick_0[0];