aboutsummaryrefslogtreecommitdiff
path: root/engines/agi/agi.h
AgeCommit message (Collapse)Author
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-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-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-19AGI: Add detection+workaround for endofloop+motion at the same timeMartin Kiewitz
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-16AGI: Change how VM timer vars are handledMartin Kiewitz
Instead of directly converting play time to VM timer vars, we only adjust VM timer vars according to play time seconds delta. This is needed for at least Mixed Up Mother Goose. The game sets the VM "second" variable to 0 and then uses it for syncing the text to the songs. We even adjust second calculation, so that the timing should always be the same and not depend on basically luck (seconds may wrap right after setting it, because internal cycles counter is not changed).
2016-02-14AGI: Changes to vm var seconds heuristic (delay loop detection)Martin Kiewitz
- small fix (forgot to reset the hit counter) - rename methods - added more information about PQ1 in comment
2016-02-14AGI: Add heuristic to detect delay loops within scriptsMartin Kiewitz
And in that case poll events, delay for a few milliseconds and update screen. This somewhat worked before the graphics rewrite because of a timer hack. This one tries to detect actual inner loops. Happens in at least Police Quest 1 when playing poker.
2016-02-13AGI: Adding seconds of current time to saved gamesMartin Kiewitz
Useful to properly detect the most recent saved game (that's done by the original save/restore dialogs)
2016-02-11AGI: Rename nonBlockingText -> artificialDelayMartin Kiewitz
Also add a table for Apple IIgs games for music issues like in PQ1 intro, where the developers thought that loading a new room would take X amount of time and they started loading before the music was done. In our AGI music may get cut off because of this. It of course also happens, when using the original interpreter, as soon as you emulate a faster processor. Which means this is also a workaround. See bug #7026
2016-02-04AGI: Fix Hold-Key-Mode implementationMartin Kiewitz
Hold-Key-Mode got introduced v2.425, it was simply not possible to disable it until 3.098. Now creating a AGI_KEY_STATIONARY event, so that it works properly Fixes Mixed Up Mother Goose
2016-02-04AGI: Add Apple IIgs system UI buttonsMartin Kiewitz
For Restart/Quit/Pause dialog
2016-02-03AGI: Rename WINDOWRESET to WINDOW_AUTO_CLOSE_TIMERMartin Kiewitz
2016-02-03AGI: Remove unused initialized variableMartin Kiewitz
2016-02-03AGI: Remove _game.state, not needed anymoreMartin Kiewitz
2016-02-03AGI: Change cycle delay handling, seems to fix GRMartin Kiewitz
Removed pollTimer() Renamed pause() to wait() Doing 10 msec delays instead of at least 50 msec per EventProcess Seems to fix weird Gold Rush ingame timer issue?! bug #4147
2016-02-03AGI: Cycle event processing changedMartin Kiewitz
processEvents() renamed to processScummVMEvents() mainCycle() renamed to processAGIEvents() have.key now sets up an inner loop and calls processAGIEvents() to avoid any further cycle work processing
2016-02-03AGI: Implement messageBox() as inner loopMartin Kiewitz
Also remove _game.keypress, _game.msgBoxTicks
2016-02-03AGI: Fix regression of have.key changesMartin Kiewitz
original commit 8269a94bcd55200f7ae8aba00c7b6fd0d37b9a37 Now hopefully properly implemented. Adjusted a few more inaccuracies (we set v19 to 0, where we shouldn't have)
2016-02-02AGI: Remove inputMode, not needed anyoreMartin Kiewitz
2016-02-02AGI: Use inner loop functionality for have.keyMartin Kiewitz
Also do it like the original interpreter did it
2016-02-02AGI: Fix formatting.Johannes Schickel
This mostly enforces tabs for indentation and spaces for formatting. But also fixes spaces on empty lines, some extra/missing spaces. astyle + manual fixup
2016-02-02AGI: mouse support for menuMartin Kiewitz
2016-02-01AGI: change how menus are triggered on Non-PCMartin Kiewitz
2016-02-01AGI: Pass vm pointer directly to commandsMartin Kiewitz
No functional change
2016-02-01AGI: Rename _game.lognum to _game.curLogicNrMartin Kiewitz
Also a bit of cleanup
2016-02-01AGI: Change _game.exitAllLogics to booleanMartin Kiewitz
2016-02-01AGI: Remove _game.hasPrompt, no longer neededMartin Kiewitz
2016-02-01AGI: Remove old clockEnabled booleanMartin Kiewitz
No longer needed We use ScummVM system total play time functionality instead
2016-02-01AGI: implement predictive dialogMartin Kiewitz
2016-01-31AGI: Fix warningWillem Jan Palenstijn
2016-01-31AGI: vol system setting gets sent to scriptsMartin Kiewitz
Volume changes in ScummVM system menu now gets sent to scripts as well.
2016-01-31AGI: properly implement volume control + syncMartin Kiewitz
Original code did assume that AGI volume level is 0-15 (0 for silence, 15 for maximum volume). It actually is the other way. 0 is maximum, 15 is silence. Fixed that. Also implemented sync with ScummVM settings dialog. In case "mute" is enabled by the user, any volume changes done by scripts are ignored. Fixes Manhunter 1 Apple IIgs not getting sound anymore since the VM Var cleanup (the script volume change by the scripts didn't reach us before)
2016-01-31AGI: remove timer hack, implement in game timerMartin Kiewitz
in game timer is now updated, when scripts read in game timer VM variables and during main loop. ScummVM total play time feature is used for it. Game cycle syncing is done at the same time.
2016-01-31AGI: adjust getFlag(), setVar() and getVar()Martin Kiewitz
2016-01-31AGI: getflag/setflag/etc. cleanupMartin Kiewitz
renamed getflag() to getFlag() renamed setflag() to setFlag() renamed flipflag() to flipFlag() preagi: renamed setFlag for this engine to setWinnieFlag
2016-01-31AGI: VM Var code cleanupMartin Kiewitz
Don't access variables directly, but through method Shouldn't include any functional differences Also changed several hardcoded values to the corresponding enums.
2016-01-31AGI: copying between var + ego screen obj fixedMartin Kiewitz
We copied the wrong way see cycle.cpp This fixes the fan game 13th disciple. bug #3563 Also cleanup playercontrol variable is now a boolean
2016-01-29AGI: new font class createdMartin Kiewitz
moved font stuff into GfxFont class removed Mickey Mouse font data (is loaded from mickey.exe)
2016-01-29AGI: use Common::RenderMode instead of its ownMartin Kiewitz
AppleIIgs + Atari ST weren't available back then in the enum. They now are, so I can use the Common one.
2016-01-29AGI: graphics rewrite + cleanupMartin Kiewitz
- graphics code fully rewritten - Apple IIgs font support - Amiga Topaz support - Word parser rewritten - menu code rewritten - removed forced 2 second delay on all room changes replaced with heuristic to detect situations, where it's required - lots of naming cleanup - new console commands show_map, screenobj, vmvars and vmflags - all sorts of hacks/workarounds removed - added SCI wait mouse cursor - added Apple IIgs mouse cursor - added Atari ST mouse cursor - added Amiga/Apple IIgs transition - added Atari ST transition - user can select another render mode and use Apple IIgs palette + transition for PC versions - inventory screen rewritten - SetSimple command now properly implemented - PreAGI Mickey: Sierra logo now shown - saved games: now saving controller key mapping also saving automatic save data (SetSimple command) - fixed invalid memory access when saving games (31 bytes were saved using Common::String c_ptr() Special Thanks to: - fuzzie for helping out with the Apple IIgs font + valgrind - eriktorbjorn for helping out with valgrind - LordHoto for figuring out the code, that caused invalid memory access in the original code, when saving a game - sev for help out with reversing the Amiga transition currently missing: - mouse support for menu - mouse support for system dialogs - predictive dialog support
2015-05-19AGI: implement original sierra font, fix bug #6405Martin Kiewitz
custom font is still used for fanmade games i cannot test preAGI games, because I don't own those.
2015-05-15AGI: implement engine option to disable mouseMartin Kiewitz
engine option gets disabled for all Amiga games also disabled for certain fanmade games, which require a mouse. defaults to enabled mouse Engine options are not shown for previously detected games until those games get redetected If there is a way to handle those cases, please fix.
2014-02-18AGI: Make GPL headers consistent in themselves.Johannes Schickel
2013-05-11AGI: Fix bug #3600733 - "AGI FANMADE: function slowing down game"Filippos Karapetis
We now only test for events in testKeypressed() without updating the game cycle at all (NAGI doesn't update the game cycle either). This fixes the slowdowns in some animations where have.key() is issued, like Manannan's lightnings in the intro of KQ3 and the bullets in the intro of PQ1
2012-03-27AGI: Use the ScummVM dialogs for saving/loadingFilippos Karapetis
An option has been added to use the original ones, if needed
2012-03-26AGI: Fix compilation on NDS, broken due to predictive text changes.D G Turner
2012-03-25GUI: Move predictive dialog to common guiOleksiy Kurochko
2012-02-26COMMON: Move RenderMode and GUIOptions functionality into separate filesMax Horn
2012-02-15JANITORIAL: Fix whitespace in pointer template argTarek Soliman
2012-01-06AGI: Clean up predictive matchingWillem Jan Palenstijn
Specifically: * Don't enable the 'next' button in predictive mode when we don't have a full match. Doing this didn't make sense since you'd iterate over a seemingly arbitrary set of completions instead of all possible ones. * Do only a single binary search. * Fix the width of the mode button for mouse press detections.