bus/nes: Added support for a Big Nose 2-in-1 cart.

- Demoted bignfo to unsupported. It has timing issues like many Camerica games. It is likewise not working in the added 2-in-1.

New working software list additions (nes.xml)
-----------------------------------
2 in 1 - Big Nose the Caveman & Big Nose Freaks Out [MLX]
This commit is contained in:
0kmg 2021-07-24 22:36:04 -08:00
parent 4d513fc86d
commit 48357fe653
7 changed files with 94 additions and 4 deletions

View File

@ -4201,7 +4201,7 @@ license:CC0
</part>
</software>
<software name="bignfo">
<software name="bignfo" supported="no">
<description>Big Nose Freaks Out (USA)</description>
<year>1992</year>
<publisher>Camerica</publisher>
@ -61302,6 +61302,24 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<!-- OTHER TAIWANESE ~ CHINESE ~ ASIAN PIRATES-->
<software name="2bignose" supported="partial">
<description>2 in 1 - Big Nose the Caveman &amp; Big Nose Freaks Out</description>
<year>199?</year>
<publisher>&lt;pirate&gt;</publisher>
<info name="serial" value="BC-019"/>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="kn42" />
<feature name="mirroring" value="vertical" />
<dataarea name="prg" size="524288">
<rom name="2-in-1 high standard game (bc-019).prg" size="524288" crc="330623a4" sha1="ad189495ed8b6d60dddcbb970be17174b2389e63" status="baddump" />
</dataarea>
<!-- 8k VRAM on cartridge -->
<dataarea name="vram" size="8192">
</dataarea>
</part>
</software>
<software name="2dkjb" supported="no">
<description>2 in 1 - Donkey Kong &amp; Jungle Book</description>
<year>19??</year>
@ -78732,6 +78750,7 @@ be better to redump them properly. -->
<description>4 in 1 (Alt 2)</description>
<year>19??</year>
<publisher>&lt;pirate&gt;</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="bmc_reset4" />
<feature name="mirroring" value="vertical" />
@ -78748,6 +78767,7 @@ be better to redump them properly. -->
<description>4 in 1 (Alt 3)</description>
<year>19??</year>
<publisher>&lt;pirate&gt;</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="bmc_reset4" />
<dataarea name="chr" size="32768">
@ -80849,6 +80869,7 @@ to check why this is different -->
<description>Reset Based 4 in 1</description>
<year>19??</year>
<publisher>&lt;pirate&gt;</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="bmc_reset4" />
<feature name="pcb" value="BMC-RESETBASED-4IN1" />

View File

@ -32,6 +32,7 @@ DEFINE_DEVICE_TYPE(NES_ACTION52, nes_action52_device, "nes_action52"
DEFINE_DEVICE_TYPE(NES_CALTRON6IN1, nes_caltron_device, "nes_caltron", "NES Cart Caltron 6 in 1 PCB")
DEFINE_DEVICE_TYPE(NES_RUMBLESTATION, nes_rumblestat_device, "nes_rumblestat", "NES Cart Rumblestation PCB")
DEFINE_DEVICE_TYPE(NES_SVISION16, nes_svision16_device, "nes_svision16", "NES Cart Supervision 16 in 1 PCB")
DEFINE_DEVICE_TYPE(NES_KN42, nes_kn42_device, "nes_kn42", "NES Cart KN-42 PCB")
DEFINE_DEVICE_TYPE(NES_N625092, nes_n625092_device, "nes_n625092", "NES Cart N625092 PCB")
DEFINE_DEVICE_TYPE(NES_A65AS, nes_a65as_device, "nes_a65as", "NES Cart A65AS PCB")
DEFINE_DEVICE_TYPE(NES_T262, nes_t262_device, "nes_t262", "NES Cart T-262 PCB")
@ -102,6 +103,11 @@ nes_svision16_device::nes_svision16_device(const machine_config &mconfig, const
{
}
nes_kn42_device::nes_kn42_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: nes_nrom_device(mconfig, NES_KN42, tag, owner, clock), m_latch(0)
{
}
nes_n625092_device::nes_n625092_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: nes_nrom_device(mconfig, NES_N625092, tag, owner, clock), m_latch1(0), m_latch2(0)
{
@ -406,6 +412,20 @@ void nes_svision16_device::pcb_reset()
m_latch2 = 0;
}
void nes_kn42_device::device_start()
{
common_start();
save_item(NAME(m_latch));
}
void nes_kn42_device::pcb_reset()
{
m_latch ^= 0x10;
prg16_89ab(m_latch);
prg16_cdef(m_latch | 0x0f); // fixed to last bank for either game
chr8(0, CHRRAM);
}
void nes_n625092_device::device_start()
{
common_start();
@ -1215,6 +1235,32 @@ void nes_svision16_device::write_h(offs_t offset, uint8_t data)
update_prg();
}
/*-------------------------------------------------
Bootleg Board KN-42
Games: 2 in 1 - Big Nose & Big Nose Freaks Out
NES 2.0: mapper 381
In MAME: Supported.
TODO: Big Nose Freaks Out has timing issues like
many Camerica games. It happens with the singleton
dump and is unrelated to the bootleg board here.
-------------------------------------------------*/
void nes_kn42_device::write_h(offs_t offset, u8 data)
{
LOG_MMC(("kn42 write_h, offset: %04x, data: %02x\n", offset, data));
// this pcb is subject to bus conflict
data = account_bus_conflict(offset, data);
prg16_89ab(m_latch | (data & 0x07) << 1 | BIT(data, 4));
}
/*-------------------------------------------------
Bootleg Board N625092
@ -1265,7 +1311,6 @@ void nes_n625092_device::write_h(offs_t offset, uint8_t data)
}
}
/*-------------------------------------------------
Board BMC-A65AS

View File

@ -94,6 +94,27 @@ private:
};
// ======================> nes_kn42_device
class nes_kn42_device : public nes_nrom_device
{
public:
// construction/destruction
nes_kn42_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
virtual void write_h(offs_t offset, u8 data) override;
virtual void pcb_reset() override;
protected:
// device-level overrides
virtual void device_start() override;
private:
u8 m_latch;
};
// ======================> nes_n625092_device
class nes_n625092_device : public nes_nrom_device
@ -1018,6 +1039,7 @@ DECLARE_DEVICE_TYPE(NES_ACTION52, nes_action52_device)
DECLARE_DEVICE_TYPE(NES_CALTRON6IN1, nes_caltron_device)
DECLARE_DEVICE_TYPE(NES_RUMBLESTATION, nes_rumblestat_device)
DECLARE_DEVICE_TYPE(NES_SVISION16, nes_svision16_device)
DECLARE_DEVICE_TYPE(NES_KN42, nes_kn42_device)
DECLARE_DEVICE_TYPE(NES_N625092, nes_n625092_device)
DECLARE_DEVICE_TYPE(NES_A65AS, nes_a65as_device)
DECLARE_DEVICE_TYPE(NES_T262, nes_t262_device)

View File

@ -352,6 +352,7 @@ void nes_cart(device_slot_interface &device)
device.option_add_internal("maxi15", NES_MAXI15); // mapper 234
device.option_add_internal("rumblestation", NES_RUMBLESTATION); // mapper 46
device.option_add_internal("svision16", NES_SVISION16); // mapper 53
device.option_add_internal("kn42", NES_KN42);
device.option_add_internal("n625092", NES_N625092);
device.option_add_internal("a65as", NES_A65AS);
device.option_add_internal("t262", NES_T262);

View File

@ -415,7 +415,7 @@ static const nes_mmc mmc_list[] =
// 378 8-in-1 multicart, which one?
// 379 35-in-1 multicart, similar to mapper 38
// 380 970630C multicart
// 381 KN-42 2-in-1 with the Big Nose games
{ 381, UNL_KN42 }, // 2-in-1 Big Nose games
// 382 830928C 5-in-1 and 9-in-1 multicarts
// 383 JY-014 multicart
// 384 4-in-1 VRC4 clone with Crisis Force

View File

@ -237,6 +237,7 @@ static const nes_pcb pcb_list[] =
{ "caltron6in1", CALTRON_6IN1 },
{ "rumblestation", RUMBLESTATION_BOARD }, // mapper 46
{ "svision16", SVISION16_BOARD },
{ "kn42", UNL_KN42 },
{ "n625092", UNL_N625092 },
{ "a65as", BMC_A65AS },
{ "t262", BMC_T262 },

View File

@ -102,7 +102,7 @@ enum
BMC_12IN1, BMC_4IN1RESET, BMC_42IN1RESET,
BMC_CTC09, BMC_K3046, BMC_SA005A, BMC_TJ03,
// Unlicensed
UNL_8237, UNL_CC21, UNL_AX5705, UNL_KOF97,
UNL_8237, UNL_CC21, UNL_AX5705, UNL_KN42, UNL_KOF97,
UNL_N625092, UNL_SC127, UNL_SMB2J, UNL_T230, UNL_MMALEE,
UNL_UXROM, UNL_MK2, UNL_XIAOZY, UNL_KOF96, UNL_FS6,
UNL_SF3, UNL_RACERMATE, UNL_EDU2K,