trunk/hash/gameboy.xml
| r245676 | r245677 | |
| 10996 | 10996 | </part> |
| 10997 | 10997 | </software> |
| 10998 | 10998 | |
| 10999 | | <software name="4in1ta" cloneof="varpack"> |
| 10999 | <software name="4in1_601" supported="no"> |
| 11000 | <description>Mani 4 in 1 (Chi, DMG-601 CHN)</description> |
| 11001 | <year>19??</year> |
| 11002 | <publisher>Mani</publisher> |
| 11003 | <info name="serial" value="DMG-601-CHN"/> |
| 11004 | <part name="cart" interface="gameboy_cart"> |
| 11005 | <feature name="slot" value="rom_m161_m12" /> |
| 11006 | <dataarea name="rom" size="262144"> |
| 11007 | <rom name="dmg-601-chn.bin" size="262144" crc="0c38a775" sha1="dfe46e066c599c17e684ddda3fd74c5357910630" offset="000000" /> |
| 11008 | </dataarea> |
| 11009 | </part> |
| 11010 | </software> |
| 11011 | |
| 11012 | <software name="4in1_602" cloneof="varpack"> |
| 11000 | 11013 | <description>Mani 4 in 1 (Chi, DMG-602 CHN)</description> |
| 11001 | 11014 | <year>19??</year> |
| 11002 | 11015 | <publisher>Mani</publisher> |
| r245676 | r245677 | |
| 11004 | 11017 | <part name="cart" interface="gameboy_cart"> |
| 11005 | 11018 | <feature name="slot" value="rom_mmm01" /> |
| 11006 | 11019 | <dataarea name="rom" size="524288"> |
| 11007 | | <rom name="mani 4 in 1 (china).bin" size="524288" crc="5bfc3ef5" sha1="c0639d6c993690022200f2fa4b3094249b9335c0" offset="000000" /> |
| 11020 | <rom name="dmg-602-chn.bin" size="524288" crc="5bfc3ef5" sha1="c0639d6c993690022200f2fa4b3094249b9335c0" offset="000000" /> |
| 11008 | 11021 | </dataarea> |
| 11009 | 11022 | </part> |
| 11010 | 11023 | </software> |
| 11011 | 11024 | |
| 11012 | | <software name="4in1to"> |
| 11025 | <software name="4in1_603"> |
| 11013 | 11026 | <description>Mani 4 in 1 (Chi, DMG-603 CHN)</description> |
| 11014 | 11027 | <year>19??</year> |
| 11015 | 11028 | <publisher>Mani</publisher> |
| r245676 | r245677 | |
| 11017 | 11030 | <part name="cart" interface="gameboy_cart"> |
| 11018 | 11031 | <feature name="slot" value="rom_mmm01" /> |
| 11019 | 11032 | <dataarea name="rom" size="524288"> |
| 11020 | | <rom name="4 in 1 (dmg-603 chn) [raw dump].bin" size="524288" crc="c373ac09" sha1="0030295574e4c518ff5cdf20febf6b6737426468" offset="000000" /> |
| 11033 | <rom name="dmg-603-chn.bin" size="524288" crc="c373ac09" sha1="0030295574e4c518ff5cdf20febf6b6737426468" offset="000000" /> |
| 11021 | 11034 | </dataarea> |
| 11022 | 11035 | </part> |
| 11023 | 11036 | </software> |
| 11024 | 11037 | |
| 11038 | <software name="4in1_604"> |
| 11039 | <description>Mani 4 in 1 (Chi, DMG-604 CHN)</description> |
| 11040 | <year>19??</year> |
| 11041 | <publisher>Mani</publisher> |
| 11042 | <info name="serial" value="DMG-604-CHN"/> |
| 11043 | <part name="cart" interface="gameboy_cart"> |
| 11044 | <feature name="slot" value="rom_mmm01" /> |
| 11045 | <dataarea name="rom" size="524288"> |
| 11046 | <rom name="dmg-604-chn.bin" size="524288" crc="cb48b6d0" sha1="1c79eb31a6754b4e96d33a182d36833208dc7177" offset="000000" /> |
| 11047 | </dataarea> |
| 11048 | </part> |
| 11049 | </software> |
| 11050 | |
| 11051 | <software name="4in1_605"> |
| 11052 | <description>Mani 4 in 1 (Chi, DMG-605 CHN)</description> |
| 11053 | <year>19??</year> |
| 11054 | <publisher>Mani</publisher> |
| 11055 | <info name="serial" value="DMG-605-CHN"/> |
| 11056 | <part name="cart" interface="gameboy_cart"> |
| 11057 | <feature name="slot" value="rom_mmm01" /> |
| 11058 | <dataarea name="rom" size="1048576"> |
| 11059 | <rom name="dmg-605-chn.bin" size="1048576" crc="950773ee" sha1="af4706da224d794668f3b2c68aea7b3c16452d83" offset="000000" /> |
| 11060 | </dataarea> |
| 11061 | </part> |
| 11062 | </software> |
| 11063 | |
| 11025 | 11064 | <software name="marble"> |
| 11026 | 11065 | <description>Marble Madness (Euro, USA)</description> |
| 11027 | 11066 | <year>1991</year> |
| r245676 | r245677 | |
| 23435 | 23474 | <part name="cart" interface="gameboy_cart"> |
| 23436 | 23475 | <feature name="slot" value="rom_sachen1" /> |
| 23437 | 23476 | <dataarea name="rom" size="262144"> |
| 23438 | | <rom name="4b-001.bin" size="262144" crc="82f06e93" sha1="7506c75fdfa29935afb1e85f5b6013516b2e9f92" offset="0" /> |
| 23477 | <rom name="4b-001.bin" size="262144" crc="82f06e93" sha1="7506c75fdfa29935afb1e85f5b6013516b2e9f92" offset="000000" /> |
| 23439 | 23478 | </dataarea> |
| 23440 | 23479 | </part> |
| 23441 | 23480 | </software> |
| r245676 | r245677 | |
| 23461 | 23500 | <part name="cart" interface="gameboy_cart"> |
| 23462 | 23501 | <feature name="slot" value="rom_sachen1" /> |
| 23463 | 23502 | <dataarea name="rom" size="262144"> |
| 23464 | | <rom name="4b-004.bin" size="262144" crc="c69a19f6" sha1="ca7990dc03a3b3ada1dce37afc4490deaf872402" offset="0" /> |
| 23503 | <rom name="4b-004.bin" size="262144" crc="c69a19f6" sha1="ca7990dc03a3b3ada1dce37afc4490deaf872402" offset="000000" /> |
| 23465 | 23504 | </dataarea> |
| 23466 | 23505 | </part> |
| 23467 | 23506 | </software> |
| r245676 | r245677 | |
| 23474 | 23513 | <part name="cart" interface="gameboy_cart"> |
| 23475 | 23514 | <feature name="slot" value="rom_sachen1" /> |
| 23476 | 23515 | <dataarea name="rom" size="262144"> |
| 23477 | | <rom name="4b-005.bin" size="262144" crc="f4310eb3" sha1="2107979104cff88bcd635215a936bbc44354ea7c" offset="0" /> |
| 23516 | <rom name="4b-005.bin" size="262144" crc="f4310eb3" sha1="2107979104cff88bcd635215a936bbc44354ea7c" offset="000000" /> |
| 23478 | 23517 | </dataarea> |
| 23479 | 23518 | </part> |
| 23480 | 23519 | </software> |
| r245676 | r245677 | |
| 23487 | 23526 | <part name="cart" interface="gameboy_cart"> |
| 23488 | 23527 | <feature name="slot" value="rom_sachen1" /> |
| 23489 | 23528 | <dataarea name="rom" size="262144"> |
| 23490 | | <rom name="4b-006.bin" size="262144" crc="95398da5" sha1="2e856de768c7cb442a206de8c94a23548027bb60" offset="0" /> |
| 23529 | <rom name="4b-006.bin" size="262144" crc="95398da5" sha1="2e856de768c7cb442a206de8c94a23548027bb60" offset="000000" /> |
| 23491 | 23530 | </dataarea> |
| 23492 | 23531 | </part> |
| 23493 | 23532 | </software> |
| r245676 | r245677 | |
| 23500 | 23539 | <part name="cart" interface="gameboy_cart"> |
| 23501 | 23540 | <feature name="slot" value="rom_sachen1" /> |
| 23502 | 23541 | <dataarea name="rom" size="262144"> |
| 23503 | | <rom name="4b-007.bin" size="262144" crc="62d9350e" sha1="0eef7f3934508ab79e1cad4ddf3bfdb3216b6b4f" offset="0" /> |
| 23542 | <rom name="4b-007.bin" size="262144" crc="62d9350e" sha1="0eef7f3934508ab79e1cad4ddf3bfdb3216b6b4f" offset="000000" /> |
| 23504 | 23543 | </dataarea> |
| 23505 | 23544 | </part> |
| 23506 | 23545 | </software> |
| r245676 | r245677 | |
| 23513 | 23552 | <part name="cart" interface="gameboy_cart"> |
| 23514 | 23553 | <feature name="slot" value="rom_sachen1" /> |
| 23515 | 23554 | <dataarea name="rom" size="262144"> |
| 23516 | | <rom name="4b-008.bin" size="262144" crc="740e9bc8" sha1="d7c11d56a42ed7c4ef2fe3c752931a63160d7429" offset="0" /> |
| 23555 | <rom name="4b-008.bin" size="262144" crc="740e9bc8" sha1="d7c11d56a42ed7c4ef2fe3c752931a63160d7429" offset="000000" /> |
| 23517 | 23556 | </dataarea> |
| 23518 | 23557 | </part> |
| 23519 | 23558 | </software> |
| r245676 | r245677 | |
| 23526 | 23565 | <part name="cart" interface="gameboy_cart"> |
| 23527 | 23566 | <feature name="slot" value="rom_sachen1" /> |
| 23528 | 23567 | <dataarea name="rom" size="262144"> |
| 23529 | | <rom name="4b-009.bin" size="262144" crc="114e1f1e" sha1="39743e21935a9115fcb4ee86d67d51bdb4b5f6d6" offset="0" /> |
| 23568 | <rom name="4b-009.bin" size="262144" crc="114e1f1e" sha1="39743e21935a9115fcb4ee86d67d51bdb4b5f6d6" offset="000000" /> |
| 23530 | 23569 | </dataarea> |
| 23531 | 23570 | </part> |
| 23532 | 23571 | </software> |
trunk/src/emu/bus/gameboy/gb_slot.h
| r245676 | r245677 | |
| 12 | 12 | GB_MBC_NONE = 0, /* 32KB ROM - No memory bank controller */ |
| 13 | 13 | GB_MBC_MBC1, /* ~2MB ROM, 8KB RAM -or- 512KB ROM, 32KB RAM */ |
| 14 | 14 | GB_MBC_MBC2, /* 256KB ROM, 32KB RAM */ |
| 15 | | GB_MBC_MMM01, /* ?? ROM, ?? RAM */ |
| 16 | 15 | GB_MBC_MBC3, /* 2MB ROM, 32KB RAM, RTC */ |
| 17 | 16 | GB_MBC_MBC4, /* ?? ROM, ?? RAM */ |
| 18 | 17 | GB_MBC_MBC5, /* 8MB ROM, 128KB RAM (32KB w/ Rumble) */ |
| r245676 | r245677 | |
| 21 | 20 | GB_MBC_HUC3, /* ?? ROM, ?? RAM - Hudson Soft Controller */ |
| 22 | 21 | GB_MBC_MBC6, /* ?? ROM, 32KB SRAM */ |
| 23 | 22 | GB_MBC_MBC7, /* ?? ROM, ?? RAM */ |
| 23 | GB_MBC_M161, /* ?? ROM, ?? RAM */ |
| 24 | GB_MBC_MMM01, /* ?? ROM, ?? RAM */ |
| 24 | 25 | GB_MBC_WISDOM, /* ?? ROM, ?? RAM - Wisdom tree controller */ |
| 25 | 26 | GB_MBC_MBC1_COL, /* 1MB ROM, 32KB RAM - workaround for MBC1 on PCB that maps rom address lines differently */ |
| 26 | 27 | GB_MBC_SACHEN1, /* ?? ROM, ?? RAM - Sachen MMC-1 variant */ |
trunk/src/emu/bus/gameboy/mbc.c
| r245676 | r245677 | |
| 22 | 22 | const device_type GB_ROM_MBC5 = &device_creator<gb_rom_mbc5_device>; |
| 23 | 23 | const device_type GB_ROM_MBC6 = &device_creator<gb_rom_mbc6_device>; |
| 24 | 24 | const device_type GB_ROM_MBC7 = &device_creator<gb_rom_mbc7_device>; |
| 25 | const device_type GB_ROM_M161_M12 = &device_creator<gb_rom_m161_device>; |
| 25 | 26 | const device_type GB_ROM_MMM01 = &device_creator<gb_rom_mmm01_device>; |
| 26 | 27 | const device_type GB_ROM_SACHEN1 = &device_creator<gb_rom_sachen1_device>; |
| 27 | 28 | const device_type GB_ROM_SACHEN2 = &device_creator<gb_rom_sachen1_device>; // Just a placeholder for the moment... |
| r245676 | r245677 | |
| 84 | 85 | { |
| 85 | 86 | } |
| 86 | 87 | |
| 88 | gb_rom_m161_device::gb_rom_m161_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 89 | : gb_rom_mbc_device(mconfig, GB_ROM_M161_M12, "GB M161-M12 Carts", tag, owner, clock, "gb_rom_m161m12", __FILE__) |
| 90 | { |
| 91 | } |
| 92 | |
| 87 | 93 | gb_rom_mmm01_device::gb_rom_mmm01_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 88 | 94 | : gb_rom_mbc_device(mconfig, GB_ROM_MMM01, "GB MMM01 Carts", tag, owner, clock, "gb_rom_mmm01", __FILE__) |
| 89 | 95 | { |
| r245676 | r245677 | |
| 195 | 201 | m_ram_enable = 0; |
| 196 | 202 | } |
| 197 | 203 | |
| 204 | void gb_rom_m161_device::device_start() |
| 205 | { |
| 206 | shared_start(); |
| 207 | save_item(NAME(m_base_bank)); |
| 208 | } |
| 209 | |
| 210 | void gb_rom_m161_device::device_reset() |
| 211 | { |
| 212 | shared_reset(); |
| 213 | m_base_bank = 0; |
| 214 | } |
| 215 | |
| 198 | 216 | void gb_rom_mmm01_device::device_start() |
| 199 | 217 | { |
| 200 | 218 | shared_start(); |
| r245676 | r245677 | |
| 615 | 633 | } |
| 616 | 634 | |
| 617 | 635 | |
| 636 | // M161-M12 |
| 637 | |
| 638 | READ8_MEMBER(gb_rom_m161_device::read_rom) |
| 639 | { |
| 640 | if (offset < 0x4000) |
| 641 | return m_rom[rom_bank_map[m_base_bank | m_latch_bank] * 0x4000 + offset]; |
| 642 | else |
| 643 | return m_rom[rom_bank_map[m_base_bank | m_latch_bank2] * 0x4000 + (offset & 0x3fff)]; |
| 644 | } |
| 645 | |
| 646 | WRITE8_MEMBER(gb_rom_m161_device::write_bank) |
| 647 | { |
| 648 | switch (offset & 0xe000) |
| 649 | { |
| 650 | case 0x2000: // ROM Bank Register? Tetris writes 1 here when selected... |
| 651 | data &= 0x1f; |
| 652 | m_latch_bank2 = data ? data : 1; |
| 653 | break; |
| 654 | case 0x4000: // Base Bank Register |
| 655 | m_base_bank = data << 1; |
| 656 | break; |
| 657 | default: |
| 658 | break; |
| 659 | } |
| 660 | } |
| 661 | |
| 662 | |
| 618 | 663 | // MMM01 |
| 619 | 664 | // This mmm01 implementation is mostly guess work, no clue how correct it all is |
| 620 | 665 | |
trunk/src/emu/bus/gameboy/mbc.h
| r245676 | r245677 | |
| 151 | 151 | virtual DECLARE_WRITE8_MEMBER(write_ram); |
| 152 | 152 | }; |
| 153 | 153 | |
| 154 | // ======================> gb_rom_m161_device |
| 155 | |
| 156 | class gb_rom_m161_device : public gb_rom_mbc_device |
| 157 | { |
| 158 | public: |
| 159 | |
| 160 | // construction/destruction |
| 161 | gb_rom_m161_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 162 | |
| 163 | // device-level overrides |
| 164 | virtual void device_start(); |
| 165 | virtual void device_reset(); |
| 166 | |
| 167 | virtual DECLARE_READ8_MEMBER(read_rom); |
| 168 | virtual DECLARE_WRITE8_MEMBER(write_bank); |
| 169 | virtual DECLARE_READ8_MEMBER(read_ram) { return 0xff; } |
| 170 | virtual DECLARE_WRITE8_MEMBER(write_ram) { } |
| 171 | |
| 172 | UINT8 m_base_bank; |
| 173 | }; |
| 174 | |
| 154 | 175 | // ======================> gb_rom_mmm01_device |
| 155 | 176 | class gb_rom_mmm01_device : public gb_rom_mbc_device |
| 156 | 177 | { |
| r245676 | r245677 | |
| 168 | 189 | UINT8 m_bank_mask, m_bank, m_reg; |
| 169 | 190 | }; |
| 170 | 191 | |
| 171 | | // ======================> gb_rom_mbc1_device |
| 192 | // ======================> gb_rom_sachen1_device |
| 172 | 193 | |
| 173 | 194 | class gb_rom_sachen1_device : public gb_rom_mbc1_device |
| 174 | 195 | { |
| r245676 | r245677 | |
| 324 | 345 | extern const device_type GB_ROM_MBC5; |
| 325 | 346 | extern const device_type GB_ROM_MBC6; |
| 326 | 347 | extern const device_type GB_ROM_MBC7; |
| 348 | extern const device_type GB_ROM_M161_M12; |
| 327 | 349 | extern const device_type GB_ROM_MMM01; |
| 328 | 350 | extern const device_type GB_ROM_SACHEN1; |
| 329 | 351 | extern const device_type GB_ROM_SACHEN2; |