Beispiel #1
0
static WRITE16_HANDLER( audio_volume_w )
{
	relief_state *state = (relief_state *)space->machine->driver_data;
	if (ACCESSING_BITS_0_7)
	{
		state->overall_volume = data & 127;
		atarigen_set_ym2413_vol(space->machine, (state->ym2413_volume * state->overall_volume * 100) / (127 * 15));
		atarigen_set_oki6295_vol(space->machine, state->overall_volume * 100 / 127);
	}
}
Beispiel #2
0
static WRITE16_HANDLER( latch_w )
{
	/* bit layout in this register:

        0x0080 == ADPCM bank
        0x001F == volume
    */

	/* lower byte being modified? */
	if (ACCESSING_BITS_0_7)
	{
		okim6295_device *oki = space->machine->device<okim6295_device>("oki");
		oki->set_bank_base((data & 0x80) ? 0x40000 : 0x00000);
		atarigen_set_oki6295_vol(space->machine, (data & 0x001f) * 100 / 0x1f);
	}
}
Beispiel #3
0
static WRITE16_HANDLER( latch_w )
{
	/* bit layout in this register:

        0x8000 == VCR ???
        0x2000 == LETAMODE1 (controls right trackball)
        0x1000 == CBANK (color bank -- is it ever set to non-zero?)
        0x0800 == LETAMODE0 (controls center and left trackballs)
        0x0400 == LETARES (reset LETA analog control reader)
        0x0200 == COINCTRL
        0x0100 == COINCTRR

        0x0020 == PMIX0 (ADPCM mixer level)
        0x0010 == /PCMRES (ADPCM reset)
        0x000E == YMIX2-0 (YM2413 mixer level)
        0x0001 == /YAMRES (YM2413 reset)
    */

	/* upper byte being modified? */
	if (ACCESSING_BITS_8_15)
	{
		if (data & 0x1000)
			logerror("Color bank set to 1!\n");
		coin_counter_w(space->machine, 0, (data >> 9) & 1);
		coin_counter_w(space->machine, 1, (data >> 8) & 1);
	}

	/* lower byte being modified? */
	if (ACCESSING_BITS_0_7)
	{
		atarigen_set_oki6295_vol(space->machine, (data & 0x0020) ? 100 : 0);
		if (!(data & 0x0010))
			devtag_reset(space->machine, "oki");
		atarigen_set_ym2413_vol(space->machine, ((data >> 1) & 7) * 100 / 7);
		if (!(data & 0x0001))
			devtag_reset(space->machine, "ymsnd");
	}
}