Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CINE: 9 fixes to music, UI, savegame etc #2454

Merged
merged 9 commits into from Sep 9, 2020
Merged

CINE: 9 fixes to music, UI, savegame etc #2454

merged 9 commits into from Sep 9, 2020

Conversation

@karisal
Copy link
Contributor

karisal commented Sep 9, 2020

Hi!
Here are some fixes to the Cine-engine. I think they should be
quite safe to put into the 2.2.0 release branch too (I used
them on the branch-2-2 while testing locally. I played through
Italian Amiga version of Future Wars while working on them).

Kari Salminen

karisal added 9 commits Sep 9, 2020
Make Amiga music loop until fade out when changing scene. This is
based on watching a video of Future Wars Amiga walkthrough, not on
playing the Amiga version or reading its disassembly. But it does seem
that the music loops instead of just playing once.
Fix transparency of page number and grid position (e.g. 04 and D2) in
the copy protection scene of Amiga and Atari ST versions of Future Wars.
After player has died it was hard to get the system menu to appear by
pressing the left and right mouse buttons simultaneously or the middle
mouse button. Fix that by using the maximum values of the mouse button
states for the polling period (Around 110ms at default play speed).
Previously the inventory could be summoned multiple times by pressing
F3 or F4. Fix that by keeping track when the inventory has been opened
and not allowing multiple use of it simultaneously.
Previously I encountered an std::bad_alloc with the code in manageEvents
pushing an empty Event into the event queue. It did not happen very
often but I got it to appear while debugging at least once or maybe
twice.

This is an attempt to fix this possible behaviour by not pushing empty
events into the event queue but making sure the current status is
checked without needing to push empty events into an empty event queue.

I played through Italian Amiga version of Future Wars with this change
and encountered no problems with it.
Total playtime is kept as milliseconds in the engine. It is saved as
seconds. Previously it was not converted to milliseconds on load but
seconds were took as milliseconds (i.e. 10s -> 10ms). Fix that by
converting total playtime on load from seconds to milliseconds.
Previously there was a fix for bug #2669415
("FW: half walking speed in a screen") which only addressed a single
scene in Amiga and Atari ST versions of Future Wars.

This fix fixes half walking speed in 8 more scenes in Amiga and Atari ST
versions of Future Wars. The scenes were identified by playing through
an Italian version of Amiga Future Wars.

3 more scenes were left over with half walking speed because they could
not be fixed as easily (i.e. using this fix on them broke the scenes in
some way, made them too fast or made the people walk into wrong
positions or something else). The scenes left over are the ones using
the following background files:
- "L10.PI1": The medieval castle's hall.
- "L18.PI1": The medieval castle's teleport room.
- "L45.PI1": Space station's computer room.
The Italian Amiga version of Future Wars tries to load music from file
"TELESONG.DAT" which does not exist. Previously after this starting to
play music might either try to play a null stream and crash or play an
old wrong music in memory. Fix that by setting the stream to null if
no music exists (Checked that the stream is destroyed i.e. the
destructor is run so it should be safe to set the _moduleStream variable
to nullptr directly).
In Future Wars the command line was not always updated and thus failed
sometimes to be up to date (i.e. showing wrong text, e.g. "EXAMINE" only
when it should have read "EXAMINE scaffolding" because the mouse cursor
was on the scaffolding).

Now we just always update the command line for both Future Wars and
Operation Stealth which seems to fix the command line updating.

I think this probably was a regression caused by adding support for
Operation Stealth (i.e. pull request #2365) and the efforts made in it
to make the user interface responsive.
@criezy
Copy link
Member

criezy commented Sep 9, 2020

Thank you. Merging.

@criezy criezy merged commit 70d16a3 into scummvm:master Sep 9, 2020
5 checks passed
5 checks passed
Windows (win32, x86-windows, x86, --enable-faad --enable-mpeg2 --disable-fribidi, curl faad2 flui...
Details
Windows (x64, x64, x64-windows, --enable-faad --enable-mpeg2 --disable-fribidi, curl faad2 fluids...
Details
Windows (arm64, arm64, arm64-windows, --enable-faad --enable-mpeg2 --disable-fribidi, curl faad2 ...
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
deepcode-ci-bot Well done, no issues found!
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

2 participants
You can’t perform that action at this time.