- LUA code uses a range of 0 .. 100
- the LUA group volumes are in the range 25 .. 100, otherwise the sound
group is muted
- residualvm engine uses a range of 0 .. Audio::Mixer::kMaxChannelVolume
- do most of the conversion in lua_v2_sound.cpp
- most parts of the engine will solely use the engine internal range
- only when reading/writing the registry residualvm continues to use
a special conversion for compatibility with the volume settings
of the residualvm engine settings
- proper handling of volumes close to 0.0f in SoundTrack::updatePosition()
Both EMI and Grim call RenderModeUser when entering the menus or dialogs,
but EMI does not use special "blast" commands to display text or images,
so we cannot suspend regular screen updates. The current implementation
does not switch engine modes in RenderModeUser, which has the drawback
that the frame time is not stopped during pause or menu.
With this patch, EMI handles draw mode like normal mode with frozen frame
time.
IsSoundPlaying is needed for the ambient sounds in EMI. It needs to
return true during playing to avoid a premature lua call to free_sfx
and it needs to return false once the sound is finished to allow the
transition to the next ambient sound effect.
IsActorChoring takes different parameters in EMI than it does in Grim,
the original code was prudent enough about checking it’s parameters that
it actually ran fine, however the problem was that the argument that
said whether we should ignore looping chores was moved. This lets the
intro play the cut scene on the docks.
The turn rate for the chair of the voodoo lady is set to 1 in the lua
code which makes the turn animation very slow (> 30s).
Since the rate value of 1 is not used otherwise in EMI, adjust the
turnrate in this case.