diff options
-rw-r--r-- | hash/nes.xml | 161 | ||||
-rw-r--r-- | src/devices/bus/nes/mmc3_clones.cpp | 94 | ||||
-rw-r--r-- | src/devices/bus/nes/mmc3_clones.h | 22 | ||||
-rw-r--r-- | src/devices/bus/nes/nes_carts.cpp | 2 | ||||
-rw-r--r-- | src/devices/bus/nes/nes_ines.hxx | 12 | ||||
-rw-r--r-- | src/devices/bus/nes/nes_pcb.hxx | 13 | ||||
-rw-r--r-- | src/devices/bus/nes/nes_slot.cpp | 1 | ||||
-rw-r--r-- | src/devices/bus/nes/nes_slot.h | 4 | ||||
-rw-r--r-- | src/mame/drivers/nes_vt369_vtunknown.cpp | 9 | ||||
-rw-r--r-- | src/mame/mame.lst | 1 |
10 files changed, 223 insertions, 96 deletions
diff --git a/hash/nes.xml b/hash/nes.xml index 9b0fe1ac0ff..ce2dab424aa 100644 --- a/hash/nes.xml +++ b/hash/nes.xml @@ -46025,6 +46025,23 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx </part> </software> + <software name="decoasc"> + <description>Data East All-Star Collection</description> + <year>2017</year> + <publisher>retro-bit</publisher> + <info name="serial" value="RB-CT-102"/> + <part name="cart" interface="nes_cart"> + <feature name="slot" value="smd133" /> + <feature name="smd133-addr" value="6K" /> + <dataarea name="prg" size="2097152"> + <rom name="data east all-star collection.prg" size="2097152" crc="9e8fd9a4" sha1="755b43ebfc7f934225906b7cf526487bf98c5562" status="baddump" /> + </dataarea> + <!-- 128k VRAM on cartridge --> + <dataarea name="vram" size="131072"> + </dataarea> + </part> + </software> + <software name="diehardj" cloneof="diehard"> <description>Die Hard (Jpn)</description> <year>1991</year> @@ -57359,13 +57376,13 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <software name="chuliuxx" supported="no"> <description>Chǔ Liúxiāng Xīnzhuàn (China)</description> - <year>19??</year> + <year>20??</year> <publisher>Shenzhen Jncota</publisher> <info name="serial" value="KT-1015"/> <info name="alt_title" value="楚留香新传"/> <part name="cart" interface="nes_cart"> - <feature name="slot" value="txrom" /> - <feature name="pcb" value="NES-TLROM" /> <!-- Wrong. It actually uses an extended mapper, based on TLROM, which we don't support yet --> + <feature name="slot" value="smd133" /> + <feature name="smd133-addr" value="5K" /> <dataarea name="prg" size="1048576"> <rom name="[kt-1015] chu liu xiang xin zhuan (c).prg" size="1048576" crc="830bcf70" sha1="f409cfb87e1a141b532ceb29c91bb43a1e744282" offset="00000" status="baddump" /> </dataarea> @@ -83045,6 +83062,26 @@ be better to redump them properly. --> </part> </software> +<!-- Mega Man 1 and 2 have glitched audio. Does this happen on hardware? --> + <software name="mc_mega8"> + <description>Mega Man 8 in 1 (PL-0006)</description> + <year>20??</year> + <publisher><pirate></publisher> + <part name="cart" interface="nes_cart"> + <feature name="slot" value="smd133" /> + <feature name="smd133-addr" value="6K" /> + <dataarea name="prg" size="4194304"> + <rom name="megaman 8 in 1 (pl-0006).prg" size="4194304" crc="19114c05" sha1="12e8de939d60610a6ca11b8fb1ef7f2b0c8c4ccb" status="baddump" /> + </dataarea> + <!-- 256k VRAM on cartridge --> + <dataarea name="vram" size="262144"> + </dataarea> + <!-- 8k WRAM on cartridge --> + <dataarea name="wram" size="8192"> + </dataarea> + </part> + </software> + <software name="mc_n4" supported="partial"> <description>New 4 in 1 Supergame (YH4239)</description> <year>19??</year> @@ -84263,28 +84300,16 @@ that the real dumps might surface --> </software> -<!-- These use a MMC3 variant we still don't support! --> +<!-- TODO: looks like these were put at the end of the list to be sorted later. Move to regular multicart subsection? --> - <software name="mc_hh210" supported="no"> - <description>Handheld 210 in 1</description> - <year>201?</year> - <publisher><unknown></publisher> - <part name="cart" interface="nes_cart"> - <feature name="slot" value="coolboy" /> - <feature name="pcb" value="COOLBOY" /> - <dataarea name="prg" size="33554432"> - <rom name="msp55lv128t.u4" size="16777216" crc="9ba520d4" sha1="627f811b24314197e289a2ade668ff4115421bed" offset="00000" /> - </dataarea> - </part> - </software> - - <software name="mc_cb198" supported="no"> + <software name="mc_cb198" supported="partial"> <description>CoolBoy 198 in 1</description> <year>201?</year> <publisher>CoolBoy</publisher> <part name="cart" interface="nes_cart"> - <feature name="slot" value="coolboy" /> + <feature name="slot" value="smd133" /> <feature name="pcb" value="COOLBOY" /> + <feature name="smd133-addr" value="6K" /> <dataarea name="prg" size="33554432"> <rom name="b1146.u3" size="33554432" crc="253364ea" sha1="808ad7ff037e016c6a7a88dbe7b2bf1d41a46546" offset="00000" /> </dataarea> @@ -84294,13 +84319,14 @@ that the real dumps might surface --> </part> </software> - <software name="mc_cb400" supported="no"> + <software name="mc_cb400" supported="partial"> <description>CoolBoy 400 in 1</description> - <year>19??</year> + <year>201?</year> <publisher>CoolBoy</publisher> <part name="cart" interface="nes_cart"> - <feature name="slot" value="coolboy" /> + <feature name="slot" value="smd133" /> <feature name="pcb" value="COOLBOY" /> + <feature name="smd133-addr" value="6K" /> <dataarea name="prg" size="33554432"> <rom name="rom.prg" size="33554432" crc="da8f37f1" sha1="bc5a2777a04b58219702a2a32e1e6a04cc0a5c5a" offset="00000" /> </dataarea> @@ -84310,44 +84336,32 @@ that the real dumps might surface --> </part> </software> - <software name="mc_cb400a" cloneof="mc_cb400" supported="no"> - <description>CoolBoy 400 in 1 (Alt, 403 games)</description> - <year>19??</year> + <software name="mc_cb400a" cloneof="mc_cb400" supported="partial"> + <description>CoolBoy 400 in 1 (alt, 403 games)</description> + <year>201?</year> <publisher>CoolBoy</publisher> <part name="cart" interface="nes_cart"> - <feature name="slot" value="coolboy" /> + <feature name="slot" value="smd133" /> <feature name="pcb" value="COOLBOY" /> + <feature name="smd133-addr" value="6K" /> <dataarea name="prg" size="33554432"> <rom name="b1102.bin" size="33554432" crc="6a98c5ee" sha1="f5de587420d0ad4e8fdff6b4ba32a940f1fe35bd" offset="00000" /> </dataarea> - <!-- 8k? VRAM on cartridge --> - <dataarea name="vram" size="8192"> - </dataarea> - </part> - </software> - - <software name="mc_cb280" supported="no"> - <description>Coolboy RS-18 (280 in 1)</description> - <year>19??</year> - <publisher>CoolBoy</publisher> - <part name="cart" interface="nes_cart"> - <feature name="slot" value="coolboy" /> - <feature name="pcb" value="COOLBOY" /> - <dataarea name="prg" size="4194304"> - <rom name="w25q32.u5" size="4194304" crc="c9541bdf" sha1="f0ce46f18658ca5dbed881e5a80460e59820bbd0" offset="00000" /> - </dataarea> + <!-- 128k VRAM on cartridge --> <dataarea name="vram" size="131072"> </dataarea> </part> </software> +<!-- Is this a bad dump? Wrong mapper? --> <software name="mc_cb203" supported="no"> <description>Coolboy RS-17 (203 in 1)</description> - <year>19??</year> + <year>201?</year> <publisher>CoolBoy</publisher> <part name="cart" interface="nes_cart"> - <feature name="slot" value="coolboy" /> + <feature name="slot" value="smd133" /> <feature name="pcb" value="COOLBOY" /> + <feature name="smd133-addr" value="6K" /> <dataarea name="prg" size="4194304"> <rom name="s25fl032.bin" size="4194304" crc="33c4e67b" sha1="5787db4c8ce4c2569a5f9e9054cbb1944c1b3092" offset="00000" /> </dataarea> @@ -84356,13 +84370,14 @@ that the real dumps might surface --> </part> </software> - <software name="mc_g450" supported="no"> + <software name="mc_g450" supported="partial"> <description>Game 450 in 1</description> <year>201?</year> <publisher><unknown></publisher> <part name="cart" interface="nes_cart"> - <feature name="slot" value="coolboy" /> + <feature name="slot" value="smd133" /> <feature name="pcb" value="COOLBOY" /> + <feature name="smd133-addr" value="6K" /> <dataarea name="prg" size="33554432"> <rom name="g450in1.bin" size="33554432" crc="a4396e58" sha1="780d85b737bfc3ba9918f84d09c2d90d72c88dd3" offset="00000" /> </dataarea> @@ -84372,13 +84387,14 @@ that the real dumps might surface --> </part> </software> - <software name="mc_g500" supported="no"> + <software name="mc_g500" supported="partial"> <description>Game 500 in 1</description> <year>201?</year> <publisher><unknown></publisher> <part name="cart" interface="nes_cart"> - <feature name="slot" value="coolboy" /> + <feature name="slot" value="smd133" /> <feature name="pcb" value="COOLBOY" /> + <feature name="smd133-addr" value="6K" /> <dataarea name="prg" size="33554432"> <rom name="g500in1.bin" size="33554432" crc="74787d9d" sha1="63f28d991351320f3427ddd541c9edb6d3c8fe5f" offset="00000" /> </dataarea> @@ -84388,13 +84404,14 @@ that the real dumps might surface --> </part> </software> - <software name="mc_pg150" supported="no"> + <software name="mc_pg150" supported="partial"> <description>Pocket Games 150 in 1</description> <year>201?</year> <publisher><unknown></publisher> <part name="cart" interface="nes_cart"> - <feature name="slot" value="coolboy" /> + <feature name="slot" value="smd133" /> <feature name="pcb" value="COOLBOY" /> + <feature name="smd133-addr" value="6K" /> <dataarea name="prg" size="33554432"> <rom name="pocketgames150-in1.bin" size="33554432" crc="32f1176b" sha1="2cfd9b61ebdfc328f020ae9bd5e5e2219321e828" offset="00000" /> </dataarea> @@ -84404,13 +84421,34 @@ that the real dumps might surface --> </part> </software> - <software name="mc_sg218" supported="no"> + <software name="mc_sg143" supported="partial"> + <description>Super Games 143 in 1 (The Best Games of NES)</description> + <year>201?</year> + <publisher><pirate></publisher> + <part name="cart" interface="nes_cart"> + <feature name="slot" value="smd133" /> + <feature name="smd133-addr" value="5K" /> + <dataarea name="prg" size="33554432"> + <rom name="super game 143-in-1 (the best games of nes).prg" size="33554432" crc="4026eed1" sha1="f127498b71dab1ab3196e0967055cb986779dfa9" status="baddump" /> + </dataarea> + <!-- 256k VRAM on cartridge --> + <dataarea name="vram" size="262144"> + </dataarea> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + </dataarea> + </part> + </software> + + <software name="mc_sg218" supported="partial"> <description>Super Game 218 in 1 (JF2181)</description> <year>201?</year> <publisher><unknown></publisher> <part name="cart" interface="nes_cart"> - <feature name="slot" value="coolboy" /> + <feature name="slot" value="smd133" /> <feature name="pcb" value="COOLBOY" /> + <feature name="smd133-addr" value="6K" /> <dataarea name="prg" size="33554432"> <rom name="b0932.u3" size="33554432" crc="82fc4149" sha1="080cb14134e2756472114227267b6ade4f1aab9b" offset="00000" /> </dataarea> @@ -84420,29 +84458,34 @@ that the real dumps might surface --> </part> </software> - <software name="mc_sg360" supported="no"> + <software name="mc_sg360" supported="partial"> <description>Super Game 360 in 1</description> - <year>19??</year> + <year>201?</year> <publisher><unknown></publisher> <part name="cart" interface="nes_cart"> - <feature name="slot" value="coolboy" /> + <feature name="slot" value="smd133" /> <feature name="pcb" value="COOLBOY" /> + <feature name="smd133-addr" value="6K" /> <dataarea name="prg" size="33554432"> <rom name="b1324.u3" size="33554432" crc="f1371c17" sha1="77bdc59514e12910aee73c69e563a69f47675a2a" offset="00000" /> </dataarea> - <!-- 8k? VRAM on cartridge --> - <dataarea name="vram" size="8192"> + <!-- 256k VRAM on cartridge --> + <dataarea name="vram" size="262144"> + </dataarea> + <!-- 8k WRAM on cartridge --> + <dataarea name="wram" size="8192"> </dataarea> </part> </software> - <software name="mc_sg402" supported="no"> + <software name="mc_sg402" supported="partial"> <description>Super Game 402 in 1</description> <year>201?</year> <publisher><unknown></publisher> <part name="cart" interface="nes_cart"> - <feature name="slot" value="coolboy" /> + <feature name="slot" value="smd133" /> <feature name="pcb" value="COOLBOY" /> + <feature name="smd133-addr" value="6K" /> <dataarea name="prg" size="33554432"> <rom name="b1310.u3" size="33554432" crc="205daab3" sha1="b403daad9e0cd3b8490ef9127bcb7acd5b40f710" offset="00000" /> </dataarea> diff --git a/src/devices/bus/nes/mmc3_clones.cpp b/src/devices/bus/nes/mmc3_clones.cpp index 1f289cf3899..2021976a97f 100644 --- a/src/devices/bus/nes/mmc3_clones.cpp +++ b/src/devices/bus/nes/mmc3_clones.cpp @@ -86,7 +86,7 @@ DEFINE_DEVICE_TYPE(NES_BMC_830832C, nes_bmc_830832c_device, "nes_bmc_830832c DEFINE_DEVICE_TYPE(NES_BMC_YY841101C, nes_bmc_yy841101c_device, "nes_bmc_yy841101c", "NES Cart BMC YY841101C PCB") DEFINE_DEVICE_TYPE(NES_BMC_YY841155C, nes_bmc_yy841155c_device, "nes_bmc_yy841155c", "NES Cart BMC YY841155C PCB") DEFINE_DEVICE_TYPE(NES_PJOY84, nes_pjoy84_device, "nes_pjoy84", "NES Cart Powerjoy 84 PCB") -DEFINE_DEVICE_TYPE(NES_COOLBOY, nes_coolboy_device, "nes_coolboy", "NES Cart CoolBoy PCB") +DEFINE_DEVICE_TYPE(NES_SMD133, nes_smd133_device, "nes_smd133", "NES Cart SMD133 PCB") INPUT_PORTS_START( sachen_shero ) @@ -438,8 +438,8 @@ nes_pjoy84_device::nes_pjoy84_device(const machine_config &mconfig, const char * { } -nes_coolboy_device::nes_coolboy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : nes_txrom_device(mconfig, NES_COOLBOY, tag, owner, clock) +nes_smd133_device::nes_smd133_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : nes_txrom_device(mconfig, NES_SMD133, tag, owner, clock) { } @@ -1025,6 +1025,20 @@ void nes_pjoy84_device::pcb_reset() mmc3_common_initialize(m_prg_mask, m_chr_mask, 0); } +void nes_smd133_device::device_start() +{ + mmc3_start(); + save_item(NAME(m_reg)); +} + +void nes_smd133_device::pcb_reset() +{ + m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM; + + std::fill(std::begin(m_reg), std::end(m_reg), 0x00); + mmc3_common_initialize(0x3f, 0xff, 0); +} + /*------------------------------------------------- @@ -3019,7 +3033,7 @@ void nes_bmc_gn45_device::write_m(offs_t offset, u8 data) { LOG_MMC(("bmc_gn45 write_m, offset: %04x, data: %02x\n", offset, data)); - nes_txrom_device::write_m(offset, data); // write to overlapping WRAM + nes_txrom_device::write_m(offset, data); // registers overlay WRAM if (!m_lock) { @@ -3644,32 +3658,78 @@ void nes_pjoy84_device::write_m(offs_t offset, uint8_t data) /*------------------------------------------------- - COOLBOY + COOLBOY, MINDKIDS, and others with SMD132/133 chips + + Games: many multicarts, Chinese games, and some + modern re-releases such as Metal Storm and Holy Diver - Games: several multigame carts + NES 2.0: mapper 268 - In MESS: Not Supported. + In MAME: Partially supported. + + TODO: There are many unimplemented features, though + there may be no carts that use them. Some of the + unemulated stuff: regs 4 and 5 not used, more GNROM + bits in reg 2, "weird" modes, WRAM at 0x5000, etc. -------------------------------------------------*/ -void nes_coolboy_device::prg_cb(int start, int bank) +void nes_smd133_device::prg_cb(int start, int bank) { - bank = (bank & 3) | ((bank & 8) >> 1) | ((bank & 4) << 1); + if (BIT(m_reg[3], 4)) // GNROM mode + { + u8 mask = (m_reg[1] & 0x02) | 0x01; + bank &= ~0x0f; + bank |= (m_reg[3] & ~mask & 0x0f) | (start & mask); + } + prg8_x(start, bank); } -void nes_coolboy_device::chr_cb(int start, int bank, int source) +void nes_smd133_device::chr_cb(int start, int bank, int source) { - bank = (bank & 0xdd) | ((bank & 0x20) >> 4) | ((bank & 2) << 4); + if (BIT(m_reg[3], 4)) // GNROM mode + { + bank &= ~m_chr_mask; + bank |= (m_reg[2] & 0x0f) << 3 | start; + } + chr1_x(start, bank, source); } -void nes_coolboy_device::write_m(offs_t offset, uint8_t data) +void nes_smd133_device::smd133_write(offs_t offset, u8 data) { - LOG_MMC(("coolboy write_m, offset: %04x, data: %02x\n", offset, data)); + int reg = offset & 0x07; - m_reg[offset & 0x03] = data; - //set_base_mask(); - set_chr(m_chr_source, m_chr_base, m_chr_mask); - set_prg(m_prg_base, m_prg_mask); + if (reg < 6 && (BIT(m_reg[3], 4) || !BIT(m_reg[3], 7))) + { + m_reg[reg] = data; + + m_prg_base = (m_reg[0] & 0x30) << 6 | (m_reg[1] & 0x0c) << 6 | (m_reg[1] & 0x10) << 3 | (m_reg[0] & 0x07) << 4; + m_prg_mask = (bitswap<3>(m_reg[1], 5, 6, 7) << 5 | (m_reg[0] & 0x40) >> 2 | 0x0f) ^ 0x30; + set_prg(m_prg_base, m_prg_mask); + + m_chr_base = (m_reg[0] & 0x80) & ((m_reg[0] & 0x08) << 4); + m_chr_mask = 0xff >> BIT(m_reg[0], 7); + set_chr(m_chr_source, m_chr_base, m_chr_mask); + } +} + +void nes_smd133_device::write_l(offs_t offset, u8 data) +{ + LOG_MMC(("smd133 write_l, offset: %04x, data: %02x\n", offset, data)); + + offset += 0x100; + if (offset >= 0x1000 && m_smd133_addr == 0x5000) + smd133_write(offset, data); +} + +void nes_smd133_device::write_m(offs_t offset, u8 data) +{ + LOG_MMC(("smd133 write_m, offset: %04x, data: %02x\n", offset, data)); + + nes_txrom_device::write_m(offset, data); // registers overlay WRAM + + if (offset < 0x1000 && m_smd133_addr == 0x6000) + smd133_write(offset, data); } diff --git a/src/devices/bus/nes/mmc3_clones.h b/src/devices/bus/nes/mmc3_clones.h index faeacccb091..f71adaac9ef 100644 --- a/src/devices/bus/nes/mmc3_clones.h +++ b/src/devices/bus/nes/mmc3_clones.h @@ -1123,21 +1123,29 @@ private: uint8_t m_reg[4]; }; -// ======================> nes_coolboy_device -class nes_coolboy_device : public nes_txrom_device +// ======================> nes_smd133_device + +class nes_smd133_device : public nes_txrom_device { public: // construction/destruction - nes_coolboy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + nes_smd133_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // device-level overrides - virtual void write_m(offs_t offset, uint8_t data) override; + virtual void write_l(offs_t offset, u8 data) override; + virtual void write_m(offs_t offset, u8 data) override; virtual void prg_cb(int start, int bank) override; virtual void chr_cb(int start, int bank, int source) override; + virtual void pcb_reset() override; + +protected: + // device-level overrides + virtual void device_start() override; + private: - uint8_t m_reg[4]; + void smd133_write(offs_t offset, u8 data); + u8 m_reg[6]; }; @@ -1200,6 +1208,6 @@ DECLARE_DEVICE_TYPE(NES_BMC_830832C, nes_bmc_830832c_device) DECLARE_DEVICE_TYPE(NES_BMC_YY841101C, nes_bmc_yy841101c_device) DECLARE_DEVICE_TYPE(NES_BMC_YY841155C, nes_bmc_yy841155c_device) DECLARE_DEVICE_TYPE(NES_PJOY84, nes_pjoy84_device) -DECLARE_DEVICE_TYPE(NES_COOLBOY, nes_coolboy_device) +DECLARE_DEVICE_TYPE(NES_SMD133, nes_smd133_device) #endif // MAME_BUS_NES_MMC3_CLONES_H diff --git a/src/devices/bus/nes/nes_carts.cpp b/src/devices/bus/nes/nes_carts.cpp index c7911546d70..9e3249ae928 100644 --- a/src/devices/bus/nes/nes_carts.cpp +++ b/src/devices/bus/nes/nes_carts.cpp @@ -447,6 +447,7 @@ void nes_cart(device_slot_interface &device) device.option_add_internal("nt639", NES_NT639); device.option_add_internal("resettxrom", NES_RESETTXROM); device.option_add_internal("s24in1c03", NES_S24IN1SC03); + device.option_add_internal("smd133", NES_SMD133); device.option_add_internal("tech9in1", NES_TECHLINE9IN1); device.option_add_internal("bmc_8in1", NES_BMC_8IN1); device.option_add_internal("bmc_15in1", NES_BMC_15IN1); @@ -484,7 +485,6 @@ void nes_cart(device_slot_interface &device) device.option_add_internal("unl_dance", NES_NROM); // UNSUPPORTED device.option_add_internal("onebus", NES_NROM); // UNSUPPORTED device.option_add_internal("pec586", NES_NROM); // UNSUPPORTED - device.option_add_internal("coolboy", NES_NROM); // UNSUPPORTED device.option_add_internal("unl_drgnfgt", NES_NROM); // UNSUPPORTED // are there dumps of games with these boards? device.option_add_internal("bmc_hik_kof", NES_NROM); // mapper 251 - UNSUPPORTED diff --git a/src/devices/bus/nes/nes_ines.hxx b/src/devices/bus/nes/nes_ines.hxx index 7ebaf16f0c9..ddffcae5695 100644 --- a/src/devices/bus/nes/nes_ines.hxx +++ b/src/devices/bus/nes/nes_ines.hxx @@ -303,7 +303,7 @@ static const nes_mmc mmc_list[] = { 265, BMC_T262 }, { 266, UNL_CITYFIGHT }, { 267, BMC_EL861121C }, - // 268 COOLBOY and MINDKIDS + { 268, SMD133_BOARD }, // 269 mc_gx121 seems to be a PnP, but there are two actual multicarts for this mapper? // 270 multicarts on OneBus Famiclones // 271 TXC 4 in 1 MGC-026, not in nes.xml? @@ -753,6 +753,16 @@ void nes_cart_slot_device::call_load_ines() submapper = 0; logerror("Unimplemented NES 2.0 submapper: CAMERICA-BF9096.\n"); } + // 268: SMD133 boards + else if (mapper == 268) + { + if (submapper == 0) + m_cart->set_smd133_addr(0x6000); + else if (submapper == 1) + m_cart->set_smd133_addr(0x5000); + else + logerror("Unimplemented NES 2.0 submapper: %d\n", submapper); + } // 313: BMC RESET-TXROM else if (mapper == 313) { diff --git a/src/devices/bus/nes/nes_pcb.hxx b/src/devices/bus/nes/nes_pcb.hxx index 2d1c0214955..f625aef1ccc 100644 --- a/src/devices/bus/nes/nes_pcb.hxx +++ b/src/devices/bus/nes/nes_pcb.hxx @@ -319,6 +319,7 @@ static const nes_pcb pcb_list[] = { "resetsxrom", BMC_RESETSXROM }, { "resettxrom", BMC_RESETTXROM }, { "s24in1c03", BMC_S24IN1SC03 }, + { "smd133", SMD133_BOARD }, { "tech9in1", BMC_TECHLINE9IN1 }, { "bmc_8in1", BMC_8IN1 }, { "bmc_15in1", BMC_15IN1 }, @@ -395,7 +396,6 @@ static const nes_pcb pcb_list[] = { "unl_dance", UNSUPPORTED_BOARD }, { "bmc_hik_kof", UNSUPPORTED_BOARD }, { "onebus", UNSUPPORTED_BOARD }, - { "coolboy", UNSUPPORTED_BOARD }, { "pec586", UNSUPPORTED_BOARD }, { "test", TEST_BOARD }, { "unknown", UNKNOWN_BOARD } // a few pirate dumps uses the wrong mapper... @@ -678,6 +678,17 @@ void nes_cart_slot_device::call_load_pcb() m_cart->set_n163_vol(n163_get_submapper_num(get_feature("n163-vol"))); } + // get address of SMD133 chip on boards that use it + if (m_pcb_id == SMD133_BOARD) + { + const char *addr = get_feature("smd133-addr"); + int val = 6; + + if (addr == nullptr || sscanf(addr, "%u%*c", &val) != 1 || val < 5 || val > 6) + logerror("Unexpected smd133-addr: %s\n", addr ? addr : "(nullptr)"); + m_cart->set_smd133_addr(val * 0x1000); + } + // get outer PRG bank size for multicart boards that use this feature if (m_pcb_id == BMC_EL860947C || m_pcb_id == BMC_RESETTXROM) { diff --git a/src/devices/bus/nes/nes_slot.cpp b/src/devices/bus/nes/nes_slot.cpp index 19098e80479..fac3c7c1758 100644 --- a/src/devices/bus/nes/nes_slot.cpp +++ b/src/devices/bus/nes/nes_slot.cpp @@ -129,6 +129,7 @@ device_nes_cart_interface::device_nes_cart_interface(const machine_config &mconf , m_n163_vol(0) , m_outer_prg_size(0) , m_outer_chr_size(0) + , m_smd133_addr(0x6000) , m_mirroring(PPU_MIRROR_NONE) , m_pcb_ctrl_mirror(false) , m_four_screen_vram(false) diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h index 8509e2a74c2..2648a09bc1b 100644 --- a/src/devices/bus/nes/nes_slot.h +++ b/src/devices/bus/nes/nes_slot.h @@ -136,7 +136,7 @@ enum OPENCORP_DAOU306, HES_BOARD, SVISION16_BOARD, RUMBLESTATION_BOARD, JYCOMPANY_A, JYCOMPANY_B, JYCOMPANY_C, MAGICSERIES_MD, KASING_BOARD, FUTUREMEDIA_BOARD, FUKUTAKE_BOARD, SOMARI_SL12, SOMARI_HUANG2, HENGG_SRICH, HENGG_XHZS, HENGG_SHJY3, SUBOR_TYPE0, SUBOR_TYPE1, SUBOR_TYPE2, - CNE_DECATHLON, CNE_FSB, CNE_SHLZ, COCOMA_BOARD, CONY_BOARD, YOKO_BOARD, + CNE_DECATHLON, CNE_FSB, CNE_SHLZ, COCOMA_BOARD, CONY_BOARD, SMD133_BOARD, YOKO_BOARD, RCM_GS2015, RCM_GS2004, RCM_GS2013, RCM_TF9IN1, RCM_3DBLOCK, WAIXING_TYPE_A, WAIXING_TYPE_A1, WAIXING_TYPE_B, WAIXING_TYPE_C, WAIXING_TYPE_D, WAIXING_TYPE_E, WAIXING_TYPE_F, WAIXING_TYPE_G, WAIXING_TYPE_H, WAIXING_TYPE_H1, @@ -228,6 +228,7 @@ public: void set_n163_vol(int vol) { m_n163_vol = vol; } void set_outer_prg_size(int val) { m_outer_prg_size = val; } void set_outer_chr_size(int val) { m_outer_chr_size = val; } + void set_smd133_addr(int val) { m_smd133_addr = val; } void set_x1_005_alt(bool val) { m_x1_005_alt_mirroring = val; } void set_bus_conflict(bool val) { m_bus_conflict = val; } uint8_t get_open_bus() { return m_open_bus; } @@ -303,6 +304,7 @@ protected: int m_n163_vol; int m_outer_prg_size; int m_outer_chr_size; + int m_smd133_addr; int m_mirroring; bool m_pcb_ctrl_mirror, m_four_screen_vram, m_has_trainer; diff --git a/src/mame/drivers/nes_vt369_vtunknown.cpp b/src/mame/drivers/nes_vt369_vtunknown.cpp index 421691e63fb..e77d942c6bd 100644 --- a/src/mame/drivers/nes_vt369_vtunknown.cpp +++ b/src/mame/drivers/nes_vt369_vtunknown.cpp @@ -411,7 +411,7 @@ void nes_vt369_vtunknown_cy_state::nes_vt369_vtunknown_bt(machine_config &config void nes_vt369_vtunknown_cy_state::bittboy_412c_w(uint8_t data) { - //bittboy (ok), mc_pg150 (not working) + // bittboy (ok) logerror("%s: vt03_412c_extbank_w %02x\n", machine().describe_context(), data); m_ahigh = (data & 0x04) ? (1 << 24) : 0x0; } @@ -698,11 +698,6 @@ ROM_START( bittboy ) ROM_LOAD( "bittboy_flash_read_s29gl256n-tf-v2.bin", 0x00000, 0x2000000, CRC(24c802d7) SHA1(c1300ff799b93b9b53060b94d3985db4389c5d3a) ) ROM_END -ROM_START( mc_pg150 ) - ROM_REGION( 0x2000000, "mainrom", 0 ) - ROM_LOAD( "pocketgames150-in1.bin", 0x00000, 0x2000000, CRC(32f1176b) SHA1(2cfd9b61ebdfc328f020ae9bd5e5e2219321e828) ) -ROM_END - ROM_START( mc_hh210 ) ROM_REGION( 0x1000000, "mainrom", 0 ) ROM_LOAD( "msp55lv128t.u4", 0x00000, 0x1000000, CRC(9ba520d4) SHA1(627f811b24314197e289a2ade668ff4115421bed) ) @@ -876,8 +871,6 @@ void nes_vt369_vtunknown_state::init_lxcmcypp() // Runs well, only issues in SMB3 which crashes CONS( 2017, bittboy, 0, 0, nes_vt369_vtunknown_bt_2x16mb, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "BittBoy", "BittBoy Mini FC 300 in 1", MACHINE_IMPERFECT_GRAPHICS ) // has external banking (2x 16mbyte banks) -// Broken GFX, investigate, is this really a system? research indicates it's a multicart for a regular NES? -CONS( 201?, mc_pg150, 0, 0, nes_vt369_vtunknown_bt_2x16mb, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "<unknown>", "Pocket Games 150 in 1", MACHINE_NOT_WORKING ) // has external banking // No title screen, but press start and menu and games run fine. Makes odd // memory accesses which probably explain broken title screen CONS( 201?, mc_hh210, 0, 0, nes_vt369_vtunknown_4k_ram_16mb, nes_vt369_vtunknown, nes_vt369_vtunknown_state, empty_init, "<unknown>", "Handheld 210 in 1", MACHINE_NOT_WORKING ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 50bdab3195b..ee53d19ce37 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -32982,7 +32982,6 @@ lxcmcysw lxcyber mc_cb280 mc_hh210 -mc_pg150 mog_m320 myarccn otrail |