[Scummvm-cvs-logs] SF.net SVN: scummvm:[40274] scummvm/trunk/engines/sci/engine
fingolfin at users.sourceforge.net
fingolfin at users.sourceforge.net
Sun May 3 13:07:07 CEST 2009
Revision: 40274
http://scummvm.svn.sourceforge.net/scummvm/?rev=40274&view=rev
Author: fingolfin
Date: 2009-05-03 11:07:07 +0000 (Sun, 03 May 2009)
Log Message:
-----------
SCI: Continue transition from MemObject to MemObjectNEW
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/kernel.cpp
scummvm/trunk/engines/sci/engine/klists.cpp
scummvm/trunk/engines/sci/engine/kmovement.cpp
scummvm/trunk/engines/sci/engine/kscripts.cpp
scummvm/trunk/engines/sci/engine/scriptconsole.cpp
scummvm/trunk/engines/sci/engine/seg_manager.cpp
scummvm/trunk/engines/sci/engine/seg_manager.h
scummvm/trunk/engines/sci/engine/vm.cpp
Modified: scummvm/trunk/engines/sci/engine/kernel.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel.cpp 2009-05-03 11:04:37 UTC (rev 40273)
+++ scummvm/trunk/engines/sci/engine/kernel.cpp 2009-05-03 11:07:07 UTC (rev 40274)
@@ -239,10 +239,9 @@
// Returns a pointer to the memory indicated by the specified handle
byte *kmem(EngineState *s, reg_t handle) {
- MemObject *mobj = GET_SEGMENT(*s->seg_manager, handle.segment, MEM_OBJ_HUNK);
- HunkTable *ht = &(mobj->data.hunks);
+ HunkTable *ht = (HunkTable *)GET_SEGMENT(*s->seg_manager, handle.segment, MEM_OBJ_HUNK);
- if (!mobj || !ENTRY_IS_VALID(ht, handle.offset)) {
+ if (!ht || !ENTRY_IS_VALID(ht, handle.offset)) {
SCIkwarn(SCIkERROR, "Error: kmem() with invalid handle\n");
return NULL;
}
@@ -686,7 +685,7 @@
return KSIG_REF;
case MEM_OBJ_CLONES:
- if (allow_invalid || ENTRY_IS_VALID(&(mobj->data.clones), reg.offset))
+ if (allow_invalid || ENTRY_IS_VALID((CloneTable *)mobj, reg.offset))
return KSIG_OBJECT;
else
return KSIG_OBJECT | KSIG_INVALID;
@@ -711,13 +710,13 @@
return KSIG_REF | KSIG_INVALID;
case MEM_OBJ_LISTS:
- if (allow_invalid || ENTRY_IS_VALID(&(mobj->data.lists), reg.offset))
+ if (allow_invalid || ENTRY_IS_VALID((ListTable *)mobj, reg.offset))
return KSIG_LIST;
else
return KSIG_LIST | KSIG_INVALID;
case MEM_OBJ_NODES:
- if (allow_invalid || ENTRY_IS_VALID(&(mobj->data.nodes), reg.offset))
+ if (allow_invalid || ENTRY_IS_VALID((NodeTable *)mobj, reg.offset))
return KSIG_NODE;
else
return KSIG_NODE | KSIG_INVALID;
Modified: scummvm/trunk/engines/sci/engine/klists.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/klists.cpp 2009-05-03 11:04:37 UTC (rev 40273)
+++ scummvm/trunk/engines/sci/engine/klists.cpp 2009-05-03 11:07:07 UTC (rev 40274)
@@ -42,7 +42,7 @@
return NULL;
}
- NodeTable *nt = &(mobj->data.nodes);
+ NodeTable *nt = (NodeTable *)mobj;
if (!ENTRY_IS_VALID(nt, addr.offset)) {
sciprintf("%s, L%d: Attempt to use non-node "PREG" as list node\n", __FILE__, __LINE__, PRINT_REG(addr));
@@ -62,7 +62,7 @@
return NULL;
}
- ListTable *lt = &(mobj->data.lists);
+ ListTable *lt = (ListTable *)mobj;
if (!ENTRY_IS_VALID(lt, addr.offset)) {
sciprintf("%s, L%d: Attempt to use non-list "PREG" as list\n", __FILE__, __LINE__, PRINT_REG(addr));
Modified: scummvm/trunk/engines/sci/engine/kmovement.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kmovement.cpp 2009-05-03 11:04:37 UTC (rev 40273)
+++ scummvm/trunk/engines/sci/engine/kmovement.cpp 2009-05-03 11:07:07 UTC (rev 40274)
@@ -270,7 +270,7 @@
return;
}
- buf = s->seg_manager->heap[fptr.segment]->data.script.buf + fptr.offset;
+ buf = s->seg_manager->getScript(fptr.segment, SEG_ID)->buf + fptr.offset;
handle_movecnt = (SCI_VERSION_MAJOR(s->version) == 0 || checksum_bytes(buf, 8) == 0x216) ? INCREMENT_MOVECNT : IGNORE_MOVECNT;
sciprintf("b-moveCnt action based on checksum: %s\n", handle_movecnt == IGNORE_MOVECNT ? "ignore" : "increment");
} else {
Modified: scummvm/trunk/engines/sci/engine/kscripts.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kscripts.cpp 2009-05-03 11:04:37 UTC (rev 40273)
+++ scummvm/trunk/engines/sci/engine/kscripts.cpp 2009-05-03 11:07:07 UTC (rev 40274)
@@ -246,7 +246,7 @@
if (!scriptid)
return NULL_REG;
- scr = &(s->seg_manager->heap[scriptid]->data.script);
+ scr = s->seg_manager->getScript(scriptid, SEG_ID);
if (!scr->exports_nr) {
SCIkdebug(SCIkERROR, "Script 0x%x does not have a dispatch table\n", script);
Modified: scummvm/trunk/engines/sci/engine/scriptconsole.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/scriptconsole.cpp 2009-05-03 11:04:37 UTC (rev 40273)
+++ scummvm/trunk/engines/sci/engine/scriptconsole.cpp 2009-05-03 11:07:07 UTC (rev 40274)
@@ -312,9 +312,9 @@
if (mobj) {
if (mobj->getType() == MEM_OBJ_SCRIPT)
- max_index = mobj->data.script.objects_nr;
+ max_index = (*(Script *)mobj).objects_nr;
else if (mobj->getType() == MEM_OBJ_CLONES)
- max_index = mobj->data.clones.max_entry;
+ max_index = (*(CloneTable *)mobj).max_entry;
}
while (idx < max_index) {
@@ -325,12 +325,12 @@
objpos.segment = i;
if (mobj->getType() == MEM_OBJ_SCRIPT) {
- obj = mobj->data.script.objects + idx;
+ obj = (*(Script *)mobj).objects + idx;
objpos.offset = obj->pos.offset;
} else if (mobj->getType() == MEM_OBJ_CLONES) {
- obj = &(mobj->data.clones.table[idx]);
+ obj = &((*(CloneTable *)mobj).table[idx]);
objpos.offset = idx;
- valid = clone_is_used(&mobj->data.clones, idx);
+ valid = clone_is_used((CloneTable *)mobj, idx);
}
if (valid) {
Modified: scummvm/trunk/engines/sci/engine/seg_manager.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/seg_manager.cpp 2009-05-03 11:04:37 UTC (rev 40273)
+++ scummvm/trunk/engines/sci/engine/seg_manager.cpp 2009-05-03 11:07:07 UTC (rev 40274)
@@ -1084,7 +1084,7 @@
offset = table->allocEntry();
*addr = make_reg(Clones_seg_id, offset);
- return &(mobj->data.clones.table[offset]);
+ return &(table->table[offset]);
}
List *SegManager::alloc_List(reg_t *addr) {
@@ -1102,7 +1102,7 @@
offset = table->allocEntry();
*addr = make_reg(Lists_seg_id, offset);
- return &(mobj->data.lists.table[offset]);
+ return &(table->table[offset]);
}
Node *SegManager::alloc_Node(reg_t *addr) {
@@ -1120,7 +1120,7 @@
offset = table->allocEntry();
*addr = make_reg(Nodes_seg_id, offset);
- return &(mobj->data.nodes.table[offset]);
+ return &(table->table[offset]);
}
Hunk *SegManager::alloc_Hunk(reg_t *addr) {
@@ -1138,7 +1138,7 @@
offset = table->allocEntry();
*addr = make_reg(Hunks_seg_id, offset);
- return &(mobj->data.hunks.table[offset]);
+ return &(table->table[offset]);
}
Modified: scummvm/trunk/engines/sci/engine/seg_manager.h
===================================================================
--- scummvm/trunk/engines/sci/engine/seg_manager.h 2009-05-03 11:04:37 UTC (rev 40273)
+++ scummvm/trunk/engines/sci/engine/seg_manager.h 2009-05-03 11:07:07 UTC (rev 40274)
@@ -38,15 +38,15 @@
SEG_ID
};
-#define GET_SEGMENT(mgr, index, rtype) ((index) > 0 && (mgr).heap_size > index) ? \
- (((mgr).heap[index] && (mgr).heap[index]->getType() == rtype)? (mgr).heap[index] : NULL) : NULL
+#define GET_SEGMENT(mgr, index, rtype) (((index) > 0 && (mgr).heap_size > index) ? \
+ (((mgr).heap[index] && (mgr).heap[index]->getType() == rtype)? (mgr).heap[index] : NULL) : NULL)
-#define GET_SEGMENT_ANY(mgr, index) ((index) > 0 && (mgr).heap_size > index) ? \
- (((mgr).heap[index])? (mgr).heap[index] : NULL) : NULL
+#define GET_SEGMENT_ANY(mgr, index) (((index) > 0 && (mgr).heap_size > index) ? \
+ (((mgr).heap[index])? (mgr).heap[index] : NULL) : NULL)
-#define GET_OBJECT_SEGMENT(mgr, index) ((index) > 0 && (mgr).heap_size > index) ? \
+#define GET_OBJECT_SEGMENT(mgr, index) (((index) > 0 && (mgr).heap_size > index) ? \
(((mgr).heap[index] && ((mgr).heap[index]->getType() == MEM_OBJ_SCRIPT || (mgr).heap[index]->getType() == MEM_OBJ_CLONES))? (mgr).heap[index] \
- : NULL): NULL
+ : NULL): NULL)
class SegInterface;
Modified: scummvm/trunk/engines/sci/engine/vm.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.cpp 2009-05-03 11:04:37 UTC (rev 40273)
+++ scummvm/trunk/engines/sci/engine/vm.cpp 2009-05-03 11:07:07 UTC (rev 40274)
@@ -530,7 +530,7 @@
static Script *script_locate_by_segment(EngineState *s, SegmentId seg) {
MemObject *memobj = GET_SEGMENT(*s->seg_manager, seg, MEM_OBJ_SCRIPT);
if (memobj)
- return &(memobj->data.script);
+ return (Script *)memobj;
return NULL;
}
@@ -1640,7 +1640,7 @@
memobj = GET_SEGMENT(*s->seg_manager, seg, MEM_OBJ_SCRIPT);
if (memobj)
- script = &(memobj->data.script);
+ script = (Script *)memobj;
#ifndef DISABLE_VALIDATIONS
if (script
@@ -1703,7 +1703,7 @@
seg_id = seg;
mem = s->seg_manager->heap[seg];
assert(mem);
- s->seg_manager->freeScript(mem->data.script);
+ s->seg_manager->freeScript(*(Script *)mem);
}
} else if (!(mem = s->seg_manager->allocateScript(s, script_nr, &seg_id))) { // ALL YOUR SCRIPT BASE ARE BELONG TO US
sciprintf("Not enough heap space for script size 0x%x of script 0x%x, should this happen?`\n", (*script)->size, script_nr);
@@ -1711,7 +1711,7 @@
return 0;
}
- s->seg_manager->initialiseScript(mem->data.script, s, script_nr);
+ s->seg_manager->initialiseScript(*(Script *)mem, s, script_nr);
reg.segment = seg_id;
reg.offset = 0;
@@ -2088,14 +2088,14 @@
int idx;
if (memobj != NULL) {
- if (memobj->getType() == MEM_OBJ_CLONES && ENTRY_IS_VALID(&memobj->data.clones, offset.offset))
- obj = &(memobj->data.clones.table[offset.offset]);
+ if (memobj->getType() == MEM_OBJ_CLONES && ENTRY_IS_VALID((CloneTable *)memobj, offset.offset))
+ obj = &((*(CloneTable *)memobj).table[offset.offset]);
else if (memobj->getType() == MEM_OBJ_SCRIPT) {
- if (offset.offset <= memobj->data.script.buf_size && offset.offset >= -SCRIPT_OBJECT_MAGIC_OFFSET
- && RAW_IS_OBJECT(memobj->data.script.buf + offset.offset)) {
- idx = RAW_GET_CLASS_INDEX(&(memobj->data.script), offset);
- if (idx >= 0 && idx < memobj->data.script.objects_nr)
- obj = memobj->data.script.objects + idx;
+ if (offset.offset <= (*(Script *)memobj).buf_size && offset.offset >= -SCRIPT_OBJECT_MAGIC_OFFSET
+ && RAW_IS_OBJECT((*(Script *)memobj).buf + offset.offset)) {
+ idx = RAW_GET_CLASS_INDEX((Script *)memobj, offset);
+ if (idx >= 0 && idx < (*(Script *)memobj).objects_nr)
+ obj = (*(Script *)memobj).objects + idx;
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list