diff --git a/hash/nes.xml b/hash/nes.xml
index 489387cc8ba..d9a201dda87 100644
--- a/hash/nes.xml
+++ b/hash/nes.xml
@@ -43,7 +43,7 @@ license:CC0
-
+
@@ -799,7 +799,7 @@ license:CC0
-
+
@@ -1131,7 +1131,7 @@ license:CC0
-
+
@@ -1530,7 +1530,7 @@ license:CC0
-
+
@@ -1594,7 +1594,7 @@ license:CC0
-
+
@@ -1633,7 +1633,7 @@ license:CC0
-
+
@@ -1694,7 +1694,7 @@ license:CC0
-
+
@@ -1759,7 +1759,7 @@ license:CC0
-
+
@@ -3117,7 +3117,7 @@ license:CC0
-
+
@@ -3186,7 +3186,7 @@ license:CC0
-
+
@@ -3838,7 +3838,7 @@ license:CC0
-
+
@@ -3922,7 +3922,7 @@ license:CC0
-
+
@@ -3947,7 +3947,7 @@ license:CC0
-
+
@@ -4494,7 +4494,7 @@ license:CC0
1988
Jaleco
-
+
@@ -4625,7 +4625,7 @@ license:CC0
1988
Sunsoft
-
+
@@ -5165,7 +5165,7 @@ license:CC0
-
+
@@ -5785,7 +5785,7 @@ license:CC0
-
+
@@ -5859,7 +5859,7 @@ license:CC0
-
+
@@ -6730,7 +6730,7 @@ license:CC0
-
+
@@ -7071,7 +7071,7 @@ license:CC0
-
+
@@ -7090,7 +7090,7 @@ license:CC0
-
+
@@ -7695,7 +7695,7 @@ license:CC0
-
+
@@ -7850,7 +7850,7 @@ license:CC0
-
+
@@ -7893,7 +7893,7 @@ license:CC0
-
+
@@ -8215,7 +8215,7 @@ license:CC0
-
+
@@ -8426,7 +8426,7 @@ license:CC0
-
+
@@ -8864,7 +8864,7 @@ license:CC0
-
+
@@ -8884,7 +8884,7 @@ license:CC0
-
+
@@ -9199,7 +9199,7 @@ license:CC0
-
+
@@ -9616,7 +9616,7 @@ license:CC0
-
+
@@ -10114,7 +10114,7 @@ license:CC0
-
+
@@ -10962,7 +10962,7 @@ license:CC0
-
+
@@ -11102,7 +11102,7 @@ license:CC0
-
+
@@ -12869,7 +12869,7 @@ license:CC0
-
+
@@ -12909,7 +12909,7 @@ license:CC0
-
+
@@ -13022,7 +13022,7 @@ license:CC0
-
+
@@ -13647,7 +13647,7 @@ license:CC0
-
+
@@ -14756,7 +14756,7 @@ license:CC0
-
+
@@ -14876,7 +14876,7 @@ license:CC0
-
+
@@ -15033,7 +15033,7 @@ license:CC0
-
+
@@ -15111,7 +15111,7 @@ license:CC0
-
+
@@ -15473,7 +15473,7 @@ license:CC0
-
+
@@ -15706,7 +15706,7 @@ license:CC0
-
+
@@ -15988,7 +15988,7 @@ license:CC0
-
+
@@ -16519,7 +16519,7 @@ license:CC0
-
+
@@ -16627,7 +16627,7 @@ license:CC0
-
+
@@ -16791,7 +16791,7 @@ license:CC0
-
+
@@ -17064,7 +17064,7 @@ license:CC0
-
+
@@ -17313,7 +17313,7 @@ license:CC0
-
+
@@ -17451,7 +17451,7 @@ license:CC0
-
+
@@ -17939,7 +17939,7 @@ license:CC0
-
+
@@ -18406,7 +18406,7 @@ license:CC0
-
+
@@ -18993,7 +18993,7 @@ license:CC0
-
+
@@ -19344,7 +19344,7 @@ license:CC0
-
+
@@ -19582,7 +19582,7 @@ license:CC0
-
+
@@ -19666,7 +19666,7 @@ license:CC0
-
+
@@ -19792,7 +19792,7 @@ license:CC0
-
+
@@ -20277,7 +20277,7 @@ license:CC0
-
+
@@ -20922,7 +20922,7 @@ license:CC0
-
+
@@ -21058,7 +21058,7 @@ license:CC0
-
+
@@ -21751,7 +21751,7 @@ license:CC0
-
+
@@ -22683,7 +22683,7 @@ license:CC0
-
+
@@ -23162,7 +23162,7 @@ license:CC0
-
+
@@ -23814,7 +23814,7 @@ license:CC0
-
+
@@ -24316,7 +24316,7 @@ license:CC0
-
+
@@ -24619,7 +24619,7 @@ license:CC0
-
+
@@ -25657,7 +25657,7 @@ license:CC0
-
+
@@ -25717,7 +25717,7 @@ license:CC0
-
+
@@ -25963,7 +25963,7 @@ license:CC0
-
+
@@ -26602,7 +26602,7 @@ license:CC0
-
+
@@ -27059,7 +27059,7 @@ license:CC0
-
+
@@ -27383,7 +27383,7 @@ license:CC0
-
+
@@ -27409,7 +27409,7 @@ license:CC0
-
+
@@ -27636,7 +27636,7 @@ license:CC0
-
+
@@ -28262,7 +28262,7 @@ license:CC0
-
+
@@ -29050,7 +29050,7 @@ license:CC0
-
+
@@ -29373,7 +29373,7 @@ license:CC0
-
+
@@ -29685,7 +29685,7 @@ license:CC0
-
+
@@ -30438,7 +30438,7 @@ license:CC0
-
+
@@ -30892,7 +30892,7 @@ license:CC0
-
+
@@ -31007,7 +31007,7 @@ license:CC0
-
+
@@ -31793,7 +31793,7 @@ license:CC0
-
+
@@ -32482,7 +32482,7 @@ license:CC0
-
+
@@ -32560,7 +32560,7 @@ license:CC0
-
+
@@ -32627,7 +32627,7 @@ license:CC0
-
+
@@ -32651,7 +32651,7 @@ license:CC0
-
+
@@ -32955,7 +32955,7 @@ license:CC0
-
+
@@ -32979,7 +32979,7 @@ license:CC0
-
+
@@ -33260,7 +33260,7 @@ license:CC0
-
+
@@ -33300,7 +33300,7 @@ license:CC0
-
+
@@ -33905,7 +33905,7 @@ license:CC0
-
+
@@ -33969,7 +33969,7 @@ license:CC0
-
+
@@ -34870,7 +34870,7 @@ license:CC0
-
+
@@ -35152,7 +35152,7 @@ license:CC0
-
+
@@ -36461,7 +36461,7 @@ license:CC0
-
+
@@ -36756,7 +36756,7 @@ license:CC0
-
+
@@ -37156,7 +37156,7 @@ license:CC0
-
+
@@ -37414,7 +37414,7 @@ license:CC0
-
+
@@ -37433,7 +37433,7 @@ license:CC0
-
+
@@ -37741,7 +37741,7 @@ license:CC0
-
+
@@ -37884,7 +37884,7 @@ license:CC0
-
+
@@ -38151,7 +38151,7 @@ license:CC0
-
+
@@ -38298,7 +38298,7 @@ license:CC0
-
+
@@ -38898,7 +38898,7 @@ license:CC0
-
+
@@ -40235,7 +40235,7 @@ license:CC0
-
+
@@ -40371,7 +40371,7 @@ license:CC0
-
+
@@ -40467,7 +40467,7 @@ license:CC0
-
+
@@ -40563,7 +40563,7 @@ license:CC0
-
+
@@ -41664,7 +41664,7 @@ license:CC0
-
+
@@ -42831,7 +42831,7 @@ license:CC0
-
+
@@ -43118,7 +43118,7 @@ license:CC0
-
+
@@ -43238,7 +43238,7 @@ license:CC0
-
+
@@ -43649,7 +43649,7 @@ license:CC0
-
+
@@ -43782,7 +43782,7 @@ license:CC0
-
+
@@ -43805,7 +43805,7 @@ license:CC0
-
+
@@ -43975,7 +43975,7 @@ license:CC0
-
+
diff --git a/src/devices/bus/nes/mmc1.cpp b/src/devices/bus/nes/mmc1.cpp
index cb752cb0754..8c8e7bc31bd 100644
--- a/src/devices/bus/nes/mmc1.cpp
+++ b/src/devices/bus/nes/mmc1.cpp
@@ -16,6 +16,9 @@
TODO:
- Combine 2 versions of set_prg in SxROM base class. This means dealing with
variant boards SNROM, SUROM, etc which repurpose bits in the MMC1 regs.
+ - Determine if "MMC1" marked chips, the earliest version, ignores WRAM
+ enable/disable bit like its first revision, MMC1A. Also determine if MMC1C
+ really exists. It's described by kevtris, but it's not in BootGod's DB.
***********************************************************************************************************/
@@ -36,10 +39,8 @@
// constructor
//-------------------------------------------------
-DEFINE_DEVICE_TYPE(NES_SXROM, nes_sxrom_device, "nes_sxrom", "NES Cart SxROM (MMC-1) PCB")
-DEFINE_DEVICE_TYPE(NES_SOROM, nes_sorom_device, "nes_sorom", "NES Cart SOROM (MMC-1) PCB")
-DEFINE_DEVICE_TYPE(NES_SXROM_A, nes_sxrom_a_device, "nes_sxrom_a", "NES Cart SxROM (MMC-1A) PCB")
-DEFINE_DEVICE_TYPE(NES_SOROM_A, nes_sorom_a_device, "nes_sorom_a", "NES Cart SOROM (MMC-1A) PCB")
+DEFINE_DEVICE_TYPE(NES_SXROM, nes_sxrom_device, "nes_sxrom", "NES Cart SxROM (MMC-1) PCB")
+DEFINE_DEVICE_TYPE(NES_SOROM, nes_sorom_device, "nes_sorom", "NES Cart SOROM (MMC-1) PCB")
@@ -58,16 +59,6 @@ nes_sorom_device::nes_sorom_device(const machine_config &mconfig, const char *ta
{
}
-nes_sxrom_a_device::nes_sxrom_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_sxrom_device(mconfig, NES_SXROM_A, tag, owner, clock)
-{
-}
-
-nes_sorom_a_device::nes_sorom_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : nes_sxrom_device(mconfig, NES_SOROM_A, tag, owner, clock)
-{
-}
-
void nes_sxrom_device::device_start()
@@ -86,7 +77,8 @@ void nes_sxrom_device::pcb_reset()
m_latch = 0;
m_count = 0;
m_reg[0] = 0x0f;
- m_reg[1] = m_reg[2] = m_reg[3] = 0;
+ m_reg[1] = m_reg[2] = 0;
+ m_reg[3] = m_mmc1_type == mmc1_type::MMC1C ? 0x10 : 0x00; // WRAM disabled by default on MMC1C
m_reg_write_enable = 1;
set_nt_mirroring(PPU_MIRROR_HORZ);
@@ -94,35 +86,6 @@ void nes_sxrom_device::pcb_reset()
set_prg();
}
-void nes_sorom_device::pcb_reset()
-{
- m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
-
- m_latch = 0;
- m_count = 0;
- m_reg[0] = 0x0f;
- m_reg[1] = m_reg[2] = m_reg[3] = 0;
- m_reg_write_enable = 1;
-
- set_nt_mirroring(PPU_MIRROR_HORZ);
- set_chr();
- set_prg();
-}
-
-void nes_sorom_a_device::pcb_reset()
-{
- m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
-
- m_latch = 0;
- m_count = 0;
- m_reg[0] = 0x0f;
- m_reg[1] = m_reg[2] = m_reg[3] = 0;
- m_reg_write_enable = 1;
-
- set_nt_mirroring(PPU_MIRROR_HORZ);
- set_chr();
- set_prg();
-}
@@ -295,7 +258,7 @@ void nes_sxrom_device::write_m(offs_t offset, uint8_t data)
uint8_t bank = (m_reg[1] >> 2) & 3;
LOG_MMC(("sxrom write_m, offset: %04x, data: %02x\n", offset, data));
- if (!BIT(m_reg[3], 4)) // WRAM enabled
+ if (!BIT(m_reg[3], 4) || m_mmc1_type == mmc1_type::MMC1A) // WRAM enabled
{
if (!m_battery.empty())
m_battery[((bank * 0x2000) + offset) & (m_battery.size() - 1)] = data;
@@ -309,7 +272,7 @@ uint8_t nes_sxrom_device::read_m(offs_t offset)
uint8_t bank = (m_reg[1] >> 2) & 3;
LOG_MMC(("sxrom read_m, offset: %04x\n", offset));
- if (!BIT(m_reg[3], 4)) // WRAM enabled
+ if (!BIT(m_reg[3], 4) || m_mmc1_type == mmc1_type::MMC1A) // WRAM enabled
{
if (!m_battery.empty())
return m_battery[((bank * 0x2000) + offset) & (m_battery.size() - 1)];
@@ -317,7 +280,7 @@ uint8_t nes_sxrom_device::read_m(offs_t offset)
return m_prgram[((bank * 0x2000) + offset) & (m_prgram.size() - 1)];
}
- return get_open_bus(); // open bus
+ return get_open_bus();
}
// SOROM has two RAM banks, the first is not battery backed up, the second is.
@@ -326,7 +289,7 @@ void nes_sorom_device::write_m(offs_t offset, uint8_t data)
uint8_t type = BIT(m_reg[0], 4) ? BIT(m_reg[1], 4) : BIT(m_reg[1], 3);
LOG_MMC(("sorom write_m, offset: %04x, data: %02x\n", offset, data));
- if (!BIT(m_reg[3], 4)) // WRAM enabled
+ if (!BIT(m_reg[3], 4) || m_mmc1_type == mmc1_type::MMC1A) // WRAM enabled
{
if (type)
m_battery[offset & (m_battery.size() - 1)] = data;
@@ -340,7 +303,7 @@ uint8_t nes_sorom_device::read_m(offs_t offset)
uint8_t type = BIT(m_reg[0], 4) ? BIT(m_reg[1], 4) : BIT(m_reg[1], 3);
LOG_MMC(("sorom read_m, offset: %04x\n", offset));
- if (!BIT(m_reg[3], 4)) // WRAM enabled
+ if (!BIT(m_reg[3], 4) || m_mmc1_type == mmc1_type::MMC1A) // WRAM enabled
{
if (type)
return m_battery[offset & (m_battery.size() - 1)];
@@ -348,52 +311,5 @@ uint8_t nes_sorom_device::read_m(offs_t offset)
return m_prgram[offset & (m_prgram.size() - 1)];
}
- return get_open_bus(); // open bus
-}
-
-// MMC1A boards have no wram enable/disable bit
-void nes_sxrom_a_device::write_m(offs_t offset, uint8_t data)
-{
- uint8_t bank = (m_reg[1] >> 2) & 3;
- LOG_MMC(("sxrom_a write_m, offset: %04x, data: %02x\n", offset, data));
-
- if (!m_battery.empty())
- m_battery[((bank * 0x2000) + offset) & (m_battery.size() - 1)] = data;
- if (!m_prgram.empty())
- m_prgram[((bank * 0x2000) + offset) & (m_prgram.size() - 1)] = data;
-}
-
-uint8_t nes_sxrom_a_device::read_m(offs_t offset)
-{
- uint8_t bank = (m_reg[1] >> 2) & 3;
- LOG_MMC(("sxrom_a read_m, offset: %04x\n", offset));
-
- if (!m_battery.empty())
- return m_battery[((bank * 0x2000) + offset) & (m_battery.size() - 1)];
- if (!m_prgram.empty())
- return m_prgram[((bank * 0x2000) + offset) & (m_prgram.size() - 1)];
-
- return get_open_bus(); // open bus
-}
-
-void nes_sorom_a_device::write_m(offs_t offset, uint8_t data)
-{
- uint8_t type = BIT(m_reg[0], 4) ? BIT(m_reg[1], 4) : BIT(m_reg[1], 3);
- LOG_MMC(("sorom_a write_m, offset: %04x, data: %02x\n", offset, data));
-
- if (type)
- m_battery[offset & (m_battery.size() - 1)] = data;
- else
- m_prgram[offset & (m_prgram.size() - 1)] = data;
-}
-
-uint8_t nes_sorom_a_device::read_m(offs_t offset)
-{
- uint8_t type = BIT(m_reg[0], 4) ? BIT(m_reg[1], 4) : BIT(m_reg[1], 3);
- LOG_MMC(("sorom_a read_m, offset: %04x\n", offset));
-
- if (type)
- return m_battery[offset & (m_battery.size() - 1)];
- else
- return m_prgram[offset & (m_prgram.size() - 1)];
+ return get_open_bus();
}
diff --git a/src/devices/bus/nes/mmc1.h b/src/devices/bus/nes/mmc1.h
index 2cd0a8ec256..dbf234f734f 100644
--- a/src/devices/bus/nes/mmc1.h
+++ b/src/devices/bus/nes/mmc1.h
@@ -51,37 +51,11 @@ public:
virtual uint8_t read_m(offs_t offset) override;
virtual void write_m(offs_t offset, uint8_t data) override;
-
- virtual void pcb_reset() override;
-};
-
-class nes_sxrom_a_device : public nes_sxrom_device
-{
-public:
- // construction/destruction
- nes_sxrom_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual uint8_t read_m(offs_t offset) override;
- virtual void write_m(offs_t offset, uint8_t data) override;
-};
-
-class nes_sorom_a_device : public nes_sxrom_device
-{
-public:
- // construction/destruction
- nes_sorom_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual uint8_t read_m(offs_t offset) override;
- virtual void write_m(offs_t offset, uint8_t data) override;
-
- virtual void pcb_reset() override;
};
// device type definition
-DECLARE_DEVICE_TYPE(NES_SXROM, nes_sxrom_device)
-DECLARE_DEVICE_TYPE(NES_SOROM, nes_sorom_device)
-DECLARE_DEVICE_TYPE(NES_SXROM_A, nes_sxrom_a_device)
-DECLARE_DEVICE_TYPE(NES_SOROM_A, nes_sorom_a_device)
+DECLARE_DEVICE_TYPE(NES_SXROM, nes_sxrom_device)
+DECLARE_DEVICE_TYPE(NES_SOROM, nes_sorom_device)
#endif // MAME_BUS_NES_MMC1_H
diff --git a/src/devices/bus/nes/nes_carts.cpp b/src/devices/bus/nes/nes_carts.cpp
index e45b4cbc7f4..e7eab6a1166 100644
--- a/src/devices/bus/nes/nes_carts.cpp
+++ b/src/devices/bus/nes/nes_carts.cpp
@@ -101,8 +101,6 @@ void nes_cart(device_slot_interface &device)
// SxROM
device.option_add_internal("sxrom", NES_SXROM);
device.option_add_internal("sorom", NES_SOROM);
- device.option_add_internal("sxrom_a", NES_SXROM_A); // in MMC1-A PRG RAM is always enabled
- device.option_add_internal("sorom_a", NES_SOROM_A); // in MMC1-A PRG RAM is always enabled
// TxROM
device.option_add_internal("txrom", NES_TXROM);
// HKROM
diff --git a/src/devices/bus/nes/nes_ines.hxx b/src/devices/bus/nes/nes_ines.hxx
index 2bbea2571d4..9de292f5225 100644
--- a/src/devices/bus/nes/nes_ines.hxx
+++ b/src/devices/bus/nes/nes_ines.hxx
@@ -188,7 +188,7 @@ static const nes_mmc mmc_list[] =
{ 152, DIS_74X161X161X32 },
{ 153, BANDAI_LZ93 },
{ 154, NAMCOT_34X3 },
- { 155, STD_SXROM_A }, // diff compared to MMC1 concern WRAM
+ { 155, STD_SXROM }, // same as mapper 1 but forces the use of MMC1A
{ 156, OPENCORP_DAOU306 },
{ 157, BANDAI_DATACH }, // Datach Reader games -> must go in the Datach subslot
{ 158, TENGEN_800037 },
@@ -651,10 +651,8 @@ void nes_cart_slot_device::call_load_ines()
// handle submappers
if (submapper)
{
- // 001: MMC1
- if (mapper == 1 && submapper == 3)
- pcb_id = STD_SXROM_A;
- else if (mapper == 1 && submapper == 5)
+ // 001: MMC1 (other submappers are deprecated)
+ if (mapper == 1 && submapper == 5)
logerror("Unimplemented NES 2.0 submapper: SEROM/SHROM/SH1ROM.\n");
// 002, 003, 007: UxROM, CNROM, AxROM
else if (mapper == 2 && submapper == 2)
@@ -780,6 +778,11 @@ void nes_cart_slot_device::call_load_ines()
}
break;
+ case STD_SXROM:
+ if (mapper == 155)
+ m_cart->set_mmc1_type(device_nes_cart_interface::mmc1_type::MMC1A);
+ break;
+
case NOCASH_NOCHR:
// this mapper uses mirroring flags differently
m_cart->set_four_screen_vram(false);
@@ -1155,10 +1158,8 @@ const char * nes_cart_slot_device::get_default_card_ines(get_default_card_softwa
// handle submappers
if (submapper)
{
- // 001: MMC1
- if (mapper == 1 && submapper == 3)
- pcb_id = STD_SXROM_A;
- else if (mapper == 1 && submapper == 5)
+ // 001: MMC1 (other submappers are deprecated)
+ if (mapper == 1 && submapper == 5)
logerror("Unimplemented NES 2.0 submapper: SEROM/SHROM/SH1ROM.\n");
// 021, 023, 025: VRC4 / VRC2
else if (mapper == 21 || mapper == 23 || mapper == 25)
diff --git a/src/devices/bus/nes/nes_pcb.hxx b/src/devices/bus/nes/nes_pcb.hxx
index a6909062ffe..abf0dfc1aae 100644
--- a/src/devices/bus/nes/nes_pcb.hxx
+++ b/src/devices/bus/nes/nes_pcb.hxx
@@ -32,8 +32,6 @@ static const nes_pcb pcb_list[] =
{ "un1rom", STD_UN1ROM },
{ "sxrom", STD_SXROM },
{ "sorom", STD_SOROM },
- { "sxrom_a", STD_SXROM_A },
- { "sorom_a", STD_SOROM_A },
{ "txrom", STD_TXROM },
{ "hkrom", STD_HKROM },
{ "tqrom", STD_TQROM },
@@ -628,6 +626,24 @@ void nes_cart_slot_device::call_load_pcb()
// osd_printf_error("VRC-6, pin9: A%d, pin10: A%d\n", nes_cart_get_line(get_feature("vrc6-pin9"), nes_cart_get_line(get_feature("vrc6-pin10"));
}
+ if (m_pcb_id == STD_SXROM || m_pcb_id == STD_SOROM)
+ {
+ if (get_feature("mmc1_type") != nullptr)
+ {
+ using mmc1_type = device_nes_cart_interface::mmc1_type;
+
+ const char *type = get_feature("mmc1_type");
+ if (!strcmp(type, "MMC1"))
+ m_cart->set_mmc1_type(mmc1_type::MMC1);
+ else if (!strcmp(type, "MMC1A"))
+ m_cart->set_mmc1_type(mmc1_type::MMC1A);
+ else if (!strncmp(type, "MMC1B", 5)) // common prefix of several variants
+ m_cart->set_mmc1_type(mmc1_type::MMC1B);
+ else if (!strcmp(type, "MMC1C"))
+ m_cart->set_mmc1_type(mmc1_type::MMC1C);
+ }
+ }
+
if (m_pcb_id == STD_HKROM || m_pcb_id == TAITO_X1_017)
mapper_sram_size = m_cart->get_mapper_sram_size();
diff --git a/src/devices/bus/nes/nes_slot.cpp b/src/devices/bus/nes/nes_slot.cpp
index ebaf5ea0406..fef76b520d0 100644
--- a/src/devices/bus/nes/nes_slot.cpp
+++ b/src/devices/bus/nes/nes_slot.cpp
@@ -122,6 +122,7 @@ device_nes_cart_interface::device_nes_cart_interface(const machine_config &mconf
, m_misc_rom_size(0)
, m_ce_mask(0)
, m_ce_state(0)
+ , m_mmc1_type(mmc1_type::MMC1B)
, m_vrc_ls_prg_a(0)
, m_vrc_ls_prg_b(0)
, m_vrc_ls_chr(0)
diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h
index e86d22f3312..8ddb7d15ce9 100644
--- a/src/devices/bus/nes/nes_slot.h
+++ b/src/devices/bus/nes/nes_slot.h
@@ -23,11 +23,10 @@ enum
STD_CNROM, STD_CPROM,
STD_EXROM, STD_FXROM, STD_GXROM,
STD_HKROM, STD_PXROM,
- STD_SXROM, STD_TXROM, STD_TXSROM,
- STD_TKROM, STD_TQROM,
+ STD_SXROM, STD_SOROM,
+ STD_TXROM, STD_TXSROM, STD_TKROM, STD_TQROM,
STD_UXROM, STD_UN1ROM, UXROM_CC,
HVC_FAMBASIC, NES_QJ, PAL_ZZ, STD_EVENT,
- STD_SXROM_A, STD_SOROM, STD_SOROM_A,
STD_DISKSYS,
STD_NROM368,//homebrew extension of NROM!
// Discrete components boards (by various manufacturer)
@@ -176,6 +175,8 @@ enum
class device_nes_cart_interface : public device_interface
{
public:
+ enum class mmc1_type : u8 { MMC1, MMC1A, MMC1B, MMC1C };
+
// construction/destruction
virtual ~device_nes_cart_interface();
@@ -214,6 +215,7 @@ public:
void set_trainer(bool val) { m_has_trainer = val; }
void set_ce(int mask, int state) { m_ce_mask = mask; m_ce_state = state; }
+ void set_mmc1_type(mmc1_type val) { m_mmc1_type = val; }
void set_vrc_lines(int PRG_A, int PRG_B, int CHR) { m_vrc_ls_prg_a = PRG_A; m_vrc_ls_prg_b = PRG_B; m_vrc_ls_chr = CHR; }
void set_n163_vol(int vol) { m_n163_vol = vol; }
void set_x1_005_alt(bool val) { m_x1_005_alt_mirroring = val; }
@@ -284,6 +286,7 @@ protected:
int m_ce_mask;
int m_ce_state;
+ mmc1_type m_mmc1_type;
int m_vrc_ls_prg_a;
int m_vrc_ls_prg_b;
int m_vrc_ls_chr;