diff -ur ScummVM-cvs20030120/scummvm/scumm/actor.cpp ScummVM-cvs20030120+hack/scummvm/scumm/actor.cpp
old
|
new
|
|
41 | 41 | y = 0; |
42 | 42 | facing = 180; |
43 | 43 | newDirection = 180; |
| 44 | talkFrequency = 256; |
44 | 45 | } else if (mode == 2) { |
45 | 46 | facing = 180; |
46 | 47 | newDirection = 180; |
diff -ur ScummVM-cvs20030120/scummvm/scumm/actor.h ScummVM-cvs20030120+hack/scummvm/scumm/actor.h
old
|
new
|
|
77 | 77 | uint16 costume; |
78 | 78 | byte room; |
79 | 79 | byte talkColor; |
| 80 | int talkFrequency; |
80 | 81 | byte scalex, scaley; |
81 | 82 | byte charset; |
82 | 83 | int16 newDirection; |
diff -ur ScummVM-cvs20030120/scummvm/scumm/saveload.cpp ScummVM-cvs20030120+hack/scummvm/scumm/saveload.cpp
old
|
new
|
|
247 | 247 | MKLINE(Actor, costume, sleUint16, VER_V8), |
248 | 248 | MKLINE(Actor, room, sleByte, VER_V8), |
249 | 249 | MKLINE(Actor, talkColor, sleByte, VER_V8), |
| 250 | MKLINE(Actor, talkFrequency, sleInt16, VER_V16), |
250 | 251 | MKLINE(Actor, scalex, sleByte, VER_V8), |
251 | 252 | MKLINE(Actor, scaley, sleByte, VER_V8), |
252 | 253 | MKLINE(Actor, charset, sleByte, VER_V8), |
diff -ur ScummVM-cvs20030120/scummvm/scumm/saveload.h ScummVM-cvs20030120+hack/scummvm/scumm/saveload.h
old
|
new
|
|
34 | 34 | VER_V12, |
35 | 35 | VER_V13, |
36 | 36 | VER_V14, |
37 | | VER_V15 |
| 37 | VER_V15, |
| 38 | VER_V16 |
38 | 39 | }; |
39 | 40 | |
40 | | #define CURRENT_VER VER_V15 |
| 41 | #define CURRENT_VER VER_V16 |
41 | 42 | |
42 | 43 | |
43 | 44 | // To work around a warning in GCC 3.2 (and 3.1 ?) regarding non-POD types, |
diff -ur ScummVM-cvs20030120/scummvm/scumm/script_v8.cpp ScummVM-cvs20030120+hack/scummvm/scumm/script_v8.cpp
old
|
new
|
|
1173 | 1173 | warning("o8_actorOps: setActorVolume(%d) not implemented", i); |
1174 | 1174 | break; |
1175 | 1175 | case 0x88: // SO_ACTOR_FREQUENCY Set frequency of actor speech |
1176 | | // TODO - implement this! |
1177 | | i = pop(); |
1178 | | if (i != 256) // De-verbosed: 256 is the default frequency so don't warn on it |
1179 | | warning("o8_actorOps: setActorFrequency(%d) not implemented", i); |
| 1176 | a->talkFrequency = pop(); |
1180 | 1177 | break; |
1181 | 1178 | case 0x89: // SO_ACTOR_PAN |
1182 | 1179 | // TODO - implement this! |
diff -ur ScummVM-cvs20030120/scummvm/scumm/sound.cpp ScummVM-cvs20030120+hack/scummvm/scumm/sound.cpp
old
|
new
|
|
1217 | 1217 | |
1218 | 1218 | byte * final = (byte *)malloc(size); |
1219 | 1219 | memcpy(final, ptr, size); |
| 1220 | |
| 1221 | if (_scumm->_actorToPrintStrFor != 0xFF && _scumm->_actorToPrintStrFor != 0) { |
| 1222 | Actor *a = _scumm->derefActorSafe(_scumm->_actorToPrintStrFor, "playBundleSound"); |
| 1223 | if (a) |
| 1224 | rate = (rate * a->talkFrequency) / 256; |
| 1225 | } |
| 1226 | |
1220 | 1227 | if (bits == 8) { |
1221 | 1228 | return _scumm->_mixer->playRaw(NULL, final, size, rate, SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_AUTOFREE); |
1222 | 1229 | } else if (bits == 16){ |