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

Scramble HW: ARC files are also generated from MRA + Dark Planet fix

This commit is contained in:
Gyorgy Szombathelyi 2020-02-12 20:47:01 +01:00
parent f1330a1f80
commit bde4d8fd78
41 changed files with 164 additions and 152 deletions

View File

@ -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.
--

View File

@ -1,4 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=1
CONF=O78,Lives,3,4,5,Unl

View File

@ -1,5 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=10
CONF=O7,Lives,3,5
CONF=OA,Demo Sounds,Off,On

View File

@ -1,5 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=5
CONF=O7,Lives,3,5
CONF=OA,Demo Sounds,Off,On

View File

@ -1,4 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=13
CONF=O7,Lives,3,5

View File

@ -1,5 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=8
CONF=O7,Lives,3,5
CONF=OA,Demo Sounds,Off,On

View File

@ -1,4 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=9

View File

@ -1,4 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=2
CONF=O78,Lives,3,5,7,Unl

View File

@ -1,5 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=11
CONF=O78,Lives,3,5,Free Play,Invuln.
CONF=OA,Demo Sounds,Off,On

View File

@ -1,4 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=12
CONF=O7,Lives,3,Unl

View File

@ -1,5 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=18
CONF=O78,Lives,3,4,5,6
CONF=O9,Infinite Lives,Off,On

View File

@ -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

View File

@ -1,4 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=6
CONF=O78,Lives,3,4,5,Unl

View File

@ -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

View File

@ -1,4 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=0
CONF=O78,Lives,3,4,5,Unl

View File

@ -1,5 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=7
CONF=O7,Lives,3,5
CONF=OB,Difficulty,Easy,Hard

View File

@ -1,4 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=14
CONF=O78,Lives,3,4,5,Unl

View File

@ -1,5 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=3
CONF=O7,Lives,3,4
CONF=O9,Continue,No,Yes

View File

@ -1,5 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=4
CONF=O7,Lives,3,5
CONF=OA,Demo Sounds,Off,On

View File

@ -1,4 +0,0 @@
[ARC]
RBF=SCRAMBLE
MOD=15
CONF=O78,Lives,3,4,5,Unl

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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;

View File

@ -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";