aboutsummaryrefslogtreecommitdiff
path: root/sword2
diff options
context:
space:
mode:
authorJonathan Gray2003-07-28 07:00:15 +0000
committerJonathan Gray2003-07-28 07:00:15 +0000
commit77cf6b7c3e66cca495e9ddbc92dad68a1874ee17 (patch)
tree9666199f71264dad443687a0326099c62800973a /sword2
parent376f78f7f650604d580a3c681ab20b490667f289 (diff)
downloadscummvm-rg350-77cf6b7c3e66cca495e9ddbc92dad68a1874ee17.tar.gz
scummvm-rg350-77cf6b7c3e66cca495e9ddbc92dad68a1874ee17.tar.bz2
scummvm-rg350-77cf6b7c3e66cca495e9ddbc92dad68a1874ee17.zip
add bs2demo target for broken sword 2 demo
svn-id: r9229
Diffstat (limited to 'sword2')
-rw-r--r--sword2/anims.cpp12
-rw-r--r--sword2/controls.cpp2
-rw-r--r--sword2/maketext.cpp13
-rw-r--r--sword2/resman.cpp3
-rw-r--r--sword2/sound.cpp6
-rw-r--r--sword2/speech.cpp28
-rw-r--r--sword2/sword2.cpp30
-rw-r--r--sword2/sword2.h13
8 files changed, 55 insertions, 52 deletions
diff --git a/sword2/anims.cpp b/sword2/anims.cpp
index 6449939154..7b3a7d17b7 100644
--- a/sword2/anims.cpp
+++ b/sword2/anims.cpp
@@ -579,9 +579,9 @@ void CreateSequenceSpeech(_movieTextObject *sequenceText[]) // (James23may97)
// set up path to speech cluster
// first checking if we have speech1.clu or speech2.clu in current directory (for translators to test)
- #ifdef _WEBDEMO // (James 03oct97)
+ if (g_bs2->_gameId == GID_BS2_DEMO) {
strcpy(speechFile,"SPEECH.CLU");
- #else
+ } else {
#ifdef _DEBUG
if ((res_man.WhichCd()==1) && (!access("speech1.clu",0))) // if 0 ie. if it's there
@@ -598,8 +598,7 @@ void CreateSequenceSpeech(_movieTextObject *sequenceText[]) // (James23may97)
strcpy(speechFile,res_man.GetCdPath());
strcat(speechFile,"CLUSTERS\\SPEECH.CLU");
}
-
- #endif // _WEBDEMO
+ }
//------------------------------
wavSize = GetCompSpeechSize(speechFile, wavId); // returns size of decompressed wav, or 0 if wav not found
@@ -802,11 +801,10 @@ int32 FN_play_sequence(int32 *params) // James(09apr97)
//--------------------------------------------------
// add the appropriate file extension & play it
- #ifdef _WEBDEMO // (James 01oct97)
+ if (g_bs2->_gameId == GID_BS2_DEMO)
sprintf(filename,"%s.smk", (char *)params[0]);
- #else
+ else
sprintf(filename,"%sSMACKS\\%s.smk", res_man.GetCdPath(), (char *)params[0]);
- #endif // _WEBDEMO
//--------------------------------------
// Write to walkthrough file (zebug0.txt)
diff --git a/sword2/controls.cpp b/sword2/controls.cpp
index 37e81b95c3..2745c7e560 100644
--- a/sword2/controls.cpp
+++ b/sword2/controls.cpp
@@ -1566,7 +1566,7 @@ void Restart_control(void) //Tony4Apr97
FreeAllRouteMem(); // free all the route memory blocks from previous game
- Start_game(); // call the same function that first started us up
+ g_bs2->Start_game(); // call the same function that first started us up
//prime system with a game cycle
diff --git a/sword2/maketext.cpp b/sword2/maketext.cpp
index fef6cac73c..617565892a 100644
--- a/sword2/maketext.cpp
+++ b/sword2/maketext.cpp
@@ -64,6 +64,7 @@
#include "memory.h"
#include "protocol.h" // for FetchFrameHeader()
#include "resman.h"
+#include "sword2.h"
extern uint32 sequenceTextLines; // see anims.cpp
@@ -624,12 +625,6 @@ void InitialiseFontResourceFlags(void) // (James31july97)
#define TEXT_RES 3258 // resource 3258 contains text from location script for 152 (install, save & restore text, etc)
#define SAVE_LINE_NO 1 // local line number of "save" (actor no. 1826)
-#ifndef _DEMO // normal game
- #define NAME_LINE_NO 54 // local line number of game name (actor no. 3550)
-#else
- #define NAME_LINE_NO 451 // local line number of demo game name
-#endif // _DEMO
-
//---------------------------------------------------------------------------------
textFile = res_man.Res_open(TEXT_RES); // open the text resource
//---------------------------------------------------------------------------------
@@ -649,7 +644,11 @@ void InitialiseFontResourceFlags(void) // (James31july97)
//---------------------------------------------------------------------------------
// Get the game name for the windows application
- textLine = FetchTextLine(textFile, NAME_LINE_NO )+2; // get the text line (& skip the 2 chars containing the wavId)
+ if (g_bs2->_gameId == GID_BS2_DEMO)
+ textLine = FetchTextLine(textFile, 451 )+2; // get the text line (& skip the 2 chars containing the wavId)
+ else
+ textLine = FetchTextLine(textFile, 54 )+2; // get the text line (& skip the 2 chars containing the wavId)
+
SetWindowName((char*)textLine); // driver function
//---------------------------------------------------------------------------------
res_man.Res_close(TEXT_RES); // now ok to close the text file
diff --git a/sword2/resman.cpp b/sword2/resman.cpp
index 0829243257..bb51f80d95 100644
--- a/sword2/resman.cpp
+++ b/sword2/resman.cpp
@@ -1370,9 +1370,8 @@ void resMan::GetCd(int cd)
uint8 *textRes;
//----------------------------------------------------------------------------------------
- #ifdef _WEBDEMO // (James 01oct97)
+ if (g_bs2->_gameId == GID_BS2_DEMO)
return; // don't ask for CD's in the playable demo downloaded from our web-site!
- #endif // _WEBDEMO
#ifdef _PCGUIDE
return; // don't ask for CD in the patch for the demo on "PC Guide" magazine
diff --git a/sword2/sound.cpp b/sword2/sound.cpp
index d320a3fb8a..0964f9d093 100644
--- a/sword2/sound.cpp
+++ b/sword2/sound.cpp
@@ -37,6 +37,7 @@
#include "protocol.h" // for FetchObjectName() for debugging FN_play_fx
#include "resman.h"
#include "sound.h"
+#include "sword2.h"
//--------------------------------------------------------------------------------------
typedef struct
@@ -409,11 +410,10 @@ int32 FN_play_music(int32 *params) // updated by James on 10apr97
// add the appropriate file extension & play it
- #ifdef _WEBDEMO // (James 01oct97)
+ if (g_bs2->_gameId == GID_BS2_DEMO)
sprintf(filename,"MUSIC.CLU");
- #else
+ else
sprintf(filename,"%sCLUSTERS\\MUSIC.CLU", res_man.GetCdPath());
- #endif // _WEBDEMO
rv = StreamCompMusic(filename, params[0], loopFlag);
diff --git a/sword2/speech.cpp b/sword2/speech.cpp
index 7c9a10e782..fe1979b4a4 100644
--- a/sword2/speech.cpp
+++ b/sword2/speech.cpp
@@ -40,6 +40,7 @@
#include "resman.h"
#include "sound.h"
#include "speech.h"
+#include "sword2.h"
#include "walker.h"
//------------------------------------------------------------------------------------
@@ -1564,27 +1565,22 @@ int32 FN_i_speak(int32 *params) //Tony18Oct96 (revamped by James01july97)
// set up path to speech cluster
// first checking if we have speech1.clu or speech2.clu in current directory (for translators to test)
-#ifdef _WEBDEMO // (James 01oct97)
- strcpy(speechFile,"SPEECH.CLU");
-#else
-
+ if (g_bs2->_gameId == GID_BS2_DEMO)
+ strcpy(speechFile,"SPEECH.CLU");
+ else {
#ifdef _DEBUG
- if ((res_man.WhichCd()==1) && (!access("speech1.clu",0))) // if 0 ie. if it's there
- {
+ if ((res_man.WhichCd()==1) && (!access("speech1.clu",0))) { // if 0 ie. if it's there
strcpy(speechFile,"speech1.clu");
- }
- else if ((res_man.WhichCd()==2) && (!access("speech2.clu",0))) // if 0 ie. if it's there
- {
- strcpy(speechFile,"speech2.clu");
- }
- else
+ } else if ((res_man.WhichCd()==2) && (!access("speech2.clu",0))) { // if 0 ie. if it's there
+ strcpy(speechFile,"speech2.clu");
+ } else
#endif // _DEBUG
- {
- strcpy(speechFile,res_man.GetCdPath());
- strcat(speechFile,"CLUSTERS\\SPEECH.CLU");
+ {
+ strcpy(speechFile,res_man.GetCdPath());
+ strcat(speechFile,"CLUSTERS\\SPEECH.CLU");
+ }
}
-#endif // _WEBDEMO
//------------------------------
diff --git a/sword2/sword2.cpp b/sword2/sword2.cpp
index cd80a02482..292c13c45d 100644
--- a/sword2/sword2.cpp
+++ b/sword2/sword2.cpp
@@ -82,7 +82,8 @@ uint8 stepOneCycle=0; // for use while game paused
static const VersionSettings bs2_settings[] = {
/* Broken Sword 2 */
- {"bs2", "Broken Sword II", GID_BS2_FIRST, 99, VersionSettings::ADLIB_DONT_CARE, GF_DEFAULT_TO_1X_SCALER, "players.clu" },
+ {"bs2", "Broken Sword II", GID_BS2, 99, VersionSettings::ADLIB_DONT_CARE, GF_DEFAULT_TO_1X_SCALER, "players.clu" },
+ {"bs2demo", "Broken Sword II (Demo)", GID_BS2_DEMO, 99, VersionSettings::ADLIB_DONT_CARE, GF_DEFAULT_TO_1X_SCALER, "players.clu" },
{NULL, NULL, 0, 0, VersionSettings::ADLIB_DONT_CARE, 0, NULL}
};
@@ -102,6 +103,8 @@ BS2State::BS2State(GameDetector *detector, OSystem *syst)
_detector = detector;
_syst = syst;
g_bs2 = this;
+ _features = detector->_game.features;
+ _gameId = detector->_game.id;
}
@@ -109,7 +112,7 @@ void BS2State::errorString(const char *buf1, char *buf2) {
strcpy(buf2, buf1);
}
-int32 InitialiseGame(void)
+int32 BS2State::InitialiseGame(void)
{
//init engine drivers
@@ -167,9 +170,9 @@ int32 InitialiseGame(void)
Init_fx_queue(); // initialise the sound fx queue
Zdebug("RETURNED.");
-#ifdef _DEMO // demo only
- DEMO=1; // set script variable
-#endif
+ // all demos (not just web)
+ if (_gameId == GID_BS2_DEMO)
+ DEMO=1; // set script variable
return(0);
}
@@ -473,28 +476,29 @@ int RunningFromCd()
//------------------------------------------------------------------------------------
-void Start_game(void) //Tony29May97
+void BS2State::Start_game(void) //Tony29May97
{
//boot the game straight into a start script
+ int screen_manager_id;
Zdebug("Start_game() STARTING:");
-#ifdef _DEMO
- #define SCREEN_MANAGER_ID 19 // DOCKS SECTION START
-#else
- #define SCREEN_MANAGER_ID 949 // INTRO & PARIS START
-#endif
+ // all demos not just web
+ if (_gameId == GID_BS2_DEMO)
+ screen_manager_id = 19; // DOCKS SECTION START
+ else
+ screen_manager_id = 949; // INTRO & PARIS START
char *raw_script;
char *raw_data_ad;
uint32 null_pc=1; // the required start-scripts are both script #1 in the respective ScreenManager objects
raw_data_ad = (char*) (res_man.Res_open(8)); // open george object, ready for start script to reference
- raw_script = (char*) (res_man.Res_open(SCREEN_MANAGER_ID)); // open the ScreenManager object
+ raw_script = (char*) (res_man.Res_open(screen_manager_id)); // open the ScreenManager object
RunScript ( raw_script, raw_data_ad, &null_pc ); // run the start script now (because no console)
- res_man.Res_close(SCREEN_MANAGER_ID); // close the ScreenManager object
+ res_man.Res_close(screen_manager_id); // close the ScreenManager object
res_man.Res_close(8); // close george
Zdebug("Start_game() DONE.");
diff --git a/sword2/sword2.h b/sword2/sword2.h
index 0ec86e8c39..2f13c7bb1c 100644
--- a/sword2/sword2.h
+++ b/sword2/sword2.h
@@ -36,23 +36,30 @@ void Close_game(); //Tony11Oct96
void PauseGame(void); // James17jun97
void UnpauseGame(void); // James17jun97
-void Start_game(void); // James13aug97
#define HEAD_LEN 8
extern uint8 version_string[]; // for displaying from the console
extern uint8 unencoded_name[];
+enum BSGameId {
+ GID_BS2 = GID_BS2_FIRST,
+ GID_BS2_DEMO
+};
// TODO move stuff into class
class BS2State : public Engine {
void errorString(const char *buf_input, char *buf_output);
public:
BS2State(GameDetector *detector, OSystem *syst);
- void go();
- void parseEvents();
+ void go(void);
+ void parseEvents(void);
+ void Start_game(void);
+ int32 InitialiseGame(void);
OSystem *_syst;
GameDetector *_detector;
+ uint32 _features;
+ byte _gameId;
private:
bool _quit;
};