DRAGONS: Fixed background dialog for non US versions. Fixes #11616

This commit is contained in:
Eric Fry 2020-09-11 22:47:47 +10:00
parent cff73c14d1
commit bc59673407
2 changed files with 382 additions and 94 deletions

View File

@ -1921,7 +1921,6 @@ uint32 DragonsEngine::getDialogTextIdDe(uint32 textId) {
case 0x7c20 : return 0x90fa;
case 0x7c9c : return 0x9196;
case 0x7cf2 : return 0x91fa;
// case 0x7dcc : return 0x92da;
case 0x7e1a : return 0x9324;
case 0x7e96 : return 0x93e2;
case 0x7f0a : return 0x9464;
@ -1942,7 +1941,6 @@ uint32 DragonsEngine::getDialogTextIdDe(uint32 textId) {
case 0x92aa : return 0xab3c;
case 0x932c : return 0xabc0;
case 0x93d6 : return 0xac52;
// case 0x7dcc : return 0x92da;
case 0x948c : return 0xad16;
// tournament
@ -1954,9 +1952,155 @@ uint32 DragonsEngine::getDialogTextIdDe(uint32 textId) {
case 0x4c814 : return 0x556c4;
case 0x4c852 : return 0x556fc;
//for camelhot
//for camelhot
case 0x30DD8 : return 0x36594;
// castle garden bg dialog
case 0x22660 : return 0x267ec;
case 0x226CA : return 0x2687a;
case 0x22738 : return 0x2690a;
case 0x22790 : return 0x26972;
case 0x227E8 : return 0x269e6;
case 0x2283C : return 0x26a44;
case 0x228A0 : return 0x26ac4;
case 0x228EC : return 0x26b1e;
// knight pool reflection logic
case 0x23E90 : return 0x28456;
case 0x23EE6 : return 0x284aa;
case 0x23F0C : return 0x284e0;
case 0x23F86 : return 0x2856c;
case 0x24000 : return 0x285c4;
case 0x2406A : return 0x2863c;
case 0x240C2 : return 0x286a0;
case 0x2411E : return 0x28706;
case 0x24158 : return 0x28746;
case 0x241BC : return 0x287a6;
case 0x241EE : return 0x287d6;
case 0x24240 : return 0x28832;
case 0x24286 : return 0x2887e;
case 0x242B0 : return 0x288ae;
case 0x2431C : return 0x2891e;
case 0x2437C : return 0x28994;
case 0x243B2 : return 0x289dc;
case 0x2440A : return 0x28a46;
case 0x24432 : return 0x28a7e;
case 0x24480 : return 0x28ac8;
case 0x244EE : return 0x28b40;
case 0x2453C : return 0x28b9e;
// Zigmond fraud logic
case 0x2D000 : return 0x32312;
case 0x2D044 : return 0x32364;
case 0x2D0B2 : return 0x323d0;
case 0x2D0D6 : return 0x323fc;
case 0x2D152 : return 0x32490;
case 0x2D1A4 : return 0x324f0;
case 0x2D20A : return 0x32566;
case 0x2D27C : return 0x325f0;
case 0x2D2EC : return 0x32674;
case 0x2D336 : return 0x326c6;
case 0x2D3E0 : return 0x3274c;
case 0x2D456 : return 0x327d2;
case 0x2D4A8 : return 0x3283c;
case 0x2D504 : return 0x328a0;
// Zigmond fraud logic 1
case 0x2F422 : return 0x348c6;
// Black dragon on hill
case 0x325EA : return 0x37f94;
case 0x3262A : return 0x38000;
case 0x32686 : return 0x3806c;
case 0x326D8 : return 0x380fc;
case 0x3270E : return 0x3814a;
case 0x32774 : return 0x381a2;
case 0x32D72 : return 0x38850;
// Jester in library
case 0x18502 : return 0x1b7f8;
case 0x185E0 : return 0x1b900;
case 0x18596 : return 0x1b8a4;
// Broken black dragon
case 0x40802 : return 0x47ec2;
case 0x40852 : return 0x47f2a;
case 0x40896 : return 0x47f70;
case 0x408C0 : return 0x48000;
case 0x4092A : return 0x48084;
// Dodo under attack
case 0x3353A : return 0x39100;
case 0x335AC : return 0x3917e;
case 0x335F8 : return 0x391e4;
case 0x33660 : return 0x39252;
case 0x336DE : return 0x392da;
case 0x3375C : return 0x39364;
// Forest without dodo
case 0x33EA0 : return 0x39c02;
case 0x33EFC : return 0x39c98;
case 0x33F34 : return 0x39cd0;
case 0x34000 : return 0x39d30;
case 0x34074 : return 0x39dc4;
// Angry villagers
case 0x35946 : return 0x3ba7e;
case 0x359BC : return 0x3baee;
case 0x35A38 : return 0x3bb68;
case 0x35ABC : return 0x3bbd4;
case 0x35B28 : return 0x3bc68;
case 0x35B9C : return 0x3bcd4;
case 0x35C10 : return 0x3bd78;
case 0x35C80 : return 0x3be0e;
case 0x35CFA : return 0x3be96;
case 0x35D64 : return 0x3bf26;
// Flame bedroom escape
case 0x10458 : return 0x12ac2;
case 0x104A0 : return 0x12b16;
case 0x10500 : return 0x12b72;
case 0x10550 : return 0x12bb6;
case 0x10578 : return 0x12be6;
// Lady of the lake captured
case 0x490C8 : return 0x51ace;
case 0x490FC : return 0x51b04;
case 0x4913A : return 0x51b3e;
// Men in mines
case 0x4590A : return 0x4db1c;
case 0x45994 : return 0x4dbba;
case 0x459F4 : return 0x4dc2c;
case 0x45A60 : return 0x4dc92;
// Moat drained
case 0x3C97A : return 0x43830;
case 0x3C9AC : return 0x43870;
case 0x3C9F8 : return 0x438dc;
case 0x3CA48 : return 0x43966;
// Monks at bar
case 0x37800 : return 0x3db58;
case 0x37854 : return 0x3dba0;
case 0x378CA : return 0x3dc1e;
case 0x39152 : return 0x3f754;
case 0x3919A : return 0x3f78a;
case 0x3922C : return 0x3f82a;
case 0x38F2A : return 0x3f52c;
case 0x39000 : return 0x3f5a0;
case 0x39084 : return 0x3f65a;
case 0x390E8 : return 0x3f6d6;
case 0x38C68 : return 0x3f25e;
case 0x38CE2 : return 0x3f2da;
case 0x38D4E : return 0x3f348;
case 0x38DC2 : return 0x3f3ba;
case 0x38E0C : return 0x3f3f4;
case 0x38E5C : return 0x3f44a;
case 0x38ED0 : return 0x3f4c0;
default: break;
}
warning("Unhandled textID 0x%x", textId);
@ -2012,7 +2156,6 @@ uint32 DragonsEngine::getDialogTextIdFr(uint32 textId) {
case 0x7c20 : return 0x8afe;
case 0x7c9c : return 0x8b92;
case 0x7cf2 : return 0x8bda;
// case 0x7dcc : return 0x8cc0;
case 0x7e1a : return 0x8d0e;
case 0x7e96 : return 0x8da6;
case 0x7f0a : return 0x8e30;
@ -2033,7 +2176,6 @@ uint32 DragonsEngine::getDialogTextIdFr(uint32 textId) {
case 0x92aa : return 0xa35e;
case 0x932c : return 0xa400;
case 0x93d6 : return 0xa4d2;
// case 0x7dcc : return 0x8cc0;
case 0x948c : return 0xa5b6;
// tournament
@ -2048,6 +2190,152 @@ uint32 DragonsEngine::getDialogTextIdFr(uint32 textId) {
//for camelhot
case 0x30DD8 : return 0x37cb8;
// castle garden bg dialog
case 0x22660 : return 0x271a4;
case 0x226CA : return 0x27214;
case 0x22738 : return 0x27292;
case 0x22790 : return 0x272ee;
case 0x227E8 : return 0x27366;
case 0x2283C : return 0x273c8;
case 0x228A0 : return 0x2743a;
case 0x228EC : return 0x274a2;
// knight pool reflection logic
case 0x23E90 : return 0x28da8;
case 0x23EE6 : return 0x28e16;
case 0x23F0C : return 0x28e42;
case 0x23F86 : return 0x28ec0;
case 0x24000 : return 0x28efa;
case 0x2406A : return 0x28f64;
case 0x240C2 : return 0x29000;
case 0x2411E : return 0x29068;
case 0x24158 : return 0x290a6;
case 0x241BC : return 0x29114;
case 0x241EE : return 0x2914a;
case 0x24240 : return 0x291b2;
case 0x24286 : return 0x29206;
case 0x242B0 : return 0x29234;
case 0x2431C : return 0x292a8;
case 0x2437C : return 0x29332;
case 0x243B2 : return 0x2937e;
case 0x2440A : return 0x293d0;
case 0x24432 : return 0x293f2;
case 0x24480 : return 0x29434;
case 0x244EE : return 0x294a8;
case 0x2453C : return 0x29500;
// Zigmond fraud logic
case 0x2D000 : return 0x33602;
case 0x2D044 : return 0x33654;
case 0x2D0B2 : return 0x336d2;
case 0x2D0D6 : return 0x336f6;
case 0x2D152 : return 0x337c2;
case 0x2D1A4 : return 0x33818;
case 0x2D20A : return 0x338a2;
case 0x2D27C : return 0x33952;
case 0x2D2EC : return 0x33a06;
case 0x2D336 : return 0x33a56;
case 0x2D3E0 : return 0x33b24;
case 0x2D456 : return 0x33bd0;
case 0x2D4A8 : return 0x33c36;
case 0x2D504 : return 0x33c9e;
// Zigmond fraud logic 1
case 0x2F422 : return 0x3608a;
// Black dragon on hill
case 0x325EA : return 0x39822;
case 0x3262A : return 0x3986e;
case 0x32686 : return 0x398dc;
case 0x326D8 : return 0x39944;
case 0x3270E : return 0x39982;
case 0x32774 : return 0x39a08;
case 0x32D72 : return 0x3a162;
// Jester in library
case 0x18502 : return 0x1b6d6;
case 0x185E0 : return 0x1b7e2;
case 0x18596 : return 0x1b790;
// Broken black dragon
case 0x40802 : return 0x4a178;
case 0x40852 : return 0x4a1d2;
case 0x40896 : return 0x4a212;
case 0x408C0 : return 0x4a252;
case 0x4092A : return 0x4a310;
// Dodo under attack
case 0x3353A : return 0x3aa2a;
case 0x335AC : return 0x3aaae;
case 0x335F8 : return 0x3ab02;
case 0x33660 : return 0x3ab9c;
case 0x336DE : return 0x3ac46;
case 0x3375C : return 0x3acf0;
// Forest without dodo
case 0x33EA0 : return 0x3b63a;
case 0x33EFC : return 0x3b6b2;
case 0x33F34 : return 0x3b6e8;
case 0x34000 : return 0x3b76a;
case 0x34074 : return 0x3b7e2;
// Angry villagers
case 0x35946 : return 0x3d476;
case 0x359BC : return 0x3d4fa;
case 0x35A38 : return 0x3d570;
case 0x35ABC : return 0x3d64e;
case 0x35B28 : return 0x3d6cc;
case 0x35B9C : return 0x3d71a;
case 0x35C10 : return 0x3d79e;
case 0x35C80 : return 0x3d81e;
case 0x35CFA : return 0x3d8be;
case 0x35D64 : return 0x3d94c;
// Flame bedroom escape
case 0x10458 : return 0x12598;
case 0x104A0 : return 0x125f4;
case 0x10500 : return 0x12664;
case 0x10550 : return 0x12692;
case 0x10578 : return 0x126d4;
// Lady of the lake captured
case 0x490C8 : return 0x53ef8;
case 0x490FC : return 0x53f42;
case 0x4913A : return 0x54000;
// Men in mines
case 0x4590A : return 0x50000;
case 0x45994 : return 0x500be;
case 0x459F4 : return 0x50142;
case 0x45A60 : return 0x501a0;
// Moat drained
case 0x3C97A : return 0x45826;
case 0x3C9AC : return 0x45862;
case 0x3C9F8 : return 0x458c0;
case 0x3CA48 : return 0x4595e;
// Monks at bar
case 0x37800 : return 0x3f7d4;
case 0x37854 : return 0x3f84e;
case 0x378CA : return 0x3f8b2;
case 0x39152 : return 0x4153a;
case 0x3919A : return 0x4157e;
case 0x3922C : return 0x41616;
case 0x38F2A : return 0x41388;
case 0x39000 : return 0x413f4;
case 0x39084 : return 0x4147e;
case 0x390E8 : return 0x414d4;
case 0x38C68 : return 0x41000;
case 0x38CE2 : return 0x41098;
case 0x38D4E : return 0x41126;
case 0x38DC2 : return 0x411b2;
case 0x38E0C : return 0x41218;
case 0x38E5C : return 0x41278;
case 0x38ED0 : return 0x412fa;
default: break;
}
warning("Unhandled textID 0x%x", textId);

View File

@ -255,14 +255,14 @@ void SpecialOpcodes::spcDancingMiniGame() {
}
void SpecialOpcodes::spcCastleGardenLogic() {
sceneUpdater.textTbl[0][0] = 0x22660;
sceneUpdater.textTbl[0][1] = 0x226CA;
sceneUpdater.textTbl[1][0] = 0x22738;
sceneUpdater.textTbl[1][1] = 0x22790;
sceneUpdater.textTbl[2][0] = 0x227E8;
sceneUpdater.textTbl[2][1] = 0x2283C;
sceneUpdater.textTbl[3][0] = 0x228A0;
sceneUpdater.textTbl[3][1] = 0x228EC;
sceneUpdater.textTbl[0][0] = _vm->getDialogTextId(0x22660);
sceneUpdater.textTbl[0][1] = _vm->getDialogTextId(0x226CA);
sceneUpdater.textTbl[1][0] = _vm->getDialogTextId(0x22738);
sceneUpdater.textTbl[1][1] = _vm->getDialogTextId(0x22790);
sceneUpdater.textTbl[2][0] = _vm->getDialogTextId(0x227E8);
sceneUpdater.textTbl[2][1] = _vm->getDialogTextId(0x2283C);
sceneUpdater.textTbl[3][0] = _vm->getDialogTextId(0x228A0);
sceneUpdater.textTbl[3][1] = _vm->getDialogTextId(0x228EC);
if (_vm->getCurrentSceneId() == 0x1a) {
sceneUpdater.sequenceIDTbl[0][0] = 1;
sceneUpdater.sequenceIDTbl[1][0] = 1;
@ -374,28 +374,28 @@ void SpecialOpcodes::spcSetEngineFlag8() {
}
void SpecialOpcodes::spcKnightPoolReflectionLogic() {
sceneUpdater.textTbl[0][0] = 0x23E90;
sceneUpdater.textTbl[0][1] = 0x23EE6;
sceneUpdater.textTbl[0][2] = 0x23F0C;
sceneUpdater.textTbl[0][3] = 0x23F86;
sceneUpdater.textTbl[1][0] = 0x24000;
sceneUpdater.textTbl[1][1] = 0x2406A;
sceneUpdater.textTbl[2][0] = 0x240C2;
sceneUpdater.textTbl[2][1] = 0x2411E;
sceneUpdater.textTbl[2][2] = 0x24158;
sceneUpdater.textTbl[2][3] = 0x241BC;
sceneUpdater.textTbl[2][4] = 0x241EE;
sceneUpdater.textTbl[3][0] = 0x24240;
sceneUpdater.textTbl[3][1] = 0x24286;
sceneUpdater.textTbl[3][2] = 0x242B0;
sceneUpdater.textTbl[3][3] = 0x2431C;
sceneUpdater.textTbl[4][0] = 0x2437C;
sceneUpdater.textTbl[4][1] = 0x243B2;
sceneUpdater.textTbl[4][2] = 0x2440A;
sceneUpdater.textTbl[4][3] = 0x24432;
sceneUpdater.textTbl[5][0] = 0x24480;
sceneUpdater.textTbl[5][1] = 0x244EE;
sceneUpdater.textTbl[5][2] = 0x2453C;
sceneUpdater.textTbl[0][0] = _vm->getDialogTextId(0x23E90);
sceneUpdater.textTbl[0][1] = _vm->getDialogTextId(0x23EE6);
sceneUpdater.textTbl[0][2] = _vm->getDialogTextId(0x23F0C);
sceneUpdater.textTbl[0][3] = _vm->getDialogTextId(0x23F86);
sceneUpdater.textTbl[1][0] = _vm->getDialogTextId(0x24000);
sceneUpdater.textTbl[1][1] = _vm->getDialogTextId(0x2406A);
sceneUpdater.textTbl[2][0] = _vm->getDialogTextId(0x240C2);
sceneUpdater.textTbl[2][1] = _vm->getDialogTextId(0x2411E);
sceneUpdater.textTbl[2][2] = _vm->getDialogTextId(0x24158);
sceneUpdater.textTbl[2][3] = _vm->getDialogTextId(0x241BC);
sceneUpdater.textTbl[2][4] = _vm->getDialogTextId(0x241EE);
sceneUpdater.textTbl[3][0] = _vm->getDialogTextId(0x24240);
sceneUpdater.textTbl[3][1] = _vm->getDialogTextId(0x24286);
sceneUpdater.textTbl[3][2] = _vm->getDialogTextId(0x242B0);
sceneUpdater.textTbl[3][3] = _vm->getDialogTextId(0x2431C);
sceneUpdater.textTbl[4][0] = _vm->getDialogTextId(0x2437C);
sceneUpdater.textTbl[4][1] = _vm->getDialogTextId(0x243B2);
sceneUpdater.textTbl[4][2] = _vm->getDialogTextId(0x2440A);
sceneUpdater.textTbl[4][3] = _vm->getDialogTextId(0x24432);
sceneUpdater.textTbl[5][0] = _vm->getDialogTextId(0x24480);
sceneUpdater.textTbl[5][1] = _vm->getDialogTextId(0x244EE);
sceneUpdater.textTbl[5][2] = _vm->getDialogTextId(0x2453C);
sceneUpdater.iniIDTbl[0][0] = 0x155;
sceneUpdater.iniIDTbl[0][1] = 0x14B;
@ -635,16 +635,16 @@ void SpecialOpcodes::spcNoop1() {
}
void SpecialOpcodes::spcTownAngryVillagersSceneLogic() {
sceneUpdater.textTbl[0][0] = 0x35946;
sceneUpdater.textTbl[0][1] = 0x359BC;
sceneUpdater.textTbl[1][0] = 0x35A38;
sceneUpdater.textTbl[1][1] = 0x35ABC;
sceneUpdater.textTbl[2][0] = 0x35B28;
sceneUpdater.textTbl[2][1] = 0x35B9C;
sceneUpdater.textTbl[3][0] = 0x35C10;
sceneUpdater.textTbl[3][1] = 0x35C80;
sceneUpdater.textTbl[4][0] = 0x35CFA;
sceneUpdater.textTbl[4][1] = 0x35D64;
sceneUpdater.textTbl[0][0] = _vm->getDialogTextId(0x35946);
sceneUpdater.textTbl[0][1] = _vm->getDialogTextId(0x359BC);
sceneUpdater.textTbl[1][0] = _vm->getDialogTextId(0x35A38);
sceneUpdater.textTbl[1][1] = _vm->getDialogTextId(0x35ABC);
sceneUpdater.textTbl[2][0] = _vm->getDialogTextId(0x35B28);
sceneUpdater.textTbl[2][1] = _vm->getDialogTextId(0x35B9C);
sceneUpdater.textTbl[3][0] = _vm->getDialogTextId(0x35C10);
sceneUpdater.textTbl[3][1] = _vm->getDialogTextId(0x35C80);
sceneUpdater.textTbl[4][0] = _vm->getDialogTextId(0x35CFA);
sceneUpdater.textTbl[4][1] = _vm->getDialogTextId(0x35D64);
sceneUpdater.iniIDTbl[0][0] = 0x1DC;
sceneUpdater.iniIDTbl[0][1] = 0x1DD;
sceneUpdater.iniIDTbl[1][0] = 0x1DC;
@ -728,20 +728,20 @@ void SpecialOpcodes::spcZigmondFraudSceneLogic() {
sceneUpdater.sequenceIDTbl[7][0] = 2;
sceneUpdater.sequenceIDTbl[7][1] = 0xe;
sceneUpdater.textTbl[0][0] = 0x2D000;
sceneUpdater.textTbl[0][1] = 0x2D044;
sceneUpdater.textTbl[1][0] = 0x2D0B2;
sceneUpdater.textTbl[1][1] = 0x2D0D6;
sceneUpdater.textTbl[2][0] = 0x2D152;
sceneUpdater.textTbl[3][0] = 0x2D1A4;
sceneUpdater.textTbl[4][0] = 0x2D20A;
sceneUpdater.textTbl[4][1] = 0x2D27C;
sceneUpdater.textTbl[5][0] = 0x2D2EC;
sceneUpdater.textTbl[5][1] = 0x2D336;
sceneUpdater.textTbl[6][0] = 0x2D3E0;
sceneUpdater.textTbl[6][1] = 0x2D456;
sceneUpdater.textTbl[7][0] = 0x2D4A8;
sceneUpdater.textTbl[7][1] = 0x2D504;
sceneUpdater.textTbl[0][0] = _vm->getDialogTextId(0x2D000);
sceneUpdater.textTbl[0][1] = _vm->getDialogTextId(0x2D044);
sceneUpdater.textTbl[1][0] = _vm->getDialogTextId(0x2D0B2);
sceneUpdater.textTbl[1][1] = _vm->getDialogTextId(0x2D0D6);
sceneUpdater.textTbl[2][0] = _vm->getDialogTextId(0x2D152);
sceneUpdater.textTbl[3][0] = _vm->getDialogTextId(0x2D1A4);
sceneUpdater.textTbl[4][0] = _vm->getDialogTextId(0x2D20A);
sceneUpdater.textTbl[4][1] = _vm->getDialogTextId(0x2D27C);
sceneUpdater.textTbl[5][0] = _vm->getDialogTextId(0x2D2EC);
sceneUpdater.textTbl[5][1] = _vm->getDialogTextId(0x2D336);
sceneUpdater.textTbl[6][0] = _vm->getDialogTextId(0x2D3E0);
sceneUpdater.textTbl[6][1] = _vm->getDialogTextId(0x2D456);
sceneUpdater.textTbl[7][0] = _vm->getDialogTextId(0x2D4A8);
sceneUpdater.textTbl[7][1] = _vm->getDialogTextId(0x2D504);
setupTableBasedSceneUpdateFunction(0x168, 8, 0xb4);
}
@ -750,7 +750,7 @@ void SpecialOpcodes::spcZigmondFraudSceneLogic1() {
sceneUpdater.numSteps[0] = 1;
sceneUpdater.iniIDTbl[0][0] = 0x197;
sceneUpdater.sequenceIDTbl[0][0] = 0x12;
sceneUpdater.textTbl[0][0] = 0x2F422; //TODO this might change between game versions
sceneUpdater.textTbl[0][0] = _vm->getDialogTextId(0x2F422);
setupTableBasedSceneUpdateFunction(300, 1, 0x708);
}
@ -764,11 +764,11 @@ void SpecialOpcodes::spcBrokenBlackDragonSceneLogic() {
sceneUpdater.sequenceIDTbl[2][1] = 2;
sceneUpdater.numSteps[1] = 2;
sceneUpdater.numSteps[2] = 2;
sceneUpdater.textTbl[0][0] = 0x40802;
sceneUpdater.textTbl[1][0] = 0x40852;
sceneUpdater.textTbl[1][1] = 0x40896;
sceneUpdater.textTbl[2][0] = 0x408C0;
sceneUpdater.textTbl[2][1] = 0x4092A;
sceneUpdater.textTbl[0][0] = _vm->getDialogTextId(0x40802);
sceneUpdater.textTbl[1][0] = _vm->getDialogTextId(0x40852);
sceneUpdater.textTbl[1][1] = _vm->getDialogTextId(0x40896);
sceneUpdater.textTbl[2][0] = _vm->getDialogTextId(0x408C0);
sceneUpdater.textTbl[2][1] = _vm->getDialogTextId(0x4092A);
sceneUpdater.iniIDTbl[0][0] = 0x23B;
sceneUpdater.iniIDTbl[1][0] = 0x23B;
sceneUpdater.iniIDTbl[1][1] = 0x231;
@ -786,17 +786,17 @@ void SpecialOpcodes::spcDodoUnderAttackSceneLogic() {
sceneUpdater.sequenceIDTbl[5][0] = 8;
sceneUpdater.numSteps[0] = 1;
sceneUpdater.numSteps[1] = 1;
sceneUpdater.textTbl[0][0] = 0x3353A;
sceneUpdater.textTbl[0][0] = _vm->getDialogTextId(0x3353A);
sceneUpdater.iniIDTbl[0][0] = 0x1C4;
sceneUpdater.textTbl[1][0] = 0x335AC;
sceneUpdater.textTbl[1][0] = _vm->getDialogTextId(0x335AC);
sceneUpdater.iniIDTbl[1][0] = 0x1C4;
sceneUpdater.textTbl[2][0] = 0x335F8;
sceneUpdater.textTbl[2][0] = _vm->getDialogTextId(0x335F8);
sceneUpdater.iniIDTbl[2][0] = 0x1C4;
sceneUpdater.textTbl[3][0] = 0x33660;
sceneUpdater.textTbl[3][0] = _vm->getDialogTextId(0x33660);
sceneUpdater.iniIDTbl[3][0] = 0x1C4;
sceneUpdater.textTbl[4][0] = 0x336DE;
sceneUpdater.textTbl[4][0] = _vm->getDialogTextId(0x336DE);
sceneUpdater.iniIDTbl[4][0] = 0x1C4;
sceneUpdater.textTbl[5][0] = 0x3375C;
sceneUpdater.textTbl[5][0] = _vm->getDialogTextId(0x3375C);
sceneUpdater.iniIDTbl[5][0] = 0x1C4;
sceneUpdater.numSteps[2] = 1;
sceneUpdater.numSteps[3] = 1;
@ -813,15 +813,15 @@ void SpecialOpcodes::spcForestWithoutDodoSceneLogic() {
sceneUpdater.numSteps[0] = 2;
sceneUpdater.numSteps[1] = 3;
sceneUpdater.sequenceIDTbl[1][1] = 5;
sceneUpdater.textTbl[0][0] = 0x33EA0;
sceneUpdater.textTbl[0][0] = _vm->getDialogTextId(0x33EA0);
sceneUpdater.iniIDTbl[0][0] = 0x1C5;
sceneUpdater.textTbl[0][1] = 0x33EFC;
sceneUpdater.textTbl[0][1] = _vm->getDialogTextId(0x33EFC);
sceneUpdater.iniIDTbl[0][1] = 0x1C4;
sceneUpdater.textTbl[1][0] = 0x33F34;
sceneUpdater.textTbl[1][0] = _vm->getDialogTextId(0x33F34);
sceneUpdater.iniIDTbl[1][0] = 0x1C4;
sceneUpdater.textTbl[1][1] = 0x34000;
sceneUpdater.textTbl[1][1] = _vm->getDialogTextId(0x34000);
sceneUpdater.iniIDTbl[1][1] = 0x1C5;
sceneUpdater.textTbl[1][2] = 0x34074;
sceneUpdater.textTbl[1][2] = _vm->getDialogTextId(0x34074);
sceneUpdater.iniIDTbl[1][2] = 0x1C4;
setupTableBasedSceneUpdateFunction(300, 2, 600);
}
@ -835,13 +835,13 @@ void SpecialOpcodes::spcBlackDragonOnHillSceneLogic() {
sceneUpdater.sequenceIDTbl[2][1] = 7;
sceneUpdater.sequenceIDTbl[3][0] = 3;
sceneUpdater.numSteps[0] = 2;
sceneUpdater.textTbl[0][0] = 0x325EA;
sceneUpdater.textTbl[0][1] = 0x3262A;
sceneUpdater.textTbl[1][0] = 0x32686;
sceneUpdater.textTbl[1][1] = 0x326D8;
sceneUpdater.textTbl[2][0] = 0x3270E;
sceneUpdater.textTbl[2][1] = 0x32774;
sceneUpdater.textTbl[3][0] = 0x32D72;
sceneUpdater.textTbl[0][0] = _vm->getDialogTextId(0x325EA);
sceneUpdater.textTbl[0][1] = _vm->getDialogTextId(0x3262A);
sceneUpdater.textTbl[1][0] = _vm->getDialogTextId(0x32686);
sceneUpdater.textTbl[1][1] = _vm->getDialogTextId(0x326D8);
sceneUpdater.textTbl[2][0] = _vm->getDialogTextId(0x3270E);
sceneUpdater.textTbl[2][1] = _vm->getDialogTextId(0x32774);
sceneUpdater.textTbl[3][0] = _vm->getDialogTextId(0x32D72);
sceneUpdater.iniIDTbl[0][0] = 0x1B6;
sceneUpdater.iniIDTbl[0][1] = 0x1B7;
sceneUpdater.iniIDTbl[1][0] = 0x1B6;
@ -1221,9 +1221,9 @@ void SpecialOpcodes::spcJesterInLibrarySceneLogic() {
sceneUpdater.numSteps[0] = 1;
sceneUpdater.numSteps[1] = 1;
sceneUpdater.numSteps[2] = 1;
sceneUpdater.textTbl[0][0] = 0x18502;
sceneUpdater.textTbl[1][0] = 0x185E0;
sceneUpdater.textTbl[2][0] = 0x18596;
sceneUpdater.textTbl[0][0] = _vm->getDialogTextId(0x18502);
sceneUpdater.textTbl[1][0] = _vm->getDialogTextId(0x185E0);
sceneUpdater.textTbl[2][0] = _vm->getDialogTextId(0x18596);
sceneUpdater.iniIDTbl[0][0] = 0xD7;
sceneUpdater.iniIDTbl[1][0] = 0xD7;
sceneUpdater.iniIDTbl[2][0] = 0xD7;
@ -1540,7 +1540,7 @@ void ladyOfTheLakeCapturedUpdateFunction() {
if (!vm->isFlagSet(ENGINE_FLAG_8000)) {
ladyofLakeCountdownTimer--;
if (ladyofLakeCountdownTimer == 0) {
vm->_talk->playDialogAudioDontWait(dialogTbl[ladyOfLakeDialogIndex]);
vm->_talk->playDialogAudioDontWait(vm->getDialogTextId(dialogTbl[ladyOfLakeDialogIndex]));
if (ladyOfLakeDialogIndex == 2) {
ladyOfLakeDialogIndex = 0;
} else {
@ -1590,7 +1590,7 @@ void menInMinesSceneUpdateFunction() {
return;
}
vm->_scriptOpcodes->_specialOpCodes->setSpecialOpCounter(vm->getRand(5) * 0x3c + 0x708);
vm->_talk->playDialogAudioDontWait(sceneUpdateFuncDialogTbl[vm->getRand(4)]);
vm->_talk->playDialogAudioDontWait(vm->getDialogTextId(sceneUpdateFuncDialogTbl[vm->getRand(4)]));
sequenceId = 2;
} else {
if (!vm->_isLoadingDialogAudio) {
@ -1656,7 +1656,7 @@ void monksAtBarSceneUpdateFunction() {
barKeeper->updateSequence(2);
textIndex = sceneUpdateFuncDialogTbl[vm->getRand(3)];
}
vm->_talk->playDialogAudioDontWait(textIndex);
vm->_talk->playDialogAudioDontWait(vm->getDialogTextId(textIndex));
monksAtBarCurrentState = 1;
specialOpCounter = 0;
break;
@ -1677,7 +1677,7 @@ void monksAtBarSceneUpdateFunction() {
} else {
monk2->updateSequence(10);
}
vm->_talk->playDialogAudioDontWait(barKeeperTextIdTbl[randTextId]);
vm->_talk->playDialogAudioDontWait(vm->getDialogTextId(barKeeperTextIdTbl[randTextId]));
monksAtBarCurrentState = 3;
specialOpCounter = 0;
break;
@ -1696,7 +1696,7 @@ void monksAtBarSceneUpdateFunction() {
barKeeper->updateSequence(2);
textIndex = DAT_800832f0[vm->getRand(4)];
}
vm->_talk->playDialogAudioDontWait(textIndex);
vm->_talk->playDialogAudioDontWait(vm->getDialogTextId(textIndex));
monksAtBarCurrentState = 5;
specialOpCounter = 0;
break;
@ -1792,7 +1792,7 @@ void monksAtBarSceneUpdateFunction() {
void flameEscapeSceneUpdateFunction() {
static const uint32 dialogTbl[6] = {
0x10458, 0x104A0, 0x10500, 0x10500, 0x10550, 0x10578 //TODO support multiple languages
0x10458, 0x104A0, 0x10500, 0x10500, 0x10550, 0x10578
};
static bool DAT_800634c0 = false;
DragonsEngine *vm = getEngine();
@ -1810,7 +1810,7 @@ void flameEscapeSceneUpdateFunction() {
if (specialOpCounter == 0) {
if (DAT_800634c0 == 0) {
flame->updateSequence(0x12);
vm->_talk->playDialogAudioDontWait(dialogTbl[vm->getRand(6)]);
vm->_talk->playDialogAudioDontWait(vm->getDialogTextId(dialogTbl[vm->getRand(6)]));
specialOpCounter = 0;
DAT_800634c0 = 1;
} else {
@ -1878,7 +1878,7 @@ void moatDrainedSceneUpdateFunction() {
}
if (moatDrainedUpdateCounter <= 0) {
if (!moatDrainedStatus) {
vm->_talk->playDialogAudioDontWait(moatDrainedTextIdTbl[vm->getRand(4)]);
vm->_talk->playDialogAudioDontWait(vm->getDialogTextId(moatDrainedTextIdTbl[vm->getRand(4)]));
moatDrainedStatus = true;
moatDrainedUpdateCounter = 0x1e;
} else {