mirror of
https://github.com/Gehstock/Mist_FPGA.git
synced 2026-05-01 22:26:35 +00:00
Merge pull request #75 from gyurco/mcrcontrols
Some controls update, fix Pooyan, add DIP switches to Konami Classic
This commit is contained in:
3
Arcade_MiST/.gitignore
vendored
3
Arcade_MiST/.gitignore
vendored
@@ -1,4 +1,5 @@
|
|||||||
Test
|
Test
|
||||||
*.rom
|
*.rom
|
||||||
*.arc
|
*.arc
|
||||||
|
*.ROM
|
||||||
|
*.ARC
|
||||||
|
|||||||
@@ -41,6 +41,11 @@ localparam CONF_STR = {
|
|||||||
"V,v1.0.",`BUILD_DATE
|
"V,v1.0.",`BUILD_DATE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
wire [1:0] scanlines = status[4:3];
|
||||||
|
wire joyswap = status[6];
|
||||||
|
wire rotate = 0;
|
||||||
|
wire blend = status[5];
|
||||||
|
|
||||||
assign LED = ~ioctl_downl;
|
assign LED = ~ioctl_downl;
|
||||||
assign SDRAM_CLK = clk_sd;
|
assign SDRAM_CLK = clk_sd;
|
||||||
assign SDRAM_CKE = 1;
|
assign SDRAM_CKE = 1;
|
||||||
@@ -59,15 +64,37 @@ pll_mist pll(
|
|||||||
wire [31:0] status;
|
wire [31:0] status;
|
||||||
wire [1:0] buttons;
|
wire [1:0] buttons;
|
||||||
wire [1:0] switches;
|
wire [1:0] switches;
|
||||||
wire [7:0] joy_0;
|
wire [7:0] joystick_0;
|
||||||
wire [7:0] joy_1;
|
wire [7:0] joystick_1;
|
||||||
wire scandoublerD;
|
wire scandoublerD;
|
||||||
wire ypbpr;
|
wire ypbpr;
|
||||||
wire [15:0] audio;
|
wire no_csync;
|
||||||
wire hs, vs, hb, vb;
|
wire key_pressed;
|
||||||
wire blankn = ~(hb | vb);
|
wire [7:0] key_code;
|
||||||
wire [2:0] g, r;
|
wire key_strobe;
|
||||||
wire [1:0] b;
|
|
||||||
|
user_io #(
|
||||||
|
.STRLEN(($size(CONF_STR)>>3)))
|
||||||
|
user_io(
|
||||||
|
.clk_sys (clk_sys ),
|
||||||
|
.conf_str (CONF_STR ),
|
||||||
|
.SPI_CLK (SPI_SCK ),
|
||||||
|
.SPI_SS_IO (CONF_DATA0 ),
|
||||||
|
.SPI_MISO (SPI_DO ),
|
||||||
|
.SPI_MOSI (SPI_DI ),
|
||||||
|
.buttons (buttons ),
|
||||||
|
.switches (switches ),
|
||||||
|
.scandoubler_disable (scandoublerD ),
|
||||||
|
.ypbpr (ypbpr ),
|
||||||
|
.no_csync (no_csync ),
|
||||||
|
.key_strobe (key_strobe ),
|
||||||
|
.key_pressed (key_pressed ),
|
||||||
|
.key_code (key_code ),
|
||||||
|
.joystick_0 (joystick_0 ),
|
||||||
|
.joystick_1 (joystick_1 ),
|
||||||
|
.status (status )
|
||||||
|
);
|
||||||
|
|
||||||
wire [15:0] rom_addr;
|
wire [15:0] rom_addr;
|
||||||
wire [15:0] rom_do;
|
wire [15:0] rom_do;
|
||||||
wire [15:0] gfx_addr;
|
wire [15:0] gfx_addr;
|
||||||
@@ -144,7 +171,12 @@ always @(posedge clk_sd) begin
|
|||||||
reset <= status[0] | buttons[1] | ~rom_loaded;
|
reset <= status[0] | buttons[1] | ~rom_loaded;
|
||||||
end
|
end
|
||||||
|
|
||||||
wire [10:0] INP = ~{status[2],1'b1, btn_coin, m_left2, m_right2, m_down2, m_fire2, m_left1, m_right1, m_down1, m_fire1};
|
wire [10:0] INP = ~{status[2],1'b1, m_coin1 | m_coin2, m_left2, m_right2, m_down2, m_fire2A, m_left, m_right, m_down, m_fireA};
|
||||||
|
wire [15:0] audio;
|
||||||
|
wire hs, vs, hb, vb;
|
||||||
|
wire blankn = ~(hb | vb);
|
||||||
|
wire [2:0] g, r;
|
||||||
|
wire [1:0] b;
|
||||||
|
|
||||||
FPGA_ATetris FPGA_ATetris(
|
FPGA_ATetris FPGA_ATetris(
|
||||||
.MCLK(clk_sys), // 14.318MHz
|
.MCLK(clk_sys), // 14.318MHz
|
||||||
@@ -200,33 +232,13 @@ mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video(
|
|||||||
.VGA_VS ( VGA_VS ),
|
.VGA_VS ( VGA_VS ),
|
||||||
.VGA_HS ( VGA_HS ),
|
.VGA_HS ( VGA_HS ),
|
||||||
.ce_divider ( 1'b1 ),
|
.ce_divider ( 1'b1 ),
|
||||||
.blend ( status[5] ),
|
.blend ( blend ),
|
||||||
|
.no_csync ( no_csync ),
|
||||||
.scandoubler_disable(scandoublerD ),
|
.scandoubler_disable(scandoublerD ),
|
||||||
.scanlines ( status[4:3] ),
|
.scanlines ( scanlines ),
|
||||||
.ypbpr ( ypbpr )
|
.ypbpr ( ypbpr )
|
||||||
);
|
);
|
||||||
|
|
||||||
user_io #(
|
|
||||||
.STRLEN(($size(CONF_STR)>>3)))
|
|
||||||
user_io(
|
|
||||||
.clk_sys (clk_sys ),
|
|
||||||
.conf_str (CONF_STR ),
|
|
||||||
.SPI_CLK (SPI_SCK ),
|
|
||||||
.SPI_SS_IO (CONF_DATA0 ),
|
|
||||||
.SPI_MISO (SPI_DO ),
|
|
||||||
.SPI_MOSI (SPI_DI ),
|
|
||||||
.buttons (buttons ),
|
|
||||||
.switches (switches ),
|
|
||||||
.scandoubler_disable (scandoublerD ),
|
|
||||||
.ypbpr (ypbpr ),
|
|
||||||
.key_strobe (key_strobe ),
|
|
||||||
.key_pressed (key_pressed ),
|
|
||||||
.key_code (key_code ),
|
|
||||||
.joystick_0 (joy_0 ),
|
|
||||||
.joystick_1 (joy_1 ),
|
|
||||||
.status (status )
|
|
||||||
);
|
|
||||||
|
|
||||||
dac #(
|
dac #(
|
||||||
.C_bits(16))
|
.C_bits(16))
|
||||||
dac_l(
|
dac_l(
|
||||||
@@ -236,49 +248,24 @@ dac_l(
|
|||||||
.dac_o(AUDIO_L)
|
.dac_o(AUDIO_L)
|
||||||
);
|
);
|
||||||
|
|
||||||
wire [7:0] joystick_0 = status[6] ? joy_1 : joy_0;
|
wire m_up, m_down, m_left, m_right, m_fireA, m_fireB, m_fireC, m_fireD;
|
||||||
wire [7:0] joystick_1 = status[6] ? joy_0 : joy_1;
|
wire m_up2, m_down2, m_left2, m_right2, m_fire2A, m_fire2B, m_fire2C, m_fire2D;
|
||||||
|
wire m_tilt, m_coin1, m_coin2, m_coin3, m_coin4, m_one_player, m_two_players, m_three_players, m_four_players;
|
||||||
|
|
||||||
wire m_down1 = btn_down | joystick_0[2];
|
arcade_inputs inputs (
|
||||||
wire m_left1 = btn_left | joystick_0[1];
|
.clk ( clk_sys ),
|
||||||
wire m_right1 = btn_right | joystick_0[0];
|
.key_strobe ( key_strobe ),
|
||||||
wire m_fire1 = btn_fire1 | joystick_0[4];
|
.key_pressed ( key_pressed ),
|
||||||
|
.key_code ( key_code ),
|
||||||
wire m_down2 = joystick_1[2];
|
.joystick_0 ( joystick_0 ),
|
||||||
wire m_left2 = joystick_1[1];
|
.joystick_1 ( joystick_1 ),
|
||||||
wire m_right2 = joystick_1[0];
|
.rotate ( rotate ),
|
||||||
wire m_fire2 = joystick_1[4];
|
.orientation ( 2'b10 ),
|
||||||
|
.joyswap ( joyswap ),
|
||||||
|
.oneplayer ( 1'b0 ),
|
||||||
//reg btn_one_player = 0;
|
.controls ( {m_tilt, m_coin4, m_coin3, m_coin2, m_coin1, m_four_players, m_three_players, m_two_players, m_one_player} ),
|
||||||
//reg btn_two_players = 0;
|
.player1 ( {m_fireD, m_fireC, m_fireB, m_fireA, m_up, m_down, m_left, m_right} ),
|
||||||
reg btn_left = 0;
|
.player2 ( {m_fire2D, m_fire2C, m_fire2B, m_fire2A, m_up2, m_down2, m_left2, m_right2} )
|
||||||
reg btn_right = 0;
|
);
|
||||||
reg btn_down = 0;
|
|
||||||
//reg btn_up = 0;
|
|
||||||
reg btn_fire1 = 0;
|
|
||||||
//reg btn_fire2 = 0;
|
|
||||||
//reg btn_fire3 = 0;
|
|
||||||
reg btn_coin = 0;
|
|
||||||
wire key_pressed;
|
|
||||||
wire [7:0] key_code;
|
|
||||||
wire key_strobe;
|
|
||||||
|
|
||||||
always @(posedge clk_sys) begin
|
|
||||||
if(key_strobe) begin
|
|
||||||
case(key_code)
|
|
||||||
// 'h75: btn_up <= key_pressed; // up
|
|
||||||
'h72: btn_down <= key_pressed; // down
|
|
||||||
'h6B: btn_left <= key_pressed; // left
|
|
||||||
'h74: btn_right <= key_pressed; // right
|
|
||||||
'h76: btn_coin <= key_pressed; // ESC
|
|
||||||
// 'h05: btn_one_player <= key_pressed; // F1
|
|
||||||
// 'h06: btn_two_players <= key_pressed; // F2
|
|
||||||
// 'h14: btn_fire3 <= key_pressed; // ctrl
|
|
||||||
// 'h11: btn_fire2 <= key_pressed; // alt
|
|
||||||
'h29: btn_fire1 <= key_pressed; // Space
|
|
||||||
endcase
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|||||||
@@ -35,6 +35,10 @@ localparam CONF_STR = {
|
|||||||
"O2,Rotate Controls,Off,On;",
|
"O2,Rotate Controls,Off,On;",
|
||||||
"O34,Scanlines,Off,25%,50%,75%;",
|
"O34,Scanlines,Off,25%,50%,75%;",
|
||||||
"O5,Blend,Off,On;",
|
"O5,Blend,Off,On;",
|
||||||
|
"O67,Lives,3,4,5,Unl.;",
|
||||||
|
"O8,Bonus Life,50K 80K+,30K 70K+;",
|
||||||
|
"O9B,Difficulty,1,2,3,4,5,6,7,8;",
|
||||||
|
"OC,Demo Sounds,Off,On;",
|
||||||
"T0,Reset;",
|
"T0,Reset;",
|
||||||
"V,v1.15.",`BUILD_DATE
|
"V,v1.15.",`BUILD_DATE
|
||||||
};
|
};
|
||||||
@@ -42,6 +46,10 @@ localparam CONF_STR = {
|
|||||||
wire rotate = status[2];
|
wire rotate = status[2];
|
||||||
wire [1:0] scanlines = status[4:3];
|
wire [1:0] scanlines = status[4:3];
|
||||||
wire blend = status[5];
|
wire blend = status[5];
|
||||||
|
wire [1:0] lives = status[7:6];
|
||||||
|
wire bonus = status[8];
|
||||||
|
wire [2:0] difficulty = status[11:9];
|
||||||
|
wire demosnd = status[12];
|
||||||
|
|
||||||
assign LED = 1;
|
assign LED = 1;
|
||||||
assign AUDIO_R = AUDIO_L;
|
assign AUDIO_R = AUDIO_L;
|
||||||
@@ -60,16 +68,35 @@ pll pll(
|
|||||||
wire [31:0] status;
|
wire [31:0] status;
|
||||||
wire [1:0] buttons;
|
wire [1:0] buttons;
|
||||||
wire [1:0] switches;
|
wire [1:0] switches;
|
||||||
wire [11:0] kbjoy;
|
|
||||||
wire [7:0] joystick_0;
|
wire [7:0] joystick_0;
|
||||||
wire [7:0] joystick_1;
|
wire [7:0] joystick_1;
|
||||||
wire scandoublerD;
|
wire scandoublerD;
|
||||||
wire ypbpr;
|
wire ypbpr;
|
||||||
wire [10:0] audio;
|
wire no_csync;
|
||||||
wire hs, vs;
|
wire key_strobe;
|
||||||
wire blankn;
|
wire key_pressed;
|
||||||
wire [2:0] r,g;
|
wire [7:0] key_code;
|
||||||
wire [1:0] b;
|
|
||||||
|
user_io #(.STRLEN(($size(CONF_STR)>>3)))user_io(
|
||||||
|
.clk_sys (clock_12 ),
|
||||||
|
.conf_str (CONF_STR ),
|
||||||
|
.SPI_CLK (SPI_SCK ),
|
||||||
|
.SPI_SS_IO (CONF_DATA0 ),
|
||||||
|
.SPI_MISO (SPI_DO ),
|
||||||
|
.SPI_MOSI (SPI_DI ),
|
||||||
|
.buttons (buttons ),
|
||||||
|
.switches (switches ),
|
||||||
|
.scandoubler_disable (scandoublerD ),
|
||||||
|
.ypbpr (ypbpr ),
|
||||||
|
.no_csync (no_csync ),
|
||||||
|
.key_strobe (key_strobe ),
|
||||||
|
.key_pressed (key_pressed ),
|
||||||
|
.key_code (key_code ),
|
||||||
|
.joystick_0 (joystick_0 ),
|
||||||
|
.joystick_1 (joystick_1 ),
|
||||||
|
.status (status )
|
||||||
|
);
|
||||||
|
|
||||||
wire [14:0] rom_addr;
|
wire [14:0] rom_addr;
|
||||||
wire [15:0] rom_do;
|
wire [15:0] rom_do;
|
||||||
wire rom_rd;
|
wire rom_rd;
|
||||||
@@ -78,12 +105,9 @@ wire [7:0] ioctl_index;
|
|||||||
wire ioctl_wr;
|
wire ioctl_wr;
|
||||||
wire [24:0] ioctl_addr;
|
wire [24:0] ioctl_addr;
|
||||||
wire [7:0] ioctl_dout;
|
wire [7:0] ioctl_dout;
|
||||||
wire key_strobe;
|
|
||||||
wire key_pressed;
|
|
||||||
wire [7:0] key_code;
|
|
||||||
|
|
||||||
data_io data_io(
|
data_io data_io(
|
||||||
.clk_sys ( clock_48 ),
|
.clk_sys ( clock_48 ),
|
||||||
.SPI_SCK ( SPI_SCK ),
|
.SPI_SCK ( SPI_SCK ),
|
||||||
.SPI_SS2 ( SPI_SS2 ),
|
.SPI_SS2 ( SPI_SS2 ),
|
||||||
.SPI_DI ( SPI_DI ),
|
.SPI_DI ( SPI_DI ),
|
||||||
@@ -93,7 +117,7 @@ data_io data_io(
|
|||||||
.ioctl_addr ( ioctl_addr ),
|
.ioctl_addr ( ioctl_addr ),
|
||||||
.ioctl_dout ( ioctl_dout )
|
.ioctl_dout ( ioctl_dout )
|
||||||
);
|
);
|
||||||
|
|
||||||
sdram rom(
|
sdram rom(
|
||||||
.*,
|
.*,
|
||||||
.init ( ~pll_locked ),
|
.init ( ~pll_locked ),
|
||||||
@@ -117,6 +141,12 @@ always @(posedge clock_12) begin
|
|||||||
reset <= status[0] | buttons[1] | ~rom_loaded;
|
reset <= status[0] | buttons[1] | ~rom_loaded;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
wire [10:0] audio;
|
||||||
|
wire hs, vs;
|
||||||
|
wire blankn;
|
||||||
|
wire [2:0] r,g;
|
||||||
|
wire [1:0] b;
|
||||||
|
|
||||||
pooyan pooyan(
|
pooyan pooyan(
|
||||||
.clock_6(clock_6),
|
.clock_6(clock_6),
|
||||||
.clock_12(clock_12),
|
.clock_12(clock_12),
|
||||||
@@ -132,8 +162,8 @@ pooyan pooyan(
|
|||||||
.roms_addr ( rom_addr ),
|
.roms_addr ( rom_addr ),
|
||||||
.roms_do ( rom_do[7:0] ),
|
.roms_do ( rom_do[7:0] ),
|
||||||
.roms_rd ( rom_rd ),
|
.roms_rd ( rom_rd ),
|
||||||
.dip_switch_1("11111111"),// Coinage_B / Coinage_A
|
.dip_switch_1(8'b11111111),// Coinage_B / Coinage_A
|
||||||
.dip_switch_2("11111011"),// Sound(8)/Difficulty(7-5)/Bonus(4)/Cocktail(3)/lives(2-1)
|
.dip_switch_2(~{demosnd, difficulty, bonus, 1'b1, lives}),// Sound(8)/Difficulty(7-5)/Bonus(4)/Cocktail(3)/lives(2-1)
|
||||||
.start2(m_two_players),
|
.start2(m_two_players),
|
||||||
.start1(m_one_player),
|
.start1(m_one_player),
|
||||||
.coin1(m_coin1),
|
.coin1(m_coin1),
|
||||||
@@ -149,8 +179,7 @@ pooyan pooyan(
|
|||||||
.up2(m_up2)
|
.up2(m_up2)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video(
|
||||||
mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video(//Wrong Colors have no Idea
|
|
||||||
.clk_sys ( clock_48 ),
|
.clk_sys ( clock_48 ),
|
||||||
.SPI_SCK ( SPI_SCK ),
|
.SPI_SCK ( SPI_SCK ),
|
||||||
.SPI_SS3 ( SPI_SS3 ),
|
.SPI_SS3 ( SPI_SS3 ),
|
||||||
@@ -169,32 +198,14 @@ mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video(//Wrong Colors have
|
|||||||
.scandoubler_disable( scandoublerD ),
|
.scandoubler_disable( scandoublerD ),
|
||||||
.blend ( blend ),
|
.blend ( blend ),
|
||||||
.scanlines ( scanlines ),
|
.scanlines ( scanlines ),
|
||||||
.ypbpr ( ypbpr )
|
.ypbpr ( ypbpr ),
|
||||||
|
.no_csync ( no_csync )
|
||||||
);
|
);
|
||||||
|
|
||||||
user_io #(.STRLEN(($size(CONF_STR)>>3)))user_io(
|
dac #(.C_bits(11))dac(
|
||||||
.clk_sys (clock_12 ),
|
|
||||||
.conf_str (CONF_STR ),
|
|
||||||
.SPI_CLK (SPI_SCK ),
|
|
||||||
.SPI_SS_IO (CONF_DATA0 ),
|
|
||||||
.SPI_MISO (SPI_DO ),
|
|
||||||
.SPI_MOSI (SPI_DI ),
|
|
||||||
.buttons (buttons ),
|
|
||||||
.switches (switches ),
|
|
||||||
.scandoubler_disable (scandoublerD ),
|
|
||||||
.ypbpr (ypbpr ),
|
|
||||||
.key_strobe (key_strobe ),
|
|
||||||
.key_pressed (key_pressed ),
|
|
||||||
.key_code (key_code ),
|
|
||||||
.joystick_0 (joystick_0 ),
|
|
||||||
.joystick_1 (joystick_1 ),
|
|
||||||
.status (status )
|
|
||||||
);
|
|
||||||
|
|
||||||
dac #(.C_bits(16))dac(
|
|
||||||
.clk_i(clock_14),
|
.clk_i(clock_14),
|
||||||
.res_n_i(1),
|
.res_n_i(1),
|
||||||
.dac_i({audio, 5'b00000}),
|
.dac_i(audio),
|
||||||
.dac_o(AUDIO_L)
|
.dac_o(AUDIO_L)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -204,19 +215,19 @@ wire m_up2, m_down2, m_left2, m_right2, m_fire2A, m_fire2B, m_fire2C, m_fire2D,
|
|||||||
wire m_tilt, m_coin1, m_coin2, m_coin3, m_coin4, m_one_player, m_two_players, m_three_players, m_four_players;
|
wire m_tilt, m_coin1, m_coin2, m_coin3, m_coin4, m_one_player, m_two_players, m_three_players, m_four_players;
|
||||||
|
|
||||||
arcade_inputs inputs (
|
arcade_inputs inputs (
|
||||||
.clk ( clock_12 ),
|
.clk ( clock_12 ),
|
||||||
.key_strobe ( key_strobe ),
|
.key_strobe ( key_strobe ),
|
||||||
.key_pressed ( key_pressed ),
|
.key_pressed ( key_pressed ),
|
||||||
.key_code ( key_code ),
|
.key_code ( key_code ),
|
||||||
.joystick_0 ( joystick_0 ),
|
.joystick_0 ( joystick_0 ),
|
||||||
.joystick_1 ( joystick_1 ),
|
.joystick_1 ( joystick_1 ),
|
||||||
.rotate ( rotate ),
|
.rotate ( rotate ),
|
||||||
.orientation ( 2'b11 ),
|
.orientation ( 2'b11 ),
|
||||||
.joyswap ( 1'b0 ),
|
.joyswap ( 1'b0 ),
|
||||||
.oneplayer ( 1'b1 ),
|
.oneplayer ( 1'b1 ),
|
||||||
.controls ( {m_tilt, m_coin4, m_coin3, m_coin2, m_coin1, m_four_players, m_three_players, m_two_players, m_one_player} ),
|
.controls ( {m_tilt, m_coin4, m_coin3, m_coin2, m_coin1, m_four_players, m_three_players, m_two_players, m_one_player} ),
|
||||||
.player1 ( {m_fireF, m_fireE, m_fireD, m_fireC, m_fireB, m_fireA, m_up, m_down, m_left, m_right} ),
|
.player1 ( {m_fireF, m_fireE, m_fireD, m_fireC, m_fireB, m_fireA, m_up, m_down, m_left, m_right} ),
|
||||||
.player2 ( {m_fire2F, m_fire2E, m_fire2D, m_fire2C, m_fire2B, m_fire2A, m_up2, m_down2, m_left2, m_right2} )
|
.player2 ( {m_fire2F, m_fire2E, m_fire2D, m_fire2C, m_fire2B, m_fire2A, m_up2, m_down2, m_left2, m_right2} )
|
||||||
);
|
);
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|||||||
@@ -59,6 +59,9 @@ localparam CONF_STR = {
|
|||||||
"O2,Rotate Controls,Off,On;",
|
"O2,Rotate Controls,Off,On;",
|
||||||
"O34,Scanlines,Off,25%,50%,75%;",
|
"O34,Scanlines,Off,25%,50%,75%;",
|
||||||
"O5,Blend,Off,On;",
|
"O5,Blend,Off,On;",
|
||||||
|
"O6,Initial Energy,4,6;",
|
||||||
|
"O78,Lives,3,4,5,6;",
|
||||||
|
"O9,Stop at Junctions,Off,On;",
|
||||||
"T0,Reset;",
|
"T0,Reset;",
|
||||||
"V,v1.15.",`BUILD_DATE
|
"V,v1.15.",`BUILD_DATE
|
||||||
};
|
};
|
||||||
@@ -66,6 +69,9 @@ localparam CONF_STR = {
|
|||||||
wire rotate = status[2];
|
wire rotate = status[2];
|
||||||
wire [1:0] scanlines = status[4:3];
|
wire [1:0] scanlines = status[4:3];
|
||||||
wire blend = status[5];
|
wire blend = status[5];
|
||||||
|
wire energy = status[6];
|
||||||
|
wire [1:0] lives = ~status[8:7];
|
||||||
|
wire stpatjunct = ~status[9];
|
||||||
|
|
||||||
assign LED = 1;
|
assign LED = 1;
|
||||||
assign AUDIO_R = AUDIO_L;
|
assign AUDIO_R = AUDIO_L;
|
||||||
@@ -88,12 +94,31 @@ wire [7:0] joystick_0;
|
|||||||
wire [7:0] joystick_1;
|
wire [7:0] joystick_1;
|
||||||
wire scandoublerD;
|
wire scandoublerD;
|
||||||
wire ypbpr;
|
wire ypbpr;
|
||||||
reg [10:0] audio;
|
wire no_csync;
|
||||||
wire hb, vb;
|
wire key_strobe;
|
||||||
wire blankn = ~(hb | vb);
|
wire key_pressed;
|
||||||
wire ce_vid;
|
wire [7:0] key_code;
|
||||||
wire hs, vs;
|
|
||||||
wire [4:0] r,g,b;
|
user_io #(.STRLEN(($size(CONF_STR)>>3)))user_io(
|
||||||
|
.clk_sys (clock_12 ),
|
||||||
|
.conf_str (CONF_STR ),
|
||||||
|
.SPI_CLK (SPI_SCK ),
|
||||||
|
.SPI_SS_IO (CONF_DATA0 ),
|
||||||
|
.SPI_MISO (SPI_DO ),
|
||||||
|
.SPI_MOSI (SPI_DI ),
|
||||||
|
.buttons (buttons ),
|
||||||
|
.switches (switches ),
|
||||||
|
.scandoubler_disable (scandoublerD ),
|
||||||
|
.ypbpr (ypbpr ),
|
||||||
|
.no_csync (no_csync ),
|
||||||
|
.key_strobe (key_strobe ),
|
||||||
|
.key_pressed (key_pressed ),
|
||||||
|
.key_code (key_code ),
|
||||||
|
.joystick_0 (joystick_0 ),
|
||||||
|
.joystick_1 (joystick_1 ),
|
||||||
|
.status (status )
|
||||||
|
);
|
||||||
|
|
||||||
wire [14:0] rom_addr;
|
wire [14:0] rom_addr;
|
||||||
wire [15:0] rom_do;
|
wire [15:0] rom_do;
|
||||||
wire rom_rd;
|
wire rom_rd;
|
||||||
@@ -102,12 +127,9 @@ wire [7:0] ioctl_index;
|
|||||||
wire ioctl_wr;
|
wire ioctl_wr;
|
||||||
wire [24:0] ioctl_addr;
|
wire [24:0] ioctl_addr;
|
||||||
wire [7:0] ioctl_dout;
|
wire [7:0] ioctl_dout;
|
||||||
wire key_strobe;
|
|
||||||
wire key_pressed;
|
|
||||||
wire [7:0] key_code;
|
|
||||||
|
|
||||||
data_io data_io(
|
data_io data_io(
|
||||||
.clk_sys ( clock_48 ),
|
.clk_sys ( clock_48 ),
|
||||||
.SPI_SCK ( SPI_SCK ),
|
.SPI_SCK ( SPI_SCK ),
|
||||||
.SPI_SS2 ( SPI_SS2 ),
|
.SPI_SS2 ( SPI_SS2 ),
|
||||||
.SPI_DI ( SPI_DI ),
|
.SPI_DI ( SPI_DI ),
|
||||||
@@ -140,6 +162,13 @@ always @(posedge clock_12) begin
|
|||||||
reset <= status[0] | buttons[1] | ~rom_loaded;
|
reset <= status[0] | buttons[1] | ~rom_loaded;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
reg [10:0] audio;
|
||||||
|
wire hb, vb;
|
||||||
|
wire blankn = ~(hb | vb);
|
||||||
|
wire ce_vid;
|
||||||
|
wire hs, vs;
|
||||||
|
wire [4:0] r,g,b;
|
||||||
|
|
||||||
power_surge power_surge(
|
power_surge power_surge(
|
||||||
.clock_6(clock_6),
|
.clock_6(clock_6),
|
||||||
.clock_12(clock_12),
|
.clock_12(clock_12),
|
||||||
@@ -156,12 +185,12 @@ power_surge power_surge(
|
|||||||
.roms_addr(rom_addr),
|
.roms_addr(rom_addr),
|
||||||
.roms_do(rom_do[7:0]),
|
.roms_do(rom_do[7:0]),
|
||||||
.roms_rd(rom_rd),
|
.roms_rd(rom_rd),
|
||||||
.dip_switch_1(8'b0111_1000), // Cabinet Unknown Lives Lives Initial_Energy Unknown Unknown Unknown
|
.dip_switch_1({2'b11,lives,energy,3'b000}), // Cabinet Unknown Lives Lives Initial_Energy Unknown Unknown Unknown
|
||||||
.dip_switch_2(8'b1110_0000), // Stop_at_Junctions, Unknown, Unknown, Cheat, Coin_B Coin_B Coin_A Coin_A
|
.dip_switch_2({stpatjunct,7'b110_1111}), // Stop_at_Junctions, Unknown, Unknown, Cheat, Coin_B Coin_B Coin_A Coin_A
|
||||||
.start2(m_two_players),
|
.start2(m_two_players),
|
||||||
.start1(m_one_player),
|
.start1(m_one_player),
|
||||||
.coin1(m_coin1),
|
.coin1(m_coin1),
|
||||||
|
|
||||||
.fire1(m_fireA),
|
.fire1(m_fireA),
|
||||||
.right1(m_right),
|
.right1(m_right),
|
||||||
.left1(m_left),
|
.left1(m_left),
|
||||||
@@ -174,7 +203,7 @@ power_surge power_surge(
|
|||||||
.up2(m_up2)
|
.up2(m_up2)
|
||||||
);
|
);
|
||||||
|
|
||||||
mist_video #(.COLOR_DEPTH(5), .SD_HCNT_WIDTH(10)) mist_video(//Wrong Colors have no Idea
|
mist_video #(.COLOR_DEPTH(5), .SD_HCNT_WIDTH(10)) mist_video(
|
||||||
.clk_sys ( clock_48 ),
|
.clk_sys ( clock_48 ),
|
||||||
.SPI_SCK ( SPI_SCK ),
|
.SPI_SCK ( SPI_SCK ),
|
||||||
.SPI_SS3 ( SPI_SS3 ),
|
.SPI_SS3 ( SPI_SS3 ),
|
||||||
@@ -193,32 +222,14 @@ mist_video #(.COLOR_DEPTH(5), .SD_HCNT_WIDTH(10)) mist_video(//Wrong Colors have
|
|||||||
.scandoubler_disable( scandoublerD ),
|
.scandoubler_disable( scandoublerD ),
|
||||||
.scanlines ( scanlines ),
|
.scanlines ( scanlines ),
|
||||||
.blend ( blend ),
|
.blend ( blend ),
|
||||||
.ypbpr ( ypbpr )
|
.ypbpr ( ypbpr ),
|
||||||
|
.no_csync ( no_csync )
|
||||||
);
|
);
|
||||||
|
|
||||||
user_io #(.STRLEN(($size(CONF_STR)>>3)))user_io(
|
dac #(.C_bits(11))dac(
|
||||||
.clk_sys (clock_12 ),
|
|
||||||
.conf_str (CONF_STR ),
|
|
||||||
.SPI_CLK (SPI_SCK ),
|
|
||||||
.SPI_SS_IO (CONF_DATA0 ),
|
|
||||||
.SPI_MISO (SPI_DO ),
|
|
||||||
.SPI_MOSI (SPI_DI ),
|
|
||||||
.buttons (buttons ),
|
|
||||||
.switches (switches ),
|
|
||||||
.scandoubler_disable (scandoublerD ),
|
|
||||||
.ypbpr (ypbpr ),
|
|
||||||
.key_strobe (key_strobe ),
|
|
||||||
.key_pressed (key_pressed ),
|
|
||||||
.key_code (key_code ),
|
|
||||||
.joystick_0 (joystick_0 ),
|
|
||||||
.joystick_1 (joystick_1 ),
|
|
||||||
.status (status )
|
|
||||||
);
|
|
||||||
|
|
||||||
dac #(.C_bits(16))dac(
|
|
||||||
.clk_i(clock_14),
|
.clk_i(clock_14),
|
||||||
.res_n_i(1),
|
.res_n_i(1),
|
||||||
.dac_i({audio, 5'b00000}),
|
.dac_i(audio),
|
||||||
.dac_o(AUDIO_L)
|
.dac_o(AUDIO_L)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -59,6 +59,10 @@ localparam CONF_STR = {
|
|||||||
"O2,Rotate Controls,Off,On;",
|
"O2,Rotate Controls,Off,On;",
|
||||||
"O34,Scanlines,Off,25%,50%,75%;",
|
"O34,Scanlines,Off,25%,50%,75%;",
|
||||||
"O5,Blend,Off,On;",
|
"O5,Blend,Off,On;",
|
||||||
|
"O67,Lives,3,4,5,Unl.;",
|
||||||
|
"O8,Bonus Life,10K 50k,20K 60K;",
|
||||||
|
"O9B,Difficulty,1,2,3,4,5,6,7,8;",
|
||||||
|
"OC,Demo Sounds,Off,On;",
|
||||||
"T0,Reset;",
|
"T0,Reset;",
|
||||||
"V,v1.15.",`BUILD_DATE
|
"V,v1.15.",`BUILD_DATE
|
||||||
};
|
};
|
||||||
@@ -66,6 +70,10 @@ localparam CONF_STR = {
|
|||||||
wire rotate = status[2];
|
wire rotate = status[2];
|
||||||
wire [1:0] scanlines = status[4:3];
|
wire [1:0] scanlines = status[4:3];
|
||||||
wire blend = status[5];
|
wire blend = status[5];
|
||||||
|
wire [1:0] lives = status[7:6];
|
||||||
|
wire bonus = status[8];
|
||||||
|
wire [2:0] difficulty = status[11:9];
|
||||||
|
wire demosnd = status[12];
|
||||||
|
|
||||||
assign LED = 1;
|
assign LED = 1;
|
||||||
assign AUDIO_R = AUDIO_L;
|
assign AUDIO_R = AUDIO_L;
|
||||||
@@ -88,9 +96,31 @@ wire [7:0] joystick_0;
|
|||||||
wire [7:0] joystick_1;
|
wire [7:0] joystick_1;
|
||||||
wire scandoublerD;
|
wire scandoublerD;
|
||||||
wire ypbpr;
|
wire ypbpr;
|
||||||
reg [10:0] audio;
|
wire no_csync;
|
||||||
wire hs, vs;
|
wire key_strobe;
|
||||||
wire [4:0] r,g,b;
|
wire key_pressed;
|
||||||
|
wire [7:0] key_code;
|
||||||
|
|
||||||
|
user_io #(.STRLEN(($size(CONF_STR)>>3)))user_io(
|
||||||
|
.clk_sys (clock_12 ),
|
||||||
|
.conf_str (CONF_STR ),
|
||||||
|
.SPI_CLK (SPI_SCK ),
|
||||||
|
.SPI_SS_IO (CONF_DATA0 ),
|
||||||
|
.SPI_MISO (SPI_DO ),
|
||||||
|
.SPI_MOSI (SPI_DI ),
|
||||||
|
.buttons (buttons ),
|
||||||
|
.switches (switches ),
|
||||||
|
.scandoubler_disable (scandoublerD ),
|
||||||
|
.ypbpr (ypbpr ),
|
||||||
|
.no_csync (no_csync ),
|
||||||
|
.key_strobe (key_strobe ),
|
||||||
|
.key_pressed (key_pressed ),
|
||||||
|
.key_code (key_code ),
|
||||||
|
.joystick_0 (joystick_0 ),
|
||||||
|
.joystick_1 (joystick_1 ),
|
||||||
|
.status (status )
|
||||||
|
);
|
||||||
|
|
||||||
wire [14:0] rom_addr;
|
wire [14:0] rom_addr;
|
||||||
wire [15:0] rom_do;
|
wire [15:0] rom_do;
|
||||||
wire rom_rd;
|
wire rom_rd;
|
||||||
@@ -99,9 +129,6 @@ wire [7:0] ioctl_index;
|
|||||||
wire ioctl_wr;
|
wire ioctl_wr;
|
||||||
wire [24:0] ioctl_addr;
|
wire [24:0] ioctl_addr;
|
||||||
wire [7:0] ioctl_dout;
|
wire [7:0] ioctl_dout;
|
||||||
wire key_strobe;
|
|
||||||
wire key_pressed;
|
|
||||||
wire [7:0] key_code;
|
|
||||||
|
|
||||||
data_io data_io(
|
data_io data_io(
|
||||||
.clk_sys ( clock_48 ),
|
.clk_sys ( clock_48 ),
|
||||||
@@ -138,6 +165,10 @@ always @(posedge clock_12) begin
|
|||||||
reset <= status[0] | buttons[1] | ~rom_loaded;
|
reset <= status[0] | buttons[1] | ~rom_loaded;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
reg [10:0] audio;
|
||||||
|
wire hs, vs;
|
||||||
|
wire [4:0] r,g,b;
|
||||||
|
|
||||||
time_pilot time_pilot(
|
time_pilot time_pilot(
|
||||||
.clock_6(clock_6),
|
.clock_6(clock_6),
|
||||||
.clock_12(clock_12),
|
.clock_12(clock_12),
|
||||||
@@ -152,8 +183,8 @@ time_pilot time_pilot(
|
|||||||
.roms_addr(rom_addr),
|
.roms_addr(rom_addr),
|
||||||
.roms_do(rom_do[7:0]),
|
.roms_do(rom_do[7:0]),
|
||||||
.roms_rd(rom_rd),
|
.roms_rd(rom_rd),
|
||||||
.dip_switch_1(8'hFF), // Coinage_B / Coinage_A
|
.dip_switch_1(8'b11111111),// Coinage_B / Coinage_A
|
||||||
.dip_switch_2(8'h4B), // Sound(8)/Difficulty(7-5)/Bonus(4)/Cocktail(3)/lives(2-1)
|
.dip_switch_2(~{demosnd, difficulty, bonus, 1'b1, lives}),// Sound(8)/Difficulty(7-5)/Bonus(4)/Cocktail(3)/lives(2-1)
|
||||||
.start2(m_two_players),
|
.start2(m_two_players),
|
||||||
.start1(m_one_player),
|
.start1(m_one_player),
|
||||||
.coin1(m_coin1),
|
.coin1(m_coin1),
|
||||||
@@ -189,32 +220,14 @@ mist_video #(.COLOR_DEPTH(5), .SD_HCNT_WIDTH(10)) mist_video(
|
|||||||
.scandoubler_disable( scandoublerD ),
|
.scandoubler_disable( scandoublerD ),
|
||||||
.scanlines ( scanlines ),
|
.scanlines ( scanlines ),
|
||||||
.blend ( blend ),
|
.blend ( blend ),
|
||||||
.ypbpr ( ypbpr )
|
.ypbpr ( ypbpr ),
|
||||||
|
.no_csync ( no_csync )
|
||||||
);
|
);
|
||||||
|
|
||||||
user_io #(.STRLEN(($size(CONF_STR)>>3)))user_io(
|
dac #(.C_bits(11))dac(
|
||||||
.clk_sys (clock_12 ),
|
|
||||||
.conf_str (CONF_STR ),
|
|
||||||
.SPI_CLK (SPI_SCK ),
|
|
||||||
.SPI_SS_IO (CONF_DATA0 ),
|
|
||||||
.SPI_MISO (SPI_DO ),
|
|
||||||
.SPI_MOSI (SPI_DI ),
|
|
||||||
.buttons (buttons ),
|
|
||||||
.switches (switches ),
|
|
||||||
.scandoubler_disable (scandoublerD ),
|
|
||||||
.ypbpr (ypbpr ),
|
|
||||||
.key_strobe (key_strobe ),
|
|
||||||
.key_pressed (key_pressed ),
|
|
||||||
.key_code (key_code ),
|
|
||||||
.joystick_0 (joystick_0 ),
|
|
||||||
.joystick_1 (joystick_1 ),
|
|
||||||
.status (status )
|
|
||||||
);
|
|
||||||
|
|
||||||
dac #(.C_bits(16))dac(
|
|
||||||
.clk_i(clock_14),
|
.clk_i(clock_14),
|
||||||
.res_n_i(1),
|
.res_n_i(1),
|
||||||
.dac_i({audio, 5'b00000}),
|
.dac_i(audio),
|
||||||
.dac_o(AUDIO_L)
|
.dac_o(AUDIO_L)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -224,19 +237,19 @@ wire m_up2, m_down2, m_left2, m_right2, m_fire2A, m_fire2B, m_fire2C, m_fire2D,
|
|||||||
wire m_tilt, m_coin1, m_coin2, m_coin3, m_coin4, m_one_player, m_two_players, m_three_players, m_four_players;
|
wire m_tilt, m_coin1, m_coin2, m_coin3, m_coin4, m_one_player, m_two_players, m_three_players, m_four_players;
|
||||||
|
|
||||||
arcade_inputs inputs (
|
arcade_inputs inputs (
|
||||||
.clk ( clock_12 ),
|
.clk ( clock_12 ),
|
||||||
.key_strobe ( key_strobe ),
|
.key_strobe ( key_strobe ),
|
||||||
.key_pressed ( key_pressed ),
|
.key_pressed ( key_pressed ),
|
||||||
.key_code ( key_code ),
|
.key_code ( key_code ),
|
||||||
.joystick_0 ( joystick_0 ),
|
.joystick_0 ( joystick_0 ),
|
||||||
.joystick_1 ( joystick_1 ),
|
.joystick_1 ( joystick_1 ),
|
||||||
.rotate ( rotate ),
|
.rotate ( rotate ),
|
||||||
.orientation ( 2'b11 ),
|
.orientation ( 2'b11 ),
|
||||||
.joyswap ( 1'b0 ),
|
.joyswap ( 1'b0 ),
|
||||||
.oneplayer ( 1'b1 ),
|
.oneplayer ( 1'b1 ),
|
||||||
.controls ( {m_tilt, m_coin4, m_coin3, m_coin2, m_coin1, m_four_players, m_three_players, m_two_players, m_one_player} ),
|
.controls ( {m_tilt, m_coin4, m_coin3, m_coin2, m_coin1, m_four_players, m_three_players, m_two_players, m_one_player} ),
|
||||||
.player1 ( {m_fireF, m_fireE, m_fireD, m_fireC, m_fireB, m_fireA, m_up, m_down, m_left, m_right} ),
|
.player1 ( {m_fireF, m_fireE, m_fireD, m_fireC, m_fireB, m_fireA, m_up, m_down, m_left, m_right} ),
|
||||||
.player2 ( {m_fire2F, m_fire2E, m_fire2D, m_fire2C, m_fire2B, m_fire2A, m_up2, m_down2, m_left2, m_right2} )
|
.player2 ( {m_fire2F, m_fire2E, m_fire2D, m_fire2C, m_fire2B, m_fire2A, m_up2, m_down2, m_left2, m_right2} )
|
||||||
);
|
);
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
-- Coin: ESC, 5, 6
|
-- Coin: ESC, 5, 6
|
||||||
-- Start: F1, F2, 1, 2
|
-- Start: F1, F2, 1, 2
|
||||||
|
|
||||||
-- Tron: Joystick 1 for movement, Joystick 2 (MAME keys: D, G) for turret
|
-- Tron: Joystick 1 for movement, Joystick 2 (MAME keys: D, G) or Buttons B and C for turret
|
||||||
-- Wacko: control Captain Krooz'r with the mouse, shoot with the joystick
|
-- Wacko: control Captain Krooz'r with the mouse, shoot with the joystick
|
||||||
-- Kozmik Krooz'r: use the mouse for movement and shoot, rotate the turret with the joystick
|
-- Kozmik Krooz'r: use the mouse for movement and shoot, rotate the turret with the joystick
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ localparam CONF_STR = {
|
|||||||
"O2,Rotate Controls,Off,On;",
|
"O2,Rotate Controls,Off,On;",
|
||||||
"O5,Blend,Off,On;",
|
"O5,Blend,Off,On;",
|
||||||
"O6,Swap Joysticks,Off,On;",
|
"O6,Swap Joysticks,Off,On;",
|
||||||
|
"O4,Spinner speed,Low,High;",
|
||||||
"DIP;",
|
"DIP;",
|
||||||
"O7,Service,Off,On;",
|
"O7,Service,Off,On;",
|
||||||
"T0,Reset;",
|
"T0,Reset;",
|
||||||
@@ -66,6 +67,7 @@ wire rotate = status[2];
|
|||||||
wire blend = status[5];
|
wire blend = status[5];
|
||||||
wire joyswap = status[6];
|
wire joyswap = status[6];
|
||||||
wire service = status[7];
|
wire service = status[7];
|
||||||
|
wire spinspd = status[4];
|
||||||
|
|
||||||
reg oneplayer;
|
reg oneplayer;
|
||||||
reg [1:0] orientation; //left/right / portrait/landscape
|
reg [1:0] orientation; //left/right / portrait/landscape
|
||||||
@@ -397,7 +399,7 @@ wire [6:0] spin_angle1;
|
|||||||
spinner spinner1 (
|
spinner spinner1 (
|
||||||
.clock_40(clk_sys),
|
.clock_40(clk_sys),
|
||||||
.reset(reset),
|
.reset(reset),
|
||||||
.btn_acc(1),
|
.btn_acc(spinspd),
|
||||||
.btn_left(m_left | m_up),
|
.btn_left(m_left | m_up),
|
||||||
.btn_right(m_right | m_down),
|
.btn_right(m_right | m_down),
|
||||||
.ctc_zc_to_2(vs),
|
.ctc_zc_to_2(vs),
|
||||||
@@ -408,9 +410,9 @@ wire [6:0] spin_angle2;
|
|||||||
spinner spinner2 (
|
spinner spinner2 (
|
||||||
.clock_40(clk_sys),
|
.clock_40(clk_sys),
|
||||||
.reset(reset),
|
.reset(reset),
|
||||||
.btn_acc(1),
|
.btn_acc(spinspd),
|
||||||
.btn_left(m_left2 | m_up2),
|
.btn_left(m_left2 | m_up2 | (core_mod == 7'h1 && m_fireB)), // fireB for Tron
|
||||||
.btn_right(m_right2 | m_down2),
|
.btn_right(m_right2 | m_down2 | (core_mod == 7'h1 && m_fireC)), // fireC for Tron
|
||||||
.ctc_zc_to_2(vs),
|
.ctc_zc_to_2(vs),
|
||||||
.spin_angle(spin_angle2)
|
.spin_angle(spin_angle2)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -36,8 +36,8 @@ begin
|
|||||||
if btn_left = '1' then spin_count <= spin_count - 20; end if; -- left
|
if btn_left = '1' then spin_count <= spin_count - 20; end if; -- left
|
||||||
if btn_right = '1' then spin_count <= spin_count + 20; end if; -- right
|
if btn_right = '1' then spin_count <= spin_count + 20; end if; -- right
|
||||||
else
|
else
|
||||||
if btn_left = '1' then spin_count <= spin_count - 55; end if;
|
if btn_left = '1' then spin_count <= spin_count - 40; end if;
|
||||||
if btn_right = '1' then spin_count <= spin_count + 55; end if;
|
if btn_right = '1' then spin_count <= spin_count + 40; end if;
|
||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
|
|||||||
@@ -11,11 +11,8 @@ Supported games:
|
|||||||
Sarge
|
Sarge
|
||||||
=====
|
=====
|
||||||
Controls:
|
Controls:
|
||||||
Player 1: joystick 1 and joystick 2
|
Player 1: joystick 1 and joystick 2 (two sticks mode), joystick1 only(one stick mode)
|
||||||
Player 2: joystick 3 and joystick 4
|
Player 2: joystick 3 and joystick 4 (two sticks mode), joystick2 only(one stick mode)
|
||||||
|
|
||||||
Creating SARGE.ROM on Linux:
|
|
||||||
cat cpu_3b.bin cpu_5b.bin spr_8e.bin spr_6e.bin spr_5e.bin spr_4e.bin til_15a.bin til_15a.bin til_14b.bin til_14b.bin tcs_u5.bin tcs_u4.bin tcs_u5.bin tcs_u4.bin > SARGE.ROM
|
|
||||||
|
|
||||||
Max RPM
|
Max RPM
|
||||||
=======
|
=======
|
||||||
@@ -24,19 +21,10 @@ Gear : Button1/Button2
|
|||||||
Steering: Left/Right
|
Steering: Left/Right
|
||||||
Throttle/Brake: Up/Down
|
Throttle/Brake: Up/Down
|
||||||
|
|
||||||
Creating MAXRPM.ROM on Linux:
|
|
||||||
cat pro.0 pro.1 fg-0 fg-1 fg-2 fg-3 bg-0 bg-1 turbskwk.u5 turbskwk.u4 > MAXRPM.ROM
|
|
||||||
|
|
||||||
Rampage
|
Rampage
|
||||||
=======
|
=======
|
||||||
Normal controls for maximum of 3 players.
|
Normal controls for maximum of 3 players.
|
||||||
|
|
||||||
Creating RAMPAGE.ROM on Linux:
|
|
||||||
cat pro-0_3b_rev_3_8-27-86.3b pro-1_5b_rev_3_8-27-86.5b \
|
|
||||||
fg-0_8e_6-30-86.8e fg-1_6e_6-30-86.6e fg-2_5e_6-30-86.5e fg-3_4e_6-30-86.4e \
|
|
||||||
bg-0_u15_7-23-86.15a bg-1_u14_7-23-86.14b \
|
|
||||||
u-17_rev.2_8-14-86.u17 u-18_rev.2_8-14-86.u18 u-7_rev.2_8-14-86.u7 u-8_rev.2_8-14-86.u8 > RAMPAGE.ROM
|
|
||||||
|
|
||||||
Power Drive
|
Power Drive
|
||||||
===========
|
===========
|
||||||
3 players support
|
3 players support
|
||||||
@@ -44,10 +32,15 @@ Buttons 1,2 - Gas
|
|||||||
Button 3 - Wheelie
|
Button 3 - Wheelie
|
||||||
Button 4 - Shift
|
Button 4 - Shift
|
||||||
|
|
||||||
Creating POWERDRV.ROM on Linux:
|
Usage:
|
||||||
cat pdrv3b.bin pdrv5b.bin pdrv8e.bin pdrv6e.bin pdrv5e.bin pdrv4e.bin \
|
======
|
||||||
pdrv15a.bin pdrv14b.bin \
|
|
||||||
power_drive_snd_u17.u17 power_drive_snd_u18.u18 power_drive_snd_u7.u7 power_drive_snd_u8.u8 > POWERDRV.ROM
|
Create ROM and ARC files from MAME ROM zip files using the mra utility and the MRA files.
|
||||||
|
Copy the RBF and the ARC files to the same folder.
|
||||||
|
Example: mra -z /path/to/mame/roms Tron.mra
|
||||||
|
Copy the ROM files to the root of the SD Card.
|
||||||
|
|
||||||
|
MRA utilty: https://github.com/sebdel/mra-tools-c
|
||||||
|
|
||||||
Based on Darfpga's work:
|
Based on Darfpga's work:
|
||||||
---------------------------------------------------------------------------------
|
---------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
<rbf>MCR3Mono</rbf>
|
<rbf>MCR3Mono</rbf>
|
||||||
<setname>sarge</setname>
|
<setname>sarge</setname>
|
||||||
<switches>
|
<switches>
|
||||||
|
<dip bits="9" name="Controls" ids="2 sticks, 1 stick"/>
|
||||||
<dip bits="8" name="Free Play" ids="On,Off"/>
|
<dip bits="8" name="Free Play" ids="On,Off"/>
|
||||||
</switches>
|
</switches>
|
||||||
<rom index="1">
|
<rom index="1">
|
||||||
|
|||||||
@@ -104,8 +104,8 @@ always @(*) begin
|
|||||||
begin
|
begin
|
||||||
// Two stick/player like the original
|
// Two stick/player like the original
|
||||||
input0 = ~{2'b00, service, 1'b0, m_two_players, m_one_player, m_coin2, m_coin1};
|
input0 = ~{2'b00, service, 1'b0, m_two_players, m_one_player, m_coin2, m_coin1};
|
||||||
input1 = ~{m_fireA | m_fireB, m_fireA | m_fireB, m_fire2A | m_fire2B, m_fire2A | m_fire2B, m_down, m_up, m_down, m_up};
|
input1 = ~{{2{sarge_fire1B}}, {2{sarge_fire1A}}, sarge_down2, sarge_up2, sarge_down1, sarge_up1};
|
||||||
input2 = ~{m_fire3A | m_fire3B, m_fire3A | m_fire3B, m_fire4A | m_fire4B, m_fire4A | m_fire4B, m_down3, m_up3, m_down4, m_up4};
|
input2 = ~{{2{sarge_fire2B}}, {2{sarge_fire2A}}, sarge_down3, sarge_up3, sarge_down4, sarge_up4};
|
||||||
input3 = ~{2'b00, /*coinage*/2'b00, /*free play*/status[8], 3'b000};
|
input3 = ~{2'b00, /*coinage*/2'b00, /*free play*/status[8], 3'b000};
|
||||||
end
|
end
|
||||||
7'h2: //POWERDRV
|
7'h2: //POWERDRV
|
||||||
@@ -393,6 +393,42 @@ dac #(10) dac(
|
|||||||
);
|
);
|
||||||
assign AUDIO_R = AUDIO_L;
|
assign AUDIO_R = AUDIO_L;
|
||||||
|
|
||||||
|
// Sarge controls
|
||||||
|
wire onestick = status[9];
|
||||||
|
wire sarge_up1, sarge_up2, sarge_up3, sarge_up4;
|
||||||
|
wire sarge_down1, sarge_down2, sarge_down3, sarge_down4;
|
||||||
|
wire sarge_fire1A, sarge_fire1B, sarge_fire2A, sarge_fire2B;
|
||||||
|
|
||||||
|
always @(*) begin
|
||||||
|
if (~onestick) begin
|
||||||
|
sarge_up1 = m_up;
|
||||||
|
sarge_up2 = m_up2;
|
||||||
|
sarge_up3 = m_up3;
|
||||||
|
sarge_up4 = m_up4;
|
||||||
|
sarge_down1 = m_down;
|
||||||
|
sarge_down2 = m_down2;
|
||||||
|
sarge_down3 = m_down3;
|
||||||
|
sarge_down4 = m_down4;
|
||||||
|
sarge_fire1A = m_fireA | m_fire2A;
|
||||||
|
sarge_fire1B = m_fireB | m_fire2B;
|
||||||
|
sarge_fire2A = m_fire3A | m_fire4A;
|
||||||
|
sarge_fire2B = m_fire3B | m_fire4B;
|
||||||
|
end else begin
|
||||||
|
sarge_up1 = (m_up & ~m_left) | (m_right & ~m_down);
|
||||||
|
sarge_up2 = (m_up & ~m_right) | (m_left & ~m_down);
|
||||||
|
sarge_down1 = (m_down & ~m_right) | (m_left & ~m_up);
|
||||||
|
sarge_down2 = (m_down & ~m_left) | (m_right & ~m_up);
|
||||||
|
sarge_up3 = (m_up2 & ~m_left2) | (m_right2 & ~m_down2);
|
||||||
|
sarge_up4 = (m_up2 & ~m_right2) | (m_left2 & ~m_down2);
|
||||||
|
sarge_down3 = (m_down2 & ~m_right2) | (m_left2 & ~m_up2);
|
||||||
|
sarge_down4 = (m_down2 & ~m_left2) | (m_right2 & ~m_up2);
|
||||||
|
sarge_fire1A = m_fireA;
|
||||||
|
sarge_fire1B = m_fireB;
|
||||||
|
sarge_fire2A = m_fire2A;
|
||||||
|
sarge_fire2B = m_fire2B;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
// Power Drive gear
|
// Power Drive gear
|
||||||
reg [2:0] powerdrv_gear;
|
reg [2:0] powerdrv_gear;
|
||||||
always @(posedge clk_sys) begin
|
always @(posedge clk_sys) begin
|
||||||
|
|||||||
Reference in New Issue
Block a user