1
0
mirror of https://github.com/Gehstock/Mist_FPGA.git synced 2026-03-09 03:59:39 +00:00

Vectrex: use analogue joy signals for pots

This commit is contained in:
Gyorgy Szombathelyi
2019-05-26 22:56:34 +02:00
parent 092e5a92a2
commit ed706428be
3 changed files with 21 additions and 140 deletions

View File

@@ -1,92 +0,0 @@
module keyboard
(
input clk,
input reset,
input ps2_kbd_clk,
input ps2_kbd_data,
output reg[15:0] joystick
);
reg [11:0] shift_reg = 12'hFFF;
wire[11:0] kdata = {ps2_kbd_data,shift_reg[11:1]};
wire [7:0] kcode = kdata[9:2];
reg release_btn = 0;
reg [7:0] code;
reg input_strobe = 0;
always @(negedge clk) begin
reg old_reset = 0;
old_reset <= reset;
if(~old_reset & reset)begin
joystick <= 0;
end
if(input_strobe) begin
case(code)
'h16: joystick[4] <= ~release_btn; // 1
'h1E: joystick[5] <= ~release_btn; // 2
'h26: joystick[6] <= ~release_btn; // 3
'h25: joystick[7] <= ~release_btn; // 4
'h1D: joystick[11] <= ~release_btn; // W
'h1B: joystick[10] <= ~release_btn; // S
'h1C: joystick[9] <= ~release_btn; // A
'h23: joystick[8] <= ~release_btn; // D
'h77: joystick[12] <= ~release_btn; // NUM
'h4A: joystick[13] <= ~release_btn; // /
'h7C: joystick[14] <= ~release_btn; // *
'h7B: joystick[15] <= ~release_btn; // -
'h75: joystick[3] <= ~release_btn; // arrow up
'h72: joystick[2] <= ~release_btn; // arrow down
'h6B: joystick[1] <= ~release_btn; // arrow left
'h74: joystick[0] <= ~release_btn; // arrow right
endcase
end
end
always @(posedge clk) begin
reg [3:0] prev_clk = 0;
reg old_reset = 0;
reg action = 0;
old_reset <= reset;
input_strobe <= 0;
if(~old_reset & reset)begin
prev_clk <= 0;
shift_reg <= 12'hFFF;
end else begin
prev_clk <= {ps2_kbd_clk,prev_clk[3:1]};
if(prev_clk == 1) begin
if (kdata[11] & ^kdata[10:2] & ~kdata[1] & kdata[0]) begin
shift_reg <= 12'hFFF;
if (kcode == 8'he0) ;
// Extended key code follows
else if (kcode == 8'hf0)
// Release code follows
action <= 1;
else begin
// Cancel extended/release flags for next time
action <= 0;
release_btn <= action;
code <= kcode;
input_strobe <= 1;
end
end else begin
shift_reg <= kdata;
end
end
end
end
endmodule

View File

@@ -37,6 +37,8 @@ wire [1:0] switches;
wire [15:0] kbjoy;
wire [7:0] joystick_0;
wire [7:0] joystick_1;
wire [15:0] joy_ana_0;
wire [15:0] joy_ana_1;
wire ypbpr;
wire ps2_kbd_clk, ps2_kbd_data;
wire [7:0] pot_x_1, pot_x_2;
@@ -61,25 +63,6 @@ assign LED = !ioctl_downl;
wire clk_24, clk_12;
wire pll_locked;
always @(clk_24)begin
pot_x_1 = 8'h00;
pot_y_1 = 8'h00;
pot_x_2 = 8'h00;
pot_y_2 = 8'h00;
//
if (joystick_0[1] | kbjoy[1]) pot_x_2 = 8'h80;
if (joystick_0[0] | kbjoy[0]) pot_x_2 = 8'h7F;
if (joystick_0[3] | kbjoy[3]) pot_y_2 = 8'h7F;
if (joystick_0[2] | kbjoy[2]) pot_y_2 = 8'h80;
//Player2
if (joystick_1[1] | kbjoy[9]) pot_x_1 = 8'h80;
if (joystick_1[0] | kbjoy[8]) pot_x_1 = 8'h7F;
if (joystick_1[3] | kbjoy[11]) pot_y_1 = 8'h7F;
if (joystick_1[2] | kbjoy[10]) pot_y_1 = 8'h80;
end
pll pll (
.inclk0 ( CLOCK_27 ),
.areset ( 0 ),
@@ -113,6 +96,11 @@ always @(posedge clk_24) begin
end
end
assign pot_x_1 = status[4] ? joy_ana_1[15:8] : joy_ana_0[15:8];
assign pot_x_2 = status[4] ? joy_ana_0[15:8] : joy_ana_1[15:8];
assign pot_y_1 = status[4] ? ~joy_ana_1[ 7:0] : ~joy_ana_0[ 7:0];
assign pot_y_2 = status[4] ? ~joy_ana_0[ 7:0] : ~joy_ana_1[ 7:0];
vectrex vectrex (
.clock_24 ( clk_24 ),
.clock_12 ( clk_12 ),
@@ -131,28 +119,21 @@ vectrex vectrex (
.cart_addr ( cart_addr ),
.cart_do ( cart_do ),
.cart_rd ( cart_rd ),
.btn11 ( joystick_0[4] | kbjoy[4] | status[4] ? joystick_1[4] : 1'b0),
.btn12 ( joystick_0[5] | kbjoy[5] | status[4] ? joystick_1[5] : 1'b0),
.btn13 ( joystick_0[6] | kbjoy[6] | status[4] ? joystick_1[6] : 1'b0),
.btn14 ( joystick_0[7] | kbjoy[7] | status[4] ? joystick_1[7] : 1'b0),
.pot_x_1 ( pot_x_1 ),
.pot_y_1 ( pot_y_1 ),
.btn21 ( kbjoy[12] | ~status[4] ? joystick_1[4] : 1'b0),
.btn22 ( kbjoy[13] | ~status[4] ? joystick_1[5] : 1'b0),
.btn23 ( kbjoy[14] | ~status[4] ? joystick_1[6] : 1'b0),
.btn24 ( kbjoy[15] | ~status[4] ? joystick_1[7] : 1'b0),
.pot_x_2 ( pot_x_2 ),
.pot_y_2 ( pot_y_2 ),
.btn11 ( status[4] ? joystick_1[4] : joystick_0[4]),
.btn12 ( status[4] ? joystick_1[5] : joystick_0[5]),
.btn13 ( status[4] ? joystick_1[6] : joystick_0[6]),
.btn14 ( status[4] ? joystick_1[7] : joystick_0[7]),
.pot_x_1 ( pot_x_1 ),
.pot_y_1 ( pot_y_1 ),
.btn21 ( status[4] ? joystick_0[4] : joystick_1[4]),
.btn22 ( status[4] ? joystick_0[5] : joystick_1[5]),
.btn23 ( status[4] ? joystick_0[6] : joystick_1[6]),
.btn24 ( status[4] ? joystick_0[7] : joystick_1[7]),
.pot_x_2 ( pot_x_2 ),
.pot_y_2 ( pot_y_2 ),
.leds ( ),
.dbg_cpu_addr ( )
);
// .pot_x_1(joya_0[7:0] ? joya_0[7:0] : {joystick_0[1], {7{joystick_0[0]}}}),
//.pot_y_1(joya_0[15:8] ? ~joya_0[15:8] : {joystick_0[2], {7{joystick_0[3]}}}),
// .pot_x_2(joya_1[7:0] ? joya_1[7:0] : {joystick_1[1], {7{joystick_1[0]}}}),
//.pot_y_2(joya_1[15:8] ? ~joya_1[15:8] : {joystick_1[2], {7{joystick_1[3]}}})
dac dac (
.clk_i ( clk_24 ),
@@ -229,6 +210,8 @@ mist_io #(.STRLEN(($size(CONF_STR)>>3))) mist_io (
.ps2_kbd_data ( ps2_kbd_data ),
.joystick_0 ( joystick_0 ),
.joystick_1 ( joystick_1 ),
.joystick_analog_0( joy_ana_0 ),
.joystick_analog_1( joy_ana_1 ),
.status ( status ),
.ioctl_download( ioctl_downl ),
.ioctl_index ( ioctl_index ),
@@ -237,13 +220,4 @@ mist_io #(.STRLEN(($size(CONF_STR)>>3))) mist_io (
.ioctl_dout ( ioctl_dout )
);
keyboard keyboard (
.clk ( clk_24 ),
.reset ( 0 ),
.ps2_kbd_clk ( ps2_kbd_clk ),
.ps2_kbd_data ( ps2_kbd_data ),
.joystick ( kbjoy )
);
endmodule

View File

@@ -209,7 +209,6 @@ set_global_assignment -name VHDL_FILE rtl/gen_ram.vhd
set_global_assignment -name VHDL_FILE rtl/cpu09l_128a.vhd
set_global_assignment -name VHDL_FILE rtl/dac.vhd
set_global_assignment -name SYSTEMVERILOG_FILE rtl/hq2x.sv
set_global_assignment -name VERILOG_FILE rtl/keyboard.v
set_global_assignment -name VERILOG_FILE rtl/mist_io.v
set_global_assignment -name VERILOG_FILE rtl/pll.v
set_global_assignment -name VERILOG_FILE rtl/mc6809is.v