1304 Commits

Author SHA1 Message Date
Bastien Bouclet
3eb82462e7 ALL: Specify the DisposeAfterUse constructor argument for dynamic memory write streams 2017-09-22 07:06:21 +02:00
Eugene Sandulenko
200b9070b3 AGI: PREAGI: Add one more missing break statement 2017-08-11 20:38:35 +02:00
Eugene Sandulenko
18e263129f AGI: PREAGI: Add missing break statements 2017-08-11 20:33:21 +02:00
Torbjörn Andersson
70a2ca8b7d JANITORIAL: Silence more GCC 7 warnings
All these fall through were marked as deliberate, so again I've only
changed the comment to silence GCC.
2017-08-06 13:30:51 +02:00
Torbjörn Andersson
14525bb412 JANITORIAL: Silence some GCC 7 warnings
We have lots and lots of -Wimplicit-fallthrough warnings, and I
don't know if it's worth fixing them or not. But if we want to,
this is how it can be done.
2017-08-06 11:48:14 +02:00
Martin Kiewitz
77d232fbe2 AGI: always stop sound/music, when calling restore/save since 2.272
and therefore set the "fully played"-flag/variable, so that scripts
don't block forever in for example Police Quest 1 poker back room.
Fixes bug #9706
Thanks waltervn
2017-02-25 20:43:14 +01:00
Martin Kiewitz
be763b59aa AGI: act on exitAllLogics in testIfCode (fixes bug #9707)
Thanks waltervn for finding this one.
Was a regression caused by the timer heuristic for detecting
bad script code. When the heuristic identified being in an
inner timer loop, it told ScummVM to sleep + process events.
During that time a restore can get triggered by the user via GMM.
When that happens, the restore is executed immediately.
When still being inside testIfCode(), it may happen that execution
goes beyond the end of the current logic incl. error/crash.
TODO: maybe better change GMM as a whole for AGI, that restores are
always processed in a delayed way after main loop got processed
once?
2017-02-24 00:54:40 +01:00
Martin Kiewitz
9dd0cd51d5 AGI: Clean up VM opcode handling
so that invalid opcodes won't crash ScummVM anymore
2017-02-23 23:54:45 +01:00
Martin Kiewitz
e64e388816 AGI: Hold-key-mode fix
Original AGI only created a stationary event, when the last
pressed direction key was released. We do that now as well.
Makes cursor in MH1 behave properly.
Thanks to waltervn for pointing this out.
2017-02-11 10:35:10 +01:00
Martin Kiewitz
eeaddfb20a AGI: Make MH1 nightclub arcade sequence slower for AppleIIgs
Thanks waltervn for pointing this issue out
AppleIIgs adjustment tables had to be extended, because the first
3 arcade sequences were running way too fast, while the last one
ran fine and all of those are part of one single room.
2017-02-10 19:43:16 +01:00
Ben Castricum
b041618a42 ALL: Remove comma before the word 'instead' 2016-11-29 20:22:19 +01:00
Martin Kiewitz
32ca051485 AGI: Make TIME_DELAY 0 to set the game to 40 fps
Original AGI TIME_DELAY 0 made the game run as fast
as possible. We didn't go that far, but it still seems to run
too fast. This should hopefully fix that.
See bug #9607
2016-10-12 21:48:35 +02:00
Eugene Sandulenko
dead4aa014 JANITORIAL: Remove trailing spaces 2016-10-09 14:59:58 +02:00
Eugene Sandulenko
cad834a69c JANITORIAL: Fix include statements 2016-09-03 15:19:37 +02:00
Alexander Tkachev
b665fc933d ALL: Make simpleSaveNames() a MetaEngineFeature
Added it into hasFeature() of all engines which returned `true` in
simpleSaveNames() before.

As mentioned in #788, SCI is not always using simple names, so it
doesn't have such feature now.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
ab1d160ec8 ALL: Add MetaEngine::simpleSaveNames()
Engines with "simple" savenames would support "Run in background" in
save/load dialog and gradual save slots unlocking. Other engines
save/load feature would be locked until save sync is over.
2016-08-24 16:07:55 +06:00
Eugene Sandulenko
159d993f8e AGI: More class initialization 2016-06-05 23:11:10 +02:00
Eugene Sandulenko
3e0663a516 AGI: Clean up object initialization 2016-06-05 23:10:20 +02:00
Eugene Sandulenko
980d5f3027 Merge pull request #764 from salty-horse/agi_audio
AGI: Reduce audio header dependencies
2016-05-29 14:46:28 +02:00
Torbjörn Andersson
85e55d0c6e JANITORIAL: Remove unnecessary semicolons 2016-05-25 05:37:07 +02:00
Martin Kiewitz
018828ba90 AGI: Fix invalid read (/crash), when shaking screen
Was a regression caused by commit
e1c36a52b561463217e22687605d2f4f1dc33be6
(upscaling + hercules font support)
Thanks to salty-horse for reporting this issue
2016-05-22 22:52:11 +02:00
Ori Avtalion
438f100d5e AGI: Reduce audio header dependencies 2016-05-22 22:02:37 +03:00
Eugene Sandulenko
f6283094ac AGI: Remove useless code.
We set vtEntries to SCREENOBJECTS_MAX, thus, the loop
for (i = vtEntries; i < SCREENOBJECTS_MAX; i++) is a no-op.
2016-05-17 19:04:59 +02:00
Eugene Sandulenko
33abb6118f ALL: Change main engine header guard defines to <directory>_<engine>_H
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-17 18:21:30 +02:00
Eugene Sandulenko
0d356d1c66 AGI: Safer string copying 2016-05-10 18:07:35 +02:00
Eugene Sandulenko
afdbfe4d2f AGI: Reset all timers on startup 2016-05-07 10:25:09 +02:00
Ori Avtalion
3564032330 JANITORIAL: Reduce audio header dependencies 2016-04-14 16:10:21 +03:00
Ori Avtalion
31130f08dc AGI: Move predictivedialog.h out of agi.h 2016-04-13 14:27:21 +03:00
Martin Kiewitz
184a448bb6 AGI: Fix inaccurate predictive dialog trigger rect
Trigger rect is the rect, that the user needs to click to
trigger the predictive dialog.

Previously cursor char got drawn, rect started right afterwards
In case cursor char is enabled, the rect will get adjusted
accordingly now.
2016-03-23 23:49:01 +01:00
Johannes Schickel
3aecd8ef2a ENGINES: Make variable names of ADGameDescription conform to our guidelines.
gameid     -> gameId
guioptions -> guiOptions
2016-03-08 19:01:38 +01:00
Johannes Schickel
0b6befdcc5 ENGINES: Make variable names of AdvancedMetaEngine conform to our guidelines.
_singleid   -> _singleId
_gameids    -> _gameIds
_guioptions -> _guiOptions
2016-03-08 19:01:13 +01:00
Martin Kiewitz
962e32e0ec AGI: Remove comma from "Pause when entering commands" 2016-02-28 15:57:22 +01:00
Martin Kiewitz
e6466b20fa AGI: Add optional "pause, when entering commands" feature
Shows a prompt window and pauses the game (just like original AGI
did, but original AGI only did it in Hercules rendering mode).
2016-02-28 15:50:25 +01:00
Torbjörn Andersson
9d4216e158 AGI: Fix small memory leak in Hercules font loader 2016-02-28 14:34:22 +01:00
Martin Kiewitz
0caef5d8d0 AGI: Set monitor VM var to EGA for Hercules rendering
Original AGI Hercules rendering was restricted by the Hercules
resolution, which is why they had to remove the AGI prompt and
replace it with a prompt window like the one used in SCI.
We are not and even when we support that prompt window, we
will still support the original AGI prompt even for Hercules
rendering.
Maybe some games had special graphic code, when Hercules rendering
is active. This needs to get checked.

We are now telling the scripts that we are running on EGA,
so that they don't put text at different coordinates.
Hercules rendering also used a different grid for putting text
for example Space Quest 2 right at the start.
This change avoids problems with such placement. We don't really
want to restrict ourselves by implementing that different
text grid resolution.

Also added comments on game feature flags.
2016-02-28 14:06:22 +01:00
Martin Kiewitz
953c26cbf6 AGI: Disable font loading from HGC_GRAF.OVL (AGI3)
It seems Sierra basically put a low res font in there, so
it's useless. We should rather directly use the PC BIOS font
in those cases. The code could be useful at some point in case
we add support for the AGI3 Hercules rendering, although I think
it looks worse, because graphics are basically "compressed".
2016-02-28 11:56:48 +01:00
Martin Kiewitz
7a169c90f6 AGI: Hercules rendering for game screen 2016-02-28 11:23:31 +01:00
Martin Kiewitz
e1c36a52b5 AGI: Add support for upscaling and Hercules hires font
- User option to force Hercules hires font for any rendering mode
- Also change mouse cursor hotspots from 1,1 to 0,0
- Fix inaccuracy in mouse controlled game menu
- Change render_Block(), drawBox(), drawDisplayRect() to use
  upper Y instead of lower Y. Original AGI uses lower Y, but
  upper Y makes upscaling way easier.
2016-02-27 21:44:21 +01:00
Johannes Schickel
f3f37af61b AGI: Let listSaves return list sorted on slot numbers. 2016-02-25 21:39:45 +01:00
Martin Kiewitz
fb007a5914 AGI: Add detection for 13th Disciple 1.01 bug #7010 2016-02-25 18:16:01 +01:00
Martin Kiewitz
4ad1bbf108 AGI: Add detection for fan games with broken volume bug #7035
Plenty of fan games set volume to mute, because they thought 15
would be loudest. It's in fact "mute" in AGI. Those games were
made primarily for PC AGI, which did not use the volume setting.
We do, so such games would get muted audio. We try to detect
such games. Hopefully fully fixes bug #7035.
Too many games to try them all out.
2016-02-20 14:53:17 +01:00
Martin Kiewitz
29456da421 AGI: Added comments about Black Cauldron+KQ2, removed warning
Also removed old comments about testing needed for IIgs
Also removed warning when game speed is overwritten for IIgs,
b/c all games were tested and should run properly now.
2016-02-20 13:17:16 +01:00
Martin Kiewitz
327ba19d4a AGI: Comment about another artificial delay situation
Gold Rush, Stagecoach path, after solving steep hill
2016-02-19 16:24:58 +01:00
Martin Kiewitz
4a204af5b7 AGI: Fix a tiny inaccuracy in string word wrapper
Fixes one message box in Gold Rush during Stagecoach path,
that wasn't wrapped correctly.
2016-02-19 15:56:00 +01:00
Martin Kiewitz
453a8ac11d AGI: Add artificial delay for GR stagecoach path 2016-02-19 15:28:34 +01:00
Martin Kiewitz
22522196f4 AGI: Slightly change artificial delay to detect GR mule
Now also detects the text, that is shown when following your
mule in Gold Rush!
2016-02-19 12:52:19 +01:00
Martin Kiewitz
dd83d7a544 AGI: Fix comment about end.of.loop/motion 2016-02-19 10:38:24 +01:00
Martin Kiewitz
5484f0bc58 AGI: Add detection+workaround for endofloop+motion at the same time
Detects when end.of.loop + motions are used on the same screen
object at the same time, which would have resulted in flag
corruption in the original interpreter. We detect this
situation now, show a warning and disable the cycler in case
cycler was activated first.
This solves a new issue in kq1, when grabbing the eagle in room
22, that was previously hidden just like in the original AGI.
Fixes bug #7046
2016-02-19 10:34:37 +01:00
Martin Kiewitz
cca9fc918f AGI: Save screen object loop_flag
loop_flag was previously vt.parm1, which was shared for multiple
uses. Was split up during graphics rewrite in commit
8a595e7771aa89d06876e13d7ab6751e26da8982

Is indirectly part of bug #7046. Saving, restarting ScummVM and
restoring right after grabbing the eagle resulted in the glitch
not happening (which was of course an inaccuracy anyway). This
was caused by AGI currently not saving/restoring the loop_flag.
Needs to get further figured out what's exactly happening
internally and if this issue was just hidden by the shared
vt.parm1 in previous versions. If triggered, it would have
just set another pseudo-random flag on end-of-loop.
2016-02-19 02:00:35 +01:00
Eugene Sandulenko
1a542ae82c AGI: Add missed comma 2016-02-18 17:43:38 +01:00