[Scummvm-git-logs] scummvm master -> 6d59ecdd41f5ddc1d689540abb65013343bf994d
sev-
sev at scummvm.org
Fri Dec 8 23:58:40 CET 2017
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
c728c29857 FULLPIPE: More debug output to loading
1408ffc427 FULLPIPE: Better debug output for movement
7724e51936 FULLPIPE: Added debug output for GameObject
6d59ecdd41 FULLPIPE: Load gameobj.h
Commit: c728c29857d12ddc039a2982b9bd510ed6a9f620
https://github.com/scummvm/scummvm/commit/c728c29857d12ddc039a2982b9bd510ed6a9f620
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-12-08T23:57:48+01:00
Commit Message:
FULLPIPE: More debug output to loading
Changed paths:
engines/fullpipe/fullpipe.cpp
engines/fullpipe/fullpipe.h
engines/fullpipe/gfx.cpp
engines/fullpipe/messages.cpp
engines/fullpipe/scenes/scene32.cpp
engines/fullpipe/statics.cpp
engines/fullpipe/statics.h
diff --git a/engines/fullpipe/fullpipe.cpp b/engines/fullpipe/fullpipe.cpp
index ec2b5aa..fef896d 100644
--- a/engines/fullpipe/fullpipe.cpp
+++ b/engines/fullpipe/fullpipe.cpp
@@ -67,6 +67,7 @@ FullpipeEngine::FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc)
DebugMan.addDebugChannel(kDebugInventory, "inventory", "Inventory");
DebugMan.addDebugChannel(kDebugSceneLogic, "scenelogic", "Scene Logic");
DebugMan.addDebugChannel(kDebugInteractions, "interactions", "Interactions");
+ DebugMan.addDebugChannel(kDebugXML, "xml", "XML");
// Setup mixer
if (!_mixer->isReady()) {
diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h
index 2039989..08c6de2 100644
--- a/engines/fullpipe/fullpipe.h
+++ b/engines/fullpipe/fullpipe.h
@@ -59,7 +59,8 @@ enum {
kDebugBehavior = 1 << 6,
kDebugInventory = 1 << 7,
kDebugSceneLogic = 1 << 8,
- kDebugInteractions = 1 << 9
+ kDebugInteractions = 1 << 9,
+ kDebugXML = 1 << 10
};
class BehaviorManager;
diff --git a/engines/fullpipe/gfx.cpp b/engines/fullpipe/gfx.cpp
index a2626e2..667c2ba 100644
--- a/engines/fullpipe/gfx.cpp
+++ b/engines/fullpipe/gfx.cpp
@@ -463,7 +463,8 @@ bool Picture::load(MfcArchive &file) {
getData();
- debugC(5, kDebugLoading, "Picture::load: loaded <%s>", _memfilename.c_str());
+ debugC(5, kDebugLoading, "Picture::load: loaded memobject=\"%s\" x=%d y=%d f44=%d width=%d height=%d alpha=%d memobject2=\"%s\"", _memfilename.c_str(),
+ _x, _y, _field_44, _width, _height, _alpha, _memoryObject2->_memfilename.c_str());
return true;
}
diff --git a/engines/fullpipe/messages.cpp b/engines/fullpipe/messages.cpp
index 7c69ae8..0272e82 100644
--- a/engines/fullpipe/messages.cpp
+++ b/engines/fullpipe/messages.cpp
@@ -107,7 +107,7 @@ bool ExCommand::load(MfcArchive &file) {
_objtype = kObjTypeExCommand;
- debugC(6, kDebugLoading, "%% <COMMAND parent=%d cmd=%s x=%d y=%d f14=%d sceneX=%d sceneY=%d f20=%d f24=%d param=%d f2c=%d f30=%d f34=%d num=%d flags=%d parId=%d />",
+ debugC(6, kDebugXML, "%% <COMMAND parent=%d cmd=%s x=%d y=%d f14=%d sceneX=%d sceneY=%d f20=%d f24=%d param=%d f2c=%d f30=%d f34=%d num=%d flags=%d parId=%d />",
_parentId, exCommandType2str(_messageKind), _x, _y, _z, _sceneClickX, _sceneClickY, _field_20, _field_24, _param, _field_2C,
_field_30, _field_34, _messageNum, _excFlags, _parId);
@@ -240,7 +240,7 @@ bool ObjstateCommand::load(MfcArchive &file) {
_objCommandName = file.readPascalString();
- debugC(6, kDebugLoading, "%% <COMMAND cmd=\"USER\" type=\"SET_LOGIC\" title=\"%s\" state=\"%d\" />", transCyrillic(_objCommandName.c_str()), _value);
+ debugC(6, kDebugXML, "%% <COMMAND cmd=\"USER\" type=\"SET_LOGIC\" title=\"%s\" state=\"%d\" />", transCyrillic(_objCommandName.c_str()), _value);
return true;
}
diff --git a/engines/fullpipe/scenes/scene32.cpp b/engines/fullpipe/scenes/scene32.cpp
index 593f7b4..d4b4a65 100644
--- a/engines/fullpipe/scenes/scene32.cpp
+++ b/engines/fullpipe/scenes/scene32.cpp
@@ -91,6 +91,8 @@ void scene32_initScene(Scene *sc) {
g_fp->lift_init(sc, QU_SC32_ENTERLIFT, QU_SC32_EXITLIFT);
g_fp->initArcadeKeys("SC_32");
+
+ warning("cactus: %d, state: %d", g_fp->getObjectState(sO_Cactus), g_vars->scene32_cactus->_statics->_staticsId);
}
void scene32_setupMusic() {
diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp
index a1252a7..b5baa18 100644
--- a/engines/fullpipe/statics.cpp
+++ b/engines/fullpipe/statics.cpp
@@ -163,6 +163,9 @@ bool StaticANIObject::load(MfcArchive &file) {
GameObject::load(file);
+ debugC(6, kDebugXML, "%% <OLDANI id=%d name=\"%s\" x=%d y=%d priority=%d f8=%d>",
+ _id, transCyrillic(_objectName), _ox, _oy, _priority, _field_8);
+
int count = file.readUint16LE();
for (int i = 0; i < count; i++) {
@@ -197,6 +200,8 @@ bool StaticANIObject::load(MfcArchive &file) {
pt.x = pt.y = 100;
}
+ debugC(6, kDebugXML, "%% </OLDANI>");
+
setOXY(pt.x, pt.y);
return true;
@@ -1371,7 +1376,8 @@ bool Statics::load(MfcArchive &file) {
_staticsId = file.readUint16LE();
_staticsName = file.readPascalString();
- debugC(7, kDebugLoading, "statics: <%s> id: %d (%x)", transCyrillic(_staticsName), _staticsId, _staticsId);
+ debugC(6, kDebugXML, "%% <STATICS id=%d name=\"%s\" f7c=%d %s />",
+ _staticsId, transCyrillic(_staticsName), _field_7C, DynamicPhase::toXML().c_str());
_picture.load(file);
@@ -1573,7 +1579,9 @@ bool Movement::load(MfcArchive &file, StaticANIObject *ani) {
int dynCount = file.readUint16LE();
- debugC(7, kDebugLoading, "dynCount: %d _id: %d", dynCount, _id);
+ debugC(6, kDebugXML, "%% <MOVEMENT id=%d name=\"%s\" x=%d y=%d priority=%d f8=%d>",
+ _id, transCyrillic(_objectName), _ox, _oy, _priority, _field_8);
+
if (dynCount != 0xffff || _id == MV_MAN_TURN_LU) {
_framePosOffsets.resize(dynCount + 2);
@@ -1581,6 +1589,8 @@ bool Movement::load(MfcArchive &file, StaticANIObject *ani) {
DynamicPhase *ph = new DynamicPhase();
ph->load(file);
+ debugC(6, kDebugXML, "%% <PHASE %s />", ph->toXML().c_str());
+
_dynamicPhases.push_back(ph);
_framePosOffsets[i].x = ph->_x;
@@ -1644,6 +1654,8 @@ bool Movement::load(MfcArchive &file, StaticANIObject *ani) {
_counter = 0;
updateCurrDynamicPhase();
+ debugC(6, kDebugXML, "%% </MOVEMENT>");
+
return true;
}
@@ -2127,6 +2139,12 @@ DynamicPhase::DynamicPhase(DynamicPhase *src, bool reverse) {
copyMemoryObject2(*src);
}
+Common::String DynamicPhase::toXML() {
+ return Common::String::format("f7c=%d left=%d top=%d right=%d bottom=%d sX=%d sY=%d dynFlags=%d %s",
+ _field_7C, _rect.left, _rect.top, _rect.right, _rect.bottom, _someX, _someY, _dynFlags,
+ StaticPhase::toXML().c_str());
+}
+
bool DynamicPhase::load(MfcArchive &file) {
debugC(5, kDebugLoading, "DynamicPhase::load()");
@@ -2157,6 +2175,10 @@ StaticPhase::StaticPhase() {
_field_68 = 0;
}
+Common::String StaticPhase::toXML() {
+ return Common::String::format("countdown=%d f6a=%d", _initialCountdown, _field_6A);
+}
+
bool StaticPhase::load(MfcArchive &file) {
debugC(5, kDebugLoading, "StaticPhase::load()");
diff --git a/engines/fullpipe/statics.h b/engines/fullpipe/statics.h
index b0e083e..770d431 100644
--- a/engines/fullpipe/statics.h
+++ b/engines/fullpipe/statics.h
@@ -60,6 +60,8 @@ class StaticPhase : public Picture {
virtual bool load(MfcArchive &file);
+ virtual Common::String toXML();
+
ExCommand *getExCommand() { return _exCommand.get(); }
};
@@ -78,6 +80,8 @@ class DynamicPhase : public StaticPhase {
virtual bool load(MfcArchive &file);
+ virtual Common::String toXML();
+
int getDynFlags() { return _dynFlags; }
};
Commit: 1408ffc4273945abc882033b9aabde82b3d2f841
https://github.com/scummvm/scummvm/commit/1408ffc4273945abc882033b9aabde82b3d2f841
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-12-08T23:57:48+01:00
Commit Message:
FULLPIPE: Better debug output for movement
Changed paths:
engines/fullpipe/statics.cpp
diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp
index b5baa18..5ea3b10 100644
--- a/engines/fullpipe/statics.cpp
+++ b/engines/fullpipe/statics.cpp
@@ -1579,9 +1579,6 @@ bool Movement::load(MfcArchive &file, StaticANIObject *ani) {
int dynCount = file.readUint16LE();
- debugC(6, kDebugXML, "%% <MOVEMENT id=%d name=\"%s\" x=%d y=%d priority=%d f8=%d>",
- _id, transCyrillic(_objectName), _ox, _oy, _priority, _field_8);
-
if (dynCount != 0xffff || _id == MV_MAN_TURN_LU) {
_framePosOffsets.resize(dynCount + 2);
@@ -1589,8 +1586,6 @@ bool Movement::load(MfcArchive &file, StaticANIObject *ani) {
DynamicPhase *ph = new DynamicPhase();
ph->load(file);
- debugC(6, kDebugXML, "%% <PHASE %s />", ph->toXML().c_str());
-
_dynamicPhases.push_back(ph);
_framePosOffsets[i].x = ph->_x;
@@ -1609,12 +1604,12 @@ bool Movement::load(MfcArchive &file, StaticANIObject *ani) {
_mx = file.readSint32LE();
_my = file.readSint32LE();
- staticsid = file.readUint16LE();
+ int staticsid2 = file.readUint16LE();
- _staticsObj2 = ani->getStaticsById(staticsid);
+ _staticsObj2 = ani->getStaticsById(staticsid2);
- if (!_staticsObj2 && (staticsid & 0x4000)) {
- Statics *s = ani->getStaticsById(staticsid ^ 0x4000);
+ if (!_staticsObj2 && (staticsid2 & 0x4000)) {
+ Statics *s = ani->getStaticsById(staticsid2 ^ 0x4000);
_staticsObj2 = ani->addReverseStatics(s);
}
@@ -1628,6 +1623,14 @@ bool Movement::load(MfcArchive &file, StaticANIObject *ani) {
_framePosOffsets[_dynamicPhases.size() - 1].y = _m2y;
}
+ debugC(6, kDebugXML, "%% <MOVEMENT id=%d name=\"%s\" x=%d y=%d priority=%d f8=%d staticsId=%d mX=%d my=%d staticsId2=%d m2x=%d m2y=%d>",
+ _id, transCyrillic(_objectName), _ox, _oy, _priority, _field_8, staticsid, _mx, _my, staticsid2, _m2x, _m2y);
+
+ for (int i = 0; i < dynCount; i++)
+ debugC(6, kDebugXML, "%% <PHASE %s />", _dynamicPhases[i]->toXML().c_str());
+
+ debugC(6, kDebugXML, "%% </MOVEMENT>");
+
} else {
int movid = file.readUint16LE();
@@ -1654,8 +1657,6 @@ bool Movement::load(MfcArchive &file, StaticANIObject *ani) {
_counter = 0;
updateCurrDynamicPhase();
- debugC(6, kDebugXML, "%% </MOVEMENT>");
-
return true;
}
Commit: 7724e51936fc006a48ded3efd28b9caf20c5bc7e
https://github.com/scummvm/scummvm/commit/7724e51936fc006a48ded3efd28b9caf20c5bc7e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-12-08T23:57:48+01:00
Commit Message:
FULLPIPE: Added debug output for GameObject
Changed paths:
engines/fullpipe/gfx.cpp
engines/fullpipe/gfx.h
engines/fullpipe/statics.cpp
diff --git a/engines/fullpipe/gfx.cpp b/engines/fullpipe/gfx.cpp
index 667c2ba..31e5c21 100644
--- a/engines/fullpipe/gfx.cpp
+++ b/engines/fullpipe/gfx.cpp
@@ -234,6 +234,11 @@ GameObject::GameObject(GameObject *src) {
_field_8 = src->_field_8;
}
+Common::String GameObject::toXML() {
+ return Common::String::format("id=%d name=\"%s\" x=%d y=%d priority=%d f8=%d",
+ _id, transCyrillic(_objectName), _ox, _oy, _priority, _field_8);
+}
+
bool GameObject::load(MfcArchive &file) {
debugC(5, kDebugLoading, "GameObject::load()");
_odelay = 0;
diff --git a/engines/fullpipe/gfx.h b/engines/fullpipe/gfx.h
index a2c83c8..04771f5 100644
--- a/engines/fullpipe/gfx.h
+++ b/engines/fullpipe/gfx.h
@@ -154,6 +154,7 @@ class GameObject : public CObject {
GameObject();
GameObject(GameObject *src);
+ virtual Common::String toXML();
virtual bool load(MfcArchive &file);
void setOXY(int x, int y);
void renumPictures(Common::Array<StaticANIObject *> *lst);
diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp
index 5ea3b10..49cb3fd 100644
--- a/engines/fullpipe/statics.cpp
+++ b/engines/fullpipe/statics.cpp
@@ -163,8 +163,7 @@ bool StaticANIObject::load(MfcArchive &file) {
GameObject::load(file);
- debugC(6, kDebugXML, "%% <OLDANI id=%d name=\"%s\" x=%d y=%d priority=%d f8=%d>",
- _id, transCyrillic(_objectName), _ox, _oy, _priority, _field_8);
+ debugC(6, kDebugXML, "%% <OLDANI %s>", GameObject::toXML().c_str());
int count = file.readUint16LE();
@@ -1376,8 +1375,8 @@ bool Statics::load(MfcArchive &file) {
_staticsId = file.readUint16LE();
_staticsName = file.readPascalString();
- debugC(6, kDebugXML, "%% <STATICS id=%d name=\"%s\" f7c=%d %s />",
- _staticsId, transCyrillic(_staticsName), _field_7C, DynamicPhase::toXML().c_str());
+ debugC(6, kDebugXML, "%% <STATICS id=%d name=\"%s\" %s />",
+ _staticsId, transCyrillic(_staticsName), DynamicPhase::toXML().c_str());
_picture.load(file);
@@ -1623,8 +1622,8 @@ bool Movement::load(MfcArchive &file, StaticANIObject *ani) {
_framePosOffsets[_dynamicPhases.size() - 1].y = _m2y;
}
- debugC(6, kDebugXML, "%% <MOVEMENT id=%d name=\"%s\" x=%d y=%d priority=%d f8=%d staticsId=%d mX=%d my=%d staticsId2=%d m2x=%d m2y=%d>",
- _id, transCyrillic(_objectName), _ox, _oy, _priority, _field_8, staticsid, _mx, _my, staticsid2, _m2x, _m2y);
+ debugC(6, kDebugXML, "%% <MOVEMENT %s staticsId=%d mX=%d my=%d staticsId2=%d m2x=%d m2y=%d>",
+ GameObject::toXML().c_str(), staticsid, _mx, _my, staticsid2, _m2x, _m2y);
for (int i = 0; i < dynCount; i++)
debugC(6, kDebugXML, "%% <PHASE %s />", _dynamicPhases[i]->toXML().c_str());
Commit: 6d59ecdd41f5ddc1d689540abb65013343bf994d
https://github.com/scummvm/scummvm/commit/6d59ecdd41f5ddc1d689540abb65013343bf994d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-12-08T23:57:48+01:00
Commit Message:
FULLPIPE: Load gameobj.h
Changed paths:
engines/fullpipe/fullpipe.cpp
engines/fullpipe/fullpipe.h
engines/fullpipe/gfx.cpp
engines/fullpipe/statics.cpp
engines/fullpipe/utils.cpp
diff --git a/engines/fullpipe/fullpipe.cpp b/engines/fullpipe/fullpipe.cpp
index fef896d..48dff10 100644
--- a/engines/fullpipe/fullpipe.cpp
+++ b/engines/fullpipe/fullpipe.cpp
@@ -269,6 +269,9 @@ Common::Error FullpipeEngine::run() {
_isSaveAllowed = false;
+ if (debugChannelSet(-1, kDebugXML))
+ loadGameObjH();
+
int scene = 0;
if (ConfMan.hasKey("boot_param"))
scene = convertScene(ConfMan.getInt("boot_param"));
diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h
index 08c6de2..ff843fe 100644
--- a/engines/fullpipe/fullpipe.h
+++ b/engines/fullpipe/fullpipe.h
@@ -63,6 +63,8 @@ enum {
kDebugXML = 1 << 10
};
+#define MAXGAMEOBJH 10000
+
class BehaviorManager;
class BaseModalObject;
class GameLoader;
@@ -90,6 +92,8 @@ typedef Common::Array<int16> MovTable;
typedef Common::Array<int32> Palette;
typedef Common::Array<Common::Point> PointList;
+typedef Common::HashMap<uint16, Common::String> GameObjHMap;
+
int global_messageHandler1(ExCommand *cmd);
int global_messageHandler2(ExCommand *cmd);
int global_messageHandler3(ExCommand *cmd);
@@ -135,6 +139,9 @@ public:
GameProject *_gameProject;
bool loadGam(const char *fname, int scene = 0);
+ void loadGameObjH();
+ Common::String gameIdToStr(uint16 id);
+
GameVar *getGameLoaderGameVar();
InputController *getGameLoaderInputController();
@@ -347,6 +354,8 @@ public:
bool _stream2playing;
+ GameObjHMap _gameObjH;
+
public:
bool _isSaveAllowed;
diff --git a/engines/fullpipe/gfx.cpp b/engines/fullpipe/gfx.cpp
index 31e5c21..8407009 100644
--- a/engines/fullpipe/gfx.cpp
+++ b/engines/fullpipe/gfx.cpp
@@ -235,8 +235,8 @@ GameObject::GameObject(GameObject *src) {
}
Common::String GameObject::toXML() {
- return Common::String::format("id=%d name=\"%s\" x=%d y=%d priority=%d f8=%d",
- _id, transCyrillic(_objectName), _ox, _oy, _priority, _field_8);
+ return Common::String::format("id=\"%s\" name=\"%s\" x=%d y=%d priority=%d f8=%d",
+ g_fp->gameIdToStr(_id).c_str(), transCyrillic(_objectName), _ox, _oy, _priority, _field_8);
}
bool GameObject::load(MfcArchive &file) {
diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp
index 49cb3fd..4cee1c1 100644
--- a/engines/fullpipe/statics.cpp
+++ b/engines/fullpipe/statics.cpp
@@ -1375,8 +1375,8 @@ bool Statics::load(MfcArchive &file) {
_staticsId = file.readUint16LE();
_staticsName = file.readPascalString();
- debugC(6, kDebugXML, "%% <STATICS id=%d name=\"%s\" %s />",
- _staticsId, transCyrillic(_staticsName), DynamicPhase::toXML().c_str());
+ debugC(6, kDebugXML, "%% <STATICS id=\"%s\" name=\"%s\" %s />",
+ g_fp->gameIdToStr(_staticsId).c_str(), transCyrillic(_staticsName), DynamicPhase::toXML().c_str());
_picture.load(file);
@@ -1622,8 +1622,8 @@ bool Movement::load(MfcArchive &file, StaticANIObject *ani) {
_framePosOffsets[_dynamicPhases.size() - 1].y = _m2y;
}
- debugC(6, kDebugXML, "%% <MOVEMENT %s staticsId=%d mX=%d my=%d staticsId2=%d m2x=%d m2y=%d>",
- GameObject::toXML().c_str(), staticsid, _mx, _my, staticsid2, _m2x, _m2y);
+ debugC(6, kDebugXML, "%% <MOVEMENT %s staticsId=\"%s\" mX=%d my=%d staticsId2=\"%s\" m2x=%d m2y=%d>",
+ GameObject::toXML().c_str(), g_fp->gameIdToStr(staticsid).c_str(), _mx, _my, g_fp->gameIdToStr(staticsid2).c_str(), _m2x, _m2y);
for (int i = 0; i < dynCount; i++)
debugC(6, kDebugXML, "%% <PHASE %s />", _dynamicPhases[i]->toXML().c_str());
diff --git a/engines/fullpipe/utils.cpp b/engines/fullpipe/utils.cpp
index f3f07b0..c1cf912 100644
--- a/engines/fullpipe/utils.cpp
+++ b/engines/fullpipe/utils.cpp
@@ -546,4 +546,43 @@ byte *transCyrillic(const Common::String &str) {
return tmp;
}
+void FullpipeEngine::loadGameObjH() {
+ Common::File file;
+
+ if (!file.open("gameobj.h"))
+ return;
+
+ while(true) {
+ Common::String s = file.readLine();
+
+ if (file.eos())
+ break;
+
+ if (!s.hasPrefix("#define ")) {
+ warning("Bad read: <%s>", s.c_str());
+ continue;
+ }
+
+ int cnt = 0;
+ const char *ptr = &s.c_str()[8]; // Skip '#define ''
+
+ while (*ptr && *ptr != ' ') {
+ cnt++;
+ ptr++;
+ }
+
+ Common::String val(&s.c_str()[8], cnt);
+ int key = strtol(ptr, NULL, 10);
+
+ _gameObjH[(uint16)key] = val;
+ }
+}
+
+Common::String FullpipeEngine::gameIdToStr(uint16 id) {
+ if (_gameObjH.contains(id))
+ return _gameObjH[id];
+
+ return Common::String::format("%d", id);
+}
+
} // End of namespace Fullpipe
More information about the Scummvm-git-logs
mailing list