mirror of
https://github.com/Gehstock/Mist_FPGA.git
synced 2026-03-28 02:23:41 +00:00
Merge pull request #73 from gyurco/robotron
Convert more cores to single RBF + MRA/ARC files
This commit is contained in:
3
Arcade_MiST/.gitignore
vendored
3
Arcade_MiST/.gitignore
vendored
@@ -1 +1,4 @@
|
||||
Test
|
||||
*.rom
|
||||
*.arc
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
-- 10 November 2017
|
||||
--
|
||||
-- Usage:
|
||||
-- Create ROM and ARC files from MAME ROM zip files using the mra utility and the MRA files.
|
||||
-- Copy the RBF and the ARC files to the same folder.
|
||||
-- Create ROM files from MAME ROM zip files using the mra utility and the MRA files.
|
||||
-- Example: mra -z /path/to/mame/roms scramble.mra
|
||||
-- Copy the ROM files to the root of the SD Card.
|
||||
--
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=1
|
||||
CONF=O78,Lives,3,4,5,Unl
|
||||
@@ -1,5 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=10
|
||||
CONF=O7,Lives,3,5
|
||||
CONF=OA,Demo Sounds,Off,On
|
||||
@@ -1,5 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=5
|
||||
CONF=O7,Lives,3,5
|
||||
CONF=OA,Demo Sounds,Off,On
|
||||
@@ -1,4 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=13
|
||||
CONF=O7,Lives,3,5
|
||||
@@ -1,5 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=8
|
||||
CONF=O7,Lives,3,5
|
||||
CONF=OA,Demo Sounds,Off,On
|
||||
@@ -1,4 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=9
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=2
|
||||
CONF=O78,Lives,3,5,7,Unl
|
||||
@@ -1,5 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=11
|
||||
CONF=O78,Lives,3,5,Free Play,Invuln.
|
||||
CONF=OA,Demo Sounds,Off,On
|
||||
@@ -1,4 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=12
|
||||
CONF=O7,Lives,3,Unl
|
||||
@@ -1,5 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=18
|
||||
CONF=O78,Lives,3,4,5,6
|
||||
CONF=O9,Infinite Lives,Off,On
|
||||
@@ -1,7 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=16
|
||||
CONF=O7,Lives,3,5
|
||||
CONF=O89,Difficulty,Easy,Medium,Hard,Hardest
|
||||
CONF=OB,Start Level,1,3
|
||||
CONF=OA,Demo Sounds,Off,On
|
||||
@@ -1,4 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=6
|
||||
CONF=O78,Lives,3,4,5,Unl
|
||||
@@ -1,7 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=17
|
||||
CONF=O7,Lives,3,5
|
||||
CONF=O8,Difficulty,Easy,Hard
|
||||
CONF=O9,Start Level,1,3
|
||||
CONF=OA,Demo Sounds,Off,On
|
||||
@@ -1,4 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=0
|
||||
CONF=O78,Lives,3,4,5,Unl
|
||||
@@ -1,5 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=7
|
||||
CONF=O7,Lives,3,5
|
||||
CONF=OB,Difficulty,Easy,Hard
|
||||
@@ -1,4 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=14
|
||||
CONF=O78,Lives,3,4,5,Unl
|
||||
@@ -1,5 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=3
|
||||
CONF=O7,Lives,3,4
|
||||
CONF=O9,Continue,No,Yes
|
||||
@@ -1,5 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=4
|
||||
CONF=O7,Lives,3,5
|
||||
CONF=OA,Demo Sounds,Off,On
|
||||
@@ -1,4 +0,0 @@
|
||||
[ARC]
|
||||
RBF=SCRAMBLE
|
||||
MOD=15
|
||||
CONF=O78,Lives,3,4,5,Unl
|
||||
@@ -1,6 +1,11 @@
|
||||
<misterromdescription>
|
||||
<name>Amidar (Scramble hardware)</name>
|
||||
<rbf>scramble</rbf>
|
||||
<mameversion>0209</mameversion>
|
||||
<switches>
|
||||
<dip bits="7,8" name="Lives" ids="3,4,5,Unl"/>
|
||||
</switches>
|
||||
<rom index="1"><part>1</part></rom>
|
||||
<rom index="0" zip="amidar.zip" md5="33b3ea63f123eb052e3ca852c2bc9181" type="merged">
|
||||
<part name="amidars/am2d"/>
|
||||
<part name="amidars/am2e"/>
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
<misterromdescription>
|
||||
<name>Ant Eater</name>
|
||||
<mameversion>0209</mameversion>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7" name="Lives" ids="3,5"/>
|
||||
<dip bits="10" name="Demo Sounds" ids="Off,On"/>
|
||||
</switches>
|
||||
<rom index="1"><part>0A</part></rom>
|
||||
<rom index="0" zip="anteater.zip" md5="595cb84d7b7be1fab93958caaa9d593b" type="merged">
|
||||
<part name="ra1-2c"/>
|
||||
<part name="ra1-2e"/>
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
<misterromdescription>
|
||||
<name>Armored Car</name>
|
||||
<mameversion>0209</mameversion>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7" name="Lives" ids="3,5"/>
|
||||
<dip bits="10" name="Demo Sounds" ids="Off,On"/>
|
||||
</switches>
|
||||
<rom index="1"><part>5</part></rom>
|
||||
<rom index="0" zip="armorcar.zip" md5="0b2be19a5fa28e44cf65e157ee0d880c" type="merged|nonmerged">
|
||||
<part name="cpu.2c"/>
|
||||
<part name="cpu.2e"/>
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
<misterromdescription>
|
||||
<name>Battle of Atlantis</name>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7" name="Lives" ids="3,5"/>
|
||||
</switches>
|
||||
<rom index="1"><part>0D</part></rom>
|
||||
<rom index="0" zip="atlantis.zip" md5="91c419f9b09b9552c798526306f81b01" type="merged|nonmerged">
|
||||
<part name="2c"/>
|
||||
<part name="2e"/>
|
||||
@@ -23,7 +27,7 @@
|
||||
<part name="ot2.5d"/>
|
||||
<part name="ot3.5e"/>
|
||||
<part name="ot3.5e"/>
|
||||
|
||||
|
||||
<part name="5h"/>
|
||||
<part name="5f"/>
|
||||
<part name="c01s.6e"/>
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
<misterromdescription>
|
||||
<name>Calipso</name>
|
||||
<mameversion>0209</mameversion>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7" name="Lives" ids="3,5"/>
|
||||
<dip bits="10" name="Demo Sounds" ids="Off,On"/>
|
||||
</switches>
|
||||
<rom index="1"><part>8</part></rom>
|
||||
<rom index="0" zip="calipso.zip" md5="7a459dee19c889190e2f570119d0d77b" type="merged">
|
||||
<part name="calipso.2c"/>
|
||||
<part name="calipso.2e"/>
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
<misterromdescription>
|
||||
<name>Dark Planet</name>
|
||||
<mameversion>0209</mameversion>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7" name="Lives" ids="3,5"/>
|
||||
</switches>
|
||||
<rom index="1"><part>9</part></rom>
|
||||
<rom index="0" zip="darkplnt.zip" md5="3710f6c8b240aab2f11a065023999497" type="merged">
|
||||
<part name="drkplt2c.dat"/>
|
||||
<part name="drkplt2e.dat"/>
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
<misterromdescription>
|
||||
<name>Frogger (Sega set 2)</name>
|
||||
<mameversion>0209</mameversion>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7,8" name="Lives" ids="3,5,7,Unl"/>
|
||||
</switches>
|
||||
<rom index="1"><part>2</part></rom>
|
||||
<rom index="0" zip="frogger.zip" md5="e4dafd9989624989f0bef5874a7d6b16" type="merged">
|
||||
<part name="froggers2/epr-1012.ic5"/>
|
||||
<part name="froggers2/epr-1013a.ic6"/>
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
<misterromdescription>
|
||||
<name>Lost Tomb</name>
|
||||
<mameversion>0209</mameversion>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7,8" name="Lives" ids="3,5,Free Play,Invuln."/>
|
||||
<dip bits="10" name="Demo Sounds" ids="Off,On"/>
|
||||
</switches>
|
||||
<rom index="1"><part>0B</part></rom>
|
||||
<rom index="0" zip="losttomb.zip" md5="c62f4d91a165fe79a921e0c6ec85846b" type="merged">
|
||||
<part name="2c"/>
|
||||
<part name="2e"/>
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
<misterromdescription>
|
||||
<name>Mars</name>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7" name="Lives" ids="3,Unl"/>
|
||||
</switches>
|
||||
<rom index="1"><part>0C</part></rom>
|
||||
<rom index="0" zip="mars.zip" md5="d2f92c40c12e61bb0b906d0daeab8eee" type="merged|nonmerged">
|
||||
<part name="u26.3"/>
|
||||
<part name="u56.4"/>
|
||||
@@ -23,7 +27,7 @@
|
||||
<part name="u51.10"/>
|
||||
<part name="u78.11"/>
|
||||
<part name="u78.11"/>
|
||||
|
||||
|
||||
<part name="u101.2"/>
|
||||
<part name="u72.1"/>
|
||||
<part name="c01s.6e"/>
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
<misterromdescription>
|
||||
<name>Mighty Monkey</name>
|
||||
<mameversion>0209</mameversion>
|
||||
<rom index="0" zip="mimonkey.zip" md5="21de700d16c4f72771621924f0207533" type="merged">
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7,8" name="Lives" ids="3,4,5,6"/>
|
||||
<dip bits="9" name="Infinite Lives" ids="Off,On"/>
|
||||
</switches>
|
||||
<rom index="1"><part>12</part></rom>
|
||||
<rom index="0" zip="mimonkey.zip" md5="b4b49bd1d6a1b1a4e4d431fc79fc4268" type="merged">
|
||||
<part name="mimonscr/mm1"/>
|
||||
<part name="mimonscr/mm2"/>
|
||||
<part name="mimonscr/mm3"/>
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
<misterromdescription>
|
||||
<name>Minefield</name>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7" name="Lives" ids="3,5"/>
|
||||
<dip bits="8,9" name="Difficulty" ids="Easy,Medium,Hard,Hardest"/>
|
||||
<dip bits="11" name="Start Level" ids="1,3"/>
|
||||
<dip bits="10" name="Demo Sounds" ids="Off,On"/>
|
||||
</switches>
|
||||
<rom index="1"><part>10</part></rom>
|
||||
<mameversion>0209</mameversion>
|
||||
<rom index="0" zip="minefld.zip" md5="8bc2f7bf551354bb767b4996c91a6e32" type="merged|nonmerged">
|
||||
<part name="ma22c"/>
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
<misterromdescription>
|
||||
<name>Moonwar</name>
|
||||
<name>Moon War</name>
|
||||
<mameversion>0209</mameversion>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7,8" name="Lives" ids="3,4,5,Unl"/>
|
||||
</switches>
|
||||
<rom index="1"><part>6</part></rom>
|
||||
<rom index="0" zip="moonwar.zip" md5="85ac1993a065a59063bc915270972402" type="merged">
|
||||
<part name="mw2.2c"/>
|
||||
<part name="mw2.2e"/>
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<misterromdescription>
|
||||
<name>Rescue</name>
|
||||
<mameversion>0209</mameversion>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7" name="Lives" ids="3,5"/>
|
||||
<dip bits="8" name="Difficulty" ids="Easy,Hard"/>
|
||||
<dip bits="9" name="Start Level" ids="1,3"/>
|
||||
<dip bits="10" name="Demo Sounds" ids="Off,On"/>
|
||||
</switches>
|
||||
<rom index="1"><part>11</part></rom>
|
||||
<rom index="0" zip="rescue.zip" md5="b12c059c5c50f4e7043b10ee3b021b6d" type="merged|nonmerged">
|
||||
<part name="rb15acpu.bin"/>
|
||||
<part name="rb15bcpu.bin"/>
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
<misterromdescription>
|
||||
<name>Super Cobra</name>
|
||||
<mameversion>0209</mameversion>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7" name="Lives" ids="3,4"/>
|
||||
<dip bits="9" name="Continue" ids="No,Yes"/>
|
||||
</switches>
|
||||
<rom index="1"><part>3</part></rom>
|
||||
<rom index="0" zip="scobra.zip" md5="0f07fad30514fea4b483d933590ff482" type="merged">
|
||||
<part name="epr1265.2c"/>
|
||||
<part name="2e"/>
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
<misterromdescription>
|
||||
<name>Scramble (Stern Electronics set 1)</name>
|
||||
<mameversion>0209</mameversion>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7,8" name="Lives" ids="3,4,5,Unl"/>
|
||||
</switches>
|
||||
<rom index="1"><part>0</part></rom>
|
||||
<rom index="0" zip="scramble.zip" md5="cefab5afb2ce5edd0170e96f68759c73" type="merged">
|
||||
<part name="scrambles/2d"/>
|
||||
<part name="scrambles/2e"/>
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
<misterromdescription>
|
||||
<name>Speed Coin</name>
|
||||
<mameversion>0209</mameversion>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7" name="Lives" ids="3,5"/>
|
||||
<dip bits="11" name="Difficulty" ids="Easy,Hard"/>
|
||||
</switches>
|
||||
<rom index="1"><part>7</part></rom>
|
||||
<rom index="0" zip="spdcoin.zip" md5="ec50d25a33e7eb34bd53e66648cd65a6" type="merged">
|
||||
<part name="spdcoin.2c"/>
|
||||
<part name="spdcoin.2e"/>
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
<misterromdescription>
|
||||
<name>Strategy X</name>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7,8" name="Lives" ids="3,4,5,Unl"/>
|
||||
</switches>
|
||||
<rom index="1"><part>0E</part></rom>
|
||||
<rom index="0" zip="stratgyx.zip" md5="a9f3ca5ff435d48951108c3d469ac695" type="merged|nonmerged">
|
||||
<part name="2c_1.bin"/>
|
||||
<part name="2e_2.bin"/>
|
||||
@@ -13,7 +17,7 @@
|
||||
|
||||
<part name="s1.bin"/>
|
||||
<part name="s2.bin"/>
|
||||
|
||||
|
||||
<part name="5h_c1.bin"/>
|
||||
<part name="5f_c2.bin"/>
|
||||
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
<misterromdescription>
|
||||
<name>Tazmania</name>
|
||||
<name>Tazzmania</name>
|
||||
<mameversion>0209</mameversion>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7" name="Lives" ids="3,5"/>
|
||||
<dip bits="10" name="Demo Sounds" ids="Off,On"/>
|
||||
</switches>
|
||||
<rom index="1"><part>4</part></rom>
|
||||
<rom index="0" zip="tazmania.zip" md5="843f8ffcc008407fd77958d854c3afba" type="merged|nonmerged">
|
||||
<part name="2c.cpu"/>
|
||||
<part name="2e.cpu"/>
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
<misterromdescription>
|
||||
<name>Turtles</name>
|
||||
<mameversion>0209</mameversion>
|
||||
<rbf>scramble</rbf>
|
||||
<switches>
|
||||
<dip bits="7,8" name="Lives" ids="3,4,5,Unl"/>
|
||||
</switches>
|
||||
<rom index="1"><part>0F</part></rom>
|
||||
<rom index="0" zip="turtles.zip" md5="f0331f77098da57363e1fe323829c875" type="merged|nonmerged">
|
||||
<part name="turt_vid.2c"/>
|
||||
<part name="turt_vid.2e"/>
|
||||
|
||||
@@ -54,8 +54,11 @@ module ScrambleMist
|
||||
|
||||
`include "rtl\build_id.v"
|
||||
|
||||
`define CORE_NAME "SCRAMBLE"
|
||||
wire [6:0] core_mod;
|
||||
|
||||
localparam CONF_STR = {
|
||||
";ROM;",
|
||||
`CORE_NAME, ";ROM;",
|
||||
"O2,Rotate Controls,Off,On;",
|
||||
"O34,Scanlines,Off,25%,50%,75%;",
|
||||
"O5,Blending,Off,On;",
|
||||
@@ -66,8 +69,6 @@ localparam CONF_STR = {
|
||||
};
|
||||
|
||||
integer hwsel = 0;
|
||||
wire [6:0] core_mod;
|
||||
reg [8*8-1:0] core_name;
|
||||
reg [7:0] input0;
|
||||
reg [7:0] input1;
|
||||
reg [7:0] input2;
|
||||
@@ -80,144 +81,125 @@ always @(*) begin
|
||||
input2 = ~{ 1'b1, m_down, 1'b1, m_up, /*cabinet*/1'b1, /*coinage*/2'b11, m_down2 };
|
||||
|
||||
case (core_mod)
|
||||
7'h0:
|
||||
7'h0: // SCRAMBLE
|
||||
begin
|
||||
core_name = "SCRAMBLE";
|
||||
hwsel = 0;
|
||||
end
|
||||
7'h1:
|
||||
7'h1: // AMIDAR
|
||||
begin
|
||||
core_name = "AMIDAR ";
|
||||
hwsel = 0;
|
||||
input1[1:0] = ~status[8:7]; // lives345unl
|
||||
//input2[1] = status[10]; // demo sounds - no effect
|
||||
end
|
||||
7'h2:
|
||||
7'h2: // FROGGER
|
||||
begin
|
||||
core_name = "FROGGER ";
|
||||
hwsel = 1;
|
||||
end
|
||||
7'h3:
|
||||
7'h3: // SCOBRA
|
||||
begin
|
||||
core_name = "SCOBRA ";
|
||||
hwsel = 2;
|
||||
input1[0] = status[9]; // allow continue
|
||||
input1[1] = status[7]; // lives34
|
||||
end
|
||||
7'h4:
|
||||
7'h4: // TAZMANIA
|
||||
begin
|
||||
core_name = "TAZMANIA";
|
||||
hwsel = 2;
|
||||
input0 = ~{ m_coin1, m_coin2, m_left, m_right, m_down, m_up, m_fireA, m_fireB };
|
||||
input1 = ~{ m_fire2A, m_fire2B, m_left2, m_right2, m_up2, m_down2, /*demosnd*/status[10], /*lives35*/status[7] };
|
||||
input2 = ~{ 1'b1, m_two_players, 2'b10, 3'b111, m_one_player }; // unknown, start2, 2xunknown, cabinet, 2xcoinage, start1
|
||||
end
|
||||
7'h5:
|
||||
7'h5: // ARMORCAR
|
||||
begin
|
||||
core_name = "ARMORCAR";
|
||||
hwsel = 2;
|
||||
input1[0] = ~status[7]; //lives35
|
||||
input1[1] = ~status[10]; // demo sounds
|
||||
end
|
||||
7'h6:
|
||||
7'h6: // MOONWAR
|
||||
begin
|
||||
core_name = "MOONWAR ";
|
||||
hwsel = 2;
|
||||
input0 = ~{ m_coin1, m_coin2, 1'b0, dial };
|
||||
input1 = ~{ m_fireA, m_fireB, m_fireC, m_fireD, m_two_players, m_one_player, /*live345*/~status[8:7] };
|
||||
input2 = ~{ 4'h0, 1'b1, 2'b11, 1'b0 }; // 4xunused, cabinet, coinage, p2fire(cocktail)
|
||||
end
|
||||
7'h7:
|
||||
7'h7: // SPDCOIN
|
||||
begin
|
||||
core_name = "SPDCOIN ";
|
||||
hwsel = 2;
|
||||
input0 = ~{ m_coin1, m_coin2, m_left, m_right, m_two_players, 1'b0, m_one_player, 1'b0 };
|
||||
input1 = { 4'hf, 2'b00, 1'b0, 1'b0 }; // 6xunused, freeplay, freeze
|
||||
input2 = { 4'hf, ~status[7], status[11], 1'b1, 1'b1}; // 4xunused, lives35, difficulty, unknown, unused
|
||||
end
|
||||
7'h8:
|
||||
7'h8: // CALIPSO
|
||||
begin
|
||||
core_name = "CALIPSO ";
|
||||
hwsel = 3;
|
||||
input0 = ~{ m_coin1, m_coin2, m_left, m_right, m_down, m_up, 1'b1, m_two_players|m_fire2A }; // coin1, coin2, left, right, down, up, unused, start 2p / player2 fire
|
||||
input1 = ~{ 1'b1, 1'b1, m_left2, m_right2, m_down2, m_up2, status[10], status[7] }; // unused, unused, left, right, down, up, demo sounds, lives 3/5
|
||||
input2 = ~{ 5'b0, 2'b10, m_fireA | m_one_player }; // unused[7:3], coin dip[2:1], start 1p / player1 fire
|
||||
end
|
||||
7'h9:
|
||||
7'h9: // DARKPLNT
|
||||
begin
|
||||
core_name = "DARKPLNT";
|
||||
hwsel = 4;
|
||||
input0 = ~{ m_coin1, m_coin2, 3'b000, m_two_players | m_fireB, m_one_player | m_fireA, m_fireC };
|
||||
input1 = { darkplnt_dial_scrambled, /*lives*/status[7], /*bonus*/1'b0 };
|
||||
input2 = { /*unk*/4'hf, /*bonus life*/1'b0, /*coinage*/ 2'b10, /*unk*/1'b1 };
|
||||
end
|
||||
7'hA:
|
||||
7'hA: // ANTEATER
|
||||
begin
|
||||
core_name = "ANTEATER";
|
||||
hwsel = 6;
|
||||
input0 = ~{ m_coin1, m_coin2, m_left, m_right, m_down, m_up, m_fireA, m_fireB };
|
||||
input1 = ~{ m_fire2A, m_fire2B, m_left2, m_right2, m_up2, m_down2, /*demosdns*/status[10], /*lives35*/status[7] };
|
||||
input2 = ~{ 1'b1, m_two_players, 2'b10, 3'b111, m_one_player };
|
||||
end
|
||||
7'hB:
|
||||
7'hB: // LOSTTOMB
|
||||
begin
|
||||
core_name = "LOSTTOMB";
|
||||
hwsel = 7;
|
||||
input0 = ~{ m_coin1, m_coin2, m_left, m_right, m_down, m_up, m_one_player, m_two_players };
|
||||
input1 = ~{ 1'b0, m_fireA, m_left2, m_right2, m_down2, m_up2, /*lives35/free play/invulnerability*/~(status[8:7]+1'd1) };
|
||||
input2 = ~{ 4'h0, status[10], 2'b10, 1'b0 }; //4xunused, demo sounds, 2xcoinage, unused
|
||||
end
|
||||
7'hC:
|
||||
7'hC: // MARS
|
||||
begin
|
||||
core_name = "MARS ";
|
||||
hwsel = 10;
|
||||
input0 = ~{ m_coin1, m_coin2, m_left, m_right, m_left2 | m_fireA, m_right2 | m_fireB, 1'b0, 1'b0 };
|
||||
input1 = ~{ m_one_player, m_two_players, 4'h0, /*coinage*/2'b11 };
|
||||
input2 = ~{ m_up2 | m_fireC, m_down, m_down2 | m_fireD, m_up, /*lives*/status[7], /*unk*/1'b0, /*cabinet*/1'b1, 1'b0 };
|
||||
end
|
||||
7'hD:
|
||||
7'hD: // ATLANTIS
|
||||
begin
|
||||
core_name = "ATLANTIS";
|
||||
hwsel = 0;
|
||||
input1[0] = 1'b0; // upright
|
||||
input1[1] = ~status[7]; // lives35
|
||||
end
|
||||
7'hE:
|
||||
7'hE: // STRATGYX
|
||||
begin
|
||||
core_name = "STRATGYX";
|
||||
hwsel = 5;
|
||||
orientation = 2'b10;
|
||||
input0 = ~{ m_coin1, m_coin2, m_left, m_right, m_fireA, 1'b0, m_fireB, m_up2 };
|
||||
input1 = ~{ m_one_player, m_two_players, m_left2, m_right2, m_fire2A, m_fire2B, ~status[8:7] };
|
||||
input2 = ~{ m_fire2C, m_down, m_fireC, m_up, /*upright*/1'b1, /*coinage*/2'b00, m_down2 };
|
||||
end
|
||||
7'hF:
|
||||
7'hF: // TURTLES
|
||||
begin
|
||||
core_name = "TURTLES ";
|
||||
hwsel = 11;
|
||||
input0 = ~{ m_coin1, m_coin2, m_left, m_right, m_fireA, 1'b0, 1'b0, m_up2 };
|
||||
input1 = ~{ m_one_player, m_two_players, m_left2, m_right2, m_fire2A, 1'b0, ~status[8:7] };
|
||||
input2 = ~{ 1'b0, m_down, 1'b0, m_up, /*upright*/1'b1, /*coinage*/2'b00, m_down2 };
|
||||
end
|
||||
7'h10:
|
||||
7'h10: // MINEFLD
|
||||
begin
|
||||
core_name = "MINEFLD ";
|
||||
hwsel = 8;
|
||||
input0 = ~{ m_coin1, m_coin2, m_left, m_right, m_down, m_up, /*start level*/status[11], m_fireA };
|
||||
input1 = ~{ /*2xunk*/2'b00, m_left2, m_right2, m_down2, m_up2, /*demosnd*/status[10], /*lives35*/status[7] };
|
||||
input2 = ~{ /*unk*/1'b0, m_two_players, /*2xunk*/2'b00, /*difficulty*/status[9:8], /*coinage*/1'b0, m_one_player };
|
||||
end
|
||||
7'h11:
|
||||
7'h11: // RESCUE
|
||||
begin
|
||||
core_name = "RESCUE ";
|
||||
hwsel = 9;
|
||||
input0 = ~{ m_coin1, m_coin2, m_left, m_right, m_down, m_up, /*start level*/status[9], m_fireA };
|
||||
input1 = ~{ /*2xunk*/2'b00, m_left2, m_right2, m_down2, m_up2, /*demosnd*/status[10], /*lives35*/status[7] };
|
||||
input2 = ~{ /*unk*/1'b0, m_two_players, /*2xunk*/2'b00, /*difficulty*/~status[8], /*coinage*/2'b11, m_one_player };
|
||||
end
|
||||
7'h12:
|
||||
7'h12: // MIMONKEY
|
||||
begin
|
||||
core_name = "MIMONKEY";
|
||||
hwsel = 12;
|
||||
input2[5] = status[9]; // infinite lives
|
||||
end
|
||||
@@ -225,7 +207,6 @@ always @(*) begin
|
||||
default:
|
||||
begin
|
||||
hwsel = 0;
|
||||
core_name = "SCRAMBLE";
|
||||
end
|
||||
endcase
|
||||
end
|
||||
@@ -292,10 +273,10 @@ wire key_pressed;
|
||||
wire [7:0] key_code;
|
||||
|
||||
user_io #(
|
||||
.STRLEN(8+($size(CONF_STR)>>3)))
|
||||
.STRLEN($size(CONF_STR)>>3))
|
||||
user_io(
|
||||
.clk_sys (clk_sys ),
|
||||
.conf_str ({core_name, CONF_STR}),
|
||||
.conf_str (CONF_STR ),
|
||||
.SPI_CLK (SPI_SCK ),
|
||||
.SPI_SS_IO (CONF_DATA0 ),
|
||||
.SPI_MISO (SPI_DO ),
|
||||
@@ -462,14 +443,21 @@ spinner spinner (
|
||||
.strobe(vs),
|
||||
.spin_angle(darkplnt_dial)
|
||||
);
|
||||
wire [5:0] darkplnt_dial_scrambled = {
|
||||
darkplnt_dial[3],
|
||||
darkplnt_dial[5],
|
||||
darkplnt_dial[6],
|
||||
darkplnt_dial[4],
|
||||
darkplnt_dial[2:1]
|
||||
|
||||
wire [5:0] dp_remap[64] =
|
||||
'{
|
||||
6'h03, 6'h02, 6'h00, 6'h01, 6'h21, 6'h20, 6'h22, 6'h23,
|
||||
6'h33, 6'h32, 6'h30, 6'h31, 6'h11, 6'h10, 6'h12, 6'h13,
|
||||
6'h17, 6'h16, 6'h14, 6'h15, 6'h35, 6'h34, 6'h36, 6'h37,
|
||||
6'h3f, 6'h3e, 6'h3c, 6'h3d, 6'h1d, 6'h1c, 6'h1e, 6'h1f,
|
||||
6'h1b, 6'h1a, 6'h18, 6'h19, 6'h39, 6'h38, 6'h3a, 6'h3b,
|
||||
6'h2b, 6'h2a, 6'h28, 6'h29, 6'h09, 6'h08, 6'h0a, 6'h0b,
|
||||
6'h0f, 6'h0e, 6'h0c, 6'h0d, 6'h2d, 6'h2c, 6'h2e, 6'h2f,
|
||||
6'h27, 6'h26, 6'h24, 6'h25, 6'h05, 6'h04, 6'h06, 6'h07
|
||||
};
|
||||
|
||||
wire [5:0] darkplnt_dial_scrambled = dp_remap[darkplnt_dial[6:1]];
|
||||
|
||||
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;
|
||||
|
||||
@@ -585,7 +585,11 @@ begin
|
||||
if (ENA = '1') then
|
||||
|
||||
if (sld_l = '0') then
|
||||
shell_cnt <= hpla;
|
||||
if I_HWSEL = I_HWSEL_DARKPLNT then
|
||||
shell_cnt <= 240 - hpla;
|
||||
else
|
||||
shell_cnt <= hpla;
|
||||
end if;
|
||||
elsif (cblank_l = '1') then
|
||||
shell_cnt <= shell_cnt + "1";
|
||||
else
|
||||
@@ -781,10 +785,14 @@ begin
|
||||
video(2)(3) := '0'; -- r
|
||||
|
||||
if (vidout_l = '0') then -- cs_l on col rom
|
||||
|
||||
video(0)(2 downto 0) := obj_lut_out(7 downto 6) & '0';
|
||||
video(1)(2 downto 0) := obj_lut_out(5 downto 3);
|
||||
video(2)(2 downto 0) := obj_lut_out(2 downto 0);
|
||||
if I_HWSEL = I_HWSEL_DARKPLNT then
|
||||
video(0) := "00" & obj_lut_out(5 downto 3);
|
||||
video(2) := "00" & obj_lut_out(2 downto 0);
|
||||
else
|
||||
video(0)(2 downto 0) := obj_lut_out(7 downto 6) & '0';
|
||||
video(1)(2 downto 0) := obj_lut_out(5 downto 3);
|
||||
video(2)(2 downto 0) := obj_lut_out(2 downto 0);
|
||||
end if;
|
||||
else
|
||||
video(0)(2 downto 0) := "000";
|
||||
video(1)(2 downto 0) := "000";
|
||||
|
||||
@@ -10,6 +10,12 @@
|
||||
-- Wacko: control Captain Krooz'r with the mouse, shoot with the joystick
|
||||
-- Kozmik Krooz'r: use the mouse for movement and shoot, rotate the turret with the joystick
|
||||
|
||||
-- Create ROM and ARC files from MAME ROM zip files using the mra utility and the MRA files.
|
||||
-- Copy the RBF and the ARC files to the same folder.
|
||||
-- Example: mra -z /path/to/mame/roms Tron.mra
|
||||
-- Copy the ROM files to the root of the SD Card.
|
||||
--
|
||||
-- MRA utilty: https://github.com/sebdel/mra-tools-c
|
||||
---------------------------------------------------------------------------------
|
||||
-- DE10_lite Top level for Satan Hollow (Midway MCR) by Dar (darfpga@aol.fr) (19/10/2019)
|
||||
-- http://darfpga.blogspot.fr
|
||||
@@ -27,4 +27,4 @@ DATE = "13:02:51 November 09, 2019"
|
||||
|
||||
# Revisions
|
||||
|
||||
PROJECT_REVISION = "SatansHollow"
|
||||
PROJECT_REVISION = "mcr2"
|
||||
@@ -25,7 +25,7 @@
|
||||
# Notes:
|
||||
#
|
||||
# 1) The default values for assignments are stored in the file:
|
||||
# SatansHollow_assignment_defaults.qdf
|
||||
# mcr2_assignment_defaults.qdf
|
||||
# If this file doesn't exist, see file:
|
||||
# assignment_defaults.qdf
|
||||
#
|
||||
@@ -158,7 +158,7 @@ set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
|
||||
# Analysis & Synthesis Assignments
|
||||
# ================================
|
||||
set_global_assignment -name FAMILY "Cyclone III"
|
||||
set_global_assignment -name TOP_LEVEL_ENTITY SatansHollow_MiST
|
||||
set_global_assignment -name TOP_LEVEL_ENTITY MCR2_MiST
|
||||
set_global_assignment -name DEVICE_FILTER_PIN_COUNT 144
|
||||
set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8
|
||||
set_global_assignment -name DEVICE_FILTER_PACKAGE TQFP
|
||||
@@ -213,7 +213,7 @@ set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top
|
||||
|
||||
# end ENTITY(SatansHollow_MiST)
|
||||
# -----------------------------
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/SatansHollow_MiST.sv
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/MCR2_MiST.sv
|
||||
set_global_assignment -name VHDL_FILE rtl/satans_hollow.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/satans_hollow_sound_board.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/YM2149_linmix_sep.vhd
|
||||
34
Arcade_MiST/Midway MCR 2/MCR2/meta/Domino Man.mra
Normal file
34
Arcade_MiST/Midway MCR 2/MCR2/meta/Domino Man.mra
Normal file
@@ -0,0 +1,34 @@
|
||||
<misterromdescription>
|
||||
<name>Domino Man</name>
|
||||
<mameversion>0216</mameversion>
|
||||
<mratimestamp>201912310000</mratimestamp>
|
||||
<year>1983</year>
|
||||
<manufacturer>Bally Midway</manufacturer>
|
||||
<category>Action</category>
|
||||
<rbf>MCR2</rbf>
|
||||
<setname>domino</setname>
|
||||
<switches>
|
||||
<dip bits="8" name="Music" ids="Off,On"/>
|
||||
<dip bits="9" name="Skin Color" ids="Light,Dark"/>
|
||||
</switches>
|
||||
<rom index="1">
|
||||
<part>5</part>
|
||||
</rom>
|
||||
<rom index="0" zip="domino.zip" md5="112359d5a207884821f6df0f0c1c4d2c" type="merged|nonmerged">
|
||||
<part crc="3bf3bb1c" name="dmanpg0.bin"/>
|
||||
<part crc="85cf1d69" name="dmanpg1.bin"/>
|
||||
<part crc="7dd2177a" name="dmanpg2.bin"/>
|
||||
<part crc="f2e0aa44" name="dmanpg3.bin"/>
|
||||
<part repeat="16384">00</part>
|
||||
<part crc="fa982dcc" name="dm-a7.snd"/>
|
||||
<part crc="72839019" name="dm-a8.snd"/>
|
||||
<part crc="ad760da7" name="dm-a9.snd"/>
|
||||
<part crc="958c7287" name="dm-a10.snd"/>
|
||||
<part crc="9163007f" name="dmanbg0.bin"/>
|
||||
<part crc="28615c56" name="dmanbg1.bin"/>
|
||||
<part crc="0b1f9f9e" name="dmanfg0.bin"/>
|
||||
<part crc="16aa4b9b" name="dmanfg1.bin"/>
|
||||
<part crc="4a8e76b8" name="dmanfg2.bin"/>
|
||||
<part crc="1f39257e" name="dmanfg3.bin"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
31
Arcade_MiST/Midway MCR 2/MCR2/meta/Kozmik Kroozr.mra
Normal file
31
Arcade_MiST/Midway MCR 2/MCR2/meta/Kozmik Kroozr.mra
Normal file
@@ -0,0 +1,31 @@
|
||||
<misterromdescription>
|
||||
<name>Kozmik Krooz'r</name>
|
||||
<mameversion>0216</mameversion>
|
||||
<mratimestamp>201912310000</mratimestamp>
|
||||
<year>1983</year>
|
||||
<manufacturer>Bally Midway</manufacturer>
|
||||
<category>Action</category>
|
||||
<rbf>MCR2</rbf>
|
||||
<setname>kroozr</setname>
|
||||
<rom index="1">
|
||||
<part>4</part>
|
||||
</rom>
|
||||
<rom index="0" zip="kroozr.zip" md5="0435ff192c0b93107af54d69d7eaf48f" type="merged|nonmerged">
|
||||
<part crc="61e02045" name="kozmkcpu.2d"/>
|
||||
<part crc="caabed57" name="kozmkcpu.3d"/>
|
||||
<part crc="2bc83fc7" name="kozmkcpu.4d"/>
|
||||
<part crc="a0ec38c1" name="kozmkcpu.5d"/>
|
||||
<part crc="7044f2b6" name="kozmkcpu.6d"/>
|
||||
<part repeat="8192">00</part>
|
||||
<part crc="6736e433" name="kozmksnd.7a"/>
|
||||
<part crc="ea9cd919" name="kozmksnd.8a"/>
|
||||
<part crc="9dfa7994" name="kozmksnd.9a"/>
|
||||
<part repeat="4096">00</part>
|
||||
<part crc="eda6ed2d" name="kozmkcpu.3g"/>
|
||||
<part crc="ddde894b" name="kozmkcpu.4g"/>
|
||||
<part crc="ca60e2cc" name="kozmkvid.1e"/>
|
||||
<part crc="4e23b35b" name="kozmkvid.1d"/>
|
||||
<part crc="c6041ba7" name="kozmkvid.1b"/>
|
||||
<part crc="b57fb0ff" name="kozmkvid.1a"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
31
Arcade_MiST/Midway MCR 2/MCR2/meta/Satans Hollow.mra
Normal file
31
Arcade_MiST/Midway MCR 2/MCR2/meta/Satans Hollow.mra
Normal file
@@ -0,0 +1,31 @@
|
||||
<misterromdescription>
|
||||
<name>Satan's Hollow</name>
|
||||
<mameversion>0216</mameversion>
|
||||
<mratimestamp>201912310000</mratimestamp>
|
||||
<year>1983</year>
|
||||
<manufacturer>Bally Midway</manufacturer>
|
||||
<category>Action</category>
|
||||
<rbf>MCR2</rbf>
|
||||
<setname>shollow</setname>
|
||||
<rom index="1">
|
||||
<part>0</part>
|
||||
</rom>
|
||||
<rom index="0" zip="shollow.zip" md5="cc2c7141ad992cffa1bd34ee74952152" type="merged|nonmerged">
|
||||
<part crc="95e2b800" name="sh-pro.00"/>
|
||||
<part crc="b99f6ff8" name="sh-pro.01"/>
|
||||
<part crc="1202c7b2" name="sh-pro.02"/>
|
||||
<part crc="0a64afb9" name="sh-pro.03"/>
|
||||
<part crc="22fa9175" name="sh-pro.04"/>
|
||||
<part crc="1716e2bb" name="sh-pro.05"/>
|
||||
<part crc="55a297cc" name="sh-snd.01"/>
|
||||
<part crc="46fc31f6" name="sh-snd.02"/>
|
||||
<part crc="b1f4a6a8" name="sh-snd.03"/>
|
||||
<part repeat="4096">00</part>
|
||||
<part crc="3e2b333c" name="sh-bg.00"/>
|
||||
<part crc="d1d70cc4" name="sh-bg.01"/>
|
||||
<part crc="33f4554e" name="sh-fg.00"/>
|
||||
<part crc="ba1a38b4" name="sh-fg.01"/>
|
||||
<part crc="6b57f6da" name="sh-fg.02"/>
|
||||
<part crc="37ea9d07" name="sh-fg.03"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
34
Arcade_MiST/Midway MCR 2/MCR2/meta/Tron.mra
Normal file
34
Arcade_MiST/Midway MCR 2/MCR2/meta/Tron.mra
Normal file
@@ -0,0 +1,34 @@
|
||||
<misterromdescription>
|
||||
<name>Tron</name>
|
||||
<mameversion>0218</mameversion>
|
||||
<mratimestamp>202002110000</mratimestamp>
|
||||
<year>1982</year>
|
||||
<manufacturer>Bally Midway</manufacturer>
|
||||
<category>Action</category>
|
||||
<rbf>MCR2</rbf>
|
||||
<setname>tron</setname>
|
||||
<switches>
|
||||
<dip bits="8" name="Allow Continue" ids="No,Yes"/>
|
||||
</switches>
|
||||
<rom index="1">
|
||||
<part>1</part>
|
||||
</rom>
|
||||
<rom index="0" zip="tron.zip" md5="8b232b334aa20263ab1c3a77796f8885" type="merged|nonmerged">
|
||||
<part crc="0de0471a" name="pro0.d2"/>
|
||||
<part crc="8ddf8717" name="scpu_pgb.d3"/>
|
||||
<part crc="4241e3a0" name="scpu_pgc.d4"/>
|
||||
<part crc="035d2fe7" name="scpu_pgd.d5"/>
|
||||
<part crc="24c185d8" name="scpu_pgc.d6"/>
|
||||
<part crc="38c4bbaf" name="scpu_pgd.d7"/>
|
||||
<part crc="765e6eba" name="ssi_0a.a7"/>
|
||||
<part crc="1b90ccdd" name="ssi_0b.a8"/>
|
||||
<part crc="3a4bc629" name="ssi_0c.a9"/>
|
||||
<part repeat="4096">00</part>
|
||||
<part crc="1a9ed2f5" name="scpu_bgg.g3"/>
|
||||
<part crc="3220f974" name="scpu_bgh.g4"/>
|
||||
<part crc="bc036d1d" name="vga.e1"/>
|
||||
<part crc="58ee14d3" name="vgb.dc1"/>
|
||||
<part crc="3329f9d4" name="vgc.cb1"/>
|
||||
<part crc="9743f873" name="vga.a1"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
47
Arcade_MiST/Midway MCR 2/MCR2/meta/Two Tigers.mra
Normal file
47
Arcade_MiST/Midway MCR 2/MCR2/meta/Two Tigers.mra
Normal file
@@ -0,0 +1,47 @@
|
||||
<misterromdescription>
|
||||
<name>Two Tigers (Tron conversion)</name>
|
||||
<mameversion>0218</mameversion>
|
||||
<mratimestamp>202002110000</mratimestamp>
|
||||
<year>1984</year>
|
||||
<manufacturer>Bally Midway</manufacturer>
|
||||
<category>Shooter</category>
|
||||
<rbf>MCR2</rbf>
|
||||
<setname>twotigerc</setname>
|
||||
<rom index="1">
|
||||
<part>2</part>
|
||||
</rom>
|
||||
<rom index="0" zip="twotiger.zip" md5="fa00775a4b4c94b464bb402b3aa2c1be" type="merged">
|
||||
<part crc="e77a924b" name="2tgrpg0.bin"/>
|
||||
<part crc="2699ebdc" name="2tgrpg1.bin"/>
|
||||
<part crc="b5ca3f17" name="2tgrpg2.bin"/>
|
||||
<part crc="8aa82049" name="2tgrpg3.bin"/>
|
||||
<part repeat="16384">00</part>
|
||||
<part crc="4620d970" name="2tgra7.bin"/>
|
||||
<part crc="e95d8cfe" name="2tgra8.bin"/>
|
||||
<part crc="81e6ce0e" name="2tgra9.bin"/>
|
||||
<part repeat="4096">00</part>
|
||||
<part crc="52f69068" name="2tgrbg0.bin"/>
|
||||
<part crc="758d4f7d" name="2tgrbg1.bin"/>
|
||||
<part crc="4abf3ca0" name="2tgrfg0.bin"/>
|
||||
<part crc="fbcaffa5" name="2tgrfg1.bin"/>
|
||||
<part crc="08e3e1a6" name="2tgrfg2.bin"/>
|
||||
<part crc="9b22697b" name="2tgrfg3.bin"/>
|
||||
</rom>
|
||||
<rom index="0" zip="twotigerc.zip" md5="fa00775a4b4c94b464bb402b3aa2c1be" type="nonmerged">
|
||||
<part crc="e77a924b" name="2tgrpg0.bin"/>
|
||||
<part crc="2699ebdc" name="2tgrpg1.bin"/>
|
||||
<part crc="b5ca3f17" name="2tgrpg2.bin"/>
|
||||
<part crc="8aa82049" name="2tgrpg3.bin"/>
|
||||
<part repeat="16384">00</part>
|
||||
<part crc="4620d970" name="2tgra7.bin"/>
|
||||
<part crc="e95d8cfe" name="2tgra8.bin"/>
|
||||
<part crc="81e6ce0e" name="2tgra9.bin"/>
|
||||
<part repeat="4096">00</part>
|
||||
<part crc="52f69068" name="2tgrbg0.bin"/>
|
||||
<part crc="758d4f7d" name="2tgrbg1.bin"/>
|
||||
<part crc="4abf3ca0" name="2tgrfg0.bin"/>
|
||||
<part crc="fbcaffa5" name="2tgrfg1.bin"/>
|
||||
<part crc="08e3e1a6" name="2tgrfg2.bin"/>
|
||||
<part crc="9b22697b" name="2tgrfg3.bin"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
30
Arcade_MiST/Midway MCR 2/MCR2/meta/Wacko.mra
Normal file
30
Arcade_MiST/Midway MCR 2/MCR2/meta/Wacko.mra
Normal file
@@ -0,0 +1,30 @@
|
||||
<misterromdescription>
|
||||
<name>Wacko</name>
|
||||
<mameversion>0216</mameversion>
|
||||
<mratimestamp>201912310000</mratimestamp>
|
||||
<year>1983</year>
|
||||
<manufacturer>Bally Midway</manufacturer>
|
||||
<category>Action</category>
|
||||
<rbf>MCR2</rbf>
|
||||
<setname>wacko</setname>
|
||||
<rom index="1">
|
||||
<part>3</part>
|
||||
</rom>
|
||||
<rom index="0" zip="wacko.zip" md5="157209d82b536114e346517818a89184" type="merged|nonmerged">
|
||||
<part crc="c98e29b6" name="wackocpu.2d"/>
|
||||
<part crc="90b89774" name="wackocpu.3d"/>
|
||||
<part crc="515edff7" name="wackocpu.4d"/>
|
||||
<part crc="9b01bf32" name="wackocpu.5d"/>
|
||||
<part repeat="16384">00</part>
|
||||
<part crc="1a58763f" name="wackosnd.7a"/>
|
||||
<part crc="a4e3c771" name="wackosnd.8a"/>
|
||||
<part crc="155ba3dd" name="wackosnd.9a"/>
|
||||
<part repeat="4096">00</part>
|
||||
<part crc="33160eb1" name="wackocpu.3g"/>
|
||||
<part crc="daf37d7c" name="wackocpu.4g"/>
|
||||
<part crc="dca59be7" name="wackovid.1e"/>
|
||||
<part crc="a02f1672" name="wackovid.1d"/>
|
||||
<part crc="7d899790" name="wackovid.1b"/>
|
||||
<part crc="080be3ad" name="wackovid.1a"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
@@ -17,15 +17,15 @@
|
||||
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
//============================================================================
|
||||
|
||||
module SatansHollow_MiST(
|
||||
output LED,
|
||||
module MCR2_MiST(
|
||||
output LED,
|
||||
output [5:0] VGA_R,
|
||||
output [5:0] VGA_G,
|
||||
output [5:0] VGA_B,
|
||||
output VGA_HS,
|
||||
output VGA_VS,
|
||||
output AUDIO_L,
|
||||
output AUDIO_R,
|
||||
output AUDIO_R,
|
||||
input SPI_SCK,
|
||||
output SPI_DO,
|
||||
input SPI_DI,
|
||||
@@ -48,19 +48,15 @@ module SatansHollow_MiST(
|
||||
|
||||
`include "rtl/build_id.v"
|
||||
|
||||
// Uncomment one to choose core name/inputs
|
||||
`define CORE_NAME "SHOLLOW"
|
||||
//`define CORE_NAME "TRON"
|
||||
//`define CORE_NAME "TWOTIGER"
|
||||
//`define CORE_NAME "WACKO"
|
||||
//`define CORE_NAME "KROOZR"
|
||||
//`define CORE_NAME "DOMINO"
|
||||
wire [6:0] core_mod;
|
||||
|
||||
localparam CONF_STR = {
|
||||
`CORE_NAME,";ROM;",
|
||||
"O2,Rotate Controls,Off,On;",
|
||||
"O5,Blend,Off,On;",
|
||||
"O6,Swap Joysticks,Off,On;",
|
||||
"DIP;",
|
||||
"O7,Service,Off,On;",
|
||||
"T0,Reset;",
|
||||
"V,v2.0.",`BUILD_DATE
|
||||
@@ -80,49 +76,67 @@ reg [7:0] input_3;
|
||||
reg [7:0] input_4;
|
||||
|
||||
always @(*) begin
|
||||
input_0 = 8'hFF;
|
||||
input_1 = 8'hFF;
|
||||
input_2 = 8'hFF;
|
||||
input_3 = 8'hFF;
|
||||
input_4 = 8'hFF;
|
||||
oneplayer = 1'b1;
|
||||
orientation = 2'b10;
|
||||
|
||||
if (`CORE_NAME == "SHOLLOW") begin
|
||||
case (core_mod)
|
||||
7'h0: // SHOLLOW
|
||||
begin
|
||||
orientation = 2'b11;
|
||||
input_0 = ~{ service, 1'b0, m_tilt, 1'b0, m_two_players, m_one_player, m_coin2, m_coin1 };
|
||||
input_1 = ~{ m_fire2A, m_fire2B, m_right2, m_left2, m_fireA, m_fireB, m_right, m_left };
|
||||
input_2 = 8'hFF;
|
||||
input_3 = ~{ 8'b00000010 };
|
||||
end else if (`CORE_NAME == "TRON") begin
|
||||
end
|
||||
7'h1: // TRON
|
||||
begin
|
||||
orientation = 2'b11;
|
||||
oneplayer = 1'b0;
|
||||
input_0 = ~{ service, 1'b0, m_tilt, m_fireA, m_two_players, m_one_player, m_coin2, m_coin1 };
|
||||
input_1 = ~{ 1'b0, spin_angle2 };
|
||||
input_2 = ~{ m_down, m_up, m_right, m_left, m_down, m_up, m_right, m_left };
|
||||
input_3 = ~{ m_fireA, 7'b00000010 };
|
||||
input_3 = ~{ m_fireA, 4'b0000,/*allow cont*/status[8], 2'b10 };
|
||||
input_4 = ~{ 1'b0, spin_angle2 };
|
||||
end else if (`CORE_NAME == "TWOTIGER") begin
|
||||
end
|
||||
7'h2: // TWOTIGER
|
||||
begin
|
||||
oneplayer = 1'b0;
|
||||
input_0 = ~{ service, 1'b0, m_tilt, m_three_players, m_two_players, m_one_player, m_coin2, m_coin1 };
|
||||
input_1 = ~{ 1'b0, spin_angle1 };
|
||||
input_2 = ~{ 4'b0000, m_fire2B, m_fire2A, m_fireB, m_fireA };
|
||||
input_3 = 8'hFF;
|
||||
input_4 = ~{ 1'b0, spin_angle2 };
|
||||
end else if (`CORE_NAME == "WACKO") begin
|
||||
end
|
||||
7'h3: // WACKO
|
||||
begin
|
||||
input_0 = ~{ service, 1'b0, m_tilt, 1'b0, m_two_players, m_one_player, m_coin2, m_coin1 };
|
||||
input_1 = x_pos[10:3];
|
||||
input_2 = y_pos[10:3];
|
||||
input_3 = ~{ 8'b01000000 };
|
||||
input_4 = ~{ m_up2, m_down2, m_left2, m_right2, m_up, m_down, m_left, m_right };
|
||||
end else if (`CORE_NAME == "KROOZR") begin
|
||||
end
|
||||
7'h4: // KROOZR
|
||||
begin
|
||||
input_0 = ~{ service, 1'b0, m_tilt, m_fireA | mouse_btns[0], m_two_players, m_one_player, m_coin2, m_coin1 };
|
||||
input_1 = ~{ (m_fireB | mouse_btns[1]), spin_angle1[6], 3'b111, spin_angle1[5:3] };
|
||||
input_2 = { x_pos_kroozr[9], x_pos_kroozr[9], x_pos_kroozr[7:2] };
|
||||
input_3 = ~{ 8'b01000000 };
|
||||
input_4 = { y_pos_kroozr[9], y_pos_kroozr[9], y_pos_kroozr[7:2] };
|
||||
end else if (`CORE_NAME == "DOMINO") begin
|
||||
end
|
||||
7'h5: // DOMINO
|
||||
begin
|
||||
input_0 = ~{ service, 1'b0, m_tilt, m_fireA, m_two_players, m_one_player, m_coin2, m_coin1 };
|
||||
input_1 = ~{ 4'b0000, m_down, m_up, m_right, m_left };
|
||||
input_2 = ~{ 3'b000, m_fire2A, m_down2, m_up2, m_right2, m_left2 };
|
||||
input_3 = ~{ 8'b01000000 };
|
||||
input_3 = ~{ 6'b010000,/*skin*/status[9], /*music*/status[8] };
|
||||
end
|
||||
default: ;
|
||||
endcase
|
||||
end
|
||||
|
||||
assign LED = ~ioctl_downl;
|
||||
@@ -145,10 +159,7 @@ wire [7:0] joystick_0;
|
||||
wire [7:0] joystick_1;
|
||||
wire scandoublerD;
|
||||
wire ypbpr;
|
||||
wire [15:0] audio_l, audio_r;
|
||||
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;
|
||||
@@ -157,6 +168,33 @@ wire signed [8:0] mouse_y;
|
||||
wire mouse_strobe;
|
||||
reg [7:0] mouse_flags;
|
||||
|
||||
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 ),
|
||||
.mouse_x (mouse_x ),
|
||||
.mouse_y (mouse_y ),
|
||||
.mouse_strobe (mouse_strobe ),
|
||||
.mouse_flags (mouse_flags ),
|
||||
.joystick_0 (joystick_0 ),
|
||||
.joystick_1 (joystick_1 ),
|
||||
.status (status )
|
||||
);
|
||||
|
||||
wire [15:0] rom_addr;
|
||||
wire [15:0] rom_do;
|
||||
wire [13:0] snd_addr;
|
||||
@@ -238,6 +276,11 @@ always @(posedge clk_sys) begin
|
||||
reset <= status[0] | buttons[1] | ioctl_downl | ~rom_loaded;
|
||||
end
|
||||
|
||||
wire [15:0] audio_l, audio_r;
|
||||
wire hs, vs, cs;
|
||||
wire blankn;
|
||||
wire [2:0] g, r, b;
|
||||
|
||||
satans_hollow satans_hollow(
|
||||
.clock_40(clk_sys),
|
||||
.reset(reset),
|
||||
@@ -271,8 +314,8 @@ satans_hollow satans_hollow(
|
||||
|
||||
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), .SD_HCNT_WIDTH(10)) mist_video(
|
||||
.clk_sys ( clk_sys ),
|
||||
@@ -298,31 +341,6 @@ mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) 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 ),
|
||||
.mouse_x (mouse_x ),
|
||||
.mouse_y (mouse_y ),
|
||||
.mouse_strobe (mouse_strobe ),
|
||||
.mouse_flags (mouse_flags ),
|
||||
.joystick_0 (joystick_0 ),
|
||||
.joystick_1 (joystick_1 ),
|
||||
.status (status )
|
||||
);
|
||||
|
||||
dac #(
|
||||
.C_bits(16))
|
||||
dac_l(
|
||||
@@ -61,6 +61,8 @@ module sdram (
|
||||
output reg [15:0] snd_q
|
||||
);
|
||||
|
||||
parameter MHZ = 16'd80; // 80 MHz default clock, set it to proper value to calculate refresh rate
|
||||
|
||||
localparam RASCAS_DELAY = 3'd2; // tRCD=20ns -> 2 cycles@<100MHz
|
||||
localparam BURST_LENGTH = 3'b000; // 000=1, 001=2, 010=4, 011=8
|
||||
localparam ACCESS_TYPE = 1'b0; // 0=sequential, 1=interleaved
|
||||
@@ -70,8 +72,8 @@ localparam NO_WRITE_BURST = 1'b1; // 0= write burst enabled, 1=only single acc
|
||||
|
||||
localparam MODE = { 3'b000, NO_WRITE_BURST, OP_MODE, CAS_LATENCY, ACCESS_TYPE, BURST_LENGTH};
|
||||
|
||||
// 64ms/8192 rows = 7.8us -> 842 cycles@108MHz
|
||||
localparam RFRSH_CYCLES = 10'd842;
|
||||
// 64ms/8192 rows = 7.8us
|
||||
localparam RFRSH_CYCLES = 16'd78*MHZ/4'd10;
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// ------------------------ cycle state machine ------------------------
|
||||
@@ -1,15 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
PROJECTS=" \
|
||||
SHOLLOW \
|
||||
TRON \
|
||||
TWOTIGER \
|
||||
WACKO \
|
||||
KROOZR \
|
||||
DOMINO"
|
||||
|
||||
for PROJECT in $PROJECTS; do
|
||||
echo "Compiling $PROJECT"
|
||||
sed -i "s/^.define CORE_NAME.*/\`define CORE_NAME \"$PROJECT\"/" rtl/SatansHollow_MiST.sv
|
||||
quartus_sh --flow compile SatansHollow.qsf && cp output_files/SatansHollow.rbf Releases/$PROJECT.rbf
|
||||
done
|
||||
@@ -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';
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
# Project-Wide Assignments
|
||||
# ========================
|
||||
set_global_assignment -name ORIGINAL_QUARTUS_VERSION 16.0.2
|
||||
set_global_assignment -name LAST_QUARTUS_VERSION 13.1
|
||||
set_global_assignment -name LAST_QUARTUS_VERSION "13.1 SP4.26"
|
||||
set_global_assignment -name PROJECT_CREATION_TIME_DATE "19:48:06 MAY 24,2017"
|
||||
set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl"
|
||||
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
|
||||
@@ -228,9 +228,9 @@ set_global_assignment -name VERILOG_FILE rtl/wsg.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/ioctrl.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/hvgen.v
|
||||
set_global_assignment -name VHDL_FILE rtl/dpram.vhd
|
||||
set_global_assignment -name VERILOG_FILE rtl/mc6809/mc6809i.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/mc6809/mc6809.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/pll.v
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/sdram.sv
|
||||
set_global_assignment -name VERILOG_FILE ../../common/CPU/MC6809/mc6809i.v
|
||||
set_global_assignment -name VERILOG_FILE ../../common/CPU/MC6809/mc6809.v
|
||||
set_global_assignment -name QIP_FILE ../../common/mist/mist.qip
|
||||
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
|
||||
@@ -1,13 +1,15 @@
|
||||
The Tower of Druaga/Mappy/Motos/DigDug II to Mist FPGA by Slingshot
|
||||
|
||||
Appropriate ROMs are required at the root of the SD Card:
|
||||
DRUAGA.ROM
|
||||
MAPPY.ROM
|
||||
MOTOS.ROM
|
||||
DIGDUG2.ROM
|
||||
|
||||
|
||||
|
||||
-- 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 motos.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/
|
||||
--
|
||||
--
|
||||
---------------------------------------------------------------------------------
|
||||
--
|
||||
-- Arcade: The Tower of Druaga port to MiSTer by MiSTer-X
|
||||
|
||||
28
Arcade_MiST/Namco Mappy Hardware/meta/digdug2.mra
Normal file
28
Arcade_MiST/Namco Mappy Hardware/meta/digdug2.mra
Normal file
@@ -0,0 +1,28 @@
|
||||
<misterromdescription>
|
||||
<name>Dig Dug 2</name>
|
||||
<setname>digdug2</setname>
|
||||
<rbf>Druaga</rbf>
|
||||
<switches>
|
||||
<dip bits="19" name="Lives" ids="3,5"/>
|
||||
<dip bits="20,21" name="Extend" ids="30k/80k,30k/100k,30k/120k,30k/150k"/>
|
||||
<dip bits="22" name="Level Select" ids="Off,On"/>
|
||||
</switches>
|
||||
<rom index="1">
|
||||
<part>03</part>
|
||||
</rom>
|
||||
<rom index="0" zip="digdug2.zip" md5="2e652e5d6a114b7bd21a96e954b7f148">
|
||||
<part name="d23_3.1d"/>
|
||||
<part name="d23_1.1b"/>
|
||||
<part name="d21_6.3m"/>
|
||||
<part name="d21_7.3n"/>
|
||||
<part name="d21_4.1k"/>
|
||||
<part name="d21_5.3b"/>
|
||||
<part name="d21-7.5k"/>
|
||||
<part name="d21-7.5k"/>
|
||||
<part name="d21-7.5k"/>
|
||||
<part name="d21-7.5k"/>
|
||||
<part name="d21-6.4c"/>
|
||||
<part name="d21-3.3m"/>
|
||||
<part name="d21-5.5b"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
25
Arcade_MiST/Namco Mappy Hardware/meta/druaga.mra
Normal file
25
Arcade_MiST/Namco Mappy Hardware/meta/druaga.mra
Normal file
@@ -0,0 +1,25 @@
|
||||
<misterromdescription>
|
||||
<name>The Tower of Druaga</name>
|
||||
<setname>druaga</setname>
|
||||
<rbf>Druaga</rbf>
|
||||
<switches>
|
||||
<dip bits="8,9" name="Lives" ids="3,2,1,5"/>
|
||||
</switches>
|
||||
<rom index="1">
|
||||
<part>01</part>
|
||||
</rom>
|
||||
<rom index="0" zip="todruaga.zip" md5="ef0d64d4d3fc4f594389d2b28c677c20">
|
||||
<part name="td2_3.1d"/>
|
||||
<part name="td2_1.1b"/>
|
||||
<part name="td1_6.3m"/>
|
||||
<part name="td1_6.3m"/>
|
||||
<part name="td1_7.3n"/>
|
||||
<part name="td1_7.3n"/>
|
||||
<part name="td1_4.1k"/>
|
||||
<part name="td1_5.3b"/>
|
||||
<part name="td1-7.5k"/>
|
||||
<part name="td1-6.4c"/>
|
||||
<part name="td1-3.3m"/>
|
||||
<part name="td1-5.5b"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
34
Arcade_MiST/Namco Mappy Hardware/meta/mappy.mra
Normal file
34
Arcade_MiST/Namco Mappy Hardware/meta/mappy.mra
Normal file
@@ -0,0 +1,34 @@
|
||||
<misterromdescription>
|
||||
<name>Mappy</name>
|
||||
<setname>mappy</setname>
|
||||
<switches>
|
||||
<dip bits="10,12" name="Rank" ids="A,B,C,D,E,F,G,H"/>
|
||||
<dip bits="17,18" name="Lives" ids="3,5,1,2"/>
|
||||
<dip bits="14,16" name="Extend" ids="M1,M2,M3,M4,M5,M6,M7,None"/>
|
||||
<dip bits="13" name="Demo Sound" ids="On,Off"/>
|
||||
<dip bits="6" name="Round Progress" ids="Off,On"/>
|
||||
</switches>
|
||||
<rbf>Druaga</rbf>
|
||||
<rom index="1">
|
||||
<part>02</part>
|
||||
</rom>
|
||||
<rom index="0" zip="mappy.zip" md5="b276d97b0dc61ca668d140793fac44bf">
|
||||
<part name="mpx_3.1d"/>
|
||||
<part name="mpx_3.1d"/>
|
||||
<part name="mp1_2.1c"/>
|
||||
<part name="mpx_1.1b"/>
|
||||
<part name="mp1_6.3m"/>
|
||||
<part name="mp1_6.3m"/>
|
||||
<part name="mp1_7.3n"/>
|
||||
<part name="mp1_7.3n"/>
|
||||
<part name="mp1_4.1k"/>
|
||||
<part name="mp1_5.3b"/>
|
||||
<part name="mp1-7.5k"/>
|
||||
<part name="mp1-7.5k"/>
|
||||
<part name="mp1-7.5k"/>
|
||||
<part name="mp1-7.5k"/>
|
||||
<part name="mp1-6.4c"/>
|
||||
<part name="mp1-3.3m"/>
|
||||
<part name="mp1-5.5b"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
29
Arcade_MiST/Namco Mappy Hardware/meta/motos.mra
Normal file
29
Arcade_MiST/Namco Mappy Hardware/meta/motos.mra
Normal file
@@ -0,0 +1,29 @@
|
||||
<misterromdescription>
|
||||
<name>Motos</name>
|
||||
<setname>motos</setname>
|
||||
<rbf>Druaga</rbf>
|
||||
<switches>
|
||||
<dip bits="24" name="Rank" ids="A,B"/>
|
||||
<dip bits="23" name="Lives" ids="3,5"/>
|
||||
<dip bits="25,26" name="Extend" ids="10k/30k/ev.50k,20k/ev.50k,30k/ev.70k,20k/70k"/>
|
||||
<dip bits="27" name="Demo Sound" ids="On,Off"/>
|
||||
</switches>
|
||||
<rom index="1">
|
||||
<part>04</part>
|
||||
</rom>
|
||||
<rom index="0" zip="motos.zip" md5="446203961cff53598233d2c50db390d8">
|
||||
<part name="mo1_3.1d"/>
|
||||
<part name="mo1_1.1b"/>
|
||||
<part name="mo1_6.3m"/>
|
||||
<part name="mo1_7.3n"/>
|
||||
<part name="mo1_4.1k"/>
|
||||
<part name="mo1_5.3b"/>
|
||||
<part name="mo1-7.5k"/>
|
||||
<part name="mo1-7.5k"/>
|
||||
<part name="mo1-7.5k"/>
|
||||
<part name="mo1-7.5k"/>
|
||||
<part name="mo1-6.4c"/>
|
||||
<part name="mo1-3.3m"/>
|
||||
<part name="mo1-5.5b"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
@@ -28,28 +28,99 @@ module TheTowerofDruaga_mist (
|
||||
|
||||
);
|
||||
|
||||
// Uncomment one of these to load the default ROM:
|
||||
|
||||
`define CORE_NAME "DRUAGA"
|
||||
//`define CORE_NAME "MAPPY"
|
||||
//`define CORE_NAME "MOTOS"
|
||||
//`define CORE_NAME "DIGDUG2"
|
||||
|
||||
//`define CORE_NAME "GROBDA"
|
||||
//`define CORE_NAME "PHOZON"
|
||||
|
||||
|
||||
`include "rtl\build_id.v"
|
||||
|
||||
`define CORE_NAME "DRUAGA"
|
||||
wire [6:0] core_mod;
|
||||
|
||||
localparam CONF_STR = {
|
||||
`CORE_NAME,";ROM;",
|
||||
`CORE_NAME, ";ROM;",
|
||||
"O2,Rotate Controls,Off,On;",
|
||||
"O34,Scanlines,Off,25%,50%,75%;",
|
||||
"O5,Blend,Off,On;",
|
||||
"DIP;",
|
||||
"OU,Service Mode,Off,On;",
|
||||
"OT,Freeze,Off,On;",
|
||||
"T0,Reset;",
|
||||
"V,v1.00.",`BUILD_DATE
|
||||
};
|
||||
|
||||
wire rotate = status[2];
|
||||
wire [1:0] scanlines = status[4:3];
|
||||
wire blend = status[5];
|
||||
|
||||
wire dcFreeze = status[29];
|
||||
wire dcService = status[30];
|
||||
wire dcCabinet = 1'b0; // (upright only)
|
||||
|
||||
// The Tower of Druaga [t]
|
||||
wire [1:0] dtLives = status[9:8];
|
||||
|
||||
// Mappy [m]
|
||||
wire dmRoundP = status[6];
|
||||
wire [2:0] dmRank = status[12:10];
|
||||
wire dmDemoSnd = status[13];
|
||||
wire [2:0] dmExtend = status[16:14];
|
||||
wire [1:0] dmLives = status[18:17];
|
||||
|
||||
// DigDug2 [d]
|
||||
wire ddLives = status[19];
|
||||
wire [1:0] ddExtend = status[21:20];
|
||||
wire ddLevelSel = status[22];
|
||||
|
||||
// Motos [o]
|
||||
wire doLives = status[23];
|
||||
wire doRank = status[24];
|
||||
wire [1:0] doExtend = status[26:25];
|
||||
wire doDemoSnd = status[27];
|
||||
|
||||
reg [7:0] DSW0;
|
||||
reg [7:0] DSW1;
|
||||
reg [7:0] DSW2;
|
||||
|
||||
reg [5:0] INP0;
|
||||
reg [5:0] INP1;
|
||||
reg [2:0] INP2;
|
||||
|
||||
always @(*) begin
|
||||
INP0 = { m_fireB, m_fireA, m_left, m_down, m_right, m_up};
|
||||
INP1 = { m_fire2B, m_fire2A, m_left2, m_down2, m_right2, m_up2 };
|
||||
INP2 = { m_coin1 | m_coin2, m_two_players, m_one_player };
|
||||
DSW0 = 0;
|
||||
DSW1 = 0;
|
||||
DSW2 = 0;
|
||||
|
||||
case (core_mod)
|
||||
7'h0, 7'h1: // DRUAGA
|
||||
begin
|
||||
DSW0 = {2'd0,dtLives,4'd0};
|
||||
DSW1 = {dcCabinet,6'd0,dcFreeze};
|
||||
DSW2 = {DSW1[3:0],dcService,3'd0};
|
||||
end
|
||||
7'h2: // MAPPY
|
||||
begin
|
||||
DSW0 = {dcFreeze,dmRoundP,dmDemoSnd,2'd0,dmRank};
|
||||
DSW1 = {dmLives,dmExtend,3'd0};
|
||||
DSW2 = {{2{dcService,dcCabinet,2'd0}}};
|
||||
end
|
||||
7'h3: // DIGDUG2
|
||||
begin
|
||||
DSW0 = {2'd0,ddLives,5'd0};
|
||||
DSW1 = {dcCabinet,3'd0,dcFreeze,ddLevelSel,ddExtend};
|
||||
DSW2 = {DSW1[3:0],dcService,3'd0};
|
||||
end
|
||||
7'h4: // MOTOS
|
||||
begin
|
||||
DSW0 = {doDemoSnd,doExtend,doRank,doLives,3'd0};
|
||||
DSW1 = {dcService,dcCabinet,6'd0};
|
||||
DSW2 = {8'd0};
|
||||
end
|
||||
7'h5: ;// GROBDA
|
||||
7'h6: ;// PHOZON
|
||||
default: ;
|
||||
endcase
|
||||
end
|
||||
|
||||
assign LED = ~ioctl_downl;
|
||||
assign AUDIO_R = AUDIO_L;
|
||||
assign SDRAM_CLK = clock_48;
|
||||
@@ -70,24 +141,50 @@ 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 [2:0] r, g;
|
||||
wire [1:0] b;
|
||||
wire [14:0] rom_addr;
|
||||
wire [15:0] rom_do;
|
||||
wire [12:0] snd_addr;
|
||||
wire [15:0] snd_do;
|
||||
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 ioctl_downl;
|
||||
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;
|
||||
|
||||
/*
|
||||
ROM map
|
||||
00000-07FFF cpu0 32k 3.1d+1.1b (+2.1c in Mappy)
|
||||
08000-0BFFF spchip0 16k 6.3m
|
||||
0C000-0FFFF spchip1 16k 7.3m
|
||||
10000-11FFF cpu1 8k 4.1k
|
||||
12000-12FFF bgchip 4k 5.3b
|
||||
13000-133FF spclut 1k 7.5k
|
||||
13400-134FF bgclut 256b 6.4c
|
||||
13500-135FF wave 256b 3.3m
|
||||
13600-1361F palet 32b 5.5b
|
||||
*/
|
||||
|
||||
data_io data_io(
|
||||
.clk_sys ( clock_48 ),
|
||||
@@ -102,6 +199,11 @@ data_io data_io(
|
||||
);
|
||||
|
||||
reg port1_req, port2_req;
|
||||
wire [14:0] rom_addr;
|
||||
wire [15:0] rom_do;
|
||||
wire [12:0] snd_addr;
|
||||
wire [15:0] snd_do;
|
||||
|
||||
sdram sdram(
|
||||
.*,
|
||||
.init_n ( pll_locked ),
|
||||
@@ -154,17 +256,16 @@ always @(posedge clock_48) begin
|
||||
reset <= status[0] | buttons[1] | ioctl_downl | ~rom_loaded;
|
||||
end
|
||||
|
||||
wire [7:0] DSW0 = 0;//{2'h0,status[7:6],4'h0};
|
||||
wire [7:0] DSW1 = 0;
|
||||
wire [7:0] DSW2 = 0;//{4'h0,status[8],3'h0};
|
||||
|
||||
wire [5:0] INP0 = { m_bomb, m_fire, m_left, m_down, m_right, m_up};
|
||||
wire [5:0] INP1 = { m_bomb, m_fire, m_left, m_down, m_right, m_up};
|
||||
wire [2:0] INP2 = { btn_coin, btn_two_players, btn_one_player };
|
||||
|
||||
wire PCLK, PCLK_EN;
|
||||
wire [8:0] HPOS,VPOS;
|
||||
|
||||
wire [7:0] audio;
|
||||
wire hs, vs;
|
||||
wire hb, vb;
|
||||
wire blankn = ~(hb | vb);
|
||||
wire [2:0] r, g;
|
||||
wire [1:0] b;
|
||||
|
||||
fpga_druaga fpga_druaga(
|
||||
.MCLK(clock_48),
|
||||
.CLKCPUx2(clock_6),
|
||||
@@ -218,32 +319,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] ),
|
||||
.blend ( status[5] ),
|
||||
.scanlines ( scanlines ),
|
||||
.blend ( blend ),
|
||||
.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 #(.C_bits(16))dac(
|
||||
.clk_i(clock_48),
|
||||
.res_n_i(1),
|
||||
@@ -251,40 +333,24 @@ dac #(.C_bits(16))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;
|
||||
|
||||
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
|
||||
// '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 ( 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'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
|
||||
|
||||
@@ -1,40 +1,32 @@
|
||||
//------------------------------------------
|
||||
// I/O Chip for "Mappy/Druaga/DigDug2"
|
||||
//
|
||||
// Copyright (c) 2007 MiSTer-X
|
||||
// Copyright (c) 2007,19 MiSTer-X
|
||||
//------------------------------------------
|
||||
// TODO: DSW2 = DIPSW[23:16]
|
||||
|
||||
case ( mema[4'h8] )
|
||||
|
||||
4'h1: begin
|
||||
mema[4'h0] <= 0;
|
||||
mema[4'h1] <= 0;
|
||||
mema[4'h2] <= 0;
|
||||
mema[4'h3] <= 0;
|
||||
end
|
||||
|
||||
4'h3: begin
|
||||
4'h1,4'h3: begin
|
||||
credit_add = 0;
|
||||
credit_sub = 0;
|
||||
|
||||
if ( iCSTART12[2] & ( credits < 99 ) ) begin
|
||||
credit_add = 8'h01;
|
||||
credits = credits + 1'd1;
|
||||
credits = credits + 1;
|
||||
end
|
||||
|
||||
if ( mema[4'h9] == 0 ) begin
|
||||
if ( ( credits >= 2 ) & iCSTART12[1] ) begin
|
||||
credit_sub = 8'h02;
|
||||
credits = credits - 2'd1;
|
||||
credits = credits - 2;
|
||||
end else if ( ( credits >= 1 ) & iCSTART12[0] ) begin
|
||||
credit_sub = 8'h01;
|
||||
credits = credits - 1'd1;
|
||||
credits = credits - 1;
|
||||
end
|
||||
end
|
||||
|
||||
mema[4'h0] <= credit_add;
|
||||
mema[4'h1] <= credit_sub;
|
||||
mema[4'h1] <= credit_sub | {7'd0,CSTART12[0]};
|
||||
mema[4'h2] <= CREDIT_TENS;
|
||||
mema[4'h3] <= CREDIT_ONES;
|
||||
mema[4'h4] <= STKTRG12[3:0];
|
||||
@@ -65,21 +57,14 @@
|
||||
mema[4'h7] <= 4'hD;
|
||||
end
|
||||
|
||||
default: begin end
|
||||
default:;
|
||||
|
||||
endcase
|
||||
|
||||
|
||||
case ( memb[4'h8] )
|
||||
|
||||
4'h1: begin
|
||||
memb[4'h0] <= 0;
|
||||
memb[4'h1] <= 0;
|
||||
memb[4'h2] <= 0;
|
||||
memb[4'h3] <= 0;
|
||||
end
|
||||
|
||||
4'h3: begin
|
||||
4'h1,4'h3: begin
|
||||
memb[4'h0] <= 0;
|
||||
memb[4'h1] <= 0;
|
||||
memb[4'h2] <= 0;
|
||||
@@ -91,15 +76,18 @@
|
||||
end
|
||||
|
||||
4'h4: begin
|
||||
memb[4'h0] <= DIPSW[11:8];
|
||||
memb[4'h1] <= DIPSW[3:0];
|
||||
memb[4'h2] <= DIPSW[7:4];
|
||||
memb[4'h4] <= DIPSW[15:12];
|
||||
memb[4'h6] <= DIPSW[7:4];
|
||||
memb[4'h0] <= DIPSW[11: 8]; // (P0) DSW1 Mappy
|
||||
memb[4'h1] <= DIPSW[15:12];
|
||||
|
||||
memb[4'h2] <= DIPSW[ 3: 0]; // (P1) DSW0
|
||||
memb[4'h4] <= DIPSW[ 7: 4];
|
||||
|
||||
memb[4'h5] <={DIPSW[15:14],STKTRG12[ 5],iSTKTRG12[ 5]}; // (P2) DSW1 Druaga/DigDug2
|
||||
memb[4'h6] <= DIPSW[23:20]; // IsMappy ? DIPSW[19:16] : DIPSW[11:8]
|
||||
|
||||
memb[4'h7] <={DIPSW[19:18],STKTRG12[11],iSTKTRG12[11]}; // (P3) DSW2
|
||||
|
||||
memb[4'h3] <= 0;
|
||||
memb[4'h5] <= { DIPSW[3:2], STKTRG12[ 5], iSTKTRG12[ 5] };
|
||||
memb[4'h7] <= { 2'b00, STKTRG12[11], iSTKTRG12[11] };
|
||||
end
|
||||
|
||||
4'h5: begin
|
||||
@@ -113,7 +101,7 @@
|
||||
memb[4'h7] <= 4'hD;
|
||||
end
|
||||
|
||||
default: begin end
|
||||
default:;
|
||||
|
||||
endcase
|
||||
|
||||
|
||||
@@ -1,17 +1,21 @@
|
||||
//------------------------------------------
|
||||
// I/O Chip for "Motos"
|
||||
//
|
||||
// Copyright (c) 2007 MiSTer-X
|
||||
// Copyright (c) 2007,19 MiSTer-X
|
||||
//------------------------------------------
|
||||
// TODO: DSW2 = DIPSW[23:16]
|
||||
|
||||
case ( mema[4'h8] )
|
||||
|
||||
4'h1: begin
|
||||
mema[4'h0] <= { 3'b00, CSTART12[2] };
|
||||
mema[4'h0] <= { 3'd0, CSTART12[2] };
|
||||
mema[4'h1] <= STKTRG12[3:0];
|
||||
mema[4'h2] <= STKTRG12[9:6];
|
||||
mema[4'h3] <= { CSTART12[1], CSTART12[0], STKTRG12[10], STKTRG12[4] };
|
||||
mema[4'h4] <= STKTRG12[9:6];
|
||||
mema[4'h5] <= STKTRG12[9:6];
|
||||
mema[4'h6] <= STKTRG12[9:6];
|
||||
mema[4'h7] <= STKTRG12[9:6];
|
||||
mema[4'h9] <= 0;
|
||||
end
|
||||
|
||||
4'h8: begin
|
||||
@@ -19,8 +23,8 @@
|
||||
mema[4'h1] <= 4'h9;
|
||||
end
|
||||
|
||||
default: begin end
|
||||
|
||||
default:;
|
||||
|
||||
endcase
|
||||
|
||||
|
||||
@@ -32,17 +36,18 @@
|
||||
end
|
||||
|
||||
4'h9: begin
|
||||
memb[4'h2] <= DIPSW[3:0];
|
||||
memb[4'h4] <= DIPSW[7:4];
|
||||
memb[4'h6] <= DIPSW[15:12];
|
||||
|
||||
memb[4'h0] <= 0;
|
||||
memb[4'h1] <= 0;
|
||||
memb[4'h2] <= 0;
|
||||
memb[4'h3] <= 0;
|
||||
memb[4'h4] <= 0;
|
||||
memb[4'h5] <= 0;
|
||||
memb[4'h6] <= 0;
|
||||
memb[4'h7] <= 0;
|
||||
end
|
||||
|
||||
default: begin end
|
||||
default:;
|
||||
|
||||
endcase
|
||||
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
`timescale 1ns / 1ps
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// Company:
|
||||
// Engineer:
|
||||
//
|
||||
// Create Date: 08:11:34 09/23/2016
|
||||
// Design Name:
|
||||
// Module Name: mc6809e
|
||||
// Project Name:
|
||||
// Target Devices:
|
||||
// Tool versions:
|
||||
// Description:
|
||||
//
|
||||
// Dependencies:
|
||||
//
|
||||
// Revision:
|
||||
// Revision 0.01 - File Created
|
||||
// Additional Comments:
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
module mc6809(
|
||||
input [7:0] D,
|
||||
output [7:0] DOut,
|
||||
output [15:0] ADDR,
|
||||
output RnW,
|
||||
output E,
|
||||
output Q,
|
||||
output BS,
|
||||
output BA,
|
||||
input nIRQ,
|
||||
input nFIRQ,
|
||||
input nNMI,
|
||||
input EXTAL,
|
||||
input XTAL,
|
||||
input nHALT,
|
||||
input nRESET,
|
||||
input MRDY,
|
||||
input nDMABREQ
|
||||
|
||||
, output [111:0] RegData
|
||||
|
||||
);
|
||||
|
||||
reg [1:0] clk_phase=2'b00;
|
||||
|
||||
wire CLK;
|
||||
assign CLK=EXTAL;
|
||||
|
||||
wire LIC;
|
||||
wire BUSY;
|
||||
wire AVMA;
|
||||
reg rE;
|
||||
reg rQ;
|
||||
assign E = rE;
|
||||
assign Q = rQ;
|
||||
|
||||
mc6809i cpucore(.D(D), .DOut(DOut), .ADDR(ADDR), .RnW(RnW), .E(E), .Q(Q), .BS(BS), .BA(BA), .nIRQ(nIRQ), .nFIRQ(nFIRQ),
|
||||
.nNMI(nNMI), .AVMA(AVMA), .BUSY(BUSY), .LIC(LIC), .nHALT(nHALT), .nRESET(nRESET), .nDMABREQ(nDMABREQ)
|
||||
,.RegData(RegData)
|
||||
);
|
||||
|
||||
always @(negedge CLK)
|
||||
begin
|
||||
case (clk_phase)
|
||||
2'b00:
|
||||
rE <= 0;
|
||||
2'b01:
|
||||
rQ <= 1;
|
||||
2'b10:
|
||||
rE <= 1;
|
||||
2'b11:
|
||||
rQ <= 0;
|
||||
endcase
|
||||
|
||||
if (MRDY == 1'b1)
|
||||
clk_phase <= clk_phase + 2'b01;
|
||||
end
|
||||
|
||||
|
||||
endmodule
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,102 +0,0 @@
|
||||
module mems
|
||||
(
|
||||
input CPUCLKx2,
|
||||
output [14:0] rom_addr,
|
||||
input [7:0] rom_data,
|
||||
input [15:0] MCPU_ADRS,
|
||||
input MCPU_VMA,
|
||||
input MCPU_WE,
|
||||
input [7:0] MCPU_DO,
|
||||
output [7:0] MCPU_DI,
|
||||
output IO_CS,
|
||||
input [7:0] IO_O,
|
||||
|
||||
input [15:0] SCPU_ADRS,
|
||||
input SCPU_VMA,
|
||||
input SCPU_WE,
|
||||
input [7:0] SCPU_DO,
|
||||
output [7:0] SCPU_DI,
|
||||
output SCPU_WSG_WE,
|
||||
|
||||
input VCLKx4,
|
||||
input [10:0] vram_a,
|
||||
output [15:0] vram_d,
|
||||
input [6:0] spra_a,
|
||||
output [23:0] spra_d,
|
||||
|
||||
|
||||
input ROMCL, // Downloaded ROM image
|
||||
input [16:0] ROMAD,
|
||||
input [7:0] ROMDT,
|
||||
input ROMEN
|
||||
);
|
||||
|
||||
//wire [7:0] mrom_d;
|
||||
wire [7:0] srom_d;
|
||||
assign rom_addr = MCPU_ADRS[14:0];
|
||||
//assign mrom_d = rom_data;
|
||||
|
||||
scpui_rom scpui_rom(
|
||||
.clk(CPUCLKx2),
|
||||
.addr(SCPU_ADRS[12:0]),
|
||||
.data(srom_d)
|
||||
);
|
||||
|
||||
|
||||
wire mram_cs0 = ( MCPU_ADRS[15:11] == 5'b00000 ) & MCPU_VMA; // $0000-$07FF
|
||||
wire mram_cs1 = ( MCPU_ADRS[15:11] == 5'b00001 ) & MCPU_VMA; // $0800-$0FFF
|
||||
wire mram_cs2 = ( MCPU_ADRS[15:11] == 5'b00010 ) & MCPU_VMA; // $1000-$17FF
|
||||
wire mram_cs3 = ( MCPU_ADRS[15:11] == 5'b00011 ) & MCPU_VMA; // $1800-$1FFF
|
||||
wire mram_cs4 = ( MCPU_ADRS[15:11] == 5'b00100 ) & MCPU_VMA; // $2000-$27FF
|
||||
wire mram_cs5 = ( MCPU_ADRS[15:10] == 6'b010000 ) & MCPU_VMA; // $4000-$43FF
|
||||
assign IO_CS = ( MCPU_ADRS[15:11] == 5'b01001 ) & MCPU_VMA; // $4800-$4FFF
|
||||
wire mrom_cs = ( MCPU_ADRS[15] ) & MCPU_VMA; // $8000-$FFFF
|
||||
|
||||
wire mram_w0 = ( mram_cs0 & MCPU_WE );
|
||||
wire mram_w1 = ( mram_cs1 & MCPU_WE );
|
||||
wire mram_w2 = ( mram_cs2 & MCPU_WE );
|
||||
wire mram_w3 = ( mram_cs3 & MCPU_WE );
|
||||
wire mram_w4 = ( mram_cs4 & MCPU_WE );
|
||||
wire mram_w5 = ( mram_cs5 & MCPU_WE );
|
||||
|
||||
wire [7:0] mram_o0, mram_o1, mram_o2, mram_o3, mram_o4, mram_o5;
|
||||
|
||||
assign MCPU_DI = mram_cs0 ? mram_o0 :
|
||||
mram_cs1 ? mram_o1 :
|
||||
mram_cs2 ? mram_o2 :
|
||||
mram_cs3 ? mram_o3 :
|
||||
mram_cs4 ? mram_o4 :
|
||||
mram_cs5 ? mram_o5 :
|
||||
mrom_cs ? rom_data ://mrom_d :
|
||||
IO_CS ? IO_O :
|
||||
8'h0;
|
||||
|
||||
wire [10:0] mram_ad = MCPU_ADRS[10:0];
|
||||
|
||||
DPRAM_2048V main_ram0( CPUCLKx2, mram_ad, MCPU_DO, mram_o0, mram_w0, VCLKx4, vram_a, vram_d[7:0] );
|
||||
DPRAM_2048V main_ram1( CPUCLKx2, mram_ad, MCPU_DO, mram_o1, mram_w1, VCLKx4, vram_a, vram_d[15:8] );
|
||||
|
||||
DPRAM_2048V main_ram2( CPUCLKx2, mram_ad, MCPU_DO, mram_o2, mram_w2, VCLKx4, { 4'b1111, spra_a }, spra_d[7:0] );
|
||||
DPRAM_2048V main_ram3( CPUCLKx2, mram_ad, MCPU_DO, mram_o3, mram_w3, VCLKx4, { 4'b1111, spra_a }, spra_d[15:8] );
|
||||
DPRAM_2048V main_ram4( CPUCLKx2, mram_ad, MCPU_DO, mram_o4, mram_w4, VCLKx4, { 4'b1111, spra_a }, spra_d[23:16] );
|
||||
|
||||
|
||||
// (SCPU ADRS)
|
||||
wire SCPU_CS_SREG = ( ( SCPU_ADRS[15:13] == 3'b000 ) & ( SCPU_ADRS[9:6] == 4'b0000 ) ) & SCPU_VMA;
|
||||
wire srom_cs = ( SCPU_ADRS[15:13] == 3'b111 ) & SCPU_VMA; // $E000-$FFFF
|
||||
wire sram_cs0 = (~SCPU_CS_SREG) & (~srom_cs) & SCPU_VMA; // $0000-$03FF
|
||||
wire [7:0] sram_o0;
|
||||
|
||||
assign SCPU_DI = sram_cs0 ? sram_o0 :
|
||||
srom_cs ? srom_d :
|
||||
8'h0;
|
||||
|
||||
assign SCPU_WSG_WE = SCPU_CS_SREG & SCPU_WE;
|
||||
|
||||
DPRAM_2048 share_ram
|
||||
(
|
||||
CPUCLKx2, mram_ad, MCPU_DO, mram_o5, mram_w5,
|
||||
CPUCLKx2, { 1'b0, SCPU_ADRS[9:0] }, SCPU_DO, sram_o0, sram_cs0 & SCPU_WE
|
||||
);
|
||||
|
||||
endmodule
|
||||
@@ -1,110 +0,0 @@
|
||||
module regs
|
||||
(
|
||||
input MCPU_CLK,
|
||||
input RESET,
|
||||
input VBLANK,
|
||||
|
||||
input [15:0] MCPU_ADRS,
|
||||
input MCPU_VMA,
|
||||
input MCPU_WE,
|
||||
|
||||
input [15:0] SCPU_ADRS,
|
||||
input SCPU_VMA,
|
||||
input SCPU_WE,
|
||||
|
||||
output reg [7:0] SCROLL,
|
||||
output MCPU_IRQ,
|
||||
output reg MCPU_IRQEN,
|
||||
output SCPU_IRQ,
|
||||
output reg SCPU_IRQEN,
|
||||
output SCPU_RESET,
|
||||
output IO_RESET,
|
||||
output reg PSG_ENABLE
|
||||
);
|
||||
|
||||
// BG Scroll Register
|
||||
wire MCPU_SCRWE = ( ( MCPU_ADRS[15:11] == 5'b00111 ) & MCPU_VMA & MCPU_WE );
|
||||
always @ ( negedge MCPU_CLK or posedge RESET ) begin
|
||||
if ( RESET ) SCROLL <= 8'h0;
|
||||
else if ( MCPU_SCRWE ) SCROLL <= MCPU_ADRS[10:3];
|
||||
end
|
||||
|
||||
// MainCPU IRQ Generator
|
||||
wire MCPU_IRQWE = ( ( MCPU_ADRS[15:1] == 15'b010100000000001 ) & MCPU_VMA & MCPU_WE );
|
||||
//wire MCPU_IRQWES = ( ( SCPU_ADRS[15:1] == 15'b001000000000001 ) & SCPU_VMA & SCPU_WE );
|
||||
assign MCPU_IRQ = MCPU_IRQEN & VBLANK;
|
||||
|
||||
always @( negedge MCPU_CLK or posedge RESET ) begin
|
||||
if ( RESET ) begin
|
||||
MCPU_IRQEN <= 1'b0;
|
||||
end
|
||||
else begin
|
||||
if ( MCPU_IRQWE ) MCPU_IRQEN <= MCPU_ADRS[0];
|
||||
// if ( MCPU_IRQWES ) MCPU_IRQEN <= SCPU_ADRS[0];
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
// SubCPU IRQ Generator
|
||||
wire SCPU_IRQWE = ( ( MCPU_ADRS[15:1] == 15'b010100000000000 ) & MCPU_VMA & MCPU_WE );
|
||||
wire SCPU_IRQWES = ( ( SCPU_ADRS[15:1] == 15'b001000000000000 ) & SCPU_VMA & SCPU_WE );
|
||||
assign SCPU_IRQ = SCPU_IRQEN & VBLANK;
|
||||
|
||||
always @( negedge MCPU_CLK or posedge RESET ) begin
|
||||
if ( RESET ) begin
|
||||
SCPU_IRQEN <= 1'b0;
|
||||
end
|
||||
else begin
|
||||
if ( SCPU_IRQWE ) SCPU_IRQEN <= MCPU_ADRS[0];
|
||||
if ( SCPU_IRQWES ) SCPU_IRQEN <= SCPU_ADRS[0];
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
// SubCPU RESET Control
|
||||
reg SCPU_RSTf = 1'b0;
|
||||
wire SCPU_RSTWE = ( ( MCPU_ADRS[15:1] == 15'b010100000000101 ) & MCPU_VMA & MCPU_WE );
|
||||
wire SCPU_RSTWES = ( ( SCPU_ADRS[15:1] == 15'b001000000000101 ) & SCPU_VMA & SCPU_WE );
|
||||
assign SCPU_RESET = ~SCPU_RSTf;
|
||||
|
||||
always @( negedge MCPU_CLK or posedge RESET ) begin
|
||||
if ( RESET ) begin
|
||||
SCPU_RSTf <= 1'b0;
|
||||
end
|
||||
else begin
|
||||
if ( SCPU_RSTWE ) SCPU_RSTf <= MCPU_ADRS[0];
|
||||
if ( SCPU_RSTWES ) SCPU_RSTf <= SCPU_ADRS[0];
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
// I/O CHIP RESET Control
|
||||
reg IOCHIP_RSTf = 1'b0;
|
||||
wire IOCHIP_RSTWE = ( ( MCPU_ADRS[15:1] == 15'b010100000000100 ) & MCPU_VMA & MCPU_WE );
|
||||
assign IO_RESET = ~IOCHIP_RSTf;
|
||||
|
||||
always @( negedge MCPU_CLK or posedge RESET ) begin
|
||||
if ( RESET ) begin
|
||||
IOCHIP_RSTf <= 1'b0;
|
||||
end
|
||||
else begin
|
||||
if ( IOCHIP_RSTWE ) IOCHIP_RSTf <= MCPU_ADRS[0];
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
// Sound Enable Control
|
||||
wire PSG_ENAWE = ( ( MCPU_ADRS[15:1] == 15'b010100000000011 ) & MCPU_VMA & MCPU_WE );
|
||||
wire PSG_ENAWES = ( ( SCPU_ADRS[15:1] == 15'b001000000000011 ) & SCPU_VMA & SCPU_WE );
|
||||
|
||||
always @( negedge MCPU_CLK or posedge RESET ) begin
|
||||
if ( RESET ) begin
|
||||
PSG_ENABLE <= 1'b0;
|
||||
end
|
||||
else begin
|
||||
if ( PSG_ENAWE ) PSG_ENABLE <= MCPU_ADRS[0];
|
||||
if ( PSG_ENAWES ) PSG_ENABLE <= SCPU_ADRS[0];
|
||||
end
|
||||
end
|
||||
|
||||
endmodule
|
||||
@@ -119,8 +119,8 @@ set_clock_groups -asynchronous -group [get_clocks $sdram_clk] -group [get_clocks
|
||||
|
||||
set_multicycle_path -from [get_clocks $game_clk] -to [get_clocks $sdram_clk] -setup 2
|
||||
set_multicycle_path -from [get_clocks $game_clk] -to [get_clocks $sdram_clk] -hold 1
|
||||
set_multicycle_path -to {VGA_*[*]} -setup 2
|
||||
set_multicycle_path -to {VGA_*[*]} -hold 1
|
||||
set_multicycle_path -to {VGA_*[*]} -setup 3
|
||||
set_multicycle_path -to {VGA_*[*]} -hold 2
|
||||
|
||||
#**************************************************************
|
||||
# Set Maximum Delay
|
||||
|
||||
@@ -3,6 +3,16 @@
|
||||
-- Arcade: Defender port to MiST by Gehstock
|
||||
-- 11 June 2019
|
||||
--
|
||||
--
|
||||
-- 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 Defender.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/
|
||||
--
|
||||
---------------------------------------------------------------------------------
|
||||
-- A simulation model of Williams 6809 hardware
|
||||
-- by Dar (darfpga@aol.fr)
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<misterromdescription>
|
||||
<name>Colony 7 (set 1)</name>
|
||||
<mameversion>0216</mameversion>
|
||||
<setname>colony7</setname>
|
||||
<mratimestamp>201911270000</mratimestamp>
|
||||
<year>1981</year>
|
||||
<manufacturer>Taito</manufacturer>
|
||||
<category>Space / Shooter</category>
|
||||
<rbf>defender</rbf>
|
||||
|
||||
<rom index="1"><part>1</part></rom>
|
||||
|
||||
<switches>
|
||||
<dip bits="10" name="Lives" ids="2,3"/>
|
||||
<dip bits="11" name="Bonus" ids="20k/40k(30k/50k),30k/50k(40k/70k)"/>
|
||||
</switches>
|
||||
|
||||
<rom index="0" zip="colony7.zip" md5="a7d3286ded800538d379816ade2c0d12" type="merged|nonmerged">
|
||||
<part name="cs03.bin"/>
|
||||
<part name="cs02.bin"/>
|
||||
<part name="cs01.bin"/>
|
||||
<part name="cs06.bin"/>
|
||||
<part name="cs04.bin"/>
|
||||
<part name="cs07.bin"/>
|
||||
<part name="cs05.bin"/>
|
||||
<part name="cs08.bin" repeat="4"/>
|
||||
|
||||
<part name="cs10.bin"/>
|
||||
<part name="decoder.3"/>
|
||||
|
||||
<part name="cs11.bin"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
@@ -0,0 +1,37 @@
|
||||
<misterromdescription>
|
||||
<name>Defender (Red label)</name>
|
||||
<mameversion>0216</mameversion>
|
||||
<mratimestamp>201911270000</mratimestamp>
|
||||
<year>1980</year>
|
||||
<manufacturer>Williams</manufacturer>
|
||||
<category>Space / Defender</category>
|
||||
<rbf>defender</rbf>
|
||||
|
||||
<rom index="1"><part>0</part></rom>
|
||||
|
||||
<switches>
|
||||
<dip bits="7" name="Auto up" ids="Off,On"/>
|
||||
<dip bits="8" name="Advance"/>
|
||||
<dip bits="9" name="HS Reset"/>
|
||||
</switches>
|
||||
|
||||
<rom index="0" zip="defender.zip" md5="2173eef0c95ff44752cd36981c909c6d" type="merged|nonmerged">
|
||||
<part name="defend.1"/>
|
||||
<part name="defend.4"/>
|
||||
<part name="defend.2"/>
|
||||
<part name="defend.3"/>
|
||||
<part name="defend.9"/>
|
||||
<part name="defend.12"/>
|
||||
<part name="defend.8"/>
|
||||
<part name="defend.11"/>
|
||||
<part name="defend.7"/>
|
||||
<part name="defend.10"/>
|
||||
<part name="defend.6"/>
|
||||
<part name="defend.6"/>
|
||||
|
||||
<part name="decoder.2"/>
|
||||
<part name="decoder.3"/>
|
||||
|
||||
<part name="defend.snd"/>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user