From 1da3c59bd72bad6d97d8301d23ace158b01df508 Mon Sep 17 00:00:00 2001 From: Gyorgy Szombathelyi Date: Wed, 12 Feb 2020 22:26:08 +0100 Subject: [PATCH] TraverseUSA: convert to single RBF/MRA(ARC) --- .../TraverseUSA_MiST/ReadMe.txt | 24 +-- .../TraverseUSA_MiST/meta/shtrider.mra | 32 ++++ .../TraverseUSA_MiST/meta/travrusa.mra | 28 +++ .../TraverseUSA_MiST/rtl/TraverseUSA_MiST.sv | 175 +++++++++--------- 4 files changed, 152 insertions(+), 107 deletions(-) create mode 100644 Arcade_MiST/IremM52 Hardware/TraverseUSA_MiST/meta/shtrider.mra create mode 100644 Arcade_MiST/IremM52 Hardware/TraverseUSA_MiST/meta/travrusa.mra diff --git a/Arcade_MiST/IremM52 Hardware/TraverseUSA_MiST/ReadMe.txt b/Arcade_MiST/IremM52 Hardware/TraverseUSA_MiST/ReadMe.txt index eff56ba4..96f07c0f 100644 --- a/Arcade_MiST/IremM52 Hardware/TraverseUSA_MiST/ReadMe.txt +++ b/Arcade_MiST/IremM52 Hardware/TraverseUSA_MiST/ReadMe.txt @@ -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/ +-- diff --git a/Arcade_MiST/IremM52 Hardware/TraverseUSA_MiST/meta/shtrider.mra b/Arcade_MiST/IremM52 Hardware/TraverseUSA_MiST/meta/shtrider.mra new file mode 100644 index 00000000..95bfca30 --- /dev/null +++ b/Arcade_MiST/IremM52 Hardware/TraverseUSA_MiST/meta/shtrider.mra @@ -0,0 +1,32 @@ + + Shotrider + 0216 + shtrider + 201911270000 + 1983 + Irem + Racing / Motorbike + travrusa + 1 + + + + + + + + + + + + + + + + + + + + + + diff --git a/Arcade_MiST/IremM52 Hardware/TraverseUSA_MiST/meta/travrusa.mra b/Arcade_MiST/IremM52 Hardware/TraverseUSA_MiST/meta/travrusa.mra new file mode 100644 index 00000000..96e9958f --- /dev/null +++ b/Arcade_MiST/IremM52 Hardware/TraverseUSA_MiST/meta/travrusa.mra @@ -0,0 +1,28 @@ + + Traverse USA - Zippy Race + 0216 + travrusa + 201911270000 + 1983 + Irem + Racing / Motorbike + travrusa + 0 + + + + + + + + + + + + + + + + + + diff --git a/Arcade_MiST/IremM52 Hardware/TraverseUSA_MiST/rtl/TraverseUSA_MiST.sv b/Arcade_MiST/IremM52 Hardware/TraverseUSA_MiST/rtl/TraverseUSA_MiST.sv index faad868f..ad291209 100644 --- a/Arcade_MiST/IremM52 Hardware/TraverseUSA_MiST/rtl/TraverseUSA_MiST.sv +++ b/Arcade_MiST/IremM52 Hardware/TraverseUSA_MiST/rtl/TraverseUSA_MiST.sv @@ -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