Commit Graph
250 Commits
Author SHA1 Message Date
athrxx 61d163ac98 SCUMM: silence two MSVC warnings 2021-07-10 01:10:04 +02:00
Paul Gilbert 0136043f09 COMMON: Revert Change Rect and Point to have int32 fields
This reverts commit 1c3e7fb4e9.
2021-07-06 20:35:42 -07:00
Paul Gilbert 1c3e7fb4e9 COMMON: Change Rect and Point to have int32 fields 2021-07-04 18:24:26 -07:00
athrxx 1bf264d5f6 SCUMM: (SCUMM3) - fix bug/typo in walk code 2021-07-04 21:23:24 +02:00
athrxx f039bdb083 SCUMM: (SCUMM3) - pixel-perfect walking
This is a follow-up commit to 8cbcde0c (bug
https://bugs.scummvm.org/ticket/12666). While that commit improved the situation, in particular the behavior described in the bug ticket, it still wasn't anything like pixel-perfect.
The agents would walk in a weird half circle due to being showered with walkActorToActor calls from the script.

I have now implemented the original walk code and also compared the first part of the INDY3 scene described in the ticket frame by frame with the DOSBox debugger to check whether it is truly pixel-perfect.
2021-07-04 18:47:54 +02:00
Torbjörn Andersson b5cfd4d5e3 SCUMM: Remove mac_restoreCharsetBg()
The differences between the two weren't as great as I had first thought.
2021-06-30 14:59:55 +02:00
Torbjörn Andersson 9d2d6b60c8 SCUMM: Some more work on the Indy 3 Mac text box.
I'm starting to reconsider the exact way I'm doing this, so this is a
good place to commit what's there, before tearing it up.
2021-06-30 14:59:55 +02:00
Torbjörn Andersson 319492e83a SCUMM: Add function for drawing Indy 3 Mac text box
Well, the border and title at least. I still need to get the text to be
drawn inside, and remove the box once it's done.
2021-06-30 14:59:55 +02:00
athrxx 8cbcde0c57 SCUMM: fix bug 12666 ("Dodgy path finding in Indy 3")
The particular scene with Indy and Donovan's men had all sorts of pathfinding issues compared to DOSBox:
- Indy's initial facing was downwards instead of to the right when walking from the window to the "meeting point" and the path he walked wasn't exactly correct.
- One of Donovan's men was facing down instead of left.
- Indy would take several weird up and down walks at the walk box transition from box 1 to box 3
- Indy would walk over the grass instead of on the road.

All fixes are from disasm. Some code I have removed (or rather commented out) seems to have been meant as a fix for bug no. 1778. So maybe that one has to be fixed again (correctly), but I don't know that yet.

The scene is not 100% fixed yet. Donovan's men walk a bit too much upwards in the beginning. But I can do that separately...

It will really be necessary to do some testing (and possibly more fixing) in the catacombs, in castle brunwald and in the zeppelin maze.
2021-06-29 23:19:29 +02:00
athrxx 89152dc2c4 SCUMM: fix regression from ef0d76a2
(reported by erictorbjorn)
https://github.com/scummvm/scummvm/commit/ef0d76a2c7c3a061f4322fa29b879b4bdef606ad
2021-06-28 16:31:27 +02:00
athrxx 3a4e3879f4 SCUMM: partial revert of c57243ae (limit to SCUMM3)
This is only supposed to apply to SCUMM3. It is a bit difficult to recognize this from SCUMM1/2 disasm, since things happen in a different order there. But it actually causes glitches in SCUMM1/2 (actors are slowed down sometimes) and it isn't required for bugs like no. 12278 (which has been fixed for SCUMM1/2 by one of my other recent commits).
2021-06-13 01:28:55 +02:00
sluicebox 674ed112aa JANITORIAL: Update more old bug tracker numbers
I missed the six digit ones and a few others in:
93eeffc84d
2021-06-09 14:28:52 -06:00
athrxx ef0d76a2c7 SCUMM: (INDY3) - properly fix bug no. 1052
(minor SCUMM 3 walk code fix)

This fixes it according to disasm, without relying on a hack.
2021-06-07 23:51:32 +02:00
athrxx 1f7c52a942 SCUMM: whitespace 2021-06-06 17:06:33 +02:00
athrxx fa48015bbd SCUMM: (ZAK/TOWNS) - fix bug no. 4594 and 4601
4594: "Zak keeps walk animation without moving"

4601: "SCUMM: Zak McKracken (FM-Towns) - shopkeeper keeps walking"

Bug 4594 also happens with the original ZAK FM-TOWNS interpreter (unlike SCUMM1/2). I have added a workaround similiar to PR #2991.

Bug 4601 does not happen with the original, although it seems to have the exaxct same cause and is also fixed by this workaround. So I have stopped exploring this one for now.

I have limited the workaround to ZAK, since the bug reports are all from that game. To me, it looks like an oversight when converting the original SCUMM1/2 scripts to SCUMM3.
2021-06-06 16:02:00 +02:00
athrxx a408f44c1b SCUMM: (SCUMM1/2) - fix bug no. 4594 ("Zak keeps walk animation without moving")
This is only the fix for SCUMM1/2. It fixes at least the bug described in the ticket (clicking on the shop manager after buying a lotto ticket). Unlike later versions V1/2 adds and removes the MF_TURN flag on the actor without touching the other bits. I have verified this from disasm and dosbox debugging.
2021-06-06 16:01:50 +02:00
athrxx f5ed4d54d3 SCUMM: (SCUMM1-3) - fix actor facing for diagonal walks
While testing fixes for bug no. 12278 I also noticed that the actor facing when walking diagonally did not match the original behavior when I had the ZAK intros running in ScummVM and UNZ (for Zak-Towns) and ScummVM and DosBox (for Zak-DOS-V1 and V2).

This is about the decision whether a character that walks diagonally should face up/down or left/right. I implemented the original method to determine the facing.
2021-06-06 16:01:19 +02:00
athrxx 74ed6d94c8 SCUMM: (SCUMM1-3) - (very minor) fix for walk dir interpolation
Our current interpolation does not always turn characters in the same direction as the original, e. g. when walking straight up or down the original will always turn the character counter-clockwise. I implemented the interpolation table used by the original interpreters for more faithful display. Verified visually for v1-v3, and from disasm for v3 and v1.
2021-06-06 16:01:10 +02:00
athrxx c57243ae85 SCUMM: (ZAK) - fix bug #12278 ("Zak's positioning in the intro")
(added 2 lines of code from disasm)
2021-06-06 16:00:51 +02:00
Orgad Shaneh 3b05a52588 SCUMM: Workaround missing subtitle in The Dig (#3014)
Fixes #4410
2021-06-02 21:59:50 +03:00
Torbjörn Andersson 5b70ddd802 SCUMM: Fix text color and shadow
Text positioning is still all over the place, though.
2021-05-17 18:44:29 +02:00
sluicebox 93eeffc84d JANITORIAL: Update old bug tracker numbers 2021-03-03 02:15:05 +02:00
athrxx 9b582ce0c5 SCUMM: (LOOM) - fix bug no. 11480
(Loom (VGA) - Graphical glitches where some text appears over previous line and the wood musical note disappear)

The glitch is caused by a workaround in ScummEngine::actorTalk(). Removing it will make the original bug (speech animations for empty text strings) reappear. I have located the code which prevents that in LOOM DOS EGA disasm and added that. The FM-Towns versions don't have such code, but I do not get that weird speech animations either. So it seems to be fixed in a different manner there...
2021-02-28 21:00:23 +01:00
athrxx 7bcf3ef3e3 SCUMM: fix bug 11946 (INDY4: Dialogue skip passes several lines at once)
I have checked the behavior of original INDY4 and also DOTT (since it is a later SCUMM version). Both games do actually suppress the whole dialogue line when pressing '.', even when it is a multi part line (containing one or more '3' command codes). So we don't have a bug here. But this applies to speech enabled setting only. In text only mode the original allows to step through the dialogue line by line (and also through the message parts separated by the '3' command). I have fixed this from disasm so that it matches the original behavior. I've also confirmed for SAMNMAX from disasm (not extensively, just checked whether it has the voicemode == 2 check at the beginning of startTalkSound()).
2021-02-11 20:01:23 +01:00
athrxx 4a7b720a31 SCUMM: whitespace 2020-10-24 17:58:29 +02:00
mataniko e85e6cf846 SCUMM: Fix MM NES palette and colors
Also adds an optional more natural palette as a game option
2020-05-03 01:11:13 +02:00
D G Turner 59b639ed4d SCUMM: Fix Missing Default Switch Cases
These are flagged by GCC if -Wswitch-default is enabled.
2019-12-23 11:56:16 +00:00
Torbjörn Andersson 1e23d43006 SCUMM: Silence GCC memset() warnings
Recent GCC versions complain if you memset() a class or struct that
contain non-POD data types. Get around that by either initializing
the object when created, or by adding a reset() method.
2019-07-14 14:58:19 +03:00
Robert Crossfield b1bce3ec37 SCUMM: MM V0: Fix regression from 038b3b1789 and comment/cleanup 2018-03-12 11:36:04 +01:00
Colin Snover 2e061d95c5 COMMON: Move VER macro for serializer into common code 2018-01-31 17:58:01 +01:00
Colin Snover 9916b26383 SCUMM: Replace UB-triggering serialization code with Common::Serializer
Fixes Trac#10342.
2018-01-31 17:58:01 +01:00
Colin Snover 9d10a998ae SCUMM: Fix stack overflow initializing locals
This happens when clicking on the triangular button in room 27 in
The Dig.

There are probably several other places where this overflow
happens, since there are several different `int args[16]` in
the code (and many more `int args[` of various sizes, not all of
which are at least NUM_SCRIPT_LOCAL).
2018-01-31 17:56:33 +01:00
Colin Snover b166746b9c SCUMM: Fix stack overflow initializing locals
This happens at least when trying to right click on the motorcycle
at the start of Full Throttle.
2018-01-31 17:56:33 +01:00
Colin Snover 57084b4a1b SCUMM: Fix UB shifting negative integers in Actor 2017-12-01 19:22:35 -06:00
Torbjörn Andersson b4c1e86d9f JANITORIAL: Silence GCC warning
Since case 64 was added for "MM C64 Costume Animation", and
considering the way it's written to only affect game version 0,
it is clearly an intentional fall through.
2017-08-06 11:51:57 +02:00
Robert Crossfield 038b3b1789 SCUMM: MM V0: Fix actors skipping between certain walk-boxes 2017-02-21 06:17:32 +11:00
Robert Crossfield 02ac724c66 SCUMM: MM V0: Fix an issue with Sandy appearing to slide across a walkbox 2017-02-15 17:05:28 +11:00
Robert Crossfield 485f26e4d6 SCUMM: Fix bug #4515 (Dr. Fred facing wrong way in lab cutscene) 2016-12-27 10:21:09 +11:00
Eugene Sandulenko dead4aa014 JANITORIAL: Remove trailing spaces 2016-10-09 14:59:58 +02:00
Robert Crossfield 67071b42bc SCUMM: Maniac V0: Implement 'simulator' for CPU lag (as the original engine occasionally ran at less than 60Hz). Fix call to 'getClosestPtOnBox', whcih was being passed X * V12_X_MULTIPLIER and Y * V12_Y_MULTIPLIER, but the box coordinates, where not 2016-07-19 20:39:58 +10:00
Robert Crossfield 44000ba826 SCUMM: Maniac V0: Implement original walkbox queue, Cleanup actor walk code 2016-07-19 18:54:14 +10:00
Kirben bba1af422f SCUMM: Fix bug #3230 PAJAMA SAM 2: Background gfx glitch in intro. 2016-05-24 20:19:18 +10:00
Alexandre Detiste 6c298e964f JANITORIAL: Typos detected with lintian & grep 2016-02-15 18:27:02 +01:00
Kirben 0a6904c4ab SCUMM: Correct variable type in Actor_v0::adjustPosInBorderWalkbox, since variable can have negative value. 2014-12-08 23:31:59 +11:00
Kirben 801bfedfc0 Merge pull request #542 from segrax/V1-V2_WalkAnimFix
SCUMM V1-V2: Fix actor walk behavior (transitions between walk boxes, and changing destination issue)
2014-12-08 19:29:29 +11:00
Robert Crossfield d92e47f4e6 SCUMM V1-V2: Fix actor walk behavior (transitions between walk boxes, and changing destination issue) 2014-12-08 13:14:12 +11:00
Robert Crossfield d83438225e SCUMM: Maniac V0: Add support for D64 Demo Disk, Cleanup duplicate 'Talk' array 2014-12-08 10:14:37 +11:00
Kirben c9e6db6571 SCUMM: Correct spacing and warning in last Maniac V0 merge. 2014-12-07 15:24:21 +11:00
Robert Crossfield 814d9b1153 SCUMM: Maniac V0: Correctly handle 'slanted' walk-boxes, Add new variables to save-games, Bump the SaveGame Version number, remove obsolete V0 code in V2 functions 2014-12-02 16:25:03 +11:00
Robert Crossfield 29d46e8a10 SCUMM: Maniac V0: If boxes are neighbors, walk directly to the new box. Remove extra call to 'animateCostume'. Remove now unnecessary V0 walk calc functions 2014-11-29 09:07:10 +11:00