mirror of
https://github.com/holub/mame
synced 2025-07-04 09:28:51 +03:00
(MESS) gameboy: added support for the simple multigame mapper used
by Mani 4 in 1 (DMG-601-CHN). [Fabio Priuli] out of whatsnew: also added the (previously missing) chinese dumps to the softlist.
This commit is contained in:
parent
916dd03c9a
commit
5f76399216
@ -10996,7 +10996,20 @@
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="4in1ta" cloneof="varpack">
|
||||
<software name="4in1_601" supported="no">
|
||||
<description>Mani 4 in 1 (Chi, DMG-601 CHN)</description>
|
||||
<year>19??</year>
|
||||
<publisher>Mani</publisher>
|
||||
<info name="serial" value="DMG-601-CHN"/>
|
||||
<part name="cart" interface="gameboy_cart">
|
||||
<feature name="slot" value="rom_m161_m12" />
|
||||
<dataarea name="rom" size="262144">
|
||||
<rom name="dmg-601-chn.bin" size="262144" crc="0c38a775" sha1="dfe46e066c599c17e684ddda3fd74c5357910630" offset="000000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="4in1_602" cloneof="varpack">
|
||||
<description>Mani 4 in 1 (Chi, DMG-602 CHN)</description>
|
||||
<year>19??</year>
|
||||
<publisher>Mani</publisher>
|
||||
@ -11004,12 +11017,12 @@
|
||||
<part name="cart" interface="gameboy_cart">
|
||||
<feature name="slot" value="rom_mmm01" />
|
||||
<dataarea name="rom" size="524288">
|
||||
<rom name="mani 4 in 1 (china).bin" size="524288" crc="5bfc3ef5" sha1="c0639d6c993690022200f2fa4b3094249b9335c0" offset="000000" />
|
||||
<rom name="dmg-602-chn.bin" size="524288" crc="5bfc3ef5" sha1="c0639d6c993690022200f2fa4b3094249b9335c0" offset="000000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="4in1to">
|
||||
<software name="4in1_603">
|
||||
<description>Mani 4 in 1 (Chi, DMG-603 CHN)</description>
|
||||
<year>19??</year>
|
||||
<publisher>Mani</publisher>
|
||||
@ -11017,7 +11030,33 @@
|
||||
<part name="cart" interface="gameboy_cart">
|
||||
<feature name="slot" value="rom_mmm01" />
|
||||
<dataarea name="rom" size="524288">
|
||||
<rom name="4 in 1 (dmg-603 chn) [raw dump].bin" size="524288" crc="c373ac09" sha1="0030295574e4c518ff5cdf20febf6b6737426468" offset="000000" />
|
||||
<rom name="dmg-603-chn.bin" size="524288" crc="c373ac09" sha1="0030295574e4c518ff5cdf20febf6b6737426468" offset="000000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="4in1_604">
|
||||
<description>Mani 4 in 1 (Chi, DMG-604 CHN)</description>
|
||||
<year>19??</year>
|
||||
<publisher>Mani</publisher>
|
||||
<info name="serial" value="DMG-604-CHN"/>
|
||||
<part name="cart" interface="gameboy_cart">
|
||||
<feature name="slot" value="rom_mmm01" />
|
||||
<dataarea name="rom" size="524288">
|
||||
<rom name="dmg-604-chn.bin" size="524288" crc="cb48b6d0" sha1="1c79eb31a6754b4e96d33a182d36833208dc7177" offset="000000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="4in1_605">
|
||||
<description>Mani 4 in 1 (Chi, DMG-605 CHN)</description>
|
||||
<year>19??</year>
|
||||
<publisher>Mani</publisher>
|
||||
<info name="serial" value="DMG-605-CHN"/>
|
||||
<part name="cart" interface="gameboy_cart">
|
||||
<feature name="slot" value="rom_mmm01" />
|
||||
<dataarea name="rom" size="1048576">
|
||||
<rom name="dmg-605-chn.bin" size="1048576" crc="950773ee" sha1="af4706da224d794668f3b2c68aea7b3c16452d83" offset="000000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -23435,7 +23474,7 @@
|
||||
<part name="cart" interface="gameboy_cart">
|
||||
<feature name="slot" value="rom_sachen1" />
|
||||
<dataarea name="rom" size="262144">
|
||||
<rom name="4b-001.bin" size="262144" crc="82f06e93" sha1="7506c75fdfa29935afb1e85f5b6013516b2e9f92" offset="0" />
|
||||
<rom name="4b-001.bin" size="262144" crc="82f06e93" sha1="7506c75fdfa29935afb1e85f5b6013516b2e9f92" offset="000000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -23461,7 +23500,7 @@
|
||||
<part name="cart" interface="gameboy_cart">
|
||||
<feature name="slot" value="rom_sachen1" />
|
||||
<dataarea name="rom" size="262144">
|
||||
<rom name="4b-004.bin" size="262144" crc="c69a19f6" sha1="ca7990dc03a3b3ada1dce37afc4490deaf872402" offset="0" />
|
||||
<rom name="4b-004.bin" size="262144" crc="c69a19f6" sha1="ca7990dc03a3b3ada1dce37afc4490deaf872402" offset="000000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -23474,7 +23513,7 @@
|
||||
<part name="cart" interface="gameboy_cart">
|
||||
<feature name="slot" value="rom_sachen1" />
|
||||
<dataarea name="rom" size="262144">
|
||||
<rom name="4b-005.bin" size="262144" crc="f4310eb3" sha1="2107979104cff88bcd635215a936bbc44354ea7c" offset="0" />
|
||||
<rom name="4b-005.bin" size="262144" crc="f4310eb3" sha1="2107979104cff88bcd635215a936bbc44354ea7c" offset="000000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -23487,7 +23526,7 @@
|
||||
<part name="cart" interface="gameboy_cart">
|
||||
<feature name="slot" value="rom_sachen1" />
|
||||
<dataarea name="rom" size="262144">
|
||||
<rom name="4b-006.bin" size="262144" crc="95398da5" sha1="2e856de768c7cb442a206de8c94a23548027bb60" offset="0" />
|
||||
<rom name="4b-006.bin" size="262144" crc="95398da5" sha1="2e856de768c7cb442a206de8c94a23548027bb60" offset="000000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -23500,7 +23539,7 @@
|
||||
<part name="cart" interface="gameboy_cart">
|
||||
<feature name="slot" value="rom_sachen1" />
|
||||
<dataarea name="rom" size="262144">
|
||||
<rom name="4b-007.bin" size="262144" crc="62d9350e" sha1="0eef7f3934508ab79e1cad4ddf3bfdb3216b6b4f" offset="0" />
|
||||
<rom name="4b-007.bin" size="262144" crc="62d9350e" sha1="0eef7f3934508ab79e1cad4ddf3bfdb3216b6b4f" offset="000000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -23513,7 +23552,7 @@
|
||||
<part name="cart" interface="gameboy_cart">
|
||||
<feature name="slot" value="rom_sachen1" />
|
||||
<dataarea name="rom" size="262144">
|
||||
<rom name="4b-008.bin" size="262144" crc="740e9bc8" sha1="d7c11d56a42ed7c4ef2fe3c752931a63160d7429" offset="0" />
|
||||
<rom name="4b-008.bin" size="262144" crc="740e9bc8" sha1="d7c11d56a42ed7c4ef2fe3c752931a63160d7429" offset="000000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -23526,7 +23565,7 @@
|
||||
<part name="cart" interface="gameboy_cart">
|
||||
<feature name="slot" value="rom_sachen1" />
|
||||
<dataarea name="rom" size="262144">
|
||||
<rom name="4b-009.bin" size="262144" crc="114e1f1e" sha1="39743e21935a9115fcb4ee86d67d51bdb4b5f6d6" offset="0" />
|
||||
<rom name="4b-009.bin" size="262144" crc="114e1f1e" sha1="39743e21935a9115fcb4ee86d67d51bdb4b5f6d6" offset="000000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
@ -209,6 +209,7 @@ static const gb_slot slot_list[] =
|
||||
{ GB_MBC_MBC7, "rom_mbc7" },
|
||||
{ GB_MBC_TAMA5, "rom_tama5" },
|
||||
{ GB_MBC_MMM01, "rom_mmm01" },
|
||||
{ GB_MBC_M161, "rom_m161_m12" },
|
||||
{ GB_MBC_MBC3, "rom_huc1" }, // for now treat this as alias for MBC3
|
||||
{ GB_MBC_MBC3, "rom_huc3" }, // for now treat this as alias for MBC3
|
||||
{ GB_MBC_SACHEN1, "rom_sachen1" },
|
||||
|
@ -12,7 +12,6 @@ enum
|
||||
GB_MBC_NONE = 0, /* 32KB ROM - No memory bank controller */
|
||||
GB_MBC_MBC1, /* ~2MB ROM, 8KB RAM -or- 512KB ROM, 32KB RAM */
|
||||
GB_MBC_MBC2, /* 256KB ROM, 32KB RAM */
|
||||
GB_MBC_MMM01, /* ?? ROM, ?? RAM */
|
||||
GB_MBC_MBC3, /* 2MB ROM, 32KB RAM, RTC */
|
||||
GB_MBC_MBC4, /* ?? ROM, ?? RAM */
|
||||
GB_MBC_MBC5, /* 8MB ROM, 128KB RAM (32KB w/ Rumble) */
|
||||
@ -21,6 +20,8 @@ enum
|
||||
GB_MBC_HUC3, /* ?? ROM, ?? RAM - Hudson Soft Controller */
|
||||
GB_MBC_MBC6, /* ?? ROM, 32KB SRAM */
|
||||
GB_MBC_MBC7, /* ?? ROM, ?? RAM */
|
||||
GB_MBC_M161, /* ?? ROM, ?? RAM */
|
||||
GB_MBC_MMM01, /* ?? ROM, ?? RAM */
|
||||
GB_MBC_WISDOM, /* ?? ROM, ?? RAM - Wisdom tree controller */
|
||||
GB_MBC_MBC1_COL, /* 1MB ROM, 32KB RAM - workaround for MBC1 on PCB that maps rom address lines differently */
|
||||
GB_MBC_SACHEN1, /* ?? ROM, ?? RAM - Sachen MMC-1 variant */
|
||||
|
@ -22,6 +22,7 @@ const device_type GB_ROM_MBC3 = &device_creator<gb_rom_mbc3_device>;
|
||||
const device_type GB_ROM_MBC5 = &device_creator<gb_rom_mbc5_device>;
|
||||
const device_type GB_ROM_MBC6 = &device_creator<gb_rom_mbc6_device>;
|
||||
const device_type GB_ROM_MBC7 = &device_creator<gb_rom_mbc7_device>;
|
||||
const device_type GB_ROM_M161_M12 = &device_creator<gb_rom_m161_device>;
|
||||
const device_type GB_ROM_MMM01 = &device_creator<gb_rom_mmm01_device>;
|
||||
const device_type GB_ROM_SACHEN1 = &device_creator<gb_rom_sachen1_device>;
|
||||
const device_type GB_ROM_SACHEN2 = &device_creator<gb_rom_sachen1_device>; // Just a placeholder for the moment...
|
||||
@ -84,6 +85,11 @@ gb_rom_mbc7_device::gb_rom_mbc7_device(const machine_config &mconfig, const char
|
||||
{
|
||||
}
|
||||
|
||||
gb_rom_m161_device::gb_rom_m161_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: gb_rom_mbc_device(mconfig, GB_ROM_M161_M12, "GB M161-M12 Carts", tag, owner, clock, "gb_rom_m161m12", __FILE__)
|
||||
{
|
||||
}
|
||||
|
||||
gb_rom_mmm01_device::gb_rom_mmm01_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: gb_rom_mbc_device(mconfig, GB_ROM_MMM01, "GB MMM01 Carts", tag, owner, clock, "gb_rom_mmm01", __FILE__)
|
||||
{
|
||||
@ -195,6 +201,18 @@ void gb_rom_mbc6_device::device_reset()
|
||||
m_ram_enable = 0;
|
||||
}
|
||||
|
||||
void gb_rom_m161_device::device_start()
|
||||
{
|
||||
shared_start();
|
||||
save_item(NAME(m_base_bank));
|
||||
}
|
||||
|
||||
void gb_rom_m161_device::device_reset()
|
||||
{
|
||||
shared_reset();
|
||||
m_base_bank = 0;
|
||||
}
|
||||
|
||||
void gb_rom_mmm01_device::device_start()
|
||||
{
|
||||
shared_start();
|
||||
@ -615,6 +633,33 @@ WRITE8_MEMBER(gb_rom_mbc7_device::write_ram)
|
||||
}
|
||||
|
||||
|
||||
// M161-M12
|
||||
|
||||
READ8_MEMBER(gb_rom_m161_device::read_rom)
|
||||
{
|
||||
if (offset < 0x4000)
|
||||
return m_rom[rom_bank_map[m_base_bank | m_latch_bank] * 0x4000 + offset];
|
||||
else
|
||||
return m_rom[rom_bank_map[m_base_bank | m_latch_bank2] * 0x4000 + (offset & 0x3fff)];
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(gb_rom_m161_device::write_bank)
|
||||
{
|
||||
switch (offset & 0xe000)
|
||||
{
|
||||
case 0x2000: // ROM Bank Register? Tetris writes 1 here when selected...
|
||||
data &= 0x1f;
|
||||
m_latch_bank2 = data ? data : 1;
|
||||
break;
|
||||
case 0x4000: // Base Bank Register
|
||||
m_base_bank = data << 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// MMM01
|
||||
// This mmm01 implementation is mostly guess work, no clue how correct it all is
|
||||
|
||||
|
@ -151,6 +151,27 @@ public:
|
||||
virtual DECLARE_WRITE8_MEMBER(write_ram);
|
||||
};
|
||||
|
||||
// ======================> gb_rom_m161_device
|
||||
|
||||
class gb_rom_m161_device : public gb_rom_mbc_device
|
||||
{
|
||||
public:
|
||||
|
||||
// construction/destruction
|
||||
gb_rom_m161_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
|
||||
virtual DECLARE_READ8_MEMBER(read_rom);
|
||||
virtual DECLARE_WRITE8_MEMBER(write_bank);
|
||||
virtual DECLARE_READ8_MEMBER(read_ram) { return 0xff; }
|
||||
virtual DECLARE_WRITE8_MEMBER(write_ram) { }
|
||||
|
||||
UINT8 m_base_bank;
|
||||
};
|
||||
|
||||
// ======================> gb_rom_mmm01_device
|
||||
class gb_rom_mmm01_device : public gb_rom_mbc_device
|
||||
{
|
||||
@ -168,7 +189,7 @@ public:
|
||||
UINT8 m_bank_mask, m_bank, m_reg;
|
||||
};
|
||||
|
||||
// ======================> gb_rom_mbc1_device
|
||||
// ======================> gb_rom_sachen1_device
|
||||
|
||||
class gb_rom_sachen1_device : public gb_rom_mbc1_device
|
||||
{
|
||||
@ -324,6 +345,7 @@ extern const device_type GB_ROM_MBC4;
|
||||
extern const device_type GB_ROM_MBC5;
|
||||
extern const device_type GB_ROM_MBC6;
|
||||
extern const device_type GB_ROM_MBC7;
|
||||
extern const device_type GB_ROM_M161_M12;
|
||||
extern const device_type GB_ROM_MMM01;
|
||||
extern const device_type GB_ROM_SACHEN1;
|
||||
extern const device_type GB_ROM_SACHEN2;
|
||||
|
@ -648,6 +648,7 @@ static SLOT_INTERFACE_START(gb_cart)
|
||||
SLOT_INTERFACE_INTERNAL("rom_mbc7", GB_ROM_MBC7)
|
||||
SLOT_INTERFACE_INTERNAL("rom_tama5", GB_ROM_TAMA5)
|
||||
SLOT_INTERFACE_INTERNAL("rom_mmm01", GB_ROM_MMM01)
|
||||
SLOT_INTERFACE_INTERNAL("rom_m161_m12",GB_ROM_M161_M12)
|
||||
SLOT_INTERFACE_INTERNAL("rom_sachen1", GB_ROM_SACHEN1)
|
||||
SLOT_INTERFACE_INTERNAL("rom_sachen2", GB_ROM_SACHEN2)
|
||||
SLOT_INTERFACE_INTERNAL("rom_wisdom", GB_ROM_WISDOM)
|
||||
|
Loading…
Reference in New Issue
Block a user