I'm sure I've seen games using volumes other than 0x8000, but it definitely is the most common that I've seen.

If volume is 0xFFFF, which is the max value, and the sample value is 0x7FFF, which is the max value, then the multiply result should be:

(0x7FFF * 0xFFFF = 7FFE8001) >> 15 = 0xFFFD

This makes it:
(0x7FFF * (0xFFFF << 1) = FFFD0002) >> 16 = 0xFFFD

Which seems safe.  I'm not as sure about the signed case, but it should be safe as well, I think?

-[Unknown]