v3alpha11: Autochange Visuals stuck "on track change" ?

Posted by: mlord

v3alpha11: Autochange Visuals stuck "on track change" ? - 06/01/2024 03:23

I'm using v3alpha11 on a Mk2 player, and the AutoChange Visuals setting seems to have no effect. It ALWAYS changes visual on a Track Change, regardless of this setting for the DSP (player).

I can see the SaveArea bits changing as the setting is changed, but the player never seems to use the new setting.

Anyone else notice this?
Posted by: mlord

Re: v3alpha11: Autochange Visuals stuck "on track change" ? - 06/01/2024 03:37

Ahh.. got it to stop doing that, by one at a time going into each "source" and turning off "AutoChange Visuals" for each in turn.

The FM Tuner had it enabled, and as soon as I turned it off there, the DSP (player) stopped doing AutoChange. I can now turn it on and off and it works normally.

So what I think was happening is perhaps a bitfield extraction bug in the player software. The AutoChange settings are stored together in a single byte, with 2-bits for each of four sources:

unsigned char vis_autochange_dsp : 2;
unsigned char vis_autochange_aux : 2;
unsigned char vis_autochange_fm : 2;
unsigned char vis_autochange_am : 2;

The autochange_fm was set to 01, and somehow this affected autochange_dsp. So it must be some weird bitfield extraction or sign-extend bug.
Posted by: Roger

Re: v3alpha11: Autochange Visuals stuck "on track change" ? - 06/01/2024 11:01

Originally Posted By: mlord
So it must be some weird bitfield extraction or sign-extend bug.


My guess (I never touched that part of the code) is that between v2 and v3, a single "AutoChange Visuals" flag got extended to 4 separate flags, but only in one part of the code.

That is: there's code to set the individual (bitfield) pieces, but the code that reads it still expects a single byte.

It's "alpha", after all...
Posted by: mlord

Re: v3alpha11: Autochange Visuals stuck "on track change" ? - 06/01/2024 16:38

The DSP stuff seems to work with the two _dsp bits shown above, but also just stays permanently on when the _fm bits are set.

So I guess you are saying there used to just be a single byte, where zero meant "no autochange", and non-zero meant "change on track change" ? And no setting for "change on timeout" ?

If I've got that right, then I can have Hijack "fix it". smile