[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