mirror of
https://github.com/Gehstock/Mist_FPGA.git
synced 2026-01-20 01:34:38 +00:00
TraverseUSA: convert to single RBF/MRA(ARC)
This commit is contained in:
parent
174c2644a0
commit
1da3c59bd7
@ -2,18 +2,12 @@ Traverse USA by Dar (darfpga@aol.fr) (16/03/2019)
|
||||
|
||||
Port to MiST
|
||||
|
||||
TRAVRUSA.ROM or SHTRIDER.ROM is required at the root of the SD-Card.
|
||||
|
||||
Creating in Windows:
|
||||
copy /B zr1-0.m3 + zr1-5.l3 + zr1-6a.k3 + zr1-7.j3 + mr10.1a + mr10.1a + zippyrac.001 + mr8.3c + mr9.3a + zr1-8.n3 + zr1-9.l3 + zr1-10.k3 + mmi6349.ij + tbp24s10.3 + tbp18s.2 > TRAVRUSA.ROM
|
||||
copy /B sr01a.bin + sr02a.bin + sr03a.bin + sr04a.bin + sr11a.bin + sr05a.bin + sr06a.bin + sr07a.bin + sr08a.bin + sr09a.bin + sr10b.bin + 1.bpr + 2.bpr + 3.bpr + 4.bpr > SHTRIDER.ROM
|
||||
|
||||
Creating in Linux:
|
||||
cat zr1-0.m3 zr1-5.l3 zr1-6a.k3 zr1-7.j3 mr10.1a mr10.1a zippyrac.001 mr8.3c mr9.3a zr1-8.n3 zr1-9.l3 zr1-10.k3 mmi6349.ij tbp24s10.3 tbp18s.2 > TRAVRUSA.ROM
|
||||
cat sr01a.bin sr02a.bin sr03a.bin sr04a.bin sr11a.bin sr05a.bin sr06a.bin sr07a.bin sr08a.bin sr09a.bin sr10b.bin 1.bpr 2.bpr 3.bpr 4.bpr > SHTRIDER.ROM
|
||||
|
||||
Some ROM files contain different names, like:
|
||||
zippyrac.000
|
||||
zippyrac.005
|
||||
zippyrac.006
|
||||
zippyrac.007
|
||||
-- Usage:
|
||||
-- - Create ROM and ARC files from the MRA files in the meta directory
|
||||
-- using the MRA utility.
|
||||
-- Example: mra -A -z /path/to/mame/roms travrusa.mra
|
||||
-- - Copy the ROM files to the root of the SD Card
|
||||
-- - Copy the RBF and ARC files to the same folder on the SD Card
|
||||
--
|
||||
-- MRA utility: https://github.com/sebdel/mra-tools-c/
|
||||
--
|
||||
|
||||
@ -0,0 +1,32 @@
|
||||
<misterromdescription>
|
||||
<name>Shotrider</name>
|
||||
<mameversion>0216</mameversion>
|
||||
<setname>shtrider</setname>
|
||||
<mratimestamp>201911270000</mratimestamp>
|
||||
<year>1983</year>
|
||||
<manufacturer>Irem</manufacturer>
|
||||
<category>Racing / Motorbike</category>
|
||||
<rbf>travrusa</rbf>
|
||||
<rom index="1"><part>1</part></rom>
|
||||
<rom index="0" zip="shtrider.zip" md5="9e4c8423a33f0c5bf558d475d89e041a" type="merged|nonmerged">
|
||||
<part name="sr01a.bin"/>
|
||||
<part name="sr02a.bin"/>
|
||||
<part name="sr03a.bin"/>
|
||||
<part name="sr04a.bin"/>
|
||||
|
||||
<part name="sr11a.bin"/>
|
||||
|
||||
<part name="sr05a.bin"/>
|
||||
<part name="sr06a.bin"/>
|
||||
<part name="sr07a.bin"/>
|
||||
|
||||
<part name="sr08a.bin"/>
|
||||
<part name="sr09a.bin"/>
|
||||
<part name="sr10b.bin"/>
|
||||
|
||||
<part name="1.bpr"/>
|
||||
<part name="2.bpr"/>
|
||||
<part name="3.bpr"/>
|
||||
<part name="4.bpr"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
@ -0,0 +1,28 @@
|
||||
<misterromdescription>
|
||||
<name>Traverse USA - Zippy Race</name>
|
||||
<mameversion>0216</mameversion>
|
||||
<setname>travrusa</setname>
|
||||
<mratimestamp>201911270000</mratimestamp>
|
||||
<year>1983</year>
|
||||
<manufacturer>Irem</manufacturer>
|
||||
<category>Racing / Motorbike</category>
|
||||
<rbf>travrusa</rbf>
|
||||
<rom index="1"><part>0</part></rom>
|
||||
<rom index="0" zip="travrusa.zip" md5="67d6330459d5180670c25842fc3d1d11" type="merged|nonmerged">
|
||||
<part name="zr1-0.m3"/>
|
||||
<part name="zr1-5.l3"/>
|
||||
<part name="zr1-6a.k3"/>
|
||||
<part name="zr1-7.j3"/>
|
||||
<part name="mr10.1a"/>
|
||||
<part name="mr10.1a"/>
|
||||
<part name="zippyrac.001"/>
|
||||
<part name="mr8.3c"/>
|
||||
<part name="mr9.3a"/>
|
||||
<part name="zr1-8.n3"/>
|
||||
<part name="zr1-9.l3"/>
|
||||
<part name="zr1-10.k3"/>
|
||||
<part name="mmi6349.ij"/>
|
||||
<part name="tbp24s10.3"/>
|
||||
<part name="tbp18s.2"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
@ -50,24 +50,8 @@ module TraverseUSA_MiST(
|
||||
|
||||
`include "rtl/build_id.v"
|
||||
|
||||
`define CORE_NAME "SHTRIDER"
|
||||
//`define CORE_NAME "TRAVRUSA"
|
||||
|
||||
reg shtrider = 0;
|
||||
wire [7:0] dip1 = 8'hff;
|
||||
reg [7:0] dip2;
|
||||
|
||||
always @(*) begin
|
||||
if (`CORE_NAME == "SHTRIDER") begin
|
||||
shtrider = 1;
|
||||
// Cocktail(3) / M-Km(1) / Flip(0)
|
||||
dip2 = { 4'b1111, 2'b11, status[5], 1'b0 };
|
||||
end else begin
|
||||
shtrider = 0;
|
||||
// Diag(7) / Demo(6) / Zippy(5) / Freeze (4) / M-Km(3) / Coin mode (2) / Cocktail(1) / Flip(0)
|
||||
dip2 = { ~status[9], ~status[8], ~status[7], ~status[6], ~status[5], 3'b110 };
|
||||
end
|
||||
end
|
||||
`define CORE_NAME "TRAVRUSA"
|
||||
wire [6:0] core_mod;
|
||||
|
||||
localparam CONF_STR = {
|
||||
`CORE_NAME,";;",
|
||||
@ -83,6 +67,26 @@ localparam CONF_STR = {
|
||||
"V,v1.0.",`BUILD_DATE
|
||||
};
|
||||
|
||||
wire rotate = status[2];
|
||||
wire [1:0] scanlines = status[4:3];
|
||||
wire blend = status[10];
|
||||
|
||||
reg shtrider = 0;
|
||||
wire [7:0] dip1 = 8'hff;
|
||||
reg [7:0] dip2;
|
||||
|
||||
always @(*) begin
|
||||
if (core_mod == 7'h1) begin
|
||||
shtrider = 1;
|
||||
// Cocktail(3) / M-Km(1) / Flip(0)
|
||||
dip2 = { 4'b1111, 2'b11, status[5], 1'b0 };
|
||||
end else begin
|
||||
shtrider = 0;
|
||||
// Diag(7) / Demo(6) / Zippy(5) / Freeze (4) / M-Km(3) / Coin mode (2) / Cocktail(1) / Flip(0)
|
||||
dip2 = { ~status[9], ~status[8], ~status[7], ~status[6], ~status[5], 3'b110 };
|
||||
end
|
||||
end
|
||||
|
||||
assign LED = 1;
|
||||
assign AUDIO_R = AUDIO_L;
|
||||
assign SDRAM_CLK = clk_sys;
|
||||
@ -105,13 +109,34 @@ wire [7:0] joystick_0;
|
||||
wire [7:0] joystick_1;
|
||||
wire scandoublerD;
|
||||
wire ypbpr;
|
||||
wire [10:0] ps2_key;
|
||||
wire [10:0] audio;
|
||||
wire hs, vs;
|
||||
wire blankn;
|
||||
wire [2:0] g,b;
|
||||
wire [1:0] r;
|
||||
wire no_csync;
|
||||
wire key_pressed;
|
||||
wire [7:0] key_code;
|
||||
wire key_strobe;
|
||||
|
||||
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 ),
|
||||
.core_mod (core_mod ),
|
||||
.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] cart_addr;
|
||||
wire [15:0] sdram_do;
|
||||
wire cart_rd;
|
||||
@ -198,6 +223,11 @@ always @(posedge clk_sys) begin
|
||||
reset <= status[0] | buttons[1] | ~rom_loaded;
|
||||
end
|
||||
|
||||
wire [10:0] audio;
|
||||
wire hs, vs;
|
||||
wire blankn;
|
||||
wire [2:0] g,b;
|
||||
wire [1:0] r;
|
||||
|
||||
// Traverse_usa
|
||||
traverse_usa traverse_usa (
|
||||
@ -219,19 +249,19 @@ traverse_usa traverse_usa (
|
||||
.dip_switch_1 ( dip1 ),
|
||||
.dip_switch_2 ( dip2 ),
|
||||
|
||||
.start2 ( btn_two_players ),
|
||||
.start1 ( btn_one_player ),
|
||||
.coin1 ( btn_coin ),
|
||||
.start2 ( m_two_players ),
|
||||
.start1 ( m_one_player ),
|
||||
.coin1 ( m_coin1 ),
|
||||
|
||||
.right1 ( m_right ),
|
||||
.left1 ( m_left ),
|
||||
.brake1 ( m_down ),
|
||||
.accel1 ( m_up ),
|
||||
|
||||
.right2 ( m_right ),
|
||||
.left2 ( m_left ),
|
||||
.brake2 ( m_down ),
|
||||
.accel2 ( m_up ),
|
||||
.right2 ( m_right2 ),
|
||||
.left2 ( m_left2 ),
|
||||
.brake2 ( m_down2 ),
|
||||
.accel2 ( m_up2 ),
|
||||
|
||||
.cpu_rom_addr ( cart_addr ),
|
||||
.cpu_rom_do ( cart_addr[0] ? sdram_do[15:8] : sdram_do[7:0] ),
|
||||
@ -258,33 +288,13 @@ mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video(
|
||||
.VGA_B ( VGA_B ),
|
||||
.VGA_VS ( VGA_VS ),
|
||||
.VGA_HS ( VGA_HS ),
|
||||
.rotate ( {1'b1,status[2]} ),
|
||||
.rotate ( { 1'b1, rotate } ),
|
||||
.scandoubler_disable( scandoublerD ),
|
||||
.scanlines ( status[4:3] ),
|
||||
.scanlines ( scanlines ),
|
||||
.ypbpr ( ypbpr ),
|
||||
.no_csync ( no_csync ),
|
||||
.ce_divider ( 1'b0 ),
|
||||
.blend ( status[10] )
|
||||
);
|
||||
|
||||
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 ),
|
||||
.status (status )
|
||||
.blend ( blend )
|
||||
);
|
||||
|
||||
dac #(
|
||||
@ -296,43 +306,24 @@ dac(
|
||||
.dac_o(AUDIO_L)
|
||||
);
|
||||
|
||||
// Rotated Normal
|
||||
wire m_up = ~status[2] ? btn_left | joystick_0[1] | joystick_1[1] : btn_up | joystick_0[3] | joystick_1[3];
|
||||
wire m_down = ~status[2] ? btn_right | joystick_0[0] | joystick_1[0] : btn_down | joystick_0[2] | joystick_1[2];
|
||||
wire m_left = ~status[2] ? btn_down | joystick_0[2] | joystick_1[2] : btn_left | joystick_0[1] | joystick_1[1];
|
||||
wire m_right = ~status[2] ? btn_up | joystick_0[3] | joystick_1[3] : btn_right | joystick_0[0] | joystick_1[0];
|
||||
wire m_fire = btn_fire1 | joystick_0[4] | joystick_1[4];
|
||||
wire m_bomb = btn_fire2 | joystick_0[5] | joystick_1[5];
|
||||
wire m_up, m_down, m_left, m_right, m_fireA, m_fireB, m_fireC, m_fireD, m_fireE, m_fireF;
|
||||
wire m_up2, m_down2, m_left2, m_right2, m_fire2A, m_fire2B, m_fire2C, m_fire2D, m_fire2E, m_fire2F;
|
||||
wire m_tilt, m_coin1, m_coin2, m_coin3, m_coin4, m_one_player, m_two_players, m_three_players, m_four_players;
|
||||
|
||||
reg btn_one_player = 0;
|
||||
reg btn_two_players = 0;
|
||||
reg btn_left = 0;
|
||||
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
|
||||
arcade_inputs inputs (
|
||||
.clk ( clk_sys ),
|
||||
.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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user