aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra
diff options
context:
space:
mode:
authorathrxx2019-04-13 23:26:47 +0200
committerathrxx2019-04-13 23:26:47 +0200
commit80e7401d9941455781194ab2079423784a56dd26 (patch)
treeb9fabd6444761ffb842c34c6606db109f0bcd6d1 /engines/kyra
parent087444b6981606369bc93b19993d6acd6dbf6354 (diff)
downloadscummvm-rg350-80e7401d9941455781194ab2079423784a56dd26.tar.gz
scummvm-rg350-80e7401d9941455781194ab2079423784a56dd26.tar.bz2
scummvm-rg350-80e7401d9941455781194ab2079423784a56dd26.zip
KYRA: (EOB) - try to fix PSP and OpenPandora
This is guesswork. I really don't understand the actual problem (internal compiler error: in get_addr_dereference_operands, at tree-ssa-operands.c:1698)
Diffstat (limited to 'engines/kyra')
-rw-r--r--engines/kyra/sequence/sequences_darkmoon.cpp305
1 files changed, 155 insertions, 150 deletions
diff --git a/engines/kyra/sequence/sequences_darkmoon.cpp b/engines/kyra/sequence/sequences_darkmoon.cpp
index b68bbfd939..76c8dfcd08 100644
--- a/engines/kyra/sequence/sequences_darkmoon.cpp
+++ b/engines/kyra/sequence/sequences_darkmoon.cpp
@@ -65,6 +65,7 @@ public:
void updateAmigaSound();
private:
+ void init(Mode mode);
void setPaletteWithoutTextColor(int index);
OSystem *_system;
@@ -1121,156 +1122,7 @@ void DarkMoonEngine::seq_playCredits(DarkmoonSequenceHelper *sq, const uint8 *da
}
DarkmoonSequenceHelper::DarkmoonSequenceHelper(OSystem *system, DarkMoonEngine *vm, Screen_EoB *screen, Mode mode) : _system(system), _vm(vm), _screen(screen) {
- assert(mode == kIntro || mode == kFinale);
-
- static const uint16 soundMarkersFMTowns[2][8] = {
- { 229, 447, 670, 1380, 2037, 3000, 4475, 4825 },
- { 475, 2030, 2200, 2752, 3475, 0, 0, 0 }
- };
-
- int size = 0;
- _platformAnimOffset = 0;
- _sndNextTrack = 1;
- _sndNextTrackMarker = 0;
- _sndMarkersFMTowns = soundMarkersFMTowns[mode];
-
- if (mode == kIntro) {
- _config = new Config(
- _vm->staticres()->loadStrings(kEoB2IntroStrings, size),
- _vm->staticres()->loadStrings(kEoB2IntroCPSFiles, size),
- new const uint8*[16],
- _vm->_flags.platform == Common::kPlatformAmiga ? 0 : (_vm->_configRenderMode == Common::kRenderEGA ? _palFilesIntroEGA : _palFilesIntroVGA),
- new const DarkMoonShapeDef*[16],
- new const DarkMoonAnimCommand *[44],
- false,
- false,
- true,
- true,
- _vm->_flags.platform == Common::kPlatformAmiga ? 1 : 0,
- 0,
- false,
- 2
- );
-
- for (int i = 0; i < 44; i++)
- _config->animData[i] = _vm->staticres()->loadEoB2SeqData(kEoB2IntroAnimData00 + i, size);
-
- for (int i = 0; i < 16; i++)
- _config->cpsData[i] = _vm->staticres()->loadRawData(kEoB2IntroCpsDataStreet1 + i, size);
-
- memset(_config->shapeDefs, 0, 16 * sizeof(DarkMoonShapeDef*));
- _config->shapeDefs[0] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes00, size);
- _config->shapeDefs[1] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes01, size);
- _config->shapeDefs[4] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes04, size);
- _config->shapeDefs[7] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes07, size);
- _config->shapeDefs[13] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes13, size);
- _config->shapeDefs[14] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes14, size);
- _config->shapeDefs[15] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes15, size);
-
- } else {
- _config = new Config(
- _vm->staticres()->loadStrings(kEoB2FinaleStrings, size),
- _vm->staticres()->loadStrings(kEoB2FinaleCPSFiles, size),
- new const uint8*[13],
- _vm->_flags.platform == Common::kPlatformAmiga ? _palFilesFinaleAmiga : (_vm->_configRenderMode == Common::kRenderEGA ? _palFilesFinaleEGA : _palFilesFinaleVGA),
- new const DarkMoonShapeDef*[13],
- new const DarkMoonAnimCommand *[21],
- true,
- true,
- false,
- false,
- _vm->_flags.platform == Common::kPlatformAmiga ? 2 : 1,
- 18,
- true,
- 6
- );
-
- for (int i = 0; i < 21; i++)
- _config->animData[i] = _vm->staticres()->loadEoB2SeqData(kEoB2FinaleAnimData00 + i, size);
-
- for (int i = 0; i < 13; i++)
- _config->cpsData[i] = _vm->staticres()->loadRawData(kEoB2FinaleCpsDataDragon1 + i, size);
-
- memset(_config->shapeDefs, 0, 13 * sizeof(DarkMoonShapeDef*));
- _config->shapeDefs[0] = _vm->staticres()->loadEoB2ShapeData(kEoB2FinaleShapes00, size);
- _config->shapeDefs[3] = _vm->staticres()->loadEoB2ShapeData(kEoB2FinaleShapes03, size);
- _config->shapeDefs[7] = _vm->staticres()->loadEoB2ShapeData(kEoB2FinaleShapes07, size);
- _config->shapeDefs[9] = _vm->staticres()->loadEoB2ShapeData(kEoB2FinaleShapes09, size);
- _config->shapeDefs[10] = _vm->staticres()->loadEoB2ShapeData(kEoB2FinaleShapes10, size);
- }
-
- _screen->enableHiColorMode(false);
- _screen->disableDualPalettesSplitScreen();
- int numColors = 256;
-
- if (_vm->_flags.platform == Common::kPlatformAmiga) {
- static const int8 palIndex[13] = { -1, -1, 3, 2, 4, 5, 6, 7, -1, -1, -1, -1, -1 };
- for (int i = 0; i < 13; ++i)
- _palettes[i] = &_screen->getPalette(i);
- Common::SeekableReadStream *s = _config->palFiles ? _vm->resource()->createReadStream(_config->palFiles[0]) : 0;
- numColors = 32;
- for (int i = 0; i < 13; ++i) {
- if (s && palIndex[i] != -1)
- _palettes[palIndex[i]]->loadAmigaPalette(*s, 0, 32);
- }
- delete s;
- } else {
- for (int i = 0; _config->palFiles[i]; i++) {
- if (i < 4)
- _palettes[i] = &_screen->getPalette(i);
- else
- _palettes[i] = new Palette(256);
- _screen->loadPalette(_config->palFiles[i], *_palettes[i]);
- }
-
- for (int i = 9; i < 13; ++i)
- _palettes[i] = new Palette(256);
- }
-
- _palettes[9]->fill(0, numColors, 0);
- _palettes[10]->fill(0, numColors, 63);
- _palettes[11]->fill(0, numColors, 0);
-
-
- if (_vm->gameFlags().platform == Common::kPlatformFMTowns)
- _screen->loadPalette("PALETTE.COL", *_palettes[12]);
-
- for (int i = 0; i < 7; i++)
- _fadingTables[i] = 0;
-
- uint8 *fadeData = (_vm->_configRenderMode != Common::kRenderCGA && _vm->_configRenderMode != Common::kRenderEGA) ? _vm->resource()->fileData("FADING.DAT", 0) : 0;
-
- if (fadeData) {
- for (int i = 0; i < 7; i++) {
- _fadingTables[i] = new uint8[256];
- memcpy(_fadingTables[i], fadeData + (i << 8), 256);
- }
- } else {
- if (_vm->_flags.platform != Common::kPlatformAmiga && _vm->_configRenderMode != Common::kRenderCGA && _vm->_configRenderMode != Common::kRenderEGA) {
- uint8 *pal = _vm->resource()->fileData("PALETTE1.PAL", 0);
- for (int i = 0; i < 7; i++)
- _screen->createFadeTable(pal, _fadingTables[i], 18, (i + 1) * 36);
- delete[] pal;
- }
- }
-
- delete[] fadeData;
-
- _shapes = new const uint8*[54];
- memset(_shapes, 0, 54 * sizeof(uint8 *));
-
- _fadePalTimer = 0;
- _fadePalRate = 0;
-
- memset(_textColor, 0, 3);
-
- _screen->setScreenPalette(*_palettes[0]);
- _prevFont = _screen->setFont(_vm->gameFlags().platform == Common::kPlatformFMTowns ? Screen::FID_SJIS_LARGE_FNT : Screen::FID_8_FNT);
- _screen->hideMouse();
-
- _vm->delay(150);
- _vm->_eventList.clear();
- _vm->_allowSkip = true;
+ init(mode);
}
DarkmoonSequenceHelper::~DarkmoonSequenceHelper() {
@@ -1625,6 +1477,159 @@ void DarkmoonSequenceHelper::update(int srcPage) {
_screen->updateScreen();
}
+void DarkmoonSequenceHelper::init(Mode mode) {
+ assert(mode == kIntro || mode == kFinale);
+
+ static const uint16 soundMarkersFMTowns[2][8] = {
+ { 229, 447, 670, 1380, 2037, 3000, 4475, 4825 },
+ { 475, 2030, 2200, 2752, 3475, 0, 0, 0 }
+ };
+
+ int size = 0;
+ _platformAnimOffset = 0;
+ _sndNextTrack = 1;
+ _sndNextTrackMarker = 0;
+ _sndMarkersFMTowns = soundMarkersFMTowns[mode];
+
+ if (mode == kIntro) {
+ _config = new Config(
+ _vm->staticres()->loadStrings(kEoB2IntroStrings, size),
+ _vm->staticres()->loadStrings(kEoB2IntroCPSFiles, size),
+ new const uint8*[16],
+ _vm->_flags.platform == Common::kPlatformAmiga ? 0 : (_vm->_configRenderMode == Common::kRenderEGA ? _palFilesIntroEGA : _palFilesIntroVGA),
+ new const DarkMoonShapeDef*[16],
+ new const DarkMoonAnimCommand *[44],
+ false,
+ false,
+ true,
+ true,
+ _vm->_flags.platform == Common::kPlatformAmiga ? 1 : 0,
+ 0,
+ false,
+ 2
+ );
+
+ for (int i = 0; i < 44; i++)
+ _config->animData[i] = _vm->staticres()->loadEoB2SeqData(kEoB2IntroAnimData00 + i, size);
+
+ for (int i = 0; i < 16; i++)
+ _config->cpsData[i] = _vm->staticres()->loadRawData(kEoB2IntroCpsDataStreet1 + i, size);
+
+ memset(_config->shapeDefs, 0, 16 * sizeof(DarkMoonShapeDef*));
+ _config->shapeDefs[0] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes00, size);
+ _config->shapeDefs[1] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes01, size);
+ _config->shapeDefs[4] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes04, size);
+ _config->shapeDefs[7] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes07, size);
+ _config->shapeDefs[13] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes13, size);
+ _config->shapeDefs[14] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes14, size);
+ _config->shapeDefs[15] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes15, size);
+
+ } else {
+ _config = new Config(
+ _vm->staticres()->loadStrings(kEoB2FinaleStrings, size),
+ _vm->staticres()->loadStrings(kEoB2FinaleCPSFiles, size),
+ new const uint8*[13],
+ _vm->_flags.platform == Common::kPlatformAmiga ? _palFilesFinaleAmiga : (_vm->_configRenderMode == Common::kRenderEGA ? _palFilesFinaleEGA : _palFilesFinaleVGA),
+ new const DarkMoonShapeDef*[13],
+ new const DarkMoonAnimCommand *[21],
+ true,
+ true,
+ false,
+ false,
+ _vm->_flags.platform == Common::kPlatformAmiga ? 2 : 1,
+ 18,
+ true,
+ 6
+ );
+
+ for (int i = 0; i < 21; i++)
+ _config->animData[i] = _vm->staticres()->loadEoB2SeqData(kEoB2FinaleAnimData00 + i, size);
+
+ for (int i = 0; i < 13; i++)
+ _config->cpsData[i] = _vm->staticres()->loadRawData(kEoB2FinaleCpsDataDragon1 + i, size);
+
+ memset(_config->shapeDefs, 0, 13 * sizeof(DarkMoonShapeDef*));
+ _config->shapeDefs[0] = _vm->staticres()->loadEoB2ShapeData(kEoB2FinaleShapes00, size);
+ _config->shapeDefs[3] = _vm->staticres()->loadEoB2ShapeData(kEoB2FinaleShapes03, size);
+ _config->shapeDefs[7] = _vm->staticres()->loadEoB2ShapeData(kEoB2FinaleShapes07, size);
+ _config->shapeDefs[9] = _vm->staticres()->loadEoB2ShapeData(kEoB2FinaleShapes09, size);
+ _config->shapeDefs[10] = _vm->staticres()->loadEoB2ShapeData(kEoB2FinaleShapes10, size);
+ }
+
+ _screen->enableHiColorMode(false);
+ _screen->disableDualPalettesSplitScreen();
+ int numColors = 256;
+
+ if (_vm->_flags.platform == Common::kPlatformAmiga) {
+ static const int8 palIndex[13] = { -1, -1, 3, 2, 4, 5, 6, 7, -1, -1, -1, -1, -1 };
+ for (int i = 0; i < 13; ++i)
+ _palettes[i] = &_screen->getPalette(i);
+ Common::SeekableReadStream *s = _config->palFiles ? _vm->resource()->createReadStream(_config->palFiles[0]) : 0;
+ numColors = 32;
+ for (int i = 0; i < 13; ++i) {
+ if (s && palIndex[i] != -1)
+ _palettes[palIndex[i]]->loadAmigaPalette(*s, 0, 32);
+ }
+ delete s;
+ } else {
+ for (int i = 0; _config->palFiles[i]; i++) {
+ if (i < 4)
+ _palettes[i] = &_screen->getPalette(i);
+ else
+ _palettes[i] = new Palette(256);
+ _screen->loadPalette(_config->palFiles[i], *_palettes[i]);
+ }
+
+ for (int i = 9; i < 13; ++i)
+ _palettes[i] = new Palette(256);
+ }
+
+ _palettes[9]->fill(0, numColors, 0);
+ _palettes[10]->fill(0, numColors, 63);
+ _palettes[11]->fill(0, numColors, 0);
+
+
+ if (_vm->gameFlags().platform == Common::kPlatformFMTowns)
+ _screen->loadPalette("PALETTE.COL", *_palettes[12]);
+
+ for (int i = 0; i < 7; i++)
+ _fadingTables[i] = 0;
+
+ uint8 *fadeData = (_vm->_configRenderMode != Common::kRenderCGA && _vm->_configRenderMode != Common::kRenderEGA) ? _vm->resource()->fileData("FADING.DAT", 0) : 0;
+
+ if (fadeData) {
+ for (int i = 0; i < 7; i++) {
+ _fadingTables[i] = new uint8[256];
+ memcpy(_fadingTables[i], fadeData + (i << 8), 256);
+ }
+ } else {
+ if (_vm->_flags.platform != Common::kPlatformAmiga && _vm->_configRenderMode != Common::kRenderCGA && _vm->_configRenderMode != Common::kRenderEGA) {
+ uint8 *pal = _vm->resource()->fileData("PALETTE1.PAL", 0);
+ for (int i = 0; i < 7; i++)
+ _screen->createFadeTable(pal, _fadingTables[i], 18, (i + 1) * 36);
+ delete[] pal;
+ }
+ }
+
+ delete[] fadeData;
+
+ _shapes = new const uint8*[54];
+ memset(_shapes, 0, 54 * sizeof(uint8 *));
+
+ _fadePalTimer = 0;
+ _fadePalRate = 0;
+
+ memset(_textColor, 0, 3);
+
+ _screen->setScreenPalette(*_palettes[0]);
+ _prevFont = _screen->setFont(_vm->gameFlags().platform == Common::kPlatformFMTowns ? Screen::FID_SJIS_LARGE_FNT : Screen::FID_8_FNT);
+ _screen->hideMouse();
+
+ _vm->delay(150);
+ _vm->_eventList.clear();
+ _vm->_allowSkip = true;
+}
+
void DarkmoonSequenceHelper::setPaletteWithoutTextColor(int index) {
if (_vm->_configRenderMode == Common::kRenderEGA || _vm->skipFlag() || _vm->shouldQuit())
return;