65 Commits

Author SHA1 Message Date
Eugene Sandulenko
556d65713b SCUMM: Add support for Russian MM 2016-01-10 09:21:03 +01:00
Robert Crossfield
daefdc315b SCUMM: Fix bug #2034 - MANIAC V2: Early Collision with Green Tentacle 2014-11-23 08:24:39 +11:00
Johannes Schickel
3847465163 SCUMM: Make GPL headers consistent in themselves. 2014-02-18 02:39:38 +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
Willem Jan Palenstijn
3f5aaa0ca5 SCUMM: Clean up resetSentence 2012-02-13 20:26:43 +01:00
Tobias Gunkel
9dd6105ce6 SCUMM: replace "c64" with "v0" when it applies to both C64 and AppleII v0 versions
In addition some routines (e.g. the gfx ones) that are even used in v1.
2012-02-11 08:30:08 +01:00
Tobias Gunkel
e14e4ab3b0 SCUMM: adjust to coding style-guide 2012-02-11 08:30:02 +01:00
Tobias Gunkel
984c2a05e4 SCUMM: replace o_beginOverride() with o2_beginOverride()
In contrast to the comment in o_beginOverride() VAR(VAR_OVERRIDE) is not set in the disassembly. In addition the cutscene stack-pointer is always 0 as this feature is not used in v0. This makes o_beginOverride() work the same way o2_beginOverride() and so it is not needed anymore.

Note that fetchScriptWord() was changed to ScummEngine::fetchScriptWord() in o2_beginOverride() as ScummEngine_v0::fetchScriptWord() only fetches a byte.
As we need two bytes here we have to use ScummEngine::fetchScriptWord().
2012-02-11 08:29:52 +01:00
Tobias Gunkel
d4ddd2ca84 SCUMM: introduce constants for _userState for cleaner and easier to understand code 2012-02-11 08:29:51 +01:00
Tobias Gunkel
e33d41035c SCUMM: scumm_vars 14 to 16 are not handled specially in v0
Reading the manuscript will be fixed by this.
2012-02-11 08:29:47 +01:00
Tobias Gunkel
96f8fc6ca9 SCUMM: Fix actor ID handling in v0
Some object functions allow actor IDs and object IDs as parameters. They are easily distinguishable in engines > 0 as actor IDs are < _numActors and object IDs are bigger. In v0 this is not the case as there are objects with IDs like 3 and 5 (e.g. the hamster). So object ID handling was unified for v0 and the other engines by introducing objIsActor(), objToActor() and ActorToObj().
2012-02-11 08:29:13 +01:00
Tobias Gunkel
0bae642453 SCUMM: 2nd try to fix dungeon door timing
Shorten the timer delay does not work as escaping with a second kid is not possible too. Instead decrease engine speed during script execution.
2012-02-11 08:28:54 +01:00
Tobias Gunkel
4519e56e5c SCUMM: shorten delay for dungeon door closing action
Escaping with only one kid should not be possible anymore.
2012-02-11 08:28:52 +01:00
Tobias Gunkel
de0b5f7674 SCUMM: use command stack and SentenceTab in mm c64
- MM C64 uses command stack (SentenceTab, doSentence()) now
- _cmdObject... added for current SentenceTab. The _active... variables are only used to build a sentence in the inventory but never by a script.
-> many routines are not needed anymore and are removed
2012-02-11 08:28:22 +01:00
Tobias Gunkel
1c32000a00 SCUMM: start handling object type and id correctly in mm c64
- removed complicated and unnecessary _v0ObjectIndex, _v0ObjectInInventory, _v0ObjectFlag vars
- started to merge object id and type into one object value (type<<8|id)
- verb preposition ids do not dependent on language -> remove from VerbSettings

Note:
- objects with type=0 are foreground objects. They have a state, an owner and a bg overlay image.
- objects with type=1 are bg objects. They do not have a state or owner and are already contained in the bg image. The do not have an entry in objectState/OwnerTable
2012-02-11 08:28:14 +01:00
Tobias Gunkel
a709a42319 SCUMM: fix ScummEngine_v0::o_stopCurrentScript() 2012-02-11 08:02:34 +01:00
Tobias Gunkel
a79f224c23 SCUMM: changed handling of _activeInventory/_activeActor to _activeObject(2)/_activeObject(2)Type
Note: the transition is not completed yet. The code compiles but is probably not runnable as not every occurrence of _activeInventory has been properly replaced.
The usage of _v0ObjectIndex and _v0ObjectInInventory should be revised too and both variables should be replaced by another mechanism (maybe by using a single variable "obj = (type << 8) | id").

- moved v0 only vars _activeInventory, _activeObject, _activeVerb from  ScummEngine_v2 to ScummEngine_v0
- removed _activeActor, _activeInvExecute, _activeObject2Inv and _activeInventory. They are handled by _activeObject/_activeObjectType and _activeObject2/_activeObject2Type now.
- removed _activeObject(2)Index as they only bloat the code without any benefit (?)
- merge prep-name tables from ScummEngine_v2::drawPreposition() and ScummEngine_v0::drawSentenceWord() by introducing ScummEngine_v2::drawPreposition()
- rename ObjectData.flags -> obj_type (quick-fix only, needs review! Maybe obj_nr and obj_type can be merged into one var: obj_nr = (obj_type << 8) | obj_nr)
- o_unknown2 is negation of o_ifActiveObject (o_ifNotEqualActiveObject2)
- renamed o_ifActiveObject -> o_ifEqualActiveObject2 as it acts only on _activeObject2
- renamed ScummEngine_v0::drawSentenceWord() -> ScummEngine_v0::getObjectName()
2012-02-11 08:02:32 +01:00
Travis Howell
0ceeee8148 SCUMM: Add script number differences in SCUMM V0, for two work arounds in Maniac Mansion. 2012-01-29 17:07:38 +11:00
Max Horn
649f8e0a84 SCUMM: Rename ResTypes->ResType, introduce ResId typedef, change code to use both 2011-05-13 14:02:53 +02:00
Max Horn
b37463fe59 SCUMM: Move class ResourceManager to its own header 2011-05-13 11:47:08 +02:00
strangerke
69b1485a22 GIT: Clean up: Suppress SVN tags, now useless 2011-05-12 01:16:22 +02:00
Max Horn
2c00aed172 SCUMM: Avoid hiding overloaded virtual method
svn-id: r55809
2011-02-07 17:53:34 +00:00
Max Horn
31d2d2af4c SCUMM: Workaround for bug #1447058, a race condition in the game scripts
svn-id: r54730
2010-12-02 00:27:46 +00:00
Travis Howell
4f0cc6a435 SCUMM: Add patch #3093541 - MMC64: Actor Walk / Object Fix.
svn-id: r53806
2010-10-25 08:03:55 +00:00
Max Horn
8a5705132d SCUMM: More finely differentiate opcode tables between v3, v4 and v5
This has been tested and verified as much as I can, but has a small
risk of leading to (easily fixable) regressions.

svn-id: r52130
2010-08-16 19:58:01 +00:00
Max Horn
93375526c0 SCUMM: Convert some code to use Common::String
svn-id: r48957
2010-05-05 20:43:22 +00:00
Travis Howell
4cc2d06b15 Fix bug #2687801 - ZAK: Cannot pickup Ladder on Mars Youth Hostel.
svn-id: r40899
2009-05-26 01:25:44 +00:00
Max Horn
6a7bb77305 SCUMM: Introduced new method ScummEngine_v5::jumpRelative; unified some v0 and v2 opcodes
svn-id: r40025
2009-04-20 12:35:17 +00:00
Max Horn
3044593da0 SCUMM: Moved o5_saveLoadGame and o5_saveLoadVars to ScummEngine_v4 (the highest SCUMM version to implement these opcodes. Actually, our code was bugged in so far as we only ever invoked o5_saveLoadGame in V3 games, never in V4 games (but this properly never mattered ;)
svn-id: r40014
2009-04-19 01:01:54 +00:00
Max Horn
31eeb37107 SCUMM: Moved ScummEngine_v2::o2_setBoxFlags to ScummEngine_v3::o3_setBoxFlags
svn-id: r40010
2009-04-19 01:00:31 +00:00
Max Horn
9655fa831e SCUMM: Turned PARAM_1,2,3 into an enum; minor tweaks
svn-id: r40008
2009-04-19 00:59:50 +00:00
Max Horn
432e7917a5 SCUMM: Switched opcode tables to use Common::Functor0 (a bit like Kyra does it)
svn-id: r39956
2009-04-16 09:26:37 +00:00
Max Horn
6f4b567124 SCUMM: Split intern.h into multiple headers
svn-id: r39567
2009-03-20 16:33:58 +00:00
Jordi Vilalta Prat
d6c34bdc4b Fixed the spaces before tabs.
svn-id: r30667
2008-01-28 00:14:17 +00:00
Nicola Mettifogo
258901bab9 Merged common/stdafx.h into common/scummsys.h. All referencing files have been updated.
svn-id: r28966
2007-09-19 08:40:12 +00:00
Max Horn
0cccbb29d6 Some cleanup (yay for whomever had the brilliant idea to let SVN work over HTTPS and hence through proxies&firewalls :)
svn-id: r28877
2007-09-08 11:15:27 +00:00
Max Horn
218e132e37 Updated legal headers in source files, based on what Pidgin (the IM client formerly knowns as Gaim) does; added new (incomplete) COPYRIGHT file; updated copyright dates in a few spots
svn-id: r27024
2007-05-30 21:56:52 +00:00
Max Horn
b07482b0b2 A long time ago, in a virtual machine far, far away...
It is a period of bug fixing. Rebel
developers, coding from a public
project, have won their umpteenth victory
against the evil Actor Walk Bugs.
 
During the debugging, programmers 
used secret plans to the LucasArts'
ultimate tool, the SCUMM engine, an
extensible scripting system with enough
power to create an entire adventure.

Pursued by ensuing sinister regressions,
High King Fingolfin gleefully jumps up
and down, making use of the hotkey
that can save his games and restore
them back again later....

[With apologies to George Lucas. Good
riddance to bugs #751662, #771483, #959001,
#1329457, #1329498, #1329529, #1527672,
#1538260, #1571701, #1571705, #1571740,
and a warm welcome to the regressions
this change will cause. :-) ]

svn-id: r26090
2007-03-11 15:23:50 +00:00
Travis Howell
0c208657ee Remove left over debug output.
svn-id: r25848
2007-02-25 07:28:40 +00:00
Travis Howell
19d2310b71 Add support for using disks images for Apple II version of Maniac Mansion.
svn-id: r25846
2007-02-25 07:23:52 +00:00
Chris Apers
619d8e87f1 French keyboard is 'azerty' not 'awert'
svn-id: r25693
2007-02-18 17:53:44 +00:00
Max Horn
e616b4c4b6 Fix for bug #1328146: MANIACNES: Shortcut keys are incorrectly configured
svn-id: r25601
2007-02-15 10:40:20 +00:00
Max Horn
be052be462 Rewrote the actor walk code for SCUMM V0-V2 games: Now it uses the C64 character coordinates internally, not pixel coordinates. This should fix some walk bugs, but also might cause some regressions. Watch out
svn-id: r25370
2007-02-04 01:24:43 +00:00
Max Horn
c210aff40c * Made Actor::_pos protected, added public Actor::getPos() method
* Added default params to Actor::putActor()
* Removed Actor::getActorXYPos

svn-id: r24742
2006-11-19 00:39:48 +00:00
Travis Howell
79b9397f3e HACK no longer required for MM demo mode
svn-id: r24576
2006-10-30 02:50:09 +00:00
Travis Howell
5d4543a59c Fix bug #771499 - ZAK: Lotto numbers never picked. The freezeCount isn't checked in runScriptNested(), when restarting script in SCUMM 1/2.
svn-id: r24575
2006-10-30 01:53:19 +00:00
Max Horn
46dc61163a Named / documented the V0-V2 object states (we should probably rename the corresponding opcodes here and in descumm to make reading script dumps easier)
svn-id: r24566
2006-10-29 14:45:31 +00:00
Max Horn
a0b9f78bd3 SCUMM: Introduced V12_X_MULTIPLIER and V12_Y_MULTIPLIER to make it a bit easier to find spots where we convert between C64-style coordinates and pixel coordinates (but beware, this probably doesnt't cover all relevant instances)
svn-id: r24384
2006-10-19 00:26:55 +00:00
Max Horn
5148dbb3fb cleanup
svn-id: r24383
2006-10-19 00:06:59 +00:00
Max Horn
1ee9304012 Replaced function level static variable (YUCK) called 'sentence' by ScummEngine_v2:_sentenceBuf
svn-id: r24324
2006-10-15 01:26:23 +00:00