What's new

vaughan14

Student
Joined
Oct 20, 2016
Messages
130
Reaction score
100
Location
Melbourne
Hey, I have 2 A-Boards that work fine but have an issue where the service menu volume is stuck at 39.

Volume adjustment works fine whilst the game is running, same thing happens with multiple games, any ideas?

IMG_20231022_125959.jpg
 
Hold down the Volume Down button while powering on the game it should reset the volume to 0.

After that the setting should be retained and work as per usual.
 
Hold down the Volume Down button while powering on the game it should reset the volume to 0.

After that the setting should be retained and work as per usual.
That didn't work either, cheers.

This will happen some times when a transistor on the digital volume IC bad.
I replaced the transistors at Q1 and Q2 and still the same issue.
 
But the sound works fine? Just stuck at max volume?
 
Last edited:
But the sound works fine? Just stick at max volume?

Volume adjustment works fine whilst the game is running, same thing happens with multiple games, any ideas?

Basically the graphic bar representing the actual volume setting isn't responding at all.

This feature has recently been implemented in MAME so maybe a little read regarding the emulation of this feature might be a guide on how to fix the issue.
 
Basically the graphic bar representing the actual volume setting isn't responding at all.

This feature has recently been implemented in MAME so maybe a little read regarding the emulation of this feature might be a guide on how to fix the issue.
Thanks, I found the relevant entry but I don't think it's gonna help.

TIMER_CALLBACK_MEMBER(cps_state::cps2_update_digital_volume)
{
int vol_button_state;

vol_button_state = ioport("DIGITALVOL")->read();

if (vol_button_state & 0x01) m_cps2digitalvolumelevel -= 1;
if (vol_button_state & 0x02) m_cps2digitalvolumelevel += 1;

if (m_cps2digitalvolumelevel > 39) m_cps2digitalvolumelevel = 39;
if (m_cps2digitalvolumelevel < 0) m_cps2digitalvolumelevel = 0;

machine().device<qsound_device>("qsound")->set_output_gain(0, m_cps2digitalvolumelevel / 39.0);
machine().device<qsound_device>("qsound")->set_output_gain(1, m_cps2digitalvolumelevel / 39.0);
}

static READ16_HANDLER( cps2_qsound_volume_r )
{
cps_state *state = space.machine().driver_data<cps_state>();

UINT16 cps2_vol_states[40] =
{
0xf010, 0xf008, 0xf004, 0xf002, 0xf001, 0xe810, 0xe808, 0xe804, 0xe802, 0xe801,
0xe410, 0xe408, 0xe404, 0xe402, 0xe401, 0xe210, 0xe208, 0xe204, 0xe202, 0xe201,
0xe110, 0xe108, 0xe104, 0xe102, 0xe101, 0xe090, 0xe088, 0xe084, 0xe082, 0xe081,
0xe050, 0xe048, 0xe044, 0xe042, 0xe041, 0xe030, 0xe028, 0xe024, 0xe022, 0xe021
};

UINT16 result;

result = cps2_vol_states[state->m_cps2digitalvolumelevel];

/* Extra adapter memory (0x660000-0x663fff) available when bit 14 = 0 */
/* Network adapter (ssf2tb) present when bit 15 = 0 */
/* Only game known to use both these so far is SSF2TB */

if (state->m_cps2networkpresent)
return 0x2021; /* SSF2TB doesn't have a digital slider in the test screen */
else
if (state->m_cps2disabledigitalvolume)
return 0xd000; /* digital display isn't shown in test mode */
else
return result;
}
 
Back
Top