Hooked up speech in "Harem". Added save-states. Verified colors [Luca Elia, tirino73]

This commit is contained in:
Luca Elia 2015-07-18 18:13:49 +02:00
parent 6deaf918ab
commit e58ecc14fe
4 changed files with 30 additions and 16 deletions

View File

@ -162,15 +162,18 @@ void scramble_state::sh_init()
}
// Harem
// Harem (same as scorpion)
WRITE8_MEMBER( scramble_state::harem_portA_w )
READ8_MEMBER(scramble_state::harem_digitalker_intr_r)
{
// Speech?
return m_digitalker->digitalker_0_intr_r();
}
WRITE8_MEMBER( scramble_state::harem_portB_w )
WRITE8_MEMBER(scramble_state::harem_digitalker_control_w)
{
// Speech?
m_digitalker->digitalker_0_cs_w (data & 1 ? ASSERT_LINE : CLEAR_LINE);
m_digitalker->digitalker_0_cms_w(data & 2 ? ASSERT_LINE : CLEAR_LINE);
m_digitalker->digitalker_0_wr_w (data & 4 ? ASSERT_LINE : CLEAR_LINE);
}

View File

@ -412,7 +412,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( harem_sound_map, AS_PROGRAM, 8, scramble_state )
AM_RANGE(0x0000, 0x2fff) AM_ROM
AM_RANGE(0x6000, 0x6000) AM_READNOP
AM_RANGE(0x6000, 0x6000) AM_READ(harem_digitalker_intr_r)
AM_RANGE(0x8000, 0x83ff) AM_RAM
AM_RANGE(0xa000, 0xafff) AM_WRITE(scramble_filter_w)
ADDRESS_MAP_END
@ -420,7 +420,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( harem_sound_io_map, AS_IO, 8, scramble_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
// ports->speech?:
// ports->speech:
AM_RANGE(0x04, 0x04) AM_DEVWRITE("8910.3", ay8910_device, address_w)
AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("8910.3", ay8910_device, data_r, data_w)
// same as scramble:
@ -1688,11 +1688,14 @@ static MACHINE_CONFIG_DERIVED( harem, scramble )
MCFG_VIDEO_START_OVERRIDE(scramble_state,harem)
/* sound hardware */
/* extra AY8910 with I/O ports */
MCFG_SOUND_ADD("8910.3", AY8910, 14318000/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.16)
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(scramble_state, harem_portA_w)) // Port A write
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(scramble_state, harem_portB_w)) // Port B write
MCFG_AY8910_PORT_A_WRITE_CB(DEVWRITE8("digitalker", digitalker_device, digitalker_data_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(scramble_state, harem_digitalker_control_w))
MCFG_DIGITALKER_ADD("digitalker", 4000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.16)
MACHINE_CONFIG_END
/***************************************************************************
@ -2218,7 +2221,7 @@ ROM_START( harem ) /* Main PCB version simular to Scorpion (also developed by I.
ROM_LOAD( "harem_sound1.ic12", 0x0000, 0x2000, CRC(b54799dd) SHA1(b6aeb010257cba48a52afd33b4f8031c7d99550c) )
ROM_LOAD( "harem_sound2.ic13", 0x2000, 0x1000, CRC(2d5573a4) SHA1(1fdcd99d89e078509634742b2116a35bb199fe4b) )
ROM_REGION( 0x2000, "unknown", 0 ) // DigiTalker ROM (same exact sound PCB as Scorpion (galdrv.c))
ROM_REGION( 0x2000, "digitalker", 0 ) // DigiTalker ROM (same exact sound PCB as Scorpion (galaxian.c))
ROM_LOAD( "harem_h1+h2.ic25", 0x0000, 0x2000, CRC(279f923a) SHA1(166b1b625997766f0de7cc18af52c42268022fcb) )
ROM_REGION( 0x4000, "gfx1", 0 )
@ -2268,4 +2271,4 @@ GAME( 1983, ad2083, 0, ad2083, ad2083, scramble_state, ad2083,
GAME( 1981, turpins, turtles, turpins, turpins, driver_device, 0, ROT90, "bootleg", "Turpin (bootleg on Scramble hardware)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) // haven't hooked up the sound CPU yet
GAME( 1983, harem, 0, harem, harem, scramble_state, harem, ROT90, "I.G.R.", "Harem", GAME_IMPERFECT_COLORS | GAME_IMPERFECT_SOUND ) // colors, missing speech?
GAME( 1983, harem, 0, harem, harem, scramble_state, harem, ROT90, "I.G.R.", "Harem", GAME_SUPPORTS_SAVE )

View File

@ -3,6 +3,7 @@
#include "machine/i8255.h"
#include "includes/galaxold.h"
#include "sound/tms5110.h"
#include "sound/digitalk.h"
class scramble_state : public galaxold_state
{
@ -13,7 +14,8 @@ public:
m_ppi8255_0(*this, "ppi8255_0"),
m_ppi8255_1(*this, "ppi8255_1"),
m_tmsprom(*this, "tmsprom"),
m_soundram(*this, "soundram")
m_soundram(*this, "soundram"),
m_digitalker(*this, "digitalker")
{
}
@ -22,6 +24,7 @@ public:
optional_device<i8255_device> m_ppi8255_1;
optional_device<tmsprom_device> m_tmsprom;
optional_shared_ptr<UINT8> m_soundram;
optional_device<digitalker_device> m_digitalker;
UINT8 m_cavelon_bank;
@ -50,12 +53,12 @@ public:
DECLARE_WRITE8_MEMBER(mars_ppi8255_1_w);
DECLARE_WRITE8_MEMBER(ad2083_tms5110_ctrl_w);
DECLARE_WRITE8_MEMBER(harem_portA_w);
DECLARE_WRITE8_MEMBER(harem_portB_w);
// harem
DECLARE_WRITE8_MEMBER(harem_decrypt_bit_w);
DECLARE_WRITE8_MEMBER(harem_decrypt_clk_w);
DECLARE_WRITE8_MEMBER(harem_decrypt_rst_w);
DECLARE_READ8_MEMBER(harem_digitalker_intr_r);
DECLARE_WRITE8_MEMBER(harem_digitalker_control_w);
DECLARE_DRIVER_INIT(cavelon);
DECLARE_DRIVER_INIT(mariner);

View File

@ -675,4 +675,9 @@ DRIVER_INIT_MEMBER(scramble_state,harem)
membank("rombank")->set_base (m_harem_decrypted_data);
membank("rombank_decrypted")->set_base (m_harem_decrypted_opcodes);
save_item(NAME(m_harem_decrypt_mode));
save_item(NAME(m_harem_decrypt_bit));
save_item(NAME(m_harem_decrypt_clk));
save_item(NAME(m_harem_decrypt_count));
}