play main CD tune, encounter battle -> fade out, save position, play new track.
End of battle, fade track -> play small ADPCM or psg jingle
while jingle is playing, ~don't~ cancel CDDA fade (should be mute), load main CD tune with normal parameters and play CD track (still in mute status), call CD_SEARCH to offset to the previous track, cancel fade out, fade out jingle.
As long as the 'jingle' tune is long enough, the CD_search function should do it's job. No need to monitor and re-call CD_play function.
That does suck about there being no fade in. One could do it manually, though it's tougher in HuC. You can read the linear PCM audio data from the unit as the CD is playing (there's a special port read for this) - even on mute IIRC. You could manually setup a 16khz playback routine via the VDC and convert the 16bit stereo data into 10bit stereo and fade up, cancel fade on the CD side once full volume and disable VDC special routine. That's hardcore though