[Scummvm-cvs-logs] scummvm master -> 72619334c00e4f366101ac6de9e2238c2a0e4042
sev-
sev at scummvm.org
Wed Aug 17 20:23:27 CEST 2016
This automated email contains information about 11 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
49c68ba155 DIRECTOR: Lingo: Added descriptions for rest of the commands
d6086f8036 DIRECTOR: Lingo: Initial function parameter tracing
263588e97e DIRECTOR: Lingo: Finished parameter tracing
76d5435781 DIRECTOR: Optimize code flow for directory scanning
78c50a0f89 DIRECTOR: Fix crashes on object destruction
556a5d572e DIRECTOR: Plug memory leaks
7702c62dfd DIRECTOR: Add missing break in switch statement
b01a58e82c DIRECTOR: Fix memory override
873527ff5e DIRECTOR: Lingo: Fixed 'the' entity retrieval
8192027d1c DIRECTOR: Fix another double free
72619334c0 DIRECTOR: Lingo: Added missing break
Commit: 49c68ba15590b9881908b162ca09291937b42130
https://github.com/scummvm/scummvm/commit/49c68ba15590b9881908b162ca09291937b42130
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T10:22:26+02:00
Commit Message:
DIRECTOR: Lingo: Added descriptions for rest of the commands
Changed paths:
engines/director/lingo/lingo-code.cpp
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 0769a0f..150e242 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -56,11 +56,52 @@ static struct FuncDescr {
const char *name;
const char *args;
} funcDescr[] = {
+ { 0, "STOP", "" },
{ Lingo::c_xpop, "c_xpop", "" },
{ Lingo::c_printtop, "c_printtop", "" },
{ Lingo::c_constpush, "c_constpush", "i" },
{ Lingo::c_voidpush, "c_voidpush", "" },
{ Lingo::c_fconstpush, "c_fconstpush", "f" },
+ { Lingo::c_stringpush, "c_stringpush", "s" },
+ { Lingo::c_varpush, "c_varpush", "s" },
+ { Lingo::c_assign, "c_assign", "" },
+ { Lingo::c_eval, "c_eval", "" },
+ { Lingo::c_theentitypush,"c_theentitypush","ii" }, // entity, field
+ { Lingo::c_theentityassign,"c_theentityassign","ii" },
+ { Lingo::c_swap, "c_swap", "" },
+ { Lingo::c_add, "c_add", "" },
+ { Lingo::c_sub, "c_sub", "" },
+ { Lingo::c_mul, "c_mul", "" },
+ { Lingo::c_div, "c_div", "" },
+ { Lingo::c_negate, "c_negate", "" },
+ { Lingo::c_ampersand, "c_ampersand", "" },
+ { Lingo::c_concat, "c_concat", "" },
+ { Lingo::c_contains, "c_contains", "" },
+ { Lingo::c_starts, "c_starts", "" },
+ { Lingo::c_intersects, "c_intersects", "" },
+ { Lingo::c_within, "c_within", "" },
+ { Lingo::c_and, "c_and", "" },
+ { Lingo::c_or, "c_or", "" },
+ { Lingo::c_not, "c_not", "" },
+ { Lingo::c_eq, "c_eq", "" },
+ { Lingo::c_neq, "c_neq", "" },
+ { Lingo::c_gt, "c_gt", "" },
+ { Lingo::c_lt, "c_lt", "" },
+ { Lingo::c_ge, "c_ge", "" },
+ { Lingo::c_le, "c_le", "" },
+ { Lingo::c_repeatwhilecode,"c_repeatwhilecode","oo" },
+ { Lingo::c_repeatwithcode,"c_repeatwithcode","ooooos" },
+ { Lingo::c_ifcode, "c_ifcode", "oooi" },
+ { Lingo::c_goto, "c_goto", "" },
+ { Lingo::c_gotoloop, "c_gotoloop", "" },
+ { Lingo::c_gotonext, "c_gotonext", "" },
+ { Lingo::c_gotoprevious,"c_gotoprevious","" },
+ { Lingo::c_play, "c_play", "" },
+ { Lingo::c_playdone, "c_playdone", "" },
+ { Lingo::c_call, "c_call", "si" },
+ { Lingo::c_procret, "c_procret", "" },
+ { Lingo::c_global, "c_global", "s" },
+ { Lingo::c_open, "c_open", "" },
{ 0, 0, 0 }
};
Commit: d6086f8036d6a4346dafeb6343670c4e80818f81
https://github.com/scummvm/scummvm/commit/d6086f8036d6a4346dafeb6343670c4e80818f81
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T10:35:54+02:00
Commit Message:
DIRECTOR: Lingo: Initial function parameter tracing
Changed paths:
engines/director/lingo/lingo-codegen.cpp
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index a9659f7..8e054b4 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -55,7 +55,7 @@ void Lingo::execute(int pc) {
for(_pc = pc; (*_currentScript)[_pc] != STOP && !_returning;) {
Common::String instr = decodeInstruction(_pc);
- debugC(1, kDebugLingoExec, "E: %s", instr.c_str());
+ debugC(1, kDebugLingoExec, "[%3d]: %s", _pc, instr.c_str());
for (uint i = 0; i < _stack.size(); i++) {
debugCN(5, kDebugLingoExec, "%d ", _stack[i].u.i);
@@ -69,13 +69,39 @@ void Lingo::execute(int pc) {
Common::String Lingo::decodeInstruction(int pc) {
Symbol sym;
+ Common::String res;
- sym.u.func = (*_currentScript)[pc];
+ sym.u.func = (*_currentScript)[pc++];
if (_functions.contains((void *)sym.u.s)) {
- return _functions[(void *)sym.u.s]->name;
+ res = _functions[(void *)sym.u.s]->name;
+ const char *pars = _functions[(void *)sym.u.s]->proto;
+ inst i;
+
+ while (*pars) {
+ switch (*pars++) {
+ case 'i':
+ {
+ i = (*_currentScript)[pc++];
+ int v = READ_UINT32(&i);
+
+ res += Common::String::format(" %d", v);
+ break;
+ }
+ case 'o':
+ {
+ i = (*_currentScript)[pc++];
+ int v = READ_UINT32(&i);
+
+ res += Common::String::format(" [%5d]", v);
+ break;
+ }
+ }
+ }
} else {
- return "<unknown>";
+ res = "<unknown>";
}
+
+ return res;
}
Symbol *Lingo::lookupVar(const char *name, bool create, bool putInGlobalList) {
Commit: 263588e97e9e32825864a83e28f31ad6c6241dca
https://github.com/scummvm/scummvm/commit/263588e97e9e32825864a83e28f31ad6c6241dca
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T10:39:42+02:00
Commit Message:
DIRECTOR: Lingo: Finished parameter tracing
Changed paths:
engines/director/lingo/lingo-codegen.cpp
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index 8e054b4..9390a8b 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -95,7 +95,20 @@ Common::String Lingo::decodeInstruction(int pc) {
res += Common::String::format(" [%5d]", v);
break;
}
+ case 's':
+ {
+ char *s = (char *)&(*_currentScript)[pc];
+ pc += calcStringAlignment(s);
+
+ res += Common::String::format(" \"%s\"", s);
+ break;
+ }
+ default:
+ warning("decodeInstruction: Unknown parameter type: %c", pars[-1]);
}
+
+ if (*pars)
+ res += ',';
}
} else {
res = "<unknown>";
Commit: 76d54357812675cfdf3ef4a7f898df3df3919834
https://github.com/scummvm/scummvm/commit/76d54357812675cfdf3ef4a7f898df3df3919834
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T11:34:19+02:00
Commit Message:
DIRECTOR: Optimize code flow for directory scanning
Changed paths:
engines/director/director.cpp
diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index b787935..ddc5adc 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -141,7 +141,8 @@ Common::HashMap<Common::String, Score *> DirectorEngine::loadMMMNames(Common::St
Common::FSList movies;
Common::HashMap<Common::String, Score *> nameMap;
- directory.getChildren(movies, Common::FSNode::kListFilesOnly);
+ if (!directory.getChildren(movies, Common::FSNode::kListFilesOnly))
+ return nameMap;
if (!movies.empty()) {
for (Common::FSList::const_iterator i = movies.begin(); i != movies.end(); ++i) {
Commit: 78c50a0f8923b0078ba8640a5a29f2cee0b10b0b
https://github.com/scummvm/scummvm/commit/78c50a0f8923b0078ba8640a5a29f2cee0b10b0b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T11:35:07+02:00
Commit Message:
DIRECTOR: Fix crashes on object destruction
Changed paths:
engines/director/score.cpp
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 6587270..79a60bf 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -892,8 +892,6 @@ Frame::Frame(const Frame &frame) {
}
Frame::~Frame() {
- delete[] &_sprites;
- delete[] &_drawRects;
delete _palette;
}
@@ -1611,7 +1609,6 @@ Sprite::Sprite(const Sprite &sprite) {
Sprite::~Sprite() {
delete _cast;
- delete &_startPoint;
}
} //End of namespace Director
Commit: 556a5d572e108fdfd518bf998223c6959278e363
https://github.com/scummvm/scummvm/commit/556a5d572e108fdfd518bf998223c6959278e363
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T11:35:24+02:00
Commit Message:
DIRECTOR: Plug memory leaks
Changed paths:
engines/director/sound.cpp
engines/director/sound.h
diff --git a/engines/director/sound.cpp b/engines/director/sound.cpp
index 5f6d435..d6c78a5 100644
--- a/engines/director/sound.cpp
+++ b/engines/director/sound.cpp
@@ -36,6 +36,12 @@ DirectorSound::DirectorSound() {
_mixer = g_system->getMixer();
}
+DirectorSound::~DirectorSound() {
+ delete _sound1;
+ delete _sound2;
+ delete _scriptSound;
+}
+
void DirectorSound::playWAV(Common::String filename, uint8 soundChannel) {
Common::File *file = new Common::File();
diff --git a/engines/director/sound.h b/engines/director/sound.h
index 87a989c..4327b63 100644
--- a/engines/director/sound.h
+++ b/engines/director/sound.h
@@ -39,6 +39,7 @@ private:
public:
DirectorSound();
+ ~DirectorSound();
void playWAV(Common::String filename, uint8 channelID);
void playAIFF(Common::String filename, uint8 channelID);
Commit: 7702c62dfd29a75660d7709702d7ea7371629274
https://github.com/scummvm/scummvm/commit/7702c62dfd29a75660d7709702d7ea7371629274
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T11:36:09+02:00
Commit Message:
DIRECTOR: Add missing break in switch statement
Changed paths:
engines/director/score.cpp
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 79a60bf..bd3def5 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -975,6 +975,7 @@ void Frame::readMainChannels(Common::SeekableSubReadStreamEndian &stream, uint16
if (stream.readUint16())
readPaletteInfo(stream);
offset += 16;
+ break;
default:
offset++;
stream.readByte();
Commit: b01a58e82cd06e77533ae9209f9956ac6775127f
https://github.com/scummvm/scummvm/commit/b01a58e82cd06e77533ae9209f9956ac6775127f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T11:39:42+02:00
Commit Message:
DIRECTOR: Fix memory override
Changed paths:
engines/director/dib.cpp
engines/director/score.cpp
diff --git a/engines/director/dib.cpp b/engines/director/dib.cpp
index 8c54ba5..04665e7 100644
--- a/engines/director/dib.cpp
+++ b/engines/director/dib.cpp
@@ -62,7 +62,7 @@ void DIBDecoder::loadPalette(Common::SeekableReadStream &stream) {
uint16 steps = stream.size() / 6;
uint16 index = (steps * 3) - 1;
_paletteColorCount = steps;
- _palette = new byte[index];
+ _palette = new byte[index + 1];
for (uint8 i = 0; i < steps; i++) {
_palette[index - 2] = stream.readByte();
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index bd3def5..7a2f8f7 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -201,7 +201,7 @@ void Score::loadPalette(Common::SeekableSubReadStreamEndian &stream) {
uint16 steps = stream.size() / 6;
uint16 index = (steps * 3) - 1;
uint16 _paletteColorCount = steps;
- byte *_palette = new byte[index];
+ byte *_palette = new byte[index + 1];
for (uint8 i = 0; i < steps; i++) {
_palette[index - 2] = stream.readByte();
Commit: 873527ff5e3adb553b7df6efa97ac7625719ee87
https://github.com/scummvm/scummvm/commit/873527ff5e3adb553b7df6efa97ac7625719ee87
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T11:46:39+02:00
Commit Message:
DIRECTOR: Lingo: Fixed 'the' entity retrieval
Changed paths:
engines/director/lingo/lingo-the.cpp
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index eb0bfc5..f3e0884 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -483,8 +483,8 @@ Datum Lingo::getTheCast(Datum &id1, int field) {
return d;
} else {
warning("The cast %d found", id);
- return d;
}
+
cast = _vm->_currentScore->_casts[id];
castInfo = _vm->_currentScore->_castsInfo[id];
Commit: 8192027d1c9fb5b935c1279ebf2b66387fd44ab1
https://github.com/scummvm/scummvm/commit/8192027d1c9fb5b935c1279ebf2b66387fd44ab1
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T11:46:47+02:00
Commit Message:
DIRECTOR: Fix another double free
Changed paths:
engines/director/score.cpp
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 7a2f8f7..2cdff84 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -188,9 +188,6 @@ Score::~Score() {
if (_movieArchive)
_movieArchive->close();
- delete _surface;
- delete _trailSurface;
-
delete _font;
delete _movieArchive;
Commit: 72619334c00e4f366101ac6de9e2238c2a0e4042
https://github.com/scummvm/scummvm/commit/72619334c00e4f366101ac6de9e2238c2a0e4042
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T20:22:59+02:00
Commit Message:
DIRECTOR: Lingo: Added missing break
Changed paths:
engines/director/lingo/lingo-the.cpp
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index f3e0884..760576e 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -325,6 +325,7 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
break;
case kTheCast:
d = getTheCast(id, field);
+ break;
case kThePerFrameHook:
warning("STUB: getting the perframehook");
break;
More information about the Scummvm-git-logs
mailing list