mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-27 21:54:15 +00:00
- complete support for the playable HOF demo
svn-id: r31560
This commit is contained in:
parent
ba90659705
commit
1d086550a7
@ -1088,6 +1088,7 @@ protected:
|
|||||||
int o2_isVoicePlaying(ScriptState *script);
|
int o2_isVoicePlaying(ScriptState *script);
|
||||||
int o2_stopVoicePlaying(ScriptState *script);
|
int o2_stopVoicePlaying(ScriptState *script);
|
||||||
int o2_getGameLanguage(ScriptState *script);
|
int o2_getGameLanguage(ScriptState *script);
|
||||||
|
int o2_demoFinale(ScriptState *script);
|
||||||
int o2_dummy(ScriptState *script);
|
int o2_dummy(ScriptState *script);
|
||||||
|
|
||||||
// opcodes temporary
|
// opcodes temporary
|
||||||
|
@ -306,6 +306,11 @@ Common::SeekableReadStream *Resource::getFileStream(const Common::String &file)
|
|||||||
if (iter == _map.end())
|
if (iter == _map.end())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
Common::File *stream = new Common::File();
|
||||||
|
if (stream->open(file)) {
|
||||||
|
return stream;
|
||||||
|
} else {
|
||||||
|
delete stream;
|
||||||
if (!iter->_value.parent.empty()) {
|
if (!iter->_value.parent.empty()) {
|
||||||
Common::SeekableReadStream *parent = getFileStream(iter->_value.parent);
|
Common::SeekableReadStream *parent = getFileStream(iter->_value.parent);
|
||||||
assert(parent);
|
assert(parent);
|
||||||
@ -316,12 +321,9 @@ Common::SeekableReadStream *Resource::getFileStream(const Common::String &file)
|
|||||||
|
|
||||||
return loader->loadFileFromArchive(file, parent, iter->_value);
|
return loader->loadFileFromArchive(file, parent, iter->_value);
|
||||||
} else {
|
} else {
|
||||||
Common::File *stream = new Common::File();
|
|
||||||
if (!stream->open(file)) {
|
|
||||||
warning("Couldn't open file '%s'", file.c_str());
|
warning("Couldn't open file '%s'", file.c_str());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return stream;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -226,6 +226,7 @@ enum kKyraResources {
|
|||||||
k2IngameTalkObjIndex,
|
k2IngameTalkObjIndex,
|
||||||
k2IngameTimJpStrings,
|
k2IngameTimJpStrings,
|
||||||
k2IngameShapeAnimData,
|
k2IngameShapeAnimData,
|
||||||
|
k2IngameTlkDemoStrings,
|
||||||
|
|
||||||
kMaxResIDs
|
kMaxResIDs
|
||||||
};
|
};
|
||||||
|
@ -1748,6 +1748,40 @@ int KyraEngine_v2::o2_getGameLanguage(ScriptState *script) {
|
|||||||
return _lang;
|
return _lang;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int KyraEngine_v2::o2_demoFinale(ScriptState *script) {
|
||||||
|
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_demoFinale(%p) ()", (const void *)script);
|
||||||
|
if (!_flags.isDemo)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
int tmpSize;
|
||||||
|
const char *const *strings = _staticres->loadStrings(k2IngameTlkDemoStrings, tmpSize);
|
||||||
|
assert(strings);
|
||||||
|
|
||||||
|
_screen->clearPage(0);
|
||||||
|
_screen->loadPalette("THANKS.COL", _screen->_currentPalette);
|
||||||
|
_screen->loadBitmap("THANKS.CPS", 3, 3, 0);
|
||||||
|
_screen->copyRegion(0, 0, 0, 0, 320, 200, 2, 0);
|
||||||
|
|
||||||
|
_screen->_curPage = 0;
|
||||||
|
_screen->setFont(Screen::FID_6_FNT);
|
||||||
|
int y = _lang == 1 ? 70 : 65;
|
||||||
|
for (int i = 0; i < 6; i++)
|
||||||
|
_text->printText(strings[i], _text->getCenterStringX(strings[i], 1, 319), y + i * 10, 255, 207, 0);
|
||||||
|
|
||||||
|
_screen->setScreenPalette(_screen->_currentPalette);
|
||||||
|
_screen->updateScreen();
|
||||||
|
|
||||||
|
_eventList.clear();
|
||||||
|
while (!skipFlag())
|
||||||
|
delay(10);
|
||||||
|
|
||||||
|
_sound->beginFadeOut();
|
||||||
|
_screen->fadeToBlack();
|
||||||
|
|
||||||
|
_runFlag = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int KyraEngine_v2::o2_dummy(ScriptState *script) {
|
int KyraEngine_v2::o2_dummy(ScriptState *script) {
|
||||||
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_dummy(%p) ()", (const void *)script);
|
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_dummy(%p) ()", (const void *)script);
|
||||||
return 0;
|
return 0;
|
||||||
@ -2023,7 +2057,7 @@ void KyraEngine_v2::setupOpcodeTable() {
|
|||||||
// 0xac
|
// 0xac
|
||||||
Opcode(o2_stopVoicePlaying),
|
Opcode(o2_stopVoicePlaying),
|
||||||
Opcode(o2_getGameLanguage),
|
Opcode(o2_getGameLanguage),
|
||||||
Opcode(o2_dummy),
|
Opcode(o2_demoFinale),
|
||||||
Opcode(o2_dummy),
|
Opcode(o2_dummy),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
namespace Kyra {
|
namespace Kyra {
|
||||||
|
|
||||||
#define RESFILE_VERSION 23
|
#define RESFILE_VERSION 24
|
||||||
|
|
||||||
bool StaticResource::checkKyraDat() {
|
bool StaticResource::checkKyraDat() {
|
||||||
Common::File kyraDat;
|
Common::File kyraDat;
|
||||||
@ -257,6 +257,7 @@ bool StaticResource::init() {
|
|||||||
{ k2IngameTalkObjIndex, kRawData, "I_TALKOBJECTS.MAP" },
|
{ k2IngameTalkObjIndex, kRawData, "I_TALKOBJECTS.MAP" },
|
||||||
{ k2IngameTimJpStrings, kStringList, "I_TIMJPSTR.TXT" },
|
{ k2IngameTimJpStrings, kStringList, "I_TIMJPSTR.TXT" },
|
||||||
{ k2IngameShapeAnimData, k2ShpAnimDataV2, "I_INVANIM.SHP" },
|
{ k2IngameShapeAnimData, k2ShpAnimDataV2, "I_INVANIM.SHP" },
|
||||||
|
{ k2IngameTlkDemoStrings, kLanguageList, "I_TLKDEMO.TXT." },
|
||||||
|
|
||||||
{ 0, 0, 0 }
|
{ 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user