[Scummvm-git-logs] scummvm master -> a98ecfba0a8fbdf147c8736d0bbbac3317d88a01
sev-
noreply at scummvm.org
Sat May 13 16:19:30 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
a98ecfba0a DIRECTOR: LINGO: Read 64-bit constants
Commit: a98ecfba0a8fbdf147c8736d0bbbac3317d88a01
https://github.com/scummvm/scummvm/commit/a98ecfba0a8fbdf147c8736d0bbbac3317d88a01
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-05-13T18:18:53+02:00
Commit Message:
DIRECTOR: LINGO: Read 64-bit constants
Used in D5+ particularly in safecracker
Changed paths:
engines/director/lingo/lingo-bytecode.cpp
diff --git a/engines/director/lingo/lingo-bytecode.cpp b/engines/director/lingo/lingo-bytecode.cpp
index 746a9ee31d9..1336d241597 100644
--- a/engines/director/lingo/lingo-bytecode.cpp
+++ b/engines/director/lingo/lingo-bytecode.cpp
@@ -1217,17 +1217,20 @@ ScriptContext *LingoCompiler::compileLingoV4(Common::SeekableReadStreamEndian &s
break;
}
- // Floats are stored as an "80 bit IEEE Standard 754 floating
- // point number (Standard Apple Numeric Environment [SANE] data type
- // Extended).
- if (length != 10) {
- error("Constant float expected to be 10 bytes but got %d", length);
- break;
+ if (length == 10) {
+ // Floats are stored as an "80 bit IEEE Standard 754 floating
+ // point number (Standard Apple Numeric Environment [SANE] data type
+ // Extended).
+ uint16 signAndExponent = READ_BE_UINT16(&constsStore[pointer]);
+ uint64 mantissa = READ_BE_UINT64(&constsStore[pointer+2]);
+
+ constant.u.f = Common::XPFloat(signAndExponent, mantissa).toDouble(Common::XPFloat::kSemanticsSANE);
+ } else if (length == 8) {
+ constant.u.f = READ_BE_FLOAT64(&constsStore[pointer]);
+ } else {
+ error("Constant float expected to be 8 or 10 bytes but got %d", length);
}
- uint16 signAndExponent = READ_BE_UINT16(&constsStore[pointer]);
- uint64 mantissa = READ_BE_UINT64(&constsStore[pointer+2]);
- constant.u.f = Common::XPFloat(signAndExponent, mantissa).toDouble(Common::XPFloat::kSemanticsSANE);
}
break;
default:
More information about the Scummvm-git-logs
mailing list