Commit Graph

1078 Commits

Author SHA1 Message Date
Eugene Sandulenko
22d3118aff AGI: Fix bug #3095169: AGI inventory items 2011-12-13 00:39:50 +00:00
Max Horn
00e6ab43f8 AGI: Add FIXME to cmdCallV1 2011-12-12 17:24:06 +01:00
Max Horn
6310cce74e AGI: Remove two unused pure virtual methods
This avoid warnings, as these methods were being hidden by methods in subclasses
with differing signatures.
2011-12-12 17:17:49 +01:00
D G Turner
f722542cee AGI: Replace usage of 'goto'. 2011-12-10 20:12:35 +00:00
Christoph Mallon
a78b2d777d JANITORIAL: Remove extra semicolons. 2011-11-27 12:54:22 +01:00
Strangerke
bab4b6f729 LAUNCHER: Introduce GUIO0() in order to replace GUIO1(GUIO_NONE) 2011-11-16 22:38:58 +01:00
Johannes Schickel
c5ff6b431b AGI: Change two local SharedPtr uses to ScopedPtr.
I took the opportunity to add two CHECKMEs to the code, which seems to load a
file into memory for no real apparent reason.
2011-11-16 20:31:22 +01:00
Filippos Karapetis
d3858c359f AGI: Commented out if statements that always evaluate to true 2011-11-03 22:55:22 +02:00
Filippos Karapetis
056c3992eb AGI: Commented out if statements that always evaluate to true 2011-11-03 22:36:34 +02:00
Eugene Sandulenko
d0bb81f566 AGI: Fix warnings 2011-11-02 22:20:40 +00:00
Eugene Sandulenko
f6a9c6727d AGI: Fix buffer overflow 2011-11-02 22:20:27 +00:00
Eugene Sandulenko
32972a5ffb AD: Switched rest of the engines to new GUIO 2011-10-23 17:53:13 +01:00
Filippos Karapetis
dbd5ffaf34 AGI: Refine commit #69c705a to always pick the longest matching phrase
Thanks to wjp for his observation in the original commit
2011-10-16 14:36:38 +03:00
Filippos Karapetis
69c705a019 AGI: Fixed bug #3424066 - "LSL1 AGI: Password Glitch"
We should not stop looking when a partial sentence match is found, as a
better match might exist later on. In this case, there were two matching
sentences, "Ken" (which is wrong in this case) and "Ken sent me" (which
is correct, but was never reached as the partial match was returned
first)
2011-10-16 01:11:15 +03: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
3fb2973ed5 AGI: Fixed several incorrect substitutions of "game" with "_game" 2011-09-26 15:42:31 +03:00
Willem Jan Palenstijn
bff2e73dc1 AGI: Fix style 2011-09-26 14:31:04 +02: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
397b4968d9 AGI: Rewrote cmdVersion() to use Common::String
This simplifies the code and avoids heap corruption because of the long
version string
2011-09-26 15:15:39 +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
Willem Jan Palenstijn
c442295b9f AGI: Clean up save/load String usage 2011-09-26 09:27:15 +02:00
Filippos Karapetis
3eb8c9f123 AGI: Fixed the description of KQ2 Amiga (bug #3191496) 2011-09-26 05:38:18 +03:00
Filippos Karapetis
2be8db90ee AGI: Fixed bug #3196882 - "KQ3: PCSpeaker affects render mode" 2011-09-26 05:23:42 +03:00
Filippos Karapetis
5dbb51db6d AGI: Marked 4070342 as a workaround 2011-09-26 04:29:41 +03:00
Filippos Karapetis
40703426c9 AGI: Fix for bug #3018770 - "AGI: PQ1: Flickering newspaper" 2011-09-26 04:23:03 +03: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
ba7d71d553 AGI: doUpdate() already calls updateScreen() 2011-09-26 01:43:14 +03:00
Filippos Karapetis
81fdf2c103 AGI: Fixed bug #3074570 - "AGI LSL1: TAB stops working after restart"
Applied eriktorbjorn's patch from that bug tracker item (slightly
modified), which is what NAGI does, and which fixes restarting in LSL1
and PQ1 (bug #2823762), and other AGI games that do not reset the
controller keys when restarting.
2011-09-26 00:56:10 +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
310fe0a546 AGI: Fix compilation 2011-09-25 22:23:22 +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
0e4b35a8e8 AGI: Switched to Common::String in the save/load code 2011-09-25 21:25:25 +03:00
Filippos Karapetis
c8777b774f AGI: Rewrite getSavegameFilename() so that it doesn't try to return a pointer to a local variable 2011-09-25 19:33:01 +03:00
Filippos Karapetis
b56c5cc370 AGI: Fixed EOF in text.cpp 2011-09-25 18:47:17 +03:00
Filippos Karapetis
bc3c68c508 AGI: Fixed bug #3292784 - "AGI: SQ2: Name forgotten after game restart"
The string buffer should not be cleared on game restart, as game scripts
depend on it being maintained unchanged during restart.
2011-09-25 18:39:22 +03:00
Filippos Karapetis
0779018484 AGI: Bugfix for script bug #3116541 - "AGI FAN Beyond the Titanic 2: Crash on Item Viewing" 2011-09-25 18:37:37 +03:00
Filippos Karapetis
c02603fce2 AGI: Replaced odd usage of sprintf() with strcpy()
Fixes an odd bug with savegame names being truncated in MSVC
2011-09-25 18:36:33 +03:00
Filippos Karapetis
18a0214672 AGI: Resolved an old FIXME concerning OOB access 2011-09-25 18:35:37 +03:00
Filippos Karapetis
a1c4aa6d89 AGI: Fixed typo in restart dialog 2011-09-25 18:34:35 +03:00
Filippos Karapetis
85213cdb32 AGI: Cleanup of some detection entries 2011-09-25 18:15:30 +03:00
Filippos Karapetis
cfa262b1b7 AGI: Add some comments regarding save slot 0, and use the default SaveStateDescriptor constructor 2011-09-25 15:10:43 +03:00
Filippos Karapetis
d01d228ee8 AGI/COMMON: Fixed bug #3407308 - "AGI: SQ2: Saving allowed in autosave slot 0 from scummvmmenu"
The save/load dialog code was not polling for meta info for empty slots
2011-09-25 15:03:02 +03:00
Eugene Sandulenko
4e83a49b0f AGI: Fix bug #3398171: AGI: SQ1/SQ2: problem entering name
Was introduced during refactoring to SCI-like opcode handling.
Also restored original comments about opcode parameter differences
between AGI versions.
2011-08-27 23:43:46 +01:00
Matthew Hoops
6f83052b40 AGI: Cleanup PreAGI console code 2011-08-15 22:24:42 -04:00
Matthew Hoops
62aabc57e4 AGI: Reorganize the PreAGI code a bit 2011-08-15 11:55:03 -04:00
Matthew Hoops
6a9d4b3e5b AGI: Make Troll inherit from PreAgiEngine 2011-08-15 11:55:03 -04:00
Matthew Hoops
cb43e9694b AGI: Make Mickey inherit from PreAgiEngine 2011-08-15 11:55:03 -04:00
Matthew Hoops
fcd0cda9a9 AGI: Make Winnie inherit from PreAgiEngine 2011-08-15 11:55:01 -04:00
Eugene Sandulenko
b83cf61bfb Checked V1 instructions till 0x42 2011-08-14 21:40:07 +01:00
Eugene Sandulenko
273e37f726 AGI: Renamed some #defines to our code conventions and moved them to enums 2011-08-14 18:48:59 +01:00
Matthew Hoops
40f40303ef AGI: Enable sound support for Winnie DOS 2011-08-14 13:14:37 -04:00
Matthew Hoops
de6390dddb AGI: Make the sound code use AgiBase instead of AgiEngine
In preparation of using the sound code with Winnie
2011-08-14 13:10:43 -04:00
Eugene Sandulenko
46354d5772 AGI: Switched booters detection to AD 2011-08-13 23:27:34 +01:00
Eugene Sandulenko
3cb41b5dfc AGI: Checked V1 instructions till 0x2c 2011-08-13 23:27:32 +01:00
Eugene Sandulenko
be9c5c0427 AGI: Checked V1 instructions till 0x20 2011-08-13 23:27:29 +01:00
Eugene Sandulenko
3fb50b815e AGI: Further work on v1 opcode difference 2011-08-13 23:27:27 +01:00
Jussi Pitkanen
af691e46c4 AGI: Updates to V1 instruction table, plus an outcommented experiment
The experiment tries to implement the program control of the V1 interpreter.
Maybe it is better to add another method for doing that once the workings of
it are more clear.
2011-08-13 23:27:24 +01:00
Jussi Pitkanen
1dbe5bfccf AGI: Implement loader for V1 "object" file 2011-08-13 23:27:22 +01:00
Jussi Pitkanen
d2f9087f20 AGI: Fix warning messages about undefined opcodes 2011-08-13 23:27:20 +01:00
Jussi Pitkanen
e4a1193d22 AGI: Add last undefined V1 test command that tests if a bit of var is set
Also fix skipInstruction() for V1.
2011-08-13 23:27:17 +01:00
Jussi Pitkanen
2289ba88b6 AGI: Rename cmd_what_ever to cmdWhatEver 2011-08-13 23:27:15 +01:00
Jussi Pitkanen
09f937126e AGI: Fix and clarify IF expression handling 2011-08-13 23:27:13 +01:00
Jussi Pitkanen
9bc25749d6 AGI: Implement V1 SAID test commands
Yes, V1 has three versions of SAID, for one, two and three arguments.

Also add a few corrections to V1 instruction tables.
2011-08-13 23:27:10 +01:00
Jussi Pitkanen
d02251fa4d AGI: Formatting (+ a few debug prints) 2011-08-13 23:27:08 +01:00
Jussi Pitkanen
368a3722a3 AGI: Implement loader for V1 words.tok dictionary 2011-08-13 23:27:05 +01:00
Jussi Pitkanen
c731f1f48c AGI: Implement common internal dictionary for different words.tok formats
Preparations for V1 words.tok support.
2011-08-13 23:27:03 +01:00
Jussi Pitkanen
0b6b670803 AGI: Add still incomplete V1 instruction tables 2011-08-13 23:27:00 +01:00
Jussi Pitkanen
04353038ae AGI: Add loader and detection for Black Cauldron booter 2011-08-13 23:26:58 +01:00
Jussi Pitkanen
d273f58b3c AGI: AgiLoader_v1: Precalculate final resource offsets
That is, calculate the final offsets when loading the resource directories,
and when loading the resource simply seek into the disk image file.
2011-08-13 23:26:56 +01:00
Jussi Pitkanen
41dccce00c AGI: Execute test commands only when needed 2011-08-13 23:26:53 +01:00
Jussi Pitkanen
a4e0cd53f0 AGI: Refactor interpreter core (somewhat akin to SCI)
* Instruction tables are now defined in opcodes.{cpp,h}.

* Move opcode handlers from Agi::AgiEngine to Agi
* Opcode handlers take as parameter a pointer to AGI state (AgiGame)
2011-08-13 23:26:51 +01:00
Jussi Pitkanen
e1153cf11f AGI: Comment cleanup 2011-08-13 23:26:48 +01:00
Jussi Pitkanen
eb797b692f AGI: Simplify handling of IF conditions
Execute all test commands in a condition even when not strictly needed.
2011-08-13 23:26:46 +01:00
Jussi Pitkanen
7a80c4cdb3 AGI: Fix row duration in V1 SOUND resource player 2011-08-13 23:26:44 +01:00
Jussi Pitkanen
1507fe4e79 AGI: Fix detection of IIgs sample resources 2011-08-13 23:26:41 +01:00
Jussi Pitkanen
d8e1b392d2 AGI: Use a jump table for test commands instead of switch/case
Preparations for V1 support.
2011-08-13 23:26:39 +01:00
Jussi Pitkanen
24bb5da228 AGI: Add a layer of abstraction between the sound chip and the two players 2011-08-13 23:26:36 +01:00
Jussi Pitkanen
8183103777 AGI: Simplify sector offset calculation 2011-08-13 23:26:34 +01:00
Jussi Pitkanen
7405140474 AGI: Cleanup 2011-08-13 23:26:32 +01:00
Jussi Pitkanen
4d4a558f7b AGI: Do not try to pass filenames of disk images from the detector to engine 2011-08-13 23:26:29 +01:00
Jussi Pitkanen
1f680ecbc8 AGI: Detect the end of V1 sound resources correctly, fixing crashes 2011-08-13 23:26:27 +01:00
Jussi Pitkanen
010315dc0c AGI: Implement resource loader for the DDP booter game 2011-08-13 23:26:24 +01:00
Jussi Pitkanen
3fd26de379 AGI: Detect the bootable floppy version of Donald Duck's Playground
Also create a framework into which more booter games can be added.
2011-08-13 23:26:22 +01:00
Jussi Pitkanen
ab784944ea AGI: Implement note fetch routine for AGI v2.001 sound resources
I suspect this is the format for AGI V1 sound resources as well. It is
currently implemented by splitting getNextNote() to getNextNote_v2() and
getNextNote_v1(). Since the V1 format consists of simple register values
to the sound chip in PCjr, this could probably be made more cleanly by
refactoring the code to resemble the chip more closely, so that its state
is updated by writing to the registers.
2011-08-13 23:26:19 +01:00
Christoph Mallon
e35b4f20c1 GRAPHICS: Simplify the interface of Graphics::loadThumbnail().
Now it returns the Surface, so the caller does not need to create one and pass it.
2011-08-07 15:19:09 +02:00
Christoph Mallon
b4b6ce0954 ALL: Use Graphics::skipThumbnail() where appropriate. 2011-08-07 15:19:09 +02:00
Christoph Mallon
23a0f5318c JANITORIAL: Remove trailing empty lines. 2011-08-07 13:53:33 +02:00
Matthew Hoops
b4f4fd6b00 AGI: Cleanup some Winnie string code 2011-07-03 13:49:28 -04:00
Matthew Hoops
c2be473ce2 AGI: Fix some memset calls
Spotted by both salty-horse and LordHoto using clang
2011-07-03 13:49:28 -04:00
Littleboy
b694a78f62 ANALYSIS: Add static casts to is* functions
This fixes a potential problem with passing char values that would be sign-extended and yield unexpected results.
See http://msdn.microsoft.com/en-us/library/ms245348.aspx
2011-06-23 08:52:52 -04:00
Max Horn
88913c0139 ALL: Remove trailing whitespaces
This tries to make our code a bit more compliant with our code formatting
conventions. For future use, this is the command I used:
  git ls-files "*.cpp" "*.h" | xargs sed -i -e 's/[ \t]*$//'
2011-06-20 00:59:48 +02:00
Max Horn
71ea5acd29 AGI: Replace vsprintf by Common::String::vformat 2011-06-18 01:36:15 +02:00
Max Horn
879c3c7817 DETECTOR: Pass allFiles to AdvancedMetaEngine::fallbackDetect()
Also reorder the parameters of composeFileHashMap, placing the "return value"
first.
2011-06-14 18:52:11 +02:00
Max Horn
7c992d6598 DETECTOR: Merge ADParams into AdvancedMetaEngine 2011-06-14 18:17:01 +02:00
Max Horn
a9b49fbc66 AGI: Switch to alternate AdvancedMetaEngine, avoid ADParams 2011-06-10 22:15:40 +02:00
Max Horn
4827cc914a ENGINES: Change incorrect use of 'target' to 'gameid' 2011-06-10 22:15:40 +02:00
eriktorbjorn
0c1665820b AGI: Experimental fix for bug #3292778 ("SQ2: Music missing notes")
The idea here is that if two voices are generating the same tone,
the square wave generator should be in sync so that the wave forms
amplify each other, rather than cancelling each other out.
2011-06-10 19:41:31 +02:00