summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/nes
diff options
context:
space:
mode:
author 0kmg <9137159+0kmg@users.noreply.github.com>2021-10-09 16:30:47 -0800
committer GitHub <noreply@github.com>2021-10-09 20:30:47 -0400
commitc7d04d404a3dc5f2035deabc7daf188f14800f08 (patch)
treeea8f6b1aad65b6e903086aaedca90f18c53f7cfb /src/devices/bus/nes
parent3961612bf3fdadb53cdda85b6d283b633350ef1b (diff)
bus/nes: Added support for a couple Korean educational titles. (#8675)
- Also replaced the underdumped ROMs for brillco2, which is now fully working. New working software list additions (nes.xml) ----------------------------------- Yeongjaekeom Cocoma Pack 1 (Korea) [MLX]
Diffstat (limited to 'src/devices/bus/nes')
-rw-r--r--src/devices/bus/nes/mmc3_clones.cpp41
-rw-r--r--src/devices/bus/nes/mmc3_clones.h15
-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
6 files changed, 60 insertions, 2 deletions
diff --git a/src/devices/bus/nes/mmc3_clones.cpp b/src/devices/bus/nes/mmc3_clones.cpp
index 828189f9767..6ee14c0fabd 100644
--- a/src/devices/bus/nes/mmc3_clones.cpp
+++ b/src/devices/bus/nes/mmc3_clones.cpp
@@ -47,6 +47,7 @@ DEFINE_DEVICE_TYPE(NES_TXC_TW, nes_txc_tw_device, "nes_txc_tw",
DEFINE_DEVICE_TYPE(NES_KOF97, nes_kof97_device, "nes_kof97", "NES Cart KoF 97 PCB")
DEFINE_DEVICE_TYPE(NES_KOF96, nes_kof96_device, "nes_kof96", "NES Cart KoF 96 PCB")
DEFINE_DEVICE_TYPE(NES_SF3, nes_sf3_device, "nes_sf3", "NES Cart Super Fighter III PCB")
+DEFINE_DEVICE_TYPE(NES_COCOMA, nes_cocoma_device, "nes_cocoma", "NES Cart Cocoma Core Pro PCB")
DEFINE_DEVICE_TYPE(NES_GOUDER, nes_gouder_device, "nes_gouder", "NES Cart Gouder PCB")
DEFINE_DEVICE_TYPE(NES_SA9602B, nes_sa9602b_device, "nes_sa9602b", "NES Cart SA-9602B PCB")
DEFINE_DEVICE_TYPE(NES_SACHEN_SHERO, nes_sachen_shero_device, "nes_shero", "NES Cart Street Hero PCB")
@@ -229,6 +230,11 @@ nes_sf3_device::nes_sf3_device(const machine_config &mconfig, const char *tag, d
{
}
+nes_cocoma_device::nes_cocoma_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : nes_txrom_device(mconfig, NES_COCOMA, tag, owner, clock)
+{
+}
+
nes_gouder_device::nes_gouder_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: nes_txrom_device(mconfig, NES_GOUDER, tag, owner, clock)
{
@@ -533,6 +539,12 @@ void nes_kof96_device::pcb_reset()
mmc3_common_initialize(0xff, 0xff, 0);
}
+void nes_cocoma_device::pcb_reset()
+{
+ m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
+ mmc3_common_initialize(0x0f, 0x7f, 0);
+}
+
void nes_gouder_device::device_start()
{
mmc3_start();
@@ -1855,6 +1867,35 @@ void nes_sf3_device::write_h(offs_t offset, uint8_t data)
/*-------------------------------------------------
+ Cocoma Core Pro Board
+
+ Games: BrilliantCom Cocoma Pack 1 and 2
+
+ MMC3 clone with an extra outer bank latch.
+
+ NES 2.0: mapper 516
+
+ In MAME: Supported.
+
+ -------------------------------------------------*/
+
+void nes_cocoma_device::write_h(offs_t offset, u8 data)
+{
+ LOG_MMC(("cocoma write_h, offset: %04x, data: %02x\n", offset, data));
+
+ if (BIT(offset, 4))
+ {
+ m_prg_base = (offset & 0x03) << 4;
+ set_prg(m_prg_base, m_prg_mask);
+ m_chr_base = (offset & 0x0c) << 5;
+ set_chr(m_chr_source, m_chr_base, m_chr_mask);
+ }
+ else
+ txrom_write(offset, data);
+}
+
+/*-------------------------------------------------
+
Bootleg Board 37017 (?) by Gouder
Games: Street Fighter IV
diff --git a/src/devices/bus/nes/mmc3_clones.h b/src/devices/bus/nes/mmc3_clones.h
index 61cfa0d568e..d08368ea43f 100644
--- a/src/devices/bus/nes/mmc3_clones.h
+++ b/src/devices/bus/nes/mmc3_clones.h
@@ -360,6 +360,20 @@ protected:
};
+// ======================> nes_cocoma_device
+
+class nes_cocoma_device : public nes_txrom_device
+{
+public:
+ // construction/destruction
+ nes_cocoma_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;
+};
+
+
// ======================> nes_gouder_device
class nes_gouder_device : public nes_txrom_device
@@ -1067,6 +1081,7 @@ DECLARE_DEVICE_TYPE(NES_TXC_TW, nes_txc_tw_device)
DECLARE_DEVICE_TYPE(NES_KOF97, nes_kof97_device)
DECLARE_DEVICE_TYPE(NES_KOF96, nes_kof96_device)
DECLARE_DEVICE_TYPE(NES_SF3, nes_sf3_device)
+DECLARE_DEVICE_TYPE(NES_COCOMA, nes_cocoma_device)
DECLARE_DEVICE_TYPE(NES_GOUDER, nes_gouder_device)
DECLARE_DEVICE_TYPE(NES_SA9602B, nes_sa9602b_device)
DECLARE_DEVICE_TYPE(NES_SACHEN_SHERO, nes_sachen_shero_device)
diff --git a/src/devices/bus/nes/nes_carts.cpp b/src/devices/bus/nes/nes_carts.cpp
index 29fc3cc5541..6f38d3cabbf 100644
--- a/src/devices/bus/nes/nes_carts.cpp
+++ b/src/devices/bus/nes/nes_carts.cpp
@@ -194,6 +194,7 @@ void nes_cart(device_slot_interface &device)
device.option_add_internal("cne_decathl", NES_CNE_DECATHL);
device.option_add_internal("cne_fsb", NES_CNE_FSB);
device.option_add_internal("cne_shlz", NES_CNE_SHLZ);
+ device.option_add_internal("cocoma", NES_COCOMA);
device.option_add_internal("nanjing", NES_NANJING); // mapper 163
device.option_add_internal("ntdec_2746", NES_NTDEC_2746);
device.option_add_internal("ntdec_asder", NES_NTDEC_ASDER); // mapper 112
diff --git a/src/devices/bus/nes/nes_ines.hxx b/src/devices/bus/nes/nes_ines.hxx
index b8c1a5a59c3..0075482f87f 100644
--- a/src/devices/bus/nes/nes_ines.hxx
+++ b/src/devices/bus/nes/nes_ines.hxx
@@ -479,7 +479,7 @@ static const nes_mmc mmc_list[] =
{ 513, SACHEN_SA9602B },
// 514 seems to be for skaraok, currently set to UNKNOWN in nes.xml
// 515 Korean Family Noraebang karaoke cart with expansion cart, mic, and YM2413!
- // 516 is this for brillco2 and another related title not in nes.xml?
+ { 516, COCOMA_BOARD },
// 517 another Korean karaoke cart with mic
// 518 Subor UNL-DANCE2000 and a few others
{ 519, UNL_EH8813A }, // Dr Mario II Chinese pirate
diff --git a/src/devices/bus/nes/nes_pcb.hxx b/src/devices/bus/nes/nes_pcb.hxx
index 20b18da7827..251e146850a 100644
--- a/src/devices/bus/nes/nes_pcb.hxx
+++ b/src/devices/bus/nes/nes_pcb.hxx
@@ -106,6 +106,7 @@ static const nes_pcb pcb_list[] =
{ "cne_decathl", CNE_DECATHLON },
{ "cne_fsb", CNE_FSB },
{ "cne_shlz", CNE_SHLZ },
+ { "cocoma", COCOMA_BOARD },
{ "nanjing", NANJING_BOARD }, // mapper 163
{ "ntdec_2746", NTDEC_2746 },
{ "ntdec_asder", NTDEC_ASDER }, // mapper 112
diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h
index 476b0fdbc73..cdb673f9c32 100644
--- a/src/devices/bus/nes/nes_slot.h
+++ b/src/devices/bus/nes/nes_slot.h
@@ -135,7 +135,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,
HENGG_SRICH, HENGG_XHZS, HENGG_SHJY3, SUBOR_TYPE0, SUBOR_TYPE1, SUBOR_TYPE2,
- CNE_DECATHLON, CNE_FSB, CNE_SHLZ, CONY_BOARD, YOKO_BOARD,
+ CNE_DECATHLON, CNE_FSB, CNE_SHLZ, COCOMA_BOARD, CONY_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,