1
0
mirror of https://github.com/Gehstock/Mist_FPGA.git synced 2026-02-17 21:17:11 +00:00

Robotron HW: updates

- use ARC and MRA files
- control tweak (secondary joystick can be used with primary triggers)
- silence audio a bit
- embed CMOS into the ROM
This commit is contained in:
Gyorgy Szombathelyi
2020-02-09 12:39:15 +01:00
parent 4adc26f013
commit 4adec34f5b
17 changed files with 750 additions and 79 deletions

View File

@@ -1,13 +1,27 @@
robotron-fpga MiST port
=======================
Supported games: Robotron 2048, Joust, Sinistar, Bubbles, Splat, Stargate
Supported games: Robotron 2048, Joust, Sinistar, Bubbles, Splat, Stargate, Alien Arena
After loading the RBF, a CMOS clearing will happen. Reset the core to start
the game.
Sinistar has some graphics issues, and the speech chip is not implemented.
Usage:
------
- 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.
- MRA utilty: https://github.com/sebdel/mra-tools-c
Note: the MRA files contains a dump of the CMOS RAM. It will be included in the genearted ROM file.
Change it for permanent settings (search for the format online). It's possible to change these values
inside the core, with turning on "Auto-up" switch, and activate the "Advance" trigger in the OSD.
Refer to the arcade's user manual for further info.
robotron-fpga
=============

View File

@@ -1,16 +0,0 @@
#!/bin/sh
PROJECTS=" \
ROBOTRON \
JOUST \
SPLAT \
BUBBLES \
STARGATE \
SINISTAR"
mkdir -p Releases
for PROJECT in $PROJECTS; do
echo "Compiling $PROJECT"
sed -i "s/^.define CORE_NAME.*/\`define CORE_NAME \"$PROJECT\"/" rtl/RobotronFPGA_MiST.sv
quartus_sh --flow compile RobotronFPGA.qsf && cp output_files/RobotronFPGA.rbf Releases/$PROJECT.rbf
done

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,87 @@
<misterromdescription>
<name>Alien Arena</name>
<mameversion>0209</mameversion>
<rom index="0" zip="alienar.zip" md5="342b7d5d91dc2cd81f7f193b076555d2" type="merged">
<part name="aarom01"/>
<part name="aarom02"/>
<part name="aarom03"/>
<part name="aarom04"/>
<part name="aarom05"/>
<part name="aarom06"/>
<part name="aarom07"/>
<part name="aarom08"/>
<part name="aarom09"/>
<part name="aarom10"/>
<part name="aarom11"/>
<part name="aarom12"/>
<part name="alienaru/sg.snd"/>
<part name="alienaru/sg.snd"/>
<part>
02 25 00 03 00 03 00 01 00 04 00 01 00 01 00 00
00 00 00 01 00 03 00 03 00 00 00 00 00 00 00 00
00 00 00 00 02 20 02 20 02 20 02 20 02 20 05 50
05 52 04 45 05 53 04 45 04 4e 05 54 04 45 04 04
02 20 04 42 05 59 02 20 02 20 02 20 02 20 02 20
02 20 02 20 02 20 05 57 04 49 04 4c 04 4c 04 49
04 41 04 4d 05 53 02 20 04 45 04 4c 04 45 04 43
05 54 05 52 04 4f 04 4e 04 49 04 43 05 53 02 20
04 49 04 4e 04 43 03 3d 02 2f 02 28 05 52 0e ec
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
</part>
</rom>
</misterromdescription>

View File

@@ -0,0 +1,86 @@
<misterromdescription>
<name>Bubbles</name>
<mameversion>0209</mameversion>
<rom index="0" zip="bubbles.zip" md5="6b23d478539f579c4ffe30cae83c28d8" type="merged">
<part name="bubbles.1b"/>
<part name="bubbles.2b"/>
<part name="bubbles.3b"/>
<part name="bubbles.4b"/>
<part name="bubbles.5b"/>
<part name="bubbles.6b"/>
<part name="bubbles.7b"/>
<part name="bubbles.8b"/>
<part name="bubbles.9b"/>
<part name="bubbles.10b"/>
<part name="bubbles.11b"/>
<part name="bubbles.12b"/>
<part name="bubbles.snd"/>
<part>
02 25 00 03 00 01 00 03 00 01 00 04 00 01 00 01
00 00 00 00 00 05 00 03 00 00 00 00 00 00 00 00
00 00 00 00 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A
00 0A 01 1A 01 1C 00 0F 01 1D 00 0F 01 18 01 1E
00 0F 00 0E 00 0A 00 0C 02 23 03 32 00 0A 00 0A
00 0A 00 0A 00 0A 02 21 01 13 01 16 01 16 01 13
00 0B 01 17 01 1D 00 0A 00 0F 01 16 00 0F 00 0D
01 1E 01 1C 01 19 01 18 01 13 00 0D 01 1D 00 0A
01 13 01 18 00 0D 02 2E 02 25 02 29 05 54 05 52
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
</part>
</rom>
</misterromdescription>

View File

@@ -0,0 +1,87 @@
<misterromdescription>
<name>Joust</name>
<mameversion>0209</mameversion>
<rom index="0" zip="joust.zip" md5="190c1b26e2103232a58405f8ebdd752c" type="merged">
<part name="3006-13.1b"/>
<part name="3006-14.2b"/>
<part name="3006-15.3b"/>
<part name="3006-16.4b"/>
<part name="3006-17.5b"/>
<part name="3006-18.6b"/>
<part name="3006-19.7b"/>
<part name="3006-20.8b"/>
<part name="3006-21.9b"/>
<part name="3006-22.10b"/>
<part name="3006-23.11b"/>
<part name="3006-24.12b"/>
<part name="joust.snd"/>
<part>
f2 00 00 f5 00 f1 00 f3 00 f1 00 f4 00 f1 00 f1
00 00 00 00 00 f5 00 f3 00 00 00 00 00 00 00 00
00 00 00 00 00 fa 00 fa 00 fa 00 fa 00 fa 00 fa
00 fa f1 fa f1 fc 00 ff f1 fd 00 ff f1 f8 f1 fe
00 ff 00 fe 00 fa 00 fc f2 f3 f3 f2 00 fa 00 fa
00 fa 00 fa 00 fa f2 f1 f1 f3 f1 f6 f1 f6 f1 f3
00 fb f1 f7 f1 fd 00 fa 00 ff f1 f6 00 ff 00 fd
f1 fe f1 fc f1 f9 f1 f8 f1 f3 00 fd f1 fd 00 fa
f1 f3 f1 f8 00 fd f2 fe f2 f5 f2 f9 f5 f1 f5 f2
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
</part>
</rom>
</misterromdescription>

View File

@@ -0,0 +1,87 @@
<misterromdescription>
<name>Robotron 2084</name>
<mameversion>0209</mameversion>
<rom index="0" zip="robotron.zip" md5="1d2f8e7d602ec2f848bad17f3cf928e2" type="merged">
<part name="robotron.sb1"/>
<part name="robotron.sb2"/>
<part name="robotron.sb3"/>
<part name="robotron.sb4"/>
<part name="robotron.sb5"/>
<part name="robotron.sb6"/>
<part name="robotron.sb7"/>
<part name="robotron.sb8"/>
<part name="robotron.sb9"/>
<part name="robotron.sba"/>
<part name="robotron.sbb"/>
<part name="robotron.sbc"/>
<part name="robotron.snd"/>
<part>
02 25 00 03 00 03 00 01 00 04 00 01 00 01 00 00
00 00 00 01 00 03 00 03 00 00 00 00 00 00 00 00
00 00 00 00 02 20 02 20 02 20 02 20 02 20 05 50
05 52 04 45 05 53 04 45 04 4e 05 54 04 45 04 04
02 20 04 42 05 59 02 20 02 20 02 20 02 20 02 20
02 20 02 20 02 20 05 57 04 49 04 4c 04 4c 04 49
04 41 04 4d 05 53 02 20 04 45 04 4c 04 45 04 43
05 54 05 52 04 4f 04 4e 04 49 04 43 05 53 02 20
04 49 04 4e 04 43 03 3d 02 2f 02 28 05 52 0e ec
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
</part>
</rom>
</misterromdescription>

View File

@@ -0,0 +1,86 @@
<misterromdescription>
<name>Sinistar</name>
<mameversion>0209</mameversion>
<rom index="0" zip="sinistar.zip" md5="60b465866ccf143727ff2ce9027e0886" type="merged">
<part name="sinistar.01"/>
<part name="sinistar.02"/>
<part name="sinistar.03"/>
<part name="sinistar.04"/>
<part name="sinistar.05"/>
<part name="sinistar.06"/>
<part name="sinistar.07"/>
<part name="sinistar.08"/>
<part name="sinistar.09"/>
<part name="sinistar.10"/>
<part name="sinistar.10"/>
<part name="sinistar.11"/>
<part name="sinistar.snd"/>
<part>
03 30 03 30 00 03 00 05 00 01 00 01 00 03 00 01
00 04 00 01 00 01 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 05 51 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
</part>
</rom>
</misterromdescription>

View File

@@ -0,0 +1,87 @@
<misterromdescription>
<name>Splat</name>
<mameversion>0209</mameversion>
<rom index="0" zip="splat.zip" md5="401f6ca6baac2701f84a0edc6bea69ab" type="merged">
<part name="splat.01"/>
<part name="splat.02"/>
<part name="splat.03"/>
<part name="splat.04"/>
<part name="splat.05"/>
<part name="splat.06"/>
<part name="splat.07"/>
<part name="splat.08"/>
<part name="splat.09"/>
<part name="splat.10"/>
<part name="splat.11"/>
<part name="splat.12"/>
<part name="splat.snd"/>
<part>
03 30 00 03 02 25 00 03 00 01 00 04 00 01 00 01
00 00 00 00 00 05 00 03 00 00 00 00 00 00 00 00
00 00 00 01 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A
00 0A 01 1A 01 1C 00 0F 01 1D 00 0F 01 18 01 1E
00 0F 00 0E 00 0A 00 0C 02 23 02 2C 00 0A 00 0A
00 0A 00 0A 00 0A 02 21 01 13 01 16 01 16 01 13
00 0B 01 17 01 1D 00 0A 00 0F 01 16 00 0F 00 0D
01 1E 01 1C 01 19 01 18 01 13 00 0D 01 1D 00 0A
01 13 01 18 00 0D 02 2D 02 25 02 29 05 57 05 5A
02 20 02 20 02 20 02 20 02 20 02 25 02 25 05 5F
0D D8 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 03 3A 03 3A 03 3A 01 1D
01 1A 01 16 00 0B 01 1E 00 0A 02 21 01 13 01 16
01 16 01 13 00 0B 01 17 01 1D 00 0A 00 0A 00 0A
00 0A 00 0A 00 0A 02 21 01 13 01 16 C9 00 00 01
00 00 00 00 01 17 01 1C 01 1D 54 00 00 01 00 00
00 00 01 14 01 1C 01 18 4C 00 00 01 00 00 00 00
01 12 00 0F 00 0D 30 00 00 01 00 00 00 00 01 17
00 0C 01 1D 43 00 00 01 00 00 00 00 01 1A 01 10
02 24 53 00 00 01 00 00 00 00 01 14 01 13 01 16
41 00 00 01 00 00 00 00 00 0D 02 21 01 15 47 00
00 01 00 00 00 00 01 1C 01 1D 01 17 54 00 00 01
00 00 00 00 00 0F 00 0A 02 24 40 00 00 01 00 00
00 00 01 15 00 0F 01 18 3F 00 00 01 00 00 00 00
02 20 01 1D 01 17 59 00 00 01 00 00 00 00 00 0D
01 1C 00 0C 37 00 00 01 00 00 00 00 01 1A 02 20
00 0B 49 00 00 01 00 00 00 00 01 11 02 21 02 21
59 00 00 01 00 00 00 00 01 1C 01 19 01 18 51 00
00 01 00 00 00 00 01 14 01 19 00 0F 3F 00 00 01
00 00 00 00 01 1E 01 13 01 17 4C 00 00 01 00 00
00 00 01 1C 01 1D 01 17 54 00 00 01 00 00 00 00
01 14 01 13 01 17 42 00 00 01 00 00 00 00 02 20
01 13 00 0D 44 00 00 01 00 00 00 00 01 16 00 0F
01 19 41 00 00 01 00 00 00 00 00 0C 01 1F 02 24
53 00 00 01 00 00 00 00 01 14 01 14 01 15 41 00
00 01 00 00 00 00 01 1C 00 0F 01 18 46 00 00 01
00 00 00 00 01 18 00 0A 01 10 35 00 00 01 00 00
00 00 01 14 01 1C 01 18 4C 00 00 01 00 00 00 00
01 12 00 0F 00 0D 30 00 00 01 00 00 00 00 01 17
00 0C 01 1D 43 00 00 01 00 00 00 00 01 1A 01 10
02 24 53 00 00 01 00 00 00 00 01 14 01 13 01 16
41 00 00 01 00 00 00 00 01 1C 02 20 01 1E 5F 00
00 01 00 00 00 00 01 15 00 0B 02 23 47 00 00 01
00 00 00 00 01 14 01 11 01 16 3F 00 00 01 00 00
00 00 01 1C 00 0B 01 17 41 00 00 01 00 00 00 00
01 12 00 0F 00 0D 30 00 00 01 00 00 00 00 01 15
02 20 00 0E 47 00 00 01 00 00 00 00 00 0F 01 14
01 1D 43 00 00 01 00 00 00 00 02 20 00 0B 02 22
52 00 00 01 00 00 00 00 00 0E 01 1C 01 14 41 00
00 01 00 00 00 00 01 14 00 0B 02 23 46 00 00 01
00 00 00 00 01 14 01 1C 01 18 00 00 00 01 00 00
00 00 01 12 00 0F 00 0D 00 00 00 01 00 00 00 00
01 17 00 0C 01 1D 00 00 00 01 00 00 00 00 01 1A
01 10 02 24 00 00 00 01 00 00 00 00 01 14 01 13
01 16 00 00 00 01 00 00 00 00 00 0D 02 21 01 15
00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00
</part>
</rom>
</misterromdescription>

View File

@@ -0,0 +1,87 @@
<misterromdescription>
<name>Stargate</name>
<mameversion>0209</mameversion>
<rom index="0" zip="stargate.zip" md5="764a1192d52ef54eead60849d11dfcaa" type="merged">
<part name="01"/>
<part name="02"/>
<part name="03"/>
<part name="04"/>
<part name="05"/>
<part name="06"/>
<part name="07"/>
<part name="08"/>
<part name="09"/>
<part name="10"/>
<part name="11"/>
<part name="12"/>
<part name="sg.snd"/>
<part name="sg.snd"/>
<part>
01 10 00 03 00 07 00 03 00 01 00 04 00 01 00 01
00 00 00 00 00 00 00 03 00 05 03 30 00 00 00 00
00 00 01 10 00 04 01 10 02 20 00 00 00 00 00 00
00 00 00 00 00 00 05 57 04 49 04 4C 04 4C 04 49
04 41 04 4D 05 53 02 20 04 45 04 4C 04 45 04 43
05 54 05 52 04 4F 04 4E 04 49 04 43 05 53 02 20
04 49 04 4E 04 43 03 3D 02 20 02 20 02 20 02 20
02 20 02 20 02 20 02 20 02 20 02 20 02 20 05 50
05 52 04 45 05 53 04 45 04 4E 05 54 05 53 03 3F
02 20 02 20 02 20 02 20 02 20 02 25 02 25 05 5F
0D D8 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 03 3A 03 3A 03 3A 03 3A
03 3A 03 3A 03 3A 03 3A 03 3A 03 3A 03 3A 03 3A
03 3A 03 3A 03 3A 03 3A 03 3A 03 3A 03 3A 03 3A
03 3A 03 3A 03 3A BF 00 00 00 04 40 00 00 03 3A
03 3A 03 3A FB 00 00 00 04 40 00 00 03 3A 03 3A
03 3A FB 00 00 00 04 40 00 00 03 3A 03 3A 03 3A
FB 00 00 00 04 40 00 00 03 3A 03 3A 03 3A FB 00
00 00 04 40 00 00 03 3A 03 3A 03 3A FB 00 00 00
04 40 00 00 03 3A 03 3A 03 3A FB 00 00 00 04 40
00 00 03 3A 03 3A 03 3A FB 00 00 00 04 40 00 00
03 3A 03 3A 03 3A FB 00 00 00 04 40 00 00 03 3A
03 3A 03 3A FB 00 00 00 04 40 00 00 03 3A 03 3A
03 3A FB 00 00 00 04 40 00 00 03 3A 03 3A 03 3A
FB 00 00 00 04 40 00 00 03 3A 03 3A 03 3A FB 00
00 00 04 40 00 00 03 3A 03 3A 03 3A FB 00 00 00
04 40 00 00 03 3A 03 3A 03 3A FB 00 00 00 04 40
00 00 03 3A 03 3A 03 3A FB 00 00 00 04 40 00 00
03 3A 03 3A 03 3A FB 00 00 00 04 40 00 00 03 3A
03 3A 03 3A FB 00 00 00 04 40 00 00 03 3A 03 3A
03 3A FB 00 00 00 04 40 00 00 03 3A 03 3A 03 3A
FB 00 00 00 04 40 00 00 03 3A 03 3A 03 3A FB 00
00 00 04 40 00 00 03 3A 03 3A 03 3A FB 00 00 00
04 40 00 00 03 3A 03 3A 03 3A FB 00 00 00 04 40
00 00 03 3A 03 3A 03 3A FB 00 00 00 04 40 00 00
03 3A 03 3A 03 3A FB 00 00 00 04 40 00 00 03 3A
03 3A 03 3A FB 00 00 00 04 40 00 00 03 3A 03 3A
03 3A FB 00 00 00 04 40 00 00 03 3A 03 3A 03 3A
FB 00 00 00 04 40 00 00 03 3A 03 3A 03 3A FB 00
00 00 04 40 00 00 03 3A 03 3A 03 3A FB 00 00 00
04 40 00 00 03 3A 03 3A 03 3A FB 00 00 00 04 40
00 00 03 3A 03 3A 03 3A FB 00 00 00 04 40 00 00
03 3A 03 3A 03 3A FB 00 00 00 04 40 00 00 03 3A
03 3A 03 3A FB 00 00 00 04 40 00 00 03 3A 03 3A
03 3A FB 00 00 00 04 40 00 00 03 3A 03 3A 03 3A
FB 00 00 00 04 40 00 00 03 3A 03 3A 03 3A FB 00
00 00 04 40 00 00 03 3A 03 3A 03 3A FB 00 00 00
04 40 00 00 03 3A 03 3A 03 3A FB 00 00 00 04 40
00 00 03 3A 03 3A 03 3A FB 00 00 00 04 40 00 00
03 3A 03 3A 03 3A FB 00 00 00 04 40 00 00 04 44
05 52 04 4A 00 00 00 03 06 64 04 40 04 4C 04 45
04 44 00 00 00 02 01 18 05 57 05 53 04 41 04 4D
00 00 00 01 09 95 05 55 05 53 05 53 05 52 00 00
00 01 04 45 06 65 04 45 05 50 04 4A 00 00 00 01
02 27 05 55 04 4A 04 45 05 52 00 00 00 01 02 27
05 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00
</part>
</rom>
</misterromdescription>

View File

@@ -38,20 +38,14 @@ module RobotronFPGA_MiST(
`include "rtl/build_id.v"
//`define CORE_NAME "ROBOTRON"
//`define CORE_NAME "JOUST"
//`define CORE_NAME "SPLAT"
//`define CORE_NAME "BUBBLES"
//`define CORE_NAME "STARGATE"
//`define CORE_NAME "SINISTAR"
`define CORE_NAME "ALIENAR"
localparam CONF_STR = {
`CORE_NAME,";ROM;",
";ROM;",
"O2,Rotate Controls,Off,On;",
"O34,Scanlines,Off,25%,50%,75%;",
"O5,Blend,Off,On;",
"O6,Swap Joysticks,Off,On;",
"O7,Auto up,Off,On;",
"T8,Advance,Off,On;",
"T0,Reset;",
"V,v1.0.",`BUILD_DATE
};
@@ -60,57 +54,98 @@ wire rotate = status[2];
wire [1:0] scanlines = status[4:3];
wire blend = status[5];
wire joyswap = status[6];
wire autoup = status[7];
wire adv = status[8];
reg [7:0] SW;
reg [7:0] JA;
reg [7:0] JB;
reg [3:0] BTN;
reg blitter_sc2, sinistar;
reg [1:0] orientation; // [left/right, landscape/portrait]
reg [7:0] SW;
reg [7:0] JA;
reg [7:0] JB;
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
reg [23:0] adv_counter;
wire advance = (adv_counter != 0);
always @(posedge clk_sys) begin
reg adv_d;
adv_d <= adv;
if (~adv_d & adv) adv_counter <= 24'hfffff;
if (adv_counter != 0) adv_counter <= adv_counter - 1'd1;
end
always @(*) begin
orientation = 2'b10;
SW = 8'h00;
SW = {6'h0, advance, autoup};
JA = 8'hFF;
JB = 8'hFF;
BTN = 4'hF;
core_name = "ROBOTRON";
blitter_sc2 = 0;
sinistar = 0;
if (`CORE_NAME == "ROBOTRON") begin
case (core_mod)
7'h0:
begin
core_name = "ROBOTRON";
BTN = { m_one_player, m_two_players, m_coin1 | m_coin2, reset };
JA = ~{ m_right2, m_left2, m_down2, m_up2, m_right, m_left, m_down, m_up };
JB = ~{ m_right2, m_left2, m_down2, m_up2, m_right, m_left, m_down, m_up };
end else if (`CORE_NAME == "JOUST") begin
// 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:
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 else if (`CORE_NAME == "SPLAT") begin
end
7'h2:
begin
core_name = "SPLAT ";
blitter_sc2 = 1;
BTN = { m_one_player, m_two_players, m_coin1 | m_coin2, reset };
JA = ~{ m_right2, m_left2, m_down2, m_up2, m_right, m_left, m_down, m_up };
JB = ~{ m_right4, m_left4, m_down4, m_up4, m_right3, m_left3, m_down3, m_up3 };
end else if (`CORE_NAME == "BUBBLES") begin
// 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:
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 else if (`CORE_NAME == "STARGATE") begin
end
7'h4:
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 else if (`CORE_NAME == "ALIENAR") begin
BTN = { m_two_players, m_one_player, m_coin1 | m_coin2, reset };
JA = ~{ m_right2, m_left2, m_down2, m_up2, m_right, m_left, m_down, m_up };
JB = ~{ m_right2, m_left2, m_down2, m_up2, m_right, m_left, m_down, m_up };
end else if (`CORE_NAME == "SINISTAR") begin
end
7'h5:
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:
begin
core_name = "SINISTAR";
sinistar = 1;
orientation = 2'b01;
BTN = { m_two_players, m_one_player, m_coin1 | m_coin2, reset };
JA = { sin_x, 2'b00, m_right | m_left | m_right2 | m_left2, sin_y, 2'b00, m_up | m_down | m_up2 | m_down2 };
JB = { sin_x, 2'b00, m_right | m_left | m_right2 | m_left2, sin_y, 2'b00, m_up | m_down | m_up2 | m_down2 };
end
default: ;
endcase
end
assign LED = ~ioctl_downl;
@@ -134,6 +169,7 @@ wire [1:0] switches;
wire [7:0] joystick_0;
wire [7:0] joystick_1;
wire scandoublerD;
wire no_csync;
wire ypbpr;
wire [7:0] audio;
wire hs, vs;
@@ -144,6 +180,29 @@ wire key_pressed;
wire [7:0] key_code;
wire key_strobe;
user_io #(
.STRLEN(8+($size(CONF_STR)>>3)))
user_io(
.clk_sys ( clk_sys ),
.conf_str ( {core_name, 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;
@@ -154,7 +213,9 @@ wire [7:0] ioctl_dout;
ROM Structure:
0000-BFFF main cpu 48k
C000-CFFF snd cpu 4k
D000-D3FF CMOS RAM 1k
*/
data_io data_io (
.clk_sys ( clk_mem ),
.SPI_SCK ( SPI_SCK ),
@@ -167,7 +228,7 @@ data_io data_io (
.ioctl_dout ( ioctl_dout )
);
reg port1_req, port2_req;
reg port1_req;
wire [23:1] mem_addr;
wire [15:0] mem_do;
wire [15:0] mem_di;
@@ -190,7 +251,7 @@ sdram #(.MHZ(96)) sdram(
// ROM upload
.port1_req ( port1_req ),
.port1_ack ( ),
.port1_a ( ioctl_addr[22:0] ),
.port1_a ( downl_addr ),
.port1_ds ( 2'b11 ),
.port1_we ( ioctl_downl ),
.port1_d ( {ioctl_dout[7:4], ioctl_dout[7:4], ioctl_dout[3:0], ioctl_dout[3:0]} ),
@@ -200,7 +261,7 @@ sdram #(.MHZ(96)) sdram(
.cpu1_addr ( ioctl_downl ? 17'h1ffff : sdram_addr ),
.cpu1_d ( mem_di ),
.cpu1_q ( mem_do ),
.cpu1_oe ( ~mem_oe & ~(ramcs & romcs) ),
.cpu1_oe ( ~mem_oe & ~(ramcs & romcs) ),
.cpu1_we ( ~mem_we & ~(ramcs & romcs) ),
.cpu1_ds ( ~romcs ? 2'b11 : ~{ramub, ramlb} )
);
@@ -210,6 +271,11 @@ sdram #(.MHZ(96)) sdram(
// DXXX-FXXX -> 9xxx-Bxxx
wire [17:1] sdram_addr = ~romcs ? {1'b0, mem_addr[16], ~mem_addr[16] & mem_addr[15], mem_addr[14:1]} : { 1'b1, mem_addr[16:1] };
// 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;
always @(posedge clk_mem) begin
reg ioctl_wr_last = 0;
@@ -217,7 +283,6 @@ always @(posedge clk_mem) begin
if (ioctl_downl) begin
if (~ioctl_wr_last && ioctl_wr) begin
port1_req <= ~port1_req;
port2_req <= ~port2_req;
end
end
end
@@ -285,42 +350,22 @@ mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(11)) mist_video(
.rotate ( {orientation[1],rotate} ),
.scandoubler_disable( scandoublerD ),
.ce_divider ( 1'b1 ),
.no_csync ( no_csync ),
.scanlines ( scanlines ),
.blend ( blend ),
.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 ),
.status ( status )
);
wire dac_o;
assign AUDIO_L = dac_o;
assign AUDIO_R = dac_o;
dac #(
.C_bits(8))
.C_bits(11))
dac(
.clk_i(clk_aud),
.res_n_i(1),
.dac_i(audio),
.dac_i({3'd0, audio}), // silence by 9dB
.dac_o(dac_o)
);