66
66
UINT8 m_sndtor3k[ 16 ];
67
67
UINT8 *m_p_n_pcmram;
68
68
UINT8 m_sector_buffer[ 512 ];
69
DECLARE_WRITE32_MEMBER(soundr3k_w);
70
DECLARE_READ32_MEMBER(soundr3k_r);
71
DECLARE_WRITE32_MEMBER(mb89371_w);
72
DECLARE_READ32_MEMBER(mb89371_r);
73
DECLARE_WRITE32_MEMBER(eeprom_w);
74
DECLARE_WRITE32_MEMBER(pcmram_w);
75
DECLARE_READ32_MEMBER(pcmram_r);
76
DECLARE_READ16_MEMBER(sndcomm68k_r);
77
DECLARE_WRITE16_MEMBER(sndcomm68k_w);
78
DECLARE_READ16_MEMBER(tms57002_data_word_r);
79
DECLARE_WRITE16_MEMBER(tms57002_data_word_w);
80
DECLARE_READ16_MEMBER(tms57002_status_word_r);
81
DECLARE_WRITE16_MEMBER(tms57002_control_word_w);
73
static WRITE32_HANDLER( soundr3k_w )
86
WRITE32_MEMBER(konamigq_state::soundr3k_w)
75
konamigq_state *state = space->machine().driver_data<konamigq_state>();
77
90
if( ACCESSING_BITS_16_31 )
79
state->m_sndto000[ ( offset << 1 ) + 1 ] = data >> 16;
92
m_sndto000[ ( offset << 1 ) + 1 ] = data >> 16;
82
cputag_set_input_line(space->machine(), "soundcpu", 1, HOLD_LINE );
95
cputag_set_input_line(machine(), "soundcpu", 1, HOLD_LINE );
85
98
if( ACCESSING_BITS_0_15 )
87
state->m_sndto000[ offset << 1 ] = data;
100
m_sndto000[ offset << 1 ] = data;
91
static READ32_HANDLER( soundr3k_r )
104
READ32_MEMBER(konamigq_state::soundr3k_r)
93
konamigq_state *state = space->machine().driver_data<konamigq_state>();
96
data = ( state->m_sndtor3k[ ( offset << 1 ) + 1 ] << 16 ) | state->m_sndtor3k[ offset << 1 ];
109
data = ( m_sndtor3k[ ( offset << 1 ) + 1 ] << 16 ) | m_sndtor3k[ offset << 1 ];
98
111
/* hack to help the main program start up */
129
142
0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
132
static WRITE32_HANDLER( eeprom_w )
145
WRITE32_MEMBER(konamigq_state::eeprom_w)
134
input_port_write(space->machine(), "EEPROMOUT", data & 0x07, 0xff);
135
cputag_set_input_line(space->machine(), "soundcpu", INPUT_LINE_RESET, ( data & 0x40 ) ? CLEAR_LINE : ASSERT_LINE );
147
ioport("EEPROMOUT")->write(data & 0x07, 0xff);
148
cputag_set_input_line(machine(), "soundcpu", INPUT_LINE_RESET, ( data & 0x40 ) ? CLEAR_LINE : ASSERT_LINE );
141
static WRITE32_HANDLER( pcmram_w )
154
WRITE32_MEMBER(konamigq_state::pcmram_w)
143
konamigq_state *state = space->machine().driver_data<konamigq_state>();
145
158
if( ACCESSING_BITS_0_7 )
147
state->m_p_n_pcmram[ offset << 1 ] = data;
160
m_p_n_pcmram[ offset << 1 ] = data;
149
162
if( ACCESSING_BITS_16_23 )
151
state->m_p_n_pcmram[ ( offset << 1 ) + 1 ] = data >> 16;
164
m_p_n_pcmram[ ( offset << 1 ) + 1 ] = data >> 16;
155
static READ32_HANDLER( pcmram_r )
168
READ32_MEMBER(konamigq_state::pcmram_r)
157
konamigq_state *state = space->machine().driver_data<konamigq_state>();
159
return ( state->m_p_n_pcmram[ ( offset << 1 ) + 1 ] << 16 ) | state->m_p_n_pcmram[ offset << 1 ];
172
return ( m_p_n_pcmram[ ( offset << 1 ) + 1 ] << 16 ) | m_p_n_pcmram[ offset << 1 ];
164
static ADDRESS_MAP_START( konamigq_map, AS_PROGRAM, 32 )
177
static ADDRESS_MAP_START( konamigq_map, AS_PROGRAM, 32, konamigq_state )
165
178
AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("share1") /* ram */
166
AM_RANGE(0x1f000000, 0x1f00001f) AM_READWRITE(am53cf96_r, am53cf96_w)
179
AM_RANGE(0x1f000000, 0x1f00001f) AM_READWRITE_LEGACY(am53cf96_r, am53cf96_w)
167
180
AM_RANGE(0x1f100000, 0x1f10000f) AM_WRITE(soundr3k_w)
168
181
AM_RANGE(0x1f100010, 0x1f10001f) AM_READ(soundr3k_r)
169
182
AM_RANGE(0x1f180000, 0x1f180003) AM_WRITE(eeprom_w)
194
static READ16_HANDLER( dual539_r )
199
if( ACCESSING_BITS_0_7 )
201
data |= k054539_r( space->machine().device("konami2"), offset );
203
if( ACCESSING_BITS_8_15 )
205
data |= k054539_r( space->machine().device("konami1"), offset ) << 8;
210
static WRITE16_HANDLER( dual539_w )
212
if( ACCESSING_BITS_0_7 )
214
k054539_w( space->machine().device("konami2"), offset, data );
216
if( ACCESSING_BITS_8_15 )
218
k054539_w( space->machine().device("konami1"), offset, data >> 8 );
222
static READ16_HANDLER( sndcomm68k_r )
224
konamigq_state *state = space->machine().driver_data<konamigq_state>();
226
return state->m_sndto000[ offset ];
229
static WRITE16_HANDLER( sndcomm68k_w )
231
konamigq_state *state = space->machine().driver_data<konamigq_state>();
233
state->m_sndtor3k[ offset ] = data;
236
static READ16_HANDLER(tms57002_data_word_r)
241
static WRITE16_HANDLER(tms57002_data_word_w)
245
static READ16_HANDLER(tms57002_status_word_r)
250
static WRITE16_HANDLER(tms57002_control_word_w)
207
READ16_MEMBER(konamigq_state::sndcomm68k_r)
211
return m_sndto000[ offset ];
214
WRITE16_MEMBER(konamigq_state::sndcomm68k_w)
218
m_sndtor3k[ offset ] = data;
221
READ16_MEMBER(konamigq_state::tms57002_data_word_r)
226
WRITE16_MEMBER(konamigq_state::tms57002_data_word_w)
230
READ16_MEMBER(konamigq_state::tms57002_status_word_r)
235
WRITE16_MEMBER(konamigq_state::tms57002_control_word_w)
254
239
/* 68000 memory handling */
255
static ADDRESS_MAP_START( konamigq_sound_map, AS_PROGRAM, 16 )
240
static ADDRESS_MAP_START( konamigq_sound_map, AS_PROGRAM, 16, konamigq_state )
256
241
AM_RANGE(0x000000, 0x07ffff) AM_ROM
257
242
AM_RANGE(0x100000, 0x10ffff) AM_RAM
258
AM_RANGE(0x200000, 0x2004ff) AM_READWRITE(dual539_r,dual539_w)
243
AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("konami1", k054539_device, read, write, 0xff00)
244
AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("konami2", k054539_device, read, write, 0x00ff)
259
245
AM_RANGE(0x300000, 0x300001) AM_READWRITE(tms57002_data_word_r,tms57002_data_word_w)
260
246
AM_RANGE(0x400000, 0x40000f) AM_WRITE(sndcomm68k_w)
261
247
AM_RANGE(0x400010, 0x40001f) AM_READ(sndcomm68k_r)
384
370
/* sound hardware */
385
371
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
387
MCFG_SOUND_ADD("konami1", K054539, 48000)
388
MCFG_SOUND_CONFIG(k054539_config)
373
MCFG_K054539_ADD("konami1", 48000, k054539_config)
389
374
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
390
375
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
392
MCFG_SOUND_ADD("konami2", K054539, 48000)
393
MCFG_SOUND_CONFIG(k054539_config)
377
MCFG_K054539_ADD("konami2", 48000, k054539_config)
394
378
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
395
379
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
396
380
MACHINE_CONFIG_END