Commit Graph
143 Commits
Author SHA1 Message Date
Le Philousophe 86bb6a215f TUCKER: Don't use unsafe sprintf and vsprintf 2022-10-23 22:46:19 +02:00
Eugene Sandulenko abea37c9bb ALL: Update ScummVM project license to GPLv3+ 2021-12-26 18:48:43 +01:00
Alexandre Detiste 6044504762 JANITORIAL: typos
some in the variable names, some in the comments;
no change for the strings that interract with original games assets
2021-10-31 20:46:31 +01:00
sluicebox 93eeffc84d JANITORIAL: Update old bug tracker numbers 2021-03-03 02:15:05 +02:00
mataniko 581a6ec7d6 JANITORIAL: Rename kSupportsRTL to kSupportsReturnToLauncher 2020-05-12 10:36:38 +02:00
Paul Gilbert 6c187dbb30 TUCKER: Changing autosave to work with common Engine code 2020-02-16 15:44:28 -08:00
Paul Gilbert 85b469ff5d TUCKER: Refactor to use Engine debugger 2020-02-16 13:07:19 +02:00
D G Turner 3544fe355a TUCKER: Fix Missing Default Switch Cases
These are flagged by GCC if -Wswitch-default is enabled.
2019-11-09 17:54:34 +00:00
Adrian Frühwirth aadaf0ce50 TUCKER: Fix unnecessary conversion from int to bool 2018-07-04 12:53:29 +02:00
Adrian Frühwirth dd431526be TUCKER: Use nullptr 2018-07-04 12:42:34 +02:00
Adrian Frühwirth 3676c3886d TUCKER: Fix panel background being off by one pixel
This fixes an original game glitch where the main options menu background
image is drawn one pixel too high.

Fixes Trac#10496.
2018-04-21 00:57:12 +02:00
Adrian Frühwirth 0bf68e9581 TUCKER: Follow code formatting convention for switch statements 2018-03-28 21:40:10 +02:00
Adrian Frühwirth 2b9aa962d9 TUCKER: Check '.' instead of KEYCODE_PERIOD when skipping speech
See commit 7cbf5a9289 for more information.
2018-03-28 20:00:42 +02:00
Adrian Frühwirth a86a4e0286 TUCKER: Use kLastSaveSlot where appropriate 2018-03-21 21:59:43 +01:00
Adrian Frühwirth 0749507a34 TUCKER: Add Location enum 2018-03-21 16:47:10 +01:00
Adrian Frühwirth b4c1efe2f2 TUCKER: Remove superfluous workaround for Trac#4156
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-20 22:22:11 +01:00
Adrian Frühwirth d2ae21624e TUCKER: Implement workaround for original script bug mentioned in commit 23fd97c99a 2018-03-19 21:36:13 +01:00
Adrian Frühwirth 23fd97c99a TUCKER: Actually implement mof opcode
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-18 23:38:52 +01:00
Adrian Frühwirth 91ec2a0c38 TUCKER: Add missing buv and c0v opcodes
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-18 22:16:33 +01:00
Adrian Frühwirth c4dfa57e6f TUCKER: Add comment about earlier commit e018efbc22 fixing Trac#6645 2018-03-17 21:18:46 +01:00
Adrian Frühwirth 578f9d2e5c TUCKER: Fix incorrect transition of Lola animation
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-17 21:00:33 +01:00
Adrian Frühwirth ed44cbf287 TUCKER: Add savegame metadata and autosave support 2018-03-16 20:18:32 +01:00
Adrian Frühwirth 30ed738a7f TUCKER: Comment out dead code, match disassembly
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-15 00:11:11 +01:00
Adrian Frühwirth ac59903df0 TUCKER: Remove unnecessary variable from drawInfoString() 2018-03-14 22:21:07 +01:00
Adrian Frühwirth 57479c2fa4 TUCKER: Use Verb enum in even more places 2018-03-14 21:59:17 +01:00
Adrian Frühwirth 0df574abda TUCKER: Add TODO comment about discrepancy with disassembly 2018-03-14 19:56:34 +01:00
Adrian Frühwirth e018efbc22 TUCKER: Fix alleyway cellar location hotspot bug
Fixes Trac#6645.
2018-03-12 11:36:51 +01:00
Adrian Frühwirth ada79c7f65 TUCKER: Workaround capitalized "With"/"Con" in sentence bar
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-05 21:32:56 +01:00
Adrian Frühwirth 585fc91de5 TUCKER: Add VerbPreposition enum 2018-03-05 21:32:56 +01:00
Adrian Frühwirth 3de1ba11b3 TUCKER: Use Verb enum in more places 2018-03-02 22:52:41 +01:00
Adrian Frühwirth 5b89fd7dab Add PanelState, PanelStyle and PanelType enums
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-02 19:41:45 +01:00
Adrian Frühwirth 7aee8f4e42 TUCKER: Add Part enum 2018-03-02 17:38:04 +01:00
Adrian Frühwirth dce8a98a18 TUCKER: Add CursorStyle and CursorState enums 2018-03-02 17:26:12 +01:00
Adrian Frühwirth 842c67fc34 TUCKER: Allow skipping speech
Escape, period or right mouse click skips one sentence at a time.
2018-02-25 20:15:25 +01:00
Adrian Frühwirth c55ee3f967 TUCKER: Confine Bud to walkable area when entering club
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-25 20:07:21 +01:00
Adrian Frühwirth 394fcc8c84 TUCKER: Work around background pixels being drawn in the foreground
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-24 23:16:15 +01:00
Adrian Frühwirth 3ce56d5427 TUCKER: Remove glue workaround clarification
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-11 13:27:18 +01:00
Adrian Frühwirth fd4d2fb460 TUCKER: Use verb enum in all places 2018-02-11 12:52:17 +01:00
Adrian Frühwirth 43053644a8 TUCKER: Remove superfluous arguments in loadBudSpr et al 2018-02-11 11:50:52 +01:00
Adrian Frühwirth db836145c6 Revert "TUCKER: Fix Bud drawn behind parts of statue in park"
This fixed the statue but broke the park entrance which I had missed.
2018-02-09 23:26:31 +01:00
Adrian Frühwirth 7ad8fe4610 TUCKER: Fix Bud drawn behind parts of statue in park
Fixes Trac#10423.
2018-02-09 22:52:34 +01:00
Adrian Frühwirth 3236122465 TUCKER: Make the glue a "unary usage" object
Workaround for Trac#5511.
2018-02-09 21:59:35 +01:00
Adrian Frühwirth 8424b0a301 TUCKER: Fix offset drawing bug in drawSprite()
Fixes Trac#6639.
2018-02-07 20:50:15 +01:00
Adrian Frühwirth 7e0cac25de TUCKER: Add inventory and save slot scrolling via mouse wheel
Fixes Trac#10424.
2018-02-03 22:08:33 +01:00
Adrian Frühwirth 90ce265ab8 TUCKER: Print infobar string if no savegame exists
Before, the ingame load dialog pretended to allow loading savegames from
all possible slots even if no savegames existed.
This introduces the original interpreter's behavior which instead loads
a resource string from infobar.txt informing the user that no savegames
are available.
2018-01-31 19:23:56 +01:00
Adrian Frühwirth ce790bff1c TUCKER: Fix sentence bar offsets
Fixes Trac#10413 and Trac#10414.
2018-01-31 19:22:56 +01:00
Adrian Frühwirth 1133b34954 TUCKER: Fix dirty rects drawing bug in drawStringInteger() 2018-01-31 19:20:31 +01:00
Adrian Frühwirth 89cbf91d63 TUCKER: Use existing enum for verbs 2018-01-31 19:18:07 +01:00
Adrian Frühwirth 3c37c42bd0 TUCKER: Cure Bud's and Billy's seasickness
This ensures that the calculated offsets for Bud and Billy are [0,2] px
and follow the sequence 0px -> 1px -> 2px -> 1px -> 0px as opposed to
the earlier 0px -> 1px -> 2px -> 3px -> 0px which resulted in them
teleporting back to their original location and on top of that being
out of sync with the boat.

Fixes Trac#6643.
2018-01-31 19:02:29 +01:00
Adrian Frühwirth ff8e4a4410 TUCKER: Fix walking Royston glitch
Fixes Trac#6640.
2018-01-31 19:00:47 +01:00