mirror of
https://github.com/Gehstock/Mist_FPGA.git
synced 2026-01-20 09:44:38 +00:00
MCR3Mono: convert to single RBF + MRA files
This commit is contained in:
parent
07b518c502
commit
62e57df4dc
@ -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
|
||||
@ -75,6 +75,7 @@ set_location_assignment PIN_88 -to SPI_DI
|
||||
set_location_assignment PIN_126 -to SPI_SCK
|
||||
set_location_assignment PIN_127 -to SPI_SS2
|
||||
set_location_assignment PIN_91 -to SPI_SS3
|
||||
set_location_assignment PIN_90 -to SPI_SS4
|
||||
set_location_assignment PIN_13 -to CONF_DATA0
|
||||
set_location_assignment PIN_49 -to SDRAM_A[0]
|
||||
set_location_assignment PIN_44 -to SDRAM_A[1]
|
||||
|
||||
28
Arcade_MiST/Midway MCR 3 Monoboard/meta/Max RPM.mra
Normal file
28
Arcade_MiST/Midway MCR 3 Monoboard/meta/Max RPM.mra
Normal file
@ -0,0 +1,28 @@
|
||||
<misterromdescription>
|
||||
<name>Max RPM (ver 2)</name>
|
||||
<mameversion>0217</mameversion>
|
||||
<mratimestamp>20200202</mratimestamp>
|
||||
<year>1986</year>
|
||||
<manufacturer>Bally Midway</manufacturer>
|
||||
<category>Action</category>
|
||||
<rbf>MCR3Mono</rbf>
|
||||
<setname>maxrpm</setname>
|
||||
<switches>
|
||||
<dip bits="8" name="Free Play" ids="On,Off"/>
|
||||
</switches>
|
||||
<rom index="1">
|
||||
<part>03</part>
|
||||
</rom>
|
||||
<rom index="0" zip="maxrpm.zip" md5="5db0174a5e50422c027850a810a7b81d" type="merged|nonmerged">
|
||||
<part crc="3f9ec35f" name="pro.0"/>
|
||||
<part crc="f628bb30" name="pro.1"/>
|
||||
<part crc="1d1435c1" name="fg-0"/>
|
||||
<part crc="e54b7f2a" name="fg-1"/>
|
||||
<part crc="38be8505" name="fg-2"/>
|
||||
<part crc="9ae3eb52" name="fg-3"/>
|
||||
<part crc="e3fb693a" name="bg-0"/>
|
||||
<part crc="50d1db6c" name="bg-1"/>
|
||||
<part crc="55c3b759" name="turbskwk.u5"/>
|
||||
<part crc="31a2da2e" name="turbskwk.u4"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
32
Arcade_MiST/Midway MCR 3 Monoboard/meta/Power Drive.mra
Normal file
32
Arcade_MiST/Midway MCR 3 Monoboard/meta/Power Drive.mra
Normal file
@ -0,0 +1,32 @@
|
||||
<misterromdescription>
|
||||
<name>Power Drive</name>
|
||||
<mameversion>0217</mameversion>
|
||||
<mratimestamp>20200202</mratimestamp>
|
||||
<year>1986</year>
|
||||
<manufacturer>Bally Midway</manufacturer>
|
||||
<category>Action</category>
|
||||
<rbf>MCR3Mono</rbf>
|
||||
<setname>powerdrv</setname>
|
||||
<switches>
|
||||
<dip bits="8,9" name="Difficulty" ids="Factory,Easy,Hard,Hardest"/>
|
||||
<dip bits="10" name="Demo Sounds" ids="On,Off"/>
|
||||
<dip bits="11" name="Rack Advance (cheat)" ids="On,Off"/>
|
||||
</switches>
|
||||
<rom index="1">
|
||||
<part>02</part>
|
||||
</rom>
|
||||
<rom index="0" zip="powerdrv.zip" md5="0300242430d958ef5fdce41bc5c1e722" type="merged|nonmerged">
|
||||
<part crc="d870b704" name="pdrv3b.bin"/>
|
||||
<part crc="fa0544ad" name="pdrv5b.bin"/>
|
||||
<part crc="dd3a2adc" name="pdrv8e.bin"/>
|
||||
<part crc="1a1f7f81" name="pdrv6e.bin"/>
|
||||
<part crc="4cb4780e" name="pdrv5e.bin"/>
|
||||
<part crc="de400335" name="pdrv4e.bin"/>
|
||||
<part crc="b858b5a8" name="pdrv15a.bin"/>
|
||||
<part crc="12ee7fc2" name="pdrv14b.bin"/>
|
||||
<part crc="c41de6e4" name="power_drive_snd_u17.u17"/>
|
||||
<part crc="cae14c70" name="power_drive_snd_u18.u18"/>
|
||||
<part crc="78713e78" name="power_drive_snd_u7.u7"/>
|
||||
<part crc="15714036" name="power_drive_snd_u8.u8"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
32
Arcade_MiST/Midway MCR 3 Monoboard/meta/Rampage.mra
Normal file
32
Arcade_MiST/Midway MCR 3 Monoboard/meta/Rampage.mra
Normal file
@ -0,0 +1,32 @@
|
||||
<misterromdescription>
|
||||
<name>Rampage (Rev 3)</name>
|
||||
<mameversion>0217</mameversion>
|
||||
<mratimestamp>20200202</mratimestamp>
|
||||
<year>1986</year>
|
||||
<manufacturer>Bally Midway</manufacturer>
|
||||
<category>Action</category>
|
||||
<rbf>MCR3Mono</rbf>
|
||||
<setname>rampage</setname>
|
||||
<switches>
|
||||
<dip bits="8,9" name="Difficulty" ids="Normal,Easy,Hard,Free Play"/>
|
||||
<dip bits="10" name="Score Opt" ids="Lose,Keep"/>
|
||||
<dip bits="11" name="Rack Advance (cheat)" ids="Off,On"/>
|
||||
</switches>
|
||||
<rom index="1">
|
||||
<part>00</part>
|
||||
</rom>
|
||||
<rom index="0" zip="rampage.zip" md5="c6ccd4ea48d10da950c898c4c2ff60e0" type="merged|nonmerged">
|
||||
<part crc="2f7ca03c" name="pro-0_3b_rev_3_8-27-86.3b"/>
|
||||
<part crc="d89bd9a4" name="pro-1_5b_rev_3_8-27-86.5b"/>
|
||||
<part crc="0974be5d" name="fg-0_8e_6-30-86.8e"/>
|
||||
<part crc="8728532b" name="fg-1_6e_6-30-86.6e"/>
|
||||
<part crc="9489f714" name="fg-2_5e_6-30-86.5e"/>
|
||||
<part crc="81e1de40" name="fg-3_4e_6-30-86.4e"/>
|
||||
<part crc="c0d8b7a5" name="bg-0_u15_7-23-86.15a"/>
|
||||
<part crc="2f6e3aa1" name="bg-1_u14_7-23-86.14b"/>
|
||||
<part crc="e92c596b" name="u-17_rev.2_8-14-86.u17"/>
|
||||
<part crc="6b8bf5e1" name="u-18_rev.2_8-14-86.u18"/>
|
||||
<part crc="cffd7fa5" name="u-7_rev.2_8-14-86.u7"/>
|
||||
<part crc="11f787e4" name="u-8_rev.2_8-14-86.u8"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
30
Arcade_MiST/Midway MCR 3 Monoboard/meta/Sarge.mra
Normal file
30
Arcade_MiST/Midway MCR 3 Monoboard/meta/Sarge.mra
Normal file
@ -0,0 +1,30 @@
|
||||
<misterromdescription>
|
||||
<name>Sarge</name>
|
||||
<mameversion>0217</mameversion>
|
||||
<mratimestamp>20200202</mratimestamp>
|
||||
<year>1985</year>
|
||||
<manufacturer>Bally Midway</manufacturer>
|
||||
<category>Action</category>
|
||||
<rbf>MCR3Mono</rbf>
|
||||
<setname>sarge</setname>
|
||||
<switches>
|
||||
<dip bits="8" name="Free Play" ids="On,Off"/>
|
||||
</switches>
|
||||
<rom index="1">
|
||||
<part>01</part>
|
||||
</rom>
|
||||
<rom index="0" zip="sarge.zip" md5="67acd34124ed8659765bd49683f1fc97" type="merged|nonmerged">
|
||||
<part crc="da31a58f" name="cpu_3b.bin"/>
|
||||
<part crc="6800e746" name="cpu_5b.bin"/>
|
||||
<part crc="93fac29d" name="spr_8e.bin"/>
|
||||
<part crc="7cc6fb28" name="spr_6e.bin"/>
|
||||
<part crc="c832375c" name="spr_5e.bin"/>
|
||||
<part crc="c382267d" name="spr_4e.bin"/>
|
||||
<part crc="685001b8" repeat="2" name="til_15a.bin"/>
|
||||
<part crc="8449eb45" repeat="2" name="til_14b.bin"/>
|
||||
<part crc="a894ef8a" name="tcs_u5.bin"/>
|
||||
<part crc="6ca6faf3" name="tcs_u4.bin"/>
|
||||
<part crc="a894ef8a" name="tcs_u5.bin"/>
|
||||
<part crc="6ca6faf3" name="tcs_u4.bin"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
@ -27,10 +27,11 @@ module MCR3Mono_MiST(
|
||||
output AUDIO_L,
|
||||
output AUDIO_R,
|
||||
input SPI_SCK,
|
||||
output SPI_DO,
|
||||
inout SPI_DO,
|
||||
input SPI_DI,
|
||||
input SPI_SS2,
|
||||
input SPI_SS3,
|
||||
input SPI_SS4,
|
||||
input CONF_DATA0,
|
||||
input CLOCK_27,
|
||||
output [12:0] SDRAM_A,
|
||||
@ -48,11 +49,24 @@ module MCR3Mono_MiST(
|
||||
|
||||
`include "rtl/build_id.v"
|
||||
|
||||
// Uncomment one to build with game-specific core name/inputs/sound board
|
||||
//`define CORE_NAME "SARGE"
|
||||
`define CORE_NAME "MAXRPM"
|
||||
//`define CORE_NAME "RAMPAGE"
|
||||
//`define CORE_NAME "POWERDRV"
|
||||
`define CORE_NAME "RAMPAGE"
|
||||
wire [6:0] core_mod;
|
||||
|
||||
localparam CONF_STR = {
|
||||
`CORE_NAME,";ROM;",
|
||||
"O2,Rotate Controls,Off,On;",
|
||||
"O5,Blend,Off,On;",
|
||||
"O6,Swap Joystick,Off,On;",
|
||||
"DIP;",
|
||||
"O7,Service,Off,On;",
|
||||
"T0,Reset;",
|
||||
"V,v1.1.",`BUILD_DATE
|
||||
};
|
||||
|
||||
wire rotate = status[2];
|
||||
wire blend = status[5];
|
||||
wire joyswap = status[6];
|
||||
wire service = status[7];
|
||||
|
||||
reg sg; // Sounds Good board
|
||||
reg [7:0] input0;
|
||||
@ -65,8 +79,7 @@ reg [7:0] output6;
|
||||
|
||||
// Game specific sound board/DIP/input settings
|
||||
always @(*) begin
|
||||
if (`CORE_NAME == "SARGE" ||
|
||||
`CORE_NAME == "MAXRPM")
|
||||
if (core_mod == 7'h1 || core_mod == 7'h3)
|
||||
sg = 0;
|
||||
else
|
||||
sg = 1;
|
||||
@ -77,44 +90,43 @@ always @(*) begin
|
||||
input3 = 8'hff;
|
||||
input4 = 8'hff;
|
||||
|
||||
if (`CORE_NAME == "SARGE") begin
|
||||
// Two stick/player like the original
|
||||
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};
|
||||
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};
|
||||
end else if (`CORE_NAME == "MAXRPM") begin
|
||||
input0 = ~{service, 3'b000, m_one_player, m_two_players, m_coin1, m_coin2};
|
||||
input1 = ~{maxrpm_adc_data};
|
||||
input2 = ~{maxrpm_gear1, maxrpm_gear2};
|
||||
end else if (`CORE_NAME == "RAMPAGE") begin
|
||||
case (core_mod)
|
||||
7'h0: // RAMPAGE
|
||||
begin
|
||||
// normal controls for 3 players
|
||||
input0 = ~{2'b00, service, 1'b0, 2'b00, m_coin2, m_coin1};
|
||||
input1 = ~{2'b00, m_fireB, m_fireA, m_left, m_down, m_right, m_up};
|
||||
input2 = ~{2'b00, m_fire2B, m_fire2A, m_left2, m_down2, m_right2, m_up2};
|
||||
input3 = ~{/*cheat*/status[11], /*coin B*/3'b000, /*coin A*/1'b0, /*score opt*/status[10], /*difficulty*/status[9:8]};
|
||||
input4 = ~{2'b00, m_fire3B, m_fire3A, m_left3, m_down3, m_right3, m_up3};
|
||||
end else if (`CORE_NAME == "POWERDRV") begin
|
||||
end
|
||||
7'h1: // SARGE
|
||||
begin
|
||||
// Two stick/player like the original
|
||||
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};
|
||||
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};
|
||||
input3 = ~{2'b00, /*coinage*/2'b00, /*free play*/status[8], 3'b000};
|
||||
end
|
||||
7'h2: //POWERDRV
|
||||
begin
|
||||
// Controls for 3 players using 4 buttons/joystick
|
||||
input0 = ~{2'b00, service, 1'b0, 1'b0, m_coin3, m_coin2, m_coin1};
|
||||
input1 = ~{m_fire2B, m_fire2A, powerdrv_gear[1], m_fire2C, m_fireB, m_fireA, powerdrv_gear[0], m_fireC};
|
||||
input2 = ~{sndstat[0], 3'b000, m_fire3B, m_fire3A, powerdrv_gear[2], m_fire3C};
|
||||
input3 = ~{/*cheat*/status[11], /*demosnd*/status[10], /*difficulty*/status[9:8], 1'b0, /*coinage*/2'b00};
|
||||
end
|
||||
7'h3: // MAXRPM
|
||||
begin
|
||||
input0 = ~{service, 3'b000, m_one_player, m_two_players, m_coin1, m_coin2};
|
||||
input1 = ~{maxrpm_adc_data};
|
||||
input2 = ~{maxrpm_gear1, maxrpm_gear2};
|
||||
input3[0] = ~status[8]; // free play
|
||||
end
|
||||
default: ;
|
||||
endcase
|
||||
end
|
||||
|
||||
localparam CONF_STR = {
|
||||
`CORE_NAME,";ROM;",
|
||||
"O2,Rotate Controls,Off,On;",
|
||||
"O5,Blend,Off,On;",
|
||||
"O6,Swap Joystick,Off,On;",
|
||||
"O7,Service,Off,On;",
|
||||
"T0,Reset;",
|
||||
"V,v1.1.",`BUILD_DATE
|
||||
};
|
||||
|
||||
wire rotate = status[2];
|
||||
wire blend = status[5];
|
||||
wire joyswap = status[6];
|
||||
wire service = status[7];
|
||||
|
||||
assign LED = ~ioctl_downl;
|
||||
assign SDRAM_CLK = clk_mem;
|
||||
assign SDRAM_CKE = 1;
|
||||
@ -138,14 +150,37 @@ wire [7:0] joystick_2;
|
||||
wire [7:0] joystick_3;
|
||||
wire scandoublerD;
|
||||
wire ypbpr;
|
||||
wire [9:0] audio;
|
||||
wire hs, vs, cs;
|
||||
wire blankn;
|
||||
wire [2:0] g, r, b;
|
||||
wire no_csync;
|
||||
wire key_pressed;
|
||||
wire [7:0] key_code;
|
||||
wire key_strobe;
|
||||
|
||||
user_io #(
|
||||
.STRLEN(($size(CONF_STR)>>3)),
|
||||
.ROM_DIRECT_UPLOAD(1))
|
||||
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 ),
|
||||
.core_mod (core_mod ),
|
||||
.key_strobe (key_strobe ),
|
||||
.key_pressed (key_pressed ),
|
||||
.key_code (key_code ),
|
||||
.joystick_0 (joystick_0 ),
|
||||
.joystick_1 (joystick_1 ),
|
||||
.joystick_2 (joystick_2 ),
|
||||
.joystick_3 (joystick_3 ),
|
||||
.status (status )
|
||||
);
|
||||
|
||||
wire ioctl_downl;
|
||||
wire [7:0] ioctl_index;
|
||||
wire ioctl_wr;
|
||||
@ -168,11 +203,13 @@ Rampage, Power Drive (Sounds Good board):
|
||||
58000- SG 128k
|
||||
*/
|
||||
|
||||
data_io data_io(
|
||||
data_io #(.ROM_DIRECT_UPLOAD(1)) data_io(
|
||||
.clk_sys ( clk_sys ),
|
||||
.SPI_SCK ( SPI_SCK ),
|
||||
.SPI_SS2 ( SPI_SS2 ),
|
||||
.SPI_SS4 ( SPI_SS4 ),
|
||||
.SPI_DI ( SPI_DI ),
|
||||
.SPI_DO ( SPI_DO ),
|
||||
.ioctl_download( ioctl_downl ),
|
||||
.ioctl_index ( ioctl_index ),
|
||||
.ioctl_wr ( ioctl_wr ),
|
||||
@ -278,7 +315,11 @@ always @(posedge clk_sys) begin
|
||||
reset <= status[0] | buttons[1] | ioctl_downl | ~rom_loaded | (reset_count == 16'h0001);
|
||||
end
|
||||
|
||||
wire [1:0] sndstat;
|
||||
wire [1:0] sndstat;
|
||||
wire [9:0] audio;
|
||||
wire hs, vs, cs;
|
||||
wire blankn;
|
||||
wire [2:0] g, r, b;
|
||||
|
||||
mcr3mono mcr3mono (
|
||||
.clock_40(clk_sys),
|
||||
@ -318,8 +359,8 @@ mcr3mono mcr3mono (
|
||||
|
||||
wire vs_out;
|
||||
wire hs_out;
|
||||
assign VGA_VS = scandoublerD | vs_out;
|
||||
assign VGA_HS = scandoublerD ? cs : hs_out;
|
||||
assign VGA_HS = ((~no_csync & scandoublerD) || ypbpr)? cs : hs_out;
|
||||
assign VGA_VS = ((~no_csync & scandoublerD) || ypbpr)? 1'b1 : vs_out;
|
||||
|
||||
mist_video #(.COLOR_DEPTH(3)) mist_video(
|
||||
.clk_sys ( clk_sys ),
|
||||
@ -344,29 +385,6 @@ mist_video #(.COLOR_DEPTH(3)) mist_video(
|
||||
.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 (joystick_0 ),
|
||||
.joystick_1 (joystick_1 ),
|
||||
.joystick_2 (joystick_2 ),
|
||||
.joystick_3 (joystick_3 ),
|
||||
.status (status )
|
||||
);
|
||||
|
||||
dac #(10) dac(
|
||||
.clk_i(clk_sys),
|
||||
.res_n_i(1),
|
||||
|
||||
@ -397,8 +397,8 @@ begin
|
||||
vcnt >= 1 and vcnt < 241 then video_blankn <= '1';end if;
|
||||
|
||||
|
||||
if hs_cnt = 0 then hsync0 <= '0';
|
||||
elsif hs_cnt = 47 then hsync0 <= '1';
|
||||
if hs_cnt = 0 then hsync0 <= '0'; video_hs <= '0';
|
||||
elsif hs_cnt = 47 then hsync0 <= '1'; video_hs <= '1';
|
||||
end if;
|
||||
|
||||
if hs_cnt = 0 then hsync1 <= '0';
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user