[Scummvm-git-logs] scummvm master -> 48d7e576119da93b71dc228b93053d37bffa6568
dreammaster
paulfgilbert at gmail.com
Sat Feb 29 17:31:30 UTC 2020
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
52b5926c52 ULTIMA8: Fix apperance of minimap
48d7e57611 ULTIMA8: Fix memset_16 bug
Commit: 52b5926c522fdf49dfd0b9cecd957138aed5f051
https://github.com/scummvm/scummvm/commit/52b5926c522fdf49dfd0b9cecd957138aed5f051
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-02-29T09:31:26-08:00
Commit Message:
ULTIMA8: Fix apperance of minimap
The minimap appears incorrectly for 2 reasons:
* The memset_32 implementation is buggy - it uses a logical or instead
of a binary or, and it fails to move the buffer pointer after doing
the aligned section. This becomes more obvious in 16bpp mode.
* The top line is not long enough
This corrects both issues.
Changed paths:
engines/ultima/ultima8/gumps/minimap_gump.cpp
engines/ultima/ultima8/misc/memset_n.h
diff --git a/engines/ultima/ultima8/gumps/minimap_gump.cpp b/engines/ultima/ultima8/gumps/minimap_gump.cpp
index 3a78f222f9..4f27a8265d 100644
--- a/engines/ultima/ultima8/gumps/minimap_gump.cpp
+++ b/engines/ultima/ultima8/gumps/minimap_gump.cpp
@@ -62,7 +62,7 @@ void MiniMapGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled)
_lastMapNum = currentmap->getNum();
}
- surf->Fill32(0xFFFFAF00, 0, 0, MAP_NUM_CHUNKS * 2 + 1, 1);
+ surf->Fill32(0xFFFFAF00, 0, 0, MAP_NUM_CHUNKS * 2 + 3, 1);
surf->Fill32(0xFFFFAF00, 0, 1, 1, MAP_NUM_CHUNKS * 2 + 1);
surf->Fill32(0xFFFFAF00, 1, MAP_NUM_CHUNKS * 2 + 1, MAP_NUM_CHUNKS * 2 + 1, 1);
surf->Fill32(0xFFFFAF00, MAP_NUM_CHUNKS * 2 + 1, 1, 1, MAP_NUM_CHUNKS * 2 + 1);
diff --git a/engines/ultima/ultima8/misc/memset_n.h b/engines/ultima/ultima8/misc/memset_n.h
index af9aeaed52..76cc23fbcb 100644
--- a/engines/ultima/ultima8/misc/memset_n.h
+++ b/engines/ultima/ultima8/misc/memset_n.h
@@ -55,7 +55,7 @@ inline void memset_32(void *buf, uint32 val, uint32 dwords) {
if ((reinterpret_cast<uintptr>(buf) & 1)) {
*reinterpret_cast<uint8 *>(buf) = static_cast<uint8>(val & 0xFF);
buf = (reinterpret_cast<uint8 *>(buf)) + 1;
- val = ((val & 0xFF) << 24) || ((val & 0xFFFFFF00) >> 8);
+ val = ((val & 0xFF) << 24) | ((val & 0xFFFFFF00) >> 8);
align --;
}
@@ -63,7 +63,7 @@ inline void memset_32(void *buf, uint32 val, uint32 dwords) {
if ((reinterpret_cast<uintptr>(buf) & 2)) {
*reinterpret_cast<uint16 *>(buf) = static_cast<uint16>(val & 0xFFFF);
buf = (reinterpret_cast<uint16 *>(buf)) + 1;
- val = ((val & 0xFFFF) << 16) || ((val & 0xFFFF0000) >> 16);
+ val = ((val & 0xFFFF) << 16) | ((val & 0xFFFF0000) >> 16);
align -= 2;
}
}
@@ -73,6 +73,7 @@ inline void memset_32(void *buf, uint32 val, uint32 dwords) {
// Do the unaligned data
if (align) {
+ buf = (reinterpret_cast<uint8 *>(buf)) + dwords * 4;
// Ok, shift along by 1 byte
if (align == 1) {
*reinterpret_cast<uint8 *>(buf) = static_cast<uint8>(val & 0xFF);
Commit: 48d7e576119da93b71dc228b93053d37bffa6568
https://github.com/scummvm/scummvm/commit/48d7e576119da93b71dc228b93053d37bffa6568
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-02-29T09:31:26-08:00
Commit Message:
ULTIMA8: Fix memset_16 bug
Changed paths:
engines/ultima/ultima8/misc/memset_n.h
diff --git a/engines/ultima/ultima8/misc/memset_n.h b/engines/ultima/ultima8/misc/memset_n.h
index 76cc23fbcb..a16a0e015c 100644
--- a/engines/ultima/ultima8/misc/memset_n.h
+++ b/engines/ultima/ultima8/misc/memset_n.h
@@ -98,7 +98,7 @@ inline void memset_16(void *buf, int32 val, uint32 words) {
if (words > 1) memset_32(buf, val | val << 16, words>>1);
// Final word
- if (words & 1) *(reinterpret_cast<uint16 *>(buf)) = static_cast<uint16>(val & 0xFFFF);
+ if (words & 1) *(reinterpret_cast<uint16 *>(buf) + (words - 1)) = static_cast<uint16>(val & 0xFFFF);
}
} // End of namespace Ultima8
More information about the Scummvm-git-logs
mailing list