aboutsummaryrefslogtreecommitdiff
path: root/engines/tucker
AgeCommit message (Collapse)Author
2018-07-04TUCKER: Make _updateScreenPicture boolAdrian Frühwirth
2018-07-04TUCKER: Use empty() instead of comparing against empty string literalAdrian Frühwirth
2018-07-04TUCKER: Make _compressedSoundFlags uint16Adrian Frühwirth
2018-07-04TUCKER: Fix unnecessary conversion from int to boolAdrian Frühwirth
2018-07-04TUCKER: Fix parameter name inconsistency in setCursorStyle()Adrian Frühwirth
2018-07-04TUCKER: Use nullptrAdrian Frühwirth
2018-05-10ENGINES: Add unknown game variants to the game detector resultsBastien Bouclet
2018-04-21TUCKER: Improve autosave error handlingAdrian Frühwirth
2018-04-21TUCKER: Try autosaving only once per autosave intervalAdrian Frühwirth
2018-04-21TUCKER: Fix panel background being off by one pixelAdrian Frühwirth
This fixes an original game glitch where the main options menu background image is drawn one pixel too high. Fixes Trac#10496.
2018-04-20TUCKER: Draw text only when hovering over hotspots when using the mapAdrian Frühwirth
2018-04-07TUCKER: Do not assign negative value to unsigned intAdrian Frühwirth
2018-04-07ALL: Load savegame thumbnail only when necessaryAdrian Frühwirth
This commit introduces the following changes: 1. Graphics::loadThumbnail() Now returns a boolean and takes a new argument skipThumbnail which defaults to false. In case of true, loadThumbnail() reads past the thumbnail data in the input stream instead of actually loading the thumbnail. This simplifies savegame handling where, up until now, many engines always read the whole savegame metadata (including the thumbnail) and then threw away the thumbnail when not needed (which is in almost all cases, the most common exception being MetaEngine::querySaveMetaInfos() which is responsible for loading savegame metadata for displaying it in the GUI launcher. 2. readSavegameHeader() Engines which already implement such a method (name varies) now take a new argument skipThumbnail (default: true) which is passed through to loadThumbnail(). This means that the default case for readSavegameHeader() is now _not_ loading the thumbnail from a savegame and just reading past it. In those cases, e.g. querySaveMetaInfos(), where we actually are interested in loading the thumbnail readSavegameHeader() needs to explicitely be called with skipThumbnail == false. Engines whose readSavegameHeader() (name varies) already takes an argument loadThumbnail have been adapted to have a similar prototype and semantics. I.e. readSaveHeader(in, loadThumbnail, header) now is readSaveHeader(in, header, skipThumbnail). 3. Error handling Engines which previously did not check the return value of readSavegameHeader() (name varies) now do so ensuring that possibly broken savegames (be it a broken thumbnail or something else) don't make it into the GUI launcher list in the first place.
2018-03-28TUCKER: Follow code formatting convention for switch statementsAdrian Frühwirth
2018-03-28TUCKER: Check '.' instead of KEYCODE_PERIOD when skipping speechAdrian Frühwirth
See commit 7cbf5a9289 for more information.
2018-03-21TUCKER: Use kLastSaveSlot where appropriateAdrian Frühwirth
2018-03-21JANITORIAL: Fix indentationAdrian Frühwirth
2018-03-21TUCKER: Add Location enumAdrian Frühwirth
2018-03-20TUCKER: Remove unhelpful commentAdrian Frühwirth
Code matches disassembly and works like in the original. I can't spot anything out of the ordinary with regards to audio playback either.
2018-03-20TUCKER: Reset panel type to normal after loading a savegameAdrian Frühwirth
2018-03-20TUCKER: Remove superfluous workaround for Trac#4156Adrian Frühwirth
Despite what the comment says this does not seem to be in the original game and I cannot replicate this in either the original or a current ScummVM build. It is highly likely that this was one of several sprite offset bugs which were present in our implementation earlier but which have since been fixed.
2018-03-19TUCKER: Work around original game bug when using the map in the mall in part ↵Adrian Frühwirth
three If you don't have the appointment card yet and use the map to go to Seedy Street Bud ends up being teleported back to the mall. Because of the destination coordinates which warp Bud past x==583 Violet's logic, which makes him refuse Bud entrance to the dentist, triggers. On top of that the graphics end up all garbled which indicates that even worse things happen under the hood. To work around this we only trigger Violet if Bud actually _walked_ past the trigger coordinates (as opposed to using the map). This fixes Trac#10452.
2018-03-19TUCKER: Implement workaround for original script bug mentioned in commit ↵Adrian Frühwirth
23fd97c99a
2018-03-18TUCKER: Actually implement mof opcodeAdrian Frühwirth
When the 'mof' opcode was added in commit 1946dead77 it was implemented as a NOOP, but what it actually should do is disable the mouse (set _cursorState to kCursorStateDisabledHidden). This is used in at least the Spanish and Polish versions of the game to work around an earlier script bug which allowed the player to use the mouse while freeing the professor in part two. This commit fixes the 'mof' instruction so that the original script works as intended in those versions that ship with the fix. TODO: Add a workaround for those game versions which don't do the 'mof' themselves.
2018-03-18TUCKER: Add missing buv and c0v opcodesAdrian Frühwirth
This commit adds the 'buv' and 'c0v' opcodes which are used to set speech volume. Because these only seem to be used once in the English demo and we right now playback all speech at kMaxSoundVolume anyway we can treat them as NOOPs. This fixes a bug in said demo which resulted in Bud being unable to talk to Del.
2018-03-18TUCKER: Get rid of strcpy()Adrian Frühwirth
2018-03-17TUCKER: Add comment about earlier commit e018efbc22 fixing Trac#6645Adrian Frühwirth
2018-03-17TUCKER: Fix incorrect transition of Lola animationAdrian Frühwirth
The original game unconditionally reads into _sprC02Table[] in updateSprite() which results in out-of-bounds reads when a sprite's _state is -1. To make sure that sprites update correctly under all circumstances we always reset a sprite's animation data when it is disabled (_state == -1). This most prominently fixes a bug where Lola's transition from dancing -> sitting happens too late. Fixes Trac#6644.
2018-03-16TUCKER: Remove trailing comma from enum listAdrian Frühwirth
2018-03-16TUCKER: Added missing check for minimum supported savegame versionAdrian Frühwirth
2018-03-16TUCKER: Add savegame metadata and autosave supportAdrian Frühwirth
2018-03-15TUCKER: Fix out-of-bounds access of _inputkeys[]Adrian Frühwirth
2018-03-15TUCKER: Comment out dead code, match disassemblyAdrian Frühwirth
Setting _mousePosY is only necessary if we actually set the cursor position which we currently don't do. I don't plan on enabling it but for the sake of matching disassembly let's add the required warpMouse() call and disable the whole code block for now.
2018-03-14TUCKER: Remove unnecessary variable from drawInfoString()Adrian Frühwirth
2018-03-14TUCKER: Use Verb enum in even more placesAdrian Frühwirth
2018-03-14TUCKER: Add TODO comment about discrepancy with disassemblyAdrian Frühwirth
2018-03-14TUCKER: Fix wrong sound effects being playedAdrian Frühwirth
Fixes Trac#6376, Trac#6377 and probably many more unreported instances of wrong audio samples being played.
2018-03-12TUCKER: Fix alleyway cellar location hotspot bugAdrian Frühwirth
Fixes Trac#6645.
2018-03-05TUCKER: Workaround capitalized "With"/"Con" in sentence barAdrian Frühwirth
infobar.txt contains all text used for the sentence bar and, among other things, the prepositions to use for the "Use" and "Give" verbs. In the English and Spanish versions of the game the preposition for "Use" ("With" and "Con", respectively) is incorrectly stored in capitalized form which this commit fixes. Fixes Trac#10445.
2018-03-05TUCKER: Add VerbPreposition enumAdrian Frühwirth
2018-03-02TUCKER: Use Verb enum in more placesAdrian Frühwirth
2018-03-02Add PanelState, PanelStyle and PanelType enumsAdrian Frühwirth
The new _panelState tells if the panel is currently in the process of being toggled between icon-style and text-style verbs and thus animated. The new _panelStyle tells wich verb-style the panel currently uses. The new _panelType tells which mode the panel currently is in: - verbs + inventory (normal) - empty (used for dialogs) - save, load, play, quit buttons - save/load savegame Also, switchPanelType() has been renamed to togglePanelStyle() and kInputKeyToggleInventory to kInputKeyTogglePanelStyle to better match the above changes. _switchPanelFlag has been dropped in favor of using the new _panelState. TODO: Store _panelStyle in savegames.
2018-03-02TUCKER: Add Part enumAdrian Frühwirth
2018-03-02TUCKER: Add CursorStyle and CursorState enumsAdrian Frühwirth
2018-02-25TUCKER: Allow skipping speechAdrian Frühwirth
Escape, period or right mouse click skips one sentence at a time.
2018-02-25TUCKER: Confine Bud to walkable area when entering clubAdrian Frühwirth
When Bud is walked to specific coordinates using the 'buw' opcode the walkable area is not enforced (_locationMaskIgnore == true). This is usually not a problem because the player is not allowed to click, however, when entering the club, this allows the player to move Bud to coordinates from which he can never return, leaving him stuck there. As a workaround, do not ignore the location mask during this specific action when entering the club. Fixes Trac#5838.
2018-02-25TUCKER: Fix theoretical out-of-bounds readAdrian Frühwirth
2018-02-24TUCKER: Work around background pixels being drawn in the foregroundAdrian Frühwirth
Some backgrounds use colors in the reserved range [0xE0-0xF8] in a walkable area which results in a number of pixels being falsely drawn in the foreground (on top of Bud). This fixes Trac#10423 to work around these original game bugs and also removes the workaround for location 14 which does not seem to be needed anymore.
2018-02-11TUCKER: Remove glue workaround clarificationAdrian Frühwirth
The glue actually _is_ a unary usage object in the original game so this was simply a miss in our implementation which is now fixed. In other words, this wasn't a workaround and the original game does behave the same as ours now.
2018-02-11TUCKER: Use verb enum in all placesAdrian Frühwirth