mirror of
https://github.com/libretro/scummvm.git
synced 2025-03-02 08:19:19 +00:00
HE72+ games use slightly different code for subtitle color.
svn-id: r17174
This commit is contained in:
parent
4c3d302e19
commit
4361ef655e
@ -1278,7 +1278,7 @@ void ScummEngine::actorTalk(const byte *msg) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (getTalkingActor() > 0x7F) {
|
||||
if (_heversion >= 72 || getTalkingActor() > 0x7F) {
|
||||
_charsetColor = (byte)_string[0].color;
|
||||
} else {
|
||||
a = derefActor(getTalkingActor(), "actorTalk(2)");
|
||||
|
@ -1681,6 +1681,7 @@ void ScummEngine::akos_processQueue() {
|
||||
a->_talkColor = a->_heTalkQueue[param_1].color;
|
||||
|
||||
_string[0].loadDefault();
|
||||
_string[0].color = a->_talkColor;
|
||||
actorTalk(a->_heTalkQueue[param_1].sentence);
|
||||
|
||||
} else if (param_1 != 0) {
|
||||
|
@ -779,6 +779,8 @@ protected:
|
||||
void o72_actorOps();
|
||||
void o72_verbOps();
|
||||
void o72_arrayOps();
|
||||
void o72_talkActor();
|
||||
void o72_talkEgo();
|
||||
void o72_dimArray();
|
||||
void o72_dim2dimArray();
|
||||
void o72_traceStatus();
|
||||
|
@ -174,9 +174,9 @@ void ScummEngine_v100he::setupOpcodes() {
|
||||
OPCODE(o100_roomOps),
|
||||
OPCODE(o6_printActor),
|
||||
OPCODE(o6_printEgo),
|
||||
OPCODE(o6_talkActor),
|
||||
OPCODE(o72_talkActor),
|
||||
/* 6C */
|
||||
OPCODE(o6_talkEgo),
|
||||
OPCODE(o72_talkEgo),
|
||||
OPCODE(o6_invalid),
|
||||
OPCODE(o60_seekFilePos),
|
||||
OPCODE(o6_setBoxFlags),
|
||||
|
@ -276,8 +276,8 @@ void ScummEngine_v72he::setupOpcodes() {
|
||||
/* B8 */
|
||||
OPCODE(o6_printActor),
|
||||
OPCODE(o6_printEgo),
|
||||
OPCODE(o6_talkActor),
|
||||
OPCODE(o6_talkEgo),
|
||||
OPCODE(o72_talkActor),
|
||||
OPCODE(o72_talkEgo),
|
||||
/* BC */
|
||||
OPCODE(o72_dimArray),
|
||||
OPCODE(o6_stopObjectCode),
|
||||
@ -1457,6 +1457,24 @@ void ScummEngine_v72he::o72_arrayOps() {
|
||||
}
|
||||
}
|
||||
|
||||
void ScummEngine_v72he::o72_talkActor() {
|
||||
Actor *a;
|
||||
|
||||
_actorToPrintStrFor = pop();
|
||||
a = derefActorSafe(_actorToPrintStrFor, "o72_talkActor");
|
||||
|
||||
_string[0].loadDefault();
|
||||
_string[0].color = a->_talkColor;
|
||||
actorTalk(_scriptPointer);
|
||||
|
||||
_scriptPointer += resStrLen(_scriptPointer) + 1;
|
||||
}
|
||||
|
||||
void ScummEngine_v72he::o72_talkEgo() {
|
||||
push(VAR(VAR_EGO));
|
||||
o6_talkActor();
|
||||
}
|
||||
|
||||
void ScummEngine_v72he::o72_dimArray() {
|
||||
int data;
|
||||
int type = fetchScriptByte();
|
||||
@ -2039,6 +2057,7 @@ void ScummEngine_v72he::o72_setWindowCaption() {
|
||||
}
|
||||
|
||||
void ScummEngine_v72he::decodeParseString(int m, int n) {
|
||||
Actor *a;
|
||||
int i, colors, size;
|
||||
int args[31];
|
||||
byte name[1024];
|
||||
@ -2106,8 +2125,11 @@ void ScummEngine_v72he::decodeParseString(int m, int n) {
|
||||
break;
|
||||
case 0xFE:
|
||||
_string[m].loadDefault();
|
||||
if (n)
|
||||
if (n) {
|
||||
_actorToPrintStrFor = pop();
|
||||
a = derefActorSafe(_actorToPrintStrFor, "decodeParseString");
|
||||
_string[0].color = a->_talkColor;
|
||||
}
|
||||
break;
|
||||
case 0xFF:
|
||||
_string[m].saveDefault();
|
||||
|
@ -273,8 +273,8 @@ void ScummEngine_v80he::setupOpcodes() {
|
||||
/* B8 */
|
||||
OPCODE(o6_printActor),
|
||||
OPCODE(o6_printEgo),
|
||||
OPCODE(o6_talkActor),
|
||||
OPCODE(o6_talkEgo),
|
||||
OPCODE(o72_talkActor),
|
||||
OPCODE(o72_talkEgo),
|
||||
/* BC */
|
||||
OPCODE(o72_dimArray),
|
||||
OPCODE(o6_stopObjectCode),
|
||||
|
@ -273,8 +273,8 @@ void ScummEngine_v90he::setupOpcodes() {
|
||||
/* B8 */
|
||||
OPCODE(o6_printActor),
|
||||
OPCODE(o6_printEgo),
|
||||
OPCODE(o6_talkActor),
|
||||
OPCODE(o6_talkEgo),
|
||||
OPCODE(o72_talkActor),
|
||||
OPCODE(o72_talkEgo),
|
||||
/* BC */
|
||||
OPCODE(o72_dimArray),
|
||||
OPCODE(o6_stopObjectCode),
|
||||
|
Loading…
x
Reference in New Issue
Block a user