Support for original The Glob and Beastie Feastie.

This commit is contained in:
sorgelig
2020-01-14 11:41:33 +08:00
parent 35f4f1cda0
commit eab984e087
5 changed files with 82 additions and 2 deletions

View File

@@ -212,6 +212,7 @@ reg mod_ponp = 0;
reg mod_van = 0;
reg mod_pmm = 0;
reg mod_dshop= 0;
reg mod_glob = 0;
wire mod_gm = mod_gork | mod_mrtnt;
@@ -234,6 +235,7 @@ always @(posedge clk_sys) begin
mod_van <= (mod == 12);
mod_pmm <= (mod == 13);
mod_dshop<= (mod == 14);
mod_glob <= (mod == 15);
end
reg [7:0] sw[8];
@@ -410,6 +412,7 @@ pacman pacman
.mod_ponp(mod_ponp | mod_van | mod_dshop),
.mod_van(mod_van | mod_dshop),
.mod_dshop(mod_dshop),
.mod_glob(mod_glob),
.RESET(RESET | status[0] | buttons[1]),
.CLK(clk_sys),

View File

@@ -0,0 +1,31 @@
<misterromdescription>
<name>Beastie Feastie (Pac-Man conversion)</name>
<mameversion>0216</mameversion>
<mratimestamp>201911270000</mratimestamp>
<category>Platform</category>
<setname>beastfp</setname>
<rbf>pacman</rbf>
<rom index="1">
<part>0F</part>
</rom>
<switches default="FF,FF,F3">
<dip bits="15" name="Cabinet" ids="Cocktail,Upright"/>
<dip bits="16,17" name="Lives" ids="6,5,4,3"/>
<dip bits="18,20" name="Difficulty" ids="Hardest,Very Hard,Very Difficult,Difficult,Normal,Easy,Very Easy,Easiest"/>
<dip bits="21" name="Demo Sounds" ids="On,Off"/>
</switches>
<rom index="0" zip="suprglob.zip" md5="3169e442c32c3d743e0e30f4288e91e5" type="merged">
<part name="bf-u2.bin" crc="3afc517b"/>
<part name="bf-u3.bin" crc="8dbd76d0"/>
<part name="bf-u2.bin" crc="3afc517b"/>
<part name="bf-u3.bin" crc="8dbd76d0"/>
<part name="beastf.5e" crc="5654dc34"/>
<part name="beastf.5f" crc="1b30ca61"/>
<part name="beastf.5e" crc="5654dc34"/>
<part name="beastf.5f" crc="1b30ca61"/>
<part name="82s126.1m" crc="a9cc86bf"/>
<part name="4_a_the_glob.4a" crc="28faa769"/>
<part name="82s126.3m" crc="77245b66"/>
<part name="7_f_the_glob.7f" crc="1f617527"/>
</rom>
</misterromdescription>

31
releases/Ther Glob.mra Normal file
View File

@@ -0,0 +1,31 @@
<misterromdescription>
<name>The Glob (Pac-Man hardware)</name>
<mameversion>0216</mameversion>
<mratimestamp>201911270000</mratimestamp>
<category>Platform</category>
<setname>theglobp</setname>
<rbf>pacman</rbf>
<rom index="1">
<part>0F</part>
</rom>
<switches default="FF,FF,F3">
<dip bits="15" name="Cabinet" ids="Cocktail,Upright"/>
<dip bits="16,17" name="Lives" ids="6,5,4,3"/>
<dip bits="18,20" name="Difficulty" ids="Hardest,Very Hard,Very Difficult,Difficult,Normal,Easy,Very Easy,Easiest"/>
<dip bits="21" name="Demo Sounds" ids="On,Off"/>
</switches>
<rom index="0" zip="suprglob.zip" md5="253bb5b2c5815eacae8192047cbcf984" type="merged">
<part name="u_2_the_glob_pg02284_eagle.u2" crc="829d0bea"/>
<part name="u_3_the_glob_pg02284_eagle.u3" crc="31de6628"/>
<part name="u_2_the_glob_pg02284_eagle.u2" crc="829d0bea"/>
<part name="u_3_the_glob_pg02284_eagle.u3" crc="31de6628"/>
<part name="5_e_the_glob_pg02284_eagle.5e" crc="53688260"/>
<part name="5_f_the_glob_pg02284_eagle.5f" crc="051f59c7"/>
<part name="5_e_the_glob_pg02284_eagle.5e" crc="53688260"/>
<part name="5_f_the_glob_pg02284_eagle.5f" crc="051f59c7"/>
<part name="82s126.1m" crc="a9cc86bf"/>
<part name="4_a_the_glob.4a" crc="28faa769"/>
<part name="82s126.3m" crc="77245b66"/>
<part name="7_f_the_glob.7f" crc="1f617527"/>
</rom>
</misterromdescription>

View File

@@ -76,6 +76,7 @@ port
mod_ms : in std_logic;
mod_woodp : in std_logic;
mod_eeek : in std_logic;
mod_glob : in std_logic;
mod_alib : in std_logic;
mod_ponp : in std_logic;
mod_van : in std_logic;
@@ -568,7 +569,11 @@ eeek_decrypt : process
begin
wait until rising_edge(clk);
if watchdog_reset_l = '0' then
dcnt <= "01";
if mod_eeek = '1' then
dcnt <= "01";
else
dcnt <= "10";
end if;
else
old_rd_l <= cpu_rd_l;
if old_rd_l = '1' and cpu_rd_l = '0' and cpu_iorq_l = '0' and cpu_m1_l = '1' then
@@ -587,6 +592,7 @@ port map(
MRTNT => mod_mrtnt,
MSPACMAN => mod_ms,
EEEK => mod_eeek,
GLOB => mod_glob,
PLUS => mod_plus,
dcnt => dcnt,
cpu_m1_l => cpu_m1_l,

View File

@@ -235,6 +235,7 @@ entity rom_descrambler is
MSPACMAN : in std_logic := '0'; -- set to 1 when using Ms Pacman ROMs, 0 otherwise
PLUS : in std_logic := '0';
EEEK : in std_logic := '0';
GLOB : in std_logic := '0';
dcnt : in std_logic_vector(1 downto 0);
cpu_m1_l : in std_logic;
@@ -266,6 +267,7 @@ architecture rtl of rom_descrambler is
signal r : std_logic_vector(7 downto 0);
signal r2 : std_logic_vector(7 downto 0);
signal r3 : std_logic_vector(7 downto 0);
signal mtd_addr : std_logic_vector(4 downto 0);
signal method : std_logic_vector(3 downto 0);
begin
@@ -347,7 +349,12 @@ begin
rom_lo(7) & not rom_lo(6) & rom_lo(1) & not rom_lo(0) & rom_lo(3) & not rom_lo(4) & not rom_lo(2) & not rom_lo(5) when dcnt = "10" else
rom_lo(7) & not rom_lo(1) & not rom_lo(4) & not rom_lo(0) & rom_lo(3) & rom_lo(6) & not rom_lo(2) & not rom_lo(5);
p_decoder_comb : process(clk, rom_addr, addr, rom_data_in, rom_data_out, rom_patched, rom_hi, r, overlay_on, MRTNT, MSPACMAN, EEEK, r2)
r3 <= not rom_lo(3) & not rom_lo(7) & rom_lo(0) & not rom_lo(6) & not rom_lo(4) & rom_lo(1) & not rom_lo(2) & not rom_lo(5) when dcnt = "00" else
not rom_lo(1) & not rom_lo(7) & rom_lo(0) & rom_lo(3) & not rom_lo(4) & not rom_lo(6) & not rom_lo(2) & not rom_lo(5) when dcnt = "01" else
not rom_lo(3) & not rom_lo(0) & not rom_lo(4) & not rom_lo(6) & rom_lo(7) & rom_lo(1) & not rom_lo(2) & not rom_lo(5) when dcnt = "10" else
not rom_lo(1) & not rom_lo(0) & not rom_lo(4) & rom_lo(3) & rom_lo(7) & not rom_lo(6) & not rom_lo(2) & not rom_lo(5);
p_decoder_comb : process(clk, rom_addr, addr, rom_data_in, rom_data_out, rom_patched, rom_hi, r, overlay_on, MRTNT, MSPACMAN, EEEK, r2, GLOB, r3)
variable patch_addr : std_logic_vector(15 downto 0);
begin
rom_addr <= addr;
@@ -362,6 +369,8 @@ begin
if rom_addr(15) = '0' then
if EEEK = '1' then
rom_data_in <= r2;
elsif GLOB = '1' then
rom_data_in <= r3;
else
rom_data_in <= r;
end if;