1
0
mirror of https://github.com/Gehstock/Mist_FPGA.git synced 2026-01-20 01:34:38 +00:00

Robotron HW: the .ARC files also generated from the MRA

This commit is contained in:
Gyorgy Szombathelyi 2020-02-12 20:45:18 +01:00
parent ab5003701b
commit f1330a1f80
16 changed files with 35 additions and 42 deletions

View File

@ -10,8 +10,8 @@ Sinistar has some graphics issues, and the speech chip is not implemented.
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.

View File

@ -1,3 +0,0 @@
[ARC]
RBF=ROBOTRON
MOD=5

View File

@ -1,3 +0,0 @@
[ARC]
RBF=ROBOTRON
MOD=3

View File

@ -1,3 +0,0 @@
[ARC]
RBF=ROBOTRON
MOD=1

View File

@ -1,3 +0,0 @@
[ARC]
RBF=ROBOTRON
MOD=0

View File

@ -1,3 +0,0 @@
[ARC]
RBF=ROBOTRON
MOD=6

View File

@ -1,3 +0,0 @@
[ARC]
RBF=ROBOTRON
MOD=2

View File

@ -1,3 +0,0 @@
[ARC]
RBF=ROBOTRON
MOD=4

View File

@ -1,6 +1,9 @@
<misterromdescription>
<name>Alien Arena</name>
<mameversion>0209</mameversion>
<rbf>Robotron</rbf>
<setname>alienar</setname>
<rom index="1"><part>5</part></rom>
<rom index="0" zip="alienar.zip" md5="342b7d5d91dc2cd81f7f193b076555d2" type="merged">
<part name="aarom01"/>
<part name="aarom02"/>

View File

@ -1,6 +1,9 @@
<misterromdescription>
<name>Bubbles</name>
<mameversion>0209</mameversion>
<rbf>robotron</rbf>
<setname>bubbles</setname>
<rom index="1"><part>3</part></rom>
<rom index="0" zip="bubbles.zip" md5="6b23d478539f579c4ffe30cae83c28d8" type="merged">
<part name="bubbles.1b"/>
<part name="bubbles.2b"/>

View File

@ -1,6 +1,9 @@
<misterromdescription>
<name>Joust</name>
<mameversion>0209</mameversion>
<rbf>robotron</rbf>
<setname>joust</setname>
<rom index="1"><part>1</part></rom>
<rom index="0" zip="joust.zip" md5="190c1b26e2103232a58405f8ebdd752c" type="merged">
<part name="3006-13.1b"/>
<part name="3006-14.2b"/>

View File

@ -1,6 +1,9 @@
<misterromdescription>
<name>Robotron 2084</name>
<mameversion>0209</mameversion>
<rbf>robotron</rbf>
<setname>robotron</setname>
<rom index="1"><part>0</part></rom>
<rom index="0" zip="robotron.zip" md5="1d2f8e7d602ec2f848bad17f3cf928e2" type="merged">
<part name="robotron.sb1"/>
<part name="robotron.sb2"/>

View File

@ -1,6 +1,9 @@
<misterromdescription>
<name>Sinistar</name>
<mameversion>0209</mameversion>
<rbf>robotron</rbf>
<setname>sinistar</setname>
<rom index="1"><part>6</part></rom>
<rom index="0" zip="sinistar.zip" md5="60b465866ccf143727ff2ce9027e0886" type="merged">
<part name="sinistar.01"/>
<part name="sinistar.02"/>

View File

@ -1,6 +1,9 @@
<misterromdescription>
<name>Splat</name>
<mameversion>0209</mameversion>
<rbf>robotron</rbf>
<setname>splat</setname>
<rom index="1"><part>2</part></rom>
<rom index="0" zip="splat.zip" md5="401f6ca6baac2701f84a0edc6bea69ab" type="merged">
<part name="splat.01"/>
<part name="splat.02"/>

View File

@ -1,6 +1,9 @@
<misterromdescription>
<name>Stargate</name>
<mameversion>0209</mameversion>
<rbf>robotron</rbf>
<setname>stargate</setname>
<rom index="1"><part>4</part></rom>
<rom index="0" zip="stargate.zip" md5="764a1192d52ef54eead60849d11dfcaa" type="merged">
<part name="01"/>
<part name="02"/>

View File

@ -38,8 +38,10 @@ module RobotronFPGA_MiST(
`include "rtl/build_id.v"
`define CORE_NAME "ROBOTRON"
localparam CONF_STR = {
";ROM;",
`CORE_NAME,";ROM;",
"O2,Rotate Controls,Off,On;",
"O34,Scanlines,Off,25%,50%,75%;",
"O5,Blend,Off,On;",
@ -64,7 +66,6 @@ reg [3:0] BTN;
reg blitter_sc2, sinistar;
wire [6:0] core_mod;
reg [8*8-1:0] core_name;
reg [1:0] orientation; // [left/right, landscape/portrait]
// advance button
@ -85,59 +86,51 @@ always @(*) begin
JA = 8'hFF;
JB = 8'hFF;
BTN = 4'hF;
core_name = "ROBOTRON";
blitter_sc2 = 0;
sinistar = 0;
case (core_mod)
7'h0:
7'h0: // ROBOTRON
begin
core_name = "ROBOTRON";
BTN = { m_one_player, m_two_players, m_coin1 | m_coin2, reset };
// Fire Up/Down/Left/Right maps to joystick 1/2/3/4 and keyboard R/F/D/G (MAME style)
JA = ~{ m_fireD|m_right2, m_fireC|m_left2, m_fireB|m_down2, m_fireA|m_up2, m_right, m_left, m_down, m_up };
JB = ~{ m_fireD|m_right2, m_fireC|m_left2, m_fireB|m_down2, m_fireA|m_up2, m_right, m_left, m_down, m_up };
end
7'h1:
7'h1: // JOUST
begin
core_name = "JOUST ";
BTN = { m_two_players, m_one_player, m_coin1 | m_coin2, reset };
JA = ~{ 5'b00000, m_fireA, m_right, m_left };
JB = ~{ 5'b00000, m_fire2A, m_right2, m_left2 };
end
7'h2:
7'h2: // SPLAT
begin
core_name = "SPLAT ";
blitter_sc2 = 1;
BTN = { m_one_player, m_two_players, m_coin1 | m_coin2, reset };
// Fire Up/Down/Left/Right maps to joystick 1/2/3/4 and keyboard R/F/D/G (MAME style)
JA = ~{ m_fireD|m_right2, m_fireC|m_left2, m_fireB|m_down2, m_fireA|m_up2, m_right, m_left, m_down, m_up };
JB = ~{ m_fireD|m_right2, m_fireC|m_left2, m_fireB|m_down2, m_fireA|m_up2, m_right, m_left, m_down, m_up };
end
7'h3:
7'h3: // BUBBLES
begin
core_name = "BUBBLES ";
BTN = { m_two_players, m_one_player, m_coin1 | m_coin2, reset };
JA = ~{ 4'b0000, m_right, m_left, m_down, m_up };
JB = ~{ 4'b0000, m_right2, m_left2, m_down2, m_up2 };
end
7'h4:
7'h4: // STARGATE
begin
core_name = "STARGATE";
BTN = { m_two_players, m_one_player, m_coin1 | m_coin2, reset };
JA = ~{ m_fireE, m_up, m_down, m_left | m_right, m_fireD, m_fireC, m_fireB, m_fireA };
JB = ~{ m_fire2E, m_up2, m_down2, m_left2 | m_right2, m_fire2D, m_fire2C, m_fire2B, m_fire2A };
end
7'h5:
7'h5: // ALIENAR
begin
core_name = "ALIENAR ";
BTN = { m_one_player, m_two_players, m_coin1 | m_coin2, reset };
JA = ~{ 1'b0, 1'b0, m_fireB, m_fireA, m_right, m_left, m_down, m_up };
JB = ~{ 1'b0, 1'b0, m_fire2B, m_fire2A, m_right2, m_left2, m_down2, m_up2 };
end
7'h6:
7'h6: // SINISTAR
begin
core_name = "SINISTAR";
sinistar = 1;
orientation = 2'b01;
BTN = { m_two_players, m_one_player, m_coin1 | m_coin2, reset };
@ -181,10 +174,10 @@ wire [7:0] key_code;
wire key_strobe;
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 ),
@ -274,7 +267,7 @@ wire [17:1] sdram_addr = ~romcs ? {1'b0, mem_addr[16], ~mem_addr[16] & mem_addr[
// IOCTL address to SDRAM address:
// D000-D3FF -> 1CC00-1CFFF (CMOS), otherwise direct mapping
wire [22:0] downl_addr = (ioctl_addr[22:10] == { 7'h0, 4'hD, 2'b00 }) ? { 1'b1, 4'hC, 2'b11, ioctl_addr[9:0] } : ioctl_addr;
wire [22:0] downl_addr = (ioctl_addr[22:10] == { 7'h0, 4'hD, 2'b00 }) ? { 1'b1, 4'hC, 2'b11, ioctl_addr[9:0] } : ioctl_addr[22:0];
always @(posedge clk_mem) begin
reg ioctl_wr_last = 0;