Commit Graph
287 Commits
Author SHA1 Message Date
AndywinXp 2c601ad06a SCUMM: HE: SPYFOX3: Fix #4767
Indeed, we were missing some code from the original
which handled overlapping actors in which some moved
and some did not, which caused the latter to be erased.

Thanks eriktorbjorn for the great pointers on this.
2024-04-28 21:22:01 +02:00
AndywinXp 8fe0f93630 SCUMM: Rename CHARSET_1() to displayDialog()
We are now using a name which respects the coding
guidelines and also reflects how the actual function was
named.
2024-04-28 19:59:30 +02:00
AndywinXp 12f511928a SCUMM: HE: Cleanup 2024-04-26 23:21:29 +02:00
AndywinXp e70935815d SCUMM: HE: Fix AUX animations 2024-04-26 23:21:29 +02:00
AndywinXp 35939dd19d SCUMM: HE: Fix warnings 2024-04-26 23:21:29 +02:00
AndywinXp 7f004920a4 SCUMM: HE: Fix Aux Images rendering 2024-04-26 23:21:29 +02:00
AndywinXp 9d1ebb0cba SCUMM: HE: Fix TRLE AKOS cels not being erased 2024-04-26 23:21:29 +02:00
AndywinXp 9dd2ea4e43 SCUMM: HE: Re-implement WIZ text and Aux images 2024-04-26 23:21:29 +02:00
AndywinXp b19c4b772d SCUMM: HE: Overhaul more of the GFX system
* Overhaul sprites system
* Fix compression routines for 8-bit graphics
* More fixes and clean-up
2024-04-26 23:21:29 +02:00
AndywinXp 0a3b6c49b2 SCUMM: HE: Implement FloodFill operation 2024-04-26 23:21:29 +02:00
AndywinXp f17fe7413c SCUMM: HE: Begin WIZ and graphics rewrite 2024-04-26 23:21:29 +02:00
athrxx 41f11b8da9 SCUMM: fix/silence various coverity warnings 2024-03-11 20:44:18 +01:00
Orgad Shaneh 9e8cdd0769 SCUMM: Fix GCC warnings
* warning: comparison of integer expressions of different signedness
* memset clearing an object of non-trivial type
2024-01-31 05:56:25 +02:00
athrxx cc49587679 SCUMM: more coverity fixes 2024-01-30 00:35:49 +01:00
athrxx 008c6c93c4 SCUMM: minor cleanup 2024-01-28 16:57:59 +01:00
athrxx 6d7187ed3c SCUMM: (DIG) - fix bug no. 14845
("SCUMM: DIG: Conversation is stuck mid-cutscene and the game appears soft-locked")

(regression from def4530d)
2024-01-14 17:33:11 +01:00
athrxx 7396e21c47 SCUMM: (v7/8)- fix walk code bug 2023-11-25 01:10:25 +01:00
athrxx 165c8d14f2 SCUMM: add newly introduced var to saving/loading
(also do some minor cleanup to that new code)
2023-11-21 22:50:02 +01:00
athrxx def4530dab SCUMM: (v7/8) - fix walk code glitch
(for situations with x/y-flip box flags)
2023-11-18 21:52:44 +01:00
AndywinXp 8461f25218 SCUMM: Rename enhancementClassActive to enhancementEnabled 2023-11-08 11:46:06 +01:00
AndywinXp d5fa7aeb90 SCUMM: Mark all enhancements with their respective classes 2023-11-08 11:46:06 +01:00
athrxx c0040a0ff6 SCUMM: minor fix to remapDirection
This is a follow to my previous commit.  We get rid of
the remaining LOOM FIXME. I have checked the different
SCUMM versions to see when the _ignoreBoxes check got
introduced.
2023-10-28 21:32:52 +02:00
athrxx a72678d2d2 SCUMM: (v7/v8) - fix walk code regression
(missing room check)
This was (again) a very old bug that got unmasked
by recent changes. There was even a comment
from 2003 about how original DIG checked for the
current room, but we - allegedly - wouldn't have to
do that.

There is still a FIXME about Loom. I'll have a look at
that, too, since it is not difficult to do...
2023-10-28 20:53:44 +02:00
athrxx 862ad3b3b5 SCUMM: (v7/8) - fix minor walk code regression
(found in COMI, reported on discord)
2023-10-13 15:57:31 +02:00
athrxx 32daf91abe SCUMM: (v7/8) - improve fix for bug no. 14616
(make it more consistent with original code behavior)
2023-10-05 18:00:41 +02:00
athrxx da22877bad SCUMM: remove unneeded virtual declaration 2023-09-02 01:56:36 +02:00
Donovan Watteau 4e4182528a SCUMM: Fix startAnimActor() call causing a SIGSEGV in ft-demo
Fix typo in previous commit 8a54e258a5.
2023-08-30 20:32:04 +02:00
athrxx b1142facc3 SCUMM: fix formatting/whitespace 2023-08-27 15:38:52 +02:00
athrxx 8a54e258a5 SCUMM: (SCUMM7/8) - fix actor turning animation
The turning interpolation was completely disabled for v7/8, since it
interfered with DIG walk scripts. The result was that DIG was the only
v7/8 game that still had (script controlled) turning animations. COMI
and FT don't use walk scripts. So the actors would just flip directly from
the current facing direction to the target facing.

I have now changed parts of the walking code (and some other parts)
to better match the original v7/8 code.
2023-08-27 15:06:57 +02:00
athrxx a25b068b6a SCUMM: (SCUMM4-6) - fix actor turning direction
This is the same thing that already got fixed for v1-3. Turns
out that the code for v4-6 is exactly the same.
2023-08-25 13:38:56 +02:00
athrxx b36c487112 SCUMM: fix bug no. 14582
(pathfinding doesn't match original)

This does not address the (allegedly) wrong actor turning direction.
2023-08-22 20:27:48 +02:00
AndywinXp 9b4cba48c9 SCUMM: HE (Sound): Slightly simplify lipsync code 2023-08-18 22:20:45 +02:00
AndywinXp 815e280da4 SCUMM: HE (Sound): Implement software mixer for all the other games
Sound now appears to play correctly for all HE games.
2023-08-18 22:20:45 +02:00
AndywinXp f3c625437d SCUMM: HE (Sound): Implement some ADPCM stuff
Also, fix Backyard Baseball 2003 lipsync, and
a start-up crash
2023-08-18 22:20:45 +02:00
AndywinXp 9f89e3e823 SCUMM: HE (Sound): Finish wiring up high level functions
Everything is wired up... except the mixer, hence no sound.
2023-08-18 22:20:45 +02:00
AndywinXp f4455e773e SCUMM: Relabel part of the general sound code
Albeit not 100% necessary for rewriting the HE sound engine,
I decided to make this change in order to:
- Give proper meaning to magic numbers and variables
  which were given temporary names 20 years ago;
- Avoid going insane when making comparison with HE code
  and ours, when rewriting the sound code.
2023-08-18 22:20:45 +02:00
AndywinXp 2e58159d50 SCUMM: Fix bug #2377
This was a tricky one, as in order to obtain the correct behavior there was
the need to simulate what seems to be an oversight in the original code.
2023-01-26 00:40:15 +01:00
eientei e2c447ad81 SCUMM: Fix regression in Actor::animateActor from 546fd42749
This would cause the meteor explosion in the Maniac Mansion (V2) intro
to not play. Bug reported in Discord by Vanfanel
2023-01-17 11:51:21 +01:00
AndywinXp 546fd42749 SCUMM: Properly fix bug #813
Verified for the disasms of v3-v6 and HE
2023-01-14 11:53:50 +01:00
elasota e280186a8c ALL: VS warning cleanup 2022-12-25 16:31:57 +01:00
Donovan Watteau fb17cf427c SCUMM: Make Indy3 Trac#2556 workaround an optional enhancement
This enhancement could probably be improved if the original issue is
real, since the game really doesn't expect you to go back to the
front of the castle, but as I don't own the German release and can't
reproduce this bug from a normal gameplay on my other releases, I'd
rather only adjust the _enableEnhancements flag for now.
2022-10-16 16:55:39 +02:00
Donovan Watteau a16a1e57e2 SCUMM: Make Dig crypt subtitle workaround an optional waitForActor()
When Low finds the meaning of the crypt inside the tomb, subtitles are
not printed because of a missing waitForActor() call. This also happens
in the original interpreters.

In Trac#4410 and commit 3b05a52588, this
was implemented as an actor.cpp workaround, but doing it this way make
Low glide on the floor instead of having his usual walking animation.

Having him wait finishing his sentence before he moves to the crypt may
feel a bit odd too, but Low already does that in some other parts of the
game, and he just reacts at a very slow pace in general.

Moving this to o6_talkActor() also means that it's next to the other
waitForActor() workarounds, where we try to only target the impacted
lines when we can.

Also make this workaround use `_enableEnhancements` while there.
2022-10-09 00:22:05 +03:00
Donovan Watteau c65d64100e SCUMM: Prevent an OOB _extraBoxFlags access in Actor::remapDirection()
_walkbox may be equal to kOldInvalidBox, which is 255, but then
_extraBoxFlags[_walkbox] would be dereferenced while _extraBoxFlags only
has 65 elements.

Found with UBSan in Loom Talkie, when the leaf falls from the tree.
2022-09-30 14:24:44 +02:00
AndywinXp befd3b3511 JANITORIAL: SCUMM: Costume renderer and AKOS labeling
This commit:
- Continues my AKOS relabeling task and adds some documentation and missing information;
- Renames the codec functions from codec1, codec5 and codec16 to something more expressive;
- Add '_' in front of private class members, when missing;
- Changes "v1" names (unnamed variables supposedly coming from Ghidra or similar tools...) to something more expressive;
- Renames related variables from foo_bar (or foobar) to fooBar (on costume.cpp, base-costume.cpp and akos.cpp).
2022-09-28 00:12:52 +02:00
AndywinXp 8f744954c3 JANITORIAL: SCUMM: Improve readability of AKOS code
This is part of an on-going effort on my end to document the AKOS code, and fix strange stuff
such as integers being used as booleans, and variable_names instead of variableNames
2022-09-27 00:14:26 +02:00
Niv Baehr 7b6f852a17 SCUMM: HE: fix costume loop regression 2022-09-21 00:13:26 +03:00
BLooperZ 1f3a3be323 SCUMM: HE: share condition mask logic 2022-09-18 23:23:58 +03:00
Donovan Watteau b41d3f4eea SCUMM: Replicate the original clock tower behavior (COMI)
Guybrush can read the clock of Puerto Pollo, but this was only enabled
in the English, Italian and (fan-made) Russian releases, probably
because the result was poor for the other languages.

The German, French, Spanish, Brazilian Portuguese and CJK releases
disabled this feature, but the check was done in the interpreter, not in
the scripts.  This replicates this original behavior.

Findings and ScummEngine_v7::actorTalk() change by AndywinXp.
2022-09-15 17:29:50 +02:00
BLooperZ d0a0070d85 SCUMM: FREDDI4: fix lipsync issues 2022-08-23 21:44:05 +03:00
AndywinXp 5475281c09 SCUMM: Clean up boolean assignment in c108dc2
...whoops. Thanks athrxx for the heads up.
2022-07-27 17:12:55 +02:00