diff --git a/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pooyan_mist.sv b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pooyan_mist.sv index da7f3e12..9653e07f 100644 --- a/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pooyan_mist.sv +++ b/Arcade_MiST/Konami Classic/Pooyan_MiST/rtl/pooyan_mist.sv @@ -35,6 +35,10 @@ localparam CONF_STR = { "O2,Rotate Controls,Off,On;", "O34,Scanlines,Off,25%,50%,75%;", "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;", "V,v1.15.",`BUILD_DATE }; @@ -42,6 +46,10 @@ localparam CONF_STR = { wire rotate = status[2]; wire [1:0] scanlines = status[4:3]; 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 AUDIO_R = AUDIO_L; @@ -60,16 +68,35 @@ pll pll( wire [31:0] status; wire [1:0] buttons; wire [1:0] switches; -wire [11:0] kbjoy; wire [7:0] joystick_0; wire [7:0] joystick_1; wire scandoublerD; wire ypbpr; -wire [10:0] audio; -wire hs, vs; -wire blankn; -wire [2:0] r,g; -wire [1:0] b; +wire no_csync; +wire key_strobe; +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 [15:0] rom_do; wire rom_rd; @@ -78,12 +105,9 @@ wire [7:0] ioctl_index; wire ioctl_wr; wire [24:0] ioctl_addr; wire [7:0] ioctl_dout; -wire key_strobe; -wire key_pressed; -wire [7:0] key_code; data_io data_io( - .clk_sys ( clock_48 ), + .clk_sys ( clock_48 ), .SPI_SCK ( SPI_SCK ), .SPI_SS2 ( SPI_SS2 ), .SPI_DI ( SPI_DI ), @@ -93,7 +117,7 @@ data_io data_io( .ioctl_addr ( ioctl_addr ), .ioctl_dout ( ioctl_dout ) ); - + sdram rom( .*, .init ( ~pll_locked ), @@ -117,6 +141,12 @@ always @(posedge clock_12) begin reset <= status[0] | buttons[1] | ~rom_loaded; end +wire [10:0] audio; +wire hs, vs; +wire blankn; +wire [2:0] r,g; +wire [1:0] b; + pooyan pooyan( .clock_6(clock_6), .clock_12(clock_12), @@ -132,8 +162,8 @@ pooyan pooyan( .roms_addr ( rom_addr ), .roms_do ( rom_do[7:0] ), .roms_rd ( rom_rd ), - .dip_switch_1("11111111"),// Coinage_B / Coinage_A - .dip_switch_2("11111011"),// Sound(8)/Difficulty(7-5)/Bonus(4)/Cocktail(3)/lives(2-1) + .dip_switch_1(8'b11111111),// Coinage_B / Coinage_A + .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), .start1(m_one_player), .coin1(m_coin1), @@ -149,8 +179,7 @@ pooyan pooyan( .up2(m_up2) ); - -mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video(//Wrong Colors have no Idea +mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video( .clk_sys ( clock_48 ), .SPI_SCK ( SPI_SCK ), .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 ), .blend ( blend ), .scanlines ( scanlines ), - .ypbpr ( ypbpr ) + .ypbpr ( ypbpr ), + .no_csync ( no_csync ) ); -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 ), - .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( +dac #(.C_bits(11))dac( .clk_i(clock_14), .res_n_i(1), - .dac_i({audio, 5'b00000}), + .dac_i(audio), .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; arcade_inputs inputs ( - .clk ( clock_12 ), - .key_strobe ( key_strobe ), - .key_pressed ( key_pressed ), - .key_code ( key_code ), - .joystick_0 ( joystick_0 ), - .joystick_1 ( joystick_1 ), - .rotate ( rotate ), - .orientation ( 2'b11 ), - .joyswap ( 1'b0 ), - .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} ), - .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} ) + .clk ( clock_12 ), + .key_strobe ( key_strobe ), + .key_pressed ( key_pressed ), + .key_code ( key_code ), + .joystick_0 ( joystick_0 ), + .joystick_1 ( joystick_1 ), + .rotate ( rotate ), + .orientation ( 2'b11 ), + .joyswap ( 1'b0 ), + .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} ), + .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} ) ); endmodule diff --git a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/Power_Surge_MiST.sv b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/Power_Surge_MiST.sv index cff34b2d..74b4e3a2 100644 --- a/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/Power_Surge_MiST.sv +++ b/Arcade_MiST/Konami Classic/Power_Surge_MiST/rtl/Power_Surge_MiST.sv @@ -59,6 +59,9 @@ localparam CONF_STR = { "O2,Rotate Controls,Off,On;", "O34,Scanlines,Off,25%,50%,75%;", "O5,Blend,Off,On;", + "O6,Initial Energy,4,6;", + "O78,Lives,3,4,5,6;", + "O9,Stop at Junctions,Off,On;", "T0,Reset;", "V,v1.15.",`BUILD_DATE }; @@ -66,6 +69,9 @@ localparam CONF_STR = { wire rotate = status[2]; wire [1:0] scanlines = status[4:3]; wire blend = status[5]; +wire energy = status[6]; +wire [1:0] lives = ~status[8:7]; +wire stpatjunct = ~status[9]; assign LED = 1; assign AUDIO_R = AUDIO_L; @@ -88,12 +94,31 @@ wire [7:0] joystick_0; wire [7:0] joystick_1; wire scandoublerD; wire ypbpr; -reg [10:0] audio; -wire hb, vb; -wire blankn = ~(hb | vb); -wire ce_vid; -wire hs, vs; -wire [4:0] r,g,b; +wire no_csync; +wire key_strobe; +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 [15:0] rom_do; wire rom_rd; @@ -102,12 +127,9 @@ wire [7:0] ioctl_index; wire ioctl_wr; wire [24:0] ioctl_addr; wire [7:0] ioctl_dout; -wire key_strobe; -wire key_pressed; -wire [7:0] key_code; data_io data_io( - .clk_sys ( clock_48 ), + .clk_sys ( clock_48 ), .SPI_SCK ( SPI_SCK ), .SPI_SS2 ( SPI_SS2 ), .SPI_DI ( SPI_DI ), @@ -140,6 +162,13 @@ always @(posedge clock_12) begin reset <= status[0] | buttons[1] | ~rom_loaded; 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( .clock_6(clock_6), .clock_12(clock_12), @@ -156,12 +185,12 @@ power_surge power_surge( .roms_addr(rom_addr), .roms_do(rom_do[7:0]), .roms_rd(rom_rd), - .dip_switch_1(8'b0111_1000), // 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_1({2'b11,lives,energy,3'b000}), // Cabinet Unknown Lives Lives Initial_Energy Unknown Unknown Unknown + .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), .start1(m_one_player), .coin1(m_coin1), - + .fire1(m_fireA), .right1(m_right), .left1(m_left), @@ -174,7 +203,7 @@ power_surge power_surge( .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 ), .SPI_SCK ( SPI_SCK ), .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 ), .scanlines ( scanlines ), .blend ( blend ), - .ypbpr ( ypbpr ) + .ypbpr ( ypbpr ), + .no_csync ( no_csync ) ); -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 ), - .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( +dac #(.C_bits(11))dac( .clk_i(clock_14), .res_n_i(1), - .dac_i({audio, 5'b00000}), + .dac_i(audio), .dac_o(AUDIO_L) ); diff --git a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/TimePilot_MiST.sv b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/TimePilot_MiST.sv index fdb79b6a..81b36989 100644 --- a/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/TimePilot_MiST.sv +++ b/Arcade_MiST/Konami Classic/Time_Pilot_MiST/rtl/TimePilot_MiST.sv @@ -59,6 +59,10 @@ localparam CONF_STR = { "O2,Rotate Controls,Off,On;", "O34,Scanlines,Off,25%,50%,75%;", "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;", "V,v1.15.",`BUILD_DATE }; @@ -66,6 +70,10 @@ localparam CONF_STR = { wire rotate = status[2]; wire [1:0] scanlines = status[4:3]; 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 AUDIO_R = AUDIO_L; @@ -88,9 +96,31 @@ wire [7:0] joystick_0; wire [7:0] joystick_1; wire scandoublerD; wire ypbpr; -reg [10:0] audio; -wire hs, vs; -wire [4:0] r,g,b; +wire no_csync; +wire key_strobe; +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 [15:0] rom_do; wire rom_rd; @@ -99,9 +129,6 @@ wire [7:0] ioctl_index; wire ioctl_wr; wire [24:0] ioctl_addr; wire [7:0] ioctl_dout; -wire key_strobe; -wire key_pressed; -wire [7:0] key_code; data_io data_io( .clk_sys ( clock_48 ), @@ -138,6 +165,10 @@ always @(posedge clock_12) begin reset <= status[0] | buttons[1] | ~rom_loaded; end +reg [10:0] audio; +wire hs, vs; +wire [4:0] r,g,b; + time_pilot time_pilot( .clock_6(clock_6), .clock_12(clock_12), @@ -152,8 +183,8 @@ time_pilot time_pilot( .roms_addr(rom_addr), .roms_do(rom_do[7:0]), .roms_rd(rom_rd), - .dip_switch_1(8'hFF), // Coinage_B / Coinage_A - .dip_switch_2(8'h4B), // Sound(8)/Difficulty(7-5)/Bonus(4)/Cocktail(3)/lives(2-1) + .dip_switch_1(8'b11111111),// Coinage_B / Coinage_A + .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), .start1(m_one_player), .coin1(m_coin1), @@ -189,32 +220,14 @@ mist_video #(.COLOR_DEPTH(5), .SD_HCNT_WIDTH(10)) mist_video( .scandoubler_disable( scandoublerD ), .scanlines ( scanlines ), .blend ( blend ), - .ypbpr ( ypbpr ) + .ypbpr ( ypbpr ), + .no_csync ( no_csync ) ); -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 ), - .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( +dac #(.C_bits(11))dac( .clk_i(clock_14), .res_n_i(1), - .dac_i({audio, 5'b00000}), + .dac_i(audio), .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; arcade_inputs inputs ( - .clk ( clock_12 ), - .key_strobe ( key_strobe ), - .key_pressed ( key_pressed ), - .key_code ( key_code ), - .joystick_0 ( joystick_0 ), - .joystick_1 ( joystick_1 ), - .rotate ( rotate ), - .orientation ( 2'b11 ), - .joyswap ( 1'b0 ), - .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} ), - .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} ) + .clk ( clock_12 ), + .key_strobe ( key_strobe ), + .key_pressed ( key_pressed ), + .key_code ( key_code ), + .joystick_0 ( joystick_0 ), + .joystick_1 ( joystick_1 ), + .rotate ( rotate ), + .orientation ( 2'b11 ), + .joyswap ( 1'b0 ), + .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} ), + .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} ) ); endmodule \ No newline at end of file