Commit graph

95 commits

Author SHA1 Message Date
Eugene Sandulenko
3e0663a516 AGI: Clean up object initialization 2016-06-05 23:10:20 +02:00
Eugene Sandulenko
0d356d1c66 AGI: Safer string copying 2016-05-10 18:07:35 +02: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
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
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
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
f5a83adc01 AGI: Fix various CIDs
CID 1350104: regression from graphics rewrite in C64 picture drawing
CID 1350101: potential buffer overflow in set.simple command
CID 1350112: uninitialized variable in TextMgr
CID 1350113: false positive uninitialized variable in SystemUI
CID 1350114: potentially uninitialized variable in IIgsSample
CID 1350117: false positive uninitialized variable in InventoryMgr
CID 1350103: code bug in CGA rendering TextMgr::charAttrib_Set()
CID 1350109: false positive in GfxFont::loadFontAmigaPseudoTopaz()
CID 1350111: original AGI uninitialized memory issue
             in SpritesMgr::showObject
2016-02-09 12:47:45 +01:00
Martin Kiewitz
c43ee3a7a5 AGI: Fix regression from stringWordWrap rewrite
Space at the end of the string was handled inaccurately
Fixes kq1 text scrolling bug #7021
Rewrite was done in commit efb6532468
2016-02-07 00:24:11 +01:00
Martin Kiewitz
efb6532468 AGI: Rewrote stringWordWrap()
Original code wasn't accurate
2016-02-05 14:13:45 +01:00
Martin Kiewitz
9620979def AGI: Add Atari ST system UI buttons 2016-02-04 15:30:50 +01:00
Martin Kiewitz
e019323f07 AGI: Add Apple IIgs system UI buttons
For Restart/Quit/Pause dialog
2016-02-04 12:51:35 +01:00
Martin Kiewitz
a9bb8c3a50 AGI: Message box mouse support 2016-02-03 08:27:44 +01:00
Martin Kiewitz
d23871fdd8 AGI: Rename WINDOWRESET to WINDOW_AUTO_CLOSE_TIMER 2016-02-03 04:17:15 +01:00
Martin Kiewitz
778c1ddb69 AGI: Cycle event processing changed
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-03 02:21:07 +01:00
Martin Kiewitz
702b66a49d AGI: Make inner loop handlers consistent 2016-02-03 01:41:32 +01:00
Martin Kiewitz
8271058a45 AGI: Implement messageBox() as inner loop
Also remove _game.keypress, _game.msgBoxTicks
2016-02-03 01:32:57 +01:00
Martin Kiewitz
563d890991 AGI: Fix regression of have.key changes
original commit 8269a94bcd
Now hopefully properly implemented.
Adjusted a few more inaccuracies
(we set v19 to 0, where we shouldn't have)
2016-02-03 00:26:35 +01:00
Johannes Schickel
6778175f6d AGI: Fix formatting.
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-02 20:15:18 +01:00
Martin Kiewitz
839ac0a6a4 AGI: Rename _game.lognum to _game.curLogicNr
Also a bit of cleanup
2016-02-01 16:21:13 +01:00
Martin Kiewitz
c28e101cdb AGI: implement predictive dialog 2016-02-01 01:34:36 +01:00
Martin Kiewitz
4bc01ab7d5 AGI: getflag/setflag/etc. cleanup
renamed getflag() to getFlag()
renamed setflag() to setFlag()
renamed flipflag() to flipFlag()
preagi: renamed setFlag for this engine to setWinnieFlag
2016-01-31 17:56:53 +01:00
Martin Kiewitz
82b958f274 AGI: VM Var code cleanup
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-31 17:35:13 +01:00
Martin Kiewitz
0f15ec2ce8 AGI: use Common::RenderMode instead of its own
AppleIIgs + Atari ST weren't available back then in the enum.
They now are, so I can use the Common one.
2016-01-29 15:43:45 +01:00
Martin Kiewitz
8a595e7771 AGI: graphics rewrite + cleanup
- 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
2016-01-29 13:22:22 +01:00
Martin Kiewitz
a709596b48 AGI: implement original sierra font, fix bug #6405
custom font is still used for fanmade games
i cannot test preAGI games, because I don't own
those.
2015-05-19 12:39:39 +02:00
Johannes Schickel
6aac905dfd AGI: Make GPL headers consistent in themselves. 2014-02-18 02:39:32 +01:00
Johannes Schickel
89abab97e3 JANITORIAL: Remove trailing whitespaces.
Powered by:
git ls-files "*.cpp" "*.h" "*.m" "*.mm" | xargs sed -i -e 's/[ \t]*$//'
2012-09-26 04:17:55 +02:00
D G Turner
f722542cee AGI: Replace usage of 'goto'. 2011-12-10 20:12:35 +00:00
Eugene Sandulenko
d0bb81f566 AGI: Fix warnings 2011-11-02 22:20:40 +00:00
Filippos Karapetis
97eb354672 AGI: Fixed bug #3420859 - "AGI: SQ0 - Scummvm Crash"
The length requested in this case is 250, which overflows a char variable
2011-10-10 02:12:48 +03:00
Filippos Karapetis
91e51dc510 AGI: Removed leftover dead code 2011-09-26 15:27:05 +03:00
Filippos Karapetis
420c9f5550 AGI: Fixed invalid memory writes in wordWrapString() 2011-09-26 15:22:48 +03:00
Filippos Karapetis
686a328b48 AGI: Fixed the line changing code, and added EOL checks
The extra checks make sure that there isn't an extra line added at the
end of the string. They're added as a precautionary measure
2011-09-26 15:21:04 +03:00
Filippos Karapetis
cf071732b1 AGI: Cleanup, added some comments, removed an obsolete FIXME 2011-09-26 12:11:55 +03:00
Willem Jan Palenstijn
7d8bba26eb AGI: Add FIXME for wordwrap buffer overflow 2011-09-26 10:45:31 +02:00
Filippos Karapetis
62c8d82560 AGI: Fixed the actual cause of bug #3295652, and partially fixed bug #3080415 2011-09-26 03:50:58 +03:00
Filippos Karapetis
bd6a05bdd4 AGI: Fix bug #3080041 - "AGI Mother Goose: White bar in intro" 2011-09-26 00:11:45 +03:00
Filippos Karapetis
453fab3de1 SCI: Added a workaround for bug #3295652 - "AGI: (Fan) SQ0: Animation overdraws some of the text window" and removed some duplicate code 2011-09-25 21:27:12 +03:00
Filippos Karapetis
b56c5cc370 AGI: Fixed EOF in text.cpp 2011-09-25 18:47:17 +03:00
Filippos Karapetis
18a0214672 AGI: Resolved an old FIXME concerning OOB access 2011-09-25 18:35:37 +03:00
Max Horn
71ea5acd29 AGI: Replace vsprintf by Common::String::vformat 2011-06-18 01:36:15 +02:00
Willem Jan Palenstijn
72acac58b6 AGI: Cleanup 2011-05-17 21:21:51 +02:00
strangerke
69b1485a22 GIT: Clean up: Suppress SVN tags, now useless 2011-05-12 01:16:22 +02:00
Max Horn
84184aabc0 ALL: colour -> color 2011-04-14 14:12:35 +02:00
Max Horn
2d1c8a3533 ALL: Fix whitespaces / indention
svn-id: r55818
2011-02-07 23:01:06 +00:00
Torbjörn Andersson
93df097f39 Added the same quit/restart test to print() as we have in so many other places.
This makes it easier to quit the game during the text box in the King's Quest 3
into, and probably other places as well.

svn-id: r49881
2010-06-15 18:17:51 +00:00
Eugene Sandulenko
a993e2fb45 AGI: Fix bug #2960563.
Bug #2960563: "AGI: (Fan) SQ0: Text input field overdraws Text window".
Now our text wrapping code matches original.

svn-id: r49736
2010-06-15 10:28:58 +00:00
Eugene Sandulenko
316e171e67 AGI: Fix bug #2959630.
Bug #2959630: "LSL1: Security in blackjack" fixed by partially
reverting r41241. Do not clear prompt without on disabling input.

svn-id: r49732
2010-06-15 10:27:42 +00:00
Eugene Sandulenko
14205bdbc0 AGI: add more status-related debug output.
svn-id: r49731
2010-06-15 10:27:23 +00:00