- Add some basic debugger for Lands of Lore.
- Allow the "flags" command in all Kyra games to be working properly with 320x200 GUI. svn-id: r41113
This commit is contained in:
parent
bdea557d7f
commit
f57be08d6d
4 changed files with 80 additions and 6 deletions
|
@ -33,6 +33,7 @@
|
||||||
#include "kyra/screen.h"
|
#include "kyra/screen.h"
|
||||||
#include "kyra/timer.h"
|
#include "kyra/timer.h"
|
||||||
#include "kyra/resource.h"
|
#include "kyra/resource.h"
|
||||||
|
#include "kyra/lol.h"
|
||||||
|
|
||||||
namespace Kyra {
|
namespace Kyra {
|
||||||
|
|
||||||
|
@ -132,10 +133,12 @@ bool Debugger::cmd_gameSpeed(int argc, const char **argv) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Debugger::cmd_listFlags(int argc, const char **argv) {
|
bool Debugger::cmd_listFlags(int argc, const char **argv) {
|
||||||
for (int i = 0; i < (int)sizeof(_vm->_flagsTable)*8; i++) {
|
for (int i = 0, p = 0; i < (int)sizeof(_vm->_flagsTable)*8; i++, ++p) {
|
||||||
DebugPrintf("(%-3i): %-5i", i, _vm->queryGameFlag(i));
|
DebugPrintf("(%-3i): %-2i", i, _vm->queryGameFlag(i));
|
||||||
if (!(i % 10))
|
if (p == 5) {
|
||||||
DebugPrintf("\n");
|
DebugPrintf("\n");
|
||||||
|
p -= 6;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
DebugPrintf("\n");
|
DebugPrintf("\n");
|
||||||
return true;
|
return true;
|
||||||
|
@ -457,5 +460,57 @@ bool Debugger_HoF::cmd_passcodes(int argc, const char **argv) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
|
||||||
|
Debugger_LoL::Debugger_LoL(LoLEngine *vm) : Debugger(vm), _vm(vm) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Debugger_LoL::cmd_listFlags(int argc, const char **argv) {
|
||||||
|
for (int i = 0, p = 0; i < (int)sizeof(_vm->_gameFlags)*8; ++i, ++p) {
|
||||||
|
const uint8 index = (i >> 4);
|
||||||
|
const uint8 offset = i & 0xF;
|
||||||
|
|
||||||
|
DebugPrintf("(%-3i): %-2i", i, (_vm->_gameFlags[index] >> offset) & 1);
|
||||||
|
if (p == 5) {
|
||||||
|
DebugPrintf("\n");
|
||||||
|
p -= 6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DebugPrintf("\n");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Debugger_LoL::cmd_toggleFlag(int argc, const char **argv) {
|
||||||
|
if (argc > 1) {
|
||||||
|
uint flag = atoi(argv[1]);
|
||||||
|
|
||||||
|
const uint8 index = (flag >> 4);
|
||||||
|
const uint8 offset = flag & 0xF;
|
||||||
|
|
||||||
|
_vm->_gameFlags[index] ^= _vm->_gameFlags[index] & (1 << offset);
|
||||||
|
|
||||||
|
DebugPrintf("Flag %i is now %i\n", flag, (_vm->_gameFlags[index] >> offset) & 1);
|
||||||
|
} else {
|
||||||
|
DebugPrintf("Syntax: toggleflag <flag>\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Debugger_LoL::cmd_queryFlag(int argc, const char **argv) {
|
||||||
|
if (argc > 1) {
|
||||||
|
uint flag = atoi(argv[1]);
|
||||||
|
|
||||||
|
const uint8 index = (flag >> 4);
|
||||||
|
const uint8 offset = flag & 0xF;
|
||||||
|
|
||||||
|
DebugPrintf("Flag %i is %i\n", flag, (_vm->_gameFlags[index] >> offset) & 1);
|
||||||
|
} else {
|
||||||
|
DebugPrintf("Syntax: queryflag <flag>\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
} // End of namespace Kyra
|
} // End of namespace Kyra
|
||||||
|
|
||||||
|
|
|
@ -47,9 +47,9 @@ protected:
|
||||||
bool cmd_loadPalette(int argc, const char **argv);
|
bool cmd_loadPalette(int argc, const char **argv);
|
||||||
bool cmd_showFacings(int argc, const char **argv);
|
bool cmd_showFacings(int argc, const char **argv);
|
||||||
bool cmd_gameSpeed(int argc, const char **argv);
|
bool cmd_gameSpeed(int argc, const char **argv);
|
||||||
bool cmd_listFlags(int argc, const char **argv);
|
virtual bool cmd_listFlags(int argc, const char **argv);
|
||||||
bool cmd_toggleFlag(int argc, const char **argv);
|
virtual bool cmd_toggleFlag(int argc, const char **argv);
|
||||||
bool cmd_queryFlag(int argc, const char **argv);
|
virtual bool cmd_queryFlag(int argc, const char **argv);
|
||||||
bool cmd_listTimers(int argc, const char **argv);
|
bool cmd_listTimers(int argc, const char **argv);
|
||||||
bool cmd_setTimerCountdown(int argc, const char **argv);
|
bool cmd_setTimerCountdown(int argc, const char **argv);
|
||||||
};
|
};
|
||||||
|
@ -97,6 +97,20 @@ protected:
|
||||||
bool cmd_passcodes(int argc, const char **argv);
|
bool cmd_passcodes(int argc, const char **argv);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class LoLEngine;
|
||||||
|
|
||||||
|
class Debugger_LoL : public Debugger {
|
||||||
|
public:
|
||||||
|
Debugger_LoL(LoLEngine *vm);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
LoLEngine *_vm;
|
||||||
|
|
||||||
|
bool cmd_listFlags(int argc, const char **argv);
|
||||||
|
bool cmd_toggleFlag(int argc, const char **argv);
|
||||||
|
bool cmd_queryFlag(int argc, const char **argv);
|
||||||
|
};
|
||||||
|
|
||||||
} // End of namespace Kyra
|
} // End of namespace Kyra
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#include "kyra/sound.h"
|
#include "kyra/sound.h"
|
||||||
#include "kyra/timer.h"
|
#include "kyra/timer.h"
|
||||||
#include "kyra/util.h"
|
#include "kyra/util.h"
|
||||||
|
#include "kyra/debugger.h"
|
||||||
|
|
||||||
#include "sound/voc.h"
|
#include "sound/voc.h"
|
||||||
#include "sound/audiostream.h"
|
#include "sound/audiostream.h"
|
||||||
|
@ -541,6 +542,9 @@ Common::Error LoLEngine::init() {
|
||||||
_spellProcs.push_back(new SpellProc(this, 0));
|
_spellProcs.push_back(new SpellProc(this, 0));
|
||||||
_spellProcs.push_back(new SpellProc(this, &LoLEngine::castGuardian));
|
_spellProcs.push_back(new SpellProc(this, &LoLEngine::castGuardian));
|
||||||
|
|
||||||
|
_debugger = new Debugger_LoL(this);
|
||||||
|
assert(_debugger);
|
||||||
|
|
||||||
return Common::kNoError;
|
return Common::kNoError;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -292,6 +292,7 @@ class LoLEngine : public KyraEngine_v1 {
|
||||||
friend class GUI_LoL;
|
friend class GUI_LoL;
|
||||||
friend class TextDisplayer_LoL;
|
friend class TextDisplayer_LoL;
|
||||||
friend class TIMInterpreter_LoL;
|
friend class TIMInterpreter_LoL;
|
||||||
|
friend class Debugger_LoL;
|
||||||
public:
|
public:
|
||||||
LoLEngine(OSystem *system, const GameFlags &flags);
|
LoLEngine(OSystem *system, const GameFlags &flags);
|
||||||
~LoLEngine();
|
~LoLEngine();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue