GNAP: Use debug channels

This commit is contained in:
Strangerke 2016-04-12 08:00:11 +02:00 committed by Eugene Sandulenko
parent 52f0712b66
commit 43c65df526
10 changed files with 53 additions and 70 deletions

View File

@ -24,6 +24,8 @@
#include "common/file.h"
#include "common/stream.h"
#include "common/substream.h"
#include "gnap/gnap.h"
#include "gnap/datarchive.h"
#include "engines/util.h"
@ -40,7 +42,7 @@ DatArchive::DatArchive(const char *filename) {
_fd->skip(2); // Skip unknown
_fd->skip(2); // Skip unknown
_entriesCount = _fd->readUint32LE();
debug(1, "_entriesCount: %d", _entriesCount);
debugC(kDebugBasic, "_entriesCount: %d", _entriesCount);
_fd->skip(4); // Skip unknown
_entries = new DatEntry[_entriesCount];
for (int i = 0; i < _entriesCount; ++i) {
@ -59,7 +61,7 @@ DatArchive::~DatArchive() {
byte *DatArchive::load(int index) {
_fd->seek(_entries[index]._ofs);
debug(1, "_entries[index].outSize2: %d; _entries[index].outSize1: %d", _entries[index]._outSize2, _entries[index]._outSize1);
debugC(kDebugBasic, "_entries[index].outSize2: %d; _entries[index].outSize1: %d", _entries[index]._outSize2, _entries[index]._outSize1);
byte *buffer = new byte[_entries[index]._outSize1];
if (!Common::decompressDCL(_fd, buffer, _entries[index]._outSize2, _entries[index]._outSize1))
error("DatArchive::load() Error during decompression of entry %d", index);

View File

@ -69,7 +69,7 @@ GameSys::~GameSys() {
}
void GameSys::insertSequence(int sequenceId, int id, int sequenceId2, int id2, int flags, int totalDuration, int16 x, int16 y) {
debug(0, "GameSys::insertSequence() [%08X, %d] -> [%08X, %d] (%d, %d)", sequenceId, id, sequenceId2, id2, x, y);
debugC(kDebugBasic, "GameSys::insertSequence() [%08X, %d] -> [%08X, %d] (%d, %d)", sequenceId, id, sequenceId2, id2, x, y);
Sequence sequence;
SequenceResource *sequenceResource = _vm->_sequenceCache->get(sequenceId);
sequenceResource->_sequenceId = sequenceId;
@ -168,7 +168,7 @@ int GameSys::isSequenceActive(int sequenceId, int id) {
}
void GameSys::setBackgroundSurface(Graphics::Surface *surface, int a4, int a5, int a6, int a7) {
debug(1, "GameSys::setBackgroundSurface() Setting background image");
debugC(kDebugBasic, "GameSys::setBackgroundSurface() Setting background image");
_backgroundSurface = surface;
if (!_backgroundSurface) {
@ -177,7 +177,7 @@ void GameSys::setBackgroundSurface(Graphics::Surface *surface, int a4, int a5, i
}
if (!_frontSurface || _frontSurface->w != surface->w || _frontSurface->h != surface->h) {
debug(1, "GameSys::setBackgroundSurface() Creating background working surface");
debugC(kDebugBasic, "GameSys::setBackgroundSurface() Creating background working surface");
if (_frontSurface)
_frontSurface->free();
delete _frontSurface;
@ -244,7 +244,7 @@ Graphics::Surface *GameSys::allocSurface(int width, int height) {
}
Graphics::Surface *GameSys::createSurface(int resourceId) {
debug(0, "GameSys::createSurface() resourceId: %08X", resourceId);
debugC(kDebugBasic, "GameSys::createSurface() resourceId: %08X", resourceId);
SpriteResource *spriteResource = _vm->_spriteCache->get(resourceId);
Graphics::Surface *surface = allocSurface(spriteResource->_width, spriteResource->_height);
@ -364,7 +364,7 @@ int GameSys::getSpriteHeightById(int resourceId) {
}
Graphics::Surface *GameSys::loadBitmap(int resourceId) {
debug("GameSys::loadBitmap() resourceId: %08X", resourceId);
debugC(kDebugBasic, "GameSys::loadBitmap() resourceId: %08X", resourceId);
if (_vm->_dat->getResourceType(resourceId) != 1)
return nullptr;
byte *resourceData = _vm->_dat->loadResource(resourceId);
@ -382,12 +382,12 @@ Graphics::Surface *GameSys::loadBitmap(int resourceId) {
void GameSys::drawBitmap(int resourceId) {
Graphics::Surface *bmpSurface = loadBitmap(resourceId);
if (!bmpSurface || !_backgroundSurface) {
debug("GameSys::drawBitmap() Error loading the bitmap");
debugC(kDebugBasic, "GameSys::drawBitmap() Error loading the bitmap");
return;
}
if (bmpSurface->format != _backgroundSurface->format ||
bmpSurface->w != _backgroundSurface->w || bmpSurface->h != _backgroundSurface->h) {
debug("GameSys::drawBitmap() Different bitmap properties than current background");
debugC(kDebugBasic, "GameSys::drawBitmap() Different bitmap properties than current background");
} else {
byte *src = (byte*)bmpSurface->getPixels();
byte *dst = (byte*)_backgroundSurface->getPixels();
@ -452,7 +452,7 @@ void GameSys::seqInsertGfx(int index, int duration) {
GfxItem *gfxItem = &_gfxItems[i + gfxIndex];
SequenceAnimation *animation = &sequenceResource->_animations[i];
debug(0, "GameSys::seqInsertGfx() seqItem->sequenceId: %08X", seqItem->_sequenceId);
debugC(kDebugBasic, "GameSys::seqInsertGfx() seqItem->sequenceId: %08X", seqItem->_sequenceId);
gfxItem->_sequenceId = seqItem->_sequenceId;
gfxItem->_id = seqItem->_id;
@ -737,14 +737,14 @@ void GameSys::blitSpriteScaled32(Graphics::Surface *destSurface, Common::Rect &f
}
void GameSys::seqDrawStaticFrame(Graphics::Surface *surface, SequenceFrame &frame, Common::Rect *subRect) {
debug(1, "GameSys::seqDrawStaticFrame() rect: (%d, %d, %d, %d)",
debugC(kDebugBasic, "GameSys::seqDrawStaticFrame() rect: (%d, %d, %d, %d)",
frame._rect.left, frame._rect.top, frame._rect.right, frame._rect.bottom);
Common::Rect srcRect = subRect ? *subRect : frame._rect;
Common::Rect clipRect;
if (!intersectRect(clipRect, srcRect, _screenRect)) {
debug(1, "GameSys::seqDrawStaticFrame() Surface not inside screen");
debugC(kDebugBasic, "GameSys::seqDrawStaticFrame() Surface not inside screen");
return;
}
@ -757,14 +757,14 @@ void GameSys::seqDrawStaticFrame(Graphics::Surface *surface, SequenceFrame &fram
}
void GameSys::seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &frame, Common::Rect *subRect) {
debug(1, "GameSys::seqDrawSpriteFrame() spriteId: %04X; rect: (%d, %d, %d, %d)",
debugC(kDebugBasic, "GameSys::seqDrawSpriteFrame() spriteId: %04X; rect: (%d, %d, %d, %d)",
frame._spriteId, frame._rect.left, frame._rect.top, frame._rect.right, frame._rect.bottom);
Common::Rect srcRect = subRect ? *subRect : frame._rect;
Common::Rect clipRect;
if (!intersectRect(clipRect, srcRect, _screenRect)) {
debug(1, "GameSys::seqDrawSpriteFrame() Sprite not inside screen");
debugC(kDebugBasic, "GameSys::seqDrawSpriteFrame() Sprite not inside screen");
return;
}
@ -773,7 +773,7 @@ void GameSys::seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &
const int x = clipRect.left, y = clipRect.top;
debug(1, "GameSys::seqDrawSpriteFrame() destX: %d; destY: %d; frame.isScaled: %d", x, y, frame._isScaled ? 1 : 0);
debugC(kDebugBasic, "GameSys::seqDrawSpriteFrame() destX: %d; destY: %d; frame.isScaled: %d", x, y, frame._isScaled ? 1 : 0);
// 32bit sprite drawing
if (frame._isScaled) {
@ -786,7 +786,7 @@ void GameSys::seqDrawSpriteFrame(SpriteResource *spriteResource, SequenceFrame &
}
void GameSys::drawSprites() {
debug(1, "GameSys::drawSprites() _gfxItemsCount: %d", _gfxItemsCount);
debugC(kDebugBasic, "GameSys::drawSprites() _gfxItemsCount: %d", _gfxItemsCount);
// TODO Split into multiple functions for clarity
@ -847,14 +847,13 @@ void GameSys::drawSprites() {
for (int m = 0; m < _gfxItemsCount; ++m) {
GfxItem *gfxItem5 = &_gfxItems[m];
debug(0, "DrawGfxItem(%d) updFlag: %d; currFrame.spriteId: %04X; updRectsCount: %d; flags: %04X; sequenceId: %08X",
debugC(kDebugBasic, "DrawGfxItem(%d) updFlag: %d; currFrame.spriteId: %04X; updRectsCount: %d; flags: %04X; sequenceId: %08X",
m, gfxItem5->_updFlag, gfxItem5->_currFrame._spriteId, gfxItem5->_updRectsCount, gfxItem5->_flags, gfxItem5->_sequenceId);
if (gfxItem5->_updFlag) {
if (gfxItem5->_currFrame._spriteId != -1) {
if (gfxItem5->_flags & 1) {
seqDrawStaticFrame(gfxItem5->_surface, gfxItem5->_currFrame, nullptr);
//debug("seqDrawStaticFrame");
} else if (gfxItem5->_flags & 2) {
// TODO seqDrawAviFrame(gfxItem5->currFrame.spriteId, &gfxItem5->currFrame, 0, gfxItem5->flags & 8);
} else {
@ -884,11 +883,11 @@ void GameSys::drawSprites() {
}
}
debug(1, "GameSys::drawSprites() OK");
debugC(kDebugBasic, "GameSys::drawSprites() OK");
}
void GameSys::updateRect(const Common::Rect &r) {
debug(1, "GameSys::updateRect() %d, %d, %d, %d [%d, %d]", r.left, r.top, r.right, r.bottom, r.width(), r.height());
debugC(kDebugBasic, "GameSys::updateRect() %d, %d, %d, %d [%d, %d]", r.left, r.top, r.right, r.bottom, r.width(), r.height());
if (r.width() > 0 && r.height() > 0) {
byte *pixels = (byte*)_frontSurface->getBasePtr(r.left, r.top);
_vm->_system->copyRectToScreen(pixels, _frontSurface->pitch, r.left, r.top,
@ -897,7 +896,7 @@ void GameSys::updateRect(const Common::Rect &r) {
}
void GameSys::updateScreen() {
debug(1, "GameSys::updateScreen()");
debugC(kDebugBasic, "GameSys::updateScreen()");
for (uint i = 0; i < _dirtyRects.size(); ++i)
updateRect(_dirtyRects[i]);
@ -931,7 +930,7 @@ void GameSys::updateScreen() {
updateRect(Common::Rect(0, 0, 800, 600));
debug(1, "GameSys::updateScreen() OK");
debugC(kDebugBasic, "GameSys::updateScreen() OK");
}
void GameSys::handleReqRemoveSequenceItem() {
@ -1003,12 +1002,12 @@ void GameSys::handleReqRemoveSpriteDrawItems() {
void GameSys::fatUpdateFrame() {
debug(1, "GameSys::fatUpdateFrame()");
debugC(kDebugBasic, "GameSys::fatUpdateFrame()");
int32 clockDelta = _gameSysClock - _lastUpdateClock;
_lastUpdateClock = _gameSysClock;
debug(1, "GameSys::fatUpdateFrame() clockDelta: %d", clockDelta);
debugC(kDebugBasic, "GameSys::fatUpdateFrame() clockDelta: %d", clockDelta);
if (clockDelta <= 0)
return;
@ -1129,7 +1128,7 @@ void GameSys::fatUpdateFrame() {
}
if (_newSpriteDrawItemsCount > 0) {
debug(0, "_newSpriteDrawItemsCount: %d", _newSpriteDrawItemsCount);
debugC(kDebugBasic, "_newSpriteDrawItemsCount: %d", _newSpriteDrawItemsCount);
for (int k = 0; k < _newSpriteDrawItemsCount; ++k) {
if (_gfxItemsCount < 50) {
int insertIndex;
@ -1183,7 +1182,7 @@ void GameSys::fatUpdateFrame() {
// NOTE Skipped avi code (reqAviStart)
debug(1, "GameSys::fatUpdateFrame() _fatSequenceItems.size(): %d", _fatSequenceItems.size());
debugC(kDebugBasic, "GameSys::fatUpdateFrame() _fatSequenceItems.size(): %d", _fatSequenceItems.size());
for (uint i = 0; i < _fatSequenceItems.size(); ++i) {
Sequence *seqItem = &_fatSequenceItems[i];
@ -1238,7 +1237,7 @@ void GameSys::fatUpdateFrame() {
}
}
debug(1, "GameSys::fatUpdateFrame() _seqItems.size(): %d", _seqItems.size());
debugC(kDebugBasic, "GameSys::fatUpdateFrame() _seqItems.size(): %d", _seqItems.size());
for (uint i = 0; i < _seqItems.size(); ++i) {
Sequence *seqItem = &_seqItems[i];
@ -1260,7 +1259,7 @@ void GameSys::fatUpdateFrame() {
}
void GameSys::fatUpdate() {
debug(1, "GameSys::fatUpdate() _gfxItemsCount: %d", _gfxItemsCount);
debugC(kDebugBasic, "GameSys::fatUpdate() _gfxItemsCount: %d", _gfxItemsCount);
for (int i = 0; i < _gfxItemsCount; ++i) {
_gfxItems[i]._updFlag = false;

View File

@ -95,6 +95,7 @@ GnapEngine::GnapEngine(OSystem *syst, const ADGameDescription *gd) :
Engine(syst), _gameDescription(gd) {
_random = new Common::RandomSource("gnap");
DebugMan.addDebugChannel(kDebugBasic, "basic", "Basic debug level");
Engine::syncSoundSettings();
}
@ -218,8 +219,6 @@ Common::Error GnapEngine::run() {
delete _exe;
debug("run() done");
return Common::kNoError;
}
@ -655,7 +654,7 @@ bool GnapEngine::isSoundPlaying(int resourceId) {
}
void GnapEngine::playSound(int resourceId, bool looping) {
debug(0, "playSound(%08X, %d)", resourceId, looping);
debugC(kDebugBasic, "playSound(%08X, %d)", resourceId, looping);
_soundMan->playSound(resourceId, looping);
}
@ -749,8 +748,6 @@ void GnapEngine::mainLoop() {
_grabCursorSpriteIndex = -1;
_grabCursorSprite = nullptr;
debug("MainLoop #1");
// > DEBUG BEGIN
_currentSceneNum = 0;
_newSceneNum = 1;
@ -760,16 +757,15 @@ void GnapEngine::mainLoop() {
loadStockDat();
while (!_gameDone) {
debug("New scene: %d", _newSceneNum);
debugC(kDebugBasic, "New scene: %d", _newSceneNum);
_prevSceneNum = _currentSceneNum;
_currentSceneNum = _newSceneNum;
debug("GnapEngine::mainLoop() _prevSceneNum: %d; _currentSceneNum: %d", _prevSceneNum, _currentSceneNum);
debugC(kDebugBasic, "GnapEngine::mainLoop() _prevSceneNum: %d; _currentSceneNum: %d", _prevSceneNum, _currentSceneNum);
if (_newCursorValue != _cursorValue) {
debug("_newCursorValue: %d", _newCursorValue);
debugC(kDebugBasic, "_newCursorValue: %d", _newCursorValue);
_cursorValue = _newCursorValue;
if (!_wasSavegameLoaded)
initGameFlags(_cursorValue);
@ -803,8 +799,6 @@ void GnapEngine::mainLoop() {
_dat->close(1);
// TODO freeMenuSprite();
// TODO freeFont();
debug("MainLoop #XXX2");
}
void GnapEngine::initScene() {
@ -824,7 +818,7 @@ void GnapEngine::initScene() {
datFilename = Common::String::format("%s_n.dat", kSceneNames[_currentSceneNum]);
debug("GnapEngine::initScene() datFilename: %s", datFilename.c_str());
debugC(kDebugBasic, "GnapEngine::initScene() datFilename: %s", datFilename.c_str());
_dat->open(0, datFilename.c_str());
@ -896,7 +890,6 @@ void GnapEngine::checkGameKeys() {
updatePause();
}
// TODO? Debug input
// debug("facing %d", _gnapIdleFacing);
}
void GnapEngine::startSoundTimerA(int timerIndex) {
@ -2273,8 +2266,6 @@ void GnapEngine::toyUfoFlyTo(int destX, int destY, int minX, int maxX, int minY,
_toyUfoX = clippedDestX;
_toyUfoY = clippedDestY;
// debug("v21: %d", v21);
if (i - 1 > 0) {
int seqId;
if (isFlag(kGFUnk16))

View File

@ -83,6 +83,10 @@ struct GridStruct {
const int kMaxGridStructs = 30;
const int kMaxTimers = 10;
enum GnapDebugChannels {
kDebugBasic = 1 << 0
};
enum {
SF_NONE = 0x0000,
SF_LOOK_CURSOR = 0x0001,

View File

@ -575,7 +575,7 @@ bool GnapEngine::gnapWalkTo(int gridX, int gridY, int animationIndex, int sequen
int gnapId = _gnapId;
int gnapSequenceDatNum = _gnapSequenceDatNum;
debug(0, "_gnapWalkNodesCount: %d", _gnapWalkNodesCount);
debugC(kDebugBasic, "_gnapWalkNodesCount: %d", _gnapWalkNodesCount);
for (int index = 0; index < _gnapWalkNodesCount; ++index) {
_gnapWalkNodes[index].id = index + 20 * _gnapWalkNodes[index].gridY1;

View File

@ -20,6 +20,7 @@
*
*/
#include "gnap/gnap.h"
#include "gnap/resource.h"
namespace Gnap {
@ -36,8 +37,8 @@ void SequenceFrame::loadFromStream(Common::MemoryReadStream &stream) {
_spriteId = stream.readUint32LE();
_soundId = stream.readUint32LE();
_unusedVal = stream.readUint32LE();
//isScaled = 0;//DEBUG
debug(1, "SequenceFrame() spriteId: %d; soundId: %d", _spriteId, _soundId);
debugC(kDebugBasic, "SequenceFrame() spriteId: %d; soundId: %d", _spriteId, _soundId);
}
// SequenceAnimation
@ -48,7 +49,7 @@ void SequenceAnimation::loadFromStream(Common::MemoryReadStream &stream) {
_additionalDelay = stream.readUint32LE();
_framesCount = stream.readUint16LE();
_maxTotalDuration = stream.readUint16LE();
debug(1, "SequenceAnimation() framesCount: %d", _framesCount);
debugC(kDebugBasic, "SequenceAnimation() framesCount: %d", _framesCount);
frames = new SequenceFrame[_framesCount];
for (int i = 0; i < _framesCount; ++i)
frames[i].loadFromStream(stream);
@ -69,10 +70,10 @@ SequenceResource::SequenceResource(int resourceId, byte *data, uint32 size) {
_yOffs = stream.readUint16LE();
_animationsCount = stream.readUint32LE();
_animations = new SequenceAnimation[_animationsCount];
debug(1, "SequenceResource() _animationsCount: %d", _animationsCount);
debugC(kDebugBasic, "SequenceResource() _animationsCount: %d", _animationsCount);
for (int i = 0; i < _animationsCount; ++i) {
uint32 animationOffs = stream.readUint32LE();
debug(1, "animationOffs: %08X", animationOffs);
debugC(kDebugBasic, "animationOffs: %08X", animationOffs);
uint32 oldOffs = stream.pos();
stream.seek(animationOffs);
_animations[i].loadFromStream(stream);
@ -97,7 +98,7 @@ SpriteResource::SpriteResource(int resourceId, byte *data, uint32 size) {
_colorsCount = READ_LE_UINT16(_data + 10);
_palette = (uint32*)(_data + 12);
_pixels = _data + 12 + _colorsCount * 4;
debug(1, "SpriteResource() width: %d; height: %d; colorsCount: %d", _width, _height, _colorsCount);
debugC(kDebugBasic, "SpriteResource() width: %d; height: %d; colorsCount: %d", _width, _height, _colorsCount);
}
SpriteResource::~SpriteResource() {

View File

@ -122,11 +122,11 @@ public:
ResourceClass *get(int resourceId) {
Resource *resource = find(resourceId);
if (!resource) {
debug(1, "Loading resource type %d with ID %08X from disk", ResourceType, resourceId);
debugC(kDebugBasic, "Loading resource type %d with ID %08X from disk", ResourceType, resourceId);
resource = new Resource(load(resourceId));
_cache[resourceId] = resource;
} else {
debug(1, "Resource type %d with ID %08X was in cache", ResourceType, resourceId);
debugC(kDebugBasic, "Resource type %d with ID %08X was in cache", ResourceType, resourceId);
}
resource->_isLocked = true;
return resource->_obj;
@ -139,7 +139,6 @@ public:
}
void purge(bool force = false) {
debug("Count before purge: %d", _cache.size());
for (CacheMapIterator it = _cache.begin(); it != _cache.end(); ++it) {
Resource *resource = it->_value;
if (force || !resource->_isLocked) {
@ -147,7 +146,6 @@ public:
_cache.erase(it);
}
}
debug("Count after purge: %d", _cache.size());
}
protected:

View File

@ -102,11 +102,7 @@ void GnapEngine::scene15_run() {
_sceneClickedHotspot = getClickedHotspotId();
updateGrabCursorSprite(0, 0);
if (_sceneClickedHotspot >= 0)
debug("_sceneClickedHotspot: %d; _verbCursor: %d", _sceneClickedHotspot, _verbCursor);
switch (_sceneClickedHotspot) {
case kHSDevice:
if (_gnapActionStatus < 0) {
runMenu();
@ -238,13 +234,10 @@ void GnapEngine::scene15_run() {
}
gameUpdateTick();
}
}
void GnapEngine::scene15_updateAnimations() {
void GnapEngine::scene15_updateAnimations() {
if (_gameSys->getAnimationStatus(0) == 2) {
if (_isLeavingScene) {
_sceneDone = true;
@ -337,7 +330,6 @@ void GnapEngine::scene15_updateAnimations() {
}
}
}
}
} // End of namespace Gnap

View File

@ -309,7 +309,7 @@ void GnapEngine::scene18_waitForGnapAction() {
}
void GnapEngine::scene18_run() {
_s18_cowboyHatSurface = 0;
_s18_cowboyHatSurface = nullptr;
playSound(0x10940, true);
startSoundTimerA(4);
@ -398,7 +398,6 @@ void GnapEngine::scene18_run() {
}
while (!_sceneDone) {
updateMouseCursor();
updateCursorByHotspot();
@ -407,9 +406,6 @@ void GnapEngine::scene18_run() {
_sceneClickedHotspot = getClickedHotspotId();
updateGrabCursorSprite(0, 0);
if (_sceneClickedHotspot >= 0)
debug("_sceneClickedHotspot: %d", _sceneClickedHotspot);
switch (_sceneClickedHotspot) {
case kHSDevice:

View File

@ -301,7 +301,7 @@ void GnapEngine::scene53_run() {
stopSound(0xA0);
++phoneNumberLen;
phoneNumber = scene53_pressPhoneNumberButton(phoneNumber, _sceneClickedHotspot - 1);
debug("phoneNumber: %d", phoneNumber);
debugC(kDebugBasic, "phoneNumber: %d", phoneNumber);
if (phoneNumberLen == 7) {
_gnapActionStatus = 1;
if (isFlag(kGFSpringTaken)) {