- 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
This commit is contained in:
Ivan Vangelista 2021-07-13 18:29:20 +02:00
parent d47a1a6892
commit b6af12a9d4
3 changed files with 22 additions and 13 deletions

View File

@ -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 )

View File

@ -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

View File

@ -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 )