summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author ajrhacker <ajrhacker@users.noreply.github.com>2021-07-25 20:21:22 -0400
committer GitHub <noreply@github.com>2021-07-25 20:21:22 -0400
commitbf957bc417a8cc2cfc5a8c7e988bf5ab8054893a (patch)
treee55b0439ed9b3951fb2714cd6466b6cab9ac3c11
parentf1cfc1e31b82c322cb1c71903c40d77ce9812936 (diff)
parent48357fe653bf4e9bfe2584c79f6f434c1eae9105 (diff)
Merge pull request #8359 from 0kmg/nes-2bignose
bus/nes: Added support for a Big Nose 2-in-1 cart.
-rw-r--r--hash/nes.xml23
-rw-r--r--src/devices/bus/nes/multigame.cpp47
-rw-r--r--src/devices/bus/nes/multigame.h22
-rw-r--r--src/devices/bus/nes/nes_carts.cpp1
-rw-r--r--src/devices/bus/nes/nes_ines.hxx2
-rw-r--r--src/devices/bus/nes/nes_pcb.hxx1
-rw-r--r--src/devices/bus/nes/nes_slot.h2
7 files changed, 94 insertions, 4 deletions
diff --git a/hash/nes.xml b/hash/nes.xml
index e96c7850bf6..12c55906a2f 100644
--- a/hash/nes.xml
+++ b/hash/nes.xml
@@ -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" />
diff --git a/src/devices/bus/nes/multigame.cpp b/src/devices/bus/nes/multigame.cpp
index 10952516266..9bfd36078a4 100644
--- a/src/devices/bus/nes/multigame.cpp
+++ b/src/devices/bus/nes/multigame.cpp
@@ -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();
@@ -1217,6 +1237,32 @@ void nes_svision16_device::write_h(offs_t offset, uint8_t data)
/*-------------------------------------------------
+ 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
Games: 400 in 1, 700 in 1, 1000 in 1
@@ -1265,7 +1311,6 @@ void nes_n625092_device::write_h(offs_t offset, uint8_t data)
}
}
-
/*-------------------------------------------------
Board BMC-A65AS
diff --git a/src/devices/bus/nes/multigame.h b/src/devices/bus/nes/multigame.h
index 65a2a756580..258a20fe98f 100644
--- a/src/devices/bus/nes/multigame.h
+++ b/src/devices/bus/nes/multigame.h
@@ -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)
diff --git a/src/devices/bus/nes/nes_carts.cpp b/src/devices/bus/nes/nes_carts.cpp
index b89085092c8..5f4ea291fa7 100644
--- a/src/devices/bus/nes/nes_carts.cpp
+++ b/src/devices/bus/nes/nes_carts.cpp
@@ -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);
diff --git a/src/devices/bus/nes/nes_ines.hxx b/src/devices/bus/nes/nes_ines.hxx
index e5841d4796d..9b3d8b1579d 100644
--- a/src/devices/bus/nes/nes_ines.hxx
+++ b/src/devices/bus/nes/nes_ines.hxx
@@ -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
diff --git a/src/devices/bus/nes/nes_pcb.hxx b/src/devices/bus/nes/nes_pcb.hxx
index affbb607295..11867d11165 100644
--- a/src/devices/bus/nes/nes_pcb.hxx
+++ b/src/devices/bus/nes/nes_pcb.hxx
@@ -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 },
diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h
index cfb1c510ad7..6e255678279 100644
--- a/src/devices/bus/nes/nes_slot.h
+++ b/src/devices/bus/nes/nes_slot.h
@@ -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,