bus/nes: Added support for a Moero TwinBee FDS conversion. (#8334)

New working software list additions (nes.xml)
-----------------------------------
Moero TwinBee - Cinnamon Hakase o Sukue! (FDS conversion) [famiac]
This commit is contained in:
0kmg 2021-07-24 07:22:26 -08:00 committed by GitHub
parent 42c4027313
commit 7ecad6c475
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 103 additions and 2 deletions

View File

@ -66922,6 +66922,26 @@ Also notice that VRAM & WRAM are probably incorrect for some of these sets, at t
</part>
</software>
<software name="moetwfds">
<description>Moero TwinBee - Cinnamon Hakase o Sukue! (FDS conversion)</description>
<year>19??</year>
<publisher>Whirlwind Manu</publisher>
<info name="serial" value="LG25"/>
<info name="alt_title" value="もえろツインビー シナモン博士を救え!"/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="unl_lg25" />
<dataarea name="prg" size="131072">
<rom name="moetwfds.prg" size="131072" crc="55f24a46" sha1="b995f2fa2e1723a6e14b824a2e9a112668ced9db" status="baddump" />
</dataarea>
<!-- 8k VRAM on cartridge -->
<dataarea name="vram" size="8192">
</dataarea>
<!-- 8k WRAM on cartridge -->
<dataarea name="wram" size="8192">
</dataarea>
</part>
</software>
<software name="montyfds">
<description>Monty no Doki Doki Daidassou (Asia, FDS conversion)</description>
<year>19??</year>

View File

@ -53,6 +53,7 @@ DEFINE_DEVICE_TYPE(NES_PALTHENA, nes_palthena_device, "nes_palthena", "N
DEFINE_DEVICE_TYPE(NES_TOBIDASE, nes_tobidase_device, "nes_tobidase", "NES Cart Tobidase Daisakusen Pirate PCB")
DEFINE_DEVICE_TYPE(NES_DH08, nes_dh08_device, "nes_dh08", "NES Cart DH-08 Pirate PCB")
DEFINE_DEVICE_TYPE(NES_LE05, nes_le05_device, "nes_le05", "NES Cart LE05 Pirate PCB")
DEFINE_DEVICE_TYPE(NES_LG25, nes_lg25_device, "nes_lg25", "NES Cart LG25 Pirate PCB")
DEFINE_DEVICE_TYPE(NES_LH10, nes_lh10_device, "nes_lh10", "NES Cart LH10 Pirate PCB")
DEFINE_DEVICE_TYPE(NES_LH28_LH54, nes_lh28_lh54_device, "nes_lh28_lh54", "NES Cart LH28/LH54 Pirate PCBs")
DEFINE_DEVICE_TYPE(NES_LH31, nes_lh31_device, "nes_lh31", "NES Cart LH31 Pirate PCB")
@ -166,6 +167,11 @@ nes_lh32_device::nes_lh32_device(const machine_config &mconfig, const char *tag,
{
}
nes_lg25_device::nes_lg25_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: nes_nrom_device(mconfig, NES_LG25, tag, owner, clock), m_latch(0)
{
}
nes_lh10_device::nes_lh10_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: nes_nrom_device(mconfig, NES_LH10, tag, owner, clock), m_latch(0)
{
@ -500,6 +506,21 @@ void nes_lh32_device::pcb_reset()
m_latch = 0xf;
}
void nes_lg25_device::device_start()
{
common_start();
save_item(NAME(m_latch));
}
void nes_lg25_device::pcb_reset()
{
prg16_89ab(0);
prg16_cdef(m_prg_chunks - 1); // Last 16K is fixed
chr8(0, CHRRAM);
m_latch = 0;
}
void nes_lh10_device::device_start()
{
common_start();
@ -1524,6 +1545,42 @@ void nes_lh32_device::write_h(offs_t offset, uint8_t data)
m_prgram[offset & 0x1fff] = data;
}
/*-------------------------------------------------
UNL-LG25
Games: Moero TwinBee Cinnamon Hakase o Sukue! (FDS conversion)
In addition to the two swappable 8K PRG banks at
0x8000 and 0xa000, this board has 8K WRAM at 0x6000.
NES 2.0: mapper 557
In MAME: Supported.
-------------------------------------------------*/
void nes_lg25_device::write_h(offs_t offset, u8 data)
{
LOG_MMC(("lg25 write_h, offset: %04x, data: %02x\n", offset, data));
if (BIT(offset, 0))
{
switch (m_latch)
{
case 1:
set_nt_mirroring(BIT(data, 2) ? PPU_MIRROR_VERT : PPU_MIRROR_HORZ);
break;
case 2:
case 3:
prg8_x(m_latch & 1, data & 0x0f);
break;
}
}
else
m_latch = data & 0x03;
}
/*-------------------------------------------------
UNL-LH10

View File

@ -438,6 +438,27 @@ private:
};
// ======================> nes_lg25_device
class nes_lg25_device : public nes_nrom_device
{
public:
// construction/destruction
nes_lg25_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_lh10_device
class nes_lh10_device : public nes_nrom_device
@ -642,6 +663,7 @@ DECLARE_DEVICE_TYPE(NES_PALTHENA, nes_palthena_device)
DECLARE_DEVICE_TYPE(NES_TOBIDASE, nes_tobidase_device)
DECLARE_DEVICE_TYPE(NES_DH08, nes_dh08_device)
DECLARE_DEVICE_TYPE(NES_LE05, nes_le05_device)
DECLARE_DEVICE_TYPE(NES_LG25, nes_lg25_device)
DECLARE_DEVICE_TYPE(NES_LH10, nes_lh10_device)
DECLARE_DEVICE_TYPE(NES_LH28_LH54, nes_lh28_lh54_device)
DECLARE_DEVICE_TYPE(NES_LH31, nes_lh31_device)

View File

@ -310,6 +310,7 @@ void nes_cart(device_slot_interface &device)
device.option_add_internal("unl_2708", NES_2708); // mapper 103
device.option_add_internal("unl_dh08", NES_DH08); // used in Bubble Bobble alt (FDS Conversion);
device.option_add_internal("unl_le05", NES_LE05); // used in ProWres (FDS Conversion);
device.option_add_internal("unl_lg25", NES_LG25); // used in Moero TwinBee (FDS Conversion);
device.option_add_internal("unl_lh10", NES_LH10); // used in Fuuun Shaolin Kyo (FDS Conversion);
device.option_add_internal("unl_lh28_lh54", NES_LH28_LH54); // used in Falsion, Meikyuu Jiin Dababa FDS conversions
device.option_add_internal("unl_lh31", NES_LH31); // used in Bubble Bobble alt FDS conversion

View File

@ -516,7 +516,7 @@ static const nes_mmc mmc_list[] =
{ 554, KAISER_KS7010 }, // Akumajo Dracula FDS conversion
// 555 retroUSB re-release of 1991 Nintendo Campus Challenge
// 556 JY-215 multicart
// { 557, KAISER_KS7xxx or UNL_LG25? }, // Kaiser Moero TwinBee FDS conversion
{ 557, UNL_LG25 }, // Moero TwinBee FDS conversion
// 558 some games on YC-03-09 board (related to mappers 162-164)
// 559...4095 Unused
};

View File

@ -309,6 +309,7 @@ static const nes_pcb pcb_list[] =
{ "unl_2708", UNL_2708 },
{ "unl_dh08", UNL_DH08 },
{ "unl_le05", UNL_LE05 },
{ "unl_lg25", UNL_LG25 },
{ "unl_lh10", UNL_LH10 },
{ "unl_lh28_lh54", UNL_LH28_LH54 },
{ "unl_lh31", UNL_LH31 },

View File

@ -119,7 +119,7 @@ enum
KAISER_KS7022, KAISER_KS7030, KAISER_KS7031, KAISER_KS7032,
KAISER_KS7037, KAISER_KS7057, KAISER_KS7058,
// Whirlwind Manu
UNL_DH08, UNL_LE05, UNL_LH10, UNL_LH28_LH54,
UNL_DH08, UNL_LE05, UNL_LG25, UNL_LH10, UNL_LH28_LH54,
UNL_LH31, UNL_LH32, UNL_LH51, UNL_LH53,
/* Misc: these are needed to convert mappers to boards, I will sort them later */
OPENCORP_DAOU306, HES_BOARD, SVISION16_BOARD, RUMBLESTATION_BOARD, JYCOMPANY_A, JYCOMPANY_B, JYCOMPANY_C,