mirror of
https://github.com/Gehstock/Mist_FPGA.git
synced 2026-01-20 09:44:38 +00:00
Green Beret HW: use single RBF + MRA
This commit is contained in:
parent
bde4d8fd78
commit
a224f2554f
@ -1,6 +1,13 @@
|
||||
-- Arcade: Rush'n Attack (Green Beret) port to MiST by Slingshot
|
||||
--
|
||||
-- GBERET.ROM is required on the SD Card
|
||||
-- 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 gberet.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/
|
||||
--
|
||||
-- Keyboard inputs :
|
||||
--
|
||||
|
||||
30
Arcade_MiST/Konami Green Beret Hardware/meta/gberet.mra
Normal file
30
Arcade_MiST/Konami Green Beret Hardware/meta/gberet.mra
Normal file
@ -0,0 +1,30 @@
|
||||
<misterromdescription>
|
||||
<name>Green Beret</name>
|
||||
<mameversion>0216</mameversion>
|
||||
<setname>gberet</setname>
|
||||
<mratimestamp>201911270000</mratimestamp>
|
||||
<year>1985</year>
|
||||
<manufacturer>Konami</manufacturer>
|
||||
<category>Army / Fighter</category>
|
||||
<rbf>gberet</rbf>
|
||||
|
||||
<rom index="1"><part>0</part></rom>
|
||||
|
||||
<rom index="0" zip="gberet.zip" md5="886c929e6db35548e44cfdd8d168bdb1" type="merged|nonmerged">
|
||||
<part name="577l03.10c"/>
|
||||
<part name="577l02.8c"/>
|
||||
<part name="577l01.7c"/>
|
||||
<part name="577l01.7c"/>
|
||||
|
||||
<part name="577l06.5e"/>
|
||||
<part name="577l05.4e"/>
|
||||
<part name="577l08.4f"/>
|
||||
<part name="577l04.3e"/>
|
||||
|
||||
<part name="577l07.3f"/>
|
||||
|
||||
<part name="577h10.5f"/>
|
||||
<part name="577h11.6f"/>
|
||||
<part name="577h09.2f"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
26
Arcade_MiST/Konami Green Beret Hardware/meta/mrgoemon.mra
Normal file
26
Arcade_MiST/Konami Green Beret Hardware/meta/mrgoemon.mra
Normal file
@ -0,0 +1,26 @@
|
||||
<misterromdescription>
|
||||
<name>Mr. Goemon</name>
|
||||
<mameversion>0216</mameversion>
|
||||
<setname>mrgoemon</setname>
|
||||
<mratimestamp>201911270000</mratimestamp>
|
||||
<year>1985</year>
|
||||
<manufacturer>Konami</manufacturer>
|
||||
<category>Army / Fighter</category>
|
||||
<rbf>gberet</rbf>
|
||||
|
||||
<rom index="1"><part>2</part></rom>
|
||||
|
||||
<rom index="0" zip="mrgoemon.zip" md5="bb85714cd6fe34f3c812183d6f7ca0a0" type="merged">
|
||||
<part name="621d01.10c"/>
|
||||
<part name="621d02.12c"/>
|
||||
|
||||
<part name="621d03.4d"/>
|
||||
<part name="621d04.5d"/>
|
||||
|
||||
<part name="621a05.6d"/>
|
||||
|
||||
<part name="621a07.6f"/>
|
||||
<part name="621a08.7f"/>
|
||||
<part name="621a06.5f"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
27
Arcade_MiST/Konami Green Beret Hardware/meta/rushatck.mra
Normal file
27
Arcade_MiST/Konami Green Beret Hardware/meta/rushatck.mra
Normal file
@ -0,0 +1,27 @@
|
||||
<misterromdescription>
|
||||
<name>Rush'n Attack (US)</name>
|
||||
<mameversion>0216</mameversion>
|
||||
<setname>rushatck</setname>
|
||||
<mratimestamp>201911270000</mratimestamp>
|
||||
<year>1985</year>
|
||||
<manufacturer>Konami</manufacturer>
|
||||
<category>Army / Fighter</category>
|
||||
<rbf>gberet</rbf>
|
||||
|
||||
<rom index="1"><part>1</part></rom>
|
||||
|
||||
<rom index="0" zip="gberet.zip" md5="77c3e9fb3763204f8e118a7442991c6e" type="merged">
|
||||
<part name="rushatck/577h03.10c"/>
|
||||
<part name="rushatck/577h02.8c"/>
|
||||
<part name="rushatck/577h01.7c"/>
|
||||
<part name="rushatck/577h01.7c"/>
|
||||
<part name="577l06.5e"/>
|
||||
<part name="rushatck/577h05.4e"/>
|
||||
<part name="577l08.4f"/>
|
||||
<part name="577l04.3e"/>
|
||||
<part name="rushatck/577h07.3f"/>
|
||||
<part name="577h10.5f"/>
|
||||
<part name="577h11.6f"/>
|
||||
<part name="577h09.2f"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
@ -32,13 +32,10 @@ module gberet_mist (
|
||||
|
||||
`include "rtl\build_id.v"
|
||||
|
||||
//`define CORE_NAME "GBERET"
|
||||
//`define CORE_NAME "RUSHNA"
|
||||
`define CORE_NAME "MRGOEMON"
|
||||
|
||||
`define CORE_NAME "GBERET"
|
||||
|
||||
localparam CONF_STR = {
|
||||
`CORE_NAME,";ROM;",
|
||||
`CORE_NAME, ";ROM;",
|
||||
"O2,Rotate Controls,Off,On;",
|
||||
"O34,Scandoubler Fx,None,CRT 25%,CRT 50%,CRT 75%;",
|
||||
"O5,Blend,Off,On;",
|
||||
@ -50,16 +47,21 @@ localparam CONF_STR = {
|
||||
"V,v1.00.",`BUILD_DATE
|
||||
};
|
||||
|
||||
wire rotate = status[2];
|
||||
wire [1:0] scanlines = status[4:3];
|
||||
wire blend = status[5];
|
||||
|
||||
wire [1:0] dsLives = ~status[9:8];
|
||||
wire [1:0] dsExtend = ~status[11:10];
|
||||
wire [1:0] dsDiff = ~status[13:12];
|
||||
wire dsDemoSnd = ~status[14];
|
||||
|
||||
wire [6:0] core_mod;
|
||||
|
||||
assign LED = ~ioctl_downl;
|
||||
assign AUDIO_R = AUDIO_L;
|
||||
assign SDRAM_CLK = clock_48;
|
||||
assign SDRAM_CKE = 1;
|
||||
assign LED = ~ioctl_downl;
|
||||
assign AUDIO_R = AUDIO_L;
|
||||
assign SDRAM_CLK = clock_48;
|
||||
assign SDRAM_CKE = 1;
|
||||
|
||||
wire clock_48, pll_locked;
|
||||
pll pll(
|
||||
@ -75,14 +77,32 @@ wire [7:0] joystick_0;
|
||||
wire [7:0] joystick_1;
|
||||
wire scandoublerD;
|
||||
wire ypbpr;
|
||||
wire [7:0] audio;
|
||||
wire hs, vs;
|
||||
wire hb, vb;
|
||||
wire blankn = ~(hb | vb);
|
||||
wire [3: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_48 ),
|
||||
.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 [15:0] rom_addr;
|
||||
wire [15:0] rom_do;
|
||||
wire [15:1] spr_addr;
|
||||
@ -104,7 +124,7 @@ wire [7:0] ioctl_dout;
|
||||
// 24200 - 2421F - pal - 32b - 2f
|
||||
|
||||
data_io data_io(
|
||||
.clk_sys ( clock_48 ),
|
||||
.clk_sys ( clock_48 ),
|
||||
.SPI_SCK ( SPI_SCK ),
|
||||
.SPI_SS2 ( SPI_SS2 ),
|
||||
.SPI_DI ( SPI_DI ),
|
||||
@ -170,6 +190,11 @@ always @(posedge clock_48) begin
|
||||
end
|
||||
|
||||
//////////////////////////////////////////////
|
||||
wire [7:0] audio;
|
||||
wire hs, vs;
|
||||
wire hb, vb;
|
||||
wire blankn = ~(hb | vb);
|
||||
wire [3:0] r, g, b;
|
||||
|
||||
wire PCLK;
|
||||
wire PCLK_EN;
|
||||
@ -182,9 +207,9 @@ HVGEN hvgen
|
||||
.oRGB({b,g,r}),.HBLK(hb),.VBLK(vb),.HSYN(hs),.VSYN(vs)
|
||||
);
|
||||
|
||||
wire [5:0] INP0 = { m_fire2, m_fire1, {m_left, m_down, m_right, m_up} };
|
||||
wire [5:0] INP1 = { m_fire2, m_fire1, {m_left, m_down, m_right, m_up} };
|
||||
wire [2:0] INP2 = { m_coin, m_start2, m_start1 };
|
||||
wire [5:0] INP0 = { m_fireB, m_fireA, m_left, m_down, m_right, m_up };
|
||||
wire [5:0] INP1 = { m_fire2B, m_fire2A, m_left2, m_down2, m_right2, m_up2 };
|
||||
wire [2:0] INP2 = { m_coin1 | m_coin2, m_two_players, m_one_player };
|
||||
|
||||
wire [7:0] DSW0 = {dsDemoSnd,dsDiff,dsExtend,1'b0,dsLives};
|
||||
wire [7:0] DSW1 = 8'hFF;
|
||||
@ -220,32 +245,14 @@ mist_video #(.COLOR_DEPTH(4), .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 ),
|
||||
.blend ( status[5] ),
|
||||
.scanlines ( status[4:3] ),
|
||||
.blend ( blend ),
|
||||
.scanlines ( scanlines ),
|
||||
.no_csync ( no_csync ),
|
||||
.ypbpr ( ypbpr )
|
||||
);
|
||||
|
||||
user_io #(.STRLEN(($size(CONF_STR)>>3)))user_io(
|
||||
.clk_sys ( clock_48 ),
|
||||
.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 #(8) dac(
|
||||
.clk_i(clock_48),
|
||||
.res_n_i(1),
|
||||
@ -253,42 +260,24 @@ dac #(8) dac(
|
||||
.dac_o(AUDIO_L)
|
||||
);
|
||||
|
||||
// Rotated Normal
|
||||
wire m_up = status[2] ? btn_right | joystick_0[0] | joystick_1[0] : btn_up | joystick_0[3] | joystick_1[3];
|
||||
wire m_down = status[2] ? btn_left | joystick_0[1] | joystick_1[1] : btn_down | joystick_0[2] | joystick_1[2];
|
||||
wire m_left = status[2] ? btn_up | joystick_0[3] | joystick_1[3] : btn_left | joystick_0[1] | joystick_1[1];
|
||||
wire m_right = status[2] ? btn_down | joystick_0[2] | joystick_1[2] : btn_right | joystick_0[0] | joystick_1[0];
|
||||
wire m_fire1 = btn_fire1 | joystick_0[4] | joystick_1[4];
|
||||
wire m_fire2 = btn_fire2 | joystick_0[5] | joystick_1[5];
|
||||
wire m_start1 = btn_one_player;
|
||||
wire m_start2 = btn_two_players;
|
||||
wire m_coin = btn_coin;
|
||||
|
||||
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_coin = 0;
|
||||
|
||||
always @(posedge clock_48) 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
|
||||
'h29: btn_fire1 <= key_pressed; // Space
|
||||
'h11: btn_fire2 <= key_pressed; // Alt
|
||||
endcase
|
||||
end
|
||||
end
|
||||
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;
|
||||
|
||||
arcade_inputs inputs (
|
||||
.clk ( clock_48 ),
|
||||
.key_strobe ( key_strobe ),
|
||||
.key_pressed ( key_pressed ),
|
||||
.key_code ( key_code ),
|
||||
.joystick_0 ( joystick_0 ),
|
||||
.joystick_1 ( joystick_1 ),
|
||||
.rotate ( rotate ),
|
||||
.orientation ( 2'b10 ),
|
||||
.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