aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/seg_manager.cpp
diff options
context:
space:
mode:
authorMatthew Hoops2009-12-30 16:00:56 +0000
committerMatthew Hoops2009-12-30 16:00:56 +0000
commit5382aa1ab0ac0b42a33a4b73664e3a8064b4211b (patch)
tree17ad3256bc97d181433414aac36b8cf224e22e71 /engines/sci/engine/seg_manager.cpp
parentfd2d0fc7182e97fedf901b276bc7e48dcdcb4c13 (diff)
downloadscummvm-rg350-5382aa1ab0ac0b42a33a4b73664e3a8064b4211b.tar.gz
scummvm-rg350-5382aa1ab0ac0b42a33a4b73664e3a8064b4211b.tar.bz2
scummvm-rg350-5382aa1ab0ac0b42a33a4b73664e3a8064b4211b.zip
SCI32:
- Set signature for Array/String - Add the kernel table differences for the GK2 demo - Implement kMessage changes in SCI32 - Use an empty string as the default path for all games now (and modify kValidPath to accept that only as valid) - Add dereferencing for Arrays svn-id: r46756
Diffstat (limited to 'engines/sci/engine/seg_manager.cpp')
-rw-r--r--engines/sci/engine/seg_manager.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/engines/sci/engine/seg_manager.cpp b/engines/sci/engine/seg_manager.cpp
index 5db6b88136..755e44c543 100644
--- a/engines/sci/engine/seg_manager.cpp
+++ b/engines/sci/engine/seg_manager.cpp
@@ -929,7 +929,14 @@ byte *SegManager::derefBulkPtr(reg_t pointer, int entries) {
}
reg_t *SegManager::derefRegPtr(reg_t pointer, int entries) {
+#ifdef ENABLE_SCI32
+ // HACK: Due to a limitation in the SegManager, we don't know if the pointer needs to be
+ // word aligned. If it's a new style array, then it is just accessing the arrays from a
+ // table and this doesn't need to be true.
+ if (pointer.offset & 1 && pointer.segment != Arrays_seg_id) {
+#else
if (pointer.offset & 1) {
+#endif
warning("Unaligned pointer read: %04x:%04x expected with word alignment", PRINT_REG(pointer));
return NULL;
}