1
0
mirror of https://github.com/Gehstock/Mist_FPGA.git synced 2026-01-13 23:26:43 +00:00

Qbert: fix some DIPs, add Argus and Knightmare

This commit is contained in:
Gyorgy Szombathelyi 2022-02-12 20:45:15 +01:00
parent 82f7c9c441
commit 823e8ef78d
9 changed files with 215 additions and 20 deletions

View File

@ -0,0 +1,51 @@
<misterromdescription>
<name>Argus</name>
<mameversion>0228</mameversion>
<setname>argusg</setname>
<mratimestamp>20201231150731</mratimestamp>
<year>1983</year>
<manufacturer>Gottlieb</manufacturer>
<category>Platform</category>
<rbf>qbert</rbf>
<buttons names="Service Select,Start 1P,Start 2P,Coin" default="A,Start,Select,R"/>
<switches default="01" page_id="1" page_name="Switches" base="16">
<dip bits="0" name="Demo Sounds" ids="On,Off"></dip>
<dip bits="3" name="Free Play" ids="Off,On"></dip>
<dip bits="6" name="Difficulty" ids="Normal,Hard"></dip>
</switches>
<rom index="1">
<part>7</part>
</rom>
<rom index="0" zip="argusg.zip" md5="none">
<!-- 4/5 roms, 8k each -->
<part crc="e1906355" name="arg_rom0_2764.c11c12"/>
<part crc="733d3d44" name="arg_rom1_2764.c12c13"/>
<part crc="b5e9ee77" name="arg_rom2_2764.c13c14"/>
<part crc="4dc2914c" name="arg_rom3_2764.c14c15"/>
<part crc="2f48bd78" name="arg_rom4_2764.c16"/>
<!-- ram section used as rom -->
<part crc="5d35b83e" name="arg_ram2_2732.c7"/>
<part crc="7180e823" name="arg_ram4_2732.c9c10"/>
<!-- sound -->
<part crc="3a6cf455" name="arg_snd1_2716.u5"/>
<part crc="ddf32040" name="arg_snd2_2716.u6"/>
<part crc="3a6cf455" name="arg_snd1_2716.u5"/>
<part crc="ddf32040" name="arg_snd2_2716.u6"/>
<!-- no bg, used as ram -->
<part repeat="8192">00</part>
<!-- foreground roms -->
<part crc="cdb6e25c" name="arg_fg3_2764.k7k8"/>
<part crc="cdb6e25c" name="arg_fg3_2764.k7k8"/>
<part crc="f10af1be" name="arg_fg2_2764.k6"/>
<part crc="f10af1be" name="arg_fg2_2764.k6"/>
<part crc="5add96e5" name="arg_fg1_2764.k5"/>
<part crc="5add96e5" name="arg_fg1_2764.k5"/>
<part crc="5b7bd588" name="arg_fg0_2764.k4"/>
<part crc="5b7bd588" name="arg_fg0_2764.k4"/>
</rom>
</misterromdescription>

View File

@ -10,9 +10,10 @@
<rbf>qbert</rbf>
<buttons names="Swing,Start 1P,Start 2P,Coin,Service Select,Bunt,Pitch Left,Pitch Right" default="A,Start,Select,R,L,X,B,Y"/>
<switches default="01" page_id="1" page_name="Switches" base="16">
<dip bits="3" name="2 player game" ids="1 credit,2 credits"></dip>
<dip bits="5,6" name="Difficulty" ids="Easy,Hard,Medium,Vey Hard"></dip>
<dip bits="2" name="Demo Sounds" ids="Off,On"></dip>
<dip bits="0" name="Difficulty" ids="Easy,Hard"/>
<dip bits="3" name="2 player game" ids="1 credit,2 credits"/>
<dip bits="2" name="Demo Sounds" ids="Off,On"/>
<dip bits="5" name="Coin Options" ids="Normal,French"/>
</switches>
<rom index="1">
<part>4</part>

View File

@ -10,7 +10,7 @@
<rbf>qbert</rbf>
<buttons names="Service Select,Start 1P,Start 2P,Coin,Button 1,Button 2" default="L,Start,Select,R,A,B"/>
<switches default="01" page_id="1" page_name="Switches" base="16">
<dip bits="0" name="Bonus Life" ids="25k 75k every 50k,20k 90k every 60k"></dip>
<dip bits="0" name="Bonus Life" ids="25k 75k/50k,20k 90k/60k"></dip>
<dip bits="1" name="Demo Sounds" ids="Off,On"></dip>
<dip bits="2" name="Demo Mode" ids="On,Off"></dip>
<dip bits="3" name="Lives" ids="5,3"></dip>

View File

@ -0,0 +1,73 @@
<misterromdescription>
<name>Knightmare</name>
<region>USA</region>
<homebrew>no</homebrew>
<bootleg>no</bootleg>
<version>Set 1</version>
<alternative></alternative>
<platform></platform>
<series></series>
<year>1982</year>
<manufacturer>Gottlieb</manufacturer>
<category>Platform - Climb</category>
<setname>kngtmare</setname>
<parent>qbert</parent>
<mameversion>0198</mameversion>
<rbf>qbert</rbf>
<about></about>
<resolution>15kHz</resolution>
<rotation>vertical (ccw)</rotation>
<flip>yes</flip>
<players>2 (alternating)</players>
<joystick>4-way diagonal</joystick>
<special_controls></special_controls>
<num_buttons>0</num_buttons>
<buttons default="A,Start,Select,R" names="Service Select,Start 1P,Start 2P,Coin"></buttons>
<switches default="00" page_id="1" page_name="Switches" base="16">
<dip bits="5" ids="3,5" name="Lives"></dip>
</switches>
<rom index="1">
<part>8</part>
</rom>
<rom index="0" md5="none" zip="kngtmare.zip">
<!-- MAIN CPU ROM 48k -->
<part crc="620dc629" name="gv112_rom0_2764.c11c12"></part>
<part crc="5b340640" name="gv112_rom1_2764.c12c13"></part>
<part crc="53e01f97" name="gv112_rom2_2764.c13c14"></part>
<part crc="47351270" name="gv112_rom3_2764.c14c15"></part>
<part repeat="16384">00</part>
<!-- SOUND CPU ROM 8k -->
<!-- no sound dump -->
<part repeat="8192">00</part>
<!-- Background ROMs 8k -->
<part crc="a74591fd" name="gv112_bg0_2732.e11e12"></part>
<part crc="5a226e6a" name="gv112_bg1_2732.e13"></part>
<!-- Foreground ROMs -->
<part crc="d1886658" name="gv112_fg3_2764.k7k8"></part>
<part crc="d1886658" name="gv112_fg3_2764.k7k8"></part>
<part crc="e1c73f0c" name="gv112_fg2_2764.k6"></part>
<part crc="e1c73f0c" name="gv112_fg2_2764.k6"></part>
<part crc="724bc3ea" name="gv112_fg1_2764.k5"></part>
<part crc="724bc3ea" name="gv112_fg1_2764.k5"></part>
<part crc="0311bbd9" name="gv112_fg0_2764.k4"></part>
<part crc="0311bbd9" name="gv112_fg0_2764.k4"></part>
</rom>
<rom index="2"></rom>
<rom index="3"></rom>
<rom index="4"></rom>
<nvram></nvram>
<remark></remark>
<mratimestamp>20210430005030</mratimestamp>
</misterromdescription>

View File

@ -10,8 +10,11 @@
<rbf>qbert</rbf>
<buttons names="Service Select,Start 1P,Start 2P,Coin" default="A,Start,Select,R"/>
<switches default="01" page_id="1" page_name="Switches" base="16">
<dip bits="4" name="Demo Sounds" ids="On,Off"></dip>
<dip bits="0" name="Demo Sounds" ids="On,Off"></dip>
<dip bits="1" name="Difficulty" ids="Normal,Hard"></dip>
<dip bits="3" name="Lives" ids="3,5"></dip>
<dip bits="5" name="Hexagon" ids="Roving,Stationary"></dip>
<dip bits="6,7" name="Bonus Life" ids="30k 80k/50k,30k 60k/30k,40k 90k/50k,50k 125k/75k"></dip>
</switches>
<rom index="1">
<part>3</part>

View File

@ -10,11 +10,10 @@
<rbf>qbert</rbf>
<buttons names="Service Select,Start 1P,Start 2P,Coin" default="A,Start,Select,R"/>
<switches default="01" page_id="1" page_name="Switches" base="16">
<dip bits="0" name="Demo Sounds" ids="On,Off"></dip>
<dip bits="1" name="Kicker" ids="Off,On"></dip>
<dip bits="3" name="Cabinet" ids="Upright,Cocktail"></dip>
<dip bits="4" name="Demo Mode" ids="Off,On"></dip>
<dip bits="5" name="Free Play" ids="Off,On"></dip>
<dip bits="3" name="Demo Sounds" ids="On,Off"></dip>
<dip bits="1" name="Bonus Life" ids="10000,15000"></dip>
<dip bits="6" name="Extra Bonus Life" ids="20000,25000"></dip>
<dip bits="7" name="Difficulty" ids="Normal,Hard"></dip>
</switches>
<rom index="1">
<part>1</part>

View File

@ -55,7 +55,7 @@ wire flip = status[7];
wire service = status[8];
wire diagonal = status[9];
wire [1:0] orientation = {flip, core_mod != mod_tylz && core_mod != mod_insector};
wire [1:0] orientation = {flip, core_mod != mod_tylz && core_mod != mod_insector && core_mod != mod_kngtmare && core_mod != mod_argus};
wire [7:0] dip_sw = status[23:16];
assign LED = ~ioctl_downl;
@ -105,9 +105,12 @@ localparam mod_krull = 3;
localparam mod_curvebal = 4;
localparam mod_tylz = 5;
localparam mod_insector = 6;
localparam mod_argus = 7;
localparam mod_kngtmare = 8;
wire [7:0] spinner_pos;
wire spinner_reset;
// Mad Planets spinner
wire [7:0] spinner_pos;
spinner spinner (
.clock_40(clk_sys),
.reset(spinner_reset),
@ -117,14 +120,36 @@ spinner spinner (
.spin_angle(spinner_pos)
);
// Argus trackball
wire [15:0] trackball_pos;
spinner spinnerX (
.clock_40(clk_sys),
.reset(spinner_reset),
.btn_left(m_left),
.btn_right(m_right),
.btn_acc(1'b1),
.ctc_zc_to_2(vb),
.spin_angle(trackball_pos[15:8])
);
spinner spinnerY (
.clock_40(clk_sys),
.reset(spinner_reset),
.btn_left(m_up),
.btn_right(m_down),
.btn_acc(1'b1),
.ctc_zc_to_2(vb),
.spin_angle(trackball_pos[7:0])
);
reg [5:0] OP2720;
reg [7:0] IP1710;
reg [7:0] IP4740;
reg [7:0] IPA1J2;
reg [15:0] IPA1J2;
always @(*) begin
IPA1J2 = 8'd0;
IPA1J2 = 16'd0;
IP4740 = 8'd0;
IP1710 = {
@ -193,7 +218,7 @@ always @(*) begin
m_up
};
IPA1J2 = spinner_pos;
IPA1J2 = {spinner_pos, spinner_pos};
end
mod_krull:
@ -289,6 +314,48 @@ always @(*) begin
m_up
};
end
mod_argus:
begin
IP1710 = { // IN1
4'h0,
m_coin2,
m_coin1,
m_fireA,
~service
};
IP4740 = { // IN4
4'h0,
m_fire2A,
m_fire2B,
m_fireA,
m_fireB
};
IPA1J2 = trackball_pos;
end
mod_kngtmare:
begin
IP1710 = { // IN1
4'h0,
m_coin2,
m_coin1,
2'b00
};
IP4740 = { // IN4
m_two_players,
m_one_player,
m_fireB,
m_fireA,
m_rightB | m_right2,
m_left,
m_leftB | m_left2,
m_right
};
end
default:
begin
end
@ -465,7 +532,7 @@ mylstar_board mylstar_board
.rom_init_address(ioctl_addr),
.rom_init_data(ioctl_dout),
.nvram_data(ioctl_din),
.bgram(core_mod == mod_krull),
.bgram(core_mod == mod_krull || core_mod == mod_argus),
.vflip(flip),
.hflip(flip),

View File

@ -21,7 +21,7 @@ module mylstar_board
input [7:0] IP1710,
input [7:0] IP4740,
input [7:0] IPA1J2,
input [15:0] IPA1J2,
output [5:0] OP2720,
output [4:0] OP3337,
output [7:0] OP4740,
@ -129,7 +129,8 @@ end
// CPU/RAM/ROM //
////////////////////////
wire [7:0] A1J2 = (trackball0_sel | trackball1_sel) ? IPA1J2 : 8'd0;
wire [7:0] A1J2 = trackball0_sel ? IPA1J2[15:8] :
trackball1_sel ? IPA1J2[7:0] : 8'd0;
wire [7:0] ram_dout = C5_Q | C6_Q | C7_Q | C9_10_Q | C8_9_Q | C10_11_Q;
wire [7:0] rom_dout;

View File

@ -36,8 +36,8 @@ begin
if btn_left = '1' then spin_count <= spin_count - 3; end if; -- left
if btn_right = '1' then spin_count <= spin_count + 3; end if; -- right
else
if btn_left = '1' then spin_count <= spin_count - 55; end if;
if btn_right = '1' then spin_count <= spin_count + 55; end if;
if btn_left = '1' then spin_count <= spin_count - 15; end if;
if btn_right = '1' then spin_count <= spin_count + 15; end if;
end if;
end if;
end if;