[Scummvm-cvs-logs] SF.net SVN: scummvm:[42515] scummvm/branches/gsoc2009-draci/engines/draci
dkasak13 at users.sourceforge.net
dkasak13 at users.sourceforge.net
Wed Jul 15 21:06:24 CEST 2009
Revision: 42515
http://scummvm.svn.sourceforge.net/scummvm/?rev=42515&view=rev
Author: dkasak13
Date: 2009-07-15 19:06:24 +0000 (Wed, 15 Jul 2009)
Log Message:
-----------
* Changed Game members _numMasks, _init, _look, _use and _canUse from uint16 to int
* Modified Game::loadRoom to load gates and execute their scripts
* The first room loaded is now Game::_info._startRoom instead of 0
* Fixed reading of _pers0 and _persStep from the data files (they are 6 instead of 12 bytes)
* Added more debug info to Script and Game
Modified Paths:
--------------
scummvm/branches/gsoc2009-draci/engines/draci/game.cpp
scummvm/branches/gsoc2009-draci/engines/draci/game.h
scummvm/branches/gsoc2009-draci/engines/draci/script.cpp
Modified: scummvm/branches/gsoc2009-draci/engines/draci/game.cpp
===================================================================
--- scummvm/branches/gsoc2009-draci/engines/draci/game.cpp 2009-07-15 18:16:54 UTC (rev 42514)
+++ scummvm/branches/gsoc2009-draci/engines/draci/game.cpp 2009-07-15 19:06:24 UTC (rev 42515)
@@ -138,9 +138,10 @@
loadObject(kDragonObject);
GameObject *dragon = getObject(kDragonObject);
+ debugC(4, kDraciLogicDebugLevel, "Running init program for the dragon object...");
_vm->_script->run(dragon->_program, dragon->_init);
- changeRoom(0);
+ changeRoom(_info._startRoom);
}
void Game::loadRoom(int roomNum) {
@@ -156,28 +157,52 @@
_currentRoom._music = roomReader.readByte();
_currentRoom._map = roomReader.readByte();
_currentRoom._palette = roomReader.readByte() - 1;
- _currentRoom._numMasks = roomReader.readUint16LE();
- _currentRoom._init = roomReader.readUint16LE();
- _currentRoom._look = roomReader.readUint16LE();
- _currentRoom._use = roomReader.readUint16LE();
- _currentRoom._canUse = roomReader.readUint16LE();
+ _currentRoom._numMasks = roomReader.readSint16LE();
+ _currentRoom._init = roomReader.readSint16LE();
+ _currentRoom._look = roomReader.readSint16LE();
+ _currentRoom._use = roomReader.readSint16LE();
+ _currentRoom._canUse = roomReader.readSint16LE();
_currentRoom._imInit = roomReader.readByte();
_currentRoom._imLook = roomReader.readByte();
_currentRoom._imUse = roomReader.readByte();
_currentRoom._mouseOn = roomReader.readByte();
_currentRoom._heroOn = roomReader.readByte();
- roomReader.read(&_currentRoom._pers0, 12);
- roomReader.read(&_currentRoom._persStep, 12);
+ roomReader.read(&_currentRoom._pers0, 6);
+ roomReader.read(&_currentRoom._persStep, 6);
_currentRoom._escRoom = roomReader.readByte() - 1;
_currentRoom._numGates = roomReader.readByte();
+ debugC(4, kDraciLogicDebugLevel, "_music: %d", _currentRoom._music);
+ debugC(4, kDraciLogicDebugLevel, "_map: %d", _currentRoom._map);
+ debugC(4, kDraciLogicDebugLevel, "_palette: %d", _currentRoom._palette);
+ debugC(4, kDraciLogicDebugLevel, "_numMasks: %d", _currentRoom._numMasks);
+ debugC(4, kDraciLogicDebugLevel, "_init: %d", _currentRoom._init);
+ debugC(4, kDraciLogicDebugLevel, "_look: %d", _currentRoom._look);
+ debugC(4, kDraciLogicDebugLevel, "_use: %d", _currentRoom._use);
+ debugC(4, kDraciLogicDebugLevel, "_canUse: %d", _currentRoom._canUse);
+ debugC(4, kDraciLogicDebugLevel, "_imInit: %d", _currentRoom._imInit);
+ debugC(4, kDraciLogicDebugLevel, "_imLook: %d", _currentRoom._imLook);
+ debugC(4, kDraciLogicDebugLevel, "_imUse: %d", _currentRoom._imUse);
+ debugC(4, kDraciLogicDebugLevel, "_mouseOn: %d", _currentRoom._mouseOn);
+ debugC(4, kDraciLogicDebugLevel, "_heroOn: %d", _currentRoom._heroOn);
+ debugC(4, kDraciLogicDebugLevel, "_pers0: %f", _currentRoom._pers0);
+ debugC(4, kDraciLogicDebugLevel, "_persStep: %f", _currentRoom._persStep);
+ debugC(4, kDraciLogicDebugLevel, "_escRoom: %d", _currentRoom._escRoom);
+ debugC(4, kDraciLogicDebugLevel, "_numGates: %d", _currentRoom._numGates);
+
+ Common::Array<int> gates;
+
+ for (uint i = 0; i < _currentRoom._numGates; ++i) {
+ gates.push_back(roomReader.readSint16LE());
+ }
+
for (uint i = 0; i < _info._numObjects; ++i) {
- debugC(2, kDraciLogicDebugLevel,
+ debugC(7, kDraciLogicDebugLevel,
"Checking if object %d (%d) is at the current location (%d)", i,
_objects[i]._location, roomNum);
if (_objects[i]._location == roomNum) {
- debugC(2, kDraciLogicDebugLevel, "Loading object %d from room %d", i, roomNum);
+ debugC(6, kDraciLogicDebugLevel, "Loading object %d from room %d", i, roomNum);
loadObject(i);
}
}
@@ -187,6 +212,8 @@
// other objects that may not yet be loaded
for (uint i = 0; i < _info._numObjects; ++i) {
if (_objects[i]._location == roomNum) {
+ debugC(6, kDraciLogicDebugLevel,
+ "Running init program for object %d (offset %d)", i, getObject(i)->_init);
_vm->_script->run(getObject(i)->_program, getObject(i)->_init);
}
}
@@ -196,8 +223,14 @@
_currentRoom._program._length = f->_length;
memcpy(_currentRoom._program._bytecode, f->_data, f->_length);
+ debugC(4, kDraciLogicDebugLevel, "Running room init program...");
_vm->_script->run(_currentRoom._program, _currentRoom._init);
+ for (uint i = 0; i < _currentRoom._numGates; ++i) {
+ debugC(6, kDraciLogicDebugLevel, "Running program for gate %d", i);
+ _vm->_script->run(_currentRoom._program, gates[i]);
+ }
+
f = _vm->_paletteArchive->getFile(_currentRoom._palette);
_vm->_screen->setPalette(f->_data, 0, kNumColours);
}
Modified: scummvm/branches/gsoc2009-draci/engines/draci/game.h
===================================================================
--- scummvm/branches/gsoc2009-draci/engines/draci/game.h 2009-07-15 18:16:54 UTC (rev 42514)
+++ scummvm/branches/gsoc2009-draci/engines/draci/game.h 2009-07-15 19:06:24 UTC (rev 42515)
@@ -86,8 +86,8 @@
byte _music;
byte _map;
byte _palette;
- uint16 _numMasks;
- uint16 _init, _look, _use, _canUse;
+ int _numMasks;
+ int _init, _look, _use, _canUse;
bool _imInit, _imLook, _imUse;
bool _mouseOn, _heroOn;
double _pers0, _persStep;
Modified: scummvm/branches/gsoc2009-draci/engines/draci/script.cpp
===================================================================
--- scummvm/branches/gsoc2009-draci/engines/draci/script.cpp 2009-07-15 18:16:54 UTC (rev 42514)
+++ scummvm/branches/gsoc2009-draci/engines/draci/script.cpp 2009-07-15 19:06:24 UTC (rev 42515)
@@ -484,17 +484,19 @@
// Seek to the requested part of the program
reader.seek(offset);
+ debugC(3, kDraciBytecodeDebugLevel,
+ "Starting GPL program at offset %d (program length: %d)", offset, program._length);
+
const GPL2Command *cmd;
do {
- debugC(3, kDraciBytecodeDebugLevel,
- "Program length = %d Current position = %d "
- "Jump = %d New Position = %d", program._length,
- reader.pos(), _jump, reader.pos() + _jump);
-
// Account for GPL jump that some commands set
- if (_jump != 0)
+ if (_jump != 0) {
+ debugC(6, kDraciBytecodeDebugLevel,
+ "Jumping from offset %d to %d (%d bytes)",
+ reader.pos(), reader.pos() + _jump, _jump);
reader.seek(_jump, SEEK_CUR);
+ }
// Reset jump
_jump = 0;
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