Previous 199869 Revisions Next

r37165 Monday 13th April, 2015 at 16:57:48 UTC by Fabio Priuli
(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.
[hash]gameboy.xml
[src/emu/bus/gameboy]gb_slot.c gb_slot.h mbc.c mbc.h
[src/mess/drivers]gb.c

trunk/hash/gameboy.xml
r245676r245677
1099610996      </part>
1099710997   </software>
1099810998
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">
1100011013      <description>Mani 4 in 1 (Chi, DMG-602 CHN)</description>
1100111014      <year>19??</year>
1100211015      <publisher>Mani</publisher>
r245676r245677
1100411017      <part name="cart" interface="gameboy_cart">
1100511018         <feature name="slot" value="rom_mmm01" />
1100611019         <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" />
1100811021         </dataarea>
1100911022      </part>
1101011023   </software>
1101111024
11012   <software name="4in1to">
11025   <software name="4in1_603">
1101311026      <description>Mani 4 in 1 (Chi, DMG-603 CHN)</description>
1101411027      <year>19??</year>
1101511028      <publisher>Mani</publisher>
r245676r245677
1101711030      <part name="cart" interface="gameboy_cart">
1101811031         <feature name="slot" value="rom_mmm01" />
1101911032         <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" />
1102111034         </dataarea>
1102211035      </part>
1102311036   </software>
1102411037
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
1102511064   <software name="marble">
1102611065      <description>Marble Madness (Euro, USA)</description>
1102711066      <year>1991</year>
r245676r245677
2343523474      <part name="cart" interface="gameboy_cart">
2343623475         <feature name="slot" value="rom_sachen1" />
2343723476         <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" />
2343923478         </dataarea>
2344023479      </part>
2344123480   </software>
r245676r245677
2346123500      <part name="cart" interface="gameboy_cart">
2346223501         <feature name="slot" value="rom_sachen1" />
2346323502         <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" />
2346523504         </dataarea>
2346623505      </part>
2346723506   </software>
r245676r245677
2347423513      <part name="cart" interface="gameboy_cart">
2347523514         <feature name="slot" value="rom_sachen1" />
2347623515         <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" />
2347823517         </dataarea>
2347923518      </part>
2348023519   </software>
r245676r245677
2348723526      <part name="cart" interface="gameboy_cart">
2348823527         <feature name="slot" value="rom_sachen1" />
2348923528         <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" />
2349123530         </dataarea>
2349223531      </part>
2349323532   </software>
r245676r245677
2350023539      <part name="cart" interface="gameboy_cart">
2350123540         <feature name="slot" value="rom_sachen1" />
2350223541         <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" />
2350423543         </dataarea>
2350523544      </part>
2350623545   </software>
r245676r245677
2351323552      <part name="cart" interface="gameboy_cart">
2351423553         <feature name="slot" value="rom_sachen1" />
2351523554         <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" />
2351723556         </dataarea>
2351823557      </part>
2351923558   </software>
r245676r245677
2352623565      <part name="cart" interface="gameboy_cart">
2352723566         <feature name="slot" value="rom_sachen1" />
2352823567         <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" />
2353023569         </dataarea>
2353123570      </part>
2353223571   </software>
trunk/src/emu/bus/gameboy/gb_slot.c
r245676r245677
209209   { GB_MBC_MBC7, "rom_mbc7" },
210210   { GB_MBC_TAMA5, "rom_tama5" },
211211   { GB_MBC_MMM01, "rom_mmm01" },
212   { GB_MBC_M161, "rom_m161_m12" },
212213   { GB_MBC_MBC3, "rom_huc1" },    // for now treat this as alias for MBC3
213214   { GB_MBC_MBC3, "rom_huc3" },    // for now treat this as alias for MBC3
214215   { GB_MBC_SACHEN1, "rom_sachen1" },
trunk/src/emu/bus/gameboy/gb_slot.h
r245676r245677
1212   GB_MBC_NONE = 0,     /*  32KB ROM - No memory bank controller         */
1313   GB_MBC_MBC1,         /*  ~2MB ROM,   8KB RAM -or- 512KB ROM, 32KB RAM */
1414   GB_MBC_MBC2,         /* 256KB ROM,  32KB RAM                          */
15   GB_MBC_MMM01,        /*    ?? ROM,    ?? RAM                          */
1615   GB_MBC_MBC3,         /*   2MB ROM,  32KB RAM, RTC                     */
1716   GB_MBC_MBC4,         /*    ?? ROM,    ?? RAM                          */
1817   GB_MBC_MBC5,         /*   8MB ROM, 128KB RAM (32KB w/ Rumble)         */
r245676r245677
2120   GB_MBC_HUC3,         /*    ?? ROM,    ?? RAM - Hudson Soft Controller */
2221   GB_MBC_MBC6,         /*    ?? ROM,  32KB SRAM                         */
2322   GB_MBC_MBC7,         /*    ?? ROM,    ?? RAM                          */
23   GB_MBC_M161,         /*    ?? ROM,    ?? RAM                          */
24   GB_MBC_MMM01,        /*    ?? ROM,    ?? RAM                          */
2425   GB_MBC_WISDOM,       /*    ?? ROM,    ?? RAM - Wisdom tree controller */
2526   GB_MBC_MBC1_COL,     /*   1MB ROM,  32KB RAM - workaround for MBC1 on PCB that maps rom address lines differently */
2627   GB_MBC_SACHEN1,      /*    ?? ROM,    ?? RAM - Sachen MMC-1 variant */
trunk/src/emu/bus/gameboy/mbc.c
r245676r245677
2222const device_type GB_ROM_MBC5 = &device_creator<gb_rom_mbc5_device>;
2323const device_type GB_ROM_MBC6 = &device_creator<gb_rom_mbc6_device>;
2424const device_type GB_ROM_MBC7 = &device_creator<gb_rom_mbc7_device>;
25const device_type GB_ROM_M161_M12 = &device_creator<gb_rom_m161_device>;
2526const device_type GB_ROM_MMM01 = &device_creator<gb_rom_mmm01_device>;
2627const device_type GB_ROM_SACHEN1 = &device_creator<gb_rom_sachen1_device>;
2728const device_type GB_ROM_SACHEN2 = &device_creator<gb_rom_sachen1_device>;   // Just a placeholder for the moment...
r245676r245677
8485{
8586}
8687
88gb_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
8793gb_rom_mmm01_device::gb_rom_mmm01_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
8894               : gb_rom_mbc_device(mconfig, GB_ROM_MMM01, "GB MMM01 Carts", tag, owner, clock, "gb_rom_mmm01", __FILE__)
8995{
r245676r245677
195201   m_ram_enable = 0;
196202}
197203
204void gb_rom_m161_device::device_start()
205{
206   shared_start();
207   save_item(NAME(m_base_bank));
208}
209
210void gb_rom_m161_device::device_reset()
211{
212   shared_reset();
213   m_base_bank = 0;
214}
215
198216void gb_rom_mmm01_device::device_start()
199217{
200218   shared_start();
r245676r245677
615633}
616634
617635
636// M161-M12
637
638READ8_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
646WRITE8_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
618663// MMM01
619664// This mmm01 implementation is mostly guess work, no clue how correct it all is
620665
trunk/src/emu/bus/gameboy/mbc.h
r245676r245677
151151   virtual DECLARE_WRITE8_MEMBER(write_ram);
152152};
153153
154// ======================> gb_rom_m161_device
155
156class gb_rom_m161_device : public gb_rom_mbc_device
157{
158public:
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
154175// ======================> gb_rom_mmm01_device
155176class gb_rom_mmm01_device : public gb_rom_mbc_device
156177{
r245676r245677
168189   UINT8 m_bank_mask, m_bank, m_reg;
169190};
170191
171// ======================> gb_rom_mbc1_device
192// ======================> gb_rom_sachen1_device
172193
173194class gb_rom_sachen1_device : public gb_rom_mbc1_device
174195{
r245676r245677
324345extern const device_type GB_ROM_MBC5;
325346extern const device_type GB_ROM_MBC6;
326347extern const device_type GB_ROM_MBC7;
348extern const device_type GB_ROM_M161_M12;
327349extern const device_type GB_ROM_MMM01;
328350extern const device_type GB_ROM_SACHEN1;
329351extern const device_type GB_ROM_SACHEN2;
trunk/src/mess/drivers/gb.c
r245676r245677
648648   SLOT_INTERFACE_INTERNAL("rom_mbc7",    GB_ROM_MBC7)
649649   SLOT_INTERFACE_INTERNAL("rom_tama5",   GB_ROM_TAMA5)
650650   SLOT_INTERFACE_INTERNAL("rom_mmm01",   GB_ROM_MMM01)
651   SLOT_INTERFACE_INTERNAL("rom_m161_m12",GB_ROM_M161_M12)
651652   SLOT_INTERFACE_INTERNAL("rom_sachen1", GB_ROM_SACHEN1)
652653   SLOT_INTERFACE_INTERNAL("rom_sachen2", GB_ROM_SACHEN2)
653654   SLOT_INTERFACE_INTERNAL("rom_wisdom",  GB_ROM_WISDOM)


Previous 199869 Revisions Next


© 1997-2024 The MAME Team