mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-22 04:01:23 +00:00
KYRA: (EOB) - start work on CGA and EGA graphics modes
This commit is contained in:
parent
66ba934398
commit
86a817beb5
@ -45,7 +45,7 @@
|
||||
#include <map>
|
||||
|
||||
enum {
|
||||
kKyraDatVersion = 80
|
||||
kKyraDatVersion = 81
|
||||
};
|
||||
|
||||
const ExtractFilename extractFilenames[] = {
|
||||
@ -445,6 +445,21 @@ const ExtractFilename extractFilenames[] = {
|
||||
{ kEoB1BeholderSfx, kTypeRawData, false },
|
||||
{ kEoB1TurnUndeadString, kTypeStringList, true },
|
||||
|
||||
{ kEoB1CgaMappingDefault, kTypeRawData, false },
|
||||
{ kEoB1CgaMappingAlt, kTypeRawData, false },
|
||||
{ kEoB1CgaMappingInv, kTypeRawData, false },
|
||||
{ kEoB1CgaMappingItemsL, kTypeRawData, false },
|
||||
{ kEoB1CgaMappingItemsS, kTypeRawData, false },
|
||||
{ kEoB1CgaMappingThrown, kTypeRawData, false },
|
||||
{ kEoB1CgaMappingIcons, kTypeRawData, false },
|
||||
{ kEoB1CgaMappingDeco, kTypeRawData, false },
|
||||
{ kEoB1CgaLevelMappingIndex, kTypeRawData, false },
|
||||
{ kEoB1CgaMappingLevel0, kTypeRawData, false },
|
||||
{ kEoB1CgaMappingLevel1, kTypeRawData, false },
|
||||
{ kEoB1CgaMappingLevel2, kTypeRawData, false },
|
||||
{ kEoB1CgaMappingLevel3, kTypeRawData, false },
|
||||
{ kEoB1CgaMappingLevel4, kTypeRawData, false },
|
||||
|
||||
{ kEoB1NpcShpData, kTypeRawData, false },
|
||||
{ kEoB1NpcSubShpIndex1, kTypeRawData, false },
|
||||
{ kEoB1NpcSubShpIndex2, kTypeRawData, false },
|
||||
@ -474,50 +489,50 @@ const ExtractFilename extractFilenames[] = {
|
||||
|
||||
{ kEoB2IntroStrings, k2TypeSfxList, true },
|
||||
{ kEoB2IntroCPSFiles, kTypeStringList, true },
|
||||
{ kEoB2IntroSeqData00, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData01, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData02, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData03, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData04, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData05, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData06, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData07, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData08, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData09, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData10, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData11, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData12, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData13, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData14, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData15, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData16, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData17, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData18, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData19, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData20, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData21, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData22, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData23, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData24, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData25, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData26, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData27, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData28, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData29, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData30, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData31, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData32, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData33, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData34, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData35, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData36, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData37, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData38, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData39, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData40, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData41, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData42, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroSeqData43, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData00, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData01, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData02, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData03, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData04, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData05, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData06, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData07, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData08, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData09, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData10, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData11, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData12, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData13, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData14, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData15, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData16, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData17, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData18, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData19, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData20, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData21, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData22, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData23, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData24, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData25, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData26, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData27, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData28, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData29, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData30, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData31, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData32, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData33, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData34, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData35, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData36, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData37, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData38, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData39, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData40, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData41, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData42, kEoB2TypeSeqData, false },
|
||||
{ kEob2IntroAnimData43, kEoB2TypeSeqData, false },
|
||||
{ kEoB2IntroShapes00, kEoB2TypeShapeData, false },
|
||||
{ kEoB2IntroShapes01, kEoB2TypeShapeData, false },
|
||||
{ kEoB2IntroShapes04, kEoB2TypeShapeData, false },
|
||||
@ -526,27 +541,27 @@ const ExtractFilename extractFilenames[] = {
|
||||
{ kEoB2FinaleStrings, k2TypeSfxList, true },
|
||||
{ kEoB2CreditsData, kTypeRawData, true },
|
||||
{ kEoB2FinaleCPSFiles, kTypeStringList, true },
|
||||
{ kEoB2FinaleSeqData00, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData01, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData02, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData03, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData04, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData05, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData06, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData07, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData08, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData09, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData10, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData11, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData12, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData13, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData14, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData15, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData16, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData17, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData18, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData19, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleSeqData20, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData00, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData01, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData02, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData03, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData04, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData05, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData06, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData07, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData08, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData09, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData10, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData11, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData12, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData13, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData14, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData15, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData16, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData17, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData18, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData19, kEoB2TypeSeqData, false },
|
||||
{ kEob2FinaleAnimData20, kEoB2TypeSeqData, false },
|
||||
{ kEoB2FinaleShapes00, kEoB2TypeShapeData, false },
|
||||
{ kEoB2FinaleShapes03, kEoB2TypeShapeData, false },
|
||||
{ kEoB2FinaleShapes07, kEoB2TypeShapeData, false },
|
||||
@ -1756,6 +1771,34 @@ const char *getIdString(const int id) {
|
||||
return "kEoB1BeholderSfx";
|
||||
case kEoB1TurnUndeadString:
|
||||
return "kEoB1TurnUndeadString";
|
||||
case kEoB1CgaMappingDefault:
|
||||
return "kEoB1CgaMappingDefault";
|
||||
case kEoB1CgaMappingAlt:
|
||||
return "kEoB1CgaMappingAlt";
|
||||
case kEoB1CgaMappingInv:
|
||||
return "kEoB1CgaMappingInv";
|
||||
case kEoB1CgaMappingItemsL:
|
||||
return "kEoB1CgaMappingItemsL";
|
||||
case kEoB1CgaMappingItemsS:
|
||||
return "kEoB1CgaMappingItemsS";
|
||||
case kEoB1CgaMappingThrown:
|
||||
return "kEoB1CgaMappingThrown";
|
||||
case kEoB1CgaMappingIcons:
|
||||
return "kEoB1CgaMappingIcons";
|
||||
case kEoB1CgaMappingDeco:
|
||||
return "kEoB1CgaMappingDeco";
|
||||
case kEoB1CgaLevelMappingIndex:
|
||||
return "kEoB1CgaLevelMappingIndex";
|
||||
case kEoB1CgaMappingLevel0:
|
||||
return "kEoB1CgaMappingLevel0";
|
||||
case kEoB1CgaMappingLevel1:
|
||||
return "kEoB1CgaMappingLevel1";
|
||||
case kEoB1CgaMappingLevel2:
|
||||
return "kEoB1CgaMappingLevel2";
|
||||
case kEoB1CgaMappingLevel3:
|
||||
return "kEoB1CgaMappingLevel3";
|
||||
case kEoB1CgaMappingLevel4:
|
||||
return "kEoB1CgaMappingLevel4";
|
||||
case kEoB1NpcShpData:
|
||||
return "kEoB1NpcShpData";
|
||||
case kEoB1NpcSubShpIndex1:
|
||||
@ -1806,94 +1849,94 @@ const char *getIdString(const int id) {
|
||||
return "kEoB2IntroStrings";
|
||||
case kEoB2IntroCPSFiles:
|
||||
return "kEoB2IntroCPSFiles";
|
||||
case kEoB2IntroSeqData00:
|
||||
return "kEoB2IntroSeqData00";
|
||||
case kEoB2IntroSeqData01:
|
||||
return "kEoB2IntroSeqData01";
|
||||
case kEoB2IntroSeqData02:
|
||||
return "kEoB2IntroSeqData02";
|
||||
case kEoB2IntroSeqData03:
|
||||
return "kEoB2IntroSeqData03";
|
||||
case kEoB2IntroSeqData04:
|
||||
return "kEoB2IntroSeqData04";
|
||||
case kEoB2IntroSeqData05:
|
||||
return "kEoB2IntroSeqData05";
|
||||
case kEoB2IntroSeqData06:
|
||||
return "kEoB2IntroSeqData06";
|
||||
case kEoB2IntroSeqData07:
|
||||
return "kEoB2IntroSeqData07";
|
||||
case kEoB2IntroSeqData08:
|
||||
return "kEoB2IntroSeqData08";
|
||||
case kEoB2IntroSeqData09:
|
||||
return "kEoB2IntroSeqData09";
|
||||
case kEoB2IntroSeqData10:
|
||||
return "kEoB2IntroSeqData10";
|
||||
case kEoB2IntroSeqData11:
|
||||
return "kEoB2IntroSeqData11";
|
||||
case kEoB2IntroSeqData12:
|
||||
return "kEoB2IntroSeqData12";
|
||||
case kEoB2IntroSeqData13:
|
||||
return "kEoB2IntroSeqData13";
|
||||
case kEoB2IntroSeqData14:
|
||||
return "kEoB2IntroSeqData14";
|
||||
case kEoB2IntroSeqData15:
|
||||
return "kEoB2IntroSeqData15";
|
||||
case kEoB2IntroSeqData16:
|
||||
return "kEoB2IntroSeqData16";
|
||||
case kEoB2IntroSeqData17:
|
||||
return "kEoB2IntroSeqData17";
|
||||
case kEoB2IntroSeqData18:
|
||||
return "kEoB2IntroSeqData18";
|
||||
case kEoB2IntroSeqData19:
|
||||
return "kEoB2IntroSeqData19";
|
||||
case kEoB2IntroSeqData20:
|
||||
return "kEoB2IntroSeqData20";
|
||||
case kEoB2IntroSeqData21:
|
||||
return "kEoB2IntroSeqData21";
|
||||
case kEoB2IntroSeqData22:
|
||||
return "kEoB2IntroSeqData22";
|
||||
case kEoB2IntroSeqData23:
|
||||
return "kEoB2IntroSeqData23";
|
||||
case kEoB2IntroSeqData24:
|
||||
return "kEoB2IntroSeqData24";
|
||||
case kEoB2IntroSeqData25:
|
||||
return "kEoB2IntroSeqData25";
|
||||
case kEoB2IntroSeqData26:
|
||||
return "kEoB2IntroSeqData26";
|
||||
case kEoB2IntroSeqData27:
|
||||
return "kEoB2IntroSeqData27";
|
||||
case kEoB2IntroSeqData28:
|
||||
return "kEoB2IntroSeqData28";
|
||||
case kEoB2IntroSeqData29:
|
||||
return "kEoB2IntroSeqData29";
|
||||
case kEoB2IntroSeqData30:
|
||||
return "kEoB2IntroSeqData30";
|
||||
case kEoB2IntroSeqData31:
|
||||
return "kEoB2IntroSeqData31";
|
||||
case kEoB2IntroSeqData32:
|
||||
return "kEoB2IntroSeqData32";
|
||||
case kEoB2IntroSeqData33:
|
||||
return "kEoB2IntroSeqData33";
|
||||
case kEoB2IntroSeqData34:
|
||||
return "kEoB2IntroSeqData34";
|
||||
case kEoB2IntroSeqData35:
|
||||
return "kEoB2IntroSeqData35";
|
||||
case kEoB2IntroSeqData36:
|
||||
return "kEoB2IntroSeqData36";
|
||||
case kEoB2IntroSeqData37:
|
||||
return "kEoB2IntroSeqData37";
|
||||
case kEoB2IntroSeqData38:
|
||||
return "kEoB2IntroSeqData38";
|
||||
case kEoB2IntroSeqData39:
|
||||
return "kEoB2IntroSeqData39";
|
||||
case kEoB2IntroSeqData40:
|
||||
return "kEoB2IntroSeqData40";
|
||||
case kEoB2IntroSeqData41:
|
||||
return "kEoB2IntroSeqData41";
|
||||
case kEoB2IntroSeqData42:
|
||||
return "kEoB2IntroSeqData42";
|
||||
case kEoB2IntroSeqData43:
|
||||
return "kEoB2IntroSeqData43";
|
||||
case kEob2IntroAnimData00:
|
||||
return "kEob2IntroAnimData00";
|
||||
case kEob2IntroAnimData01:
|
||||
return "kEob2IntroAnimData01";
|
||||
case kEob2IntroAnimData02:
|
||||
return "kEob2IntroAnimData02";
|
||||
case kEob2IntroAnimData03:
|
||||
return "kEob2IntroAnimData03";
|
||||
case kEob2IntroAnimData04:
|
||||
return "kEob2IntroAnimData04";
|
||||
case kEob2IntroAnimData05:
|
||||
return "kEob2IntroAnimData05";
|
||||
case kEob2IntroAnimData06:
|
||||
return "kEob2IntroAnimData06";
|
||||
case kEob2IntroAnimData07:
|
||||
return "kEob2IntroAnimData07";
|
||||
case kEob2IntroAnimData08:
|
||||
return "kEob2IntroAnimData08";
|
||||
case kEob2IntroAnimData09:
|
||||
return "kEob2IntroAnimData09";
|
||||
case kEob2IntroAnimData10:
|
||||
return "kEob2IntroAnimData10";
|
||||
case kEob2IntroAnimData11:
|
||||
return "kEob2IntroAnimData11";
|
||||
case kEob2IntroAnimData12:
|
||||
return "kEob2IntroAnimData12";
|
||||
case kEob2IntroAnimData13:
|
||||
return "kEob2IntroAnimData13";
|
||||
case kEob2IntroAnimData14:
|
||||
return "kEob2IntroAnimData14";
|
||||
case kEob2IntroAnimData15:
|
||||
return "kEob2IntroAnimData15";
|
||||
case kEob2IntroAnimData16:
|
||||
return "kEob2IntroAnimData16";
|
||||
case kEob2IntroAnimData17:
|
||||
return "kEob2IntroAnimData17";
|
||||
case kEob2IntroAnimData18:
|
||||
return "kEob2IntroAnimData18";
|
||||
case kEob2IntroAnimData19:
|
||||
return "kEob2IntroAnimData19";
|
||||
case kEob2IntroAnimData20:
|
||||
return "kEob2IntroAnimData20";
|
||||
case kEob2IntroAnimData21:
|
||||
return "kEob2IntroAnimData21";
|
||||
case kEob2IntroAnimData22:
|
||||
return "kEob2IntroAnimData22";
|
||||
case kEob2IntroAnimData23:
|
||||
return "kEob2IntroAnimData23";
|
||||
case kEob2IntroAnimData24:
|
||||
return "kEob2IntroAnimData24";
|
||||
case kEob2IntroAnimData25:
|
||||
return "kEob2IntroAnimData25";
|
||||
case kEob2IntroAnimData26:
|
||||
return "kEob2IntroAnimData26";
|
||||
case kEob2IntroAnimData27:
|
||||
return "kEob2IntroAnimData27";
|
||||
case kEob2IntroAnimData28:
|
||||
return "kEob2IntroAnimData28";
|
||||
case kEob2IntroAnimData29:
|
||||
return "kEob2IntroAnimData29";
|
||||
case kEob2IntroAnimData30:
|
||||
return "kEob2IntroAnimData30";
|
||||
case kEob2IntroAnimData31:
|
||||
return "kEob2IntroAnimData31";
|
||||
case kEob2IntroAnimData32:
|
||||
return "kEob2IntroAnimData32";
|
||||
case kEob2IntroAnimData33:
|
||||
return "kEob2IntroAnimData33";
|
||||
case kEob2IntroAnimData34:
|
||||
return "kEob2IntroAnimData34";
|
||||
case kEob2IntroAnimData35:
|
||||
return "kEob2IntroAnimData35";
|
||||
case kEob2IntroAnimData36:
|
||||
return "kEob2IntroAnimData36";
|
||||
case kEob2IntroAnimData37:
|
||||
return "kEob2IntroAnimData37";
|
||||
case kEob2IntroAnimData38:
|
||||
return "kEob2IntroAnimData38";
|
||||
case kEob2IntroAnimData39:
|
||||
return "kEob2IntroAnimData39";
|
||||
case kEob2IntroAnimData40:
|
||||
return "kEob2IntroAnimData40";
|
||||
case kEob2IntroAnimData41:
|
||||
return "kEob2IntroAnimData41";
|
||||
case kEob2IntroAnimData42:
|
||||
return "kEob2IntroAnimData42";
|
||||
case kEob2IntroAnimData43:
|
||||
return "kEob2IntroAnimData43";
|
||||
case kEoB2IntroShapes00:
|
||||
return "kEoB2IntroShapes00";
|
||||
case kEoB2IntroShapes01:
|
||||
@ -1908,48 +1951,48 @@ const char *getIdString(const int id) {
|
||||
return "kEoB2CreditsData";
|
||||
case kEoB2FinaleCPSFiles:
|
||||
return "kEoB2FinaleCPSFiles";
|
||||
case kEoB2FinaleSeqData00:
|
||||
return "kEoB2FinaleSeqData00";
|
||||
case kEoB2FinaleSeqData01:
|
||||
return "kEoB2FinaleSeqData01";
|
||||
case kEoB2FinaleSeqData02:
|
||||
return "kEoB2FinaleSeqData02";
|
||||
case kEoB2FinaleSeqData03:
|
||||
return "kEoB2FinaleSeqData03";
|
||||
case kEoB2FinaleSeqData04:
|
||||
return "kEoB2FinaleSeqData04";
|
||||
case kEoB2FinaleSeqData05:
|
||||
return "kEoB2FinaleSeqData05";
|
||||
case kEoB2FinaleSeqData06:
|
||||
return "kEoB2FinaleSeqData06";
|
||||
case kEoB2FinaleSeqData07:
|
||||
return "kEoB2FinaleSeqData07";
|
||||
case kEoB2FinaleSeqData08:
|
||||
return "kEoB2FinaleSeqData08";
|
||||
case kEoB2FinaleSeqData09:
|
||||
return "kEoB2FinaleSeqData09";
|
||||
case kEoB2FinaleSeqData10:
|
||||
return "kEoB2FinaleSeqData10";
|
||||
case kEoB2FinaleSeqData11:
|
||||
return "kEoB2FinaleSeqData11";
|
||||
case kEoB2FinaleSeqData12:
|
||||
return "kEoB2FinaleSeqData12";
|
||||
case kEoB2FinaleSeqData13:
|
||||
return "kEoB2FinaleSeqData13";
|
||||
case kEoB2FinaleSeqData14:
|
||||
return "kEoB2FinaleSeqData14";
|
||||
case kEoB2FinaleSeqData15:
|
||||
return "kEoB2FinaleSeqData15";
|
||||
case kEoB2FinaleSeqData16:
|
||||
return "kEoB2FinaleSeqData16";
|
||||
case kEoB2FinaleSeqData17:
|
||||
return "kEoB2FinaleSeqData17";
|
||||
case kEoB2FinaleSeqData18:
|
||||
return "kEoB2FinaleSeqData18";
|
||||
case kEoB2FinaleSeqData19:
|
||||
return "kEoB2FinaleSeqData19";
|
||||
case kEoB2FinaleSeqData20:
|
||||
return "kEoB2FinaleSeqData20";
|
||||
case kEob2FinaleAnimData00:
|
||||
return "kEob2FinaleAnimData00";
|
||||
case kEob2FinaleAnimData01:
|
||||
return "kEob2FinaleAnimData01";
|
||||
case kEob2FinaleAnimData02:
|
||||
return "kEob2FinaleAnimData02";
|
||||
case kEob2FinaleAnimData03:
|
||||
return "kEob2FinaleAnimData03";
|
||||
case kEob2FinaleAnimData04:
|
||||
return "kEob2FinaleAnimData04";
|
||||
case kEob2FinaleAnimData05:
|
||||
return "kEob2FinaleAnimData05";
|
||||
case kEob2FinaleAnimData06:
|
||||
return "kEob2FinaleAnimData06";
|
||||
case kEob2FinaleAnimData07:
|
||||
return "kEob2FinaleAnimData07";
|
||||
case kEob2FinaleAnimData08:
|
||||
return "kEob2FinaleAnimData08";
|
||||
case kEob2FinaleAnimData09:
|
||||
return "kEob2FinaleAnimData09";
|
||||
case kEob2FinaleAnimData10:
|
||||
return "kEob2FinaleAnimData10";
|
||||
case kEob2FinaleAnimData11:
|
||||
return "kEob2FinaleAnimData11";
|
||||
case kEob2FinaleAnimData12:
|
||||
return "kEob2FinaleAnimData12";
|
||||
case kEob2FinaleAnimData13:
|
||||
return "kEob2FinaleAnimData13";
|
||||
case kEob2FinaleAnimData14:
|
||||
return "kEob2FinaleAnimData14";
|
||||
case kEob2FinaleAnimData15:
|
||||
return "kEob2FinaleAnimData15";
|
||||
case kEob2FinaleAnimData16:
|
||||
return "kEob2FinaleAnimData16";
|
||||
case kEob2FinaleAnimData17:
|
||||
return "kEob2FinaleAnimData17";
|
||||
case kEob2FinaleAnimData18:
|
||||
return "kEob2FinaleAnimData18";
|
||||
case kEob2FinaleAnimData19:
|
||||
return "kEob2FinaleAnimData19";
|
||||
case kEob2FinaleAnimData20:
|
||||
return "kEob2FinaleAnimData20";
|
||||
case kEoB2FinaleShapes00:
|
||||
return "kEoB2FinaleShapes00";
|
||||
case kEoB2FinaleShapes03:
|
||||
|
@ -446,6 +446,21 @@ enum kExtractID {
|
||||
kEoB1BeholderSfx,
|
||||
kEoB1TurnUndeadString,
|
||||
|
||||
kEoB1CgaMappingDefault,
|
||||
kEoB1CgaMappingAlt,
|
||||
kEoB1CgaMappingInv,
|
||||
kEoB1CgaMappingItemsL,
|
||||
kEoB1CgaMappingItemsS,
|
||||
kEoB1CgaMappingThrown,
|
||||
kEoB1CgaMappingIcons,
|
||||
kEoB1CgaMappingDeco,
|
||||
kEoB1CgaLevelMappingIndex,
|
||||
kEoB1CgaMappingLevel0,
|
||||
kEoB1CgaMappingLevel1,
|
||||
kEoB1CgaMappingLevel2,
|
||||
kEoB1CgaMappingLevel3,
|
||||
kEoB1CgaMappingLevel4,
|
||||
|
||||
kEoB1NpcShpData,
|
||||
kEoB1NpcSubShpIndex1,
|
||||
kEoB1NpcSubShpIndex2,
|
||||
@ -474,50 +489,50 @@ enum kExtractID {
|
||||
|
||||
kEoB2IntroStrings,
|
||||
kEoB2IntroCPSFiles,
|
||||
kEoB2IntroSeqData00,
|
||||
kEoB2IntroSeqData01,
|
||||
kEoB2IntroSeqData02,
|
||||
kEoB2IntroSeqData03,
|
||||
kEoB2IntroSeqData04,
|
||||
kEoB2IntroSeqData05,
|
||||
kEoB2IntroSeqData06,
|
||||
kEoB2IntroSeqData07,
|
||||
kEoB2IntroSeqData08,
|
||||
kEoB2IntroSeqData09,
|
||||
kEoB2IntroSeqData10,
|
||||
kEoB2IntroSeqData11,
|
||||
kEoB2IntroSeqData12,
|
||||
kEoB2IntroSeqData13,
|
||||
kEoB2IntroSeqData14,
|
||||
kEoB2IntroSeqData15,
|
||||
kEoB2IntroSeqData16,
|
||||
kEoB2IntroSeqData17,
|
||||
kEoB2IntroSeqData18,
|
||||
kEoB2IntroSeqData19,
|
||||
kEoB2IntroSeqData20,
|
||||
kEoB2IntroSeqData21,
|
||||
kEoB2IntroSeqData22,
|
||||
kEoB2IntroSeqData23,
|
||||
kEoB2IntroSeqData24,
|
||||
kEoB2IntroSeqData25,
|
||||
kEoB2IntroSeqData26,
|
||||
kEoB2IntroSeqData27,
|
||||
kEoB2IntroSeqData28,
|
||||
kEoB2IntroSeqData29,
|
||||
kEoB2IntroSeqData30,
|
||||
kEoB2IntroSeqData31,
|
||||
kEoB2IntroSeqData32,
|
||||
kEoB2IntroSeqData33,
|
||||
kEoB2IntroSeqData34,
|
||||
kEoB2IntroSeqData35,
|
||||
kEoB2IntroSeqData36,
|
||||
kEoB2IntroSeqData37,
|
||||
kEoB2IntroSeqData38,
|
||||
kEoB2IntroSeqData39,
|
||||
kEoB2IntroSeqData40,
|
||||
kEoB2IntroSeqData41,
|
||||
kEoB2IntroSeqData42,
|
||||
kEoB2IntroSeqData43,
|
||||
kEob2IntroAnimData00,
|
||||
kEob2IntroAnimData01,
|
||||
kEob2IntroAnimData02,
|
||||
kEob2IntroAnimData03,
|
||||
kEob2IntroAnimData04,
|
||||
kEob2IntroAnimData05,
|
||||
kEob2IntroAnimData06,
|
||||
kEob2IntroAnimData07,
|
||||
kEob2IntroAnimData08,
|
||||
kEob2IntroAnimData09,
|
||||
kEob2IntroAnimData10,
|
||||
kEob2IntroAnimData11,
|
||||
kEob2IntroAnimData12,
|
||||
kEob2IntroAnimData13,
|
||||
kEob2IntroAnimData14,
|
||||
kEob2IntroAnimData15,
|
||||
kEob2IntroAnimData16,
|
||||
kEob2IntroAnimData17,
|
||||
kEob2IntroAnimData18,
|
||||
kEob2IntroAnimData19,
|
||||
kEob2IntroAnimData20,
|
||||
kEob2IntroAnimData21,
|
||||
kEob2IntroAnimData22,
|
||||
kEob2IntroAnimData23,
|
||||
kEob2IntroAnimData24,
|
||||
kEob2IntroAnimData25,
|
||||
kEob2IntroAnimData26,
|
||||
kEob2IntroAnimData27,
|
||||
kEob2IntroAnimData28,
|
||||
kEob2IntroAnimData29,
|
||||
kEob2IntroAnimData30,
|
||||
kEob2IntroAnimData31,
|
||||
kEob2IntroAnimData32,
|
||||
kEob2IntroAnimData33,
|
||||
kEob2IntroAnimData34,
|
||||
kEob2IntroAnimData35,
|
||||
kEob2IntroAnimData36,
|
||||
kEob2IntroAnimData37,
|
||||
kEob2IntroAnimData38,
|
||||
kEob2IntroAnimData39,
|
||||
kEob2IntroAnimData40,
|
||||
kEob2IntroAnimData41,
|
||||
kEob2IntroAnimData42,
|
||||
kEob2IntroAnimData43,
|
||||
kEoB2IntroShapes00,
|
||||
kEoB2IntroShapes01,
|
||||
kEoB2IntroShapes04,
|
||||
@ -526,27 +541,27 @@ enum kExtractID {
|
||||
kEoB2FinaleStrings,
|
||||
kEoB2CreditsData,
|
||||
kEoB2FinaleCPSFiles,
|
||||
kEoB2FinaleSeqData00,
|
||||
kEoB2FinaleSeqData01,
|
||||
kEoB2FinaleSeqData02,
|
||||
kEoB2FinaleSeqData03,
|
||||
kEoB2FinaleSeqData04,
|
||||
kEoB2FinaleSeqData05,
|
||||
kEoB2FinaleSeqData06,
|
||||
kEoB2FinaleSeqData07,
|
||||
kEoB2FinaleSeqData08,
|
||||
kEoB2FinaleSeqData09,
|
||||
kEoB2FinaleSeqData10,
|
||||
kEoB2FinaleSeqData11,
|
||||
kEoB2FinaleSeqData12,
|
||||
kEoB2FinaleSeqData13,
|
||||
kEoB2FinaleSeqData14,
|
||||
kEoB2FinaleSeqData15,
|
||||
kEoB2FinaleSeqData16,
|
||||
kEoB2FinaleSeqData17,
|
||||
kEoB2FinaleSeqData18,
|
||||
kEoB2FinaleSeqData19,
|
||||
kEoB2FinaleSeqData20,
|
||||
kEob2FinaleAnimData00,
|
||||
kEob2FinaleAnimData01,
|
||||
kEob2FinaleAnimData02,
|
||||
kEob2FinaleAnimData03,
|
||||
kEob2FinaleAnimData04,
|
||||
kEob2FinaleAnimData05,
|
||||
kEob2FinaleAnimData06,
|
||||
kEob2FinaleAnimData07,
|
||||
kEob2FinaleAnimData08,
|
||||
kEob2FinaleAnimData09,
|
||||
kEob2FinaleAnimData10,
|
||||
kEob2FinaleAnimData11,
|
||||
kEob2FinaleAnimData12,
|
||||
kEob2FinaleAnimData13,
|
||||
kEob2FinaleAnimData14,
|
||||
kEob2FinaleAnimData15,
|
||||
kEob2FinaleAnimData16,
|
||||
kEob2FinaleAnimData17,
|
||||
kEob2FinaleAnimData18,
|
||||
kEob2FinaleAnimData19,
|
||||
kEob2FinaleAnimData20,
|
||||
kEoB2FinaleShapes00,
|
||||
kEoB2FinaleShapes03,
|
||||
kEoB2FinaleShapes07,
|
||||
|
@ -1089,6 +1089,21 @@ const int eob1FloppyNeed[] = {
|
||||
kEoB1BeholderSfx,
|
||||
kEoB1TurnUndeadString,
|
||||
|
||||
kEoB1CgaMappingDefault,
|
||||
kEoB1CgaMappingAlt,
|
||||
kEoB1CgaMappingInv,
|
||||
kEoB1CgaMappingItemsL,
|
||||
kEoB1CgaMappingItemsS,
|
||||
kEoB1CgaMappingThrown,
|
||||
kEoB1CgaMappingIcons,
|
||||
kEoB1CgaMappingDeco,
|
||||
kEoB1CgaLevelMappingIndex,
|
||||
kEoB1CgaMappingLevel0,
|
||||
kEoB1CgaMappingLevel1,
|
||||
kEoB1CgaMappingLevel2,
|
||||
kEoB1CgaMappingLevel3,
|
||||
kEoB1CgaMappingLevel4,
|
||||
|
||||
kEoB1NpcShpData,
|
||||
kEoB1NpcSubShpIndex1,
|
||||
kEoB1NpcSubShpIndex2,
|
||||
@ -1497,50 +1512,50 @@ const int eob2FloppyNeed[] = {
|
||||
|
||||
kEoB2IntroStrings,
|
||||
kEoB2IntroCPSFiles,
|
||||
kEoB2IntroSeqData00,
|
||||
kEoB2IntroSeqData01,
|
||||
kEoB2IntroSeqData02,
|
||||
kEoB2IntroSeqData03,
|
||||
kEoB2IntroSeqData04,
|
||||
kEoB2IntroSeqData05,
|
||||
kEoB2IntroSeqData06,
|
||||
kEoB2IntroSeqData07,
|
||||
kEoB2IntroSeqData08,
|
||||
kEoB2IntroSeqData09,
|
||||
kEoB2IntroSeqData10,
|
||||
kEoB2IntroSeqData11,
|
||||
kEoB2IntroSeqData12,
|
||||
kEoB2IntroSeqData13,
|
||||
kEoB2IntroSeqData14,
|
||||
kEoB2IntroSeqData15,
|
||||
kEoB2IntroSeqData16,
|
||||
kEoB2IntroSeqData17,
|
||||
kEoB2IntroSeqData18,
|
||||
kEoB2IntroSeqData19,
|
||||
kEoB2IntroSeqData20,
|
||||
kEoB2IntroSeqData21,
|
||||
kEoB2IntroSeqData22,
|
||||
kEoB2IntroSeqData23,
|
||||
kEoB2IntroSeqData24,
|
||||
kEoB2IntroSeqData25,
|
||||
kEoB2IntroSeqData26,
|
||||
kEoB2IntroSeqData27,
|
||||
kEoB2IntroSeqData28,
|
||||
kEoB2IntroSeqData29,
|
||||
kEoB2IntroSeqData30,
|
||||
kEoB2IntroSeqData31,
|
||||
kEoB2IntroSeqData32,
|
||||
kEoB2IntroSeqData33,
|
||||
kEoB2IntroSeqData34,
|
||||
kEoB2IntroSeqData35,
|
||||
kEoB2IntroSeqData36,
|
||||
kEoB2IntroSeqData37,
|
||||
kEoB2IntroSeqData38,
|
||||
kEoB2IntroSeqData39,
|
||||
kEoB2IntroSeqData40,
|
||||
kEoB2IntroSeqData41,
|
||||
kEoB2IntroSeqData42,
|
||||
kEoB2IntroSeqData43,
|
||||
kEob2IntroAnimData00,
|
||||
kEob2IntroAnimData01,
|
||||
kEob2IntroAnimData02,
|
||||
kEob2IntroAnimData03,
|
||||
kEob2IntroAnimData04,
|
||||
kEob2IntroAnimData05,
|
||||
kEob2IntroAnimData06,
|
||||
kEob2IntroAnimData07,
|
||||
kEob2IntroAnimData08,
|
||||
kEob2IntroAnimData09,
|
||||
kEob2IntroAnimData10,
|
||||
kEob2IntroAnimData11,
|
||||
kEob2IntroAnimData12,
|
||||
kEob2IntroAnimData13,
|
||||
kEob2IntroAnimData14,
|
||||
kEob2IntroAnimData15,
|
||||
kEob2IntroAnimData16,
|
||||
kEob2IntroAnimData17,
|
||||
kEob2IntroAnimData18,
|
||||
kEob2IntroAnimData19,
|
||||
kEob2IntroAnimData20,
|
||||
kEob2IntroAnimData21,
|
||||
kEob2IntroAnimData22,
|
||||
kEob2IntroAnimData23,
|
||||
kEob2IntroAnimData24,
|
||||
kEob2IntroAnimData25,
|
||||
kEob2IntroAnimData26,
|
||||
kEob2IntroAnimData27,
|
||||
kEob2IntroAnimData28,
|
||||
kEob2IntroAnimData29,
|
||||
kEob2IntroAnimData30,
|
||||
kEob2IntroAnimData31,
|
||||
kEob2IntroAnimData32,
|
||||
kEob2IntroAnimData33,
|
||||
kEob2IntroAnimData34,
|
||||
kEob2IntroAnimData35,
|
||||
kEob2IntroAnimData36,
|
||||
kEob2IntroAnimData37,
|
||||
kEob2IntroAnimData38,
|
||||
kEob2IntroAnimData39,
|
||||
kEob2IntroAnimData40,
|
||||
kEob2IntroAnimData41,
|
||||
kEob2IntroAnimData42,
|
||||
kEob2IntroAnimData43,
|
||||
|
||||
kEoB2IntroShapes00,
|
||||
kEoB2IntroShapes01,
|
||||
@ -1550,27 +1565,27 @@ const int eob2FloppyNeed[] = {
|
||||
kEoB2FinaleStrings,
|
||||
kEoB2CreditsData,
|
||||
kEoB2FinaleCPSFiles,
|
||||
kEoB2FinaleSeqData00,
|
||||
kEoB2FinaleSeqData01,
|
||||
kEoB2FinaleSeqData02,
|
||||
kEoB2FinaleSeqData03,
|
||||
kEoB2FinaleSeqData04,
|
||||
kEoB2FinaleSeqData05,
|
||||
kEoB2FinaleSeqData06,
|
||||
kEoB2FinaleSeqData07,
|
||||
kEoB2FinaleSeqData08,
|
||||
kEoB2FinaleSeqData09,
|
||||
kEoB2FinaleSeqData10,
|
||||
kEoB2FinaleSeqData11,
|
||||
kEoB2FinaleSeqData12,
|
||||
kEoB2FinaleSeqData13,
|
||||
kEoB2FinaleSeqData14,
|
||||
kEoB2FinaleSeqData15,
|
||||
kEoB2FinaleSeqData16,
|
||||
kEoB2FinaleSeqData17,
|
||||
kEoB2FinaleSeqData18,
|
||||
kEoB2FinaleSeqData19,
|
||||
kEoB2FinaleSeqData20,
|
||||
kEob2FinaleAnimData00,
|
||||
kEob2FinaleAnimData01,
|
||||
kEob2FinaleAnimData02,
|
||||
kEob2FinaleAnimData03,
|
||||
kEob2FinaleAnimData04,
|
||||
kEob2FinaleAnimData05,
|
||||
kEob2FinaleAnimData06,
|
||||
kEob2FinaleAnimData07,
|
||||
kEob2FinaleAnimData08,
|
||||
kEob2FinaleAnimData09,
|
||||
kEob2FinaleAnimData10,
|
||||
kEob2FinaleAnimData11,
|
||||
kEob2FinaleAnimData12,
|
||||
kEob2FinaleAnimData13,
|
||||
kEob2FinaleAnimData14,
|
||||
kEob2FinaleAnimData15,
|
||||
kEob2FinaleAnimData16,
|
||||
kEob2FinaleAnimData17,
|
||||
kEob2FinaleAnimData18,
|
||||
kEob2FinaleAnimData19,
|
||||
kEob2FinaleAnimData20,
|
||||
kEoB2FinaleShapes00,
|
||||
kEoB2FinaleShapes03,
|
||||
kEoB2FinaleShapes07,
|
||||
|
@ -2548,6 +2548,76 @@ const ExtractEntrySearchData kEoB1TurnUndeadStringProvider[] = {
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB1CgaMappingDefaultProvider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x00000020, 0x0000002C, { { 0x7E, 0x1C, 0x75, 0xC3, 0x8E, 0xF7, 0x56, 0x62, 0x9B, 0xB6, 0xF4, 0x3A, 0x21, 0x03, 0xFA, 0xF5 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB1CgaMappingAltProvider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x00000020, 0x00000030, { { 0x2A, 0x8C, 0xF6, 0xD7, 0x87, 0xFA, 0x7B, 0x22, 0x28, 0x2A, 0x50, 0xE2, 0x26, 0x7B, 0xC7, 0x44 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB1CgaMappingInvProvider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x00000020, 0x0000002E, { { 0x3A, 0x06, 0xBF, 0x0C, 0xD4, 0xD0, 0x15, 0x1F, 0xB5, 0xC5, 0x49, 0xFD, 0x21, 0xE1, 0xE1, 0x66 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB1CgaMappingItemsLProvider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x00000020, 0x0000002A, { { 0xE0, 0x85, 0xA1, 0x3A, 0x3D, 0xC9, 0xF8, 0x56, 0x17, 0x0A, 0xD8, 0x44, 0x56, 0xDF, 0x3C, 0x57 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB1CgaMappingItemsSProvider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x00000020, 0x00000036, { { 0x2E, 0x6F, 0xD4, 0x2E, 0xB2, 0x84, 0xB2, 0xC3, 0x36, 0x88, 0x80, 0xC1, 0x67, 0x5A, 0xEB, 0x60 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB1CgaMappingThrownProvider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x00000020, 0x00000030, { { 0x0C, 0x3D, 0x1E, 0xAB, 0x0B, 0x25, 0x9F, 0x78, 0xE6, 0xB1, 0x52, 0x79, 0x0F, 0x96, 0x33, 0x97 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB1CgaMappingIconsProvider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x00000020, 0x00000039, { { 0x99, 0x50, 0x1A, 0xE1, 0xF3, 0x52, 0xC3, 0x5A, 0x4E, 0xBD, 0x03, 0x74, 0x2C, 0x39, 0xCA, 0x71 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB1CgaMappingDecoProvider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x00000020, 0x00000035, { { 0xA5, 0x17, 0xED, 0xEE, 0x02, 0x87, 0x8C, 0x9D, 0xAC, 0x96, 0xC6, 0x07, 0xB0, 0x8E, 0x5D, 0xE3 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB1CgaLevelMappingIndexProvider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x0000000C, 0x00000013, { { 0x48, 0x5D, 0xDF, 0x8F, 0xFD, 0x5D, 0xA0, 0xB0, 0x00, 0xD8, 0xB3, 0x09, 0x90, 0x5D, 0x13, 0x3F } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB1CgaMappingLevel0Provider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x00000020, 0x00000035, { { 0xC2, 0x4D, 0x2F, 0x0A, 0xB0, 0x3E, 0x46, 0x80, 0xD1, 0xEE, 0x32, 0x5F, 0xBA, 0x5C, 0xCC, 0x7A } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB1CgaMappingLevel1Provider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x00000020, 0x00000030, { { 0x94, 0x8E, 0xAE, 0x12, 0xB5, 0x68, 0xCD, 0x43, 0x95, 0xD2, 0x01, 0x21, 0x0C, 0xA1, 0x34, 0xF5 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB1CgaMappingLevel2Provider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x00000020, 0x00000030, { { 0x20, 0x6F, 0x9F, 0x57, 0x0C, 0xFD, 0xDA, 0x5C, 0xA0, 0x1D, 0x28, 0xB4, 0x88, 0x24, 0x68, 0x68 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB1CgaMappingLevel3Provider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x00000020, 0x00000030, { { 0x44, 0x95, 0x9A, 0x69, 0x70, 0xB2, 0x63, 0xB6, 0xFB, 0xD0, 0xFF, 0xD9, 0xF0, 0xCD, 0xD4, 0x75 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB1CgaMappingLevel4Provider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x00000020, 0x00000031, { { 0xEA, 0xC4, 0x01, 0xC0, 0x21, 0xFE, 0x66, 0xDD, 0xD4, 0x83, 0xC1, 0x2C, 0x09, 0xD3, 0xD0, 0x97 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB1NpcShpDataProvider[] = {
|
||||
{ UNK_LANG, kPlatformPC, { 0x0000004C, 0x00000A42, { { 0x70, 0x21, 0x85, 0x8C, 0xD4, 0x04, 0xAA, 0x20, 0x1D, 0x0E, 0x9D, 0xB7, 0x74, 0x58, 0xCC, 0x0C } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
@ -2701,222 +2771,222 @@ const ExtractEntrySearchData kEoB2IntroCPSFilesProvider[] = {
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData00Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData00Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000037, 0x000003E1, { { 0x38, 0xC2, 0x0F, 0xE1, 0x43, 0x6A, 0xE8, 0x7C, 0x82, 0x65, 0x9B, 0x4A, 0x9F, 0x83, 0xCD, 0xC8 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData01Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData01Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000037, 0x000003A3, { { 0x84, 0x44, 0xF4, 0x46, 0x4E, 0x2B, 0xD7, 0xC6, 0xAD, 0x14, 0xF1, 0x9E, 0x8A, 0xBE, 0x7B, 0x42 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData02Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData02Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000037, 0x00000446, { { 0x0C, 0xCA, 0x41, 0x0C, 0x89, 0x59, 0xD5, 0x28, 0x9A, 0xDC, 0x51, 0x1C, 0x0B, 0x8C, 0xD2, 0xDB } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData03Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData03Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x0000010E, { { 0xAB, 0x48, 0x64, 0x02, 0xB3, 0xF3, 0x6C, 0x82, 0x9D, 0x37, 0x5F, 0x52, 0x0F, 0x5B, 0xDF, 0x96 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData04Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData04Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000021, 0x00000149, { { 0x3B, 0xAC, 0x14, 0x51, 0xDF, 0x5D, 0x22, 0x15, 0x46, 0x4E, 0xCD, 0xF3, 0xD4, 0x61, 0x29, 0x4A } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData05Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData05Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x0000010E, { { 0x28, 0x29, 0x5F, 0x31, 0x23, 0x53, 0xBA, 0xD7, 0x24, 0xB9, 0x21, 0x70, 0x84, 0x8A, 0x1C, 0x2E } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData06Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData06Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x000000B0, 0x00001365, { { 0x91, 0x28, 0x2F, 0x10, 0x45, 0x4D, 0xCF, 0x3E, 0x70, 0x1E, 0xD4, 0xBA, 0x0E, 0x70, 0xDE, 0xD0 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData07Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData07Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000037, 0x000003C4, { { 0x8C, 0x72, 0xDE, 0x4F, 0x92, 0x52, 0x0A, 0xED, 0xF4, 0x79, 0xD6, 0x3D, 0x8F, 0x59, 0x9D, 0x69 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData08Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData08Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000042, 0x00000442, { { 0xD2, 0x91, 0x51, 0xEB, 0x91, 0x13, 0x43, 0xCE, 0x7E, 0x60, 0xB8, 0xFF, 0xA7, 0xE2, 0x4C, 0x11 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData09Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData09Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x000004BC, { { 0xD6, 0xC7, 0x44, 0x2E, 0xE7, 0x2A, 0x44, 0x09, 0x39, 0xC3, 0xD3, 0xA8, 0x02, 0xC8, 0xA0, 0x19 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData10Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData10Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000006E, 0x00000C12, { { 0x91, 0xDB, 0x41, 0x7A, 0x4F, 0x7C, 0x7B, 0x83, 0x32, 0x13, 0x68, 0xF6, 0x58, 0x79, 0xDA, 0x99 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData11Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData11Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x000000B0, 0x0000073C, { { 0x17, 0x1F, 0x4D, 0x05, 0x3F, 0x14, 0x2E, 0x77, 0xD3, 0xDB, 0x78, 0x67, 0xBB, 0x18, 0xDC, 0x85 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData12Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData12Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000021, 0x00000228, { { 0xC9, 0x50, 0x68, 0x51, 0xD0, 0xC1, 0x5D, 0xD4, 0xFF, 0x08, 0x28, 0xDE, 0xC4, 0x41, 0x8C, 0xDB } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData13Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData13Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x00000340, { { 0x03, 0xCA, 0x5D, 0xD1, 0x15, 0xFA, 0x60, 0xD7, 0x70, 0x64, 0x3D, 0x44, 0x08, 0xB8, 0xDB, 0xAD } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData14Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData14Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000042, 0x000007C0, { { 0x82, 0xA9, 0x0B, 0x90, 0x9D, 0x65, 0x1E, 0xC7, 0x03, 0x5E, 0xB7, 0xDF, 0x6E, 0x1F, 0xED, 0xD6 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData15Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData15Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x00000504, { { 0xA7, 0x91, 0x4F, 0xAD, 0xB1, 0x77, 0x80, 0x3A, 0xC7, 0xDE, 0x35, 0x7A, 0x96, 0x16, 0xD2, 0x13 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData16Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData16Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000079, 0x00000B3D, { { 0xCC, 0x63, 0x5A, 0x11, 0xEE, 0x8A, 0xAE, 0x3A, 0x14, 0xC3, 0xBC, 0xDA, 0xAF, 0x1D, 0xD4, 0x2C } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData17Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData17Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000084, 0x00000911, { { 0x09, 0x1C, 0x4B, 0xD9, 0x0B, 0x2A, 0xD6, 0xC1, 0xE3, 0x8D, 0xFE, 0x43, 0x8F, 0x2E, 0x21, 0x51 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData18Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData18Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000058, 0x000008FA, { { 0xFE, 0x58, 0xD9, 0x67, 0x78, 0x97, 0xE2, 0xCD, 0x82, 0xB8, 0xC9, 0xC0, 0x1F, 0xCA, 0x7C, 0xF5 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData19Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData19Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000009A, 0x00000D6B, { { 0xA1, 0xDD, 0x7B, 0x8B, 0x25, 0xA5, 0x96, 0x5A, 0x33, 0x5E, 0x80, 0x5F, 0xA5, 0xBB, 0xAC, 0x11 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData20Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData20Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000009A, 0x00000D6C, { { 0x19, 0xF9, 0x93, 0x1D, 0x01, 0xEE, 0x7C, 0x8B, 0x6C, 0x3E, 0x35, 0x2C, 0x5C, 0x88, 0xCD, 0xB6 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData21Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData21Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000009A, 0x00000D83, { { 0xCB, 0x4F, 0x21, 0x29, 0x63, 0x5B, 0x8C, 0xF2, 0xBA, 0x03, 0x49, 0xD1, 0xAF, 0x22, 0xB0, 0xD5 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData22Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData22Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000200, { { 0x66, 0xEE, 0x45, 0xB1, 0x87, 0x66, 0xC4, 0x55, 0xCE, 0x60, 0x0C, 0x5B, 0xBB, 0x3C, 0x7D, 0x33 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData23Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData23Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000016, 0x0000020D, { { 0xC4, 0x49, 0xE2, 0x5B, 0x2E, 0x17, 0x68, 0xC4, 0xBA, 0x20, 0xEC, 0xB1, 0xEB, 0x1A, 0xFB, 0xE0 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData24Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData24Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000214, { { 0xF1, 0x46, 0x82, 0xEF, 0x6D, 0xCA, 0x68, 0xA2, 0xF3, 0x55, 0x63, 0xD2, 0x13, 0x25, 0x19, 0xF7 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData25Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData25Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000256, { { 0x8F, 0xB9, 0xCD, 0xB8, 0x58, 0xCB, 0x90, 0x03, 0xFC, 0xB6, 0x95, 0x6F, 0x52, 0xF8, 0x7D, 0x19 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData26Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData26Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000263, { { 0x7A, 0x37, 0x07, 0xC4, 0x67, 0x72, 0x1F, 0xCB, 0xAC, 0x98, 0x46, 0x9A, 0xF3, 0x5F, 0xBA, 0x78 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData27Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData27Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000016, 0x0000026A, { { 0x80, 0x11, 0xEE, 0x44, 0xDA, 0xE1, 0x26, 0x1F, 0x14, 0x7E, 0x93, 0x99, 0x44, 0x44, 0x9F, 0x85 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData28Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData28Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000016, 0x000001F6, { { 0x45, 0xA1, 0xA5, 0xEC, 0x85, 0x06, 0xE2, 0x91, 0x28, 0xE0, 0xBB, 0x53, 0x74, 0x44, 0xD9, 0xA6 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData29Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData29Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000016, 0x000001F9, { { 0x3F, 0x03, 0x2F, 0x8B, 0xFB, 0x6A, 0x97, 0x05, 0xED, 0xBB, 0xD6, 0xA0, 0xF5, 0x7A, 0x6D, 0x08 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData30Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData30Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000204, { { 0xA1, 0x37, 0x57, 0xC3, 0x72, 0x08, 0x98, 0xA6, 0xF4, 0x5E, 0x58, 0x9E, 0xF3, 0x11, 0x88, 0x1E } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData31Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData31Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000212, { { 0x19, 0xCC, 0x6F, 0xA8, 0x29, 0xB5, 0x3B, 0x15, 0x2F, 0x2C, 0x43, 0xED, 0x7A, 0xF5, 0xC5, 0x69 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData32Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData32Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000037, 0x000006C9, { { 0xBF, 0x65, 0xBA, 0x3F, 0x44, 0xEE, 0xB0, 0x5C, 0x8B, 0xBD, 0x15, 0xAB, 0x03, 0xD1, 0x55, 0x21 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData33Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData33Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000009A, 0x00001585, { { 0xB5, 0x44, 0x06, 0xC9, 0xE8, 0x27, 0x75, 0x6E, 0x63, 0x77, 0xE9, 0xA9, 0x68, 0x73, 0xF5, 0x78 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData34Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData34Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000058, 0x00000B43, { { 0x52, 0xB4, 0x1E, 0x14, 0x88, 0xBD, 0x8A, 0xD7, 0x38, 0xDF, 0x25, 0xB0, 0xAF, 0xAE, 0x76, 0xE1 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData35Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData35Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000037, 0x000005A4, { { 0xFB, 0x82, 0xE7, 0xB2, 0x54, 0xDB, 0xB5, 0xE1, 0xCE, 0xFB, 0xD1, 0x23, 0x39, 0x8F, 0xA1, 0x0D } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData36Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData36Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000042, 0x00000572, { { 0x2C, 0x16, 0xD9, 0xBE, 0xDB, 0xBA, 0x04, 0xCA, 0x97, 0xB5, 0x88, 0x43, 0xA8, 0x62, 0xE2, 0x04 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData37Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData37Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000016, 0x0000024E, { { 0xFF, 0x28, 0xD8, 0x62, 0xC6, 0xAD, 0x48, 0xC7, 0x31, 0x84, 0x6C, 0xBA, 0x9F, 0x4D, 0x15, 0xDA } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData38Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData38Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x000001D9, 0x00001FB1, { { 0x16, 0xB0, 0xDF, 0x86, 0x8C, 0xB3, 0x52, 0xEF, 0x21, 0x04, 0x22, 0x6D, 0xC0, 0x03, 0xB8, 0xC6 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData39Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData39Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000004D, 0x00000582, { { 0x11, 0x6C, 0xBB, 0xF6, 0x1B, 0x3C, 0xAE, 0xAA, 0x40, 0x27, 0x3F, 0x86, 0x33, 0x92, 0xCB, 0xA9 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData40Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData40Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000160, 0x000010A2, { { 0xD9, 0x9D, 0xF1, 0x7D, 0xE1, 0x7C, 0x61, 0xC0, 0xD4, 0xD3, 0x05, 0x0C, 0x79, 0xDD, 0xDB, 0xD1 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData41Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData41Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000037, 0x00000355, { { 0x92, 0x85, 0xBE, 0x5A, 0x38, 0x08, 0xF3, 0xDF, 0xC6, 0x56, 0x74, 0xC3, 0x0B, 0x3F, 0x72, 0x4D } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData42Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData42Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000021, 0x0000010B, { { 0x68, 0xF8, 0x1D, 0x74, 0x6D, 0x32, 0x1E, 0x3A, 0x1C, 0xD1, 0x1D, 0x4B, 0x89, 0x3D, 0x5F, 0x2B } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2IntroSeqData43Provider[] = {
|
||||
const ExtractEntrySearchData kEob2IntroAnimData43Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000037, 0x00000116, { { 0xD5, 0x46, 0xCB, 0x3F, 0x27, 0xBD, 0x2B, 0xD6, 0x35, 0x69, 0x9E, 0x0A, 0x28, 0xDA, 0xC9, 0x84 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
@ -2959,107 +3029,107 @@ const ExtractEntrySearchData kEoB2FinaleCPSFilesProvider[] = {
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData00Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData00Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000079, 0x00000B66, { { 0x9B, 0x8C, 0x17, 0xFA, 0xD2, 0x4F, 0x4B, 0x0E, 0x3A, 0x43, 0xB1, 0x86, 0x0C, 0xDC, 0x73, 0xAB } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData01Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData01Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000063, 0x00000A03, { { 0xBB, 0x31, 0xEA, 0x35, 0xFB, 0x99, 0x4C, 0x3E, 0x72, 0xBD, 0x36, 0x6B, 0x5C, 0x03, 0x19, 0x7F } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData02Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData02Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x000007C2, { { 0xF6, 0x83, 0x37, 0x58, 0x3C, 0x59, 0x84, 0x8F, 0x97, 0x80, 0xE2, 0xD8, 0xFD, 0x77, 0xA9, 0x54 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData03Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData03Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000042, 0x0000092B, { { 0x47, 0xE4, 0x34, 0xE8, 0x72, 0xCC, 0xA4, 0x4A, 0xA4, 0x8F, 0xBA, 0xBC, 0x0C, 0x04, 0x18, 0xAF } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData04Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData04Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000058, 0x0000080B, { { 0x16, 0xDB, 0x77, 0x4C, 0x8E, 0xFD, 0x44, 0xF6, 0x5E, 0x28, 0x0B, 0x74, 0x93, 0x45, 0x8F, 0xD9 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData05Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData05Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000004D, 0x00000C72, { { 0x6C, 0x57, 0x56, 0x7E, 0x87, 0x10, 0x9C, 0xE7, 0x69, 0xAC, 0x3B, 0x3F, 0xF6, 0x43, 0x5C, 0xD4 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData06Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData06Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000264, { { 0x48, 0x49, 0x5D, 0x78, 0xE2, 0xF1, 0x0D, 0x87, 0xEE, 0xEE, 0xD1, 0xA1, 0xC6, 0x64, 0xCA, 0x13 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData07Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData07Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000042, 0x00000ABE, { { 0xFE, 0xA9, 0x5D, 0x87, 0xAF, 0x55, 0x04, 0x92, 0x41, 0xD3, 0xAD, 0x1D, 0xFF, 0x03, 0x81, 0x3C } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData08Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData08Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000021, 0x000004D8, { { 0x4E, 0xA7, 0xCC, 0x0B, 0x1B, 0x48, 0x22, 0x09, 0x33, 0xF7, 0x23, 0xF1, 0xF5, 0x9F, 0xA5, 0x7B } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData09Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData09Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000058, 0x000004BE, { { 0xF6, 0xEA, 0xA0, 0x7F, 0x54, 0x61, 0x79, 0x4C, 0x71, 0xD7, 0x9B, 0xA6, 0xC3, 0x45, 0xEE, 0x3E } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData10Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData10Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000009A, 0x00000FC4, { { 0xA9, 0xFB, 0x31, 0x55, 0xB8, 0x28, 0x63, 0xC3, 0x4B, 0x9E, 0x7D, 0x41, 0xC7, 0x1F, 0x2F, 0xBD } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData11Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData11Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x000000C6, 0x0000166B, { { 0xCC, 0x16, 0x50, 0xFF, 0xFF, 0xD5, 0xAE, 0x03, 0x40, 0xA3, 0x9A, 0x1F, 0xF8, 0x8E, 0x23, 0x7A } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData12Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData12Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x000000FD, 0x00001A69, { { 0x6A, 0x80, 0x89, 0x7E, 0xFC, 0xE4, 0x01, 0xF5, 0xA2, 0x11, 0xE7, 0x26, 0x20, 0x96, 0x62, 0x7B } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData13Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData13Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x000000FD, 0x00001886, { { 0xF9, 0x5B, 0x62, 0xDD, 0xAB, 0x14, 0x35, 0x77, 0x53, 0x05, 0xDB, 0xC5, 0xFD, 0x4D, 0x4F, 0x12 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData14Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData14Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000108, 0x00001895, { { 0x22, 0xA1, 0x88, 0x69, 0xF9, 0x1C, 0xA2, 0x64, 0x44, 0xCD, 0x00, 0xFA, 0xB1, 0x94, 0xEB, 0x3A } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData15Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData15Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x000000D1, 0x000016E5, { { 0xD8, 0xE9, 0xA5, 0xEE, 0x54, 0x1B, 0x3E, 0x32, 0xDA, 0x78, 0x90, 0xC2, 0x54, 0xFC, 0xD5, 0x39 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData16Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData16Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000008F, 0x00000C69, { { 0xBC, 0x41, 0xE5, 0xAF, 0x89, 0xE2, 0x54, 0x12, 0x9E, 0xB0, 0x5F, 0x28, 0xFF, 0x92, 0x9D, 0x89 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData17Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData17Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x000000DC, 0x0000170D, { { 0x7A, 0x7B, 0x74, 0xCB, 0x68, 0xC2, 0xFF, 0xC7, 0xBE, 0x47, 0xE9, 0x43, 0xF7, 0x15, 0x8D, 0x59 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData18Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData18Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000134, 0x00002651, { { 0x71, 0x26, 0x47, 0x0D, 0x7C, 0x96, 0x45, 0x0B, 0x82, 0xD0, 0x37, 0xB9, 0xD4, 0xD0, 0x84, 0xFC } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData19Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData19Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x0000004D, 0x000009C3, { { 0xDA, 0x96, 0xDF, 0x16, 0xEB, 0x5D, 0x49, 0xA4, 0x3F, 0xD3, 0x31, 0xBE, 0x49, 0x72, 0xF2, 0x71 } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
|
||||
const ExtractEntrySearchData kEoB2FinaleSeqData20Provider[] = {
|
||||
const ExtractEntrySearchData kEob2FinaleAnimData20Provider[] = {
|
||||
{ UNK_LANG, kPlatformUnknown, { 0x00000021, 0x000003D8, { { 0xD9, 0xC8, 0x58, 0x4B, 0x7D, 0x79, 0x86, 0xCB, 0xEB, 0x77, 0xC2, 0xD4, 0xB7, 0xB4, 0xE9, 0x6A } } } },
|
||||
EXTRACT_END_ENTRY
|
||||
};
|
||||
@ -4106,6 +4176,21 @@ const ExtractEntry extractProviders[] = {
|
||||
{ kEoB1BeholderSfx, kEoB1BeholderSfxProvider },
|
||||
{ kEoB1TurnUndeadString, kEoB1TurnUndeadStringProvider },
|
||||
|
||||
{ kEoB1CgaMappingDefault, kEoB1CgaMappingDefaultProvider },
|
||||
{ kEoB1CgaMappingAlt, kEoB1CgaMappingAltProvider },
|
||||
{ kEoB1CgaMappingInv, kEoB1CgaMappingInvProvider },
|
||||
{ kEoB1CgaMappingItemsL, kEoB1CgaMappingItemsLProvider },
|
||||
{ kEoB1CgaMappingItemsS, kEoB1CgaMappingItemsSProvider },
|
||||
{ kEoB1CgaMappingThrown, kEoB1CgaMappingThrownProvider },
|
||||
{ kEoB1CgaMappingIcons, kEoB1CgaMappingIconsProvider },
|
||||
{ kEoB1CgaMappingDeco, kEoB1CgaMappingDecoProvider },
|
||||
{ kEoB1CgaLevelMappingIndex, kEoB1CgaLevelMappingIndexProvider },
|
||||
{ kEoB1CgaMappingLevel0, kEoB1CgaMappingLevel0Provider },
|
||||
{ kEoB1CgaMappingLevel1, kEoB1CgaMappingLevel1Provider },
|
||||
{ kEoB1CgaMappingLevel2, kEoB1CgaMappingLevel2Provider },
|
||||
{ kEoB1CgaMappingLevel3, kEoB1CgaMappingLevel3Provider },
|
||||
{ kEoB1CgaMappingLevel4, kEoB1CgaMappingLevel4Provider },
|
||||
|
||||
{ kEoB1NpcShpData, kEoB1NpcShpDataProvider },
|
||||
{ kEoB1NpcSubShpIndex1, kEoB1NpcSubShpIndex1Provider },
|
||||
{ kEoB1NpcSubShpIndex2, kEoB1NpcSubShpIndex2Provider },
|
||||
@ -4134,50 +4219,50 @@ const ExtractEntry extractProviders[] = {
|
||||
|
||||
{ kEoB2IntroStrings, kEoB2IntroStringsProvider },
|
||||
{ kEoB2IntroCPSFiles, kEoB2IntroCPSFilesProvider },
|
||||
{ kEoB2IntroSeqData00, kEoB2IntroSeqData00Provider },
|
||||
{ kEoB2IntroSeqData01, kEoB2IntroSeqData01Provider },
|
||||
{ kEoB2IntroSeqData02, kEoB2IntroSeqData02Provider },
|
||||
{ kEoB2IntroSeqData03, kEoB2IntroSeqData03Provider },
|
||||
{ kEoB2IntroSeqData04, kEoB2IntroSeqData04Provider },
|
||||
{ kEoB2IntroSeqData05, kEoB2IntroSeqData05Provider },
|
||||
{ kEoB2IntroSeqData06, kEoB2IntroSeqData06Provider },
|
||||
{ kEoB2IntroSeqData07, kEoB2IntroSeqData07Provider },
|
||||
{ kEoB2IntroSeqData08, kEoB2IntroSeqData08Provider },
|
||||
{ kEoB2IntroSeqData09, kEoB2IntroSeqData09Provider },
|
||||
{ kEoB2IntroSeqData10, kEoB2IntroSeqData10Provider },
|
||||
{ kEoB2IntroSeqData11, kEoB2IntroSeqData11Provider },
|
||||
{ kEoB2IntroSeqData12, kEoB2IntroSeqData12Provider },
|
||||
{ kEoB2IntroSeqData13, kEoB2IntroSeqData13Provider },
|
||||
{ kEoB2IntroSeqData14, kEoB2IntroSeqData14Provider },
|
||||
{ kEoB2IntroSeqData15, kEoB2IntroSeqData15Provider },
|
||||
{ kEoB2IntroSeqData16, kEoB2IntroSeqData16Provider },
|
||||
{ kEoB2IntroSeqData17, kEoB2IntroSeqData17Provider },
|
||||
{ kEoB2IntroSeqData18, kEoB2IntroSeqData18Provider },
|
||||
{ kEoB2IntroSeqData19, kEoB2IntroSeqData19Provider },
|
||||
{ kEoB2IntroSeqData20, kEoB2IntroSeqData20Provider },
|
||||
{ kEoB2IntroSeqData21, kEoB2IntroSeqData21Provider },
|
||||
{ kEoB2IntroSeqData22, kEoB2IntroSeqData22Provider },
|
||||
{ kEoB2IntroSeqData23, kEoB2IntroSeqData23Provider },
|
||||
{ kEoB2IntroSeqData24, kEoB2IntroSeqData24Provider },
|
||||
{ kEoB2IntroSeqData25, kEoB2IntroSeqData25Provider },
|
||||
{ kEoB2IntroSeqData26, kEoB2IntroSeqData26Provider },
|
||||
{ kEoB2IntroSeqData27, kEoB2IntroSeqData27Provider },
|
||||
{ kEoB2IntroSeqData28, kEoB2IntroSeqData28Provider },
|
||||
{ kEoB2IntroSeqData29, kEoB2IntroSeqData29Provider },
|
||||
{ kEoB2IntroSeqData30, kEoB2IntroSeqData30Provider },
|
||||
{ kEoB2IntroSeqData31, kEoB2IntroSeqData31Provider },
|
||||
{ kEoB2IntroSeqData32, kEoB2IntroSeqData32Provider },
|
||||
{ kEoB2IntroSeqData33, kEoB2IntroSeqData33Provider },
|
||||
{ kEoB2IntroSeqData34, kEoB2IntroSeqData34Provider },
|
||||
{ kEoB2IntroSeqData35, kEoB2IntroSeqData35Provider },
|
||||
{ kEoB2IntroSeqData36, kEoB2IntroSeqData36Provider },
|
||||
{ kEoB2IntroSeqData37, kEoB2IntroSeqData37Provider },
|
||||
{ kEoB2IntroSeqData38, kEoB2IntroSeqData38Provider },
|
||||
{ kEoB2IntroSeqData39, kEoB2IntroSeqData39Provider },
|
||||
{ kEoB2IntroSeqData40, kEoB2IntroSeqData40Provider },
|
||||
{ kEoB2IntroSeqData41, kEoB2IntroSeqData41Provider },
|
||||
{ kEoB2IntroSeqData42, kEoB2IntroSeqData42Provider },
|
||||
{ kEoB2IntroSeqData43, kEoB2IntroSeqData43Provider },
|
||||
{ kEob2IntroAnimData00, kEob2IntroAnimData00Provider },
|
||||
{ kEob2IntroAnimData01, kEob2IntroAnimData01Provider },
|
||||
{ kEob2IntroAnimData02, kEob2IntroAnimData02Provider },
|
||||
{ kEob2IntroAnimData03, kEob2IntroAnimData03Provider },
|
||||
{ kEob2IntroAnimData04, kEob2IntroAnimData04Provider },
|
||||
{ kEob2IntroAnimData05, kEob2IntroAnimData05Provider },
|
||||
{ kEob2IntroAnimData06, kEob2IntroAnimData06Provider },
|
||||
{ kEob2IntroAnimData07, kEob2IntroAnimData07Provider },
|
||||
{ kEob2IntroAnimData08, kEob2IntroAnimData08Provider },
|
||||
{ kEob2IntroAnimData09, kEob2IntroAnimData09Provider },
|
||||
{ kEob2IntroAnimData10, kEob2IntroAnimData10Provider },
|
||||
{ kEob2IntroAnimData11, kEob2IntroAnimData11Provider },
|
||||
{ kEob2IntroAnimData12, kEob2IntroAnimData12Provider },
|
||||
{ kEob2IntroAnimData13, kEob2IntroAnimData13Provider },
|
||||
{ kEob2IntroAnimData14, kEob2IntroAnimData14Provider },
|
||||
{ kEob2IntroAnimData15, kEob2IntroAnimData15Provider },
|
||||
{ kEob2IntroAnimData16, kEob2IntroAnimData16Provider },
|
||||
{ kEob2IntroAnimData17, kEob2IntroAnimData17Provider },
|
||||
{ kEob2IntroAnimData18, kEob2IntroAnimData18Provider },
|
||||
{ kEob2IntroAnimData19, kEob2IntroAnimData19Provider },
|
||||
{ kEob2IntroAnimData20, kEob2IntroAnimData20Provider },
|
||||
{ kEob2IntroAnimData21, kEob2IntroAnimData21Provider },
|
||||
{ kEob2IntroAnimData22, kEob2IntroAnimData22Provider },
|
||||
{ kEob2IntroAnimData23, kEob2IntroAnimData23Provider },
|
||||
{ kEob2IntroAnimData24, kEob2IntroAnimData24Provider },
|
||||
{ kEob2IntroAnimData25, kEob2IntroAnimData25Provider },
|
||||
{ kEob2IntroAnimData26, kEob2IntroAnimData26Provider },
|
||||
{ kEob2IntroAnimData27, kEob2IntroAnimData27Provider },
|
||||
{ kEob2IntroAnimData28, kEob2IntroAnimData28Provider },
|
||||
{ kEob2IntroAnimData29, kEob2IntroAnimData29Provider },
|
||||
{ kEob2IntroAnimData30, kEob2IntroAnimData30Provider },
|
||||
{ kEob2IntroAnimData31, kEob2IntroAnimData31Provider },
|
||||
{ kEob2IntroAnimData32, kEob2IntroAnimData32Provider },
|
||||
{ kEob2IntroAnimData33, kEob2IntroAnimData33Provider },
|
||||
{ kEob2IntroAnimData34, kEob2IntroAnimData34Provider },
|
||||
{ kEob2IntroAnimData35, kEob2IntroAnimData35Provider },
|
||||
{ kEob2IntroAnimData36, kEob2IntroAnimData36Provider },
|
||||
{ kEob2IntroAnimData37, kEob2IntroAnimData37Provider },
|
||||
{ kEob2IntroAnimData38, kEob2IntroAnimData38Provider },
|
||||
{ kEob2IntroAnimData39, kEob2IntroAnimData39Provider },
|
||||
{ kEob2IntroAnimData40, kEob2IntroAnimData40Provider },
|
||||
{ kEob2IntroAnimData41, kEob2IntroAnimData41Provider },
|
||||
{ kEob2IntroAnimData42, kEob2IntroAnimData42Provider },
|
||||
{ kEob2IntroAnimData43, kEob2IntroAnimData43Provider },
|
||||
{ kEoB2IntroShapes00, kEoB2IntroShapes00Provider },
|
||||
{ kEoB2IntroShapes01, kEoB2IntroShapes01Provider },
|
||||
{ kEoB2IntroShapes04, kEoB2IntroShapes04Provider },
|
||||
@ -4186,27 +4271,27 @@ const ExtractEntry extractProviders[] = {
|
||||
{ kEoB2FinaleStrings, kEoB2FinaleStringsProvider },
|
||||
{ kEoB2CreditsData, kEoB2CreditsDataProvider },
|
||||
{ kEoB2FinaleCPSFiles, kEoB2FinaleCPSFilesProvider },
|
||||
{ kEoB2FinaleSeqData00, kEoB2FinaleSeqData00Provider },
|
||||
{ kEoB2FinaleSeqData01, kEoB2FinaleSeqData01Provider },
|
||||
{ kEoB2FinaleSeqData02, kEoB2FinaleSeqData02Provider },
|
||||
{ kEoB2FinaleSeqData03, kEoB2FinaleSeqData03Provider },
|
||||
{ kEoB2FinaleSeqData04, kEoB2FinaleSeqData04Provider },
|
||||
{ kEoB2FinaleSeqData05, kEoB2FinaleSeqData05Provider },
|
||||
{ kEoB2FinaleSeqData06, kEoB2FinaleSeqData06Provider },
|
||||
{ kEoB2FinaleSeqData07, kEoB2FinaleSeqData07Provider },
|
||||
{ kEoB2FinaleSeqData08, kEoB2FinaleSeqData08Provider },
|
||||
{ kEoB2FinaleSeqData09, kEoB2FinaleSeqData09Provider },
|
||||
{ kEoB2FinaleSeqData10, kEoB2FinaleSeqData10Provider },
|
||||
{ kEoB2FinaleSeqData11, kEoB2FinaleSeqData11Provider },
|
||||
{ kEoB2FinaleSeqData12, kEoB2FinaleSeqData12Provider },
|
||||
{ kEoB2FinaleSeqData13, kEoB2FinaleSeqData13Provider },
|
||||
{ kEoB2FinaleSeqData14, kEoB2FinaleSeqData14Provider },
|
||||
{ kEoB2FinaleSeqData15, kEoB2FinaleSeqData15Provider },
|
||||
{ kEoB2FinaleSeqData16, kEoB2FinaleSeqData16Provider },
|
||||
{ kEoB2FinaleSeqData17, kEoB2FinaleSeqData17Provider },
|
||||
{ kEoB2FinaleSeqData18, kEoB2FinaleSeqData18Provider },
|
||||
{ kEoB2FinaleSeqData19, kEoB2FinaleSeqData19Provider },
|
||||
{ kEoB2FinaleSeqData20, kEoB2FinaleSeqData20Provider },
|
||||
{ kEob2FinaleAnimData00, kEob2FinaleAnimData00Provider },
|
||||
{ kEob2FinaleAnimData01, kEob2FinaleAnimData01Provider },
|
||||
{ kEob2FinaleAnimData02, kEob2FinaleAnimData02Provider },
|
||||
{ kEob2FinaleAnimData03, kEob2FinaleAnimData03Provider },
|
||||
{ kEob2FinaleAnimData04, kEob2FinaleAnimData04Provider },
|
||||
{ kEob2FinaleAnimData05, kEob2FinaleAnimData05Provider },
|
||||
{ kEob2FinaleAnimData06, kEob2FinaleAnimData06Provider },
|
||||
{ kEob2FinaleAnimData07, kEob2FinaleAnimData07Provider },
|
||||
{ kEob2FinaleAnimData08, kEob2FinaleAnimData08Provider },
|
||||
{ kEob2FinaleAnimData09, kEob2FinaleAnimData09Provider },
|
||||
{ kEob2FinaleAnimData10, kEob2FinaleAnimData10Provider },
|
||||
{ kEob2FinaleAnimData11, kEob2FinaleAnimData11Provider },
|
||||
{ kEob2FinaleAnimData12, kEob2FinaleAnimData12Provider },
|
||||
{ kEob2FinaleAnimData13, kEob2FinaleAnimData13Provider },
|
||||
{ kEob2FinaleAnimData14, kEob2FinaleAnimData14Provider },
|
||||
{ kEob2FinaleAnimData15, kEob2FinaleAnimData15Provider },
|
||||
{ kEob2FinaleAnimData16, kEob2FinaleAnimData16Provider },
|
||||
{ kEob2FinaleAnimData17, kEob2FinaleAnimData17Provider },
|
||||
{ kEob2FinaleAnimData18, kEob2FinaleAnimData18Provider },
|
||||
{ kEob2FinaleAnimData19, kEob2FinaleAnimData19Provider },
|
||||
{ kEob2FinaleAnimData20, kEob2FinaleAnimData20Provider },
|
||||
{ kEoB2FinaleShapes00, kEoB2FinaleShapes00Provider },
|
||||
{ kEoB2FinaleShapes03, kEoB2FinaleShapes03Provider },
|
||||
{ kEoB2FinaleShapes07, kEoB2FinaleShapes07Provider },
|
||||
|
Binary file not shown.
@ -248,10 +248,10 @@ void CharacterGenerator::init() {
|
||||
|
||||
_faceShapes = new uint8*[44];
|
||||
for (int i = 0; i < 44; i++)
|
||||
_faceShapes[i] = _screen->encodeShape((i % 10) << 2, (i / 10) << 5, 4, 32, true);
|
||||
_faceShapes[i] = _screen->encodeShape((i % 10) << 2, (i / 10) << 5, 4, 32, true, _vm->_cgaMappingDefault);
|
||||
_screen->_curPage = 0;
|
||||
|
||||
_screen->loadEoBBitmap("CHARGEN", 0, 3, 3, 0);
|
||||
_screen->loadEoBBitmap("CHARGEN", _vm->_cgaMappingDefault, 3, 3, 0);
|
||||
_screen->loadShapeSetBitmap("CHARGENB", 3, 3);
|
||||
if (_chargenMagicShapes) {
|
||||
for (int i = 0; i < 10; i++)
|
||||
@ -261,14 +261,14 @@ void CharacterGenerator::init() {
|
||||
|
||||
_chargenMagicShapes = new uint8*[10];
|
||||
for (int i = 0; i < 10; i++)
|
||||
_chargenMagicShapes[i] = _screen->encodeShape(i << 2, 0, 4, 32, true);
|
||||
_chargenMagicShapes[i] = _screen->encodeShape(i << 2, 0, 4, 32, true, _vm->_cgaMappingDefault);
|
||||
|
||||
for (int i = 0; i < 17; i++) {
|
||||
const CreatePartyModButton *c = &_chargenModButtons[i];
|
||||
_chargenButtonLabels[i] = c->labelW ? _screen->encodeShape(c->encodeLabelX, c->encodeLabelY, c->labelW, c->labelH, true) : 0;
|
||||
_chargenButtonLabels[i] = c->labelW ? _screen->encodeShape(c->encodeLabelX, c->encodeLabelY, c->labelW, c->labelH, true, _vm->_cgaMappingDefault) : 0;
|
||||
}
|
||||
|
||||
_screen->copyPage(3, 2);
|
||||
_screen->convertPage(3, 2, _vm->_cgaMappingDefault);
|
||||
_screen->_curPage = 0;
|
||||
_screen->copyRegion(144, 64, 0, 0, 180, 128, 0, 2, Screen::CR_NO_P_CHECK);
|
||||
_screen->updateScreen();
|
||||
|
@ -29,22 +29,21 @@
|
||||
namespace Kyra {
|
||||
|
||||
DarkMoonEngine::DarkMoonEngine(OSystem *system, const GameFlags &flags) : EoBCoreEngine(system, flags) {
|
||||
_seqIntro = _seqFinale = 0;
|
||||
_animIntro = _animFinale = 0;
|
||||
_shapesIntro = _shapesFinale = 0;
|
||||
_dscDoorType5Offs = 0;
|
||||
_numSpells = 70;
|
||||
_menuChoiceInit = 4;
|
||||
|
||||
_introStrings = _cpsFilesIntro = _cpsFilesFinale = _finaleStrings = _kheldranStrings = _npcStrings[0] = _npcStrings[1] = _hornStrings = 0;
|
||||
_seqIntro = _seqFinale = 0;
|
||||
_shapesIntro = _shapesFinale = 0;
|
||||
_creditsData = _npcShpData = _dscDoorType5Offs = _hornSounds = 0;
|
||||
_dreamSteps = 0;
|
||||
}
|
||||
|
||||
DarkMoonEngine::~DarkMoonEngine() {
|
||||
delete[] _seqIntro;
|
||||
delete[] _seqFinale;
|
||||
delete[] _animIntro;
|
||||
delete[] _animFinale;
|
||||
delete[] _shapesIntro;
|
||||
delete[] _shapesFinale;
|
||||
}
|
||||
@ -58,6 +57,14 @@ Common::Error DarkMoonEngine::init() {
|
||||
|
||||
_monsterProps = new EoBMonsterProperty[10];
|
||||
|
||||
if (_configRenderMode == Common::kRenderEGA) {
|
||||
Palette pal(16);
|
||||
_screen->loadPalette(_egaDefaultPalette, pal, 16);
|
||||
_screen->setScreenPalette(pal);
|
||||
} else {
|
||||
_screen->loadPalette("palette.col", _screen->getPalette(0));
|
||||
}
|
||||
|
||||
return Common::kNoError;
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,7 @@ namespace Kyra {
|
||||
|
||||
class DarkmoonSequenceHelper;
|
||||
|
||||
struct EoBSequenceStep {
|
||||
struct DarkMoonAnimCommand {
|
||||
uint8 command;
|
||||
uint8 obj;
|
||||
int16 x1;
|
||||
@ -74,17 +74,19 @@ private:
|
||||
|
||||
const char * const *_introStrings;
|
||||
const char * const *_cpsFilesIntro;
|
||||
const EoBSequenceStep **_seqIntro;
|
||||
const EoBShapeDef **_shapesIntro;
|
||||
const DarkMoonAnimCommand **_animIntro;
|
||||
const DarkMoonShapeDef **_shapesIntro;
|
||||
|
||||
const char * const *_finaleStrings;
|
||||
const uint8 *_creditsData;
|
||||
const char * const *_cpsFilesFinale;
|
||||
const EoBSequenceStep **_seqFinale;
|
||||
const EoBShapeDef **_shapesFinale;
|
||||
const DarkMoonAnimCommand **_animFinale;
|
||||
const DarkMoonShapeDef **_shapesFinale;
|
||||
|
||||
static const char *_palFilesIntro[];
|
||||
static const char *_palFilesFinale[];
|
||||
static const char *_palFilesIntroVGA[];
|
||||
static const char *_palFilesIntroEGA[];
|
||||
static const char *_palFilesFinaleVGA[];
|
||||
static const char *_palFilesFinaleEGA[];
|
||||
|
||||
// Ingame sequence
|
||||
void seq_nightmare();
|
||||
@ -135,6 +137,7 @@ private:
|
||||
const uint8 *_hornSounds;
|
||||
|
||||
static const KyraRpgGUISettings _guiSettings;
|
||||
static const uint8 _egaDefaultPalette[];
|
||||
};
|
||||
|
||||
} // End of namespace Kyra
|
||||
|
@ -55,7 +55,7 @@ Common::Error EoBEngine::init() {
|
||||
|
||||
initStaticResource();
|
||||
|
||||
_itemsOverlay = _res->fileData("ITEMRMP.VGA", 0);
|
||||
_itemsOverlay = _res->fileData((_configRenderMode == Common::kRenderEGA || _configRenderMode == Common::kRenderCGA) ? "ITEMRMP.EGA" : "ITEMRMP.VGA", 0);
|
||||
|
||||
_screen->modifyScreenDim(7, 0x01, 0xB3, 0x22, 0x12);
|
||||
_screen->modifyScreenDim(9, 0x01, 0x7D, 0x26, 0x3F);
|
||||
@ -63,6 +63,14 @@ Common::Error EoBEngine::init() {
|
||||
|
||||
_scriptTimersCount = 1;
|
||||
|
||||
if (_configRenderMode == Common::kRenderEGA) {
|
||||
Palette pal(16);
|
||||
_screen->loadPalette(_egaDefaultPalette, pal, 16);
|
||||
_screen->setScreenPalette(pal);
|
||||
} else {
|
||||
_screen->loadPalette("palette.col", _screen->getPalette(0));
|
||||
}
|
||||
|
||||
return Common::kNoError;
|
||||
}
|
||||
|
||||
@ -73,6 +81,7 @@ void EoBEngine::startupNew() {
|
||||
_currentBlock = 490;
|
||||
_currentDirection = 0;
|
||||
setHandItem(0);
|
||||
|
||||
EoBCoreEngine::startupNew();
|
||||
}
|
||||
|
||||
@ -134,7 +143,7 @@ void EoBEngine::drawNpcScene(int npcIndex) {
|
||||
void EoBEngine::encodeDrawNpcSeqShape(int npcIndex, int drawX, int drawY) {
|
||||
const uint8 *shpDef = &_npcShpData[npcIndex << 2];
|
||||
_screen->_curPage = 2;
|
||||
const uint8 *shp = _screen->encodeShape(shpDef[0], shpDef[1], shpDef[2], shpDef[3]);
|
||||
const uint8 *shp = _screen->encodeShape(shpDef[0], shpDef[1], shpDef[2], shpDef[3], false, _cgaMappingDefault);
|
||||
_screen->_curPage = 0;
|
||||
_screen->drawShape(0, shp, drawX - (shp[2] << 2), drawY - shp[1], 5);
|
||||
delete[] shp;
|
||||
@ -352,9 +361,9 @@ void EoBEngine::loadDoorShapes(int doorType1, int shapeId1, int doorType2, int s
|
||||
if (doorType1 != 0xff) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
const uint8 *enc = &_doorShapeEncodeDefs[(doorType1 * 3 + i) << 2];
|
||||
_doorShapes[shapeId1 + i] = _screen->encodeShape(enc[0], enc[1], enc[2], enc[3]);
|
||||
_doorShapes[shapeId1 + i] = _screen->encodeShape(enc[0], enc[1], enc[2], enc[3], false, (_flags.gameID == GI_EOB1) ? _cgaMappingLevel[_cgaLevelMappingIndex[_currentLevel - 1]] : 0);
|
||||
enc = &_doorSwitchShapeEncodeDefs[(doorType1 * 3 + i) << 2];
|
||||
_doorSwitches[shapeId1 + i].shp = _screen->encodeShape(enc[0], enc[1], enc[2], enc[3]);
|
||||
_doorSwitches[shapeId1 + i].shp = _screen->encodeShape(enc[0], enc[1], enc[2], enc[3], false, (_flags.gameID == GI_EOB1) ? _cgaMappingLevel[_cgaLevelMappingIndex[_currentLevel - 1]] : 0);
|
||||
_doorSwitches[shapeId1 + i].x = _doorSwitchCoords[doorType1 * 6 + i * 2];
|
||||
_doorSwitches[shapeId1 + i].y = _doorSwitchCoords[doorType1 * 6 + i * 2 + 1];
|
||||
}
|
||||
@ -363,9 +372,9 @@ void EoBEngine::loadDoorShapes(int doorType1, int shapeId1, int doorType2, int s
|
||||
if (doorType2 != 0xff) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
const uint8 *enc = &_doorShapeEncodeDefs[(doorType2 * 3 + i) << 2];
|
||||
_doorShapes[shapeId2 + i] = _screen->encodeShape(enc[0], enc[1], enc[2], enc[3]);
|
||||
_doorShapes[shapeId2 + i] = _screen->encodeShape(enc[0], enc[1], enc[2], enc[3], false, (_flags.gameID == GI_EOB1) ? _cgaMappingLevel[_cgaLevelMappingIndex[_currentLevel - 1]] : 0);
|
||||
enc = &_doorSwitchShapeEncodeDefs[(doorType2 * 3 + i) << 2];
|
||||
_doorSwitches[shapeId2 + i].shp = _screen->encodeShape(enc[0], enc[1], enc[2], enc[3]);
|
||||
_doorSwitches[shapeId2 + i].shp = _screen->encodeShape(enc[0], enc[1], enc[2], enc[3], false, (_flags.gameID == GI_EOB1) ? _cgaMappingLevel[_cgaLevelMappingIndex[_currentLevel - 1]] : 0);
|
||||
_doorSwitches[shapeId2 + i].x = _doorSwitchCoords[doorType2 * 6 + i * 2];
|
||||
_doorSwitches[shapeId2 + i].y = _doorSwitchCoords[doorType2 * 6 + i * 2 + 1];
|
||||
}
|
||||
|
@ -109,6 +109,7 @@ private:
|
||||
const KyraRpgGUISettings *guiSettings();
|
||||
|
||||
static const KyraRpgGUISettings _guiSettings;
|
||||
static const uint8 _egaDefaultPalette[];
|
||||
};
|
||||
|
||||
|
||||
|
@ -47,6 +47,7 @@ EoBCoreEngine::EoBCoreEngine(OSystem *system, const GameFlags &flags)
|
||||
_numThrownItemShapes(flags.gameID == GI_EOB1 ? 12 : 9),
|
||||
_numItemIconShapes(flags.gameID == GI_EOB1 ? 89 : 112),
|
||||
_teleporterWallId(flags.gameID == GI_EOB1 ? 52 : 44) {
|
||||
|
||||
_screen = 0;
|
||||
_gui = 0;
|
||||
_debugger = 0;
|
||||
@ -212,6 +213,8 @@ EoBCoreEngine::EoBCoreEngine(OSystem *system, const GameFlags &flags)
|
||||
_spellLevelsMage = _spellLevelsCleric = _numSpellsCleric = _numSpellsWisAdj = _numSpellsPal = _numSpellsMage = 0;
|
||||
_mnNumWord = _numSpells = _mageSpellListSize = _spellLevelsMageSize = _spellLevelsClericSize = 0;
|
||||
_inventorySlotsX = _slotValidationFlags = _encodeMonsterShpTable = 0;
|
||||
_cgaMappingDefault = _cgaMappingAlt = _cgaMappingInv = _cgaLevelMappingIndex = _cgaMappingItemsL = _cgaMappingItemsS = _cgaMappingThrown = _cgaMappingIcons = _cgaMappingDeco = 0;
|
||||
memset(_cgaMappingLevel, 0, sizeof(_cgaMappingLevel));
|
||||
memset(_expRequirementTables, 0, sizeof(_expRequirementTables));
|
||||
memset(_saveThrowTables, 0, sizeof(_saveThrowTables));
|
||||
memset(_doorType, 0, sizeof(_doorType));
|
||||
@ -364,6 +367,9 @@ Common::Error EoBCoreEngine::init() {
|
||||
// This makes a tick length of 54.94.
|
||||
_tickLength = 55;
|
||||
|
||||
if (ConfMan.hasKey("render_mode"))
|
||||
_configRenderMode = Common::parseRenderMode(ConfMan.get("render_mode"));
|
||||
|
||||
_screen = new Screen_EoB(this, _system);
|
||||
assert(_screen);
|
||||
_screen->setResolution();
|
||||
@ -497,8 +503,7 @@ Common::Error EoBCoreEngine::go() {
|
||||
_debugger->initialize();
|
||||
|
||||
_txt->removePageBreakFlag();
|
||||
_screen->loadPalette("palette.col", _screen->getPalette(0));
|
||||
_screen->setScreenPalette(_screen->getPalette(0));
|
||||
|
||||
_screen->setFont(Screen::FID_8_FNT);
|
||||
|
||||
loadItemsAndDecorationsShapes();
|
||||
@ -661,44 +666,43 @@ bool EoBCoreEngine::checkPartyStatus(bool handleDeath) {
|
||||
|
||||
void EoBCoreEngine::loadItemsAndDecorationsShapes() {
|
||||
releaseItemsAndDecorationsShapes();
|
||||
_screen->setCurPage(2);
|
||||
|
||||
_screen->loadBitmap("ITEML1.CPS", 5, 3, 0);
|
||||
_screen->loadShapeSetBitmap("ITEML1", 5, 3);
|
||||
_largeItemShapes = new const uint8*[_numLargeItemShapes];
|
||||
int div = (_flags.gameID == GI_EOB1) ? 3 : 8;
|
||||
int mul = (_flags.gameID == GI_EOB1) ? 64 : 24;
|
||||
|
||||
for (int i = 0; i < _numLargeItemShapes; i++)
|
||||
_largeItemShapes[i] = _screen->encodeShape((i / div) << 3, (i % div) * mul, 8, 24);
|
||||
_largeItemShapes[i] = _screen->encodeShape((i / div) << 3, (i % div) * mul, 8, 24, false, _cgaMappingItemsL);
|
||||
|
||||
_screen->loadBitmap("ITEMS1.CPS", 5, 3, 0);
|
||||
_screen->loadShapeSetBitmap("ITEMS1", 5, 3);
|
||||
_smallItemShapes = new const uint8*[_numSmallItemShapes];
|
||||
for (int i = 0; i < _numSmallItemShapes; i++)
|
||||
_smallItemShapes[i] = _screen->encodeShape((i / div) << 2, (i % div) * mul, 4, 24);
|
||||
_smallItemShapes[i] = _screen->encodeShape((i / div) << 2, (i % div) * mul, 4, 24, false, _cgaMappingItemsS);
|
||||
|
||||
_screen->loadBitmap("THROWN.CPS", 5, 3, 0);
|
||||
_screen->loadShapeSetBitmap("THROWN", 5, 3);
|
||||
_thrownItemShapes = new const uint8*[_numThrownItemShapes];
|
||||
for (int i = 0; i < _numThrownItemShapes; i++)
|
||||
_thrownItemShapes[i] = _screen->encodeShape((i / div) << 2, (i % div) * mul, 4, 24);
|
||||
_thrownItemShapes[i] = _screen->encodeShape((i / div) << 2, (i % div) * mul, 4, 24, false, _cgaMappingThrown);
|
||||
|
||||
_spellShapes = new const uint8*[4];
|
||||
for (int i = 0; i < 4; i++)
|
||||
_spellShapes[i] = _screen->encodeShape(8, i << 5, 6, 32);
|
||||
_spellShapes[i] = _screen->encodeShape(8, i << 5, 6, 32, false, _cgaMappingThrown);
|
||||
|
||||
_firebeamShapes = new const uint8*[3];
|
||||
_firebeamShapes[0] = _screen->encodeShape(16, 0, 4, 24);
|
||||
_firebeamShapes[1] = _screen->encodeShape(16, 24, 4, 24);
|
||||
_firebeamShapes[2] = _screen->encodeShape(16, 48, 3, 24);
|
||||
_redSplatShape = _screen->encodeShape(16, _flags.gameID == GI_EOB1 ? 144 : 72, 5, 24);
|
||||
_greenSplatShape = _screen->encodeShape(16, _flags.gameID == GI_EOB1 ? 168 : 96, 5, 16);
|
||||
_firebeamShapes[0] = _screen->encodeShape(16, 0, 4, 24, false, _cgaMappingThrown);
|
||||
_firebeamShapes[1] = _screen->encodeShape(16, 24, 4, 24, false, _cgaMappingThrown);
|
||||
_firebeamShapes[2] = _screen->encodeShape(16, 48, 3, 24, false, _cgaMappingThrown);
|
||||
_redSplatShape = _screen->encodeShape(16, _flags.gameID == GI_EOB1 ? 144 : 72, 5, 24, false, _cgaMappingThrown);
|
||||
_greenSplatShape = _screen->encodeShape(16, _flags.gameID == GI_EOB1 ? 168 : 96, 5, 16, false, _cgaMappingThrown);
|
||||
|
||||
_screen->loadBitmap("ITEMICN.CPS", 5, 3, 0);
|
||||
_screen->loadShapeSetBitmap("ITEMICN", 5, 3);
|
||||
_itemIconShapes = new const uint8*[_numItemIconShapes];
|
||||
for (int i = 0; i < _numItemIconShapes; i++)
|
||||
_itemIconShapes[i] = _screen->encodeShape((i % 0x14) << 1, (i / 0x14) << 4, 2, 0x10);
|
||||
_itemIconShapes[i] = _screen->encodeShape((i % 0x14) << 1, (i / 0x14) << 4, 2, 0x10, false, _cgaMappingIcons);
|
||||
_tempIconShape = new uint8[300];
|
||||
|
||||
_screen->loadBitmap("DECORATE.CPS", 5, 3, 0);
|
||||
_screen->loadShapeSetBitmap("DECORATE", 5, 3);
|
||||
|
||||
if (_flags.gameID == GI_EOB2) {
|
||||
_lightningColumnShape = _screen->encodeShape(18, 88, 4, 64);
|
||||
@ -709,16 +713,16 @@ void EoBCoreEngine::loadItemsAndDecorationsShapes() {
|
||||
|
||||
_teleporterShapes = new const uint8*[6];
|
||||
for (int i = 0; i < 6; i++)
|
||||
_teleporterShapes[i] = _screen->encodeShape(_teleporterShapeDefs[(i << 2)], _teleporterShapeDefs[(i << 2) + 1], _teleporterShapeDefs[(i << 2) + 2], _teleporterShapeDefs[(i << 2) + 3]);
|
||||
_teleporterShapes[i] = _screen->encodeShape(_teleporterShapeDefs[(i << 2)], _teleporterShapeDefs[(i << 2) + 1], _teleporterShapeDefs[(i << 2) + 2], _teleporterShapeDefs[(i << 2) + 3], false, _cgaMappingDefault);
|
||||
_sparkShapes = new const uint8*[3];
|
||||
_sparkShapes[0] = _screen->encodeShape(29, 0, 2, 16);
|
||||
_sparkShapes[1] = _screen->encodeShape(31, 0, 2, 16);
|
||||
_sparkShapes[2] = _screen->encodeShape(33, 0, 2, 16);
|
||||
_deadCharShape = _screen->encodeShape(0, 88, 4, 32);
|
||||
_disabledCharGrid = _screen->encodeShape(4, 88, 4, 32);
|
||||
_blackBoxSmallGrid = _screen->encodeShape(9, 88, 2, 8);
|
||||
_weaponSlotGrid = _screen->encodeShape(8, 88, 4, 16);
|
||||
_blackBoxWideGrid = _screen->encodeShape(8, 104, 4, 8);
|
||||
_sparkShapes[0] = _screen->encodeShape(29, 0, 2, 16, false, _cgaMappingDeco);
|
||||
_sparkShapes[1] = _screen->encodeShape(31, 0, 2, 16, false, _cgaMappingDeco);
|
||||
_sparkShapes[2] = _screen->encodeShape(33, 0, 2, 16, false, _cgaMappingDeco);
|
||||
_deadCharShape = _screen->encodeShape(0, 88, 4, 32, false, _cgaMappingDeco);
|
||||
_disabledCharGrid = _screen->encodeShape(4, 88, 4, 32, false, _cgaMappingDeco);
|
||||
_blackBoxSmallGrid = _screen->encodeShape(9, 88, 2, 8, false, _cgaMappingDeco);
|
||||
_weaponSlotGrid = _screen->encodeShape(8, 88, 4, 16, false, _cgaMappingDeco);
|
||||
_blackBoxWideGrid = _screen->encodeShape(8, 104, 4, 8, false, _cgaMappingDeco);
|
||||
|
||||
static const uint8 dHeight[] = { 17, 10, 10 };
|
||||
static const uint8 dY[] = { 120, 137, 147 };
|
||||
@ -726,7 +730,7 @@ void EoBCoreEngine::loadItemsAndDecorationsShapes() {
|
||||
_compassShapes = new const uint8*[12];
|
||||
for (int y = 0; y < 3; y++) {
|
||||
for (int x = 0; x < 4; x++)
|
||||
_compassShapes[(y << 2) + x] = _screen->encodeShape(x * 3, dY[y], 3, dHeight[y]);
|
||||
_compassShapes[(y << 2) + x] = _screen->encodeShape(x * 3, dY[y], 3, dHeight[y], false, _cgaMappingDeco);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1197,7 +1201,7 @@ void EoBCoreEngine::initNpc(int npcIndex) {
|
||||
|
||||
_screen->loadShapeSetBitmap(_flags.gameID == GI_EOB2 ? "OUTPORTS" : "OUTTAKE", 3, 3);
|
||||
_screen->_curPage = 2;
|
||||
c->faceShape = _screen->encodeShape(npcIndex << 2, _flags.gameID == GI_EOB2 ? 0 : 160, 4, 32, true);
|
||||
c->faceShape = _screen->encodeShape(npcIndex << 2, _flags.gameID == GI_EOB2 ? 0 : 160, 4, 32, true, _cgaMappingDefault);
|
||||
_screen->_curPage = 0;
|
||||
}
|
||||
|
||||
@ -1679,13 +1683,13 @@ void EoBCoreEngine::seq_portal() {
|
||||
_screen->loadShapeSetBitmap("PORTALA", 5, 3);
|
||||
|
||||
for (int i = 0; i < 5; i++) {
|
||||
shapes1[i] = _screen->encodeShape(i * 3, 0, 3, 75);
|
||||
shapes2[i] = _screen->encodeShape(i * 3, 80, 3, 75);
|
||||
shapes3[i] = _screen->encodeShape(15, i * 18, 15, 18);
|
||||
shapes1[i] = _screen->encodeShape(i * 3, 0, 3, 75, false, _cgaMappingDefault);
|
||||
shapes2[i] = _screen->encodeShape(i * 3, 80, 3, 75, false, _cgaMappingDefault);
|
||||
shapes3[i] = _screen->encodeShape(15, i * 18, 15, 18, false, _cgaMappingDefault);
|
||||
}
|
||||
|
||||
shape0 = _screen->encodeShape(30, 0, 8, 77);
|
||||
_screen->loadEoBBitmap("PORTALB", 0, 5, 3, 2);
|
||||
shape0 = _screen->encodeShape(30, 0, 8, 77, false, _cgaMappingDefault);
|
||||
_screen->loadEoBBitmap("PORTALB", _cgaMappingDefault, 5, 3, 2);
|
||||
|
||||
snd_playSoundEffect(33);
|
||||
snd_playSoundEffect(19);
|
||||
|
@ -31,7 +31,7 @@
|
||||
|
||||
namespace Kyra {
|
||||
|
||||
struct EoBShapeDef {
|
||||
struct DarkMoonShapeDef {
|
||||
int16 index;
|
||||
uint8 x, y, w, h;
|
||||
};
|
||||
@ -577,7 +577,7 @@ protected:
|
||||
void readLevelFileData(int level);
|
||||
Common::String initLevelData(int sub);
|
||||
void addLevelItems();
|
||||
void loadVcnData(const char *file, const char * /*nextFile*/);
|
||||
void loadVcnData(const char *file, const uint8 *cgaMapping);
|
||||
void loadBlockProperties(const char *mazFile);
|
||||
const uint8 *getBlockFileData(int levelIndex = 0);
|
||||
Common::String getBlockFileName(int levelIndex, int sub);
|
||||
@ -834,6 +834,17 @@ protected:
|
||||
Common::Error loadGameState(int slot);
|
||||
Common::Error saveGameStateIntern(int slot, const char *saveName, const Graphics::Surface *thumbnail);
|
||||
|
||||
const uint8 *_cgaMappingDefault;
|
||||
const uint8 *_cgaMappingAlt;
|
||||
const uint8 *_cgaMappingInv;
|
||||
const uint8 *_cgaMappingItemsL;
|
||||
const uint8 *_cgaMappingItemsS;
|
||||
const uint8 *_cgaMappingThrown;
|
||||
const uint8 *_cgaMappingIcons;
|
||||
const uint8 *_cgaMappingDeco;
|
||||
const uint8 *_cgaMappingLevel[5];
|
||||
const uint8 *_cgaLevelMappingIndex;
|
||||
|
||||
// Default parameters will import all present original save files and push them to the top of the save dialog.
|
||||
bool importOriginalSaveFile(int destSlot, const char *sourceFile = 0);
|
||||
Common::String readOriginalSaveFile(Common::String &file);
|
||||
|
@ -47,7 +47,7 @@ Button *EoBCoreEngine::gui_getButton(Button *buttonList, int index) {
|
||||
}
|
||||
|
||||
void EoBCoreEngine::gui_drawPlayField(bool refresh) {
|
||||
_screen->loadEoBBitmap("PLAYFLD", 0, 5, 3, 2);
|
||||
_screen->loadEoBBitmap("PLAYFLD", _cgaMappingDeco, 5, 3, 2);
|
||||
int cp = _screen->setCurPage(2);
|
||||
gui_drawCompass(true);
|
||||
|
||||
@ -60,11 +60,11 @@ void EoBCoreEngine::gui_drawPlayField(bool refresh) {
|
||||
if (!_loading)
|
||||
_screen->updateScreen();
|
||||
|
||||
_screen->loadEoBBitmap("INVENT", 0, 5, 3, 2);
|
||||
_screen->loadEoBBitmap("INVENT", _cgaMappingInv, 5, 3, 2);
|
||||
}
|
||||
|
||||
void EoBCoreEngine::gui_restorePlayField() {
|
||||
loadVcnData(0, 0);
|
||||
loadVcnData(0, (_flags.gameID == GI_EOB1) ? _cgaMappingLevel[_cgaLevelMappingIndex[_currentLevel - 1]] : 0);
|
||||
_screen->_curPage = 0;
|
||||
gui_drawPlayField(true);
|
||||
gui_drawAllCharPortraitsWithStats();
|
||||
@ -1891,7 +1891,7 @@ void GUI_EoB::simpleMenu_setup(int sd, int maxItem, const char *const *strings,
|
||||
for (int i = 0; i < _menuNumItems; i++) {
|
||||
int item = simpleMenu_getMenuItem(i, menuItemsMask, itemOffset);
|
||||
int ty = y + i * (lineSpacing + _screen->getFontHeight());
|
||||
_screen->printShadedText(strings[item], x, ty, dm->unkA, 0);
|
||||
_screen->printShadedText(strings[item], x, ty, (_vm->_configRenderMode == Common::kRenderCGA) ? 1 : dm->unkA, 0);
|
||||
if (item == v)
|
||||
_screen->printText(strings[item], x, ty, dm->unkC, 0);
|
||||
}
|
||||
@ -1944,7 +1944,7 @@ int GUI_EoB::simpleMenu_process(int sd, const char *const *strings, void *b, int
|
||||
}
|
||||
|
||||
if (newItem != currentItem) {
|
||||
_screen->printText(strings[simpleMenu_getMenuItem(currentItem, menuItemsMask, itemOffset)], x, y + currentItem * lineH , dm->unkA, 0);
|
||||
_screen->printText(strings[simpleMenu_getMenuItem(currentItem, menuItemsMask, itemOffset)], x, y + currentItem * lineH, (_vm->_configRenderMode == Common::kRenderCGA) ? 1 : dm->unkA, 0);
|
||||
_screen->printText(strings[simpleMenu_getMenuItem(newItem, menuItemsMask, itemOffset)], x, y + newItem * lineH , dm->unkC, 0);
|
||||
_screen->updateScreen();
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ KyraRpgEngine::KyraRpgEngine(OSystem *system, const GameFlags &flags) : KyraEngi
|
||||
_vcnBlocks = 0;
|
||||
_vcfBlocks = 0;
|
||||
_vcnShift = 0;
|
||||
_vcnExpTable = 0;
|
||||
_vcnColTable = 0;
|
||||
_vmpPtr = 0;
|
||||
_blockBrightness = _wllVcnOffset = 0;
|
||||
_blockDrawingBuffer = 0;
|
||||
@ -123,7 +123,7 @@ KyraRpgEngine::~KyraRpgEngine() {
|
||||
delete[] _wllWallFlags;
|
||||
|
||||
delete[] _vmpPtr;
|
||||
delete[] _vcnExpTable;
|
||||
delete[] _vcnColTable;
|
||||
delete[] _vcnBlocks;
|
||||
delete[] _vcfBlocks;
|
||||
delete[] _vcnShift;
|
||||
@ -173,9 +173,9 @@ Common::Error KyraRpgEngine::init() {
|
||||
_lvlShapeLeftRight = new int16[36];
|
||||
memset(_lvlShapeLeftRight, 0, 36 * sizeof(int16));
|
||||
|
||||
_vcnExpTable = new uint8[128];
|
||||
_vcnColTable = new uint8[128];
|
||||
for (int i = 0; i < 128; i++)
|
||||
_vcnExpTable[i] = i & 0x0f;
|
||||
_vcnColTable[i] = i & 0x0f;
|
||||
|
||||
_doorShapes = new uint8*[6];
|
||||
memset(_doorShapes, 0, 6 * sizeof(uint8 *));
|
||||
|
@ -225,7 +225,7 @@ protected:
|
||||
uint8 *_vcnBlocks;
|
||||
uint8 *_vcfBlocks;
|
||||
uint8 *_vcnShift;
|
||||
uint8 *_vcnExpTable;
|
||||
uint8 *_vcnColTable;
|
||||
uint16 *_blockDrawingBuffer;
|
||||
uint8 *_sceneWindowBuffer;
|
||||
uint8 _blockBrightness;
|
||||
|
@ -42,6 +42,8 @@ KyraEngine_v1::KyraEngine_v1(OSystem *system, const GameFlags &flags)
|
||||
_emc = 0;
|
||||
_debugger = 0;
|
||||
|
||||
_configRenderMode = Common::kRenderDefault;
|
||||
|
||||
if (_flags.platform == Common::kPlatformAmiga)
|
||||
_gameSpeed = 50;
|
||||
else
|
||||
@ -163,6 +165,9 @@ Common::Error KyraEngine_v1::init() {
|
||||
if (_sound)
|
||||
_sound->updateVolumeSettings();
|
||||
|
||||
if (ConfMan.hasKey("render_mode"))
|
||||
_configRenderMode = Common::parseRenderMode(ConfMan.get("render_mode"));
|
||||
|
||||
_res = new Resource(this);
|
||||
assert(_res);
|
||||
_res->reset();
|
||||
|
@ -306,6 +306,8 @@ protected:
|
||||
bool _configSounds;
|
||||
uint8 _configVoice;
|
||||
|
||||
Common::RenderMode _configRenderMode;
|
||||
|
||||
// game speed
|
||||
virtual bool skipFlag() const;
|
||||
virtual void resetSkipFlag(bool removeEvent = true);
|
||||
|
@ -517,9 +517,23 @@ enum KyraResources {
|
||||
kEoB1EnemyMageSfx,
|
||||
kEoB1BeholderSpellList,
|
||||
kEoB1BeholderSfx,
|
||||
|
||||
kEoB1TurnUndeadString,
|
||||
|
||||
kEoB1CgaMappingDefault,
|
||||
kEoB1CgaMappingAlt,
|
||||
kEoB1CgaMappingInv,
|
||||
kEoB1CgaMappingItemsL,
|
||||
kEoB1CgaMappingItemsS,
|
||||
kEoB1CgaMappingThrown,
|
||||
kEoB1CgaMappingIcons,
|
||||
kEoB1CgaMappingDeco,
|
||||
kEoB1CgaLevelMappingIndex,
|
||||
kEoB1CgaMappingLevel0,
|
||||
kEoB1CgaMappingLevel1,
|
||||
kEoB1CgaMappingLevel2,
|
||||
kEoB1CgaMappingLevel3,
|
||||
kEoB1CgaMappingLevel4,
|
||||
|
||||
kEoB1NpcShpData,
|
||||
kEoB1NpcSubShpIndex1,
|
||||
kEoB1NpcSubShpIndex2,
|
||||
@ -548,50 +562,50 @@ enum KyraResources {
|
||||
|
||||
kEoB2IntroStrings,
|
||||
kEoB2IntroCPSFiles,
|
||||
kEoB2IntroSeqData00,
|
||||
kEoB2IntroSeqData01,
|
||||
kEoB2IntroSeqData02,
|
||||
kEoB2IntroSeqData03,
|
||||
kEoB2IntroSeqData04,
|
||||
kEoB2IntroSeqData05,
|
||||
kEoB2IntroSeqData06,
|
||||
kEoB2IntroSeqData07,
|
||||
kEoB2IntroSeqData08,
|
||||
kEoB2IntroSeqData09,
|
||||
kEoB2IntroSeqData10,
|
||||
kEoB2IntroSeqData11,
|
||||
kEoB2IntroSeqData12,
|
||||
kEoB2IntroSeqData13,
|
||||
kEoB2IntroSeqData14,
|
||||
kEoB2IntroSeqData15,
|
||||
kEoB2IntroSeqData16,
|
||||
kEoB2IntroSeqData17,
|
||||
kEoB2IntroSeqData18,
|
||||
kEoB2IntroSeqData19,
|
||||
kEoB2IntroSeqData20,
|
||||
kEoB2IntroSeqData21,
|
||||
kEoB2IntroSeqData22,
|
||||
kEoB2IntroSeqData23,
|
||||
kEoB2IntroSeqData24,
|
||||
kEoB2IntroSeqData25,
|
||||
kEoB2IntroSeqData26,
|
||||
kEoB2IntroSeqData27,
|
||||
kEoB2IntroSeqData28,
|
||||
kEoB2IntroSeqData29,
|
||||
kEoB2IntroSeqData30,
|
||||
kEoB2IntroSeqData31,
|
||||
kEoB2IntroSeqData32,
|
||||
kEoB2IntroSeqData33,
|
||||
kEoB2IntroSeqData34,
|
||||
kEoB2IntroSeqData35,
|
||||
kEoB2IntroSeqData36,
|
||||
kEoB2IntroSeqData37,
|
||||
kEoB2IntroSeqData38,
|
||||
kEoB2IntroSeqData39,
|
||||
kEoB2IntroSeqData40,
|
||||
kEoB2IntroSeqData41,
|
||||
kEoB2IntroSeqData42,
|
||||
kEoB2IntroSeqData43,
|
||||
kEob2IntroAnimData00,
|
||||
kEob2IntroAnimData01,
|
||||
kEob2IntroAnimData02,
|
||||
kEob2IntroAnimData03,
|
||||
kEob2IntroAnimData04,
|
||||
kEob2IntroAnimData05,
|
||||
kEob2IntroAnimData06,
|
||||
kEob2IntroAnimData07,
|
||||
kEob2IntroAnimData08,
|
||||
kEob2IntroAnimData09,
|
||||
kEob2IntroAnimData10,
|
||||
kEob2IntroAnimData11,
|
||||
kEob2IntroAnimData12,
|
||||
kEob2IntroAnimData13,
|
||||
kEob2IntroAnimData14,
|
||||
kEob2IntroAnimData15,
|
||||
kEob2IntroAnimData16,
|
||||
kEob2IntroAnimData17,
|
||||
kEob2IntroAnimData18,
|
||||
kEob2IntroAnimData19,
|
||||
kEob2IntroAnimData20,
|
||||
kEob2IntroAnimData21,
|
||||
kEob2IntroAnimData22,
|
||||
kEob2IntroAnimData23,
|
||||
kEob2IntroAnimData24,
|
||||
kEob2IntroAnimData25,
|
||||
kEob2IntroAnimData26,
|
||||
kEob2IntroAnimData27,
|
||||
kEob2IntroAnimData28,
|
||||
kEob2IntroAnimData29,
|
||||
kEob2IntroAnimData30,
|
||||
kEob2IntroAnimData31,
|
||||
kEob2IntroAnimData32,
|
||||
kEob2IntroAnimData33,
|
||||
kEob2IntroAnimData34,
|
||||
kEob2IntroAnimData35,
|
||||
kEob2IntroAnimData36,
|
||||
kEob2IntroAnimData37,
|
||||
kEob2IntroAnimData38,
|
||||
kEob2IntroAnimData39,
|
||||
kEob2IntroAnimData40,
|
||||
kEob2IntroAnimData41,
|
||||
kEob2IntroAnimData42,
|
||||
kEob2IntroAnimData43,
|
||||
kEoB2IntroShapes00,
|
||||
kEoB2IntroShapes01,
|
||||
kEoB2IntroShapes04,
|
||||
@ -600,27 +614,27 @@ enum KyraResources {
|
||||
kEoB2FinaleStrings,
|
||||
kEoB2CreditsData,
|
||||
kEoB2FinaleCPSFiles,
|
||||
kEoB2FinaleSeqData00,
|
||||
kEoB2FinaleSeqData01,
|
||||
kEoB2FinaleSeqData02,
|
||||
kEoB2FinaleSeqData03,
|
||||
kEoB2FinaleSeqData04,
|
||||
kEoB2FinaleSeqData05,
|
||||
kEoB2FinaleSeqData06,
|
||||
kEoB2FinaleSeqData07,
|
||||
kEoB2FinaleSeqData08,
|
||||
kEoB2FinaleSeqData09,
|
||||
kEoB2FinaleSeqData10,
|
||||
kEoB2FinaleSeqData11,
|
||||
kEoB2FinaleSeqData12,
|
||||
kEoB2FinaleSeqData13,
|
||||
kEoB2FinaleSeqData14,
|
||||
kEoB2FinaleSeqData15,
|
||||
kEoB2FinaleSeqData16,
|
||||
kEoB2FinaleSeqData17,
|
||||
kEoB2FinaleSeqData18,
|
||||
kEoB2FinaleSeqData19,
|
||||
kEoB2FinaleSeqData20,
|
||||
kEob2FinaleAnimData00,
|
||||
kEob2FinaleAnimData01,
|
||||
kEob2FinaleAnimData02,
|
||||
kEob2FinaleAnimData03,
|
||||
kEob2FinaleAnimData04,
|
||||
kEob2FinaleAnimData05,
|
||||
kEob2FinaleAnimData06,
|
||||
kEob2FinaleAnimData07,
|
||||
kEob2FinaleAnimData08,
|
||||
kEob2FinaleAnimData09,
|
||||
kEob2FinaleAnimData10,
|
||||
kEob2FinaleAnimData11,
|
||||
kEob2FinaleAnimData12,
|
||||
kEob2FinaleAnimData13,
|
||||
kEob2FinaleAnimData14,
|
||||
kEob2FinaleAnimData15,
|
||||
kEob2FinaleAnimData16,
|
||||
kEob2FinaleAnimData17,
|
||||
kEob2FinaleAnimData18,
|
||||
kEob2FinaleAnimData19,
|
||||
kEob2FinaleAnimData20,
|
||||
kEoB2FinaleShapes00,
|
||||
kEoB2FinaleShapes03,
|
||||
kEoB2FinaleShapes07,
|
||||
@ -757,8 +771,8 @@ public:
|
||||
const LoLButtonDef *loadButtonDefs(int id, int &entries);
|
||||
#endif // ENABLE_LOL
|
||||
#ifdef ENABLE_EOB
|
||||
const EoBSequenceStep *loadEoB2SeqData(int id, int &entries);
|
||||
const EoBShapeDef *loadEoB2ShapeData(int id, int &entries);
|
||||
const DarkMoonAnimCommand *loadEoB2SeqData(int id, int &entries);
|
||||
const DarkMoonShapeDef *loadEoB2ShapeData(int id, int &entries);
|
||||
const EoBCharacter *loadEoBNpcData(int id, int &entries);
|
||||
#endif // ENABLE_EOB
|
||||
|
||||
|
@ -110,7 +110,7 @@ Common::Error EoBCoreEngine::loadGameState(int slot) {
|
||||
EoBCharacter *c = &_characters[i];
|
||||
if (!c->flags || c->portrait < 0)
|
||||
continue;
|
||||
c->faceShape = _screen->encodeShape((c->portrait % 10) << 2, (c->portrait / 10) << 5, 4, 32, true);
|
||||
c->faceShape = _screen->encodeShape((c->portrait % 10) << 2, (c->portrait / 10) << 5, 4, 32, true, _cgaMappingDefault);
|
||||
}
|
||||
|
||||
_screen->loadShapeSetBitmap(_flags.gameID == GI_EOB2 ? "OUTPORTS" : "OUTTAKE", 3, 3);
|
||||
@ -118,7 +118,7 @@ Common::Error EoBCoreEngine::loadGameState(int slot) {
|
||||
EoBCharacter *c = &_characters[i];
|
||||
if (!c->flags || c->portrait >= 0)
|
||||
continue;
|
||||
c->faceShape = _screen->encodeShape((-(c->portrait + 1)) << 2, _flags.gameID == GI_EOB2 ? 0 : 160, 4, 32, true);
|
||||
c->faceShape = _screen->encodeShape((-(c->portrait + 1)) << 2, _flags.gameID == GI_EOB2 ? 0 : 160, 4, 32, true, _cgaMappingDefault);
|
||||
}
|
||||
_screen->_curPage = 0;
|
||||
|
||||
|
@ -86,8 +86,8 @@ void EoBCoreEngine::loadLevel(int level, int sub) {
|
||||
pos += 2;
|
||||
}
|
||||
|
||||
loadVcnData(gfxFile.c_str(), 0);
|
||||
_screen->loadEoBBitmap("INVENT", 0, 5, 3, 2);
|
||||
loadVcnData(gfxFile.c_str(), (_flags.gameID == GI_EOB1) ? _cgaMappingLevel[_cgaLevelMappingIndex[level - 1]] : 0);
|
||||
_screen->loadEoBBitmap("INVENT", _cgaMappingInv, 5, 3, 2);
|
||||
delayUntil(end);
|
||||
snd_stopSound();
|
||||
|
||||
@ -142,7 +142,8 @@ Common::String EoBCoreEngine::initLevelData(int sub) {
|
||||
loadBlockProperties((const char *)pos);
|
||||
pos += slen;
|
||||
|
||||
Common::SeekableReadStream *s = _res->createReadStream(Common::String::format("%s.VMP", (const char *)pos));
|
||||
const char *vmpPattern = (_flags.gameID == GI_EOB1 && (_configRenderMode == Common::kRenderEGA || _configRenderMode == Common::kRenderCGA)) ? "%s.EMP" : "%s.VMP";
|
||||
Common::SeekableReadStream *s = _res->createReadStream(Common::String::format(vmpPattern, (const char *)pos));
|
||||
uint16 size = s->readUint16LE();
|
||||
delete[] _vmpPtr;
|
||||
_vmpPtr = new uint16[size];
|
||||
@ -150,12 +151,14 @@ Common::String EoBCoreEngine::initLevelData(int sub) {
|
||||
_vmpPtr[i] = s->readUint16LE();
|
||||
delete s;
|
||||
|
||||
Common::String tmpStr = Common::String::format("%s.PAL", (const char *)pos);
|
||||
const char *paletteFilePattern = (_flags.gameID == GI_EOB2 && _configRenderMode == Common::kRenderEGA) ? "%s.EGA" : "%s.PAL";
|
||||
|
||||
Common::String tmpStr = Common::String::format(paletteFilePattern, (const char *)pos);
|
||||
_curGfxFile = (const char *)pos;
|
||||
pos += slen;
|
||||
|
||||
if (*pos++ != 0xff && _flags.gameID == GI_EOB2) {
|
||||
tmpStr = Common::String::format("%s.PAL", (const char *)pos);
|
||||
tmpStr = Common::String::format(paletteFilePattern, (const char *)pos);
|
||||
pos += 13;
|
||||
}
|
||||
|
||||
@ -165,21 +168,24 @@ Common::String EoBCoreEngine::initLevelData(int sub) {
|
||||
_screen->setShapeFadeMode(1, false);
|
||||
}
|
||||
|
||||
_screen->loadPalette(tmpStr.c_str(), _screen->getPalette(0));
|
||||
if (_flags.gameID == GI_EOB2 || _configRenderMode != Common::kRenderEGA)
|
||||
_screen->loadPalette(tmpStr.c_str(), _screen->getPalette(0));
|
||||
|
||||
Palette backupPal(256);
|
||||
backupPal.copy(_screen->getPalette(0), 224, 32, 224);
|
||||
_screen->getPalette(0).fill(224, 32, 0x3f);
|
||||
uint8 *src = _screen->getPalette(0).getData();
|
||||
if (_configRenderMode != Common::kRenderCGA) {
|
||||
Palette backupPal(256);
|
||||
backupPal.copy(_screen->getPalette(0), 224, 32, 224);
|
||||
_screen->getPalette(0).fill(224, 32, 0x3f);
|
||||
uint8 *src = _screen->getPalette(0).getData();
|
||||
|
||||
_screen->createFadeTable(src, _screen->getFadeTable(0), 4, 75); // green
|
||||
_screen->createFadeTable(src, _screen->getFadeTable(1), 12, 200); // black
|
||||
_screen->createFadeTable(src, _screen->getFadeTable(2), 10, 85); // blue
|
||||
_screen->createFadeTable(src, _screen->getFadeTable(3), 11, 125); // light blue
|
||||
_screen->createFadeTable(src, _screen->getFadeTable(0), 4, 75); // green
|
||||
_screen->createFadeTable(src, _screen->getFadeTable(1), 12, 200); // black
|
||||
_screen->createFadeTable(src, _screen->getFadeTable(2), 10, 85); // blue
|
||||
_screen->createFadeTable(src, _screen->getFadeTable(3), 11, 125); // light blue
|
||||
|
||||
_screen->getPalette(0).copy(backupPal, 224, 32, 224);
|
||||
_screen->createFadeTable(src, _screen->getFadeTable(4), 12, 85); // grey (shadow)
|
||||
_screen->setFadeTableIndex(4);
|
||||
_screen->getPalette(0).copy(backupPal, 224, 32, 224);
|
||||
_screen->createFadeTable(src, _screen->getFadeTable(4), 12, 85); // grey (shadow)
|
||||
_screen->setFadeTableIndex(4);
|
||||
}
|
||||
}
|
||||
|
||||
if (_flags.gameID == GI_EOB2) {
|
||||
@ -267,15 +273,17 @@ void EoBCoreEngine::addLevelItems() {
|
||||
}
|
||||
}
|
||||
|
||||
void EoBCoreEngine::loadVcnData(const char *file, const char * /*nextFile*/) {
|
||||
void EoBCoreEngine::loadVcnData(const char *file, const uint8 *cgaMapping) {
|
||||
if (file)
|
||||
strcpy(_lastBlockDataFile, file);
|
||||
|
||||
_screen->loadBitmap(Common::String::format("%s.VCN", _lastBlockDataFile).c_str(), 3, 3, 0);
|
||||
const uint8 *v = _screen->getCPagePtr(2);
|
||||
const char *filePattern = (_flags.gameID == GI_EOB1 && (_configRenderMode == Common::kRenderEGA || _configRenderMode == Common::kRenderCGA)) ? "%s.ECN" : "%s.VCN";
|
||||
_screen->loadBitmap(Common::String::format(filePattern, _lastBlockDataFile).c_str(), 3, 3, 0);
|
||||
const uint8 *v = _screen->getCPagePtr(3);
|
||||
uint32 tlen = READ_LE_UINT16(v) << 5;
|
||||
v += 2;
|
||||
memcpy(_vcnExpTable, v, 32);
|
||||
if (!(_flags.gameID == GI_EOB1 && (_configRenderMode == Common::kRenderEGA || _configRenderMode == Common::kRenderCGA)))
|
||||
memcpy(_vcnColTable, v, 32);
|
||||
v += 32;
|
||||
delete[] _vcnBlocks;
|
||||
_vcnBlocks = new uint8[tlen];
|
||||
@ -301,7 +309,7 @@ const uint8 *EoBCoreEngine::getBlockFileData(int) {
|
||||
Common::SeekableReadStream *s = _res->createReadStream(_curBlockFile);
|
||||
_screen->loadFileDataToPage(s, 15, s->size());
|
||||
delete s;
|
||||
return _screen->getCPagePtr(14);
|
||||
return _screen->getCPagePtr(15);
|
||||
}
|
||||
|
||||
Common::String EoBCoreEngine::getBlockFileName(int levelIndex, int sub) {
|
||||
@ -400,7 +408,7 @@ void EoBCoreEngine::assignWallsAndDecorations(int wallIndex, int vmpIndex, int d
|
||||
if (r->w == 0 || r->h == 0)
|
||||
error("Error trying to make decoration %d (x: %d, y: %d, w: %d, h: %d)", decIndex, r->x, r->y, r->w, r->h);
|
||||
|
||||
_levelDecorationShapes[t] = _screen->encodeShape(r->x, r->y, r->w, r->h);
|
||||
_levelDecorationShapes[t] = _screen->encodeShape(r->x, r->y, r->w, r->h, false, (_flags.gameID == GI_EOB1) ? _cgaMappingLevel[_cgaLevelMappingIndex[_currentLevel - 1]] : 0);
|
||||
}
|
||||
|
||||
decIndex = _levelDecorationProperties[_mappedDecorationsCount++].next;
|
||||
|
@ -358,7 +358,7 @@ void LoLEngine::loadLevelGraphics(const char *file, int specialColor, int weight
|
||||
memcpy(_vcnShift, v, tlen);
|
||||
v += tlen;
|
||||
|
||||
memcpy(_vcnExpTable, v, 128);
|
||||
memcpy(_vcnColTable, v, 128);
|
||||
v += 128;
|
||||
|
||||
if (_lastOverridePalFilePtr) {
|
||||
@ -451,7 +451,7 @@ void LoLEngine::loadLevelGraphics(const char *file, int specialColor, int weight
|
||||
for (int i = 0; i < 8; i++) {
|
||||
uint8 *pl = _screen->getLevelOverlay(7 - i);
|
||||
for (int ii = 0; ii < 16; ii++)
|
||||
_vcnExpTable[(i << 4) + ii] = pl[(ii << 4) | ii];
|
||||
_vcnColTable[(i << 4) + ii] = pl[(ii << 4) | ii];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -389,8 +389,8 @@ void KyraRpgEngine::drawVcnBlocks() {
|
||||
src += 3;
|
||||
for (int blockX = 0; blockX < 4; blockX++) {
|
||||
uint8 t = *src--;
|
||||
*d++ = _vcnExpTable[((t & 0x0f) + wllVcnOffset) | shift];
|
||||
*d++ = _vcnExpTable[((t >> 4) + wllVcnOffset) | shift];
|
||||
*d++ = _vcnColTable[((t & 0x0f) + wllVcnOffset) | shift];
|
||||
*d++ = _vcnColTable[((t >> 4) + wllVcnOffset) | shift];
|
||||
}
|
||||
src += 5;
|
||||
d += 168;
|
||||
@ -399,8 +399,8 @@ void KyraRpgEngine::drawVcnBlocks() {
|
||||
for (int blockY = 0; blockY < 8; blockY++) {
|
||||
for (int blockX = 0; blockX < 4; blockX++) {
|
||||
uint8 t = *src++;
|
||||
*d++ = _vcnExpTable[((t >> 4) + wllVcnOffset) | shift];
|
||||
*d++ = _vcnExpTable[((t & 0x0f) + wllVcnOffset) | shift];
|
||||
*d++ = _vcnColTable[((t >> 4) + wllVcnOffset) | shift];
|
||||
*d++ = _vcnColTable[((t & 0x0f) + wllVcnOffset) | shift];
|
||||
}
|
||||
d += 168;
|
||||
}
|
||||
@ -424,8 +424,8 @@ void KyraRpgEngine::drawVcnBlocks() {
|
||||
src += 3;
|
||||
for (int blockX = 0; blockX < 4; blockX++) {
|
||||
uint8 t = *src--;
|
||||
uint8 h = _vcnExpTable[((t & 0x0f) + wllVcnRmdOffset) | shift];
|
||||
uint8 l = _vcnExpTable[((t >> 4) + wllVcnRmdOffset) | shift];
|
||||
uint8 h = _vcnColTable[((t & 0x0f) + wllVcnRmdOffset) | shift];
|
||||
uint8 l = _vcnColTable[((t >> 4) + wllVcnRmdOffset) | shift];
|
||||
if (h)
|
||||
*d = h;
|
||||
d++;
|
||||
@ -440,8 +440,8 @@ void KyraRpgEngine::drawVcnBlocks() {
|
||||
for (int blockY = 0; blockY < 8; blockY++) {
|
||||
for (int blockX = 0; blockX < 4; blockX++) {
|
||||
uint8 t = *src++;
|
||||
uint8 h = _vcnExpTable[((t >> 4) + wllVcnRmdOffset) | shift];
|
||||
uint8 l = _vcnExpTable[((t & 0x0f) + wllVcnRmdOffset) | shift];
|
||||
uint8 h = _vcnColTable[((t >> 4) + wllVcnRmdOffset) | shift];
|
||||
uint8 l = _vcnColTable[((t & 0x0f) + wllVcnRmdOffset) | shift];
|
||||
if (h)
|
||||
*d = h;
|
||||
d++;
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "common/endian.h"
|
||||
#include "common/memstream.h"
|
||||
#include "common/system.h"
|
||||
#include "common/config-manager.h"
|
||||
|
||||
#include "engines/util.h"
|
||||
|
||||
@ -49,6 +50,9 @@ Screen::Screen(KyraEngine_v1 *vm, OSystem *system, const ScreenDim *dimTable, co
|
||||
|
||||
memset(_fonts, 0, sizeof(_fonts));
|
||||
|
||||
_renderMode = Common::kRenderDefault;
|
||||
_cgaDrawCharDitheringTable = 0;
|
||||
|
||||
_currentFont = FID_8_FNT;
|
||||
_paletteChanged = true;
|
||||
_curDim = 0;
|
||||
@ -84,6 +88,10 @@ bool Screen::init() {
|
||||
_useSJIS = false;
|
||||
_use16ColorMode = _vm->gameFlags().use16ColorMode;
|
||||
_isAmiga = (_vm->gameFlags().platform == Common::kPlatformAmiga);
|
||||
|
||||
if (ConfMan.hasKey("render_mode"))
|
||||
_renderMode = Common::parseRenderMode(ConfMan.get("render_mode"));
|
||||
|
||||
memset(_fonts, 0, sizeof(_fonts));
|
||||
|
||||
if (_vm->gameFlags().useHiResOverlay) {
|
||||
@ -110,15 +118,33 @@ bool Screen::init() {
|
||||
}
|
||||
|
||||
_curPage = 0;
|
||||
uint8 *pagePtr = new uint8[SCREEN_PAGE_SIZE * 8];
|
||||
for (int pageNum = 0; pageNum < SCREEN_PAGE_NUM; pageNum += 2)
|
||||
_pagePtrs[pageNum] = _pagePtrs[pageNum + 1] = pagePtr + (pageNum >> 1) * SCREEN_PAGE_SIZE;
|
||||
memset(pagePtr, 0, SCREEN_PAGE_SIZE * 8);
|
||||
|
||||
int numPages = SCREEN_PAGE_NUM / 2;
|
||||
// CGA and EGA modes use additional pages to do the CGA/EGA specific graphics conversions.
|
||||
if (_renderMode == Common::kRenderEGA || _renderMode == Common::kRenderCGA)
|
||||
numPages += 4;
|
||||
|
||||
uint8 *pagePtr = new uint8[numPages * SCREEN_PAGE_SIZE];
|
||||
memset(pagePtr, 0, numPages * SCREEN_PAGE_SIZE);
|
||||
|
||||
if (_renderMode == Common::kRenderEGA || _renderMode == Common::kRenderCGA) {
|
||||
// Unlike VGA mode the odd and even page numbers do not always point to the same buffers.
|
||||
// Instead, the odd pages are used for CGA/EGA specific graphics conversions.
|
||||
int pageNum = 0;
|
||||
for (; pageNum < 8; pageNum++)
|
||||
_pagePtrs[pageNum] = pagePtr + pageNum * SCREEN_PAGE_SIZE;
|
||||
for (; pageNum < SCREEN_PAGE_NUM; pageNum += 2)
|
||||
_pagePtrs[pageNum] = _pagePtrs[pageNum + 1] = pagePtr + (pageNum / 2) * SCREEN_PAGE_SIZE;
|
||||
} else {
|
||||
for (int pageNum = 0; pageNum < SCREEN_PAGE_NUM; pageNum += 2)
|
||||
_pagePtrs[pageNum] = _pagePtrs[pageNum + 1] = pagePtr + (pageNum / 2) * SCREEN_PAGE_SIZE;
|
||||
}
|
||||
|
||||
memset(_shapePages, 0, sizeof(_shapePages));
|
||||
|
||||
const int paletteCount = _isAmiga ? 13 : 4;
|
||||
const int numColors = _use16ColorMode ? 16 : (_isAmiga ? 32 : 256);
|
||||
// We allow 256 color palettes in EGA mode, since original EOB II code does the same and requires it
|
||||
const int numColors = _use16ColorMode ? 16 : (_isAmiga ? 32 : (_renderMode == Common::kRenderCGA ? 4 : 256));
|
||||
|
||||
_interfacePaletteEnabled = false;
|
||||
|
||||
@ -131,6 +157,13 @@ bool Screen::init() {
|
||||
assert(_palettes[i]);
|
||||
}
|
||||
|
||||
// Setup CGA colors (if CGA mode is selected)
|
||||
if (_renderMode == Common::kRenderCGA) {
|
||||
Palette pal(4);
|
||||
pal.setCGAPalette(1, Palette::kIntensityHigh);
|
||||
Screen::setScreenPalette(pal);
|
||||
}
|
||||
|
||||
_internFadePalette = new Palette(numColors);
|
||||
assert(_internFadePalette);
|
||||
|
||||
@ -618,8 +651,14 @@ void Screen::fadeToBlack(int delay, const UpdateFunctor *upFunc) {
|
||||
}
|
||||
|
||||
void Screen::fadePalette(const Palette &pal, int delay, const UpdateFunctor *upFunc) {
|
||||
if (_renderMode == Common::kRenderEGA)
|
||||
setScreenPalette(pal);
|
||||
|
||||
updateScreen();
|
||||
|
||||
if (_renderMode == Common::kRenderCGA || _renderMode == Common::kRenderEGA)
|
||||
return;
|
||||
|
||||
int diff = 0, delayInc = 0;
|
||||
getFadeParams(pal, delay, delayInc, diff);
|
||||
|
||||
@ -1126,7 +1165,7 @@ bool Screen::loadFont(FontId fontId, const char *filename) {
|
||||
fnt = new AMIGAFont();
|
||||
#ifdef ENABLE_EOB
|
||||
else if (_vm->game() == GI_EOB1 || _vm->game() == GI_EOB2)
|
||||
fnt = new OldDOSFont();
|
||||
fnt = new OldDOSFont(_renderMode, _cgaDrawCharDitheringTable);
|
||||
#endif // ENABLE_EOB
|
||||
else
|
||||
fnt = new DOSFont();
|
||||
@ -3013,6 +3052,9 @@ void Screen::loadBitmap(const char *filename, int tempPage, int dstPage, Palette
|
||||
}
|
||||
|
||||
bool Screen::loadPalette(const char *filename, Palette &pal) {
|
||||
if (_renderMode == Common::kRenderCGA)
|
||||
return true;
|
||||
|
||||
Common::SeekableReadStream *stream = _vm->resource()->createReadStream(filename);
|
||||
|
||||
if (!stream)
|
||||
@ -3029,6 +3071,17 @@ bool Screen::loadPalette(const char *filename, Palette &pal) {
|
||||
} else if (_vm->gameFlags().platform == Common::kPlatformPC98 && _use16ColorMode) {
|
||||
numCols = stream->size() / Palette::kPC98BytesPerColor;
|
||||
pal.loadPC98Palette(*stream, 0, MIN(maxCols, numCols));
|
||||
} else if (_renderMode == Common::kRenderEGA) {
|
||||
// EOB II checks the number of palette bytes to distinguish between real EGA palettes
|
||||
// and normal palettes (which are used to generate a color map).
|
||||
if (stream->size() == 16) {
|
||||
numCols = 16;
|
||||
pal.loadEGAPalette(*stream, 0, 16);
|
||||
} else {
|
||||
numCols = stream->size() / Palette::kVGABytesPerColor;
|
||||
pal.loadVGAPalette(*stream, 0, numCols);
|
||||
}
|
||||
|
||||
} else {
|
||||
numCols = stream->size() / Palette::kVGABytesPerColor;
|
||||
pal.loadVGAPalette(*stream, 0, MIN(maxCols, numCols));
|
||||
@ -3076,7 +3129,14 @@ void Screen::loadPalette(const byte *data, Palette &pal, int bytes) {
|
||||
pal.loadAmigaPalette(stream, 0, stream.size() / Palette::kAmigaBytesPerColor);
|
||||
else if (_vm->gameFlags().platform == Common::kPlatformPC98 && _use16ColorMode)
|
||||
pal.loadPC98Palette(stream, 0, stream.size() / Palette::kPC98BytesPerColor);
|
||||
else
|
||||
else if (_renderMode == Common::kRenderEGA) {
|
||||
// EOB II checks the number of palette bytes to distinguish between real EGA palettes
|
||||
// and normal palettes (which are used to generate a color map).
|
||||
if (stream.size() == 16)
|
||||
pal.loadEGAPalette(stream, 0, stream.size());
|
||||
else
|
||||
pal.loadVGAPalette(stream, 0, stream.size() / Palette::kVGABytesPerColor);
|
||||
} else
|
||||
pal.loadVGAPalette(stream, 0, stream.size() / Palette::kVGABytesPerColor);
|
||||
}
|
||||
|
||||
@ -3553,6 +3613,24 @@ void Palette::loadVGAPalette(Common::ReadStream &stream, int startIndex, int col
|
||||
*pos++ = stream.readByte() & 0x3f;
|
||||
}
|
||||
|
||||
void Palette::loadEGAPalette(Common::ReadStream &stream, int startIndex, int colors) {
|
||||
assert(startIndex + colors <= 16);
|
||||
|
||||
uint8 *dst = _palData + startIndex * 3;
|
||||
for (int i = 0; i < colors; i++) {
|
||||
uint8 index = stream.readByte();
|
||||
assert(index < _egaNumColors);
|
||||
memcpy(dst, &_egaColors[index * 3], 3);
|
||||
dst += 3;
|
||||
}
|
||||
}
|
||||
|
||||
void Palette::setCGAPalette(int palIndex, CGAIntensity intensity) {
|
||||
assert(_numColors == _cgaNumColors);
|
||||
assert(!(palIndex & ~1));
|
||||
memcpy(_palData, _cgaColors[palIndex * 2 + intensity], _numColors * 3);
|
||||
}
|
||||
|
||||
void Palette::loadAmigaPalette(Common::ReadStream &stream, int startIndex, int colors) {
|
||||
assert(startIndex + colors <= _numColors);
|
||||
|
||||
@ -3629,4 +3707,22 @@ uint8 *Palette::fetchRealPalette() const {
|
||||
return buffer;
|
||||
}
|
||||
|
||||
const uint8 Palette::_egaColors[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x00, 0xAA, 0x00, 0x00, 0xAA, 0xAA,
|
||||
0xAA, 0x00, 0x00, 0xAA, 0x00, 0xAA, 0xAA, 0x55, 0x00, 0xAA, 0xAA, 0xAA,
|
||||
0x55, 0x55, 0x55, 0x55, 0x55, 0xFF, 0x55, 0xFF, 0x55, 0x55, 0xFF, 0xFF,
|
||||
0xFF, 0x55, 0x55, 0xFF, 0x55, 0xFF, 0xFF, 0xFF, 0x55, 0xFF, 0xFF, 0xFF
|
||||
};
|
||||
|
||||
const int Palette::_egaNumColors = ARRAYSIZE(_egaColors) / 3;
|
||||
|
||||
const uint8 Palette::_cgaColors[4][12] = {
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x15, 0x00 },
|
||||
{ 0x00, 0x00, 0x00, 0x15, 0x3F, 0x15, 0x3F, 0x15, 0x15, 0x3F, 0x3F, 0x15 },
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x2A, 0x2A, 0x2A, 0x00, 0x2A, 0x2A, 0x2A, 0x2A },
|
||||
{ 0x00, 0x00, 0x00, 0x15, 0x3F, 0x3F, 0x3F, 0x15, 0x3F, 0x3F, 0x3F, 0x3F }
|
||||
};
|
||||
|
||||
const int Palette::_cgaNumColors = ARRAYSIZE(_cgaColors[0]) / 3;
|
||||
|
||||
} // End of namespace Kyra
|
||||
|
@ -145,8 +145,8 @@ private:
|
||||
*/
|
||||
class OldDOSFont : public Font {
|
||||
public:
|
||||
OldDOSFont();
|
||||
~OldDOSFont() { unload(); }
|
||||
OldDOSFont(Common::RenderMode mode, const uint16 *cgaDitheringTable);
|
||||
~OldDOSFont();
|
||||
|
||||
bool load(Common::SeekableReadStream &file);
|
||||
int getHeight() const { return _height; }
|
||||
@ -165,6 +165,9 @@ private:
|
||||
const uint8 *_colorMap;
|
||||
|
||||
int _numGlyphs;
|
||||
|
||||
Common::RenderMode _renderMode;
|
||||
const uint16 *_cgaDitheringTable;
|
||||
};
|
||||
#endif // ENABLE_EOB
|
||||
|
||||
@ -251,6 +254,21 @@ public:
|
||||
*/
|
||||
void loadVGAPalette(Common::ReadStream &stream, int startIndex, int colors);
|
||||
|
||||
/**
|
||||
* Load a EGA palette from the given stream.
|
||||
*/
|
||||
void loadEGAPalette(Common::ReadStream &stream, int startIndex, int colors);
|
||||
|
||||
/**
|
||||
* Set default CGA palette. We only need the cyan/magenta/grey mode.
|
||||
*/
|
||||
enum CGAIntensity {
|
||||
kIntensityLow = 0,
|
||||
kIntensityHigh = 1
|
||||
};
|
||||
|
||||
void setCGAPalette(int palIndex, CGAIntensity intensity);
|
||||
|
||||
/**
|
||||
* Load a AMIGA palette from the given stream.
|
||||
*/
|
||||
@ -325,9 +343,15 @@ public:
|
||||
*/
|
||||
uint8 *getData() { return _palData; }
|
||||
const uint8 *getData() const { return _palData; }
|
||||
|
||||
private:
|
||||
uint8 *_palData;
|
||||
const int _numColors;
|
||||
|
||||
static const uint8 _egaColors[];
|
||||
static const int _egaNumColors;
|
||||
static const uint8 _cgaColors[4][12];
|
||||
static const int _cgaNumColors;
|
||||
};
|
||||
|
||||
class Screen {
|
||||
@ -480,9 +504,9 @@ public:
|
||||
// misc
|
||||
void loadBitmap(const char *filename, int tempPage, int dstPage, Palette *pal, bool skip=false);
|
||||
|
||||
bool loadPalette(const char *filename, Palette &pal);
|
||||
virtual bool loadPalette(const char *filename, Palette &pal);
|
||||
bool loadPaletteTable(const char *filename, int firstPalette);
|
||||
void loadPalette(const byte *data, Palette &pal, int bytes);
|
||||
virtual void loadPalette(const byte *data, Palette &pal, int bytes);
|
||||
|
||||
void setAnimBlockPtr(int size);
|
||||
|
||||
@ -550,6 +574,8 @@ protected:
|
||||
bool _useSJIS;
|
||||
bool _use16ColorMode;
|
||||
bool _isAmiga;
|
||||
Common::RenderMode _renderMode;
|
||||
uint16 *_cgaDrawCharDitheringTable;
|
||||
|
||||
uint8 _sjisInvisibleColor;
|
||||
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "common/system.h"
|
||||
|
||||
#include "graphics/cursorman.h"
|
||||
#include "graphics/palette.h"
|
||||
|
||||
namespace Kyra {
|
||||
|
||||
@ -49,29 +50,66 @@ Screen_EoB::Screen_EoB(EoBCoreEngine *vm, OSystem *system) : Screen(vm, system,
|
||||
_dsRem = 0;
|
||||
_dsScaleTmp = 0;
|
||||
_gfxMaxY = 0;
|
||||
_egaColorMap = 0;
|
||||
_egaPixelValueTable = 0;
|
||||
_cgaMappingDefault = 0;
|
||||
_cgaDitheringTables[0] = _cgaDitheringTables[1] = 0;
|
||||
_useHiResEGADithering = false;
|
||||
}
|
||||
|
||||
Screen_EoB::~Screen_EoB() {
|
||||
delete[] _fadeData;
|
||||
delete[] _dsTempPage;
|
||||
delete[] _egaColorMap;
|
||||
delete[] _egaPixelValueTable;
|
||||
delete[] _cgaDitheringTables[0];
|
||||
delete[] _cgaDitheringTables[1];
|
||||
delete[] _cgaDrawCharDitheringTable;
|
||||
}
|
||||
|
||||
bool Screen_EoB::init() {
|
||||
if (Screen::init()) {
|
||||
int temp;
|
||||
_gfxMaxY = _vm->staticres()->loadRawData(kEoBBaseExpObjectY, temp);
|
||||
_fadeData = _vm->resource()->fileData("FADING.DAT", 0);
|
||||
|
||||
if (_renderMode != Common::kRenderCGA && _renderMode != Common::kRenderEGA)
|
||||
_fadeData = _vm->resource()->fileData("FADING.DAT", 0);
|
||||
|
||||
if (!_fadeData) {
|
||||
_fadeData = new uint8[0x700];
|
||||
memset(_fadeData, 0, 0x700);
|
||||
uint8 *pal = _vm->resource()->fileData("palette1.pal", 0); // EGA: palette0.pal
|
||||
for (int i = 0; i < 7; i++)
|
||||
createFadeTable(pal, &_fadeData[i << 8], 18, (i + 1) * 36);
|
||||
delete[] pal;
|
||||
if (_renderMode != Common::kRenderCGA && _renderMode != Common::kRenderEGA) {
|
||||
uint8 *pal = _vm->resource()->fileData("PALETTE1.PAL", 0);
|
||||
for (int i = 0; i < 7; i++)
|
||||
createFadeTable(pal, &_fadeData[i << 8], 18, (i + 1) * 36);
|
||||
delete[] pal;
|
||||
}
|
||||
}
|
||||
|
||||
_dsTempPage = new uint8[6000];
|
||||
if (_renderMode == Common::kRenderEGA) {
|
||||
_egaColorMap = new uint8[256];
|
||||
_egaPixelValueTable = new uint8[256];
|
||||
for (int i = 0; i < 256; i++) {
|
||||
_egaColorMap[i] = i & 0x0f;
|
||||
_egaPixelValueTable[i] = i & 0x0f;
|
||||
}
|
||||
|
||||
if (_vm->game() == GI_EOB2)
|
||||
_useHiResEGADithering = true;
|
||||
} else if (_renderMode == Common::kRenderCGA) {
|
||||
_cgaMappingDefault = _vm->staticres()->loadRawData(kEoB1CgaMappingDefault, temp);
|
||||
_cgaDitheringTables[0] = new uint16[256];
|
||||
memset(_cgaDitheringTables[0], 0, 256 * sizeof(uint16));
|
||||
_cgaDitheringTables[1] = new uint16[256];
|
||||
memset(_cgaDitheringTables[1], 0, 256 * sizeof(uint16));
|
||||
_cgaDrawCharDitheringTable = new uint16[256];
|
||||
memset(_cgaDrawCharDitheringTable, 0, 256 * sizeof(uint16));
|
||||
|
||||
static const uint bits[] = { 0, 3, 12, 15 };
|
||||
for (int i = 0; i < 256; i++)
|
||||
WRITE_BE_UINT16(&_cgaDrawCharDitheringTable[i], (bits[i & 3] << 8) | (bits[(i >> 2) & 3] << 12) | (bits[(i >> 4) & 3] << 0) | (bits[(i >> 6) & 3] << 4));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -121,12 +159,13 @@ void Screen_EoB::printShadedText(const char *string, int x, int y, int col1, int
|
||||
}
|
||||
|
||||
void Screen_EoB::loadShapeSetBitmap(const char *file, int tempPage, int destPage) {
|
||||
loadEoBBitmap(file, 0, tempPage, destPage, -1);
|
||||
loadEoBBitmap(file, _cgaMappingDefault, tempPage, destPage, -1);
|
||||
_curPage = 2;
|
||||
}
|
||||
|
||||
void Screen_EoB::loadEoBBitmap(const char *file, const uint8 *ditheringData, int tempPage, int destPage, int copyToPage) {
|
||||
Common::String tmp = Common::String::format("%s.CPS", file);
|
||||
void Screen_EoB::loadEoBBitmap(const char *file, const uint8 *cgaMapping, int tempPage, int destPage, int convertToPage) {
|
||||
const char *filePattern = (_vm->game() == GI_EOB1 && (_renderMode == Common::kRenderEGA || _renderMode == Common::kRenderCGA)) ? "%s.EGA" : "%s.CPS";
|
||||
Common::String tmp = Common::String::format(filePattern, file);
|
||||
Common::SeekableReadStream *s = _vm->resource()->createReadStream(tmp);
|
||||
bool loadAlternative = false;
|
||||
if (s) {
|
||||
@ -149,28 +188,124 @@ void Screen_EoB::loadEoBBitmap(const char *file, const uint8 *ditheringData, int
|
||||
tmp.setChar('X', 0);
|
||||
s = _vm->resource()->createReadStream(tmp);
|
||||
if (!s)
|
||||
error("Screen_EoB::loadEoBBitmap(): CPS file loading failed.");
|
||||
error("Screen_EoB::loadEoBBitmap(): Failed to load file '%s'", file);
|
||||
s->seek(768);
|
||||
loadFileDataToPage(s, destPage, 64000);
|
||||
delete s;
|
||||
}
|
||||
}
|
||||
|
||||
if (copyToPage == -1) {
|
||||
if (convertToPage == -1) {
|
||||
return;
|
||||
} else if (copyToPage == 0) {
|
||||
copyPage(destPage, 2);
|
||||
} else if (convertToPage == 2 && _renderMode == Common::kRenderCGA) {
|
||||
convertPage(destPage, 4, cgaMapping);
|
||||
copyRegion(0, 0, 0, 0, 320, 200, 4, 2, Screen::CR_NO_P_CHECK);
|
||||
} else if (convertToPage == 0) {
|
||||
convertPage(destPage, 2, cgaMapping);
|
||||
copyRegion(0, 0, 0, 0, 320, 200, 2, 0, Screen::CR_NO_P_CHECK);
|
||||
} else {
|
||||
copyPage(destPage, copyToPage);
|
||||
convertPage(destPage, convertToPage, cgaMapping);
|
||||
}
|
||||
}
|
||||
|
||||
uint8 *Screen_EoB::encodeShape(uint16 x, uint16 y, uint16 w, uint16 h, bool no4bitEncoding) {
|
||||
void Screen_EoB::convertPage(int srcPage, int dstPage, const uint8 *cgaMapping) {
|
||||
uint8 *src = getPagePtr(srcPage);
|
||||
uint8 *dst = getPagePtr(dstPage);
|
||||
if (src == dst)
|
||||
return;
|
||||
|
||||
if (_renderMode == Common::kRenderCGA) {
|
||||
generateCGADitheringTables(cgaMapping);
|
||||
uint16 *d = (uint16*)dst;
|
||||
uint8 tblSwitch = 0;
|
||||
for (int height = SCREEN_H; height; height--) {
|
||||
const uint16 *table = _cgaDitheringTables[(tblSwitch++) & 1];
|
||||
for (int width = SCREEN_W / 2; width; width--) {
|
||||
*d++ = table[((src[0] & 0x0f) << 4) | (src[1] & 0x0f)];
|
||||
src += 2;
|
||||
}
|
||||
}
|
||||
|
||||
if (dstPage == 0 || dstPage == 1)
|
||||
_forceFullUpdate = true;
|
||||
|
||||
} else if (_renderMode == Common::kRenderEGA) {
|
||||
uint32 len = SCREEN_W * SCREEN_H;
|
||||
if (_useHiResEGADithering) {
|
||||
while (len--) {
|
||||
uint8 col = _egaColorMap[*src++] & 0x0f;
|
||||
*dst++ = col;
|
||||
|
||||
/*for (int i = 4; i; i--) {
|
||||
uint8 col = _egaColorMap[*src++];
|
||||
|
||||
}*/
|
||||
}
|
||||
} else {
|
||||
while (len--)
|
||||
*dst++ = *src++ & 0x0f;
|
||||
}
|
||||
|
||||
if (dstPage == 0 || dstPage == 1)
|
||||
_forceFullUpdate = true;
|
||||
} else {
|
||||
copyPage(srcPage, dstPage);
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_EoB::setScreenPalette(const Palette &pal) {
|
||||
if (_renderMode == Common::kRenderEGA && _egaColorMap && pal.getNumColors() != 16) {
|
||||
const uint8 *src = pal.getData();
|
||||
uint8 *dst = _egaColorMap;
|
||||
|
||||
for (int i = 256; i; i--) {
|
||||
uint8 r = *src++;
|
||||
uint8 g = *src++;
|
||||
uint8 b = *src++;
|
||||
|
||||
uint8 col = 0;
|
||||
uint16 min = 11907;
|
||||
|
||||
for (int ii = 256; ii; ii--) {
|
||||
const uint8 *palEntry = _egaMatchTable + (ii - 1) * 3;
|
||||
if (*palEntry == 0xff)
|
||||
continue;
|
||||
|
||||
int e_r = palEntry[0];
|
||||
e_r -= r;
|
||||
int e_g = palEntry[1];
|
||||
e_g -= g;
|
||||
int e_b = palEntry[2];
|
||||
e_b -= b;
|
||||
|
||||
int s = (e_r * e_r) + (e_g * e_g) + (e_b * e_b);
|
||||
|
||||
if (s < min) {
|
||||
min = s;
|
||||
col = ii - 1;
|
||||
}
|
||||
}
|
||||
*dst++ = col;
|
||||
}
|
||||
|
||||
memset(_egaPixelValueTable, 0, 256);
|
||||
for (int i = 0; i < 256; i++)
|
||||
_egaPixelValueTable[_egaColorMap[i]] = i;
|
||||
|
||||
} else if (_renderMode == Common::kRenderEGA) {
|
||||
_screenPalette->copy(pal);
|
||||
_system->getPaletteManager()->setPalette(_screenPalette->getData(), 0, _screenPalette->getNumColors());
|
||||
|
||||
} else if (_renderMode != Common::kRenderCGA) {
|
||||
Screen::setScreenPalette(pal);
|
||||
}
|
||||
}
|
||||
|
||||
uint8 *Screen_EoB::encodeShape(uint16 x, uint16 y, uint16 w, uint16 h, bool no4bitEncoding, const uint8 *cgaMapping) {
|
||||
uint8 *shp = 0;
|
||||
uint16 shapesize = 0;
|
||||
|
||||
uint8 *srcPage = getPagePtr(_curPage) + y * 320 + (x << 3);
|
||||
uint8 *srcPage = getPagePtr(_curPage | 1) + y * 320 + (x << 3);
|
||||
uint8 *src = srcPage;
|
||||
|
||||
if (no4bitEncoding) {
|
||||
@ -206,7 +341,7 @@ uint8 *Screen_EoB::encodeShape(uint16 x, uint16 y, uint16 w, uint16 h, bool no4b
|
||||
*dst++ = (w & 0xff);
|
||||
*dst++ = (h & 0xff);
|
||||
|
||||
srcPage = getPagePtr(_curPage) + y * 320 + (x << 3);
|
||||
srcPage = getPagePtr(_curPage | 1) + y * 320 + (x << 3);
|
||||
src = srcPage;
|
||||
|
||||
h1 = h;
|
||||
@ -255,7 +390,7 @@ uint8 *Screen_EoB::encodeShape(uint16 x, uint16 y, uint16 w, uint16 h, bool no4b
|
||||
uint8 *pal = dst;
|
||||
dst += 0x10;
|
||||
|
||||
srcPage = getPagePtr(_curPage) + y * 320 + (x << 3);
|
||||
srcPage = getPagePtr(_curPage | 1) + y * 320 + (x << 3);
|
||||
src = srcPage;
|
||||
nib = col = 0;
|
||||
|
||||
@ -1096,12 +1231,74 @@ bool Screen_EoB::posWithinRect(int posX, int posY, int x1, int y1, int x2, int y
|
||||
return true;
|
||||
}
|
||||
|
||||
OldDOSFont::OldDOSFont() {
|
||||
void Screen_EoB::generateCGADitheringTables(const uint8 *mappingData) {
|
||||
for (int i = 0; i < 256; i++) {
|
||||
WRITE_BE_UINT16(&_cgaDitheringTables[0][i], (mappingData[i >> 4] << 8) | mappingData[(i & 0x0f) + 16]);
|
||||
WRITE_BE_UINT16(&_cgaDitheringTables[1][i], (mappingData[(i >> 4) + 16] << 8) | mappingData[i & 0x0f]);
|
||||
}
|
||||
}
|
||||
|
||||
const uint8 Screen_EoB::_egaMatchTable[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x1E, 0x1E, 0x00, 0x00, 0x1E,
|
||||
0x00, 0x1E, 0x1E, 0x0F, 0x00, 0x1E, 0x1E, 0x1E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x2D, 0x0F, 0x2D,
|
||||
0x0F, 0x0F, 0x2D, 0x2D, 0x2D, 0x0F, 0x0F, 0x2D, 0x0F, 0x2D, 0x2D, 0x2D, 0x0F, 0x2D, 0x2D, 0x2D,
|
||||
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x2A, 0x00, 0x1E, 0x1E, 0x00, 0x1E, 0x2A, 0x1E, 0x00, 0x1E, 0x1E,
|
||||
0x00, 0x2A, 0x1E, 0x0F, 0x1E, 0x1E, 0x1E, 0x2A, 0x0F, 0x0F, 0x21, 0x0F, 0x0F, 0x36, 0x0F, 0x2D,
|
||||
0x21, 0x0F, 0x2D, 0x36, 0x2D, 0x0F, 0x21, 0x2D, 0x0F, 0x36, 0x2D, 0x2D, 0x21, 0x2D, 0x2D, 0x36,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x1E, 0x1E, 0x1E, 0x00, 0x1E,
|
||||
0x1E, 0x1E, 0x1E, 0x21, 0x00, 0x1E, 0x2A, 0x1E, 0x0F, 0x21, 0x0F, 0x0F, 0x21, 0x2D, 0x0F, 0x36,
|
||||
0x0F, 0x0F, 0x36, 0x2D, 0x2D, 0x21, 0x0F, 0x2D, 0x21, 0x2D, 0x2D, 0x36, 0x0F, 0x2D, 0x36, 0x2D,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x2A, 0x2A, 0x1E, 0x1E, 0x1E, 0x1E,
|
||||
0x1E, 0x2A, 0x1E, 0x21, 0x1E, 0x1E, 0x2A, 0x2A, 0x0F, 0x21, 0x21, 0x0F, 0x21, 0x36, 0x0F, 0x36,
|
||||
0x21, 0x0F, 0x36, 0x36, 0x2D, 0x21, 0x21, 0x2D, 0x21, 0x36, 0x2D, 0x36, 0x21, 0x2D, 0x36, 0x36,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2A, 0x00, 0x00, 0x2A,
|
||||
0x00, 0x1E, 0x2A, 0x0F, 0x00, 0x2A, 0x1E, 0x1E, 0x21, 0x0F, 0x0F, 0x21, 0x0F, 0x2D, 0x21, 0x2D,
|
||||
0x0F, 0x21, 0x2D, 0x2D, 0x36, 0x0F, 0x0F, 0x36, 0x0F, 0x2D, 0x36, 0x2D, 0x0F, 0x36, 0x2D, 0x2D,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2A,
|
||||
0x00, 0x2A, 0x2A, 0x0F, 0x1E, 0x2A, 0x1E, 0x2A, 0x21, 0x0F, 0x21, 0x21, 0x0F, 0x36, 0x21, 0x2D,
|
||||
0x21, 0x21, 0x2D, 0x36, 0x36, 0x0F, 0x21, 0x36, 0x0F, 0x36, 0x36, 0x2D, 0x21, 0x36, 0x2D, 0x36,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0x2A, 0x15, 0x00, 0x2A, 0x21, 0x1E, 0x21, 0x15, 0x0F, 0x21, 0x15, 0x2D, 0x21, 0x2F,
|
||||
0x0F, 0x21, 0x2F, 0x2D, 0x36, 0x15, 0x0F, 0x36, 0x15, 0x2D, 0x36, 0x2F, 0x0F, 0x36, 0x2F, 0x2D,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2A, 0x2A, 0x2A, 0x21, 0x21, 0x21, 0x21, 0x21, 0x36, 0x21, 0x36,
|
||||
0x21, 0x21, 0x36, 0x36, 0x36, 0x21, 0x21, 0x36, 0x21, 0x36, 0x36, 0x36, 0x21, 0x36, 0x36, 0x36,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x15, 0x15, 0x15, 0x15, 0x15, 0x2F, 0x15, 0x2F,
|
||||
0x15, 0x15, 0x2F, 0x2F, 0x2F, 0x15, 0x15, 0x2F, 0x15, 0x2F, 0x2F, 0x2F, 0x15, 0x2F, 0x2F, 0x2F,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x15, 0x15, 0x3F, 0x15, 0x2F,
|
||||
0x2F, 0x15, 0x2F, 0x3F, 0x2F, 0x15, 0x2F, 0x2F, 0x15, 0x3F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x3F,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x15, 0x3F,
|
||||
0x15, 0x15, 0x3F, 0x2F, 0x2F, 0x2F, 0x15, 0x2F, 0x2F, 0x2F, 0x2F, 0x3F, 0x15, 0x2F, 0x3F, 0x2F,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0x15, 0x3F, 0x3F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x3F, 0x2F, 0x3F, 0x2F, 0x2F, 0x3F, 0x3F,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x15, 0x15, 0x3F, 0x15, 0x2F, 0x3F, 0x2F, 0x15, 0x3F, 0x2F, 0x2F,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x15, 0x3F, 0x3F, 0x2F, 0x2F, 0x3F, 0x2F, 0x3F,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F, 0x15, 0x3F, 0x3F, 0x2F,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F, 0x3F
|
||||
};
|
||||
|
||||
OldDOSFont::OldDOSFont(Common::RenderMode mode, const uint16 *cgaDitheringTable) : _renderMode(mode), _cgaDitheringTable(cgaDitheringTable) {
|
||||
_data = 0;
|
||||
_width = _height = _numGlyphs = 0;
|
||||
_bitmapOffsets = 0;
|
||||
}
|
||||
|
||||
OldDOSFont::~OldDOSFont() {
|
||||
unload();
|
||||
}
|
||||
|
||||
bool OldDOSFont::load(Common::SeekableReadStream &file) {
|
||||
unload();
|
||||
|
||||
@ -1192,36 +1389,87 @@ void OldDOSFont::drawChar(uint16 c, byte *dst, int pitch) const {
|
||||
uint8 color1 = _colorMap[1];
|
||||
uint8 color2 = _colorMap[0];
|
||||
|
||||
static const uint16 cgaColorMask[] = { 0, 0x5555, 0xAAAA, 0xFFFF };
|
||||
uint16 cgaMask1 = cgaColorMask[color1 & 3];
|
||||
uint16 cgaMask2 = cgaColorMask[color2 & 3];
|
||||
|
||||
int cH = _height;
|
||||
while (cH--) {
|
||||
int cW = w;
|
||||
uint8 last = 0;
|
||||
const uint8 *mtbl = _width == 8 ? renderMaskTable8 : renderMaskTable6;
|
||||
|
||||
for (bool runWidthLoop = true; runWidthLoop;) {
|
||||
if (_renderMode == Common::kRenderCGA) {
|
||||
uint8 s = *src++;
|
||||
uint8 m = *mtbl++;
|
||||
|
||||
for (uint8 i = 0x80; i; i >>= 1) {
|
||||
if (!(m & i)) {
|
||||
runWidthLoop = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (s & i) {
|
||||
if (color1)
|
||||
*dst = color1;
|
||||
} else if (color2) {
|
||||
*dst = color2;
|
||||
}
|
||||
dst++;
|
||||
uint8 in = s | last;
|
||||
uint16 cmp1 = 0;
|
||||
uint16 cmp2 = 0;
|
||||
|
||||
if (color1) {
|
||||
in &= m;
|
||||
cmp1 = _cgaDitheringTable[in];
|
||||
}
|
||||
|
||||
if (cW)
|
||||
cW--;
|
||||
else
|
||||
runWidthLoop = false;
|
||||
}
|
||||
if (color2) {
|
||||
in = ~in & m;
|
||||
cmp2 = _cgaDitheringTable[in];
|
||||
}
|
||||
|
||||
uint16 cDst = 0;
|
||||
uint8 sh = 14;
|
||||
for (int i = 0; i < _width; i++) {
|
||||
cDst |= ((dst[i] & 3) << sh);
|
||||
sh -= 2;
|
||||
}
|
||||
|
||||
uint16 out = (~(cmp1 | cmp2) & cDst) | (cmp1 & cgaMask1) | (cmp2 & cgaMask2);
|
||||
|
||||
sh = 14;
|
||||
for (int i = 0; i < _width; i++) {
|
||||
*dst++ = (out >> sh) & 3;
|
||||
sh -= 2;
|
||||
}
|
||||
|
||||
last = s;
|
||||
} else {
|
||||
for (bool runWidthLoop = true; runWidthLoop;) {
|
||||
uint8 s = *src++;
|
||||
uint8 m = *mtbl++;
|
||||
|
||||
for (uint8 i = 0x80; i; i >>= 1) {
|
||||
if (!(m & i)) {
|
||||
runWidthLoop = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (_renderMode == Common::kRenderCGA) {
|
||||
uint8 in = s | last;
|
||||
if (s & i) {
|
||||
if (color1)
|
||||
*dst = color1;
|
||||
} else if (color2) {
|
||||
*dst = color2;
|
||||
}
|
||||
last = s;
|
||||
} else {
|
||||
if (s & i) {
|
||||
if (color1)
|
||||
*dst = color1;
|
||||
} else if (color2) {
|
||||
*dst = color2;
|
||||
}
|
||||
}
|
||||
dst++;
|
||||
}
|
||||
|
||||
if (cW)
|
||||
cW--;
|
||||
else
|
||||
runWidthLoop = false;
|
||||
}
|
||||
}
|
||||
dst += pitch;
|
||||
}
|
||||
}
|
||||
|
@ -45,10 +45,14 @@ public:
|
||||
void loadFileDataToPage(Common::SeekableReadStream *s, int pageNum, uint32 size);
|
||||
|
||||
void printShadedText(const char *string, int x, int y, int col1, int col2);
|
||||
void loadEoBBitmap(const char *file, const uint8 *ditheringData, int tempPage, int destPage, int copyToPage);
|
||||
void loadEoBBitmap(const char *file, const uint8 *cgaMapping, int tempPage, int destPage, int convertToPage);
|
||||
void loadShapeSetBitmap(const char *file, int tempPage, int destPage);
|
||||
|
||||
uint8 *encodeShape(uint16 x, uint16 y, uint16 w, uint16 h, bool no4bitEncoding = false);
|
||||
void convertPage(int srcPage, int dstPage, const uint8 *cgaMapping);
|
||||
|
||||
void setScreenPalette(const Palette &pal);
|
||||
|
||||
uint8 *encodeShape(uint16 x, uint16 y, uint16 w, uint16 h, bool no4bitEncoding = false, const uint8 *cgaMapping = 0);
|
||||
void drawShape(uint8 pageNum, const uint8 *shapeData, int x, int y, int sd = -1, int flags = 0, ...);
|
||||
const uint8 *scaleShape(const uint8 *shapeData, int blockDistance);
|
||||
const uint8 *scaleShapeStep(const uint8 *shp);
|
||||
@ -77,6 +81,8 @@ private:
|
||||
void scaleShapeProcessLine(uint8 *&dst, const uint8 *&src);
|
||||
bool posWithinRect(int posX, int posY, int x1, int y1, int x2, int y2);
|
||||
|
||||
void generateCGADitheringTables(const uint8 *mappingData);
|
||||
|
||||
int _dsDiv, _dsRem, _dsScaleTmp;
|
||||
int16 _gfxX, _gfxY;
|
||||
uint8 _gfxCol;
|
||||
@ -90,6 +96,14 @@ private:
|
||||
|
||||
uint8 *_dsTempPage;
|
||||
|
||||
uint16 *_cgaDitheringTables[2];
|
||||
const uint8 *_cgaMappingDefault;
|
||||
|
||||
uint8 *_egaColorMap;
|
||||
uint8 *_egaPixelValueTable;
|
||||
bool _useHiResEGADithering;
|
||||
|
||||
static const uint8 _egaMatchTable[];
|
||||
static const ScreenDim _screenDimTable[];
|
||||
static const int _screenDimTableCount;
|
||||
};
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -110,7 +110,8 @@ void EoBIntroPlayer::start() {
|
||||
|
||||
if (!_vm->shouldQuit() && !_vm->skipFlag()) {
|
||||
_vm->snd_playSong(2);
|
||||
_screen->loadBitmap("TITLE-V.CMP", 5, 3, 0);
|
||||
_screen->loadBitmap((_vm->_configRenderMode == Common::kRenderCGA || _vm->_configRenderMode == Common::kRenderEGA) ? "TITLE-E.CMP" : "TITLE-V.CMP", 3, 5, 0);
|
||||
_screen->convertPage(5, 2, _vm->_cgaMappingDefault);
|
||||
_screen->crossFadeRegion(0, 0, 0, 0, 320, 200, 2, 0);
|
||||
_vm->delay(120 * _vm->_tickLength);
|
||||
}
|
||||
@ -121,7 +122,8 @@ void EoBIntroPlayer::start() {
|
||||
_screen->loadFileDataToPage(s, 6, s->size() - 768);
|
||||
delete s;
|
||||
} else {
|
||||
_screen->loadBitmap("TEXT.CMP", 3, 6, 0);
|
||||
_screen->loadBitmap("TEXT.CMP", 3, 5, 0);
|
||||
_screen->convertPage(5, 6, _vm->_cgaMappingAlt);
|
||||
}
|
||||
|
||||
tower();
|
||||
@ -139,8 +141,9 @@ void EoBIntroPlayer::start() {
|
||||
|
||||
void EoBIntroPlayer::openingCredits() {
|
||||
loadAndSetPalette(_filesOpening[5]);
|
||||
|
||||
_screen->loadBitmap(_filesOpening[4], 5, 3, 0);
|
||||
_screen->copyRegion(0, 0, 0, 0, 320, 200, 2, 0, Screen::CR_NO_P_CHECK);
|
||||
_screen->convertPage(3, 0, _vm->_cgaMappingAlt);
|
||||
_screen->updateScreen();
|
||||
|
||||
_vm->snd_playSong(1);
|
||||
@ -149,7 +152,8 @@ void EoBIntroPlayer::openingCredits() {
|
||||
for (int i = 0; i < 4 && !_vm->shouldQuit() && !_vm->skipFlag(); i++) {
|
||||
_screen->loadBitmap(_filesOpening[i], 5, 3, 0);
|
||||
uint32 nextFrameTimer = _vm->_system->getMillis() + _openingFrmDelay[i + 1] * _vm->_tickLength;
|
||||
_screen->crossFadeRegion(0, 50, 0, 50, 320, 102, 2, 0);
|
||||
_screen->convertPage(3, 4, _vm->_cgaMappingAlt);
|
||||
_screen->crossFadeRegion(0, 50, 0, 50, 320, 102, 4, 0);
|
||||
_vm->delayUntil(nextFrameTimer);
|
||||
}
|
||||
}
|
||||
@ -160,8 +164,8 @@ void EoBIntroPlayer::tower() {
|
||||
|
||||
_screen->loadBitmap(_filesTower[1], 5, 3, 0);
|
||||
_screen->setCurPage(2);
|
||||
uint8 *shp = _screen->encodeShape(0, 0, 16, 56, true);
|
||||
_screen->copyPage(3, 4);
|
||||
uint8 *shp = _screen->encodeShape(0, 0, 16, 56, true, _vm->_cgaMappingAlt);
|
||||
_screen->convertPage(3, 4, _vm->_cgaMappingAlt);
|
||||
_screen->clearCurPage();
|
||||
|
||||
for (int i = 0; i < 200; i += 64)
|
||||
@ -236,19 +240,19 @@ void EoBIntroPlayer::orb() {
|
||||
uint8 *shp[5];
|
||||
_screen->loadBitmap(_filesOrb[0], 5, 3, 0);
|
||||
_screen->setCurPage(2);
|
||||
shp[4] = _screen->encodeShape(0, 0, 20, 136, true);
|
||||
shp[4] = _screen->encodeShape(0, 0, 20, 136, true, _vm->_cgaMappingAlt);
|
||||
_screen->loadBitmap(_filesOrb[1], 5, 3, 0);
|
||||
shp[3] = _screen->encodeShape(16, 0, 16, 104, true);
|
||||
shp[3] = _screen->encodeShape(16, 0, 16, 104, true, _vm->_cgaMappingAlt);
|
||||
|
||||
_screen->fillRect(0, 0, 127, 103, 12);
|
||||
for (int i = 1; i < 4; i++) {
|
||||
copyBlurRegion(128, 0, 0, 0, 128, 104, i);
|
||||
shp[3 - i] = _screen->encodeShape(0, 0, 16, 104, true);
|
||||
shp[3 - i] = _screen->encodeShape(0, 0, 16, 104, true, _vm->_cgaMappingAlt);
|
||||
}
|
||||
|
||||
_screen->fillRect(0, 0, 159, 135, 12);
|
||||
_screen->setCurPage(0);
|
||||
_screen->copyPage(3, 4);
|
||||
_screen->convertPage(3, 4, _vm->_cgaMappingAlt);
|
||||
_screen->clearCurPage();
|
||||
|
||||
_vm->snd_playSoundEffect(6);
|
||||
@ -297,14 +301,14 @@ void EoBIntroPlayer::waterdeepEntry() {
|
||||
loadAndSetPalette(_filesWdEntry[0]);
|
||||
_screen->loadBitmap(_filesWdEntry[1], 5, 3, 0);
|
||||
_screen->setCurPage(2);
|
||||
shp[3] = _screen->encodeShape(0, 0, 20, 136, true);
|
||||
shp[3] = _screen->encodeShape(0, 0, 20, 136, true, _vm->_cgaMappingAlt);
|
||||
for (int i = 1; i < 4; i++) {
|
||||
copyBlurRegion(0, 0, 0, 0, 160, 136, i);
|
||||
shp[3 - i] = _screen->encodeShape(0, 0, 20, 136, true);
|
||||
shp[3 - i] = _screen->encodeShape(0, 0, 20, 136, true, _vm->_cgaMappingAlt);
|
||||
}
|
||||
_screen->setCurPage(0);
|
||||
|
||||
_screen->copyPage(3, 4);
|
||||
_screen->convertPage(3, 4, _vm->_cgaMappingAlt);
|
||||
_screen->fillRect(0, 168, 319, 199, 12, 0);
|
||||
_vm->snd_playSoundEffect(6);
|
||||
|
||||
@ -321,18 +325,18 @@ void EoBIntroPlayer::waterdeepEntry() {
|
||||
_vm->delay(50 * _vm->_tickLength);
|
||||
|
||||
_screen->setCurPage(2);
|
||||
shp[0] = _screen->encodeShape(20, 0, 20, 136, true);
|
||||
shp[0] = _screen->encodeShape(20, 0, 20, 136, true, _vm->_cgaMappingAlt);
|
||||
_screen->loadBitmap(_filesWdEntry[2], 5, 3, 0);
|
||||
shp[1] = _screen->encodeShape(0, 0, 20, 136, true);
|
||||
shp[2] = _screen->encodeShape(20, 0, 20, 136, true);
|
||||
shp[1] = _screen->encodeShape(0, 0, 20, 136, true, _vm->_cgaMappingAlt);
|
||||
shp[2] = _screen->encodeShape(20, 0, 20, 136, true, _vm->_cgaMappingAlt);
|
||||
_screen->loadBitmap(_filesWdEntry[3], 5, 3, 0);
|
||||
|
||||
for (int i = 0; i < 31; i++)
|
||||
shp2[i] = _screen->encodeShape(_wdEncodeX[i], 136 + (_wdEncodeY[i] << 3), _wdEncodeWH[i], _wdEncodeWH[i] << 3, true);
|
||||
shp2[i] = _screen->encodeShape(_wdEncodeX[i], 136 + (_wdEncodeY[i] << 3), _wdEncodeWH[i], _wdEncodeWH[i] << 3, true, _vm->_cgaMappingAlt);
|
||||
for (int i = 0; i < 3; i++)
|
||||
shp3[i] = _screen->encodeShape(5 * i, 152, 5, 32, true);
|
||||
shp3[i] = _screen->encodeShape(5 * i, 152, 5, 32, true, _vm->_cgaMappingAlt);
|
||||
|
||||
_screen->copyPage(3, 4);
|
||||
_screen->convertPage(3, 4, _vm->_cgaMappingAlt);
|
||||
|
||||
for (int i = 0; i < 3 && !_vm->shouldQuit() && !_vm->skipFlag(); i++) {
|
||||
uint32 end = _vm->_system->getMillis() + 3 * _vm->_tickLength;
|
||||
@ -391,7 +395,7 @@ void EoBIntroPlayer::king() {
|
||||
return;
|
||||
|
||||
_screen->loadBitmap(_filesKing[0], 5, 3, 0);
|
||||
_screen->copyPage(3, 4);
|
||||
_screen->convertPage(3, 4, _vm->_cgaMappingAlt);
|
||||
|
||||
int x = 15;
|
||||
int y = 14;
|
||||
@ -428,7 +432,7 @@ void EoBIntroPlayer::king() {
|
||||
_screen->loadBitmap(_filesKing[1], 5, 3, 0);
|
||||
_screen->setCurPage(2);
|
||||
for (int i = 0; i < 4; i++) {
|
||||
shp[i] = _screen->encodeShape(advEncX[i], 0, advEncW[i], 98, true);
|
||||
shp[i] = _screen->encodeShape(advEncX[i], 0, advEncW[i], 98, true, _vm->_cgaMappingAlt);
|
||||
dy[i] = 180 + ((_vm->_rnd.getRandomNumber(255) & 3) << 3);
|
||||
stepY[i] = (i * 5) & 3;
|
||||
}
|
||||
@ -477,8 +481,8 @@ void EoBIntroPlayer::hands() {
|
||||
return;
|
||||
|
||||
_screen->setCurPage(2);
|
||||
uint8 *shp1 = _screen->encodeShape(0, 140, 21, 60, true);
|
||||
uint8 *shp2 = _screen->encodeShape(21, 140, 12, 60, true);
|
||||
uint8 *shp1 = _screen->encodeShape(0, 140, 21, 60, true, _vm->_cgaMappingAlt);
|
||||
uint8 *shp2 = _screen->encodeShape(21, 140, 12, 60, true, _vm->_cgaMappingAlt);
|
||||
_screen->loadBitmap(_filesHands[0], 3, 5, 0);
|
||||
|
||||
_screen->fillRect(0, 160, 319, 199, 12, 0);
|
||||
@ -509,9 +513,9 @@ void EoBIntroPlayer::hands() {
|
||||
_vm->delay(15 * _vm->_tickLength);
|
||||
|
||||
_screen->setCurPage(4);
|
||||
shp1 = _screen->encodeShape(17, 0, 11, 120, true);
|
||||
shp2 = _screen->encodeShape(28, 112, 1, 31, true);
|
||||
uint8 *shp3 = _screen->encodeShape(9, 138, 14, 54, true);
|
||||
shp1 = _screen->encodeShape(17, 0, 11, 120, true, _vm->_cgaMappingAlt);
|
||||
shp2 = _screen->encodeShape(28, 112, 1, 31, true, _vm->_cgaMappingAlt);
|
||||
uint8 *shp3 = _screen->encodeShape(9, 138, 14, 54, true, _vm->_cgaMappingAlt);
|
||||
|
||||
_screen->setCurPage(2);
|
||||
_screen->fillRect(0, 0, 135, 63, 157);
|
||||
@ -549,8 +553,8 @@ void EoBIntroPlayer::hands() {
|
||||
_vm->delay(15 * _vm->_tickLength);
|
||||
|
||||
_screen->setCurPage(4);
|
||||
shp1 = _screen->encodeShape(0, 0, 17, 136, true);
|
||||
shp2 = _screen->encodeShape(0, 136, 9, 48, true);
|
||||
shp1 = _screen->encodeShape(0, 0, 17, 136, true, _vm->_cgaMappingAlt);
|
||||
shp2 = _screen->encodeShape(0, 136, 9, 48, true, _vm->_cgaMappingAlt);
|
||||
|
||||
_screen->setCurPage(2);
|
||||
_screen->fillRect(0, 0, 143, 95, 157);
|
||||
@ -576,8 +580,8 @@ void EoBIntroPlayer::hands() {
|
||||
_vm->delay(30 * _vm->_tickLength);
|
||||
|
||||
_screen->setCurPage(4);
|
||||
shp1 = _screen->encodeShape(28, 0, 11, 40, true);
|
||||
shp2 = _screen->encodeShape(28, 40, 10, 72, true);
|
||||
shp1 = _screen->encodeShape(28, 0, 11, 40, true, _vm->_cgaMappingAlt);
|
||||
shp2 = _screen->encodeShape(28, 40, 10, 72, true, _vm->_cgaMappingAlt);
|
||||
|
||||
_screen->setCurPage(2);
|
||||
_screen->fillRect(0, 0, 87, 112, 157);
|
||||
@ -622,11 +626,11 @@ void EoBIntroPlayer::waterdeepExit() {
|
||||
_screen->loadBitmap(_filesWdExit[0], 5, 3, 0);
|
||||
_screen->setCurPage(2);
|
||||
for (int i = 0; i < 31; i++)
|
||||
shp2[i] = _screen->encodeShape(_wdEncodeX[i], 136 + (_wdEncodeY[i] << 3), _wdEncodeWH[i], _wdEncodeWH[i] << 3, true);
|
||||
shp2[i] = _screen->encodeShape(_wdEncodeX[i], 136 + (_wdEncodeY[i] << 3), _wdEncodeWH[i], _wdEncodeWH[i] << 3, true, _vm->_cgaMappingAlt);
|
||||
for (int i = 0; i < 3; i++)
|
||||
shp3[i] = _screen->encodeShape(5 * i + 15, 152, 5, 32, true);
|
||||
uint8 *shp1 = _screen->encodeShape(31, 136, 5, 32, true);
|
||||
_screen->copyPage(3, 4);
|
||||
shp3[i] = _screen->encodeShape(5 * i + 15, 152, 5, 32, true, _vm->_cgaMappingAlt);
|
||||
uint8 *shp1 = _screen->encodeShape(31, 136, 5, 32, true, _vm->_cgaMappingAlt);
|
||||
_screen->convertPage(3, 4, _vm->_cgaMappingAlt);
|
||||
_screen->copyRegion(0, 0, 0, 136, 48, 36, 4, 4, Screen::CR_NO_P_CHECK);
|
||||
_screen->fillRect(0, 168, 319, 199, 12, 0);
|
||||
_screen->copyRegion(160, 0, 80, 24, 160, 136, 4, 0, Screen::CR_NO_P_CHECK);
|
||||
@ -676,7 +680,7 @@ void EoBIntroPlayer::waterdeepExit() {
|
||||
|
||||
loadAndSetPalette(_filesWdExit[1]);
|
||||
_screen->loadBitmap(_filesWdExit[2], 3, 5, 0);
|
||||
_screen->copyPage(5, 2);
|
||||
_screen->convertPage(5, 2, _vm->_cgaMappingAlt);
|
||||
whirlTransition();
|
||||
_vm->delay(6 * _vm->_tickLength);
|
||||
|
||||
@ -717,7 +721,7 @@ void EoBIntroPlayer::waterdeepExit() {
|
||||
}
|
||||
|
||||
_screen->loadBitmap(_filesWdExit[3], 3, 5, 0);
|
||||
_screen->copyPage(5, 2);
|
||||
_screen->convertPage(5, 2, _vm->_cgaMappingAlt);
|
||||
_vm->delay(30 * _vm->_tickLength);
|
||||
_screen->setCurPage(0);
|
||||
_screen->fillRect(0, 16, 319, 31, 12);
|
||||
@ -733,8 +737,8 @@ void EoBIntroPlayer::tunnel() {
|
||||
return;
|
||||
|
||||
_screen->setCurPage(4);
|
||||
uint8 *shp2 = _screen->encodeShape(20, 0, 20, 120, true);
|
||||
uint8 *shp1 = _screen->encodeShape(0, 0, 20, 120, true);
|
||||
uint8 *shp2 = _screen->encodeShape(20, 0, 20, 120, true, _vm->_cgaMappingAlt);
|
||||
uint8 *shp1 = _screen->encodeShape(0, 0, 20, 120, true, _vm->_cgaMappingAlt);
|
||||
_vm->drawBlockObject(1, 4, shp2, 160, 0, 0);
|
||||
_vm->drawBlockObject(1, 4, shp1, 0, 0, 0);
|
||||
delete[] shp1;
|
||||
@ -771,7 +775,7 @@ void EoBIntroPlayer::tunnel() {
|
||||
_screen->copyRegion(0, 0, 80, 32, 160, 120, 2, 0, Screen::CR_NO_P_CHECK);
|
||||
|
||||
_screen->loadBitmap(_filesTunnel[0], 5, 3, 0);
|
||||
_screen->copyPage(3, 4);
|
||||
_screen->convertPage(3, 4, _vm->_cgaMappingAlt);
|
||||
_screen->updateScreen();
|
||||
_vm->delay(40 * _vm->_tickLength);
|
||||
|
||||
@ -808,7 +812,7 @@ void EoBIntroPlayer::tunnel() {
|
||||
_vm->delay(40 * _vm->_tickLength);
|
||||
|
||||
_screen->loadBitmap(_filesTunnel[1], 5, 3, 0);
|
||||
_screen->copyPage(3, 4);
|
||||
_screen->convertPage(3, 4, _vm->_cgaMappingAlt);
|
||||
_vm->snd_playSoundEffect(6);
|
||||
_screen->copyRegion(0, 0, 80, 32, 160, 120, 4, 0, Screen::CR_NO_P_CHECK);
|
||||
_screen->updateScreen();
|
||||
@ -825,6 +829,8 @@ void EoBIntroPlayer::tunnel() {
|
||||
}
|
||||
|
||||
void EoBIntroPlayer::loadAndSetPalette(const char *filename) {
|
||||
if (_vm->_configRenderMode == Common::kRenderCGA || _vm->_configRenderMode == Common::kRenderEGA)
|
||||
return;
|
||||
_screen->loadPalette(filename, _screen->getPalette(0));
|
||||
_screen->getPalette(0).fill(0, 1, 0);
|
||||
_screen->setScreenPalette(_screen->getPalette(0));
|
||||
@ -975,8 +981,9 @@ int EoBEngine::mainMenu() {
|
||||
while (menuChoice >= 0 && !shouldQuit()) {
|
||||
switch (menuChoice) {
|
||||
case 0: {
|
||||
_screen->loadPalette("EOBPAL.COL", _screen->getPalette(0));
|
||||
_screen->loadEoBBitmap("INTRO", 0, 5, 3, 2);
|
||||
if (_configRenderMode != Common::kRenderEGA)
|
||||
_screen->loadPalette("EOBPAL.COL", _screen->getPalette(0));
|
||||
_screen->loadEoBBitmap("INTRO", _cgaMappingDefault, 5, 3, 2);
|
||||
_screen->setScreenPalette(_screen->getPalette(0));
|
||||
_screen->_curPage = 2;
|
||||
of = _screen->setFont(Screen::FID_6_FNT);
|
||||
@ -984,8 +991,8 @@ int EoBEngine::mainMenu() {
|
||||
_screen->printText(versionString.c_str(), 280 - versionString.size() * 6, 153, _screen->getPagePixel(2, 0, 0), 0);
|
||||
_screen->setFont(of);
|
||||
_screen->fillRect(0, 159, 319, 199, _screen->getPagePixel(2, 0, 0));
|
||||
gui_drawBox(77, 165, 173, 29, 13, 14, 12);
|
||||
gui_drawBox(76, 164, 175, 31, 13, 14, -1);
|
||||
gui_drawBox(77, 165, 173, 29, 14, 13, 12);
|
||||
gui_drawBox(76, 164, 175, 31, 14, 13, -1);
|
||||
_screen->_curPage = 0;
|
||||
_screen->copyRegion(0, 0, 0, 0, 320, 200, 2, 0, Screen::CR_NO_P_CHECK);
|
||||
_screen->updateScreen();
|
||||
@ -996,7 +1003,6 @@ int EoBEngine::mainMenu() {
|
||||
|
||||
case 1:
|
||||
// load game in progress
|
||||
//
|
||||
menuChoice = -1;
|
||||
break;
|
||||
|
||||
@ -1089,10 +1095,10 @@ void EoBEngine::seq_xdeath() {
|
||||
|
||||
_screen->loadShapeSetBitmap("XDEATH2", 5, 3);
|
||||
for (int i = 0; i < 4; i++)
|
||||
shapes1[i] = _screen->encodeShape(i / 2 * 14, i / 2 * 88, 14, 88, true);
|
||||
shapes1[i] = _screen->encodeShape(i / 2 * 14, i / 2 * 88, 14, 88, true, _cgaMappingDefault);
|
||||
_screen->loadShapeSetBitmap("XDEATH3", 5, 3);
|
||||
shapes2 = _screen->encodeShape(22, 0, 16, 95, true);
|
||||
_screen->loadEoBBitmap("XDEATH1", 0, 5, 3, -1);
|
||||
shapes2 = _screen->encodeShape(22, 0, 16, 95, true, _cgaMappingDefault);
|
||||
_screen->loadEoBBitmap("XDEATH1", _cgaMappingDefault, 5, 3, -1);
|
||||
_screen->setCurPage(0);
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
|
@ -37,7 +37,7 @@ void EoBCoreEngine::loadMonsterShapes(const char *filename, int monsterIndex, bo
|
||||
const uint16 *enc = &_encodeMonsterShpTable[encodeTableIndex << 2];
|
||||
|
||||
for (int i = 0; i < 6; i++, enc += 4)
|
||||
_monsterShapes[monsterIndex + i] = _screen->encodeShape(enc[0], enc[1], enc[2], enc[3]);
|
||||
_monsterShapes[monsterIndex + i] = _screen->encodeShape(enc[0], enc[1], enc[2], enc[3], false, _cgaMappingDefault);
|
||||
|
||||
generateMonsterPalettes(filename, monsterIndex);
|
||||
|
||||
|
@ -38,7 +38,7 @@
|
||||
|
||||
namespace Kyra {
|
||||
|
||||
#define RESFILE_VERSION 80
|
||||
#define RESFILE_VERSION 81
|
||||
|
||||
namespace {
|
||||
bool checkKyraDat(Common::SeekableReadStream *file) {
|
||||
|
@ -28,12 +28,12 @@
|
||||
namespace Kyra {
|
||||
|
||||
#ifdef ENABLE_EOB
|
||||
const EoBSequenceStep *StaticResource::loadEoB2SeqData(int id, int &entries) {
|
||||
return (const EoBSequenceStep *)getData(id, kEoB2SequenceData, entries);
|
||||
const DarkMoonAnimCommand *StaticResource::loadEoB2SeqData(int id, int &entries) {
|
||||
return (const DarkMoonAnimCommand *)getData(id, kEoB2SequenceData, entries);
|
||||
}
|
||||
|
||||
const EoBShapeDef *StaticResource::loadEoB2ShapeData(int id, int &entries) {
|
||||
return (const EoBShapeDef *)getData(id, kEoB2ShapeData, entries);
|
||||
const DarkMoonShapeDef *StaticResource::loadEoB2ShapeData(int id, int &entries) {
|
||||
return (const DarkMoonShapeDef *)getData(id, kEoB2ShapeData, entries);
|
||||
}
|
||||
|
||||
const EoBCharacter *StaticResource::loadEoBNpcData(int id, int &entries) {
|
||||
@ -43,7 +43,7 @@ const EoBCharacter *StaticResource::loadEoBNpcData(int id, int &entries) {
|
||||
bool StaticResource::loadEoB2SeqData(Common::SeekableReadStream &stream, void *&ptr, int &size) {
|
||||
size = stream.size() / 11;
|
||||
|
||||
EoBSequenceStep *s = new EoBSequenceStep[size];
|
||||
DarkMoonAnimCommand *s = new DarkMoonAnimCommand[size];
|
||||
|
||||
for (int i = 0; i < size; i++) {
|
||||
s[i].command = stream.readByte();
|
||||
@ -65,7 +65,7 @@ bool StaticResource::loadEoB2SeqData(Common::SeekableReadStream &stream, void *&
|
||||
bool StaticResource::loadEoB2ShapeData(Common::SeekableReadStream &stream, void *&ptr, int &size) {
|
||||
size = stream.size() / 6;
|
||||
|
||||
EoBShapeDef *s = new EoBShapeDef[size];
|
||||
DarkMoonShapeDef *s = new DarkMoonShapeDef[size];
|
||||
|
||||
for (int i = 0; i < size; i++) {
|
||||
s[i].index = stream.readSint16BE();
|
||||
@ -127,14 +127,14 @@ bool StaticResource::loadEoBNpcData(Common::SeekableReadStream &stream, void *&p
|
||||
}
|
||||
|
||||
void StaticResource::freeEoB2SeqData(void *&ptr, int &size) {
|
||||
EoBSequenceStep *d = (EoBSequenceStep *)ptr;
|
||||
DarkMoonAnimCommand *d = (DarkMoonAnimCommand *)ptr;
|
||||
delete[] d;
|
||||
ptr = 0;
|
||||
size = 0;
|
||||
}
|
||||
|
||||
void StaticResource::freeEoB2ShapeData(void *&ptr, int &size) {
|
||||
EoBShapeDef *d = (EoBShapeDef *)ptr;
|
||||
DarkMoonShapeDef *d = (DarkMoonShapeDef *)ptr;
|
||||
delete[] d;
|
||||
ptr = 0;
|
||||
size = 0;
|
||||
@ -1035,6 +1035,18 @@ void EoBEngine::initStaticResource() {
|
||||
_beholderSpellList = _staticres->loadRawData(kEoB1BeholderSpellList, temp);
|
||||
_beholderSfx = _staticres->loadRawData(kEoB1BeholderSfx, temp);
|
||||
|
||||
_cgaMappingDefault = _staticres->loadRawData(kEoB1CgaMappingDefault, temp);
|
||||
_cgaMappingAlt = _staticres->loadRawData(kEoB1CgaMappingAlt, temp);
|
||||
_cgaMappingInv = _staticres->loadRawData(kEoB1CgaMappingInv, temp);
|
||||
_cgaMappingItemsL = _staticres->loadRawData(kEoB1CgaMappingItemsL, temp);
|
||||
_cgaMappingItemsS = _staticres->loadRawData(kEoB1CgaMappingItemsS, temp);
|
||||
_cgaMappingThrown = _staticres->loadRawData(kEoB1CgaMappingThrown, temp);
|
||||
_cgaMappingIcons = _staticres->loadRawData(kEoB1CgaMappingIcons, temp);
|
||||
_cgaMappingDeco = _staticres->loadRawData(kEoB1CgaMappingDeco, temp);
|
||||
_cgaLevelMappingIndex = _staticres->loadRawData(kEoB1CgaLevelMappingIndex, temp);
|
||||
for (int i = 0; i < 5; i++)
|
||||
_cgaMappingLevel[i] = _staticres->loadRawData(kEoB1CgaMappingLevel0 + i, temp);
|
||||
|
||||
_turnUndeadString = _staticres->loadStrings(kEoB1TurnUndeadString, temp);
|
||||
|
||||
_npcShpData = _staticres->loadRawData(kEoB1NpcShpData, temp);
|
||||
@ -1174,18 +1186,22 @@ const KyraRpgGUISettings EoBEngine::_guiSettings = {
|
||||
{ 135, 130, 132, 133, 133, 17, 23, 20, 184, 177, 180, 184, 177, 180 }
|
||||
};
|
||||
|
||||
const uint8 EoBEngine::_egaDefaultPalette[] = {
|
||||
0, 5, 3, 2, 10, 14, 12, 6, 4, 11, 9, 1, 0, 8, 7, 15
|
||||
};
|
||||
|
||||
void DarkMoonEngine::initStaticResource() {
|
||||
int temp;
|
||||
_mainMenuStrings = _staticres->loadStrings(kEoB2MainMenuStrings, temp);
|
||||
_introStrings = _staticres->loadStrings(kEoB2IntroStrings, temp);
|
||||
_cpsFilesIntro = _staticres->loadStrings(kEoB2IntroCPSFiles, temp);
|
||||
|
||||
_seqIntro = new const EoBSequenceStep*[44];
|
||||
_animIntro = new const DarkMoonAnimCommand*[44];
|
||||
for (int i = 0; i < 44; i++)
|
||||
_seqIntro[i] = _staticres->loadEoB2SeqData(kEoB2IntroSeqData00 + i, temp);
|
||||
_animIntro[i] = _staticres->loadEoB2SeqData(kEob2IntroAnimData00 + i, temp);
|
||||
|
||||
_shapesIntro = new const EoBShapeDef*[13];
|
||||
memset(_shapesIntro, 0, sizeof(EoBShapeDef *) * 13);
|
||||
_shapesIntro = new const DarkMoonShapeDef*[13];
|
||||
memset(_shapesIntro, 0, sizeof(DarkMoonShapeDef*) * 13);
|
||||
_shapesIntro[0] = _staticres->loadEoB2ShapeData(kEoB2IntroShapes00, temp);
|
||||
_shapesIntro[1] = _staticres->loadEoB2ShapeData(kEoB2IntroShapes01, temp);
|
||||
_shapesIntro[4] = _staticres->loadEoB2ShapeData(kEoB2IntroShapes04, temp);
|
||||
@ -1195,12 +1211,12 @@ void DarkMoonEngine::initStaticResource() {
|
||||
_creditsData = _staticres->loadRawData(kEoB2CreditsData, temp);
|
||||
_cpsFilesFinale = _staticres->loadStrings(kEoB2FinaleCPSFiles, temp);
|
||||
|
||||
_seqFinale = new const EoBSequenceStep*[21];
|
||||
_animFinale = new const DarkMoonAnimCommand*[21];
|
||||
for (int i = 0; i < 21; i++)
|
||||
_seqFinale[i] = _staticres->loadEoB2SeqData(kEoB2FinaleSeqData00 + i, temp);
|
||||
_animFinale[i] = _staticres->loadEoB2SeqData(kEob2FinaleAnimData00 + i, temp);
|
||||
|
||||
_shapesFinale = new const EoBShapeDef*[13];
|
||||
memset(_shapesFinale, 0, sizeof(EoBShapeDef *) * 13);
|
||||
_shapesFinale = new const DarkMoonShapeDef*[13];
|
||||
memset(_shapesFinale, 0, sizeof(DarkMoonShapeDef*) * 13);
|
||||
_shapesFinale[0] = _staticres->loadEoB2ShapeData(kEoB2FinaleShapes00, temp);
|
||||
_shapesFinale[3] = _staticres->loadEoB2ShapeData(kEoB2FinaleShapes03, temp);
|
||||
_shapesFinale[7] = _staticres->loadEoB2ShapeData(kEoB2FinaleShapes07, temp);
|
||||
@ -1275,15 +1291,23 @@ void DarkMoonEngine::initSpells() {
|
||||
}
|
||||
}
|
||||
|
||||
const char *DarkMoonEngine::_palFilesIntro[] = {
|
||||
"PALETTE1.PAL", // EGA: palette0.pal
|
||||
const char *DarkMoonEngine::_palFilesIntroVGA[] = {
|
||||
"PALETTE1.PAL",
|
||||
"PALETTE3.PAL",
|
||||
"PALETTE2.PAL",
|
||||
"PALETTE4.PAL",
|
||||
0
|
||||
};
|
||||
|
||||
const char *DarkMoonEngine::_palFilesFinale[] = {
|
||||
const char *DarkMoonEngine::_palFilesIntroEGA[] = {
|
||||
"PALETTE0.PAL",
|
||||
"PALETTE3.PAL",
|
||||
"PALETTE2.PAL",
|
||||
"PALETTE4.PAL",
|
||||
0
|
||||
};
|
||||
|
||||
const char *DarkMoonEngine::_palFilesFinaleVGA[] = {
|
||||
"FINALE_0.PAL",
|
||||
"FINALE_0.PAL",
|
||||
"FINALE_1.PAL",
|
||||
@ -1296,11 +1320,28 @@ const char *DarkMoonEngine::_palFilesFinale[] = {
|
||||
0
|
||||
};
|
||||
|
||||
const char *DarkMoonEngine::_palFilesFinaleEGA[] = {
|
||||
"FINALE_0.PAL",
|
||||
"FINALE_0.PAL",
|
||||
"FINALE_1.PAL",
|
||||
"FINALE_2.PAL",
|
||||
"FINALE_3.PAL",
|
||||
"FINALE_4.PAL",
|
||||
"FINALE_5.PAL",
|
||||
"FINALE_0.PAL",
|
||||
"FINALE_0.PAL",
|
||||
0
|
||||
};
|
||||
|
||||
const KyraRpgGUISettings DarkMoonEngine::_guiSettings = {
|
||||
{ 9, 15, 95, 9, 7, { 221, 76 }, { 189, 162 }, { 95, 95 } },
|
||||
{ 186, 181, 183, 133, 184, 17, 23, 20, 186, 181, 183, 182, 177, 180 }
|
||||
};
|
||||
|
||||
const uint8 DarkMoonEngine::_egaDefaultPalette[] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
|
||||
};
|
||||
|
||||
#endif // ENABLE_EOB
|
||||
|
||||
} // End of namespace Kyra
|
||||
|
Loading…
x
Reference in New Issue
Block a user