mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-28 22:23:43 +00:00
Adds archive file list, MD5 for my CD version, and a few function stubs for Hand of Fate, to use as a basis for further work
svn-id: r22252
This commit is contained in:
parent
13e4fc74e0
commit
ff7955f4d3
@ -51,6 +51,8 @@
|
||||
|
||||
namespace Kyra {
|
||||
|
||||
#undef ENABLE_KYRA2
|
||||
|
||||
enum {
|
||||
// We only compute MD5 of the first megabyte of our data files.
|
||||
kMD5FileSizeLimit = 1024 * 1024
|
||||
@ -93,12 +95,18 @@ static const GameSettings kyra_games[] = {
|
||||
"b037c41768b652a040360ffa3556fd2a", "GEMCUT.PAK" },
|
||||
{ "kyra1", "The Legend of Kyrandia Demo", GI_KYRA1, GF_DEMO | GF_ENGLISH,
|
||||
"fb722947d94897512b13b50cc84fd648", "DEMO1.WSA" },
|
||||
#ifdef ENABLE_KYRA2
|
||||
{ "kyra2", "The Hand of Fate", GI_KYRA2, GF_ENGLISH,
|
||||
"28cbad1c5bf06b2d3825ae57d760d032", "FATE.PAK" },
|
||||
#endif
|
||||
|
||||
{ 0, 0, 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
// Keep list of different supported games
|
||||
static const PlainGameDescriptor kyra_list[] = {
|
||||
{ "kyra1", "The Legend of Kyrandia" },
|
||||
{ "kyra2", "The Hand of Fate" },
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
@ -206,7 +214,15 @@ DetectedGameList Engine_KYRA_detectGames(const FSList &fslist) {
|
||||
|
||||
PluginError Engine_KYRA_create(OSystem *syst, Engine **engine) {
|
||||
assert(engine);
|
||||
*engine = new KyraEngine(syst);
|
||||
const char *gameid = ConfMan.get("gameid").c_str();
|
||||
|
||||
if (!scumm_stricmp("kyra1", gameid)) {
|
||||
*engine = new KyraEngine_v1(syst);
|
||||
} else if (!scumm_stricmp("kyra2", gameid)) {
|
||||
*engine = new KyraEngine_v2(syst);
|
||||
} else
|
||||
error("Kyra engine created with invalid gameid.");
|
||||
|
||||
return kNoError;
|
||||
}
|
||||
|
||||
@ -265,6 +281,14 @@ KyraEngine::KyraEngine(OSystem *system)
|
||||
memset(_sceneAnimTable, 0, sizeof(_sceneAnimTable));
|
||||
}
|
||||
|
||||
KyraEngine_v1::KyraEngine_v1(OSystem *system)
|
||||
:KyraEngine(system) {
|
||||
}
|
||||
|
||||
KyraEngine_v2::KyraEngine_v2(OSystem *system)
|
||||
:KyraEngine(system) {
|
||||
}
|
||||
|
||||
int KyraEngine::init() {
|
||||
// Detect game features based on MD5. Again brutally ripped from Gobliins.
|
||||
uint8 md5sum[16];
|
||||
@ -590,6 +614,14 @@ KyraEngine::~KyraEngine() {
|
||||
}
|
||||
}
|
||||
|
||||
KyraEngine_v1::~KyraEngine_v1() {
|
||||
|
||||
}
|
||||
|
||||
KyraEngine_v2::~KyraEngine_v2() {
|
||||
|
||||
}
|
||||
|
||||
void KyraEngine::errorString(const char *buf1, char *buf2) {
|
||||
strcpy(buf2, buf1);
|
||||
}
|
||||
@ -623,6 +655,17 @@ int KyraEngine::go() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int KyraEngine_v2::go() {
|
||||
// Kyra2 goes here :)
|
||||
loadPalette("palette.col", _screen->_currentPalette);
|
||||
_screen->setScreenPalette(_screen->_currentPalette);
|
||||
loadBitmap("_playfld.cps", 0, 0, 0);
|
||||
_screen->updateScreen();
|
||||
waitForEvent();
|
||||
_system->quit();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void KyraEngine::startup() {
|
||||
debugC(9, kDebugLevelMain, "KyraEngine::startup()");
|
||||
static const uint8 colorMap[] = { 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 0 };
|
||||
|
@ -60,7 +60,8 @@ enum {
|
||||
};
|
||||
|
||||
enum {
|
||||
GI_KYRA1 = 0
|
||||
GI_KYRA1 = 0,
|
||||
GI_KYRA2 = 1
|
||||
};
|
||||
|
||||
// TODO: this is just the start of makeing the debug output of the kyra engine a bit more useable
|
||||
@ -985,6 +986,20 @@ protected:
|
||||
static const uint16 _amuletY2[];
|
||||
};
|
||||
|
||||
class KyraEngine_v1 : public KyraEngine {
|
||||
public:
|
||||
KyraEngine_v1(OSystem *system);
|
||||
~KyraEngine_v1();
|
||||
};
|
||||
|
||||
class KyraEngine_v2 : public KyraEngine {
|
||||
public:
|
||||
KyraEngine_v2(OSystem *system);
|
||||
~KyraEngine_v2();
|
||||
|
||||
int go();
|
||||
};
|
||||
|
||||
} // End of namespace Kyra
|
||||
|
||||
#endif
|
||||
|
@ -92,15 +92,39 @@ Resource::Resource(KyraEngine *engine) {
|
||||
"CHAPTER1.VRM", 0
|
||||
};
|
||||
|
||||
static const char *kyra2CDFilelist[] = {
|
||||
"ALLEY.PAK", "COST3_SH.PAK", "DINOD.PAK", "GARDEN.PAK", "INJAIL2.PAK", "MISC_EMC.PAK", "PHONE_B.PAK",
|
||||
"STATION.PAK", "VOLCANO.PAK", "VOLC_L.PAK", "ALTAR.PAK", "COST4_SH.PAK", "DOCK.PAK", "GEARS.PAK",
|
||||
"INSHOP.PAK", "MYSTRM.PAK," "PHONE_C.PAK", "STREET.PAK", "VOLC_A.PAK", "VOLC_M.PAK", "ANCHOR.PAK",
|
||||
"COST5_SH.PAK", "DOOR.PAK", "GEARS2.PAK", "INSTORE.PAK", "NEST.PAK", "PHONE_D.PAK", "SULFUR.PAK",
|
||||
"VOLC_B.PAK", "VOLC_N.PAK", "AUDIO.PAK", "COST6_SH.PAK", "DRIVERS.PAK", "GEARS3.PAK", "INTRODRV.PAK",
|
||||
"ONBOAT.PAK", "QUICK.PAK", "TALKENG.PAK", "VOLC_C.PAK", "VOLC_O.PAK", "BRIDGE.PAK", "COST7_SH.PAK",
|
||||
"FALL.PAK", "GNARL.PAK", "INTROGEN.PAK", "OTHER.PAK", "RAINA.PAK", "TALKFRE.PAK", "VOLC_D.PAK",
|
||||
"VOLC_P.PAK", "CAULDRON.PAK", "COST8_SH.PAK", "FATE.PAK", "HANOI.PAK", "INTROTLK.PAK", "OUTCAVE.PAK",
|
||||
"RAINB.PAK", "TALKGER.PAK", "VOLC_E.PAK", "WHARF.PAK", "CELLAR.PAK", "COST9_SH.PAK", "FERRY.PAK",
|
||||
"HOLE.PAK", "INTROVOC.PAK", "OUTCAVE2.PAK", "RAT.PAK", "TAVERN.PAK", "VOLC_F.PAK", "WHEEL.PAK",
|
||||
"CLEARNG.PAK", "CRICKET.PAK", "FIGHT.PAK", "INCAVE.PAK", "ISLE.PAK", "OUTFARM.PAK", "ROAD.PAK",
|
||||
"TIMBER.PAK", "VOLC_G.PAK", "CLIFF.PAK", "CROC.PAK", "FISHER.PAK", "INGATE.PAK", "JUNGLE.PAK",
|
||||
"OUTGATE.PAK", "ROPE.PAK", "TRAM.PAK", "VOLC_H.PAK", "CLOSE.PAK", "DINOA.PAK", "FLOAT.PAK", "INHERB.PAK",
|
||||
"MARKHME.PAK", "OUTHERB.PAK", "SCORCH.PAK", "TREE.PAK", "VOLC_I.PAK", "COST1_SH.PAK", "DINOB.PAK",
|
||||
"FLYTRAP.PAK", "INHOME.PAK", "MEADOW.PAK", "OUTHOME.PAK", "SKULL.PAK", "TREE2.PAK", "VOLC_J.PAK",
|
||||
"COST2_SH.PAK", "DINOC.PAK", "FOOT.PAK", "INJAIL.PAK", "MISC_CPS.PAK", "PHONE_A.PAK", "SKY.PAK", "VOC.PAK",
|
||||
"VOLC_K.PAK", 0
|
||||
};
|
||||
const char **usedFilelist = 0;
|
||||
|
||||
/*if (_engine->features() & GF_AMIGA)
|
||||
usedFilelist = kyra1AmigaFilelist;
|
||||
else*/ if (_engine->features() & GF_FLOPPY)
|
||||
usedFilelist = kyra1Filelist;
|
||||
else if (_engine->features() & GF_TALKIE)
|
||||
usedFilelist = kyra1CDFilelist;
|
||||
else
|
||||
if (_engine->game() == GI_KYRA1) {
|
||||
/*if (_engine->features() & GF_AMIGA)
|
||||
usedFilelist = kyra1AmigaFilelist;
|
||||
else*/ if (_engine->features() & GF_FLOPPY)
|
||||
usedFilelist = kyra1Filelist;
|
||||
else if (_engine->features() & GF_TALKIE)
|
||||
usedFilelist = kyra1CDFilelist;
|
||||
} else {
|
||||
usedFilelist = kyra2CDFilelist;
|
||||
}
|
||||
|
||||
if (!usedFilelist)
|
||||
error("no filelist found for this game");
|
||||
|
||||
for (uint32 tmp = 0; usedFilelist[tmp]; ++tmp) {
|
||||
|
@ -139,6 +139,8 @@ bool StaticResource::init() {
|
||||
if (_engine->game() == GI_KYRA1) {
|
||||
_builtIn = 0;
|
||||
_filenameTable = kyra1StaticRes;
|
||||
} else if (_engine->game() == GI_KYRA2) {
|
||||
return true;
|
||||
} else {
|
||||
error("unknown game ID");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user