aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
AgeCommit message (Collapse)Author
2012-02-11SCUMM: complete handling of pending walkTo actions for sentence commandsTobias Gunkel
in v0
2012-02-11SCUMM: handle actor freeze in walkToActorOrObject()Tobias Gunkel
2012-02-11SCUMM: fix o_setObjectName()Tobias Gunkel
The parameter can either be a FG or BG object depending on the opcode.
2012-02-11SCUMM: delete some obsolete v0 TODOsTobias Gunkel
2012-02-11SCUMM: Fix actor ID handling in v0Tobias Gunkel
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-11SCUMM: fix saving of array _byte_FCE2Tobias Gunkel
2012-02-11SCUMM: fix resetAllSounds() in player_sidTobias Gunkel
It actually was stopMusic() before and so stopped only the music and not all sounds. The former implementation is for the o_stopMusic opcode which is not supported directly by ScummVM (it always stops all sounds). It is kept as stopMusic_intern() but is not used anymore.
2012-02-11SCUMM: remove unimplemented und unused method startMusic() in pce and apple2 ↵Tobias Gunkel
players
2012-02-11SCUMM: do not convert a savegame twiceTobias Gunkel
2012-02-11SCUMM: fix v0 mode handling and actor switchingTobias Gunkel
- handle mode switching correctly - do not freeze scripts in cutscene mode (mode 0), as some scripts are freezed in mode 0 that should not be freezed - kModeNoNewKid (mode 2) needs the same userState as mode 3 - rename o_cursorCommand to o_setMode as it is not really cursor specific - handle actorHiding correctly (do not set costume to 0 as the previous costume cannot be reverted after hiding) - add drawSentence - document meanings for actor misc flags - fix actor names for "new kid" if the radiation suit is used (all kids are set to 0 then with actor 0 name " ") - cleanup actor switching routine - _userPut is not used anymore in v0
2012-02-11SCUMM: fix blank sentence line in v0 after cutscenes and remove unused ↵Tobias Gunkel
parameter of resetSentence()
2012-02-11SCUMM: Re-arrange some things to make it closer to the originalsegrax
2012-02-11SCUMM: Save the new variables, move the setting of the unknown variable to ↵segrax
after the setDirection call
2012-02-11SCUMM: improve unknown variable support, add case 0xff to the animateactor ↵segrax
opcode
2012-02-11SCUMM: v0 opcode reviewTobias Gunkel
- o_setObjectName has a default value - o_putActorAtObject can either operate on a fg or bg object Note: neither the default value nor the bg object opcode (4E) seem to be ever used by any script. So this commit is rather for completeness than for bug-fixing.
2012-02-11SCUMM: fix opcode walkToObject in v0Tobias Gunkel
Before Michael did not develop the film correctly
2012-02-11SCUMM: 2nd try to fix dungeon door timingTobias Gunkel
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-11SCUMM: shorten delay for dungeon door closing actionTobias Gunkel
Escaping with only one kid should not be possible anymore.
2012-02-11SCUMM: Change vars to ints, remove unused variable for nowsegrax
2012-02-11SCUMM: merge object v0 id and type into one object varTobias Gunkel
2012-02-11SCUMM: fix ScummEngine_v0::ifEqualActiveObject2Common() parameter nameTobias Gunkel
2012-02-11SCUMM: merge _activeObjectNr/_activeObjectType and _cmdObjectNr/_cmdObjectTypeTobias Gunkel
2012-02-11SCUMM: fix debugger for v0Tobias Gunkel
2012-02-11SCUMM: Fix actor behind man-eating plant issue in v0.Tobias Gunkel
Thanks segra for finding how it works in the original interpreter. The plant is handled specially and 0 is used instead of its y-position.
2012-02-11SCUMM: Add in support in v0 for the unknown variable to o_animateActorsegrax
2012-02-11SCUMM: remove some NOTEs/TODOsTobias Gunkel
- o5_breakHere() seems to be still needed. For example edna does not manage to walk up the ladder if this is not enabled. - numLocalObjects seems to be big enough so that < instead of <= can be used. The original interpreter only uses the local ids 0 .. 44 whereas scummvm has _numLocalObjects set to 200.
2012-02-11SCUMM: make what-is verb work in v0 againTobias Gunkel
2012-02-11SCUMM: reset object2 in v0 correctlyTobias Gunkel
This fixes the issue that a kid will not enter the front door after opening it with the key.
2012-02-11SCUMM: pop stack in v0 if command's object1 and 2 are the sameTobias Gunkel
Otherwise the command will never be removed and the stack overflows
2012-02-11SCUMM: improve verb and sentence handlingTobias Gunkel
- execute sentence if verb was clicked twice - reuse the first object if a new verb is selected (but no preposition is used yet)
2012-02-11SCUMM: reset sentence line in v0 if sentence executedTobias Gunkel
2012-02-11SCUMM: fix a regression in v0Tobias Gunkel
Found by segra.
2012-02-11SCUMM: click into sentence line in v0 now performs the actionTobias Gunkel
2012-02-11SCUMM: fix kid selection in v0Tobias Gunkel
The kid names are now displayed in the sentence line (instead of the verb area) as it is done in the original.
2012-02-11SCUMM: fix verb and script handlingTobias Gunkel
- getVerbEntrypoint() should not handle walk-to differently (revert 0x0D handling back to original behavior) - VAR_ACTIVE_ACTOR actually is VAR_ACTIVE_OBJECT2 - runSentenceScript(): "if (_cmdVerb == kVerbWalkTo)" must be "if (_cmdVerb != kVerbWalkTo)"
2012-02-11SCUMM: make START-button in mm c64 kid selection screen work againTobias Gunkel
2012-02-11SCUMM: use command stack and SentenceTab in mm c64Tobias Gunkel
- 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-11SCUMM: mm c64 cleanupTobias Gunkel
2012-02-11SCUMM: replace verb, prep and currentMode values with symbolic constantsTobias Gunkel
2012-02-11SCUMM: use constants for c64 actor miscflagsTobias Gunkel
2012-02-11SCUMM: selecting inventory objects and inventory scrolling works againTobias Gunkel
2012-02-11SCUMM: start handling object type and id correctly in mm c64Tobias Gunkel
- 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-11SCUMM: remove unneeded verbPrep() callsTobias Gunkel
2012-02-11SCUMM: fix ScummEngine_v0::o_stopCurrentScript()Tobias Gunkel
2012-02-11SCUMM: changed handling of _activeInventory/_activeActor to ↵Tobias Gunkel
_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-11SCUMM: Fix pickupObject()Tobias Gunkel
2012-02-11SCUMM: make verbs working betterTobias Gunkel
2012-02-11SCUMM: Fix bug with tracker ID 3072094Tobias Gunkel
MANIAC C64: Bug while getting the stamps from the parcel - ID: 3072094 MMC64: use stamps with envelope - ID: 3095595
2012-02-11SCUMM: Fix meteor actor indexTobias Gunkel
- Now the correct actor name is shown with "give ... to meteor". Formerly the name was "". - Add actor names that do not have a string assigned
2012-02-11SCUMM: Fix sound playback if fast-mode is onTobias Gunkel
Sounds are played that fast in fast-mode that the queue gets stuck. This is just a workaround and only fixes the symptoms. Check the queue handling for a correct fix.