summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author 0kmg <9137159+0kmg@users.noreply.github.com>2021-09-16 22:32:52 -0800
committer 0kmg <9137159+0kmg@users.noreply.github.com>2021-09-18 02:16:51 -0800
commit8327dbefb5b37c42ce94679c4be1c2629ff63dc0 (patch)
tree6914fc0ee7d1d9d2e09013b0e13876e1c469adcc /src
parent4c9efbc43bff8ce2626397f5443d918265077dd5 (diff)
bus/nes: Fixed graphics glitches for BMC-GKB board multicarts.
- Removed code for both BMC-NOVEL1 and BMC-NOVEL2 which are indentical to BMC-21IN1 and BMC-GKB, respectively. This fixes graphics for the NOVEL2 game as well.
Diffstat (limited to 'src')
-rw-r--r--src/devices/bus/nes/multigame.cpp115
-rw-r--r--src/devices/bus/nes/multigame.h48
-rw-r--r--src/devices/bus/nes/nes_carts.cpp2
-rw-r--r--src/devices/bus/nes/nes_ines.hxx6
-rw-r--r--src/devices/bus/nes/nes_pcb.hxx2
-rw-r--r--src/devices/bus/nes/nes_slot.h4
-rw-r--r--src/devices/bus/nes/nes_unif.hxx2
7 files changed, 29 insertions, 150 deletions
diff --git a/src/devices/bus/nes/multigame.cpp b/src/devices/bus/nes/multigame.cpp
index 18ae4573048..1bca4da8c9f 100644
--- a/src/devices/bus/nes/multigame.cpp
+++ b/src/devices/bus/nes/multigame.cpp
@@ -37,8 +37,6 @@ DEFINE_DEVICE_TYPE(NES_KN42, nes_kn42_device, "nes_kn42",
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")
-DEFINE_DEVICE_TYPE(NES_NOVEL1, nes_novel1_device, "nes_novel1", "NES Cart Novel Diamond Type 1 PCB")
-DEFINE_DEVICE_TYPE(NES_NOVEL2, nes_novel2_device, "nes_novel2", "NES Cart Novel Diamond Type 2 PCB")
DEFINE_DEVICE_TYPE(NES_STUDYNGAME, nes_studyngame_device, "nes_studyngame", "NES Cart Study n Game PCB")
DEFINE_DEVICE_TYPE(NES_SUPERGUN20IN1, nes_sgun20in1_device, "nes_sgun20in1", "NES Cart Supergun 20 in 1 PCB")
DEFINE_DEVICE_TYPE(NES_VT5201, nes_vt5201_device, "nes_vt5201", "NES Cart VT5201 PCB")
@@ -155,16 +153,6 @@ nes_t262_device::nes_t262_device(const machine_config &mconfig, const char *tag,
{
}
-nes_novel1_device::nes_novel1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_NOVEL1, tag, owner, clock)
-{
-}
-
-nes_novel2_device::nes_novel2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_nrom_device(mconfig, NES_NOVEL2, tag, owner, clock)
-{
-}
-
nes_studyngame_device::nes_studyngame_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: nes_nrom_device(mconfig, NES_STUDYNGAME, tag, owner, clock)
{
@@ -230,7 +218,7 @@ nes_bmc_gka_device::nes_bmc_gka_device(const machine_config &mconfig, const char
{
}
-nes_bmc_gkb_device::nes_bmc_gkb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+nes_bmc_gkb_device::nes_bmc_gkb_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: nes_nrom_device(mconfig, NES_BMC_GKB, tag, owner, clock)
{
}
@@ -559,31 +547,6 @@ void nes_t262_device::pcb_reset()
m_latch = 0;
}
-void nes_novel1_device::device_start()
-{
- common_start();
-}
-
-void nes_novel1_device::pcb_reset()
-{
- m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
- prg32(0);
- chr8(0, m_chr_source);
- set_nt_mirroring(PPU_MIRROR_VERT);
-}
-
-void nes_novel2_device::device_start()
-{
- common_start();
-}
-
-void nes_novel2_device::pcb_reset()
-{
- m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
- prg32(0);
- chr8(0, m_chr_source);
-}
-
void nes_studyngame_device::device_start()
{
common_start();
@@ -737,18 +700,6 @@ void nes_bmc_gka_device::pcb_reset()
m_reg[0] = m_reg[1] = 0;
}
-void nes_bmc_gkb_device::device_start()
-{
- common_start();
-}
-
-void nes_bmc_gkb_device::pcb_reset()
-{
- m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
- prg32(0);
- chr8(0, m_chr_source);
-}
-
void nes_bmc_k3036_device::pcb_reset()
{
prg16_89ab(0);
@@ -1417,39 +1368,6 @@ void nes_t262_device::write_h(offs_t offset, u8 data)
/*-------------------------------------------------
- BMC-NOVELDIAMOND and BMC-999999in1
-
- Unknown Bootleg Multigame Board
- Games: I only found 'Novel Diamond 999999-in-1.unf' using
- this mapper (hence the code is used for BMC_NOVELDIAMOND
- board). The code is included here in case a mapper 54
- dump arises.
-
- iNES: mappers 54 and 213
-
- In MESS: Partial Support.
-
- -------------------------------------------------*/
-
-// Are this correct or should they work the same?
-void nes_novel1_device::write_h(offs_t offset, uint8_t data)
-{
- LOG_MMC(("novel1 write_h, offset: %04x, data: %02x\n", offset, data));
-
- prg32(offset & 0x03);
- chr8(offset & 0x07, CHRROM);
-}
-
-void nes_novel2_device::write_h(offs_t offset, uint8_t data)
-{
- LOG_MMC(("novel2 write_h, offset: %04x, data: %02x\n", offset, data));
-
- prg32(offset >> 1);
- chr8(offset >> 3, CHRROM);
-}
-
-/*-------------------------------------------------
-
Board UNL-STUDYNGAME
Games: Study n Game 32 in 1
@@ -1810,23 +1728,32 @@ void nes_bmc_gka_device::write_h(offs_t offset, u8 data)
Board BMC-GKB
Unknown Bootleg Multigame Board
- Games: 68 in 1, 73 in 1, 98 in 1
+ Games: 68 in 1, 73 in 1, 98 in 1, and many others
iNES: mapper 58
- In MESS: Supported.
+ In MAME: Supported.
+
+ TODO: Investigate why Jewel on mc_wq55 crashes after
+ its title screen. It further invokes write_h, causing
+ bank switching (and these games are all NROM/CNROM so
+ they should never switch PRG once the menu loads them),
+ but ignoring those writes doesn't fix the problem. Is
+ the game non-working on hardware? A bad dump?
-------------------------------------------------*/
-void nes_bmc_gkb_device::write_h(offs_t offset, uint8_t data)
+void nes_bmc_gkb_device::write_h(offs_t offset, u8 data)
{
- uint8_t bank = (offset & 0x40) ? 0 : 1;
LOG_MMC(("bmc_gkb write_h, offset: %04x, data: %02x\n", offset, data));
- prg16_89ab(offset & ~bank);
- prg16_cdef(offset | bank);
- chr8(offset >> 3, m_chr_source);
- set_nt_mirroring(BIT(data, 7) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
+ u8 bank = offset & 0x07;
+ u8 mode = !BIT(offset, 6);
+ prg16_89ab(bank & ~mode);
+ prg16_cdef(bank | mode);
+
+ chr8((offset >> 3) & 0x07, CHRROM);
+ set_nt_mirroring(BIT(offset, 7) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
}
/*-------------------------------------------------
@@ -2406,10 +2333,10 @@ void nes_bmc_20in1_device::write_h(offs_t offset, u8 data)
/*-------------------------------------------------
- BMC-21IN1
+ BMC-21IN1, BMC-NOVELDIAMOND
Unknown Bootleg Multigame Board
- Games: 8 in 1, 21 in 1
+ Games: 8 in 1, 21 in 1, 9999999 in 1
iNES: mapper 201
@@ -2422,7 +2349,7 @@ void nes_bmc_21in1_device::write_h(offs_t offset, u8 data)
LOG_MMC(("bmc_21in1 write_h, offset: %04x, data: %02x\n", offset, data));
prg32(offset & 0x03);
- chr8(offset & 0x03, CHRROM);
+ chr8(offset & 0x07, CHRROM);
}
/*-------------------------------------------------
diff --git a/src/devices/bus/nes/multigame.h b/src/devices/bus/nes/multigame.h
index 51cfb3be3d9..5d7f2838988 100644
--- a/src/devices/bus/nes/multigame.h
+++ b/src/devices/bus/nes/multigame.h
@@ -176,42 +176,6 @@ private:
};
-// ======================> nes_novel1_device
-
-class nes_novel1_device : public nes_nrom_device
-{
-public:
- // construction/destruction
- nes_novel1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void write_h(offs_t offset, uint8_t data) override;
-
- virtual void pcb_reset() override;
-
-protected:
- // device-level overrides
- virtual void device_start() override;
-};
-
-
-// ======================> nes_novel2_device
-
-class nes_novel2_device : public nes_nrom_device
-{
-public:
- // construction/destruction
- nes_novel2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void write_h(offs_t offset, uint8_t data) override;
-
- virtual void pcb_reset() override;
-
-protected:
- // device-level overrides
- virtual void device_start() override;
-};
-
-
// ======================> nes_studyngame_device
class nes_studyngame_device : public nes_nrom_device
@@ -449,15 +413,9 @@ class nes_bmc_gkb_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_bmc_gkb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void write_h(offs_t offset, uint8_t data) override;
-
- virtual void pcb_reset() override;
+ nes_bmc_gkb_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
-protected:
- // device-level overrides
- virtual void device_start() override;
+ virtual void write_h(offs_t offset, u8 data) override;
};
@@ -1161,8 +1119,6 @@ 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)
-DECLARE_DEVICE_TYPE(NES_NOVEL1, nes_novel1_device)
-DECLARE_DEVICE_TYPE(NES_NOVEL2, nes_novel2_device)
DECLARE_DEVICE_TYPE(NES_STUDYNGAME, nes_studyngame_device)
DECLARE_DEVICE_TYPE(NES_SUPERGUN20IN1, nes_sgun20in1_device)
DECLARE_DEVICE_TYPE(NES_VT5201, nes_vt5201_device)
diff --git a/src/devices/bus/nes/nes_carts.cpp b/src/devices/bus/nes/nes_carts.cpp
index e4fd93c2ddb..ac1ee9ef844 100644
--- a/src/devices/bus/nes/nes_carts.cpp
+++ b/src/devices/bus/nes/nes_carts.cpp
@@ -365,8 +365,6 @@ void nes_cart(device_slot_interface &device)
device.option_add_internal("n625092", NES_N625092);
device.option_add_internal("a65as", NES_A65AS);
device.option_add_internal("t262", NES_T262);
- device.option_add_internal("novel1", NES_NOVEL1);
- device.option_add_internal("novel2", NES_NOVEL2); // mapper 213... same as BMC-NOVELDIAMOND9999999IN1 board?
device.option_add_internal("studyngame", NES_STUDYNGAME); // mapper 39
device.option_add_internal("sgun20in1", NES_SUPERGUN20IN1);
device.option_add_internal("bmc_vt5201", NES_VT5201); // mapper 59
diff --git a/src/devices/bus/nes/nes_ines.hxx b/src/devices/bus/nes/nes_ines.hxx
index cd5d373c36e..b98f3ac5284 100644
--- a/src/devices/bus/nes/nes_ines.hxx
+++ b/src/devices/bus/nes/nes_ines.hxx
@@ -86,7 +86,7 @@ static const nes_mmc mmc_list[] =
{ 51, BMC_BALLGAMES_11IN1 },
{ 52, BMC_GOLD_7IN1 },
{ 53, SVISION16_BOARD },
- { 54, BMC_NOVEL1 },
+ { 54, BMC_21IN1 }, // duplicate of mapper 201, though possibly should be "Unused"
{ 55, UNL_MMALEE }, // Genius SMB
{ 56, KAISER_KS202 },
{ 57, BMC_GKA },
@@ -246,7 +246,7 @@ static const nes_mmc mmc_list[] =
{ 210, NAMCOT_175 },
{ 211, JYCOMPANY_B },
{ 212, BMC_SUPERHIK_300IN1 },
- { 213, BMC_NOVEL2 },
+ { 213, BMC_GKB }, // duplicate of mapper 58
{ 214, BMC_SUPERGUN_20IN1 },
{ 215, UNL_8237 }, // and UNL_8237A
{ 216, RCM_GS2015 },
@@ -288,7 +288,7 @@ static const nes_mmc mmc_list[] =
{ 252, WAIXING_SGZ },
// 253 Super 8-in-1 99 King Fighter?? - Unsupported
{ 254, BTL_PIKACHUY2K },
- { 255, BMC_72IN1 },
+ { 255, BMC_72IN1 }, // duplicate of mapper 225
// NES 2.0
// 256 OneBus Famiclones
diff --git a/src/devices/bus/nes/nes_pcb.hxx b/src/devices/bus/nes/nes_pcb.hxx
index e2253dc3321..ae24bc1e7e0 100644
--- a/src/devices/bus/nes/nes_pcb.hxx
+++ b/src/devices/bus/nes/nes_pcb.hxx
@@ -250,8 +250,6 @@ static const nes_pcb pcb_list[] =
{ "n625092", UNL_N625092 },
{ "a65as", BMC_A65AS },
{ "t262", BMC_T262 },
- { "novel1", BMC_NOVEL1 },
- { "novel2", BMC_NOVEL2 }, // mapper 213... same as BMC-NOVELDIAMOND9999999IN1 board?
{ "studyngame", UNL_STUDYNGAME }, // mapper 39
{ "sgun20in1", BMC_SUPERGUN_20IN1 },
{ "bmc_vt5201", BMC_VT5201 }, // mapper 59
diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h
index c9cb6873549..ac5a12889b2 100644
--- a/src/devices/bus/nes/nes_slot.h
+++ b/src/devices/bus/nes/nes_slot.h
@@ -86,8 +86,8 @@ enum
TXC_22110, TXC_22211, TXC_COMMANDOS, TXC_DUMARACING,
TXC_MJBLOCK, TXC_STRIKEW, TXC_TW,
// Multigame Carts
- BMC_64IN1NR, BMC_190IN1, BMC_A65AS, BMC_A88S1, BMC_F15, BMC_GN45,
- BMC_HIK8IN1, BMC_NOVEL1, BMC_NOVEL2, BMC_S24IN1SC03, BMC_T262,
+ BMC_64IN1NR, BMC_190IN1, BMC_A65AS, BMC_A88S1, BMC_F15,
+ BMC_GN45, BMC_HIK8IN1, BMC_S24IN1SC03, BMC_T262,
BMC_WS, BMC_SUPERBIG_7IN1, BMC_SUPERHIK_4IN1, BMC_BALLGAMES_11IN1,
BMC_MARIOPARTY_7IN1, BMC_GOLD_7IN1, BMC_SUPER_700IN1, BMC_FAMILY_4646,
BMC_36IN1, BMC_21IN1, BMC_150IN1, BMC_35IN1, BMC_64IN1,
diff --git a/src/devices/bus/nes/nes_unif.hxx b/src/devices/bus/nes/nes_unif.hxx
index f0ebdfe63e2..55e8319dd4e 100644
--- a/src/devices/bus/nes/nes_unif.hxx
+++ b/src/devices/bus/nes/nes_unif.hxx
@@ -97,7 +97,7 @@ static const unif unif_list[] =
{ "BMC-A65AS", 0, 0, CHRRAM_8, BMC_A65AS},
{ "BMC-GS-2004", 0, 0, CHRRAM_8, RCM_GS2004},
{ "BMC-GS-2013", 0, 0, CHRRAM_8, RCM_GS2013},
- { "BMC-NOVELDIAMOND9999999IN1", 0, 0, CHRRAM_0, BMC_NOVEL1},
+ { "BMC-NOVELDIAMOND9999999IN1", 0, 0, CHRRAM_0, BMC_21IN1},
{ "BMC-SUPER24IN1SC03", 8, 0, CHRRAM_8, BMC_S24IN1SC03},
{ "BMC-SUPERHIK8IN1", 8, 0, CHRRAM_0, BMC_HIK8IN1},
{ "BMC-T-262", 0, 0, CHRRAM_8, BMC_T262},