nintendo/nes.cpp: Added an RGB capable Famicom clone. (#10200)

New working clones
------------------
Sharp My Computer Terebi C1 [kmg]
This commit is contained in:
0kmg 2022-08-12 07:53:44 -08:00 committed by GitHub
parent 3c411bf0b6
commit 465487cf1d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 21 deletions

View File

@ -44521,26 +44521,6 @@ We should eventually add it to MAME as a separate driver with a NES CPU and a GB
</part>
</software>
<!-- This might be the dump of the bios. Investigate... -->
<software name="myctv">
<description>My Computer TV C1 (Japan)</description>
<year>1983</year>
<publisher>Sharp</publisher>
<info name="alt_title" value="マイコンピュータテレビC1"/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="nrom" />
<feature name="pcb" value="NES-NROM-128" />
<feature name="mirroring" value="horizontal" />
<dataarea name="chr" size="8192">
<rom name="my computer tv c1 (j).chr" size="8192" crc="9cba4524" sha1="2bd833f8049bf7a14ce337c3cde35f2140242a18" offset="00000" status="baddump" />
</dataarea>
<dataarea name="prg" size="32768">
<rom name="my computer tv c1 (j).prg" size="16384" crc="7fd48dad" sha1="08af18a6d42e5ab2a288e347ab1fd4bc52441d71" offset="00000" status="baddump" />
<rom size="16384" offset="0x4000" loadflag="reload" />
</dataarea>
</part>
</software>
<!-- from cah4e3 -->
<software name="kbtrans">
<description>Keyboard Transformer (Rus)</description>

View File

@ -33317,6 +33317,7 @@ dendy2 // Dendy Classic 2 (Russian import of IQ-502 fam
sb486 // Subor/Xiao Ba Wang SB-486
drpcjr // Bung Doctor PC Jr
famicom // Nintendo Family Computer (a.k.a. Famicom)
famitvc1 // Sharp My Computer Terebi C1
famitwin // Sharp Famicom Twin System
fds // Nintendo Family Computer (a.k.a. Famicom) + Disk System add-on
gchinatv // Golden China TV Game Centre (Chinese famiclone)

View File

@ -228,6 +228,39 @@ void nes_state::fds(machine_config &config)
config.device_remove("famibox_list");
}
MACHINE_RESET_MEMBER( nes_state, famitvc1 )
{
// TODO: supposedly the C1 used the cartridge connector audio pins to detect
// the presence of a cart and picks the builtin ROM accordingly. If so, the C1
// should not support Famicom expansion audio chips.
// Reset the mapper variables. Will also mark the char-gen ram as dirty
if (m_cartslot->exists())
{
m_cartslot->pcb_reset();
}
else
{
m_maincpu->space(AS_PROGRAM).install_rom(0x8000, 0x9fff, 0x6000, memregion("canvas_prg")->base());
m_ppu->space(AS_PROGRAM).install_rom(0x0000, 0x1fff, memregion("canvas_chr")->base());
}
m_maincpu->reset();
}
void nes_state::famitvc1(machine_config &config)
{
famicom(config);
MCFG_MACHINE_RESET_OVERRIDE( nes_state, famitvc1 )
PPU_2C03B(config.replace(), m_ppu);
m_ppu->set_cpu_tag(m_maincpu);
m_ppu->int_callback().set_inputline("maincpu", INPUT_LINE_NMI);
m_cartslot->set_must_be_loaded(false);
}
MACHINE_START_MEMBER( nes_state, famitwin )
{
// start the base nes stuff
@ -281,6 +314,17 @@ ROM_START( famicom )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) // Main RAM
ROM_END
ROM_START( famitvc1 )
ROM_REGION( 0x2000, "canvas_prg", 0 )
ROM_LOAD( "ix0402ce.ic109", 0x0000, 0x2000, CRC(96456b13) SHA1(a4dcb3c4f2be5077f0d197e870a26414287ce189) ) // dump needs verified
ROM_REGION( 0x2000, "canvas_chr", 0 )
ROM_LOAD( "ix0403ce.ic110", 0x0000, 0x2000, CRC(9cba4524) SHA1(2bd833f8049bf7a14ce337c3cde35f2140242a18) ) // dump needs verified
ROM_REGION( 0xc0, "ppu:palette", 0 )
ROM_LOAD( "rp2c0x.pal", 0x00, 0xc0, CRC(48de65dc) SHA1(d10acafc8da9ff479c270ec01180cca61efe62f5) )
ROM_END
#define rom_fds rom_famicom
ROM_START( famitwin )
@ -354,7 +398,8 @@ CONS( 198?, m82p, nes, 0, nespal, nes, nes_state, empty_init,
// Famicom hardware
CONS( 1983, famicom, 0, nes, famicom, famicom, nes_state, init_famicom, "Nintendo", "Famicom", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
CONS( 1983, fds, famicom, 0, fds, famicom, nes_state, init_famicom, "Nintendo", "Famicom (w/ Disk System add-on)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
CONS( 1983, famitvc1, famicom, 0, famitvc1, famicom, nes_state, init_famicom, "Sharp", "My Computer Terebi C1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
CONS( 1986, fds, famicom, 0, fds, famicom, nes_state, init_famicom, "Nintendo", "Famicom (w/ Disk System add-on)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
CONS( 1986, famitwin, famicom, 0, famitwin, famicom, nes_state, init_famicom, "Sharp", "Famicom Twin", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
// Clone hardware

View File

@ -79,11 +79,13 @@ public:
DECLARE_MACHINE_START(famitwin);
DECLARE_MACHINE_RESET(fds);
DECLARE_MACHINE_RESET(famitwin);
DECLARE_MACHINE_RESET(famitvc1);
void setup_disk(nes_disksys_device *slot);
void suborkbd(machine_config &config);
void famipalc(machine_config &config);
void famicom(machine_config &config);
void famitvc1(machine_config &config);
void famitwin(machine_config &config);
void nespal(machine_config &config);
void nespalc(machine_config &config);