New clones marked not working

-----------------------------
Crazy Balls (Bontempi) [Domenico Cervini]
This commit is contained in:
Ivan Vangelista 2024-08-24 15:55:00 +02:00
parent 5402a2cbf7
commit f6226166ce
3 changed files with 50 additions and 14 deletions

View File

@ -164,6 +164,7 @@ public:
void cjsll(machine_config &config); void cjsll(machine_config &config);
void mgcsl(machine_config &config); void mgcsl(machine_config &config);
void init_cjsll();
void init_mgcsl(); void init_mgcsl();
protected: protected:
@ -178,6 +179,8 @@ private:
void cjsll_map(address_map &map); void cjsll_map(address_map &map);
void mgcsl_map(address_map &map); void mgcsl_map(address_map &map);
void decrypt();
}; };
@ -198,7 +201,7 @@ void extension_state::cjsll_map(address_map &map)
map(0x000000, 0x07ffff).rom(); map(0x000000, 0x07ffff).rom();
map(0x600000, 0x603fff).ram(); map(0x600000, 0x603fff).ram();
// TODO: IGS025? Almost same read writes also seem to happen at 0xd40000-0xd40003 // TODO: IGS025?
//map(0x876000, 0x876001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read //map(0x876000, 0x876001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read
//map(0x876002, 0x876003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff); //map(0x876002, 0x876003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
@ -212,7 +215,7 @@ void extension_state::mgcsl_map(address_map &map)
map(0x000000, 0x07ffff).rom(); map(0x000000, 0x07ffff).rom();
map(0x600000, 0x603fff).ram(); map(0x600000, 0x603fff).ram();
// TODO: IGS025? Almost same read writes also seem to happen at 0x130000-0x130003 // TODO: IGS025?
//map(0x893000, 0x893001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read //map(0x893000, 0x893001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read
//map(0x893002, 0x893003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff); //map(0x893002, 0x893003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
@ -224,7 +227,7 @@ void extension_state::mgcsl_map(address_map &map)
TIMER_DEVICE_CALLBACK_MEMBER(extension_state::interrupt) TIMER_DEVICE_CALLBACK_MEMBER(extension_state::interrupt)
{ {
int scanline = param; int const scanline = param;
if (scanline == 240 && m_igs017_igs031->get_irq_enable()) if (scanline == 240 && m_igs017_igs031->get_irq_enable())
m_maincpu->set_input_line(1, HOLD_LINE); m_maincpu->set_input_line(1, HOLD_LINE);
@ -404,8 +407,8 @@ ROM_START( cjsll )
ROM_END ROM_END
// TODO: reduce this monstrosity // TODO: reduce this monstrosity. Still some imperfections?
void extension_state::init_mgcsl() void extension_state::decrypt()
{ {
const int rom_size = memregion("maincpu")->bytes(); const int rom_size = memregion("maincpu")->bytes();
u16 * const rom = (u16 *)memregion("maincpu")->base(); u16 * const rom = (u16 *)memregion("maincpu")->base();
@ -460,6 +463,23 @@ void extension_state::init_mgcsl()
} }
// TODO: tiles don't seem scrambled, sprites to be verified // TODO: tiles don't seem scrambled, sprites to be verified
}
void extension_state::init_cjsll()
{
decrypt();
u16 * const rom = (u16 *)memregion("maincpu")->base();
// game id check
rom[0x3a994 / 2] = 0x4e71;
}
void extension_state::init_mgcsl()
{
decrypt();
u16 * const rom = (u16 *)memregion("maincpu")->base();
// game id check // game id check
rom[0x3a48e / 2] = 0x4e71; rom[0x3a48e / 2] = 0x4e71;
@ -474,4 +494,4 @@ GAME( 1999, cjslh, 0, host, host, host_state, empty_init, ROT0, "IGS", "Cai Jin
// extensions // extensions
GAME( 1999, mgcsl, 0, mgcsl, extension, extension_state, init_mgcsl, ROT0, "IGS", "Manguan Caishen (link version, extension, S110CN)", MACHINE_IS_SKELETON ) GAME( 1999, mgcsl, 0, mgcsl, extension, extension_state, init_mgcsl, ROT0, "IGS", "Manguan Caishen (link version, extension, S110CN)", MACHINE_IS_SKELETON )
GAME( 1999, cjsll, 0, cjsll, extension, extension_state, init_mgcsl, ROT0, "IGS", "Cai Jin Shen Long (link version, extension, S111CN)", MACHINE_IS_SKELETON ) GAME( 1999, cjsll, 0, cjsll, extension, extension_state, init_cjsll, ROT0, "IGS", "Cai Jin Shen Long (link version, extension, S111CN)", MACHINE_IS_SKELETON )

View File

@ -29236,6 +29236,7 @@ cowtippa //
@source:misc/crazybal.cpp @source:misc/crazybal.cpp
crazybal // EGS crazybal // EGS
crazybala // EGS
@source:misc/cromptons.cpp @source:misc/cromptons.cpp
ffruits // ffruits //

View File

@ -9,11 +9,17 @@ http://www.tilt.it/deb/egs-en.html
Entirely TTL. Believed to be the first arcade game to have high score initials entry. Entirely TTL. Believed to be the first arcade game to have high score initials entry.
This was achieved via a keyboard on the control panel: http://www.citylan.it/wiki/images/c/c3/1698_control_panel_%2B_ingame.jpg This was achieved via a keyboard on the control panel: http://www.citylan.it/wiki/images/c/c3/1698_control_panel_%2B_ingame.jpg
crazybal:
main PCB is marked: "EGS 113 [S]" on component side main PCB is marked: "EGS 113 [S]" on component side
sub PCB is marked: "EGS 114 [S]" on component side sub PCB is marked: "EGS 114 [S]" on component side
27.025 OSC on main PCB 27.025 OSC on main PCB
A PCB set is available for tracing. crazybala:
main PCB is marked: "EGS 106" on component side
sub PCB is marked: "EGS 107" on component side
PCB set 113 + 114 is available for tracing.
Schematics are available for PCB set 106 + 107.
*/ */
@ -54,15 +60,12 @@ public:
void crazybal(machine_config &config); void crazybal(machine_config &config);
protected: protected:
// driver_device overrides
virtual void machine_start() override; virtual void machine_start() override;
virtual void machine_reset() override; virtual void machine_reset() override;
virtual void video_start() override; virtual void video_start() override;
private: private:
// devices
required_device<netlist_mame_device> m_maincpu; required_device<netlist_mame_device> m_maincpu;
required_device<fixedfreq_device> m_video; required_device<fixedfreq_device> m_video;
}; };
@ -95,10 +98,10 @@ void crazybal_state::video_start()
void crazybal_state::crazybal(machine_config &config) void crazybal_state::crazybal(machine_config &config)
{ {
/* basic machine hardware */ // basic machine hardware
NETLIST_CPU(config, m_maincpu, netlist::config::DEFAULT_CLOCK()).set_source(netlist_crazybal); NETLIST_CPU(config, m_maincpu, netlist::config::DEFAULT_CLOCK()).set_source(netlist_crazybal);
/* video hardware */ // video hardware
SCREEN(config, "screen", SCREEN_TYPE_RASTER); SCREEN(config, "screen", SCREEN_TYPE_RASTER);
FIXFREQ(config, m_video).set_screen("screen"); FIXFREQ(config, m_video).set_screen("screen");
m_video->set_monitor_clock(MASTER_CLOCK); m_video->set_monitor_clock(MASTER_CLOCK);
@ -109,7 +112,7 @@ void crazybal_state::crazybal(machine_config &config)
} }
ROM_START( crazybal ) ROM_START( crazybal ) // EGS 113 + EGS 114 PCBs
ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 ) ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 )
ROM_REGION( 0x0600, "mainpcb_proms", ROMREGION_ERASE00 ) // all Sn74S287N ROM_REGION( 0x0600, "mainpcb_proms", ROMREGION_ERASE00 ) // all Sn74S287N
@ -124,7 +127,19 @@ ROM_START( crazybal )
ROM_LOAD( "3.12l", 0x000, 0x100, CRC(e2ca8670) SHA1(60bc4be4185c50a9afd3a28d1fb9e8f46c93764a) ) // Sn74S287N ROM_LOAD( "3.12l", 0x000, 0x100, CRC(e2ca8670) SHA1(60bc4be4185c50a9afd3a28d1fb9e8f46c93764a) ) // Sn74S287N
ROM_END ROM_END
ROM_START( crazybala ) // EGS 106 + EGS 107 PCBs (found in a cabinet distributed by Bontempi)
ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 )
ROM_REGION( 0x0340, "mainpcb_proms", ROMREGION_ERASE00 )
ROM_LOAD( "74s287.12c", 0x000, 0x100, CRC(1f05c2df) SHA1(189e90ca29ef043ed1d4640aed3fa472a4e26da8) )
ROM_LOAD( "74s287.12d", 0x100, 0x100, CRC(f1d7a030) SHA1(697cf26dbfbd6207cb1dd2e098d6dba9b0bdbaf3) )
ROM_LOAD( "74s287.13e", 0x200, 0x100, CRC(57280959) SHA1(8162d9868e8367ba4c21712dc275ce4888cfbc70) )
ROM_LOAD( "6331.4g", 0x300, 0x020, CRC(21ee11cc) SHA1(4cdf16665015ee984a300e59c73eb2aa12c13e4e) )
ROM_LOAD( "74s188.6h", 0x320, 0x020, CRC(7b4b2f9f) SHA1(96b4a90e3c51582434e0eca1c3701cc2183dd372) )
ROM_END
} // anonymous namespace } // anonymous namespace
GAME( 1978, crazybal, 0, crazybal, 0, crazybal_state, empty_init, ROT0, "Electronic Games Systems", "Crazy Balls", MACHINE_IS_SKELETON ) GAME( 1978, crazybal, 0, crazybal, 0, crazybal_state, empty_init, ROT0, "Electronic Games Systems / NAT", "Crazy Balls (NAT)", MACHINE_IS_SKELETON )
GAME( 1978, crazybala, crazybal, crazybal, 0, crazybal_state, empty_init, ROT0, "Electronic Games Systems / Bontempi", "Crazy Balls (Bontempi)", MACHINE_IS_SKELETON )