[Scummvm-git-logs] scummvm master -> 126cba16cf6b3400ac5c612aa39d0ce418023e02
sev-
noreply at scummvm.org
Tue May 14 16:28:18 UTC 2024
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:
126cba16cf DIRECTOR: Factored out XPFloat reading
Commit: 126cba16cf6b3400ac5c612aa39d0ce418023e02
https://github.com/scummvm/scummvm/commit/126cba16cf6b3400ac5c612aa39d0ce418023e02
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-05-14T18:27:58+02:00
Commit Message:
DIRECTOR: Factored out XPFloat reading
Changed paths:
engines/director/lingo/lingo-bytecode.cpp
engines/director/util.cpp
engines/director/util.h
diff --git a/engines/director/lingo/lingo-bytecode.cpp b/engines/director/lingo/lingo-bytecode.cpp
index b341e87f3f0..452aef9d4fb 100644
--- a/engines/director/lingo/lingo-bytecode.cpp
+++ b/engines/director/lingo/lingo-bytecode.cpp
@@ -22,7 +22,6 @@
#include "common/config-manager.h"
#include "common/file.h"
#include "common/substream.h"
-#include "common/xpfloat.h"
#include "director/director.h"
#include "director/cast.h"
@@ -1242,10 +1241,7 @@ ScriptContext *LingoCompiler::compileLingoV4(Common::SeekableReadStreamEndian &s
// 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);
+ constant.u.f = readAppleFloat80(&constsStore[pointer]);
} else if (length == 8) {
constant.u.f = READ_BE_FLOAT64(&constsStore[pointer]);
} else {
diff --git a/engines/director/util.cpp b/engines/director/util.cpp
index cab1244f49e..1d43798e6c4 100644
--- a/engines/director/util.cpp
+++ b/engines/director/util.cpp
@@ -26,6 +26,7 @@
#include "common/punycode.h"
#include "common/str-array.h"
#include "common/tokenizer.h"
+#include "common/xpfloat.h"
#include "common/compression/deflate.h"
#include "director/types.h"
@@ -1650,4 +1651,15 @@ void DirectorEngine::delayMillis(uint32 delay) {
_system->delayMillis(delay);
}
+double readAppleFloat80(byte *ptr) {
+ // Floats in an "80 bit IEEE Standard 754 floating
+ // point number (Standard Apple Numeric Environment [SANE] data type
+ // Extended).
+
+ uint16 signAndExponent = READ_BE_UINT16(&ptr[0]);
+ uint64 mantissa = READ_BE_UINT64(&ptr[2]);
+
+ return Common::XPFloat(signAndExponent, mantissa).toDouble(Common::XPFloat::kSemanticsSANE);
+}
+
} // End of namespace Director
diff --git a/engines/director/util.h b/engines/director/util.h
index a9cb0d2a6bb..59f4f8d8e91 100644
--- a/engines/director/util.h
+++ b/engines/director/util.h
@@ -70,6 +70,8 @@ Common::Path dumpFactoryName(const char *prefix, const char *name, const char *e
bool isButtonSprite(SpriteType spriteType);
+double readAppleFloat80(byte *ptr);
+
class RandomState {
public:
uint32 _seed;
More information about the Scummvm-git-logs
mailing list