aboutsummaryrefslogtreecommitdiff
path: root/engines/agi
AgeCommit message (Collapse)Author
2018-05-10ENGINES: Add unknown game variants to the game detector resultsBastien Bouclet
2018-04-07ALL: Load savegame thumbnail only when necessaryAdrian Frühwirth
This commit introduces the following changes: 1. Graphics::loadThumbnail() Now returns a boolean and takes a new argument skipThumbnail which defaults to false. In case of true, loadThumbnail() reads past the thumbnail data in the input stream instead of actually loading the thumbnail. This simplifies savegame handling where, up until now, many engines always read the whole savegame metadata (including the thumbnail) and then threw away the thumbnail when not needed (which is in almost all cases, the most common exception being MetaEngine::querySaveMetaInfos() which is responsible for loading savegame metadata for displaying it in the GUI launcher. 2. readSavegameHeader() Engines which already implement such a method (name varies) now take a new argument skipThumbnail (default: true) which is passed through to loadThumbnail(). This means that the default case for readSavegameHeader() is now _not_ loading the thumbnail from a savegame and just reading past it. In those cases, e.g. querySaveMetaInfos(), where we actually are interested in loading the thumbnail readSavegameHeader() needs to explicitely be called with skipThumbnail == false. Engines whose readSavegameHeader() (name varies) already takes an argument loadThumbnail have been adapted to have a similar prototype and semantics. I.e. readSaveHeader(in, loadThumbnail, header) now is readSaveHeader(in, header, skipThumbnail). 3. Error handling Engines which previously did not check the return value of readSavegameHeader() (name varies) now do so ensuring that possibly broken savegames (be it a broken thumbnail or something else) don't make it into the GUI launcher list in the first place.
2017-12-03ALL: Remove obsolete register keywordColin Snover
The register keyword was deprecated from the C++11 standard, <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4193.html#809>, and removed from the C++17 standard, <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4340>, so cannot exist in a well-formed C++17 program. It has never done anything in GCC <https://gcc.gnu.org/ml/gcc/2010-05/msg00113.html> and because of the way it is specified in the standard, it is “as meaningful as whitespace” <http://www.drdobbs.com/keywords-that-arent-or-comments-by-anoth/184403859>. The one remaining use of the register keyword is in the DS backend, where it is used to create a local register variable using the non-standard GCC Extended Asm feature. Closes gh-1079.
2017-11-19EVENTS: Rename synthetic to kbdRepeatBastien Bouclet
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-09-22ALL: Specify the DisposeAfterUse constructor argument for dynamic memory ↵Bastien Bouclet
write streams
2017-08-11AGI: PREAGI: Add one more missing break statementEugene Sandulenko
2017-08-11AGI: PREAGI: Add missing break statementsEugene Sandulenko
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.
2017-08-06JANITORIAL: Silence some GCC 7 warningsTorbjörn Andersson
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-02-25AGI: always stop sound/music, when calling restore/save since 2.272Martin Kiewitz
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-24AGI: act on exitAllLogics in testIfCode (fixes bug #9707)Martin Kiewitz
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-23AGI: Clean up VM opcode handlingMartin Kiewitz
so that invalid opcodes won't crash ScummVM anymore
2017-02-11AGI: Hold-key-mode fixMartin Kiewitz
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-10AGI: Make MH1 nightclub arcade sequence slower for AppleIIgsMartin Kiewitz
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.
2016-11-29ALL: Remove comma before the word 'instead'Ben Castricum
2016-10-12AGI: Make TIME_DELAY 0 to set the game to 40 fpsMartin Kiewitz
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-09JANITORIAL: Remove trailing spacesEugene Sandulenko
2016-09-03JANITORIAL: Fix include statementsEugene Sandulenko
2016-08-24ALL: Make simpleSaveNames() a MetaEngineFeatureAlexander Tkachev
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-24ALL: Add MetaEngine::simpleSaveNames()Alexander Tkachev
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-06-05AGI: More class initializationEugene Sandulenko
2016-06-05AGI: Clean up object initializationEugene Sandulenko
2016-05-29Merge pull request #764 from salty-horse/agi_audioEugene Sandulenko
AGI: Reduce audio header dependencies
2016-05-25JANITORIAL: Remove unnecessary semicolonsTorbjörn Andersson
2016-05-22AGI: Fix invalid read (/crash), when shaking screenMartin Kiewitz
Was a regression caused by commit e1c36a52b561463217e22687605d2f4f1dc33be6 (upscaling + hercules font support) Thanks to salty-horse for reporting this issue
2016-05-22AGI: Reduce audio header dependenciesOri Avtalion
2016-05-17AGI: Remove useless code.Eugene Sandulenko
We set vtEntries to SCREENOBJECTS_MAX, thus, the loop for (i = vtEntries; i < SCREENOBJECTS_MAX; i++) is a no-op.
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-10AGI: Safer string copyingEugene Sandulenko
2016-05-07AGI: Reset all timers on startupEugene Sandulenko
2016-04-14JANITORIAL: Reduce audio header dependenciesOri Avtalion
2016-04-13AGI: Move predictivedialog.h out of agi.hOri Avtalion
2016-03-23AGI: Fix inaccurate predictive dialog trigger rectMartin Kiewitz
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-08ENGINES: Make variable names of ADGameDescription conform to our guidelines.Johannes Schickel
gameid -> gameId guioptions -> guiOptions
2016-03-08ENGINES: Make variable names of AdvancedMetaEngine conform to our guidelines.Johannes Schickel
_singleid -> _singleId _gameids -> _gameIds _guioptions -> _guiOptions
2016-02-28AGI: Remove comma from "Pause when entering commands"Martin Kiewitz
2016-02-28AGI: Add optional "pause, when entering commands" featureMartin Kiewitz
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-28AGI: Fix small memory leak in Hercules font loaderTorbjörn Andersson
2016-02-28AGI: Set monitor VM var to EGA for Hercules renderingMartin Kiewitz
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-28AGI: Disable font loading from HGC_GRAF.OVL (AGI3)Martin Kiewitz
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-28AGI: Hercules rendering for game screenMartin Kiewitz
2016-02-27AGI: Add support for upscaling and Hercules hires fontMartin Kiewitz
- 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-25AGI: Let listSaves return list sorted on slot numbers.Johannes Schickel
2016-02-25AGI: Add detection for 13th Disciple 1.01 bug #7010Martin Kiewitz
2016-02-20AGI: Add detection for fan games with broken volume bug #7035Martin Kiewitz
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-20AGI: Added comments about Black Cauldron+KQ2, removed warningMartin Kiewitz
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-19AGI: Comment about another artificial delay situationMartin Kiewitz
Gold Rush, Stagecoach path, after solving steep hill
2016-02-19AGI: Fix a tiny inaccuracy in string word wrapperMartin Kiewitz
Fixes one message box in Gold Rush during Stagecoach path, that wasn't wrapped correctly.
2016-02-19AGI: Add artificial delay for GR stagecoach pathMartin Kiewitz