-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ScummTR corrupts MONKEY1-VGA "v1.0" in ScummVM #47
Comments
…tion bug Some versions of MONKEY1-FLOPPY-VGA (possibly only the earliest 1.0 version) have a duplicate 117/10 costume inside room 59 (Stan's). Commit dc94b2a tried to ignore the duplicate, as is already done for duplicate scripts, but it looks like this doesn't work as expected for duplicate costumes, because ScumMVM just glitches when displaying the modified game (as 000.LFL appears to contain some invalid bytes). I couldn't find an easy fix for this, and it's probably too late to spend more time on this for the 0.5.0 release, so let's just reject this game variant for now (earlier releases didn't support it at all). Issue #47.
Comparing the game data files before a simple --- 000.LFL.original
+++ 000.LFL.modified
@@ -219,7 +219,7 @@
00000f20 00 00 00 00 00 00 00 3c c2 67 00 00 0b 67 d9 00 |.......<.g...g..|
00000f30 00 2d 84 79 00 00 0e 34 82 00 00 0a bb ae 01 00 |.-.y...4........|
00000f40 0b a1 de 00 00 0a 9f b0 01 00 3a a4 83 01 00 2d |..........:....-|
-00000f50 7a db 00 00 55 97 e0 00 00 3b[82 8e 01 00]3b d8 |z...U....;....;.|
+00000f50 7a db 00 00 55 97 e0 00 00 3b[ff ff ff ff]3b d8 |z...U....;....;.|
00000f60 9b 01 00 25 e0 42 01 00 25 8e 58 01 00 35 14 2b |...%.B..%.X..5.+|
00000f70 01 00 35 11 49 01 00 35 84 1c 01 00 35 2f 25 01 |..5.I..5....5/%.|
00000f80 00 3b bb fc 01 00 00 00 00 00 00 00 00 00 00 00 |.;..............| The It looks like ScummRp may have a special treatment when an offset is set to By the way, my French version (with the bug) shows Anyway, I've pushed commit 4f92fe2, so that ScummTr 0.5.0 just rejects this version, instead of corrupting the game. I just don't know how to fix this at the moment, and I'd like to release ScummTR 0.5.0 this month. Since no earlier version of ScummTr had support for these variants anyway, it's not going to be a regression… |
Looks like this bug may exist in all "v1.0" versions of the VGA game: |
FWIW, regarding the "glitch" above, if the issue only shows up in ScummVM, that's maybe because the 000.LFL index file gets changed a bit, and so ScummVM won't recognize it as Monkey1 VGA but Monkey1 EGA (which is wrong), since its fallback detection code is currently a bit limited. So actually ScummPacker's fix for the index problem in Monkey1 VGA is maybe OK, but the ScummVM detection bug just made me misdiagnose the issue. |
i have the same problem with the german vga dos version. dosbox is working, scummvm gives the same glitches. i try to maake a re-translation of the game. but it can not be played with scummvm because of that. the german ega version is working fine :) |
Hmm yeah that's maybe another reason why improving the fallback detection code in ScummVM's engines/scumm/detection_internal.h would be helpful. I don't think there's much interest from the rest of the ScummVM test in working on this improvement, but I do see the cases where it could benefit from it. And since there are several reasons for me to do this, it increases its priority in my todo-list… |
Summary
Commit dc94b2a added a workaround for the following duplicate offset in MONKEY1-VGA-FR:
Indeed, the commit above let one use ScummRP/ScummTR on MONKEY1-VGA-FR (although I'm not completely sure we're removing the right duplicate yet, see issue #31), but doing so corrupts the game in ScummVM:
scummtr -g monkey -of tmp.txt scummtr -g monkey -if tmp.txt # Or: scummrp -g monkey -od DUMP scummrp -g monkey -id DUMP
In DOSBox, this screen is OK, but ScummVM tends to be more robust than the original interpreter, so we're probably really corrupting something (I haven't done a full game play yet).
I can't compare this with the original
scummtr.exe
0.4.0 release, because this version had theDuplicate offset in index
error above. But, recompiling ScummTR 0.4.1 with commit dc94b2a on top of it in Visual C++ 2005 Express (which should be quite close to an original release) has the same behavior, so I don't think that it's because of a recent regression.This looks quite similar to issue #45, but I do have the
std::stable_sort
fix, and using an older compiler doesn't seem to change anything.Impacted games
The Secret of Monkey Island
ScummTR versions
Current Git HEAD
Relevant output (error messages, warnings, or any useful info)
No response
I own a legitimate game
The text was updated successfully, but these errors were encountered: