aboutsummaryrefslogtreecommitdiff
path: root/engines/lastexpress
AgeCommit message (Collapse)Author
2019-12-01LASTEXPRESS: Fix Missing Default Switch CasesD G Turner
These are flagged by GCC if -Wswitch-default is enabled.
2019-11-03ENGINES: Stop using 'single id'Bastien Bouclet
2019-11-03ENGINES: Add an engine ID to all the enginesBastien Bouclet
2019-09-29LASTEXPRESS: The game doesn't use MIDI, so mark it as such.Henrik "Henke37" Andersson
2018-12-10ENGINES: Normalize the getName() result of metaenginesBastien Bouclet
Also-By: Matthew Hoops <clone2727@gmail.com>
2018-10-20LASTEXPRESS: save/load sound stateEvgeny Grechnikov
Warning: breaks compatibility with previous savefiles. They were mostly broken anyway, locking any NPC who waited for kActionEndSound when savefile was created.
2018-10-20LASTEXPRESS: loud train noise when NPC exits carEvgeny Grechnikov
If Cath stands near the beginning or the end of a car, looks at a door, and a NPC opens this door, the volume of train noise is temporarily raised. Controlled by variables SoundManager::_data{0,1,2}, renamed to be not so mysterious.
2018-10-19LASTEXPRESS: case-insensitive lookup in sound queueEvgeny Grechnikov
2018-10-18LASTEXPRESS: rnd() should not return a constantEvgeny Grechnikov
2018-10-18LASTEXPRESS: better names in sound codeEvgeny Grechnikov
Refactoring, no changes in behaviour.
2018-10-17LASTEXPRESS: support for looped soundsEvgeny Grechnikov
2018-10-16LASTEXPRESS: dynamic adjusting of sound volumeEvgeny Grechnikov
Now it works just like in the original game, including fading where it is applicable (e.g. in a passengers list if closing the list while a sound is playing). By the way, p2s sequence is known as http://oeis.org/A000265 , p1s is 4 - A007814, and p2s[i]/2**p1s[i] is just i/16. It is time to get rid of these arrays.
2018-10-16LASTEXPRESS: support for delay-activated soundsEvgeny Grechnikov
Not very obvious, but noticeable e.g. when knocking on harem doors. I suppose this is the problem that wiki describes as "improper triggering of actions on sound end".
2018-10-16LASTEXPRESS: Remove Engine Specific All Debug Level.D G Turner
This is replaced by the global "all" option for debugflags and defining this triggers a warning about the conflict at runtime.
2018-10-16LASTEXPRESS: Fix Compiler Warning in Sound Code.D G Turner
The SoundFlag type is an enumeration which have a default underlying type of unsigned int in most case. Thus comparing this to -1 causes a compiler warning. Since the default entity sound flag type is 0xFFFF... which is equivalent to -1, then replacing this with the correct enum symbol fixes the issue and should result in the correct behaviour. Examination of the resulting code line seems to confirm that this is the correct expected logic.
2018-10-16LASTEXPRESS: drop sound threadEvgeny Grechnikov
The backend runs its own sound thread anyway, with the corresponding bookkeeping that we use. We don't need yet another sound thread, and it is always nice to not have something that could change our structures from underneath us.
2018-10-16LASTEXPRESS: fix race condition in sound codeEvgeny Grechnikov
SoundEntry::play() calls StreamedSound::setFilterId(), StreamSound::setFilterId() requires the underlying reference to be alive. SoundQueue::handleTimer() checks that the stream is still alive by calling SoundEntry::isFinished(). However, if the stream is finalized just between calls to SoundEntry::isFinished() and SoundEntry::play(), the sound mixer frees the stream leading to use-after-free in setFilterId(). Turn off the automatical disposing, delete the stream in SoundEntry::~SoundEntry().
2018-10-14LASTEXPRESS: Fix compilation with some compilersThierry Crozat
2018-10-14LASTEXPRESS: refactor sound flagsEvgeny Grechnikov
Merge SoundFlag and SoundStatus into a single enum; SoundEntry::setupStatus just casts one to another. Keep only definitions of bits in SoundFlag; drop compound flags like kFlagSteam = kSoundTypeAmbient | kSoundFlagLooped | kVolume7, use ORed simple flags in calls; change the signature of SoundManager::playSoundWithSubtitles to use uint32 instead of SoundFlag to avoid excess casting. Add meaningful names to flags; add some comments. Get rid of endian-unsafe SoundStatusUnion. Fixes an issue with big-endian hosts. No changes in behaviour on little-endian hosts.
2018-10-14LASTEXPRESS: fix constants in sound serializerEvgeny Grechnikov
Wrong enum member used: (status & 0x7000000) should be checked against 0x3000000, not against 3 (this is a check of sound type to skip menu sounds in savefiles). Activate delay should not be compared with sound volume; comparison with 0x8000000 is just a sanity check against overflow.
2018-09-24LASTEXPRESS: Fix GCC Enum Comparison Mismatch Warning.D G Turner
This was previously comparing the Object Model to the Object Enum. This has been corrected, but should have no functional change as the underlying enum value of 1 is identical for both symbols.
2018-09-24LASTEXPRESS: Fix GCC WarningsD G Turner
These were for missing parentheses to clarify logical expressions.
2018-09-24LASTEXPRESS: more fixes in NPC logicEvgeny Grechnikov
2018-09-14LASTEXPRESS: Add Missing End Markers to Detection Entry File Lists.D G Turner
This omission might have caused detection issues, but unlikely to cause crashes.
2018-09-14LASTEXPRESS: added detection entry for gog releaseMartin Gerhardy
2018-09-13LASTEXPRESS: fixed warnings with gcc 8.2Martin Gerhardy
engines/lastexpress/entities/alexei.cpp: In member function ‘void LastExpress::Alexei::standingAtWindow(const LastExpress::SavePoint&)’: engines/lastexpress/entities/alexei.cpp:772:49: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ engines/lastexpress/entities/chapters.o engines/lastexpress/entities/august.cpp: In member function ‘void LastExpress::August::function21(const LastExpress::SavePoint&)’: engines/lastexpress/entities/august.cpp:672:4: warning: this statement may fall through [-Wimplicit-fallthrough=] switch(params->param5) { ^~~~~~ engines/lastexpress/entities/august.cpp:694:3: note: here case 9: ^~~~
2018-09-11LASTEXPRESS: more fixes in NPC logicEvgeny Grechnikov
2018-09-02LASTEXPRESS: more fixes in NPC logicEvgeny Grechnikov
2018-08-26LASTEXPRESS: fix gcc buildEvgeny Grechnikov
2018-08-26LASTEXPRESS: multiple fixes in NPC logicEvgeny Grechnikov
Checked the logic against the original game (to be precise, DOS English version from GOG, although I think AI logic has no significant differences with other versions). Fixed a *lot* of errors with varying visibility for the user. Also, save+exit+load sometimes resulted in memory corruption like ((EntityParametersSSII*)(new EntityParametersIIII))->param8 = 0; load operation did not restore the correct type of NPC logic context, the default one was used (which also has the smallest sizeof). Should be fixed now. Save+load is still unusable because it locks everybody waiting for kActionEndSound (the sound state is not restored), but, at least, it should not corrupt the memory. Hopefully.
2018-03-23JANITORIAL: Silence GCC 7 fallthrough warningsAdrian Frühwirth
2017-10-07ENGINES: Remove default1x scaler flagColin Snover
This flag is removed for a few reasons: * Engines universally set this flag to true for widths > 320, which made it redundant everywhere; * This flag functioned primarily as a "force 1x scaler" flag, since its behaviour was almost completely undocumented and users would need to figure out that they'd need an explicit non-default scaler set to get a scaler to operate at widths > 320; * (Most importantly) engines should not be in the business of deciding how the backend may choose to render its virtual screen. The choice of rendering behaviour belongs to the user, and the backend, in that order. A nearby future commit restores the default1x scaler behaviour in the SDL backend code for the moment, but in the future it is my hope that there will be a better configuration UI to allow users to specify how they want scaling to work for high resolutions.
2017-08-06JANITORIAL: Silence more GCC 7 warningsTorbjörn Andersson
All these fall through were marked as deliberate, so again I've only changed the comment to silence GCC.
2016-09-23LASTEXPRESS: Rename Vassili functionsLittleboy
2016-09-23LASTEXPRESS: Rename Vesna functionsLittleboy
2016-09-23LASTEXPRESS: Rename Tatiana functionsLittleboy
2016-05-17ALL: Change main engine header guard defines to <directory>_<engine>_HEugene Sandulenko
Recently we started to use this as new semantics, although in the past we used simly <engine>_H. Now these guard defines are consistent with rest of the files which are used in the engines.
2016-05-13LASTEXPRESS: Fixed potential buffer overrunEugene Sandulenko
2016-05-03LASTEXPRESS: Fix logic comparisonEugene Sandulenko
2016-03-08ENGINES: Make variable names of AdvancedMetaEngine conform to our guidelines.Johannes Schickel
_singleid -> _singleId _gameids -> _gameIds _guioptions -> _guiOptions
2016-03-05CONFIGURE: Introduced new engine dependency: highresEugene Sandulenko
Some backends like GCW0 do no support graphics >320x240 due to the hardware limitation (downscaling is possible but it will ruin the pixel hunting which is often part of the gameplay). Instead of manually updating the list of engines, we now introduce a new dependency. I marked all relevant engines, but some, like tinsel, require more work with putting their relevant high-res games under USE_HIGHRES define.
2015-11-27LASTEXPRESS: Removing excess checkEugene Sandulenko
2015-08-30AUDIO: Make Rewindable- and SeekableAudioStream inherit virtuallyMatthew Hoops
2014-06-16LASTEXPRESS: Fix potential out-of-bounds read. CID 1003992Littleboy
2014-06-16LASTEXPRESS: Check for resulting sequence size in August logic code. CID 1003264Littleboy
2014-06-16LASTEXPRESS: Add assert check in Gendarmes logic. CID 1003263Littleboy
2014-06-16LASTEXPRESS: Rename Ivo functionsLittleboy
2014-06-16LASTEXPRESS: Fix comparison in sound entry serialization. CID 1004148Littleboy
2014-06-16LASTEXPRESS: Add asserts in sound entry serialization and update code. CID ↵Littleboy
1003259, 1003260
2014-06-16LASTEXPRESS: Check that the archive is loaded correctly in debug code. CID ↵Littleboy
1003848, 1003849