mirror of
https://github.com/holub/mame
synced 2025-06-06 04:43:45 +03:00
(MESS) megadriv: added some more pirate games recently dumped, including
original protected versions of some already emulated games. thanks to Cah4e3 Azathoth, magicrip and the Russian crew for the dumps and to EkeEke for the info on Tekken Special (the only one using a new protection scheme). nw.
This commit is contained in:
parent
ec6a129f39
commit
1fbdec44ac
@ -14035,6 +14035,18 @@ but dumps still have to be confirmed.
|
||||
<description>Feng Kuang Tao Hua Yuan (Chi)</description>
|
||||
<year>199?</year>
|
||||
<publisher><unlicensed></publisher>
|
||||
<part name="cart" interface="megadriv_cart">
|
||||
<feature name="slot" value="rom_mjlov"/>
|
||||
<dataarea name="rom" size="1048576">
|
||||
<rom name="insane paradise (ch) [a2].bin" size="1048576" crc="2f15bb22" sha1="59e3cf744636e4a27876f271f302d2620bbcbf39" offset="0x000000" loadflag="load16_word_swap"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="fengkuan1" cloneof="fengkuan">
|
||||
<description>Feng Kuang Tao Hua Yuan (Chi, Unprotected)</description>
|
||||
<year>199?</year>
|
||||
<publisher><unlicensed></publisher>
|
||||
<part name="cart" interface="megadriv_cart">
|
||||
<dataarea name="rom" size="1048576">
|
||||
<rom name="feng kuang tao hua yuan (chi) (unl).bin" size="1048576" crc="8d40d64f" sha1="0330611a5fcb1f3ca173fcb3387fd35b865f1131" offset="0x000000" loadflag="load16_word_swap"/>
|
||||
@ -25560,6 +25572,18 @@ Notice that these are not working on real hardware due to bugged code with VDP i
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="tekkensp">
|
||||
<description>Tekken Special</description>
|
||||
<year>199?</year>
|
||||
<publisher><unlicensed></publisher>
|
||||
<part name="cart" interface="megadriv_cart">
|
||||
<feature name="slot" value="rom_tekkensp"/>
|
||||
<dataarea name="rom" size="2097152">
|
||||
<rom name="tekken special (unl).bin" size="2097152" crc="010f6369" sha1="403a33cfbf72cc98c23c45850897e1e6185b7237" offset="0x000000" loadflag="load16_word_swap"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="tekkn3sp">
|
||||
<description>Tekken 3 Special</description>
|
||||
<year>199?</year>
|
||||
@ -28291,6 +28315,20 @@ Notice that these are not working on real hardware due to bugged code with VDP i
|
||||
<description>Wu Kong Wai Zhuan (Chi)</description>
|
||||
<year>1996</year>
|
||||
<publisher>Ming</publisher>
|
||||
<part name="cart" interface="megadriv_cart">
|
||||
<feature name="slot" value="rom_yasech"/>
|
||||
<dataarea name="rom" size="2097152">
|
||||
<rom name="wu kong wai zhuan (chi) [a4].bin" size="2097152" crc="0bd70e54" sha1="7e35547d0505e83e3a6b05ad34c1db3a65998532" offset="0x000000" loadflag="load16_word_swap"/>
|
||||
</dataarea>
|
||||
<dataarea name="sram" size="16384">
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="wukongc1" cloneof="wukong">
|
||||
<description>Wu Kong Wai Zhuan (Chi, Unprotected)</description>
|
||||
<year>1996</year>
|
||||
<publisher>Ming</publisher>
|
||||
<part name="cart" interface="megadriv_cart">
|
||||
<feature name="slot" value="rom_sram"/>
|
||||
<dataarea name="rom" size="2097152">
|
||||
@ -29328,6 +29366,18 @@ Notice that these are not working on real hardware due to bugged code with VDP i
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mjclub">
|
||||
<description>Super Mahjong Club</description>
|
||||
<year>199?</year>
|
||||
<publisher><unlicensed></publisher>
|
||||
<part name="cart" interface="megadriv_cart">
|
||||
<feature name="slot" value="rom_mjlov"/>
|
||||
<dataarea name="rom" size="1048576">
|
||||
<rom name="super majon club (unl).bin" size="1048576" crc="1d81a67c" sha1="03f48da0541dac5a11788460c427d5fdb34bbd1b" offset="0x000000" loadflag="load16_word_swap"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="smario2">
|
||||
<description>Super Mario 2 1998</description>
|
||||
<year>199?</year>
|
||||
@ -30375,6 +30425,17 @@ Notice that these are not working on real hardware due to bugged code with VDP i
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="plantzom">
|
||||
<description>Plants Vs Zombies (Rus)</description>
|
||||
<year>199?</year>
|
||||
<publisher><unlicensed></publisher>
|
||||
<part name="cart" interface="megadriv_cart">
|
||||
<dataarea name="rom" size="524288">
|
||||
<rom name="plants vs zombies (rus).bin" size="524288" crc="414648d2" sha1="aa4596a19aad478647b480151401cf60c6612458" offset="00000" loadflag="load16_word_swap"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="pokecda" cloneof="pokecd">
|
||||
<description>Pokemon Crazy Drummer (Alt)</description>
|
||||
<year>199?</year>
|
||||
@ -30638,6 +30699,17 @@ Notice that these are not working on real hardware due to bugged code with VDP i
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="wotanks">
|
||||
<description>World of Tanks (Rus)</description>
|
||||
<year>199?</year>
|
||||
<publisher><unlicensed></publisher>
|
||||
<part name="cart" interface="megadriv_cart">
|
||||
<dataarea name="rom" size="1048576">
|
||||
<rom name="world of tanks (rus).bin" size="1048576" crc="7ac9e951" sha1="d96484af69fce78dc3e038df72b73b37584db3b7" offset="00000" loadflag="load16_word_swap"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="winx" cloneof="valis">
|
||||
<description>Winx - Shkola Volshyebnits (Rus)</description>
|
||||
<year>199?</year>
|
||||
|
@ -1148,25 +1148,6 @@ void md_base_state::megadriv_init_common()
|
||||
m_megadrive_io_read_data_port_ptr = read8_delegate(FUNC(md_base_state::megadrive_io_read_data_port_3button),this);
|
||||
m_megadrive_io_write_data_port_ptr = write16_delegate(FUNC(md_base_state::megadrive_io_write_data_port_3button),this);
|
||||
|
||||
{
|
||||
/* only really useful on official games, ea games etc. don't bother
|
||||
some games specify a single address, (start 200001, end 200001)
|
||||
this usually means there is serial eeprom instead */
|
||||
int i;
|
||||
UINT16 *rom = (UINT16*)memregion("maincpu")->base();
|
||||
|
||||
mame_printf_debug("DEBUG:: Header: Backup RAM string (ignore for games without)\n");
|
||||
for (i=0;i<12;i++)
|
||||
{
|
||||
if (i==2) mame_printf_debug("\nstart: ");
|
||||
if (i==4) mame_printf_debug("\nend : ");
|
||||
if (i==6) mame_printf_debug("\n");
|
||||
|
||||
mame_printf_debug("%04x ",rom[(0x1b0/2)+i]);
|
||||
}
|
||||
mame_printf_debug("\n");
|
||||
}
|
||||
|
||||
m_export = 0;
|
||||
m_pal = 0;
|
||||
}
|
||||
|
@ -418,6 +418,7 @@ static SLOT_INTERFACE_START(md_cart)
|
||||
SLOT_INTERFACE_INTERNAL("rom_smouse", MD_ROM_SMOUSE)
|
||||
SLOT_INTERFACE_INTERNAL("rom_soulb", MD_ROM_SOULB)
|
||||
SLOT_INTERFACE_INTERNAL("rom_squir", MD_ROM_SQUIR)
|
||||
SLOT_INTERFACE_INTERNAL("rom_tekkensp", MD_ROM_TEKKENSP)
|
||||
SLOT_INTERFACE_INTERNAL("rom_topf", MD_ROM_TOPF)
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
|
@ -51,6 +51,7 @@ const device_type MD_ROM_POKESTAD = &device_creator<md_rom_pokestad_device>;
|
||||
const device_type MD_ROM_REALTEC = &device_creator<md_rom_realtec_device>;
|
||||
const device_type MD_ROM_REDCL = &device_creator<md_rom_redcl_device>;
|
||||
const device_type MD_ROM_SQUIR = &device_creator<md_rom_squir_device>;
|
||||
const device_type MD_ROM_TEKKENSP = &device_creator<md_rom_tekkensp_device>;
|
||||
const device_type MD_ROM_TOPF = &device_creator<md_rom_topf_device>;
|
||||
const device_type MD_ROM_RADICA = &device_creator<md_rom_radica_device>;
|
||||
const device_type MD_ROM_BEGGARP = &device_creator<md_rom_beggarp_device>;
|
||||
@ -204,6 +205,11 @@ md_rom_squir_device::md_rom_squir_device(const machine_config &mconfig, const ch
|
||||
{
|
||||
}
|
||||
|
||||
md_rom_tekkensp_device::md_rom_tekkensp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: md_std_rom_device(mconfig, MD_ROM_TEKKENSP, "MD Tekken Special", tag, owner, clock, "md_rom_tekkensp", __FILE__)
|
||||
{
|
||||
}
|
||||
|
||||
md_rom_topf_device::md_rom_topf_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: md_std_rom_device(mconfig, MD_ROM_TOPF, "MD Top Fighter", tag, owner, clock, "md_rom_topf", __FILE__)
|
||||
{
|
||||
@ -351,6 +357,16 @@ void md_rom_smw64_device::device_reset()
|
||||
memset(m_ctrl, 0, sizeof(m_ctrl));
|
||||
}
|
||||
|
||||
void md_rom_tekkensp_device::device_start()
|
||||
{
|
||||
save_item(NAME(m_reg));
|
||||
}
|
||||
|
||||
void md_rom_tekkensp_device::device_reset()
|
||||
{
|
||||
m_reg = 0;
|
||||
}
|
||||
|
||||
void md_rom_topf_device::device_start()
|
||||
{
|
||||
save_item(NAME(m_latch));
|
||||
@ -1160,6 +1176,52 @@ WRITE16_MEMBER(md_rom_smw64_device::write)
|
||||
}
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
TEKKEN SPECIAL
|
||||
-------------------------------------------------*/
|
||||
|
||||
READ16_MEMBER(md_rom_tekkensp_device::read)
|
||||
{
|
||||
if (offset < 0x400000/2)
|
||||
return m_rom[MD_ADDR(offset)];
|
||||
else if ((offset & 0x07) == 1 && m_reg)
|
||||
return (m_reg - 1) << 8;
|
||||
else
|
||||
return 0xffff;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(md_rom_tekkensp_device::write)
|
||||
{
|
||||
if (offset < 0x400000/2)
|
||||
return;
|
||||
|
||||
// thanks to EkeEke for the documentation
|
||||
switch (offset & 0x07)
|
||||
{
|
||||
case 0x00:
|
||||
// data output reset ? (game writes $FF before & after protection check)
|
||||
m_reg = 0;
|
||||
break;
|
||||
case 0x01:
|
||||
// read only ?
|
||||
break;
|
||||
case 0x06:
|
||||
// data output mode bit 0 ? (game writes $01)
|
||||
break;
|
||||
case 0x07:
|
||||
// data output mode bit 1 ? (never written by game)
|
||||
break;
|
||||
default:
|
||||
if (data & 0x100) // data input (only connected to D0 ?)
|
||||
{
|
||||
// 4-bit hardware register ($400004 corresponds to bit0, $400006 to bit1, etc)
|
||||
int shift = (offset - 2) & 3;
|
||||
m_reg |= (1 << shift);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
TOP FIGHTER
|
||||
-------------------------------------------------*/
|
||||
|
@ -440,6 +440,26 @@ private:
|
||||
UINT16 m_latch;
|
||||
};
|
||||
|
||||
// ======================> md_rom_tekkensp_device
|
||||
|
||||
class md_rom_tekkensp_device : public md_std_rom_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
md_rom_tekkensp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
|
||||
// reading and writing
|
||||
virtual DECLARE_READ16_MEMBER(read);
|
||||
virtual DECLARE_WRITE16_MEMBER(write);
|
||||
|
||||
private:
|
||||
UINT16 m_reg;
|
||||
};
|
||||
|
||||
// ======================> md_rom_topf_device
|
||||
|
||||
class md_rom_topf_device : public md_std_rom_device
|
||||
@ -554,6 +574,7 @@ extern const device_type MD_ROM_SMOUSE;
|
||||
extern const device_type MD_ROM_SOULB;
|
||||
extern const device_type MD_ROM_SSF2;
|
||||
extern const device_type MD_ROM_SQUIR;
|
||||
extern const device_type MD_ROM_TEKKENSP;
|
||||
extern const device_type MD_ROM_TOPF;
|
||||
extern const device_type MD_ROM_RADICA;
|
||||
extern const device_type MD_ROM_BEGGARP;
|
||||
|
@ -280,6 +280,7 @@ static const md_slot slot_list[] =
|
||||
{ SMOUSE, "rom_smouse" },
|
||||
{ SOULBLAD, "rom_soulblad" },
|
||||
{ SQUIRRELK, "rom_squir" },
|
||||
{ TEKKENSP, "rom_tekkesp" },
|
||||
{ TOPFIGHTER, "rom_topf" },
|
||||
|
||||
{ SEGA_SRAM_FULLPATH, "rom_sram" },
|
||||
|
@ -69,6 +69,7 @@ enum
|
||||
SMOUSE, /* Smart Mouse */
|
||||
SOULBLAD, /* Soul Blade */
|
||||
SQUIRRELK, /* Squirrel King */
|
||||
TEKKENSP, /* Tekken Special */
|
||||
TOPFIGHTER, /* Top Fighter 2000 MK VIII */
|
||||
|
||||
// when loading from fullpath, we need to treat SRAM in custom way
|
||||
|
Loading…
Reference in New Issue
Block a user