mirror of
https://github.com/holub/mame
synced 2025-06-02 02:49:44 +03:00
Partly implemented 'stereo' gating (using ym2151 ctX lines) to POKEY and TMS5220 on Atari JSA-i sound board. (currently it is just 'mono' gating). Add TODOs for complete stereo gating and for the low-pass filter. [Lord Nightmare]
This commit is contained in:
parent
389bc727b3
commit
1144153765
@ -28,6 +28,13 @@ Effects 2C00-2C0F R/W D0-D7
|
|||||||
Banked Program ROM (4 pages) 3000-3FFF R D0-D7
|
Banked Program ROM (4 pages) 3000-3FFF R D0-D7
|
||||||
Static Program ROM (48K bytes) 4000-FFFF R D0-D7
|
Static Program ROM (48K bytes) 4000-FFFF R D0-D7
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
JSA-i: stereo gating for POKEY/TMS5220C is currently only mono, only looking at ym2151_ct1;
|
||||||
|
the two commented-out lines would be correct if stereo volume-set functions were written.
|
||||||
|
ALL: the LPF (low pass filter) bit which selectively places a lowpass filter in the output
|
||||||
|
path for all channels is currently unimplemented; someone who knows analog magic will need
|
||||||
|
to handle this.
|
||||||
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
@ -61,6 +68,8 @@ static UINT8 pokey_volume;
|
|||||||
static UINT8 ym2151_volume;
|
static UINT8 ym2151_volume;
|
||||||
static UINT8 tms5220_volume;
|
static UINT8 tms5220_volume;
|
||||||
static UINT8 oki6295_volume;
|
static UINT8 oki6295_volume;
|
||||||
|
static UINT8 ym2151_ct1;
|
||||||
|
static UINT8 ym2151_ct2;
|
||||||
|
|
||||||
static void update_all_volumes(running_machine *machine);
|
static void update_all_volumes(running_machine *machine);
|
||||||
|
|
||||||
@ -177,6 +186,8 @@ void atarijsa_reset(void)
|
|||||||
ym2151_volume = 100;
|
ym2151_volume = 100;
|
||||||
tms5220_volume = 100;
|
tms5220_volume = 100;
|
||||||
oki6295_volume = 100;
|
oki6295_volume = 100;
|
||||||
|
ym2151_ct1 = 0;
|
||||||
|
ym2151_ct2 = 0;
|
||||||
|
|
||||||
/* Guardians of the Hood assumes we're reset to bank 0 on startup */
|
/* Guardians of the Hood assumes we're reset to bank 0 on startup */
|
||||||
memcpy(bank_base, &bank_source_data[0x0000], 0x1000);
|
memcpy(bank_base, &bank_source_data[0x0000], 0x1000);
|
||||||
@ -705,6 +716,12 @@ static WRITE8_HANDLER( jsa3s_io_w )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static WRITE8_DEVICE_HANDLER( ym2151_ctl_w )
|
||||||
|
{
|
||||||
|
ym2151_ct1 = data&0x1;
|
||||||
|
ym2151_ct2 = (data&0x2)>>1;
|
||||||
|
update_all_volumes(device->machine);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
@ -715,9 +732,11 @@ static WRITE8_HANDLER( jsa3s_io_w )
|
|||||||
|
|
||||||
static void update_all_volumes(running_machine *machine )
|
static void update_all_volumes(running_machine *machine )
|
||||||
{
|
{
|
||||||
if (pokey != NULL) atarigen_set_pokey_vol(machine, overall_volume * pokey_volume / 100);
|
if (pokey != NULL) atarigen_set_pokey_vol(machine, (overall_volume * pokey_volume / 100) * ym2151_ct1);
|
||||||
|
//if (pokey != NULL) atarigen_set_pokey_stereo_vol(machine, (overall_volume * pokey_volume / 100) * ym2151_ct1, (overall_volume * pokey_volume / 100) * ym2151_ct2);
|
||||||
if (ym2151 != NULL) atarigen_set_ym2151_vol(machine, overall_volume * ym2151_volume / 100);
|
if (ym2151 != NULL) atarigen_set_ym2151_vol(machine, overall_volume * ym2151_volume / 100);
|
||||||
if (tms5220 != NULL) atarigen_set_tms5220_vol(machine, overall_volume * tms5220_volume / 100);
|
if (tms5220 != NULL) atarigen_set_tms5220_vol(machine, (overall_volume * tms5220_volume / 100) * ym2151_ct1);
|
||||||
|
//if (tms5220 != NULL) atarigen_set_tms5220_stereo_vol(machine, (overall_volume * tms5220_volume / 100) * ym2151_ct1, (overall_volume * tms5220_volume / 100) * ym2151_ct2);
|
||||||
if (oki6295 != NULL || oki6295_l != NULL || oki6295_r != NULL) atarigen_set_oki6295_vol(machine, overall_volume * oki6295_volume / 100);
|
if (oki6295 != NULL || oki6295_l != NULL || oki6295_r != NULL) atarigen_set_oki6295_vol(machine, overall_volume * oki6295_volume / 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -771,7 +790,8 @@ ADDRESS_MAP_END
|
|||||||
|
|
||||||
static const ym2151_interface ym2151_config =
|
static const ym2151_interface ym2151_config =
|
||||||
{
|
{
|
||||||
atarigen_ym2151_irq_gen
|
atarigen_ym2151_irq_gen,
|
||||||
|
ym2151_ctl_w
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user