From b6af12a9d40e882cbfc3bb1e052c8e98acae5003 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 13 Jul 2021 18:29:20 +0200 Subject: [PATCH] - chexx.cpp: changed olihockey and clone to MACHINE_IMPERFECT_SOUND since they do produce some (bad) sounds - cointek.cpp: minor update to the preliminary decryption - konamigx.cpp: corrected mtwinbee title --- src/mame/drivers/chexx.cpp | 20 +++++++++++--------- src/mame/drivers/cointek.cpp | 13 ++++++++++--- src/mame/drivers/konamigx.cpp | 2 +- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/mame/drivers/chexx.cpp b/src/mame/drivers/chexx.cpp index 30f3b651632..b40d3e0b6da 100644 --- a/src/mame/drivers/chexx.cpp +++ b/src/mame/drivers/chexx.cpp @@ -87,7 +87,7 @@ appears to run on very similar hardware, with a AY8912 but no Digitalker. #include "chexx.lh" -#define MAIN_CLOCK XTAL(4'000'000) +namespace { class chexx_state : public driver_device { @@ -426,8 +426,7 @@ void chexx_state::update() m_digitalker->digitalker_0_cms_w(CLEAR_LINE); m_digitalker->digitalker_0_cs_w(CLEAR_LINE); - address_space &space = m_maincpu->space(AS_PROGRAM); - m_digitalker->digitalker_data_w(space, 0, sample, 0); + m_digitalker->digitalker_data_w(sample); m_digitalker->digitalker_0_wr_w(ASSERT_LINE); m_digitalker->digitalker_0_wr_w(CLEAR_LINE); @@ -438,11 +437,11 @@ void chexx_state::update() void chexx_state::chexx(machine_config &config) { - M6502(config, m_maincpu, MAIN_CLOCK/2); + M6502(config, m_maincpu, XTAL(4'000'000) / 2); m_maincpu->set_addrmap(AS_PROGRAM, &chexx_state::mem); // via - MOS6522(config, m_via, MAIN_CLOCK/4); + MOS6522(config, m_via, XTAL(4'000'000) / 4); m_via->readpa_handler().set(FUNC(chexx_state::via_a_in)); m_via->readpb_handler().set(FUNC(chexx_state::via_b_in)); @@ -460,7 +459,7 @@ void chexx_state::chexx(machine_config &config) // sound hardware SPEAKER(config, "mono").front_center(); - DIGITALKER(config, m_digitalker, MAIN_CLOCK); + DIGITALKER(config, m_digitalker, XTAL(4'000'000)); m_digitalker->add_route(ALL_OUTPUTS, "mono", 0.16); } @@ -469,7 +468,7 @@ void faceoffh_state::faceoffh(machine_config &config) chexx(config); m_maincpu->set_addrmap(AS_PROGRAM, &faceoffh_state::mem); - AY8910(config, m_aysnd, MAIN_CLOCK/2); + AY8910(config, m_aysnd, XTAL(4'000'000) / 2); m_aysnd->add_route(ALL_OUTPUTS, "mono", 0.30); } @@ -584,7 +583,10 @@ ROM_START( faceoffh ) ROM_FILL( 0xe000, 0x2000, 0xff ) // unpopulated ROM_END +} // Anonymous namespace + + GAME( 1983, chexx83, 0, chexx, chexx83, chexx_state, empty_init, ROT270, "ICE", "Chexx (EM Bubble Hockey, 1983 1.1)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_NO_SOUND ) GAME( 1983, faceoffh, chexx83, faceoffh, chexx83, faceoffh_state, empty_init, ROT270, "SoftLogic (Entertainment Enterprises, Ltd. license)", "Face-Off (EM Bubble Hockey)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND ) -GAME( 1985, olihockey, 0, chexx, chexx83, chexx_state, empty_init, ROT270, "Inor", "Olimpic Hockey (EM Bubble Hockey, set 1)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_NO_SOUND ) -GAME( 1985, olihockeya, olihockey, chexx, chexx83, chexx_state, empty_init, ROT270, "Inor", "Olimpic Hockey (EM Bubble Hockey, set 2)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_NO_SOUND ) +GAME( 1985, olihockey, 0, chexx, chexx83, chexx_state, empty_init, ROT270, "Inor", "Olimpic Hockey (EM Bubble Hockey, set 1)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND ) +GAME( 1985, olihockeya, olihockey, chexx, chexx83, chexx_state, empty_init, ROT270, "Inor", "Olimpic Hockey (EM Bubble Hockey, set 2)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/cointek.cpp b/src/mame/drivers/cointek.cpp index eb18f3b6fb5..b72e93f6dda 100644 --- a/src/mame/drivers/cointek.cpp +++ b/src/mame/drivers/cointek.cpp @@ -20,7 +20,11 @@ The daughter card has a big box on it labelled as follows: Mask Microcomputer CODE NUM -The daughter board is connected to the main board via 40 pin socket +The daughter board is connected to the main board via 40 pin socket. + +TODO: +- decryption is only preliminary. The game puts some strings at 0xc000 and at 0xf800 then stops in a loop reading 0xf810; +- after decryption is completed, everything else. */ #include "emu.h" @@ -64,6 +68,7 @@ void cointek_state::prg_map(address_map &map) { map(0x0000, 0xbfff).rom(); // banking? map(0xc000, 0xc7ff).ram(); + map(0xf800, 0xffff).ram(); } void cointek_state::io_map(address_map &map) @@ -130,6 +135,7 @@ void cointek_state::cointek(machine_config &config) z80_device &audiocpu(Z80(config, "audiocpu", 12_MHz_XTAL / 3)); // divisor guessed audiocpu.set_addrmap(AS_PROGRAM, &cointek_state::audio_prg_map); audiocpu.set_addrmap(AS_IO, &cointek_state::audio_io_map); + audiocpu.set_disable(); // TODO: disabled for now to avoid clogging the error log I8255(config, "ppi1"); I8255(config, "ppi2"); @@ -205,8 +211,9 @@ void cointek_state::init_unkct() { uint8_t *rom = memregion("maincpu")->base(); - for (int i = 0; i < 0x8000; i++) // TODO: Is this all there is to it? Is the second ROM scrambled, too? - rom[i] = bitswap<8>(rom[i], 7, 6, 3, 4, 5, 2, 1, 0); + for (int i = 0; i < 0x10000; i++) // TODO: This is only enough to show some strings, but the encryption is conditional, possibly based on addresses. The second ROM is also conditionally scrambled. + if (!(i & 0x1000)) + rom[i] = bitswap<8>(rom[i], 7, 6, 3, 4, 5, 2, 1, 0); } } // Anonymous namespace diff --git a/src/mame/drivers/konamigx.cpp b/src/mame/drivers/konamigx.cpp index b9ea08309b8..3f6f69aaa27 100644 --- a/src/mame/drivers/konamigx.cpp +++ b/src/mame/drivers/konamigx.cpp @@ -4039,7 +4039,7 @@ GAME( 1994, gokuparo, fantjour, gokuparo, gokuparo, konamigx_state, init_ko GAME( 1994, crzcross, konamigx, gokuparo, puzldama, konamigx_state, init_posthack, ROT0, "Konami", "Crazy Cross (ver EAA)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1994, puzldama, crzcross, gokuparo, puzldama, konamigx_state, init_posthack, ROT0, "Konami", "Taisen Puzzle-dama (ver JAA)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, mtwinbee, konamigx, tbyahhoo, gokuparo, konamigx_state, init_posthack, ROT0, "Konami", "Magical Twin Bee! (ver EAA)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, mtwinbee, konamigx, tbyahhoo, gokuparo, konamigx_state, init_posthack, ROT0, "Konami", "Magical Twin Bee (ver EAA)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, tbyahhoo, mtwinbee, tbyahhoo, gokuparo, konamigx_state, init_posthack, ROT0, "Konami", "Twin Bee Yahhoo! (ver JAA)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, tkmmpzdm, konamigx, konamigx_6bpp, tokkae, konamigx_state, init_konamigx, ROT0, "Konami", "Tokimeki Memorial Taisen Puzzle-dama (ver JAB)", MACHINE_IMPERFECT_GRAPHICS )