mirror of
https://github.com/holub/mame
synced 2025-04-25 09:50:04 +03:00
Modernized Konami 007232 sound device [Osso]
also, removed the chip from bishi_state class, since it seems that the driver does not use this device at all...
This commit is contained in:
parent
cd23c39c2b
commit
4c918f749f
@ -26,43 +26,9 @@ added external port callback, and functions to set the volume of the channels
|
||||
#include "emu.h"
|
||||
#include "k007232.h"
|
||||
|
||||
|
||||
#define KDAC_A_PCM_MAX (2) /* Channels per chip */
|
||||
|
||||
|
||||
struct KDAC_A_PCM
|
||||
{
|
||||
UINT8 vol[KDAC_A_PCM_MAX][2]; /* volume for the left and right channel */
|
||||
UINT32 addr[KDAC_A_PCM_MAX];
|
||||
UINT32 start[KDAC_A_PCM_MAX];
|
||||
UINT32 step[KDAC_A_PCM_MAX];
|
||||
UINT32 bank[KDAC_A_PCM_MAX];
|
||||
int play[KDAC_A_PCM_MAX];
|
||||
|
||||
UINT8 wreg[0x10]; /* write data */
|
||||
UINT8 * pcmbuf[2]; /* Channel A & B pointers */
|
||||
|
||||
UINT32 clock; /* chip clock */
|
||||
UINT32 pcmlimit;
|
||||
|
||||
sound_stream * stream;
|
||||
const k007232_interface *intf;
|
||||
UINT32 fncode[0x200];
|
||||
devcb_resolved_write8 portwritehandler;
|
||||
};
|
||||
|
||||
|
||||
#define BASE_SHIFT (12)
|
||||
|
||||
|
||||
INLINE KDAC_A_PCM *get_safe_token(device_t *device)
|
||||
{
|
||||
assert(device != NULL);
|
||||
assert(device->type() == K007232);
|
||||
return (KDAC_A_PCM *)downcast<k007232_device *>(device)->token();
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
static const int kdac_note[] = {
|
||||
261.63/8, 277.18/8,
|
||||
@ -175,8 +141,81 @@ static const float kdaca_fn[][2] = {
|
||||
#endif
|
||||
|
||||
/*************************************************************/
|
||||
static void KDAC_A_make_fncode( KDAC_A_PCM *info ){
|
||||
int i;
|
||||
|
||||
|
||||
const device_type K007232 = &device_creator<k007232_device>;
|
||||
|
||||
k007232_device::k007232_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, K007232, "K007232", tag, owner, clock),
|
||||
device_sound_interface(mconfig, *this)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_config_complete - perform any
|
||||
// operations now that the configuration is
|
||||
// complete
|
||||
//-------------------------------------------------
|
||||
|
||||
void k007232_device::device_config_complete()
|
||||
{
|
||||
// inherit a copy of the static data
|
||||
const k007232_interface *intf = reinterpret_cast<const k007232_interface *>(static_config());
|
||||
if (intf != NULL)
|
||||
*static_cast<k007232_interface *>(this) = *intf;
|
||||
|
||||
// or initialize to defaults if none provided
|
||||
else
|
||||
{
|
||||
memset(&m_portwritehandler, 0, sizeof(m_portwritehandler));
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void k007232_device::device_start()
|
||||
{
|
||||
/* Set up the chips */
|
||||
m_pcmbuf[0] = *region();
|
||||
m_pcmbuf[1] = *region();
|
||||
m_pcmlimit = region()->bytes();
|
||||
|
||||
m_portwritehandler_func.resolve(m_portwritehandler,*this);
|
||||
|
||||
for (int i = 0; i < KDAC_A_PCM_MAX; i++)
|
||||
{
|
||||
m_addr[i] = 0;
|
||||
m_start[i] = 0;
|
||||
m_step[i] = 0;
|
||||
m_play[i] = 0;
|
||||
m_bank[i] = 0;
|
||||
}
|
||||
m_vol[0][0] = 255; /* channel A output to output A */
|
||||
m_vol[0][1] = 0;
|
||||
m_vol[1][0] = 0;
|
||||
m_vol[1][1] = 255; /* channel B output to output B */
|
||||
|
||||
for (int i = 0; i < 0x10; i++)
|
||||
m_wreg[i] = 0;
|
||||
|
||||
m_stream = machine().sound().stream_alloc(*this, 0 , 2, clock()/128, this);
|
||||
|
||||
KDAC_A_make_fncode();
|
||||
|
||||
save_item(NAME(m_vol));
|
||||
save_item(NAME(m_addr));
|
||||
save_item(NAME(m_start));
|
||||
save_item(NAME(m_step));
|
||||
save_item(NAME(m_bank));
|
||||
save_item(NAME(m_play));
|
||||
save_item(NAME(m_wreg));
|
||||
}
|
||||
|
||||
void k007232_device::KDAC_A_make_fncode()
|
||||
{
|
||||
#if 0
|
||||
int i, j, k;
|
||||
float fn;
|
||||
@ -206,10 +245,12 @@ static void KDAC_A_make_fncode( KDAC_A_PCM *info ){
|
||||
#endif
|
||||
|
||||
#else
|
||||
for( i = 0; i < 0x200; i++ ){
|
||||
int i;
|
||||
for( i = 0; i < 0x200; i++ )
|
||||
{
|
||||
//fncode[i] = (0x200 * 55) / (0x200 - i);
|
||||
info->fncode[i] = (32 << BASE_SHIFT) / (0x200 - i);
|
||||
// info->fncode[i] = ((0x200 * 55.2 / 880) / (0x200 - i));
|
||||
m_fncode[i] = (32 << BASE_SHIFT) / (0x200 - i);
|
||||
// m_fncode[i] = ((0x200 * 55.2 / 880) / (0x200 - i));
|
||||
// = 512 * 55.2 / 220 / (512 - i) = 128 / (512 - i)
|
||||
// logerror("2 : fncode[%04x] = %.2f\n", i, fncode[i] );
|
||||
}
|
||||
@ -218,140 +259,21 @@ static void KDAC_A_make_fncode( KDAC_A_PCM *info ){
|
||||
}
|
||||
|
||||
|
||||
/************************************************/
|
||||
/* Konami PCM update */
|
||||
/************************************************/
|
||||
|
||||
static STREAM_UPDATE( KDAC_A_update )
|
||||
{
|
||||
KDAC_A_PCM *info = (KDAC_A_PCM *)param;
|
||||
int i;
|
||||
|
||||
memset(outputs[0],0,samples * sizeof(*outputs[0]));
|
||||
memset(outputs[1],0,samples * sizeof(*outputs[1]));
|
||||
|
||||
for( i = 0; i < KDAC_A_PCM_MAX; i++ )
|
||||
{
|
||||
if (info->play[i])
|
||||
{
|
||||
int volA,volB,j,out;
|
||||
unsigned int addr, old_addr;
|
||||
//int cen;
|
||||
|
||||
/**** PCM setup ****/
|
||||
addr = info->start[i] + ((info->addr[i]>>BASE_SHIFT)&0x000fffff);
|
||||
volA = info->vol[i][0] * 2;
|
||||
volB = info->vol[i][1] * 2;
|
||||
#if 0
|
||||
cen = (volA + volB) / 2;
|
||||
volA = (volA + cen) < 0x1fe ? (volA + cen) : 0x1fe;
|
||||
volB = (volB + cen) < 0x1fe ? (volB + cen) : 0x1fe;
|
||||
#endif
|
||||
|
||||
for( j = 0; j < samples; j++ )
|
||||
{
|
||||
old_addr = addr;
|
||||
addr = info->start[i] + ((info->addr[i]>>BASE_SHIFT)&0x000fffff);
|
||||
while (old_addr <= addr)
|
||||
{
|
||||
if( (info->pcmbuf[i][old_addr] & 0x80) || old_addr >= info->pcmlimit )
|
||||
{
|
||||
/* end of sample */
|
||||
|
||||
if( info->wreg[0x0d]&(1<<i) )
|
||||
{
|
||||
/* loop to the beginning */
|
||||
info->start[i] =
|
||||
((((unsigned int)info->wreg[i*0x06 + 0x04]<<16)&0x00010000) |
|
||||
(((unsigned int)info->wreg[i*0x06 + 0x03]<< 8)&0x0000ff00) |
|
||||
(((unsigned int)info->wreg[i*0x06 + 0x02] )&0x000000ff) |
|
||||
info->bank[i]);
|
||||
addr = info->start[i];
|
||||
info->addr[i] = 0;
|
||||
old_addr = addr; /* skip loop */
|
||||
}
|
||||
else
|
||||
{
|
||||
/* stop sample */
|
||||
info->play[i] = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
old_addr++;
|
||||
}
|
||||
|
||||
if (info->play[i] == 0)
|
||||
break;
|
||||
|
||||
info->addr[i] += info->step[i];
|
||||
|
||||
out = (info->pcmbuf[i][addr] & 0x7f) - 0x40;
|
||||
|
||||
outputs[0][j] += out * volA;
|
||||
outputs[1][j] += out * volB;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/************************************************/
|
||||
/* Konami PCM start */
|
||||
/************************************************/
|
||||
static DEVICE_START( k007232 )
|
||||
{
|
||||
static const k007232_interface defintrf = { DEVCB_NULL };
|
||||
int i;
|
||||
KDAC_A_PCM *info = get_safe_token(device);
|
||||
|
||||
info->intf = (device->static_config() != NULL) ? (const k007232_interface *)device->static_config() : &defintrf;
|
||||
|
||||
/* Set up the chips */
|
||||
|
||||
info->pcmbuf[0] = *device->region();
|
||||
info->pcmbuf[1] = *device->region();
|
||||
info->pcmlimit = device->region()->bytes();
|
||||
|
||||
info->clock = device->clock();
|
||||
|
||||
info->portwritehandler.resolve(info->intf->portwritehandler,*device);
|
||||
|
||||
for( i = 0; i < KDAC_A_PCM_MAX; i++ )
|
||||
{
|
||||
info->start[i] = 0;
|
||||
info->step[i] = 0;
|
||||
info->play[i] = 0;
|
||||
info->bank[i] = 0;
|
||||
}
|
||||
info->vol[0][0] = 255; /* channel A output to output A */
|
||||
info->vol[0][1] = 0;
|
||||
info->vol[1][0] = 0;
|
||||
info->vol[1][1] = 255; /* channel B output to output B */
|
||||
|
||||
for( i = 0; i < 0x10; i++ ) info->wreg[i] = 0;
|
||||
|
||||
info->stream = device->machine().sound().stream_alloc(*device,0,2,device->clock()/128,info,KDAC_A_update);
|
||||
|
||||
KDAC_A_make_fncode(info);
|
||||
}
|
||||
|
||||
/************************************************/
|
||||
/* Konami PCM write register */
|
||||
/************************************************/
|
||||
WRITE8_DEVICE_HANDLER( k007232_w )
|
||||
WRITE8_MEMBER( k007232_device::write )
|
||||
{
|
||||
KDAC_A_PCM *info = get_safe_token(device);
|
||||
int r = offset;
|
||||
int v = data;
|
||||
|
||||
info->stream->update();
|
||||
m_stream->update();
|
||||
|
||||
info->wreg[r] = v; /* stock write data */
|
||||
m_wreg[r] = v; /* stock write data */
|
||||
|
||||
if (r == 0x0c){
|
||||
/* external port, usually volume control */
|
||||
if (!info->portwritehandler.isnull()) info->portwritehandler(0,v);
|
||||
if (!m_portwritehandler_func.isnull()) m_portwritehandler_func(0,v);
|
||||
return;
|
||||
}
|
||||
else if( r == 0x0d ){
|
||||
@ -372,13 +294,13 @@ WRITE8_DEVICE_HANDLER( k007232_w )
|
||||
case 0x01:
|
||||
{
|
||||
/**** address step ****/
|
||||
int idx = (((((unsigned int)info->wreg[reg_port*0x06 + 0x01])<<8)&0x0100) | (((unsigned int)info->wreg[reg_port*0x06 + 0x00])&0x00ff));
|
||||
int idx = (((((unsigned int)m_wreg[reg_port*0x06 + 0x01])<<8)&0x0100) | (((unsigned int)m_wreg[reg_port*0x06 + 0x00])&0x00ff));
|
||||
#if 0
|
||||
if( !reg_port && r == 1 )
|
||||
logerror("%04x\n" ,idx );
|
||||
#endif
|
||||
|
||||
info->step[reg_port] = info->fncode[idx];
|
||||
m_step[reg_port] = m_fncode[idx];
|
||||
break;
|
||||
}
|
||||
case 0x02:
|
||||
@ -387,14 +309,14 @@ WRITE8_DEVICE_HANDLER( k007232_w )
|
||||
break;
|
||||
case 0x05:
|
||||
/**** start address ****/
|
||||
info->start[reg_port] =
|
||||
((((unsigned int)info->wreg[reg_port*0x06 + 0x04]<<16)&0x00010000) |
|
||||
(((unsigned int)info->wreg[reg_port*0x06 + 0x03]<< 8)&0x0000ff00) |
|
||||
(((unsigned int)info->wreg[reg_port*0x06 + 0x02] )&0x000000ff) |
|
||||
info->bank[reg_port]);
|
||||
if (info->start[reg_port] < info->pcmlimit ){
|
||||
info->play[reg_port] = 1;
|
||||
info->addr[reg_port] = 0;
|
||||
m_start[reg_port] =
|
||||
((((unsigned int)m_wreg[reg_port*0x06 + 0x04]<<16)&0x00010000) |
|
||||
(((unsigned int)m_wreg[reg_port*0x06 + 0x03]<< 8)&0x0000ff00) |
|
||||
(((unsigned int)m_wreg[reg_port*0x06 + 0x02] )&0x000000ff) |
|
||||
m_bank[reg_port]);
|
||||
if (m_start[reg_port] < m_pcmlimit ){
|
||||
m_play[reg_port] = 1;
|
||||
m_addr[reg_port] = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -404,9 +326,8 @@ WRITE8_DEVICE_HANDLER( k007232_w )
|
||||
/************************************************/
|
||||
/* Konami PCM read register */
|
||||
/************************************************/
|
||||
READ8_DEVICE_HANDLER( k007232_r )
|
||||
READ8_MEMBER( k007232_device::read )
|
||||
{
|
||||
KDAC_A_PCM *info = get_safe_token(device);
|
||||
int r = offset;
|
||||
int ch = 0;
|
||||
|
||||
@ -414,15 +335,15 @@ READ8_DEVICE_HANDLER( k007232_r )
|
||||
ch = r/0x0006;
|
||||
r = ch * 0x0006;
|
||||
|
||||
info->start[ch] =
|
||||
((((unsigned int)info->wreg[r + 0x04]<<16)&0x00010000) |
|
||||
(((unsigned int)info->wreg[r + 0x03]<< 8)&0x0000ff00) |
|
||||
(((unsigned int)info->wreg[r + 0x02] )&0x000000ff) |
|
||||
info->bank[ch]);
|
||||
m_start[ch] =
|
||||
((((unsigned int)m_wreg[r + 0x04]<<16)&0x00010000) |
|
||||
(((unsigned int)m_wreg[r + 0x03]<< 8)&0x0000ff00) |
|
||||
(((unsigned int)m_wreg[r + 0x02] )&0x000000ff) |
|
||||
m_bank[ch]);
|
||||
|
||||
if (info->start[ch] < info->pcmlimit ){
|
||||
info->play[ch] = 1;
|
||||
info->addr[ch] = 0;
|
||||
if (m_start[ch] < m_pcmlimit ){
|
||||
m_play[ch] = 1;
|
||||
m_addr[ch] = 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
@ -430,49 +351,20 @@ READ8_DEVICE_HANDLER( k007232_r )
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
void k007232_set_volume(device_t *device,int channel,int volumeA,int volumeB)
|
||||
void k007232_device::set_volume(int channel,int volumeA,int volumeB)
|
||||
{
|
||||
KDAC_A_PCM *info = get_safe_token(device);
|
||||
info->vol[channel][0] = volumeA;
|
||||
info->vol[channel][1] = volumeB;
|
||||
m_vol[channel][0] = volumeA;
|
||||
m_vol[channel][1] = volumeB;
|
||||
}
|
||||
|
||||
void k007232_set_bank( device_t *device, int chABank, int chBBank )
|
||||
void k007232_device::set_bank(int chABank, int chBBank )
|
||||
{
|
||||
KDAC_A_PCM *info = get_safe_token(device);
|
||||
info->bank[0] = chABank<<17;
|
||||
info->bank[1] = chBBank<<17;
|
||||
m_bank[0] = chABank<<17;
|
||||
m_bank[1] = chBBank<<17;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
const device_type K007232 = &device_creator<k007232_device>;
|
||||
|
||||
k007232_device::k007232_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, K007232, "K007232", tag, owner, clock),
|
||||
device_sound_interface(mconfig, *this)
|
||||
{
|
||||
m_token = global_alloc_clear(KDAC_A_PCM);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_config_complete - perform any
|
||||
// operations now that the configuration is
|
||||
// complete
|
||||
//-------------------------------------------------
|
||||
|
||||
void k007232_device::device_config_complete()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void k007232_device::device_start()
|
||||
{
|
||||
DEVICE_START_NAME( k007232 )(this);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// sound_stream_update - handle a stream update
|
||||
@ -480,6 +372,72 @@ void k007232_device::device_start()
|
||||
|
||||
void k007232_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
|
||||
{
|
||||
// should never get here
|
||||
fatalerror("sound_stream_update called; not applicable to legacy sound devices\n");
|
||||
int i;
|
||||
|
||||
memset(outputs[0],0,samples * sizeof(*outputs[0]));
|
||||
memset(outputs[1],0,samples * sizeof(*outputs[1]));
|
||||
|
||||
for( i = 0; i < KDAC_A_PCM_MAX; i++ )
|
||||
{
|
||||
if (m_play[i])
|
||||
{
|
||||
int volA,volB,j,out;
|
||||
unsigned int addr, old_addr;
|
||||
//int cen;
|
||||
|
||||
/**** PCM setup ****/
|
||||
addr = m_start[i] + ((m_addr[i]>>BASE_SHIFT)&0x000fffff);
|
||||
volA = m_vol[i][0] * 2;
|
||||
volB = m_vol[i][1] * 2;
|
||||
#if 0
|
||||
cen = (volA + volB) / 2;
|
||||
volA = (volA + cen) < 0x1fe ? (volA + cen) : 0x1fe;
|
||||
volB = (volB + cen) < 0x1fe ? (volB + cen) : 0x1fe;
|
||||
#endif
|
||||
|
||||
for( j = 0; j < samples; j++ )
|
||||
{
|
||||
old_addr = addr;
|
||||
addr = m_start[i] + ((m_addr[i]>>BASE_SHIFT)&0x000fffff);
|
||||
while (old_addr <= addr)
|
||||
{
|
||||
if( (m_pcmbuf[i][old_addr] & 0x80) || old_addr >= m_pcmlimit )
|
||||
{
|
||||
/* end of sample */
|
||||
|
||||
if( m_wreg[0x0d]&(1<<i) )
|
||||
{
|
||||
/* loop to the beginning */
|
||||
m_start[i] =
|
||||
((((unsigned int)m_wreg[i*0x06 + 0x04]<<16)&0x00010000) |
|
||||
(((unsigned int)m_wreg[i*0x06 + 0x03]<< 8)&0x0000ff00) |
|
||||
(((unsigned int)m_wreg[i*0x06 + 0x02] )&0x000000ff) |
|
||||
m_bank[i]);
|
||||
addr = m_start[i];
|
||||
m_addr[i] = 0;
|
||||
old_addr = addr; /* skip loop */
|
||||
}
|
||||
else
|
||||
{
|
||||
/* stop sample */
|
||||
m_play[i] = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
old_addr++;
|
||||
}
|
||||
|
||||
if (m_play[i] == 0)
|
||||
break;
|
||||
|
||||
m_addr[i] += m_step[i];
|
||||
|
||||
out = (m_pcmbuf[i][addr] & 0x7f) - 0x40;
|
||||
|
||||
outputs[0][j] += out * volA;
|
||||
outputs[1][j] += out * volB;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7,37 +7,36 @@
|
||||
#ifndef __K007232_H__
|
||||
#define __K007232_H__
|
||||
|
||||
#include "devlegcy.h"
|
||||
#define KDAC_A_PCM_MAX (2) /* Channels per chip */
|
||||
|
||||
struct k007232_interface
|
||||
{
|
||||
devcb_write8 portwritehandler;
|
||||
devcb_write8 m_portwritehandler;
|
||||
};
|
||||
|
||||
DECLARE_WRITE8_DEVICE_HANDLER( k007232_w );
|
||||
DECLARE_READ8_DEVICE_HANDLER( k007232_r );
|
||||
class k007232_device : public device_t,
|
||||
public device_sound_interface,
|
||||
public k007232_interface
|
||||
{
|
||||
public:
|
||||
k007232_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
~k007232_device() {}
|
||||
|
||||
void k007232_set_bank( device_t *device, int chABank, int chBBank );
|
||||
|
||||
/*
|
||||
DECLARE_WRITE8_MEMBER( write );
|
||||
DECLARE_READ8_MEMBER( read );
|
||||
|
||||
/*
|
||||
The 007232 has two channels and produces two outputs. The volume control
|
||||
is external, however to make it easier to use we handle that inside the
|
||||
emulation. You can control volume and panning: for each of the two channels
|
||||
you can set the volume of the two outputs. If panning is not required,
|
||||
then volumeB will be 0 for channel 0, and volumeA will be 0 for channel 1.
|
||||
Volume is in the range 0-255.
|
||||
*/
|
||||
void k007232_set_volume(device_t *device,int channel,int volumeA,int volumeB);
|
||||
|
||||
class k007232_device : public device_t,
|
||||
public device_sound_interface
|
||||
{
|
||||
public:
|
||||
k007232_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
~k007232_device() { global_free(m_token); }
|
||||
|
||||
// access to legacy token
|
||||
void *token() const { assert(m_token != NULL); return m_token; }
|
||||
*/
|
||||
void set_volume(int channel,int volumeA,int volumeB);
|
||||
|
||||
void set_bank( int chABank, int chBBank );
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete();
|
||||
@ -45,9 +44,26 @@ protected:
|
||||
|
||||
// sound stream update overrides
|
||||
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
|
||||
|
||||
void KDAC_A_make_fncode();
|
||||
|
||||
private:
|
||||
// internal state
|
||||
void *m_token;
|
||||
UINT8 m_vol[KDAC_A_PCM_MAX][2]; /* volume for the left and right channel */
|
||||
UINT32 m_addr[KDAC_A_PCM_MAX];
|
||||
UINT32 m_start[KDAC_A_PCM_MAX];
|
||||
UINT32 m_step[KDAC_A_PCM_MAX];
|
||||
UINT32 m_bank[KDAC_A_PCM_MAX];
|
||||
int m_play[KDAC_A_PCM_MAX];
|
||||
|
||||
UINT8 m_wreg[0x10]; /* write data */
|
||||
UINT8 * m_pcmbuf[2]; /* Channel A & B pointers */
|
||||
|
||||
UINT32 m_pcmlimit;
|
||||
|
||||
sound_stream * m_stream;
|
||||
UINT32 m_fncode[0x200];
|
||||
devcb_resolved_write8 m_portwritehandler_func;
|
||||
};
|
||||
|
||||
extern const device_type K007232;
|
||||
|
@ -16,7 +16,6 @@
|
||||
#include "cpu/m6809/konami.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "sound/k007232.h"
|
||||
#include "includes/ajax.h"
|
||||
#include "includes/konamipt.h"
|
||||
|
||||
@ -51,8 +50,8 @@ static ADDRESS_MAP_START( ajax_sound_map, AS_PROGRAM, 8, ajax_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM F6 */
|
||||
AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM 2128SL at D16 */
|
||||
AM_RANGE(0x9000, 0x9000) AM_WRITE(sound_bank_w) /* 007232 bankswitch */
|
||||
AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE_LEGACY("k007232_1", k007232_r, k007232_w) /* 007232 registers (chip 1) */
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232_2", k007232_r, k007232_w) /* 007232 registers (chip 2) */
|
||||
AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("k007232_1", k007232_device, read, write) /* 007232 registers (chip 1) */
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_2", k007232_device, read, write) /* 007232 registers (chip 2) */
|
||||
AM_RANGE(0xb80c, 0xb80c) AM_WRITE(k007232_extvol_w) /* extra volume, goes to the 007232 w/ A11 */
|
||||
/* selecting a different latch for the external port */
|
||||
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */
|
||||
@ -142,30 +141,30 @@ WRITE8_MEMBER(ajax_state::sound_bank_w)
|
||||
/* banks # for the 007232 (chip 1) */
|
||||
bank_A = BIT(data, 1);
|
||||
bank_B = BIT(data, 0);
|
||||
k007232_set_bank(m_k007232_1, bank_A, bank_B);
|
||||
m_k007232_1->set_bank(bank_A, bank_B);
|
||||
|
||||
/* banks # for the 007232 (chip 2) */
|
||||
bank_A = ((data >> 4) & 0x03);
|
||||
bank_B = ((data >> 2) & 0x03);
|
||||
k007232_set_bank(m_k007232_2, bank_A, bank_B);
|
||||
m_k007232_2->set_bank(bank_A, bank_B);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(ajax_state::volume_callback0)
|
||||
{
|
||||
k007232_set_volume(m_k007232_1, 0, (data >> 4) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232_1, 1, 0, (data & 0x0f) * 0x11);
|
||||
m_k007232_1->set_volume(0, (data >> 4) * 0x11, 0);
|
||||
m_k007232_1->set_volume(1, 0, (data & 0x0f) * 0x11);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(ajax_state::k007232_extvol_w)
|
||||
{
|
||||
/* channel A volume (mono) */
|
||||
k007232_set_volume(m_k007232_2, 0, (data & 0x0f) * 0x11/2, (data & 0x0f) * 0x11/2);
|
||||
m_k007232_2->set_volume(0, (data & 0x0f) * 0x11/2, (data & 0x0f) * 0x11/2);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(ajax_state::volume_callback1)
|
||||
{
|
||||
/* channel B volume/pan */
|
||||
k007232_set_volume(m_k007232_2, 1, (data & 0x0f) * 0x11/2, (data >> 4) * 0x11/2);
|
||||
m_k007232_2->set_volume(1, (data & 0x0f) * 0x11/2, (data >> 4) * 0x11/2);
|
||||
}
|
||||
|
||||
static const k007232_interface k007232_interface_1 =
|
||||
|
@ -10,7 +10,6 @@ Preliminary driver by:
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "cpu/m6809/konami.h" /* for the callback and the firq irq definition */
|
||||
#include "sound/k007232.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "includes/konamipt.h"
|
||||
@ -77,7 +76,7 @@ WRITE8_MEMBER(aliens_state::aliens_snd_bankswitch_w)
|
||||
int bank_A = BIT(data, 1);
|
||||
int bank_B = BIT(data, 0);
|
||||
|
||||
k007232_set_bank(m_k007232, bank_A, bank_B);
|
||||
m_k007232->set_bank(bank_A, bank_B);
|
||||
}
|
||||
|
||||
|
||||
@ -126,7 +125,7 @@ static ADDRESS_MAP_START( aliens_sound_map, AS_PROGRAM, 8, aliens_state )
|
||||
AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */
|
||||
AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */
|
||||
AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)
|
||||
AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -187,8 +186,8 @@ INPUT_PORTS_END
|
||||
|
||||
WRITE8_MEMBER(aliens_state::volume_callback)
|
||||
{
|
||||
k007232_set_volume(m_k007232, 0, (data & 0x0f) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232, 1, 0, (data >> 4) * 0x11);
|
||||
m_k007232->set_volume(0, (data & 0x0f) * 0x11, 0);
|
||||
m_k007232->set_volume(1, 0, (data >> 4) * 0x11);
|
||||
}
|
||||
|
||||
static const k007232_interface k007232_config =
|
||||
|
@ -16,7 +16,6 @@
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "cpu/m6809/m6809.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "sound/k007232.h"
|
||||
#include "includes/konamipt.h"
|
||||
#include "includes/bottom9.h"
|
||||
|
||||
@ -146,11 +145,11 @@ WRITE8_MEMBER(bottom9_state::sound_bank_w)
|
||||
|
||||
bank_A = ((data >> 0) & 0x03);
|
||||
bank_B = ((data >> 2) & 0x03);
|
||||
k007232_set_bank(m_k007232_1, bank_A, bank_B);
|
||||
m_k007232_1->set_bank(bank_A, bank_B);
|
||||
|
||||
bank_A = ((data >> 4) & 0x03);
|
||||
bank_B = ((data >> 6) & 0x03);
|
||||
k007232_set_bank(m_k007232_2, bank_A, bank_B);
|
||||
m_k007232_2->set_bank(bank_A, bank_B);
|
||||
}
|
||||
|
||||
|
||||
@ -178,8 +177,8 @@ static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, bottom9_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0x87ff) AM_RAM
|
||||
AM_RANGE(0x9000, 0x9000) AM_WRITE(sound_bank_w)
|
||||
AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE_LEGACY("k007232_1", k007232_r, k007232_w)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232_2", k007232_r, k007232_w)
|
||||
AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("k007232_1", k007232_device, read, write)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_2", k007232_device, read, write)
|
||||
AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0xf000, 0xf000) AM_WRITE(nmi_enable_w)
|
||||
ADDRESS_MAP_END
|
||||
@ -263,14 +262,14 @@ INPUT_PORTS_END
|
||||
|
||||
WRITE8_MEMBER(bottom9_state::volume_callback0)
|
||||
{
|
||||
k007232_set_volume(m_k007232_1, 0, (data >> 4) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232_1, 1, 0, (data & 0x0f) * 0x11);
|
||||
m_k007232_1->set_volume(0, (data >> 4) * 0x11, 0);
|
||||
m_k007232_1->set_volume(1, 0, (data & 0x0f) * 0x11);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(bottom9_state::volume_callback1)
|
||||
{
|
||||
k007232_set_volume(m_k007232_2, 0, (data >> 4) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232_2, 1, 0, (data & 0x0f) * 0x11);
|
||||
m_k007232_2->set_volume(0, (data >> 4) * 0x11, 0);
|
||||
m_k007232_2->set_volume(1, 0, (data & 0x0f) * 0x11);
|
||||
}
|
||||
|
||||
static const k007232_interface k007232_interface_1 =
|
||||
|
@ -17,7 +17,6 @@
|
||||
#include "cpu/m6809/konami.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "sound/k007232.h"
|
||||
#include "includes/chqflag.h"
|
||||
#include "includes/konamipt.h"
|
||||
|
||||
@ -169,21 +168,21 @@ WRITE8_MEMBER(chqflag_state::k007232_bankswitch_w)
|
||||
/* banks # for the 007232 (chip 1) */
|
||||
bank_A = ((data >> 4) & 0x03);
|
||||
bank_B = ((data >> 6) & 0x03);
|
||||
k007232_set_bank(m_k007232_1, bank_A, bank_B);
|
||||
m_k007232_1->set_bank(bank_A, bank_B);
|
||||
|
||||
/* banks # for the 007232 (chip 2) */
|
||||
bank_A = ((data >> 0) & 0x03);
|
||||
bank_B = ((data >> 2) & 0x03);
|
||||
k007232_set_bank(m_k007232_2, bank_A, bank_B);
|
||||
m_k007232_2->set_bank(bank_A, bank_B);
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( chqflag_sound_map, AS_PROGRAM, 8, chqflag_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM */
|
||||
AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */
|
||||
AM_RANGE(0x9000, 0x9000) AM_WRITE(k007232_bankswitch_w) /* 007232 bankswitch */
|
||||
AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE_LEGACY("k007232_1", k007232_r, k007232_w) /* 007232 (chip 1) */
|
||||
AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("k007232_1", k007232_device, read, write) /* 007232 (chip 1) */
|
||||
AM_RANGE(0xa01c, 0xa01c) AM_WRITE(k007232_extvolume_w) /* extra volume, goes to the 007232 w/ A11 */
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232_2", k007232_r, k007232_w) /* 007232 (chip 2) */
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_2", k007232_device, read, write) /* 007232 (chip 2) */
|
||||
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */
|
||||
AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */
|
||||
AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch2_byte_r) /* engine sound volume */
|
||||
@ -257,18 +256,18 @@ INPUT_PORTS_END
|
||||
|
||||
WRITE8_MEMBER(chqflag_state::volume_callback0)
|
||||
{
|
||||
k007232_set_volume(m_k007232_1, 0, (data & 0x0f) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232_1, 1, 0, (data >> 4) * 0x11);
|
||||
m_k007232_1->set_volume(0, (data & 0x0f) * 0x11, 0);
|
||||
m_k007232_1->set_volume(1, 0, (data >> 4) * 0x11);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(chqflag_state::k007232_extvolume_w)
|
||||
{
|
||||
k007232_set_volume(m_k007232_2, 1, (data & 0x0f) * 0x11/2, (data >> 4) * 0x11/2);
|
||||
m_k007232_2->set_volume(1, (data & 0x0f) * 0x11/2, (data >> 4) * 0x11/2);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(chqflag_state::volume_callback1)
|
||||
{
|
||||
k007232_set_volume(m_k007232_2, 0, (data & 0x0f) * 0x11/2, (data >> 4) * 0x11/2);
|
||||
m_k007232_2->set_volume(0, (data & 0x0f) * 0x11/2, (data >> 4) * 0x11/2);
|
||||
}
|
||||
|
||||
static const k007232_interface k007232_interface_1 =
|
||||
|
@ -16,7 +16,6 @@
|
||||
#include "cpu/m6809/konami.h" /* for the callback and the firq irq definition */
|
||||
#include "video/konicdev.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "sound/k007232.h"
|
||||
#include "includes/konamipt.h"
|
||||
#include "includes/crimfght.h"
|
||||
|
||||
@ -49,7 +48,7 @@ WRITE8_MEMBER(crimfght_state::crimfght_snd_bankswitch_w)
|
||||
int bank_A = BIT(data, 1);
|
||||
int bank_B = BIT(data, 0);
|
||||
|
||||
k007232_set_bank(m_k007232, bank_A, bank_B );
|
||||
m_k007232->set_bank(bank_A, bank_B );
|
||||
}
|
||||
|
||||
READ8_MEMBER(crimfght_state::k052109_051960_r)
|
||||
@ -102,7 +101,7 @@ static ADDRESS_MAP_START( crimfght_sound_map, AS_PROGRAM, 8, crimfght_state )
|
||||
AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */
|
||||
AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */
|
||||
AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */
|
||||
AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w) /* 007232 registers */
|
||||
AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) /* 007232 registers */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/***************************************************************************
|
||||
@ -222,8 +221,8 @@ INPUT_PORTS_END
|
||||
|
||||
WRITE8_MEMBER(crimfght_state::volume_callback)
|
||||
{
|
||||
k007232_set_volume(m_k007232, 0, (data & 0x0f) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232, 1, 0, (data >> 4) * 0x11);
|
||||
m_k007232->set_volume(0, (data & 0x0f) * 0x11, 0);
|
||||
m_k007232->set_volume(1, 0, (data >> 4) * 0x11);
|
||||
}
|
||||
|
||||
static const k007232_interface k007232_config =
|
||||
|
@ -11,7 +11,6 @@
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/m6809/hd6309.h"
|
||||
#include "sound/k007232.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "includes/konamipt.h"
|
||||
#include "includes/fastlane.h"
|
||||
@ -46,7 +45,7 @@ WRITE8_MEMBER(fastlane_state::fastlane_bankswitch_w)
|
||||
membank("bank1")->set_entry((data & 0x0c) >> 2);
|
||||
|
||||
/* bit 4: bank # for the 007232 (chip 2) */
|
||||
k007232_set_bank(m_k007232_2, 0 + ((data & 0x10) >> 4), 2 + ((data & 0x10) >> 4));
|
||||
m_k007232_2->set_bank(0 + ((data & 0x10) >> 4), 2 + ((data & 0x10) >> 4));
|
||||
|
||||
/* other bits seems to be unused */
|
||||
}
|
||||
@ -56,22 +55,22 @@ WRITE8_MEMBER(fastlane_state::fastlane_bankswitch_w)
|
||||
|
||||
READ8_MEMBER(fastlane_state::fastlane_k1_k007232_r)
|
||||
{
|
||||
return k007232_r(m_k007232_1, space, offset ^ 1);
|
||||
return m_k007232_1->read(space, offset ^ 1);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(fastlane_state::fastlane_k1_k007232_w)
|
||||
{
|
||||
k007232_w(m_k007232_1, space, offset ^ 1, data);
|
||||
m_k007232_1->write(space, offset ^ 1, data);
|
||||
}
|
||||
|
||||
READ8_MEMBER(fastlane_state::fastlane_k2_k007232_r)
|
||||
{
|
||||
return k007232_r(m_k007232_2, space, offset ^ 1);
|
||||
return m_k007232_2->read(space, offset ^ 1);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(fastlane_state::fastlane_k2_k007232_w)
|
||||
{
|
||||
k007232_w(m_k007232_2, space, offset ^ 1, data);
|
||||
m_k007232_2->write(space, offset ^ 1, data);
|
||||
}
|
||||
static ADDRESS_MAP_START( fastlane_map, AS_PROGRAM, 8, fastlane_state )
|
||||
AM_RANGE(0x0000, 0x005f) AM_RAM_WRITE(k007121_registers_w) AM_SHARE("k007121_regs") /* 007121 registers */
|
||||
@ -177,14 +176,14 @@ GFXDECODE_END
|
||||
|
||||
WRITE8_MEMBER(fastlane_state::volume_callback0)
|
||||
{
|
||||
k007232_set_volume(m_k007232_1, 0, (data >> 4) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232_1, 1, 0, (data & 0x0f) * 0x11);
|
||||
m_k007232_1->set_volume(0, (data >> 4) * 0x11, 0);
|
||||
m_k007232_1->set_volume(1, 0, (data & 0x0f) * 0x11);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(fastlane_state::volume_callback1)
|
||||
{
|
||||
k007232_set_volume(m_k007232_2, 0, (data >> 4) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232_2, 1, 0, (data & 0x0f) * 0x11);
|
||||
m_k007232_2->set_volume(0, (data >> 4) * 0x11, 0);
|
||||
m_k007232_2->set_volume(1, 0, (data & 0x0f) * 0x11);
|
||||
}
|
||||
|
||||
static const k007232_interface k007232_interface_1 =
|
||||
|
@ -14,7 +14,6 @@
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "cpu/m6809/hd6309.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "sound/k007232.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "includes/konamipt.h"
|
||||
#include "includes/flkatck.h"
|
||||
@ -108,7 +107,7 @@ static ADDRESS_MAP_START( flkatck_sound_map, AS_PROGRAM, 8, flkatck_state )
|
||||
AM_RANGE(0x9004, 0x9004) AM_READNOP /* ??? */
|
||||
AM_RANGE(0x9006, 0x9006) AM_WRITENOP /* ??? */
|
||||
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w) /* 007232 registers */
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) /* 007232 registers */
|
||||
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -179,8 +178,8 @@ GFXDECODE_END
|
||||
|
||||
WRITE8_MEMBER(flkatck_state::volume_callback0)
|
||||
{
|
||||
k007232_set_volume(m_k007232, 0, (data >> 4) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232, 1, 0, (data & 0x0f) * 0x11);
|
||||
m_k007232->set_volume(0, (data >> 4) * 0x11, 0);
|
||||
m_k007232->set_volume(1, 0, (data & 0x0f) * 0x11);
|
||||
}
|
||||
|
||||
static const k007232_interface k007232_config =
|
||||
@ -202,7 +201,7 @@ void flkatck_state::machine_start()
|
||||
|
||||
void flkatck_state::machine_reset()
|
||||
{
|
||||
k007232_set_bank(m_k007232, 0, 1);
|
||||
m_k007232->set_bank(0, 1);
|
||||
|
||||
m_irq_enabled = 0;
|
||||
m_multiply_reg[0] = 0;
|
||||
|
@ -12,7 +12,6 @@
|
||||
#include "cpu/m6809/konami.h" /* for the callback and the firq irq definition */
|
||||
#include "video/konicdev.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "sound/k007232.h"
|
||||
#include "includes/konamipt.h"
|
||||
#include "includes/gbusters.h"
|
||||
|
||||
@ -102,7 +101,7 @@ WRITE8_MEMBER(gbusters_state::gbusters_snd_bankswitch_w)
|
||||
{
|
||||
int bank_B = BIT(data, 2); /* ?? */
|
||||
int bank_A = BIT(data, 0); /* ?? */
|
||||
k007232_set_bank(m_k007232, bank_A, bank_B );
|
||||
m_k007232->set_bank(bank_A, bank_B );
|
||||
|
||||
#if 0
|
||||
{
|
||||
@ -164,7 +163,7 @@ static ADDRESS_MAP_START( gbusters_sound_map, AS_PROGRAM, 8, gbusters_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM 878h01.rom */
|
||||
AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */
|
||||
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w) /* 007232 registers */
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) /* 007232 registers */
|
||||
AM_RANGE(0xc001, 0xc001) AM_DEVREAD("ymsnd", ym2151_device, status_r) /* YM 2151 */
|
||||
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM 2151 */
|
||||
AM_RANGE(0xf000, 0xf000) AM_WRITE(gbusters_snd_bankswitch_w) /* 007232 bankswitch? */
|
||||
@ -232,8 +231,8 @@ INPUT_PORTS_END
|
||||
|
||||
WRITE8_MEMBER(gbusters_state::volume_callback)
|
||||
{
|
||||
k007232_set_volume(m_k007232, 0, (data >> 4) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232, 1, 0, (data & 0x0f) * 0x11);
|
||||
m_k007232->set_volume(0, (data >> 4) * 0x11, 0);
|
||||
m_k007232->set_volume(1, 0, (data & 0x0f) * 0x11);
|
||||
}
|
||||
|
||||
static const k007232_interface k007232_config =
|
||||
|
@ -23,7 +23,6 @@
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "sound/k007232.h"
|
||||
#include "includes/konamipt.h"
|
||||
#include "includes/gradius3.h"
|
||||
|
||||
@ -142,7 +141,7 @@ WRITE8_MEMBER(gradius3_state::sound_bank_w)
|
||||
/* banks # for the 007232 (chip 1) */
|
||||
bank_A = ((data >> 0) & 0x03);
|
||||
bank_B = ((data >> 2) & 0x03);
|
||||
k007232_set_bank(m_k007232, bank_A, bank_B);
|
||||
m_k007232->set_bank(bank_A, bank_B);
|
||||
}
|
||||
|
||||
|
||||
@ -185,7 +184,7 @@ static ADDRESS_MAP_START( gradius3_s_map, AS_PROGRAM, 8, gradius3_state )
|
||||
AM_RANGE(0x0000, 0xefff) AM_ROM
|
||||
AM_RANGE(0xf000, 0xf000) AM_WRITE(sound_bank_w) /* 007232 bankswitch */
|
||||
AM_RANGE(0xf010, 0xf010) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0xf020, 0xf02d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)
|
||||
AM_RANGE(0xf020, 0xf02d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
|
||||
AM_RANGE(0xf030, 0xf031) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
AM_RANGE(0xf800, 0xffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
@ -251,8 +250,8 @@ INPUT_PORTS_END
|
||||
|
||||
WRITE8_MEMBER(gradius3_state::volume_callback)
|
||||
{
|
||||
k007232_set_volume(m_k007232, 0, (data >> 4) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232, 1, 0, (data & 0x0f) * 0x11);
|
||||
m_k007232->set_volume(0, (data >> 4) * 0x11, 0);
|
||||
m_k007232->set_volume(1, 0, (data & 0x0f) * 0x11);
|
||||
}
|
||||
|
||||
static const k007232_interface k007232_config =
|
||||
|
@ -10,7 +10,6 @@
|
||||
#include "cpu/m6809/konami.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/3812intf.h"
|
||||
#include "sound/k007232.h"
|
||||
#include "sound/k051649.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "includes/konamipt.h"
|
||||
@ -67,7 +66,7 @@ WRITE8_MEMBER(hcastle_state::sound_bank_w)
|
||||
{
|
||||
int bank_A=(data&0x3);
|
||||
int bank_B=((data>>2)&0x3);
|
||||
k007232_set_bank(m_k007232, bank_A, bank_B );
|
||||
m_k007232->set_bank(bank_A, bank_B );
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, hcastle_state )
|
||||
@ -79,7 +78,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, hcastle_state )
|
||||
AM_RANGE(0x988f, 0x988f) AM_DEVWRITE("k051649", k051649_device, k051649_keyonoff_w)
|
||||
AM_RANGE(0x98e0, 0x98ff) AM_DEVREADWRITE("k051649", k051649_device, k051649_test_r, k051649_test_w)
|
||||
AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
|
||||
AM_RANGE(0xc000, 0xc000) AM_WRITE(sound_bank_w) /* 7232 bankswitch */
|
||||
AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_byte_r)
|
||||
ADDRESS_MAP_END
|
||||
@ -162,8 +161,8 @@ WRITE_LINE_MEMBER(hcastle_state::irqhandler)
|
||||
|
||||
WRITE8_MEMBER(hcastle_state::volume_callback)
|
||||
{
|
||||
k007232_set_volume(m_k007232, 0, (data >> 4) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232, 1, 0, (data & 0x0f) * 0x11);
|
||||
m_k007232->set_volume(0, (data >> 4) * 0x11, 0);
|
||||
m_k007232->set_volume(1, 0, (data & 0x0f) * 0x11);
|
||||
}
|
||||
|
||||
static const k007232_interface k007232_config =
|
||||
|
@ -26,7 +26,6 @@ Notes:
|
||||
#include "video/konicdev.h"
|
||||
#include "cpu/m6809/m6809.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "sound/k007232.h"
|
||||
#include "sound/upd7759.h"
|
||||
#include "includes/konamipt.h"
|
||||
#include "includes/mainevt.h"
|
||||
@ -107,7 +106,7 @@ WRITE8_MEMBER(mainevt_state::mainevt_sh_bankswitch_w)
|
||||
/* bits 0-3 select the 007232 banks */
|
||||
bank_A = (data & 0x3);
|
||||
bank_B = ((data >> 2) & 0x3);
|
||||
k007232_set_bank(m_k007232, bank_A, bank_B);
|
||||
m_k007232->set_bank(bank_A, bank_B);
|
||||
|
||||
/* bits 4-5 select the UPD7759 bank */
|
||||
upd7759_set_bank_base(m_upd7759, ((data >> 4) & 0x03) * 0x20000);
|
||||
@ -122,7 +121,7 @@ WRITE8_MEMBER(mainevt_state::dv_sh_bankswitch_w)
|
||||
/* bits 0-3 select the 007232 banks */
|
||||
bank_A = (data & 0x3);
|
||||
bank_B = ((data >> 2) & 0x3);
|
||||
k007232_set_bank(m_k007232, bank_A, bank_B);
|
||||
m_k007232->set_bank(bank_A, bank_B);
|
||||
}
|
||||
|
||||
READ8_MEMBER(mainevt_state::k052109_051960_r)
|
||||
@ -205,7 +204,7 @@ static ADDRESS_MAP_START( mainevt_sound_map, AS_PROGRAM, 8, mainevt_state )
|
||||
AM_RANGE(0x8000, 0x83ff) AM_RAM
|
||||
AM_RANGE(0x9000, 0x9000) AM_DEVWRITE_LEGACY("upd", upd7759_port_w)
|
||||
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r,k007232_w)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
|
||||
AM_RANGE(0xd000, 0xd000) AM_READ(mainevt_sh_busy_r)
|
||||
AM_RANGE(0xe000, 0xe000) AM_WRITE(mainevt_sh_irqcontrol_w)
|
||||
AM_RANGE(0xf000, 0xf000) AM_WRITE(mainevt_sh_bankswitch_w)
|
||||
@ -215,7 +214,7 @@ static ADDRESS_MAP_START( devstors_sound_map, AS_PROGRAM, 8, mainevt_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0x83ff) AM_RAM
|
||||
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r,k007232_w)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
|
||||
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
|
||||
AM_RANGE(0xe000, 0xe000) AM_WRITE(devstor_sh_irqcontrol_w)
|
||||
AM_RANGE(0xf000, 0xf000) AM_WRITE(dv_sh_bankswitch_w)
|
||||
@ -375,8 +374,8 @@ INPUT_PORTS_END
|
||||
|
||||
WRITE8_MEMBER(mainevt_state::volume_callback)
|
||||
{
|
||||
k007232_set_volume(m_k007232, 0, (data >> 4) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232, 1, 0, (data & 0x0f) * 0x11);
|
||||
m_k007232->set_volume(0, (data >> 4) * 0x11, 0);
|
||||
m_k007232->set_volume(1, 0, (data & 0x0f) * 0x11);
|
||||
}
|
||||
|
||||
static const k007232_interface k007232_config =
|
||||
|
@ -54,7 +54,6 @@ So this is the correct behavior of real hardware, not an emulation bug.
|
||||
#include "sound/3812intf.h"
|
||||
#include "sound/vlm5030.h"
|
||||
#include "sound/k005289.h"
|
||||
#include "sound/k007232.h"
|
||||
#include "sound/k051649.h"
|
||||
#include "includes/nemesis.h"
|
||||
#include "includes/konamipt.h"
|
||||
@ -254,7 +253,7 @@ WRITE8_MEMBER(nemesis_state::city_sound_bank_w)
|
||||
{
|
||||
int bank_A = (data & 0x03);
|
||||
int bank_B = ((data >> 2) & 0x03);
|
||||
k007232_set_bank(m_k007232, bank_A, bank_B);
|
||||
m_k007232->set_bank(bank_A, bank_B);
|
||||
}
|
||||
|
||||
|
||||
@ -541,7 +540,7 @@ static ADDRESS_MAP_START( sal_sound_map, AS_PROGRAM, 8, nemesis_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0x87ff) AM_RAM
|
||||
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
|
||||
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
AM_RANGE(0xd000, 0xd000) AM_DEVWRITE_LEGACY("vlm", vlm5030_data_w)
|
||||
AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */
|
||||
@ -552,7 +551,7 @@ static ADDRESS_MAP_START( blkpnthr_sound_map, AS_PROGRAM, 8, nemesis_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0x87ff) AM_RAM
|
||||
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
|
||||
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */
|
||||
ADDRESS_MAP_END
|
||||
@ -566,7 +565,7 @@ static ADDRESS_MAP_START( city_sound_map, AS_PROGRAM, 8, nemesis_state )
|
||||
AM_RANGE(0x988f, 0x988f) AM_DEVWRITE("k051649", k051649_device, k051649_keyonoff_w)
|
||||
AM_RANGE(0x98e0, 0x98ff) AM_DEVREADWRITE("k051649", k051649_device, k051649_test_r, k051649_test_w)
|
||||
AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
|
||||
AM_RANGE(0xc000, 0xc000) AM_WRITE(city_sound_bank_w) /* 7232 bankswitch */
|
||||
AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_byte_r)
|
||||
ADDRESS_MAP_END
|
||||
@ -1492,8 +1491,8 @@ WRITE_LINE_MEMBER(nemesis_state::sound_irq)
|
||||
|
||||
WRITE8_MEMBER(nemesis_state::volume_callback)
|
||||
{
|
||||
k007232_set_volume(m_k007232, 0, (data >> 4) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232, 1, 0, (data & 0x0f) * 0x11);
|
||||
m_k007232->set_volume(0, (data >> 4) * 0x11, 0);
|
||||
m_k007232->set_volume(1, 0, (data & 0x0f) * 0x11);
|
||||
}
|
||||
|
||||
static const k007232_interface k007232_config =
|
||||
|
@ -22,7 +22,6 @@
|
||||
#include "cpu/m6809/m6809.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "sound/3812intf.h"
|
||||
#include "sound/k007232.h"
|
||||
#include "includes/konamipt.h"
|
||||
#include "includes/spy.h"
|
||||
|
||||
@ -336,11 +335,11 @@ WRITE8_MEMBER(spy_state::sound_bank_w)
|
||||
|
||||
bank_A = (data >> 0) & 0x03;
|
||||
bank_B = (data >> 2) & 0x03;
|
||||
k007232_set_bank(m_k007232_1, bank_A, bank_B);
|
||||
m_k007232_1->set_bank(bank_A, bank_B);
|
||||
|
||||
bank_A = (data >> 4) & 0x03;
|
||||
bank_B = (data >> 6) & 0x03;
|
||||
k007232_set_bank(m_k007232_2, bank_A, bank_B);
|
||||
m_k007232_2->set_bank(bank_A, bank_B);
|
||||
}
|
||||
|
||||
|
||||
@ -391,8 +390,8 @@ static ADDRESS_MAP_START( spy_sound_map, AS_PROGRAM, 8, spy_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0x87ff) AM_RAM
|
||||
AM_RANGE(0x9000, 0x9000) AM_WRITE(sound_bank_w)
|
||||
AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE_LEGACY("k007232_1", k007232_r, k007232_w)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232_2", k007232_r, k007232_w)
|
||||
AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("k007232_1", k007232_device, read, write)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_2", k007232_device, read, write)
|
||||
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
|
||||
AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_byte_r)
|
||||
ADDRESS_MAP_END
|
||||
@ -449,8 +448,8 @@ INPUT_PORTS_END
|
||||
|
||||
WRITE8_MEMBER(spy_state::volume_callback0)
|
||||
{
|
||||
k007232_set_volume(m_k007232_1, 0, (data >> 4) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232_1, 1, 0, (data & 0x0f) * 0x11);
|
||||
m_k007232_1->set_volume(0, (data >> 4) * 0x11, 0);
|
||||
m_k007232_1->set_volume(1, 0, (data & 0x0f) * 0x11);
|
||||
}
|
||||
|
||||
static const k007232_interface spy_k007232_interface_1 =
|
||||
@ -460,8 +459,8 @@ static const k007232_interface spy_k007232_interface_1 =
|
||||
|
||||
WRITE8_MEMBER(spy_state::volume_callback1)
|
||||
{
|
||||
k007232_set_volume(m_k007232_2, 0, (data >> 4) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232_2, 1, 0, (data & 0x0f) * 0x11);
|
||||
m_k007232_2->set_volume(0, (data >> 4) * 0x11, 0);
|
||||
m_k007232_2->set_volume(1, 0, (data & 0x0f) * 0x11);
|
||||
}
|
||||
|
||||
static const k007232_interface spy_k007232_interface_2 =
|
||||
|
@ -17,7 +17,6 @@
|
||||
#include "cpu/m6809/konami.h" /* for the callback and the firq irq definition */
|
||||
#include "video/konicdev.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "sound/k007232.h"
|
||||
#include "includes/konamipt.h"
|
||||
#include "includes/thunderx.h"
|
||||
|
||||
@ -364,7 +363,7 @@ WRITE8_MEMBER(thunderx_state::scontra_snd_bankswitch_w)
|
||||
|
||||
int bank_A = (data & 0x03);
|
||||
int bank_B = ((data >> 2) & 0x03);
|
||||
k007232_set_bank(m_k007232, bank_A, bank_B);
|
||||
m_k007232->set_bank(bank_A, bank_B);
|
||||
}
|
||||
|
||||
READ8_MEMBER(thunderx_state::k052109_051960_r)
|
||||
@ -438,7 +437,7 @@ static ADDRESS_MAP_START( scontra_sound_map, AS_PROGRAM, 8, thunderx_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM */
|
||||
AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */
|
||||
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w) /* 007232 registers */
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) /* 007232 registers */
|
||||
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */
|
||||
AM_RANGE(0xf000, 0xf000) AM_WRITE(scontra_snd_bankswitch_w) /* 007232 bank select */
|
||||
ADDRESS_MAP_END
|
||||
@ -574,8 +573,8 @@ INPUT_PORTS_END
|
||||
|
||||
WRITE8_MEMBER(thunderx_state::volume_callback)
|
||||
{
|
||||
k007232_set_volume(m_k007232, 0, (data >> 4) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232, 1, 0, (data & 0x0f) * 0x11);
|
||||
m_k007232->set_volume(0, (data >> 4) * 0x11, 0);
|
||||
m_k007232->set_volume(1, 0, (data & 0x0f) * 0x11);
|
||||
}
|
||||
|
||||
static const k007232_interface k007232_config =
|
||||
|
@ -74,7 +74,6 @@ Updates:
|
||||
#include "sound/samples.h"
|
||||
#include "sound/k053260.h"
|
||||
#include "sound/k054539.h"
|
||||
#include "sound/k007232.h"
|
||||
#include "sound/upd7759.h"
|
||||
#include "machine/nvram.h"
|
||||
#include "includes/tmnt.h"
|
||||
@ -1081,7 +1080,7 @@ static ADDRESS_MAP_START( mia_audio_map, AS_PROGRAM, 8, tmnt_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0x87ff) AM_RAM
|
||||
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
|
||||
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -1091,7 +1090,7 @@ static ADDRESS_MAP_START( tmnt_audio_map, AS_PROGRAM, 8, tmnt_state )
|
||||
AM_RANGE(0x8000, 0x87ff) AM_RAM
|
||||
AM_RANGE(0x9000, 0x9000) AM_READWRITE(tmnt_sres_r, tmnt_sres_w) /* title music & UPD7759C reset */
|
||||
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
|
||||
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
AM_RANGE(0xd000, 0xd000) AM_DEVWRITE_LEGACY("upd", upd7759_port_w)
|
||||
AM_RANGE(0xe000, 0xe000) AM_WRITE(tmnt_upd_start_w)
|
||||
@ -2015,8 +2014,8 @@ INPUT_PORTS_END
|
||||
|
||||
WRITE8_MEMBER(tmnt_state::volume_callback)
|
||||
{
|
||||
k007232_set_volume(m_k007232, 0, (data >> 4) * 0x11, 0);
|
||||
k007232_set_volume(m_k007232, 1, 0, (data & 0x0f) * 0x11);
|
||||
m_k007232->set_volume(0, (data >> 4) * 0x11, 0);
|
||||
m_k007232->set_volume(1, 0, (data & 0x0f) * 0x11);
|
||||
}
|
||||
|
||||
static const k007232_interface k007232_config =
|
||||
|
@ -47,7 +47,6 @@ Known Issues:
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "sound/k007232.h"
|
||||
#include "sound/upd7759.h"
|
||||
#include "machine/nvram.h"
|
||||
#include "includes/twin16.h"
|
||||
@ -224,7 +223,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, twin16_state )
|
||||
AM_RANGE(0x8000, 0x8fff) AM_RAM
|
||||
AM_RANGE(0x9000, 0x9000) AM_WRITE(twin16_upd_reset_w)
|
||||
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
|
||||
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
AM_RANGE(0xd000, 0xd000) AM_DEVWRITE_LEGACY("upd", upd7759_port_w)
|
||||
AM_RANGE(0xe000, 0xe000) AM_WRITE(twin16_upd_start_w)
|
||||
@ -670,8 +669,8 @@ GFXDECODE_END
|
||||
|
||||
WRITE8_MEMBER(twin16_state::volume_callback)
|
||||
{
|
||||
k007232_set_volume(m_k007232,0,(data >> 4) * 0x11,0);
|
||||
k007232_set_volume(m_k007232,1,0,(data & 0x0f) * 0x11);
|
||||
m_k007232->set_volume(0,(data >> 4) * 0x11,0);
|
||||
m_k007232->set_volume(1,0,(data & 0x0f) * 0x11);
|
||||
}
|
||||
|
||||
static const k007232_interface k007232_config =
|
||||
|
@ -263,7 +263,6 @@ TODO:
|
||||
#include "video/konicdev.h"
|
||||
#include "cpu/m6809/m6809.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "sound/k007232.h"
|
||||
#include "wecleman.lh"
|
||||
#include "includes/wecleman.h"
|
||||
|
||||
@ -617,7 +616,7 @@ WRITE8_MEMBER(wecleman_state::multiply_w)
|
||||
|
||||
WRITE8_MEMBER(wecleman_state::wecleman_K00723216_bank_w)
|
||||
{
|
||||
k007232_set_bank(m_k007232, 0, ~data&1 ); //* (wecleman062gre)
|
||||
m_k007232->set_bank(0, ~data&1 ); //* (wecleman062gre)
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( wecleman_sound_map, AS_PROGRAM, 8, wecleman_state )
|
||||
@ -628,7 +627,7 @@ static ADDRESS_MAP_START( wecleman_sound_map, AS_PROGRAM, 8, wecleman_state )
|
||||
AM_RANGE(0x9000, 0x9001) AM_WRITE(multiply_w) // Protection
|
||||
AM_RANGE(0x9006, 0x9006) AM_WRITENOP // ?
|
||||
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) // From main CPU
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w) // K007232 (Reading offset 5/b triggers the sample)
|
||||
AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) // K007232 (Reading offset 5/b triggers the sample)
|
||||
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
AM_RANGE(0xf000, 0xf000) AM_WRITE(wecleman_K00723216_bank_w) // Samples banking
|
||||
ADDRESS_MAP_END
|
||||
@ -650,13 +649,8 @@ WRITE16_MEMBER(wecleman_state::hotchase_soundlatch_w)
|
||||
|
||||
WRITE8_MEMBER(wecleman_state::hotchase_sound_control_w)
|
||||
{
|
||||
k007232_device *sound[3];
|
||||
|
||||
// int reg[8];
|
||||
|
||||
sound[0] = m_k007232_1;
|
||||
sound[1] = m_k007232_2;
|
||||
sound[2] = m_k007232_3;
|
||||
|
||||
// reg[offset] = data;
|
||||
|
||||
@ -673,7 +667,9 @@ WRITE8_MEMBER(wecleman_state::hotchase_sound_control_w)
|
||||
++------ chip select ( 0:chip 1, 1:chip2, 2:chip3)
|
||||
data&0x0f left volume (data>>4)&0x0f right volume
|
||||
*/
|
||||
k007232_set_volume( sound[offset>>1], offset&1, (data&0x0f) * 0x08, (data>>4) * 0x08 );
|
||||
m_k007232_1->set_volume( offset&1, (data&0x0f) * 0x08, (data>>4) * 0x08 );
|
||||
m_k007232_2->set_volume( offset&1, (data&0x0f) * 0x08, (data>>4) * 0x08 );
|
||||
m_k007232_3->set_volume( offset&1, (data&0x0f) * 0x08, (data>>4) * 0x08 );
|
||||
break;
|
||||
|
||||
case 0x06: /* Bankswitch for chips 0 & 1 */
|
||||
@ -685,8 +681,8 @@ WRITE8_MEMBER(wecleman_state::hotchase_sound_control_w)
|
||||
// bit 6: chip 2 - ch0 ?
|
||||
// bit 7: chip 2 - ch1 ?
|
||||
|
||||
k007232_set_bank( sound[0], bank0_a, bank0_b );
|
||||
k007232_set_bank( sound[1], bank1_a, bank1_b );
|
||||
m_k007232_1->set_bank( bank0_a, bank0_b );
|
||||
m_k007232_2->set_bank( bank1_a, bank1_b );
|
||||
}
|
||||
break;
|
||||
|
||||
@ -695,7 +691,7 @@ WRITE8_MEMBER(wecleman_state::hotchase_sound_control_w)
|
||||
int bank2_a = (data >> 0) & 7;
|
||||
int bank2_b = (data >> 3) & 7;
|
||||
|
||||
k007232_set_bank( sound[2], bank2_a, bank2_b );
|
||||
m_k007232_3->set_bank( bank2_a, bank2_b );
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -705,32 +701,32 @@ WRITE8_MEMBER(wecleman_state::hotchase_sound_control_w)
|
||||
even and odd register are mapped swapped */
|
||||
READ8_MEMBER(wecleman_state::hotchase_1_k007232_r)
|
||||
{
|
||||
return k007232_r(m_k007232_1, space, offset ^ 1);
|
||||
return m_k007232_1->read(space, offset ^ 1);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(wecleman_state::hotchase_1_k007232_w)
|
||||
{
|
||||
k007232_w(m_k007232_1, space, offset ^ 1, data);
|
||||
m_k007232_1->write(space, offset ^ 1, data);
|
||||
}
|
||||
|
||||
READ8_MEMBER(wecleman_state::hotchase_2_k007232_r)
|
||||
{
|
||||
return k007232_r(m_k007232_2, space, offset ^ 1);
|
||||
return m_k007232_2->read(space, offset ^ 1);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(wecleman_state::hotchase_2_k007232_w)
|
||||
{
|
||||
k007232_w(m_k007232_2, space, offset ^ 1, data);
|
||||
m_k007232_2->write(space, offset ^ 1, data);
|
||||
}
|
||||
|
||||
READ8_MEMBER(wecleman_state::hotchase_3_k007232_r)
|
||||
{
|
||||
return k007232_r(m_k007232_3, space, offset ^ 1);
|
||||
return m_k007232_3->read(space, offset ^ 1);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(wecleman_state::hotchase_3_k007232_w)
|
||||
{
|
||||
k007232_w(m_k007232_3, space, offset ^ 1, data);
|
||||
m_k007232_3->write(space, offset ^ 1, data);
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( hotchase_sound_map, AS_PROGRAM, 8, wecleman_state )
|
||||
@ -1040,7 +1036,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(wecleman_state::hotchase_scanline)
|
||||
|
||||
MACHINE_RESET_MEMBER(wecleman_state,wecleman)
|
||||
{
|
||||
k007232_set_bank( m_k007232, 0, 1 );
|
||||
m_k007232->set_bank( 0, 1 );
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( wecleman, wecleman_state )
|
||||
|
@ -3,7 +3,6 @@
|
||||
Bishi Bashi Champ Mini Game Senshuken
|
||||
|
||||
*************************************************************************/
|
||||
#include "sound/k007232.h"
|
||||
|
||||
#define CPU_CLOCK (XTAL_24MHz / 2) /* 68000 clock */
|
||||
#define SOUND_CLOCK XTAL_16_9344MHz /* YMZ280 clock */
|
||||
@ -15,7 +14,6 @@ public:
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_k007232(*this, "k007232"),
|
||||
m_k056832(*this, "k056832"),
|
||||
m_k054338(*this, "k054338"),
|
||||
m_k055555(*this, "k055555") { }
|
||||
@ -34,7 +32,6 @@ public:
|
||||
/* devices */
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_device<cpu_device> m_audiocpu;
|
||||
optional_device<k007232_device> m_k007232;
|
||||
required_device<k056832_device> m_k056832;
|
||||
required_device<k054338_device> m_k054338;
|
||||
required_device<k055555_device> m_k055555;
|
||||
|
Loading…
Reference in New Issue
Block a user