diff options
author | Florian Kagerer | 2009-11-14 22:51:35 +0000 |
---|---|---|
committer | Florian Kagerer | 2009-11-14 22:51:35 +0000 |
commit | 9bd5e07d90ad5693d96a557d66c919cf3097d34b (patch) | |
tree | c8a2fe80e07126cb6e235951d29d32ea88daea68 | |
parent | b9b5511b3c5e916366c20e251461f217b679054e (diff) | |
download | scummvm-rg350-9bd5e07d90ad5693d96a557d66c919cf3097d34b.tar.gz scummvm-rg350-9bd5e07d90ad5693d96a557d66c919cf3097d34b.tar.bz2 scummvm-rg350-9bd5e07d90ad5693d96a557d66c919cf3097d34b.zip |
KYRA: added kyra 1 pc98 static data to kyra.dat (intro forest sequence is still broken)
svn-id: r45906
-rw-r--r-- | dists/engine-data/kyra.dat | bin | 299643 -> 304833 bytes | |||
-rw-r--r-- | engines/kyra/gui_lok.cpp | 20 | ||||
-rw-r--r-- | engines/kyra/kyra_lok.cpp | 2 | ||||
-rw-r--r-- | engines/kyra/kyra_lok.h | 7 | ||||
-rw-r--r-- | engines/kyra/resource.h | 3 | ||||
-rw-r--r-- | engines/kyra/seqplayer.cpp | 7 | ||||
-rw-r--r-- | engines/kyra/sequences_lok.cpp | 34 | ||||
-rw-r--r-- | engines/kyra/sound.h | 7 | ||||
-rw-r--r-- | engines/kyra/sound_intern.h | 1 | ||||
-rw-r--r-- | engines/kyra/sound_lok.cpp | 4 | ||||
-rw-r--r-- | engines/kyra/sound_towns.cpp | 6 | ||||
-rw-r--r-- | engines/kyra/staticres.cpp | 65 | ||||
-rw-r--r-- | tools/create_kyradat/create_kyradat.cpp | 8 | ||||
-rw-r--r-- | tools/create_kyradat/create_kyradat.h | 2 | ||||
-rw-r--r-- | tools/create_kyradat/games.cpp | 94 | ||||
-rw-r--r-- | tools/create_kyradat/tables.cpp | 88 |
16 files changed, 251 insertions, 97 deletions
diff --git a/dists/engine-data/kyra.dat b/dists/engine-data/kyra.dat Binary files differindex 9e0912feec..100dc53976 100644 --- a/dists/engine-data/kyra.dat +++ b/dists/engine-data/kyra.dat diff --git a/engines/kyra/gui_lok.cpp b/engines/kyra/gui_lok.cpp index c0977225ba..5a0c0034e1 100644 --- a/engines/kyra/gui_lok.cpp +++ b/engines/kyra/gui_lok.cpp @@ -364,6 +364,7 @@ void GUI_LoK::setGUILabels() { int offsetOptions = 0; int offsetMainMenu = 0; int offsetOn = 0; + int offsetPC98 = 0; int walkspeedGarbageOffset = 36; int menuLabelGarbageOffset = 0; @@ -396,11 +397,14 @@ void GUI_LoK::setGUILabels() { offsetOn = offsetMainMenu = offsetOptions = offset = 32; } else if (_vm->gameFlags().lang == Common::DE_DEU) { offset = offsetMainMenu = offsetOn = offsetOptions = 24; - } else if (_vm->gameFlags().platform == Common::kPlatformFMTowns || _vm->gameFlags().platform == Common::kPlatformPC98) { + } else if (_vm->gameFlags().platform == Common::kPlatformFMTowns) { offset = 1; offsetOptions = 10; offsetOn = 0; walkspeedGarbageOffset = 0; + } else if (_vm->gameFlags().platform == Common::kPlatformPC98) { + offsetMainMenu = offsetOptions = offsetOn = offset = 47; + offsetPC98 = 1; } assert(offset + (_vm->gameFlags().isTalkie ? 28 : 23) < _vm->_guiStringsSize); @@ -421,17 +425,17 @@ void GUI_LoK::setGUILabels() { _menu[0].item[4].itemString = _vm->_guiStrings[5]; // Cancel - _menu[2].item[5].itemString = _vm->_guiStrings[10]; + _menu[2].item[5].itemString = _vm->_guiStrings[10 + offsetPC98]; // Enter a description of your saved game: - _menu[3].menuNameString = _vm->_guiStrings[11]; + _menu[3].menuNameString = _vm->_guiStrings[11 + offsetPC98]; // Save - _menu[3].item[0].itemString = _vm->_guiStrings[12]; + _menu[3].item[0].itemString = _vm->_guiStrings[12 + offsetPC98]; // Cancel - _menu[3].item[1].itemString = _vm->_guiStrings[10]; + _menu[3].item[1].itemString = _vm->_guiStrings[10 + offsetPC98]; // Rest in peace, Brandon - _menu[4].menuNameString = _vm->_guiStrings[13]; + _menu[4].menuNameString = _vm->_guiStrings[13 + offsetPC98]; // Load a game _menu[4].item[0].itemString = _vm->_guiStrings[1]; // Quit playing @@ -601,7 +605,7 @@ int GUI_LoK::saveGameMenu(Button *button) { _screen->savePageToDisk("SEENPAGE.TMP", 0); _menu[2].menuNameString = _vm->_guiStrings[8]; // Select a position to save to: - _specialSavegameString = _vm->_guiStrings[9]; // [ EMPTY SLOT ] + _specialSavegameString = _vm->_guiStrings[_vm->gameFlags().platform == Common::kPlatformPC98 ? 10: 9]; // [ EMPTY SLOT ] for (int i = 0; i < 5; i++) _menu[2].item[i].callback = BUTTON_FUNCTOR(GUI_LoK, this, &GUI_LoK::saveGame); @@ -803,7 +807,7 @@ int GUI_LoK::cancelSubMenu(Button *button) { int GUI_LoK::quitPlaying(Button *button) { updateMenuButton(button); - if (quitConfirm(_vm->_guiStrings[14])) { // Are you sure you want to quit playing? + if (quitConfirm(_vm->_guiStrings[_vm->gameFlags().platform == Common::kPlatformPC98 ? 15 : 14])) { // Are you sure you want to quit playing? _vm->quitGame(); } else { initMenu(_menu[_toplevelMenu]); diff --git a/engines/kyra/kyra_lok.cpp b/engines/kyra/kyra_lok.cpp index 5e7275b26c..24850c7d37 100644 --- a/engines/kyra/kyra_lok.cpp +++ b/engines/kyra/kyra_lok.cpp @@ -196,7 +196,7 @@ Common::Error KyraEngine_LoK::init() { error("Couldn't init sound"); if (_flags.platform == Common::kPlatformPC98) - _sound->loadSoundFile(_introSfxDataPC98, _introSfxDataPC98Size); + _sound->loadSoundFile("introsfx.98"); else _sound->loadSoundFile(0); diff --git a/engines/kyra/kyra_lok.h b/engines/kyra/kyra_lok.h index 54bae668b8..1ce280d069 100644 --- a/engines/kyra/kyra_lok.h +++ b/engines/kyra/kyra_lok.h @@ -511,9 +511,6 @@ protected: static const int8 _amigaTrackMap[]; static const int _amigaTrackMapSize; - static const uint8 _introSfxDataPC98[]; - static const int _introSfxDataPC98Size; - // TODO: get rid of all variables having pointers to the static resources if possible // i.e. let them directly use the _staticres functions void initStaticResource(); @@ -535,11 +532,15 @@ protected: const char * const *_seq_COLTable; const char * const *_seq_textsTable; + const char * const *_storyStrings; + int _seq_WSATable_Size; int _seq_CPSTable_Size; int _seq_COLTable_Size; int _seq_textsTable_Size; + int _storyStringsSize; + const char * const *_itemList; const char * const *_takenList; const char * const *_placedList; diff --git a/engines/kyra/resource.h b/engines/kyra/resource.h index d164a28972..a5bfdfae03 100644 --- a/engines/kyra/resource.h +++ b/engines/kyra/resource.h @@ -180,6 +180,9 @@ enum KyraResources { k1TownsSFXbtTable, k1TownsCDATable, + k1PC98StoryStrings, + k1PC98IntroSfx, + k1AmigaIntroSFXTable, k1AmigaGameSFXTable, diff --git a/engines/kyra/seqplayer.cpp b/engines/kyra/seqplayer.cpp index 7080d27dc2..4e04eb4476 100644 --- a/engines/kyra/seqplayer.cpp +++ b/engines/kyra/seqplayer.cpp @@ -429,11 +429,14 @@ void SeqPlayer::s1_playEffect() { void SeqPlayer::s1_playTrack() { uint8 msg = *_seqData++; - if (msg == 1) { + if (msg == 0 && _vm->gameFlags().platform == Common::kPlatformPC98) { + _sound->haltTrack(); + + } else if (msg == 1) { _sound->beginFadeOut(); } else { _sound->haltTrack(); - if (_vm->gameFlags().platform == Common::kPlatformFMTowns || _vm->gameFlags().platform == Common::kPlatformPC98) + if (_vm->gameFlags().platform == Common::kPlatformFMTowns) msg += 2; _sound->playTrack(msg); } diff --git a/engines/kyra/sequences_lok.cpp b/engines/kyra/sequences_lok.cpp index 67cdbdae17..c8b15e5e63 100644 --- a/engines/kyra/sequences_lok.cpp +++ b/engines/kyra/sequences_lok.cpp @@ -136,7 +136,7 @@ void KyraEngine_LoK::seq_introLogos() { delay(90 * _tickLength); _screen->fadeToBlack(); if (!_abortIntroFlag) - snd_playWanderScoreViaMap(57, 0); + snd_playWanderScoreViaMap(_flags.platform == Common::kPlatformFMTowns ? 57 : 2, 0); } _screen->clearPage(0); @@ -264,20 +264,34 @@ void KyraEngine_LoK::seq_introStory() { _screen->copyPage(3, 0); if (_flags.lang == Common::JA_JPN) { - const int x1 = (Screen::SCREEN_W - _screen->getTextWidth(_seq_textsTable[18])) / 2; - const int x2 = (Screen::SCREEN_W - _screen->getTextWidth(_seq_textsTable[19])) / 2; const int y1 = 175; - const int y2 = 184; + int x1, x2, y2, col1; + const char *s1, *s2; + + if (_flags.platform == Common::kPlatformFMTowns) { + s1 = _seq_textsTable[18]; + s2 = _seq_textsTable[19]; + x1 = (Screen::SCREEN_W - _screen->getTextWidth(s1)) / 2; + x2 = (Screen::SCREEN_W - _screen->getTextWidth(s2)) / 2; + uint8 colorMap[] = { 0, 15, 12, 12 }; + _screen->setTextColor(colorMap, 0, 3); + y2 = 184; + col1 = 5; - uint8 colorMap[] = { 0, 15, 12, 12 }; - _screen->setTextColor(colorMap, 0, 3); + } else { + s1 = _storyStrings[0]; + s2 = _storyStrings[1]; + x1 = x2 = 54; + y2 = 185; + col1 = 15; + } - _screen->printText(_seq_textsTable[18], x1, y1, 5, 8); - _screen->printText(_seq_textsTable[19], x2, y2, 5, 8); + _screen->printText(s1, x1, y1, col1, 8); + _screen->printText(s2, x2, y2, col1, 8); } _screen->updateScreen(); - //debugC(0, kDebugLevelMain, "skipFlag %i, %i", skipFlag(), _tickLength); + //debugC(0,, 0xkDebugLevelMain,, 0x"skipFlag, 0x%i,, 0x%i",, 0xskipFlag(),, 0x_tickLength); delay(360 * _tickLength); } @@ -1082,7 +1096,7 @@ int KyraEngine_LoK::seq_playEnd() { if (i == 4) snd_playSoundEffect(0x3E); else if (i == 20) - snd_playSoundEffect(0x0E); + snd_playSoundEffect(_flags.platform == Common::kPlatformPC98 ? 0x13 : 0x0E); nextTime = _system->getMillis() + 8 * _tickLength; _finalA->displayFrame(i, 0, 8, 8, 0, 0, 0); _screen->updateScreen(); diff --git a/engines/kyra/sound.h b/engines/kyra/sound.h index 3d74972162..f04e96d6c9 100644 --- a/engines/kyra/sound.h +++ b/engines/kyra/sound.h @@ -108,12 +108,6 @@ public: virtual void loadSoundFile(Common::String file) = 0; /** - * Load hard coded data for playing music - * (and somtimes sound effects) from. - */ - virtual void loadSoundFile(const uint8 *data, int len) {} - - /** * Load a sound file for playing sound * effects from. */ @@ -275,7 +269,6 @@ public: void loadSoundFile(uint file) { _music->loadSoundFile(file); _sfx->loadSoundFile(file); } void loadSoundFile(Common::String file) { _music->loadSoundFile(file); _sfx->loadSoundFile(file); } - void loadSoundFile(const uint8 *data, int len) { _sfx->loadSoundFile(data, len); } void loadSfxFile(Common::String file) { _sfx->loadSoundFile(file); } void playTrack(uint8 track) { _music->playTrack(track); } diff --git a/engines/kyra/sound_intern.h b/engines/kyra/sound_intern.h index 98991dadd9..79789e1d46 100644 --- a/engines/kyra/sound_intern.h +++ b/engines/kyra/sound_intern.h @@ -172,7 +172,6 @@ public: void process() {} void loadSoundFile(uint file) {} void loadSoundFile(Common::String file); - void loadSoundFile(const uint8 *data, int len); void playTrack(uint8 track); void haltTrack(); diff --git a/engines/kyra/sound_lok.cpp b/engines/kyra/sound_lok.cpp index 8399e0cc51..3eeddf1ce3 100644 --- a/engines/kyra/sound_lok.cpp +++ b/engines/kyra/sound_lok.cpp @@ -36,7 +36,7 @@ void KyraEngine_LoK::snd_playSoundEffect(int track, int volume) { track -= 16; } - if ((_flags.platform == Common::kPlatformFMTowns || _flags.platform == Common::kPlatformPC98) && track == 49) { + if (_flags.platform == Common::kPlatformFMTowns && track == 49) { snd_playWanderScoreViaMap(56, 1); return; } @@ -64,7 +64,7 @@ void KyraEngine_LoK::snd_playWanderScoreViaMap(int command, int restart) { } else if (_flags.platform == Common::kPlatformPC98) { if (command == 1) { _sound->beginFadeOut(); - } else if (command >= 2) { + } else if (command >= 2 && command < 53 || command == 55) { if (_lastMusicCommand != command) _sound->playTrack(command); } else { diff --git a/engines/kyra/sound_towns.cpp b/engines/kyra/sound_towns.cpp index 1d6470b7cc..aa8de56d1a 100644 --- a/engines/kyra/sound_towns.cpp +++ b/engines/kyra/sound_towns.cpp @@ -4054,12 +4054,6 @@ void SoundPC98::loadSoundFile(Common::String file) { _sfxTrackData = _vm->resource()->fileData(file.c_str(), 0); } -void SoundPC98::loadSoundFile(const uint8 *data, int len) { - delete[] _sfxTrackData; - _sfxTrackData = new uint8[len]; - memcpy(_sfxTrackData, data, len); -} - void SoundPC98::playTrack(uint8 track) { track += extraOffset(); diff --git a/engines/kyra/staticres.cpp b/engines/kyra/staticres.cpp index 395fe5d544..c90f427da7 100644 --- a/engines/kyra/staticres.cpp +++ b/engines/kyra/staticres.cpp @@ -45,7 +45,7 @@ namespace Kyra { -#define RESFILE_VERSION 59 +#define RESFILE_VERSION 60 namespace { bool checkKyraDat(Common::SeekableReadStream *file) { @@ -325,6 +325,10 @@ bool StaticResource::init() { { k1TownsSFXbtTable, kRawData, "SFXBTTABLE" }, { k1TownsCDATable, kRawData, "CDATABLE" }, + // PC98 specific + { k1PC98StoryStrings, kLanguageList, "INTROSTORY." }, + { k1PC98IntroSfx, kRawData, "INTROSFX" }, + // CREDITS (used in FM-TOWNS and AMIGA) { k1CreditsStrings, kRawData, "CREDITS" }, @@ -1379,6 +1383,8 @@ const char *StaticResource::getFilename(const char *name) { filename += ".CD"; else if (_vm->gameFlags().isDemo) filename += ".DEM"; + else if (_vm->gameFlags().platform == Common::kPlatformPC98 && _vm->gameFlags().gameID == GI_KYRA1) + filename += ".98"; else if (_vm->gameFlags().platform == Common::kPlatformFMTowns || _vm->gameFlags().platform == Common::kPlatformPC98) filename += ".TNS"; else if (_vm->gameFlags().platform == Common::kPlatformAmiga) @@ -1455,6 +1461,8 @@ void KyraEngine_LoK::initStaticResource() { _guiStrings = _staticres->loadStrings(k1GUIStrings, _guiStringsSize); _configStrings = _staticres->loadStrings(k1ConfigStrings, _configStringsSize); + _storyStrings = _staticres->loadStrings(k1PC98StoryStrings, _storyStringsSize); + _soundFiles = _staticres->loadStrings(k1AudioTracks, _soundFilesSize); _soundFilesIntro = _staticres->loadStrings(k1AudioTracksIntro, _soundFilesIntroSize); _cdaTrackTable = (const int32 *)_staticres->loadRawData(k1TownsCDATable, _cdaTrackTableSize); @@ -1511,7 +1519,7 @@ void KyraEngine_LoK::initStaticResource() { } else if (_flags.platform == Common::kPlatformPC98) { _soundData[0].fileList = tIntro98; _soundData[0].fileListLen = 1; - _soundData[0].extraOffset = -56; + _soundData[0].extraOffset = -1; _soundData[1].fileList = tIngame98; _soundData[1].fileListLen = 1; _soundData[1].extraOffset = -1; @@ -2445,59 +2453,6 @@ const int8 KyraEngine_LoK::_amigaTrackMap[] = { const int KyraEngine_LoK::_amigaTrackMapSize = ARRAYSIZE(KyraEngine_LoK::_amigaTrackMap); -const uint8 KyraEngine_LoK::_introSfxDataPC98[] = { - 0x56, 0x00, 0x43, 0x00, 0x7C, 0x00, 0x69, 0x00, 0xA2, 0x00, 0x8F, 0x00, 0x00, 0x00, 0xB5, 0x00, - 0x00, 0x00, 0xE5, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x45, 0x01, - 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x68, 0x01, 0x8D, 0x01, 0x7C, 0x01, 0xBD, 0x01, 0x9E, 0x01, - 0xF0, 0x01, 0xDC, 0x01, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x2B, 0x02, 0x59, 0x02, 0x40, 0x02, - 0xF1, 0x00, 0xFF, 0xF1, 0x09, 0x32, 0x81, 0x49, 0x81, 0x52, 0x81, 0x59, 0x81, 0xF7, 0x01, 0x03, - 0xC7, 0x00, 0xFF, 0x42, 0x32, 0xFF, 0xF1, 0x05, 0x30, 0x81, 0x47, 0x81, 0x50, 0x81, 0x57, 0x81, - 0xF7, 0x01, 0x03, 0xC7, 0x00, 0xFF, 0x41, 0x32, 0xFF, 0xF1, 0x0C, 0x32, 0x81, 0x49, 0x81, 0x52, - 0x81, 0x59, 0x81, 0xF7, 0x01, 0x03, 0xC7, 0x00, 0xFF, 0x42, 0x32, 0xFF, 0xF1, 0x08, 0x30, 0x81, - 0x47, 0x81, 0x50, 0x81, 0x57, 0x81, 0xF7, 0x01, 0x03, 0xC7, 0x00, 0xFF, 0x41, 0x32, 0xFF, 0xF1, - 0x0F, 0x32, 0x81, 0x49, 0x81, 0x52, 0x81, 0x59, 0x81, 0xF7, 0x01, 0x03, 0xC7, 0x00, 0xFF, 0x42, - 0x32, 0xFF, 0xF1, 0x0C, 0x30, 0x81, 0x47, 0x81, 0x50, 0x81, 0x57, 0x81, 0xF7, 0x01, 0x03, 0xC7, - 0x00, 0xFF, 0x41, 0x32, 0xFF, 0xF1, 0x0A, 0x39, 0x01, 0x44, 0x01, 0x49, 0x01, 0xFC, 0xF6, 0x05, - 0x05, 0xB7, 0x00, 0x39, 0x01, 0x44, 0x01, 0x49, 0x01, 0xF6, 0x02, 0x02, 0xC3, 0x00, 0xFB, 0xFB, - 0xFB, 0xFB, 0x39, 0x01, 0x44, 0x01, 0x49, 0x01, 0xF6, 0x02, 0x02, 0xD2, 0x00, 0xFC, 0xFC, 0xF6, - 0x05, 0x05, 0xC3, 0x00, 0xFF, 0xF1, 0x0F, 0x69, 0x81, 0x59, 0x81, 0x49, 0x01, 0x39, 0x81, 0x54, - 0x01, 0xF6, 0x02, 0x02, 0xED, 0x00, 0x80, 0x04, 0xFB, 0xFB, 0xFB, 0xF6, 0x03, 0x03, 0xED, 0x00, - 0xFF, 0xF1, 0x0C, 0x69, 0x81, 0x49, 0x81, 0x59, 0x81, 0x39, 0x01, 0x62, 0x81, 0x57, 0x01, 0x60, - 0x01, 0xFC, 0xF6, 0x03, 0x03, 0x0B, 0x01, 0x62, 0x81, 0x57, 0x01, 0x60, 0x01, 0xFB, 0xF6, 0x03, - 0x03, 0x17, 0x01, 0xFB, 0xFB, 0xFB, 0xF6, 0x05, 0x05, 0x0B, 0x01, 0xFF, 0xF1, 0x0F, 0xF4, 0x09, - 0xF7, 0x01, 0x01, 0x54, 0x01, 0xC8, 0x27, 0x09, 0xF4, 0x42, 0x10, 0x08, 0xFB, 0xF6, 0x0E, 0x0E, - 0x3A, 0x01, 0xF4, 0x80, 0xFF, 0xF1, 0x08, 0xF4, 0x41, 0x10, 0x01, 0xFC, 0xF6, 0x07, 0x07, 0x49, - 0x01, 0xF4, 0x80, 0xFF, 0xF1, 0x0C, 0xF9, 0x0E, 0xFA, 0x12, 0x64, 0x04, 0x0B, 0x60, 0x03, 0x80, - 0x03, 0x60, 0x03, 0x80, 0x03, 0x60, 0x12, 0xFF, 0xF1, 0x0C, 0xF9, 0x0E, 0xFA, 0x12, 0x18, 0x04, - 0x0B, 0x70, 0x02, 0x80, 0x02, 0x72, 0x02, 0x80, 0x02, 0x73, 0x0B, 0xFF, 0xF1, 0x0E, 0xF3, 0x00, - 0xF7, 0x01, 0x05, 0x39, 0xFF, 0xFF, 0x30, 0x30, 0xF1, 0x07, 0x3B, 0x0A, 0xFF, 0xF1, 0x0C, 0xF3, - 0x0A, 0xF7, 0x01, 0x05, 0x39, 0xFF, 0xFF, 0x60, 0x30, 0xF1, 0x05, 0x6B, 0x0A, 0xFF, 0xF1, 0x0E, - 0xF3, 0x00, 0xF7, 0x01, 0x05, 0x39, 0xFF, 0xFF, 0x30, 0x30, 0xF1, 0x0C, 0x69, 0x01, 0x75, 0x02, - 0x72, 0x01, 0x64, 0x02, 0x70, 0x01, 0xFB, 0xF6, 0x0B, 0x0B, 0xAC, 0x01, 0xFF, 0xF1, 0x0C, 0xF3, - 0x0A, 0xF7, 0x01, 0x05, 0x39, 0xFF, 0xFF, 0x60, 0x31, 0xF1, 0x0A, 0x69, 0x01, 0x75, 0x02, 0x72, - 0x01, 0x64, 0x02, 0x70, 0x01, 0xFB, 0xF6, 0x09, 0x09, 0xCB, 0x01, 0xFF, 0xF1, 0x0F, 0xF3, 0x00, - 0x24, 0x81, 0x29, 0x01, 0xF6, 0x08, 0x08, 0xE0, 0x01, 0xFB, 0xF6, 0x0E, 0x0E, 0xE0, 0x01, 0xFF, - 0xF1, 0x0F, 0xF3, 0x0D, 0x24, 0x81, 0x22, 0x01, 0xF6, 0x08, 0x08, 0xF4, 0x01, 0xFB, 0xF6, 0x0E, - 0x0E, 0xF4, 0x01, 0xFF, 0xF1, 0x0C, 0x29, 0x81, 0xFC, 0x24, 0x81, 0xFC, 0x29, 0x81, 0xFC, 0x34, - 0x81, 0x35, 0x81, 0x36, 0x81, 0x35, 0x81, 0x34, 0x81, 0x33, 0x81, 0x32, 0x81, 0x33, 0x01, 0xF6, - 0x02, 0x02, 0x0F, 0x02, 0xFB, 0xF6, 0x0E, 0x0E, 0x0F, 0x02, 0xFF, 0xF1, 0x0F, 0xF4, 0x0B, 0x29, - 0x81, 0x27, 0x81, 0xF4, 0x43, 0x29, 0x02, 0xFB, 0xF6, 0x0E, 0x0E, 0x35, 0x02, 0xF4, 0x80, 0xFF, - 0xF1, 0x0E, 0xF7, 0x01, 0x01, 0x09, 0x03, 0xFF, 0x44, 0x08, 0xF1, 0x0C, 0xF7, 0x01, 0x04, 0xC8, - 0x00, 0xFF, 0x1B, 0x1E, 0xF1, 0x06, 0x1B, 0x1E, 0xFF, 0xF1, 0x0F, 0xF4, 0x4F, 0xF7, 0x01, 0x05, - 0xC7, 0x00, 0xFF, 0x19, 0x04, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x0F, 0xFB, 0x10, 0x04, - 0xFB, 0xF6, 0x07, 0x07, 0x6E, 0x02, 0xF1, 0x08, 0x10, 0x04, 0xFB, 0xF6, 0x07, 0x07, 0x78, 0x02, - 0xF4, 0x80, 0xFF, 0xF1, 0x0F, 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, 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, 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 -}; - -const int KyraEngine_LoK::_introSfxDataPC98Size = ARRAYSIZE(KyraEngine_LoK::_introSfxDataPC98); - // kyra engine v2 static data const int GUI_v2::_sliderBarsPosition[] = { diff --git a/tools/create_kyradat/create_kyradat.cpp b/tools/create_kyradat/create_kyradat.cpp index df1449fac7..79060a0cef 100644 --- a/tools/create_kyradat/create_kyradat.cpp +++ b/tools/create_kyradat/create_kyradat.cpp @@ -37,7 +37,7 @@ #include "md5.h" enum { - kKyraDatVersion = 59, + kKyraDatVersion = 60, kIndexSize = 12 }; @@ -157,6 +157,10 @@ const ExtractFilename extractFilenames[] = { { kKyra1TownsSFXbtTable, kTypeRawData, "SFXBTTABLE" }, { kKyra1TownsCDATable, kTypeRawData, "CDATABLE" }, + // PC98 specific + { kKyra1PC98StoryStrings, kTypeLanguageList, "INTROSTORY" }, + { kKyra1PC98IntroSfx, kTypeRawData, "INTROSFX" }, + // AMIGA specific { kAmigaIntroSFXTable, kTypeAmigaSfxTable, "SFXINTRO" }, { kAmigaGameSFXTable, kTypeAmigaSfxTable, "SFXGAME" }, @@ -344,7 +348,7 @@ const Language languageTable[] = { const PlatformExtension platformTable[] = { { kPlatformAmiga, "AMG" }, { kPlatformFMTowns, "TNS" }, - { kPlatformPC98, "TNS" }, // HACK + { kPlatformPC98, "98" }, { -1, 0 } }; diff --git a/tools/create_kyradat/create_kyradat.h b/tools/create_kyradat/create_kyradat.h index 69d82330ad..0a0c7073fc 100644 --- a/tools/create_kyradat/create_kyradat.h +++ b/tools/create_kyradat/create_kyradat.h @@ -147,6 +147,8 @@ enum kExtractID { kKyra1TownsSFXwdTable, kKyra1TownsSFXbtTable, kKyra1TownsCDATable, + kKyra1PC98StoryStrings, + kKyra1PC98IntroSfx, kCreditsStrings, kAmigaIntroSFXTable, diff --git a/tools/create_kyradat/games.cpp b/tools/create_kyradat/games.cpp index 2788b2870b..ec07e683f6 100644 --- a/tools/create_kyradat/games.cpp +++ b/tools/create_kyradat/games.cpp @@ -52,6 +52,9 @@ const Game kyra1Games[] = { { kKyra1, EN_ANY, kPlatformFMTowns, -1, "5a3ad60ccd0f2e29463e0368cd14a60d" }, { kKyra1, JA_JPN, kPlatformFMTowns, -1, "5a3ad60ccd0f2e29463e0368cd14a60d" }, + // PC-98 + { kKyra1, JA_JPN, kPlatformPC98, -1, "b9c06ac5177f5bf1f1acc0eea3937f6d" }, + GAME_DUMMY_ENTRY }; @@ -424,6 +427,95 @@ const int kyra1TownsNeed[] = { -1 }; +const int kyra1PC98Need[] = { + kKallakWritingSeq, + kMalcolmTreeSeq, + kWestwoodLogoSeq, + kKyrandiaLogoSeq, + kKallakMalcolmSeq, + kForestSeq, + kIntroCPSStrings, + kIntroCOLStrings, + kIntroWSAStrings, + kIntroStrings, + kRoomList, + kRoomFilenames, + kCharacterImageFilenames, + kDefaultShapes, + kItemNames, + kTakenStrings, + kPlacedStrings, + kDroppedStrings, + kNoDropStrings, + kAmuleteAnimSeq, + kPaletteList1, + kPaletteList2, + kPaletteList3, + kPaletteList4, + kPaletteList5, + kPaletteList6, + kPaletteList7, + kPaletteList8, + kPaletteList9, + kPaletteList10, + kPaletteList11, + kPaletteList12, + kPaletteList13, + kPaletteList14, + kPaletteList15, + kPaletteList16, + kPaletteList17, + kPaletteList18, + kPaletteList19, + kPaletteList20, + kPaletteList21, + kPaletteList22, + kPaletteList23, + kPaletteList24, + kPaletteList25, + kPaletteList26, + kPaletteList27, + kPaletteList28, + kPaletteList29, + kPaletteList30, + kPaletteList31, + kPaletteList32, + kPaletteList33, + kPutDownString, + kWaitAmuletString, + kBlackJewelString, + kHealingTipString, + kPoisonGoneString, + kHealing1Shapes, + kHealing2Shapes, + kThePoisonStrings, + kFluteStrings, + kPoisonDeathShapes, + kFluteShapes, + kWinter1Shapes, + kWinter2Shapes, + kWinter3Shapes, + kDrinkShapes, + kWispShapes, + kMagicAnimShapes, + kBranStoneShapes, + kWispJewelStrings, + kMagicJewelStrings, + kFlaskFullString, + kFullFlaskString, + kOutroReunionSeq, + kOutroHomeString, + kVeryCleverString, + kGUIStrings, + kNewGameString, + kConfigStrings, + + kKyra1PC98StoryStrings, + kKyra1PC98IntroSfx, + kCreditsStrings, + -1 +}; + const int kyra1AmigaNeed[] = { kKallakWritingSeq, kMalcolmTreeSeq, @@ -858,6 +950,8 @@ const GameNeed gameNeedTable[] = { { kKyra1, kPlatformFMTowns, -1, kyra1TownsNeed }, + { kKyra1, kPlatformPC98, -1, kyra1PC98Need }, + { kKyra1, kPlatformPC, kDemoVersion, kyra1DemoNeed }, { kKyra1, kPlatformPC, kDemoCDVersion, kyra1DemoCDNeed }, diff --git a/tools/create_kyradat/tables.cpp b/tools/create_kyradat/tables.cpp index 8eb2549a50..1c482fc8e1 100644 --- a/tools/create_kyradat/tables.cpp +++ b/tools/create_kyradat/tables.cpp @@ -36,6 +36,8 @@ const ExtractEntrySearchData kForestSeqProvider[] = { { UNK_LANG, kPlatformAmiga, { 0x00000273, 0x00001D80, { { 0x18, 0x32, 0xB7, 0xFB, 0xD8, 0x1A, 0x6D, 0x83, 0x75, 0xF5, 0x2B, 0xF7, 0xC0, 0xFD, 0x85, 0xEF } } } }, { UNK_LANG, kPlatformFMTowns, { 0x00000196, 0x00001468, { { 0x06, 0x8D, 0xC1, 0x9B, 0xBC, 0x28, 0xE8, 0x36, 0x43, 0x67, 0x34, 0xAA, 0x78, 0xB9, 0xCB, 0x72 } } } }, + + { UNK_LANG, kPlatformPC98, { 0x0000013B, 0x0000128A, { { 0xD8, 0xB1, 0xFF, 0x57, 0xC9, 0x5D, 0xE1, 0x23, 0xA5, 0xA0, 0x4B, 0x0F, 0x28, 0xAC, 0x56, 0x83 } } } }, EXTRACT_END_ENTRY }; @@ -48,6 +50,8 @@ const ExtractEntrySearchData kKallakWritingSeqProvider[] = { { UNK_LANG, kPlatformFMTowns, { 0x000007F7, 0x00006E23, { { 0x97, 0x8C, 0x63, 0x8D, 0x91, 0x68, 0xA5, 0x63, 0x55, 0x43, 0xE7, 0xE0, 0x12, 0xF9, 0x80, 0xA4 } } } }, + { UNK_LANG, kPlatformPC98, { 0x000007F3, 0x00006D9E, { { 0x3E, 0x83, 0xA4, 0xBF, 0x43, 0xAC, 0xDD, 0x41, 0x33, 0xC3, 0x33, 0x4E, 0xAE, 0x08, 0xB6, 0xDA } } } }, + EXTRACT_END_ENTRY }; @@ -67,6 +71,8 @@ const ExtractEntrySearchData kKallakMalcolmSeqProvider[] = { { UNK_LANG, kPlatformFMTowns, { 0x0000026D, 0x00002188, { { 0x7E, 0x3B, 0x06, 0x69, 0x11, 0x59, 0xBE, 0x42, 0xCB, 0x33, 0x9C, 0x15, 0xCF, 0x61, 0xF6, 0xB0 } } } }, + { UNK_LANG, kPlatformPC98, { 0x0000026C, 0x00002145, { { 0x95, 0xB7, 0x9E, 0x63, 0x99, 0xFA, 0x22, 0xBF, 0x62, 0x37, 0xC2, 0x2B, 0x40, 0x73, 0x53, 0x83 } } } }, + EXTRACT_END_ENTRY }; @@ -78,6 +84,8 @@ const ExtractEntrySearchData kMalcolmTreeSeqProvider[] = { { UNK_LANG, kPlatformFMTowns, { 0x00000218, 0x00001551, { { 0x30, 0x42, 0xD3, 0x7D, 0x6B, 0x43, 0x3B, 0xC7, 0x63, 0x56, 0x7D, 0x12, 0xE0, 0x53, 0x41, 0x48 } } } }, + { UNK_LANG, kPlatformPC98, { 0x00000217, 0x0000150E, { { 0x41, 0xFC, 0xD3, 0xAC, 0x8D, 0x1C, 0x11, 0x4E, 0xE0, 0x0C, 0xF6, 0x93, 0xA9, 0x22, 0x53, 0x7F } } } }, + EXTRACT_END_ENTRY }; @@ -129,6 +137,8 @@ const ExtractEntrySearchData kOutroReunionSeqProvider[] = { { UNK_LANG, kPlatformAmiga, { 0x0000054A, 0x0000785F, { { 0x55, 0xEA, 0xB8, 0x7F, 0x3A, 0x86, 0xCD, 0xA6, 0xBC, 0xA7, 0x9A, 0x39, 0xED, 0xF5, 0x30, 0x0A } } } }, { UNK_LANG, kPlatformFMTowns, { 0x00000547, 0x00007876, { { 0x7A, 0xC7, 0x80, 0x34, 0x7A, 0x1B, 0xAB, 0xF8, 0xA7, 0x2F, 0x63, 0x3C, 0xDA, 0x89, 0x3F, 0x82 } } } }, + + { UNK_LANG, kPlatformPC98, { 0x00000548, 0x00007889, { { 0x17, 0xE9, 0x40, 0xBA, 0x4A, 0xBD, 0xC6, 0x62, 0x56, 0x96, 0xD6, 0x1B, 0x11, 0xF3, 0xD8, 0x14 } } } }, EXTRACT_END_ENTRY }; @@ -142,6 +152,8 @@ const ExtractEntrySearchData kIntroCPSStringsProvider[] = { { UNK_LANG, kPlatformFMTowns, { 0x00000015, 0x0000071D, { { 0x59, 0x65, 0x08, 0xF9, 0x4C, 0x81, 0xA1, 0xE3, 0x68, 0xF7, 0xE3, 0xF6, 0x33, 0x5F, 0xF5, 0x36 } } } }, + { UNK_LANG, kPlatformPC98, { 0x00000015, 0x0000071D, { { 0x59, 0x65, 0x08, 0xF9, 0x4C, 0x81, 0xA1, 0xE3, 0x68, 0xF7, 0xE3, 0xF6, 0x33, 0x5F, 0xF5, 0x36 } } } }, + EXTRACT_END_ENTRY }; @@ -153,6 +165,8 @@ const ExtractEntrySearchData kIntroCOLStringsProvider[] = { { UNK_LANG, kPlatformFMTowns, { 0x00000030, 0x00000F09, { { 0x05, 0x7B, 0x69, 0xB7, 0x6A, 0xC3, 0x7F, 0xD9, 0x7E, 0x51, 0x87, 0xA5, 0x31, 0xD8, 0x80, 0xB3 } } } }, + { UNK_LANG, kPlatformPC98, { 0x00000030, 0x00000F09, { { 0x05, 0x7B, 0x69, 0xB7, 0x6A, 0xC3, 0x7F, 0xD9, 0x7E, 0x51, 0x87, 0xA5, 0x31, 0xD8, 0x80, 0xB3 } } } }, + EXTRACT_END_ENTRY }; @@ -164,6 +178,8 @@ const ExtractEntrySearchData kIntroWSAStringsProvider[] = { { UNK_LANG, kPlatformFMTowns, { 0x00000093, 0x00002E5D, { { 0xAB, 0xD1, 0x32, 0x89, 0x2A, 0x8D, 0xC0, 0x2C, 0x87, 0x87, 0xA3, 0x14, 0x2A, 0x2A, 0x22, 0x7F } } } }, + { UNK_LANG, kPlatformPC98, { 0x00000093, 0x00002E5D, { { 0xAB, 0xD1, 0x32, 0x89, 0x2A, 0x8D, 0xC0, 0x2C, 0x87, 0x87, 0xA3, 0x14, 0x2A, 0x2A, 0x22, 0x7F } } } }, + EXTRACT_END_ENTRY }; @@ -189,6 +205,8 @@ const ExtractEntrySearchData kIntroStringsProvider[] = { { EN_ANY, kPlatformFMTowns, { 0x00000545, 0x0001A84C, { { 0xEF, 0xE2, 0xE4, 0x92, 0xE1, 0x18, 0xF8, 0x3C, 0x91, 0x29, 0x4D, 0x82, 0xA4, 0x3E, 0xE6, 0x7D } } } }, { JA_JPN, kPlatformFMTowns, { 0x000005FB, 0x0003163E, { { 0x16, 0x28, 0x83, 0xCE, 0x29, 0x94, 0x9F, 0x82, 0xDC, 0xD4, 0x06, 0xE8, 0x67, 0xC9, 0x56, 0x29 } } } }, + { JA_JPN, kPlatformPC98, { 0x000005D0, 0x00032AD7, { { 0xEE, 0x36, 0x93, 0xDD, 0x71, 0x02, 0xE9, 0x0D, 0x54, 0xDE, 0xB6, 0xE1, 0x09, 0x59, 0x60, 0x64 } } } }, + EXTRACT_END_ENTRY }; @@ -205,6 +223,8 @@ const ExtractEntrySearchData kOutroHomeStringProvider[] = { { JA_JPN, kPlatformFMTowns, { 0x00000007, 0x000003E8, { { 0x68, 0x35, 0x87, 0x53, 0xD9, 0x53, 0x1F, 0x13, 0x24, 0x61, 0x0D, 0x8D, 0x33, 0x91, 0xF3, 0x47 } } } }, + { JA_JPN, kPlatformPC98, { 0x00000007, 0x000003E8, { { 0x68, 0x35, 0x87, 0x53, 0xD9, 0x53, 0x1F, 0x13, 0x24, 0x61, 0x0D, 0x8D, 0x33, 0x91, 0xF3, 0x47 } } } }, + EXTRACT_END_ENTRY }; @@ -215,6 +235,8 @@ const ExtractEntrySearchData kRoomFilenamesProvider[] = { { UNK_LANG, kPlatformFMTowns, { 0x0000034C, 0x0000B7AA, { { 0x7C, 0x1B, 0x89, 0x09, 0xF0, 0x87, 0x3C, 0x64, 0x3D, 0x0E, 0x61, 0xCC, 0x09, 0x8D, 0xC9, 0x95 } } } }, + { UNK_LANG, kPlatformPC98, { 0x0000034C, 0x0000B7AA, { { 0x7C, 0x1B, 0x89, 0x09, 0xF0, 0x87, 0x3C, 0x64, 0x3D, 0x0E, 0x61, 0xCC, 0x09, 0x8D, 0xC9, 0x95 } } } }, + EXTRACT_END_ENTRY }; @@ -225,6 +247,8 @@ const ExtractEntrySearchData kRoomListProvider[] = { { UNK_LANG, kPlatformFMTowns, { 0x000064E8, 0x0010312B, { { 0x94, 0x5C, 0x87, 0x35, 0x35, 0x6B, 0x3E, 0xBF, 0x55, 0x3D, 0xDB, 0xD9, 0xFB, 0x97, 0x27, 0x5D } } } }, + { UNK_LANG, kPlatformPC98, { 0x000064E8, 0x0010312B, { { 0x94, 0x5C, 0x87, 0x35, 0x35, 0x6B, 0x3E, 0xBF, 0x55, 0x3D, 0xDB, 0xD9, 0xFB, 0x97, 0x27, 0x5D } } } }, + EXTRACT_END_ENTRY }; @@ -235,6 +259,8 @@ const ExtractEntrySearchData kCharacterImageFilenamesProvider[] = { { UNK_LANG, kPlatformFMTowns, { 0x000000F7, 0x00003A8F, { { 0x1F, 0xAB, 0x8E, 0x5F, 0xAD, 0x76, 0x57, 0x37, 0xD7, 0x9B, 0x3F, 0x35, 0x4B, 0xA0, 0x98, 0x37 } } } }, + { UNK_LANG, kPlatformPC98, { 0x000000F7, 0x00003A8F, { { 0x1F, 0xAB, 0x8E, 0x5F, 0xAD, 0x76, 0x57, 0x37, 0xD7, 0x9B, 0x3F, 0x35, 0x4B, 0xA0, 0x98, 0x37 } } } }, + EXTRACT_END_ENTRY }; @@ -243,6 +269,8 @@ const ExtractEntrySearchData kAudioTracksProvider[] = { { UNK_LANG, kPlatformFMTowns, { 0x0000005D, 0x0000154E, { { 0xA7, 0x7E, 0x03, 0x0A, 0x81, 0x54, 0xD2, 0x5D, 0x7B, 0x33, 0x07, 0xBF, 0x70, 0x01, 0x4B, 0x79 } } } }, + { UNK_LANG, kPlatformPC98, { 0x0000005D, 0x0000154E, { { 0xA7, 0x7E, 0x03, 0x0A, 0x81, 0x54, 0xD2, 0x5D, 0x7B, 0x33, 0x07, 0xBF, 0x70, 0x01, 0x4B, 0x79 } } } }, + EXTRACT_END_ENTRY }; @@ -271,6 +299,8 @@ const ExtractEntrySearchData kItemNamesProvider[] = { { EN_ANY, kPlatformFMTowns, { 0x00000505, 0x00018B13, { { 0x62, 0x76, 0x84, 0x5D, 0x8D, 0xBA, 0x23, 0xC5, 0x67, 0x26, 0x22, 0xBD, 0xBE, 0x81, 0x2D, 0xFF } } } }, { JA_JPN, kPlatformFMTowns, { 0x00000587, 0x000247A1, { { 0xE8, 0xCA, 0x1E, 0x34, 0x05, 0xE5, 0x08, 0xCA, 0xA7, 0xFE, 0x55, 0xCB, 0x75, 0xD0, 0xA7, 0x19 } } } }, + { JA_JPN, kPlatformPC98, { 0x000004CF, 0x000247A1, { { 0xBE, 0x80, 0x3F, 0x10, 0xF7, 0x3A, 0x85, 0xD1, 0xE8, 0x24, 0xE6, 0x4E, 0x8F, 0x17, 0xC9, 0x2E } } } }, + EXTRACT_END_ENTRY }; @@ -293,6 +323,8 @@ const ExtractEntrySearchData kTakenStringsProvider[] = { { EN_ANY, kPlatformFMTowns, { 0x0000001C, 0x00000AED, { { 0x32, 0xD2, 0x87, 0x67, 0x3D, 0x01, 0x50, 0xF3, 0xFA, 0x19, 0x7A, 0xB0, 0xF8, 0x6F, 0x8A, 0x07 } } } }, { JA_JPN, kPlatformFMTowns, { 0x0000001F, 0x00000EB7, { { 0x7F, 0x8C, 0xFF, 0x35, 0x30, 0x71, 0x9A, 0x78, 0xCC, 0x07, 0x11, 0x86, 0xE3, 0x0D, 0x16, 0xDF } } } }, + { JA_JPN, kPlatformPC98, { 0x00000016, 0x00000C56, { { 0x97, 0xF0, 0x57, 0xCC, 0x03, 0x06, 0x41, 0xDC, 0xFC, 0xD5, 0xA2, 0x35, 0x0C, 0x71, 0x37, 0xCC } } } }, + EXTRACT_END_ENTRY }; @@ -310,6 +342,8 @@ const ExtractEntrySearchData kPlacedStringsProvider[] = { { JA_JPN, kPlatformFMTowns, { 0x0000000D, 0x0000074C, { { 0x0E, 0x1C, 0x1F, 0xD2, 0xCF, 0xBF, 0x40, 0xE1, 0x59, 0x0F, 0x1B, 0x46, 0xED, 0x8B, 0x96, 0x8E } } } }, + { JA_JPN, kPlatformPC98, { 0x0000000D, 0x0000074C, { { 0x0E, 0x1C, 0x1F, 0xD2, 0xCF, 0xBF, 0x40, 0xE1, 0x59, 0x0F, 0x1B, 0x46, 0xED, 0x8B, 0x96, 0x8E } } } }, + EXTRACT_END_ENTRY }; @@ -327,6 +361,8 @@ const ExtractEntrySearchData kDroppedStringsProvider[] = { { JA_JPN, kPlatformFMTowns, { 0x0000000B, 0x0000059F, { { 0xDD, 0x5E, 0x51, 0x7E, 0xD9, 0xFC, 0xCD, 0xAD, 0x6B, 0x93, 0x71, 0xBE, 0x83, 0x63, 0x3F, 0x88 } } } }, + { JA_JPN, kPlatformPC98, { 0x0000000B, 0x0000059F, { { 0xDD, 0x5E, 0x51, 0x7E, 0xD9, 0xFC, 0xCD, 0xAD, 0x6B, 0x93, 0x71, 0xBE, 0x83, 0x63, 0x3F, 0x88 } } } }, + EXTRACT_END_ENTRY }; @@ -348,6 +384,8 @@ const ExtractEntrySearchData kNoDropStringsProvider[] = { { EN_ANY, kPlatformFMTowns, { 0x0000007A, 0x0000323C, { { 0x00, 0x7F, 0x8E, 0x2E, 0x7B, 0xFC, 0x06, 0x0B, 0x7A, 0x7F, 0x17, 0xAF, 0x47, 0x82, 0xC1, 0x16 } } } }, { JA_JPN, kPlatformFMTowns, { 0x00000061, 0x00002E9C, { { 0x8A, 0xFA, 0x43, 0x26, 0x68, 0x6D, 0x5A, 0x59, 0x0C, 0x9E, 0xCB, 0x28, 0x43, 0x33, 0x54, 0x49 } } } }, + { JA_JPN, kPlatformPC98, { 0x00000042, 0x000025C2, { { 0x6F, 0x34, 0x59, 0x17, 0x22, 0xCE, 0x1A, 0x82, 0x18, 0xE3, 0x9F, 0x86, 0x84, 0xF1, 0x8E, 0x0C } } } }, + EXTRACT_END_ENTRY }; @@ -365,6 +403,8 @@ const ExtractEntrySearchData kPutDownStringProvider[] = { { JA_JPN, kPlatformFMTowns, { 0x00000029, 0x0000187D, { { 0xDE, 0xEE, 0x66, 0x88, 0x57, 0xF5, 0xF9, 0x2E, 0xD2, 0x14, 0xF5, 0x83, 0xA0, 0x0D, 0x96, 0x86 } } } }, + { JA_JPN, kPlatformPC98, { 0x00000029, 0x0000187D, { { 0xDE, 0xEE, 0x66, 0x88, 0x57, 0xF5, 0xF9, 0x2E, 0xD2, 0x14, 0xF5, 0x83, 0xA0, 0x0D, 0x96, 0x86 } } } }, + EXTRACT_END_ENTRY }; @@ -384,6 +424,8 @@ const ExtractEntrySearchData kWaitAmuletStringProvider[] = { { JA_JPN, kPlatformFMTowns, { 0x00000029, 0x000017A7, { { 0xFD, 0xA3, 0xAD, 0x24, 0x16, 0x49, 0x22, 0x6F, 0x52, 0xE9, 0x50, 0x11, 0x51, 0x38, 0xCA, 0xE0 } } } }, + { JA_JPN, kPlatformPC98, { 0x00000029, 0x000017A7, { { 0xFD, 0xA3, 0xAD, 0x24, 0x16, 0x49, 0x22, 0x6F, 0x52, 0xE9, 0x50, 0x11, 0x51, 0x38, 0xCA, 0xE0 } } } }, + EXTRACT_END_ENTRY }; @@ -403,6 +445,8 @@ const ExtractEntrySearchData kBlackJewelStringProvider[] = { { JA_JPN, kPlatformFMTowns, { 0x00000035, 0x0000205F, { { 0x33, 0xD6, 0x19, 0xEE, 0xEA, 0xDD, 0x9F, 0xB5, 0x77, 0x0C, 0x8E, 0x84, 0x5E, 0x61, 0x22, 0x3E } } } }, + { JA_JPN, kPlatformPC98, { 0x00000035, 0x0000205F, { { 0x33, 0xD6, 0x19, 0xEE, 0xEA, 0xDD, 0x9F, 0xB5, 0x77, 0x0C, 0x8E, 0x84, 0x5E, 0x61, 0x22, 0x3E } } } }, + EXTRACT_END_ENTRY }; @@ -425,6 +469,8 @@ const ExtractEntrySearchData kPoisonGoneStringProvider[] = { { EN_ANY, kPlatformFMTowns, { 0x0000003C, 0x000013B4, { { 0xE9, 0x54, 0xF1, 0xEC, 0x64, 0x5A, 0xEB, 0xC7, 0xAA, 0x7E, 0xA2, 0x9F, 0xE8, 0xFB, 0x3A, 0x82 } } } }, { JA_JPN, kPlatformFMTowns, { 0x0000003D, 0x000017D1, { { 0x7C, 0x93, 0x62, 0x32, 0x47, 0xB9, 0x78, 0x03, 0x86, 0x8D, 0x99, 0xB8, 0x86, 0x68, 0xEF, 0x3A } } } }, + { JA_JPN, kPlatformPC98, { 0x00000016, 0x00000B60, { { 0xFF, 0x8C, 0xC0, 0x1B, 0x2C, 0x0C, 0x23, 0x89, 0x93, 0x79, 0xC5, 0xCD, 0xAC, 0xF9, 0xEA, 0xA7 } } } }, + EXTRACT_END_ENTRY }; @@ -444,6 +490,8 @@ const ExtractEntrySearchData kHealingTipStringProvider[] = { { JA_JPN, kPlatformFMTowns, { 0x0000002B, 0x00001949, { { 0xC7, 0xE3, 0x0A, 0x6B, 0x8F, 0xCA, 0xBC, 0x3A, 0xDC, 0x76, 0x48, 0xD3, 0x8B, 0xD9, 0x44, 0x2E } } } }, + { JA_JPN, kPlatformPC98, { 0x0000002B, 0x00001949, { { 0xC7, 0xE3, 0x0A, 0x6B, 0x8F, 0xCA, 0xBC, 0x3A, 0xDC, 0x76, 0x48, 0xD3, 0x8B, 0xD9, 0x44, 0x2E } } } }, + EXTRACT_END_ENTRY }; @@ -468,6 +516,8 @@ const ExtractEntrySearchData kWispJewelStringsProvider[] = { { EN_ANY, kPlatformFMTowns, { 0x00000075, 0x00002B94, { { 0xA5, 0x4C, 0xBF, 0x5F, 0xD3, 0xF8, 0x6D, 0xE4, 0xB4, 0x8E, 0x64, 0x84, 0xD9, 0xBA, 0x2B, 0x33 } } } }, { JA_JPN, kPlatformFMTowns, { 0x00000067, 0x00002C6B, { { 0x55, 0x56, 0x6B, 0xEA, 0xEF, 0x34, 0xDA, 0x23, 0x23, 0xF4, 0x9D, 0x0F, 0xBF, 0xC3, 0x1F, 0xDA } } } }, + { JA_JPN, kPlatformPC98, { 0x00000037, 0x00001EDF, { { 0xA8, 0x42, 0x79, 0xEB, 0x82, 0xAF, 0x03, 0xD7, 0x03, 0xF9, 0xE0, 0x60, 0xD4, 0x87, 0xAD, 0x2E } } } }, + EXTRACT_END_ENTRY }; @@ -487,6 +537,8 @@ const ExtractEntrySearchData kMagicJewelStringsProvider[] = { { JA_JPN, kPlatformFMTowns, { 0x0000000F, 0x0000087E, { { 0xD8, 0xF1, 0x40, 0x9D, 0x9C, 0x15, 0x9E, 0xBD, 0x69, 0xE5, 0xE1, 0x51, 0x34, 0x22, 0xF3, 0x75 } } } }, + { JA_JPN, kPlatformPC98, { 0x0000000F, 0x0000087E, { { 0xD8, 0xF1, 0x40, 0x9D, 0x9C, 0x15, 0x9E, 0xBD, 0x69, 0xE5, 0xE1, 0x51, 0x34, 0x22, 0xF3, 0x75 } } } }, + EXTRACT_END_ENTRY }; @@ -508,6 +560,8 @@ const ExtractEntrySearchData kThePoisonStringsProvider[] = { { EN_ANY, kPlatformFMTowns, { 0x00000092, 0x0000334E, { { 0xC9, 0x02, 0xB5, 0xEF, 0x90, 0xA8, 0x9C, 0x6E, 0xAD, 0xD6, 0x1F, 0xCC, 0x71, 0x9F, 0x19, 0x2C } } } }, { JA_JPN, kPlatformFMTowns, { 0x000000A0, 0x00003EEB, { { 0x4B, 0x0C, 0xD5, 0xF0, 0xFE, 0x05, 0xF5, 0x09, 0x96, 0xA9, 0xE4, 0xDD, 0x86, 0x8D, 0x79, 0x3C } } } }, + { JA_JPN, kPlatformPC98, { 0x00000045, 0x00002350, { { 0xAD, 0x17, 0xA0, 0x40, 0x86, 0x0E, 0x1D, 0x2F, 0xA7, 0x14, 0x5B, 0x81, 0x38, 0x09, 0x80, 0x21 } } } }, + EXTRACT_END_ENTRY }; @@ -527,6 +581,8 @@ const ExtractEntrySearchData kFluteStringsProvider[] = { { EN_ANY, kPlatformFMTowns, { 0x0000005A, 0x000024F9, { { 0xCA, 0x1F, 0x62, 0x23, 0x22, 0x25, 0x4A, 0x94, 0x8A, 0x50, 0x59, 0xD5, 0xB4, 0x4E, 0xF1, 0xA6 } } } }, { JA_JPN, kPlatformFMTowns, { 0x00000053, 0x00002745, { { 0x7A, 0xBB, 0xFC, 0x30, 0xB6, 0xCE, 0x61, 0xD4, 0xDB, 0xB0, 0xE6, 0xB2, 0xF4, 0x4D, 0x81, 0x35 } } } }, + { JA_JPN, kPlatformPC98, { 0x00000032, 0x00001CDF, { { 0xB7, 0x08, 0x8D, 0x67, 0xB2, 0x0F, 0x59, 0x2D, 0xA6, 0x36, 0x21, 0x7B, 0x8B, 0x89, 0xE3, 0xED } } } }, + EXTRACT_END_ENTRY }; @@ -544,6 +600,8 @@ const ExtractEntrySearchData kFlaskFullStringProvider[] = { { JA_JPN, kPlatformFMTowns, { 0x0000001F, 0x00001135, { { 0x90, 0x52, 0x4A, 0x95, 0xE4, 0x89, 0xD6, 0x0A, 0xE1, 0x2E, 0x98, 0x11, 0x02, 0xF5, 0x79, 0x37 } } } }, + { JA_JPN, kPlatformPC98, { 0x0000001F, 0x00001135, { { 0x90, 0x52, 0x4A, 0x95, 0xE4, 0x89, 0xD6, 0x0A, 0xE1, 0x2E, 0x98, 0x11, 0x02, 0xF5, 0x79, 0x37 } } } }, + EXTRACT_END_ENTRY }; @@ -565,6 +623,8 @@ const ExtractEntrySearchData kFullFlaskStringProvider[] = { { EN_ANY, kPlatformFMTowns, { 0x0000009D, 0x00003521, { { 0xAB, 0x74, 0x71, 0x5C, 0x6E, 0x65, 0xF5, 0x5E, 0xB0, 0x6E, 0x0E, 0xC7, 0x56, 0xCB, 0x55, 0x98 } } } }, { JA_JPN, kPlatformFMTowns, { 0x0000007D, 0x000039CE, { { 0x9E, 0xBE, 0x13, 0x7F, 0x4D, 0x4B, 0xCB, 0x08, 0xC3, 0xE5, 0xF1, 0xC2, 0xD3, 0x69, 0x9E, 0xDF } } } }, + { JA_JPN, kPlatformPC98, { 0x00000079, 0x000039CE, { { 0xEF, 0x3F, 0x36, 0xD4, 0x6C, 0x64, 0x74, 0x9A, 0xFE, 0x13, 0xB5, 0x77, 0x9A, 0xCF, 0x15, 0x5C } } } }, + EXTRACT_END_ENTRY }; @@ -582,6 +642,8 @@ const ExtractEntrySearchData kVeryCleverStringProvider[] = { { JA_JPN, kPlatformFMTowns, { 0x0000002F, 0x00001BDF, { { 0x32, 0x2C, 0x60, 0x1E, 0xB7, 0xE0, 0xFE, 0x5F, 0xEA, 0xEF, 0xA4, 0x73, 0xAC, 0xCB, 0xBA, 0xFE } } } }, + { JA_JPN, kPlatformPC98, { 0x0000002F, 0x00001BDF, { { 0x32, 0x2C, 0x60, 0x1E, 0xB7, 0xE0, 0xFE, 0x5F, 0xEA, 0xEF, 0xA4, 0x73, 0xAC, 0xCB, 0xBA, 0xFE } } } }, + EXTRACT_END_ENTRY }; @@ -600,6 +662,8 @@ const ExtractEntrySearchData kNewGameStringProvider[] = { { EN_ANY, kPlatformFMTowns, { 0x00000015, 0x0000052B, { { 0xAB, 0xD2, 0x16, 0x26, 0xC2, 0x86, 0xFA, 0xC8, 0x42, 0xCD, 0x16, 0xCD, 0x25, 0xB7, 0x44, 0xDC } } } }, { JA_JPN, kPlatformFMTowns, { 0x0000001B, 0x00000EC8, { { 0x13, 0x9A, 0xBC, 0x8F, 0xE2, 0x4B, 0xD7, 0x0B, 0xC0, 0x81, 0x60, 0x10, 0xC2, 0xA6, 0x9C, 0xFA } } } }, + { JA_JPN, kPlatformPC98, { 0x0000001B, 0x00000EC8, { { 0x13, 0x9A, 0xBC, 0x8F, 0xE2, 0x4B, 0xD7, 0x0B, 0xC0, 0x81, 0x60, 0x10, 0xC2, 0xA6, 0x9C, 0xFA } } } }, + EXTRACT_END_ENTRY }; @@ -661,6 +725,8 @@ const ExtractEntrySearchData kDrinkShapesProvider[] = { { UNK_LANG, kPlatformFMTowns, { 0x0000006A, 0x00001EDA, { { 0xE2, 0xDA, 0xEC, 0x87, 0x4A, 0x27, 0xD8, 0xC1, 0x57, 0xE7, 0xD8, 0xD7, 0x87, 0x5F, 0x3A, 0xEB } } } }, + { UNK_LANG, kPlatformPC98, { 0x0000006A, 0x00001EDA, { { 0xE2, 0xDA, 0xEC, 0x87, 0x4A, 0x27, 0xD8, 0xC1, 0x57, 0xE7, 0xD8, 0xD7, 0x87, 0x5F, 0x3A, 0xEB } } } }, + EXTRACT_END_ENTRY }; @@ -683,6 +749,8 @@ const ExtractEntrySearchData kBranStoneShapesProvider[] = { { UNK_LANG, kPlatformFMTowns, { 0x00000063, 0x00001E41, { { 0xDA, 0xA1, 0x93, 0x68, 0xBF, 0xB3, 0xBB, 0xD1, 0x2E, 0xF9, 0xB2, 0x25, 0x72, 0xD9, 0xA6, 0x00 } } } }, + { UNK_LANG, kPlatformPC98, { 0x00000063, 0x00001E41, { { 0xDA, 0xA1, 0x93, 0x68, 0xBF, 0xB3, 0xBB, 0xD1, 0x2E, 0xF9, 0xB2, 0x25, 0x72, 0xD9, 0xA6, 0x00 } } } }, + EXTRACT_END_ENTRY }; @@ -905,6 +973,8 @@ const ExtractEntrySearchData kGUIStringsProvider[] = { { EN_ANY, kPlatformFMTowns, { 0x000001FC, 0x00009D9A, { { 0xE8, 0x39, 0x46, 0x0A, 0x41, 0xC3, 0xDC, 0x33, 0x6E, 0xC5, 0x5D, 0x99, 0xCC, 0xF6, 0xDD, 0xCC } } } }, { JA_JPN, kPlatformFMTowns, { 0x0000025F, 0x0000E56A, { { 0x77, 0x9A, 0x02, 0x52, 0xED, 0x62, 0x23, 0x5A, 0x58, 0x78, 0x19, 0x52, 0x03, 0xD7, 0x88, 0x40 } } } }, + { JA_JPN, kPlatformPC98, { 0x00000213, 0x0000EC5A, { { 0x3B, 0xBA, 0xFB, 0x61, 0x34, 0x60, 0x25, 0xDA, 0x48, 0xBF, 0x95, 0x7F, 0x7F, 0xB6, 0xE4, 0x55 } } } }, + EXTRACT_END_ENTRY }; @@ -929,6 +999,8 @@ const ExtractEntrySearchData kConfigStringsProvider[] = { { EN_ANY, kPlatformFMTowns, { 0x0000004A, 0x000016E9, { { 0x37, 0x12, 0xAD, 0x4C, 0xB8, 0x2C, 0xF5, 0x75, 0x20, 0x74, 0xA0, 0xFD, 0x58, 0xB1, 0x71, 0x77 } } } }, { JA_JPN, kPlatformFMTowns, { 0x00000057, 0x00002262, { { 0xC5, 0x9A, 0x4A, 0xE3, 0xDF, 0xD3, 0x0E, 0x8E, 0xBB, 0xAF, 0x75, 0xD3, 0x67, 0xB1, 0xF6, 0x08 } } } }, + { JA_JPN, kPlatformPC98, { 0x0000003F, 0x00001E9D, { { 0x8A, 0x3C, 0x78, 0x6B, 0x3F, 0x0A, 0x7D, 0x92, 0x16, 0x39, 0xEB, 0x1C, 0x84, 0x9E, 0x4F, 0x84 } } } }, + EXTRACT_END_ENTRY }; @@ -950,12 +1022,26 @@ const ExtractEntrySearchData kKyra1TownsCDATableProvider[] = { EXTRACT_END_ENTRY }; +const ExtractEntrySearchData kKyra1PC98StoryStringsProvider[] = { + { JA_JPN, kPlatformPC98, { 0x00000054, 0x00002FAD, { { 0xCB, 0x25, 0xD1, 0xFA, 0x65, 0xCE, 0xD5, 0xE6, 0xAD, 0xE3, 0x48, 0x25, 0xC8, 0x51, 0xC6, 0x12 } } } }, + + EXTRACT_END_ENTRY +}; + +const ExtractEntrySearchData kKyra1PC98IntroSfxProvider[] = { + { UNK_LANG, kPlatformPC98, { 0x00000300, 0x00017445, { { 0xC3, 0x54, 0x4A, 0x58, 0x00, 0x33, 0xEA, 0xF1, 0x20, 0xA8, 0x0C, 0xDE, 0x7A, 0x94, 0xAB, 0x5E } } } }, + + EXTRACT_END_ENTRY +}; + const ExtractEntrySearchData kCreditsStringsProvider[] = { { EN_ANY, kPlatformAmiga, { 0x000004CC, 0x000182F7, { { 0x7D, 0x14, 0xA6, 0xEC, 0x12, 0x67, 0xAC, 0xA7, 0x7B, 0xF8, 0x44, 0x19, 0x52, 0xCC, 0x3A, 0x65 } } } }, { DE_DEU, kPlatformAmiga, { 0x000004FB, 0x00019987, { { 0x8B, 0xF1, 0x61, 0xB9, 0x3E, 0xA4, 0x28, 0x9B, 0x45, 0x86, 0xD1, 0xF0, 0xC3, 0x35, 0x44, 0xA0 } } } }, { UNK_LANG, kPlatformFMTowns, { 0x0000058C, 0x0001AD16, { { 0xFC, 0x1B, 0xE6, 0xEB, 0x03, 0x1C, 0x54, 0x93, 0x64, 0x53, 0xB1, 0x17, 0x9D, 0x95, 0x1B, 0x4A } } } }, + { UNK_LANG, kPlatformPC98, { 0x00000530, 0x00019571, { { 0x38, 0x4F, 0xE0, 0x74, 0x27, 0x21, 0xEC, 0x63, 0x41, 0x32, 0xB1, 0xD9, 0xA5, 0x65, 0x62, 0x71 } } } }, + EXTRACT_END_ENTRY }; @@ -1766,6 +1852,8 @@ const ExtractEntry extractProviders[] = { { kKyra1TownsSFXwdTable, kKyra1TownsSFXwdTableProvider }, { kKyra1TownsSFXbtTable, kKyra1TownsSFXbtTableProvider }, { kKyra1TownsCDATable, kKyra1TownsCDATableProvider }, + { kKyra1PC98StoryStrings, kKyra1PC98StoryStringsProvider }, + { kKyra1PC98IntroSfx, kKyra1PC98IntroSfxProvider }, { kCreditsStrings, kCreditsStringsProvider }, { kAmigaIntroSFXTable, kAmigaIntroSFXTableProvider }, { kAmigaGameSFXTable, kAmigaGameSFXTableProvider }, |