New systems marked not working

------------------------------
Jin Xiu Zhong Hua [dyq, little0, Guru]

- misc/astrcorp.cpp: dumped EEPROM for speedmst [Siftware]

- skeleton/sterz80.cpp: measured clocks [Guru]
This commit is contained in:
Ivan Vangelista 2024-03-19 13:47:06 +01:00
parent 86cf393104
commit b79289eff7
7 changed files with 133 additions and 22 deletions

View File

@ -228,6 +228,7 @@ const double XTAL::known_xtals[] = {
13'495'200, /* 13.4952_MHz_XTAL Used on Shadow Force pcb and maybe other Technos pcbs? */
13'500'000, /* 13.5_MHz_XTAL Microbee */
13'516'800, /* 13.5168_MHz_XTAL Kontron KDT6 */
13'560'000, /* 13.560_MHz_XTAL Tong Zi Maque */
13'608'000, /* 13.608_MHz_XTAL TeleVideo 910 & 925 */
13'824'000, /* 13.824_MHz_XTAL Robotron PC-1715 display circuit */
13'977'600, /* 13.9776_MHz_XTAL Kaypro II dot clock */

View File

@ -15,7 +15,7 @@ Other: BMC B816140 (CPLD)
TODO:
* Hopper hookup doesn't work properly. MAME counts far more "tickets
dispensed" than the number of coins/tickets the games are suppoed to
dispensed" than the number of coins/tickets the games are supposed to
pay out.
***************************************************************************/

View File

@ -5,6 +5,9 @@ King Of Football (c)1995 BMC
preliminary driver by Tomasz Slanina
TODO: jxzh has bad GFX and needs correct protection handling. For testing, one well-placed soft reset
will make it boot
--
MC68000P10
@ -29,11 +32,13 @@ ft5_v6_c4.u58 /
*/
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "machine/timer.h"
#include "sound/okim6295.h"
#include "sound/ymopl.h"
#include "video/ramdac.h"
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
@ -57,6 +62,7 @@ public:
m_palette(*this, "palette")
{ }
void jxzh(machine_config &config);
void koftball(machine_config &config);
void init_koftball();
@ -80,6 +86,7 @@ private:
template <uint8_t Which> TILE_GET_INFO_MEMBER(get_tile_info);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(interrupt);
void jxzh_mem(address_map &map);
void koftball_mem(address_map &map);
void ramdac_map(address_map &map);
};
@ -170,6 +177,36 @@ void koftball_state::koftball_mem(address_map &map)
map(0x360000, 0x360001).w(FUNC(koftball_state::prot_w));
}
void koftball_state::jxzh_mem(address_map &map)
{
map(0x000000, 0x03ffff).rom();
map(0x200000, 0x20ffff).ram().share(m_main_ram);
map(0x260000, 0x260fff).ram().w(FUNC(koftball_state::videoram_w<0>)).share(m_videoram[0]);
map(0x261000, 0x261fff).ram().w(FUNC(koftball_state::videoram_w<1>)).share(m_videoram[1]);
map(0x262000, 0x26ffff).ram();
map(0x280000, 0x28ffff).ram(); // unused ?
map(0x2a0000, 0x2a001f).nopw();
map(0x2a0000, 0x2a001f).r(FUNC(koftball_state::random_number_r));
map(0x2b0000, 0x2b0003).r(FUNC(koftball_state::random_number_r));
map(0x2d8000, 0x2d8001).r(FUNC(koftball_state::random_number_r));
map(0x2da000, 0x2da003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0xff00);
map(0x2db001, 0x2db001).w("ramdac", FUNC(ramdac_device::index_w));
map(0x2db003, 0x2db003).w("ramdac", FUNC(ramdac_device::pal_w));
map(0x2db005, 0x2db005).w("ramdac", FUNC(ramdac_device::mask_w));
map(0x2dc000, 0x2dc000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
map(0x2f0000, 0x2f0003).portr("INPUTS");
map(0x300000, 0x300001).nopw();
map(0x320000, 0x320001).nopw();
map(0x340000, 0x340001).r(FUNC(koftball_state::prot_r));
map(0x360000, 0x360001).w(FUNC(koftball_state::prot_w));
map(0x380000, 0x380001).w(FUNC(koftball_state::prot_w));
map(0x3a0000, 0x3a0001).w(FUNC(koftball_state::prot_w));
}
void koftball_state::ramdac_map(address_map &map)
{
map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
@ -259,6 +296,13 @@ void koftball_state::koftball(machine_config &config)
oki.add_route(ALL_OUTPUTS, "rspeaker", 0.50);
}
void koftball_state::jxzh(machine_config &config)
{
koftball(config);
m_maincpu->set_addrmap(AS_PROGRAM, &koftball_state::jxzh_mem);
}
ROM_START( koftball )
ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
ROM_LOAD16_BYTE( "ft5_v16_c5.u14", 0x000001, 0x10000, CRC(45c856e3) SHA1(0a25cfc2b09f1bf996f9149ee2a7d0a7e51794b7) )
@ -270,10 +314,72 @@ ROM_START( koftball )
ROM_LOAD16_BYTE( "ft5_v6_c1.u59", 0x40000, 0x20000, CRC(b33a008f) SHA1(c4fd40883fa1c1cbc58f7b342fed753c52f0cf59) )
ROM_LOAD16_BYTE( "ft5_v6_c2.u60", 0x40001, 0x20000, CRC(3dc22223) SHA1(dc74800c51de3b6a7fbf7214a1da1d2f3d2aea84) )
ROM_REGION( 0x040000, "oki", 0 ) // Samples
ROM_LOAD( "ft5_v6_c9.u21", 0x00000, 0x10000, CRC(f6216740) SHA1(3d1c795da2f8093e937107e3848cb96338536faf) )
ROM_END
/*******************************************************************
Jin Xiu Zhong Hua, BMC 1996
Hardware Info by Guru
---------------------
BMC-A-41210
|-------------------------------------------------|
|21.47727MHz 9 AR17961 uPC1242H 1|
| 4 3 2 1 0|
|T518A 6264 7805 W|
| 555 |-----| VOL A|
| 6264 |40817| HM86171 Y|
| |-----| |-|
| 62256 |
| |-----| LM324|-|
| 62256 |PLCC | 3567 |
| |68 | M|
| |-| GAL1 |-----| 3.579545MHz A|
| |6| 5 6116 GAL2 H|
| |8| J|
| |0| SCAP DIP1 O|
| |0| N|
| |0| 6 6116 G|
| |-| DIP2 |
|-------------------------------------------------|
Notes:
68000 - Clock 10.738635MHz [21.47727/2]
AR17961 - Equivalent to OKI M6295 4-Channel ADPCM Voice Synthesis LSI. Clock input 0.976239545MHz [21.47727/22]. Pin 7 HIGH
3567 - Equivalent to Yamaha YM2413 OPLL FM Synthesis Sound Chip. Clock input 3.579545MHz
61256 - 32kB x8-bit SRAM
6264 - 8kB x8-bit SRAM
6116 - 2kB x8-bit SRAM (both backed-up by 5.5V Supercap)
DIP1/2 - 8-position DIP Switch
GAL1/2 - LATTICE GAL16V8B PLD
uPC1242H - NEC uPC1242H Audio Power Amp
LM324 - LM324 Quad Operational Amplifier
555 - 555 Timer (provides master reset)
7805 - LM7805 5V Linear Regulator
HM86171 - HMC HM86171-80 Color Palette RAMDAC
40817 - BMC QFP100 Custom Chip marked 'BMC VDB40817'
PLCC68 - Unknown PLCC68 IC. Surface scratched but likely to be BMC B816140 (CPLD)
T518A - Mitsumi PST518A Master Reset IC (TO92)
SCAP - 5.5V 0.1F Supercap
5/6 - 27C1001 EPROM (main program)
1/2/3/4 - 23C4000 mask ROM (gfx)
9 - 23C2000 mask ROM (OKI samples)
*******************************************************************/
ROM_START( jxzh )
ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code
ROM_LOAD16_BYTE( "bmc_m5k.u14", 0x000001, 0x20000, CRC(43b67d0a) SHA1(f421c71165d79881c208d332416f1c82057f5680) )
ROM_LOAD16_BYTE( "bmc_m6k.u15", 0x000000, 0x20000, CRC(410ee342) SHA1(2b83e0fc2c5f9a2d745755572eba751bfac107f5) )
ROM_REGION( 0x200000, "tiles", 0 )
ROM_LOAD16_BYTE( "bmc_mj9601-3.u61", 0x000000, 0x80000, CRC(b0c66e6f) SHA1(7539178d3bd4c012f0dd2f642e5a02303779109d) )
ROM_LOAD16_BYTE( "bmc_mj9601-4.u58", 0x000001, 0x80000, CRC(04a307f1) SHA1(8a45de790305c3cc4285a91d19b95d696d31bd11) )
ROM_LOAD16_BYTE( "bmc_mj9601-1.u59", 0x100000, 0x80000, CRC(184b8ba8) SHA1(0b84b9540ff72a57982a8f9e107a6d8d9314fdd1) )
ROM_LOAD16_BYTE( "bmc_mj9601-2.u60", 0x100001, 0x80000, CRC(f82e0f34) SHA1(4051c7b24f865cf7fb77eb89dde79cb30bdba7a0) )
ROM_REGION( 0x040000, "oki", 0 ) // Samples
ROM_LOAD( "bmc_mj9601-9.u21", 0x00000, 0x40000, CRC(0ffcae13) SHA1(f8501c7c8a8bebf5da95aa3b275dd514f1014971) )
ROM_END
#if NVRAM_HACK
@ -318,7 +424,8 @@ void koftball_state::init_koftball()
#endif
}
} // Anonymous namespace
} // anonymous namespace
GAME( 1995, koftball, 0, koftball, koftball, koftball_state, init_koftball, ROT0, "BMC", "King of Football", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1995, koftball, 0, koftball, koftball, koftball_state, init_koftball, ROT0, "BMC", "King of Football", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1996, jxzh, 0, jxzh, koftball, koftball_state, empty_init, ROT0, "BMC", "Jin Xiu Zhong Hua", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )

View File

@ -2609,12 +2609,12 @@ void igs017_state::mgdh_mux_map(address_map &map)
u8 igs017_state::sdmg2p_keys_r()
{
u8 ret = 0xff;
if (!BIT(m_input_select, 2)) ret &= bitswap<8>(m_io_key[0]->read(), 5, 4, 3, 2, 1, 0, 7, 6);
if (!BIT(m_input_select, 3)) ret &= bitswap<8>(m_io_key[1]->read(), 5, 4, 3, 2, 1, 0, 7, 6);
if (!BIT(m_input_select, 4)) ret &= bitswap<8>(m_io_key[2]->read(), 5, 4, 3, 2, 1, 0, 7, 6);
if (!BIT(m_input_select, 5)) ret &= bitswap<8>(m_io_key[3]->read(), 5, 4, 3, 2, 1, 0, 7, 6);
if (!BIT(m_input_select, 6)) ret &= bitswap<8>(m_io_key[4]->read(), 5, 4, 3, 2, 1, 0, 7, 6);
return ret;
if (!BIT(m_input_select, 2)) ret &= m_io_key[0]->read();
if (!BIT(m_input_select, 3)) ret &= m_io_key[1]->read();
if (!BIT(m_input_select, 4)) ret &= m_io_key[2]->read();
if (!BIT(m_input_select, 5)) ret &= m_io_key[3]->read();
if (!BIT(m_input_select, 6)) ret &= m_io_key[4]->read();
return bitswap<8>(ret, 5, 4, 3, 2, 1, 0, 7, 6);
}
void igs017_state::sdmg2p_map(address_map &map)
@ -5244,7 +5244,7 @@ ROM_END
/***************************************************************************
Manguan Caishen (V103CS)
(Mǎn Guàn Cáishén)
(Mǎnguàn Cáishén)
IGS, 1998
PCB Layout
@ -5304,8 +5304,8 @@ ROM_END
/***************************************************************************
Chaoji Da Manguan II (China, V754C)
滿(Chāojí mǎn guàn)
Chaoji Damanguan II (China, V754C)
滿(Chāojí mǎnguàn)
IGS, 1997
PCB Layout

View File

@ -15004,6 +15004,7 @@ mjmaglmp // (c) 2000 BMC
shendeng // (c) 1998 BMC
@source:bmc/koftball.cpp
jxzh // (c) 1996 BMC
koftball // (c) 1995 BMC
@source:bmc/popobear.cpp

View File

@ -2461,7 +2461,7 @@ ROM_START( speedmst )
ROM_LOAD( "5_speed_master.u44", 0x00000, 0x80000, CRC(5eacf25c) SHA1(affbf8176b6cbc406a281793c0a9c79e7175942d) ) // 27C4000
ROM_REGION16_LE( 0x80, "eeprom", 0 )
ROM_LOAD( "93c46.u9", 0x0000, 0x0080, NO_DUMP )
ROM_LOAD( "93c46.u9", 0x0000, 0x0080, CRC(5e03d141) SHA1(d475bd0509fb977d38f012c4eb1e9cb88c3d130a) )
ROM_REGION16_LE( 0x02, "astro_cpucode", 0 )
ROM_LOAD( "speedmst_cpucode.key", 0x00, 0x02, NO_DUMP )
@ -2487,7 +2487,7 @@ ROM_START( speedmsta )
ROM_LOAD( "5_speed_master.u44", 0x00000, 0x80000, CRC(d2c7025f) SHA1(3337216811c8b81ce72cfdd1ed9eecd4b0622dc7) ) // SLDH, 27C4001
ROM_REGION16_LE( 0x80, "eeprom", 0 )
ROM_LOAD( "93c46.u9", 0x0000, 0x0080, NO_DUMP )
ROM_LOAD( "93c46.u9", 0x0000, 0x0080, BAD_DUMP CRC(5e03d141) SHA1(d475bd0509fb977d38f012c4eb1e9cb88c3d130a) ) // dumped for the D2.01.C set
ROM_REGION16_LE( 0x02, "astro_cpucode", 0 )
ROM_LOAD( "speedmsta_cpucode.key", 0x00, 0x02, NO_DUMP )
@ -2513,7 +2513,7 @@ ROM_START( speedmstb )
ROM_LOAD( "5_speed_master.u44", 0x00000, 0x80000, CRC(d2c7025f) SHA1(3337216811c8b81ce72cfdd1ed9eecd4b0622dc7) ) // 27C040
ROM_REGION16_LE( 0x80, "eeprom", 0 )
ROM_LOAD( "93c46.u9", 0x0000, 0x0080, NO_DUMP )
ROM_LOAD( "93c46.u9", 0x0000, 0x0080, BAD_DUMP CRC(5e03d141) SHA1(d475bd0509fb977d38f012c4eb1e9cb88c3d130a) ) // dumped for the D2.01.C set
ROM_REGION16_LE( 0x02, "astro_cpucode", 0 )
ROM_LOAD( "speedmstb_cpucode.key", 0x00, 0x02, NO_DUMP )

View File

@ -31,9 +31,9 @@ MADE IN TAIWAN 2003
|-| 10WAY |-----| 22WAY |
|---------| |--------------------|
Notes:
Z80 - Zilog Z84C0008 Z80 CPU. Clock (possibly 7.5MHz; TO-DO)
U6295 - OKI M6295. Clock (TO-DO)
62256 - 32kB x8-bit SRAM
Z80 - Zilog Z84C0008 Z80 CPU. Clock 13.560MHz
U6295 - OKI M6295. Clock 1.13MHz [13.560/12]. Pin 7 HIGH.
62256 - 32kB x8-bit SRAM (the one nearest to the Z80 is battery-backed)
BUTTON - Reset? Test?
TLP620-4 - Toshiba TLP620-4 Photocoupler. Package contains 4 driver/receiver pairs.
EMP7256 - Altera Max 7000-Series EPM7256SQC208 Programmable Logic Device
@ -142,14 +142,14 @@ INPUT_PORTS_END
void sterz80_state::tongzi(machine_config &config)
{
// basic machine hardware
Z80(config, m_maincpu, 15'000'000 / 2); // TODO: clock / divisor
Z80(config, m_maincpu, 13.560_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &sterz80_state::program_map);
m_maincpu->set_addrmap(AS_IO, &sterz80_state::io_map);
// m_maincpu->set_vblank_int("screen", FUNC(sterz80_state::irq0_line_hold));
EEPROM_93C46_8BIT(config, "eeprom");
DS12885(config, "rtc", XTAL(32'768)); // TODO: should be DS12B887
DS12885(config, "rtc", 32.768_kHz_XTAL); // TODO: should be DS12B887
// video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); // TODO: verify everything once emulation works
@ -164,7 +164,7 @@ void sterz80_state::tongzi(machine_config &config)
// sound hardware
SPEAKER(config, "mono").front_center();
OKIM6295(config, "oki", 1'000'000, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 1.0); // TODO: clock / divisor and pin 7
OKIM6295(config, "oki", 13.560_MHz_XTAL / 12, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
}
@ -191,6 +191,8 @@ void sterz80_state::init_tongzi()
{
// decrypt main CPU ROM
// TODO
// the encryption seems to be based on address-determined XORs and data bitswaps. At a first glance the XORs seem to be chosen
// by bits 0, 1, 4, 5, 6 and 7 of the address, the data bitswaps by bits 0 and 1 of the address.
// decrypt M6295 ROM
// TODO