restructure

svn-id: r6934
This commit is contained in:
Oliver Kiehl 2003-04-07 20:44:52 +00:00
parent 6fc83fa905
commit 17f53e4c1c
4 changed files with 162 additions and 137 deletions

View File

@ -192,8 +192,8 @@
#define START_VOICE ( delay(200), _sound->playVoice(vocBuffer, loadedVocSize) )
#define START_BG ( _sound->playBgSound(bgVocBuffer, bgVocSize) )
#define LOAD_NEW_VOICE(num) ( free (vocBuffer), vocBuffer = loadFile(num, NULL), loadedVocSize = _lastLoadedFileSize )
#define LOAD_NEW_BG(num) ( free (bgVocBuffer), bgVocBuffer = loadFile(num, NULL), bgVocSize = _lastLoadedFileSize )
#define LOAD_NEW_VOICE(num) ( free (vocBuffer), vocBuffer = _skyDisk->loadFile(num, NULL), loadedVocSize = _skyDisk->_lastLoadedFileSize )
#define LOAD_NEW_BG(num) ( free (bgVocBuffer), bgVocBuffer = _skyDisk->loadFile(num, NULL), bgVocSize = _skyDisk->_lastLoadedFileSize )
#define WAIT_VOICE while (_sound->_voiceHandle != 0) { delay(50); }
#define WAIT_SEQUENCE while (_tseqFrames != 0) { delay(50); }
#define WAIT_RELATIVE(x) ( delay(20 * (x)) )
@ -204,17 +204,17 @@ void SkyState::doCDIntro() {
uint32 loadedVocSize, bgVocSize;
byte *vocBuffer, *bgVocBuffer, *cd2_seq_data_1, *cd2_seq_data_2;
assert(_isCDVersion);
assert(isCDVersion(_gameVersion));
vocBuffer = loadFile(cdv_00, NULL);
loadedVocSize = _lastLoadedFileSize;
vocBuffer = _skyDisk->loadFile(cdv_00, NULL);
loadedVocSize = _skyDisk->_lastLoadedFileSize;
_tempPal = loadFile(cd_pal, NULL);
_workScreen = loadFile(cd_1_log, NULL);
_tempPal = _skyDisk->loadFile(cd_pal, NULL);
_workScreen = _skyDisk->loadFile(cd_1_log, NULL);
cd2_seq_data_1 = loadFile(cd_1, NULL);
bgVocBuffer = loadFile(59499, NULL);
bgVocSize = _lastLoadedFileSize;
cd2_seq_data_1 = _skyDisk->loadFile(cd_1, NULL);
bgVocBuffer = _skyDisk->loadFile(59499, NULL);
bgVocSize = _skyDisk->_lastLoadedFileSize;
delay(2000); //keep gibbons screen up for 2 seconds
fnFadeDown(0); //and fade out
@ -223,8 +223,8 @@ void SkyState::doCDIntro() {
START_BG;
free (vocBuffer);
vocBuffer = loadFile(cdv_01, NULL);
loadedVocSize = _lastLoadedFileSize;
vocBuffer = _skyDisk->loadFile(cdv_01, NULL);
loadedVocSize = _skyDisk->_lastLoadedFileSize;
WAIT_VOICE; //wait for the voice to finish
START_VOICE;
@ -236,7 +236,7 @@ void SkyState::doCDIntro() {
WAIT_VOICE;
START_VOICE;
START_BG;
cd2_seq_data_2 = loadFile(cd_2, NULL); //load seq 2 while 1 is playing
cd2_seq_data_2 = _skyDisk->loadFile(cd_2, NULL); //load seq 2 while 1 is playing
LOAD_NEW_VOICE(cdv_03);
//WAIT_SEQUENCE;
WAIT_VOICE;
@ -251,7 +251,7 @@ void SkyState::doCDIntro() {
START_BG;
free(cd2_seq_data_1);
cd2_seq_data_1 = loadFile(cd_3, NULL);
cd2_seq_data_1 = _skyDisk->loadFile(cd_3, NULL);
LOAD_NEW_VOICE(cdv_05);
WAIT_SEQUENCE; //2
@ -269,7 +269,7 @@ void SkyState::doCDIntro() {
START_BG;
free (cd2_seq_data_2);
cd2_seq_data_2 = loadFile(cd_5, NULL);
cd2_seq_data_2 = _skyDisk->loadFile(cd_5, NULL);
LOAD_NEW_VOICE(cdv_07);
WAIT_SEQUENCE; //3
@ -289,7 +289,7 @@ void SkyState::doCDIntro() {
START_BG;
free (cd2_seq_data_1);
cd2_seq_data_1 = loadFile(cd_7, NULL);
cd2_seq_data_1 = _skyDisk->loadFile(cd_7, NULL);
LOAD_NEW_VOICE(cdv_10);
WAIT_SEQUENCE; //5
@ -299,10 +299,10 @@ void SkyState::doCDIntro() {
startTimerSequence(cd2_seq_data_1); //7
START_BG;
loadFile(cd_11_pal, _tempPal);
byte *workScreen2 = loadFile(cd_11_log, NULL); //need an extra screen or else the sequence will get messed up
_skyDisk->loadFile(cd_11_pal, _tempPal);
byte *workScreen2 = _skyDisk->loadFile(cd_11_log, NULL); //need an extra screen or else the sequence will get messed up
free (cd2_seq_data_2);
cd2_seq_data_2 = loadFile(cd_11, NULL);
cd2_seq_data_2 = _skyDisk->loadFile(cd_11, NULL);
LOAD_NEW_VOICE(cdv_11);
WAIT_VOICE; //10
@ -329,7 +329,7 @@ void SkyState::doCDIntro() {
START_BG;
free(cd2_seq_data_1);
cd2_seq_data_1 = loadFile(cd_13, NULL);
cd2_seq_data_1 = _skyDisk->loadFile(cd_13, NULL);
LOAD_NEW_VOICE(cdv_14);
LOAD_NEW_BG(59498);
@ -342,8 +342,8 @@ void SkyState::doCDIntro() {
START_BG;
LOAD_NEW_VOICE(cdv_15);
loadFile(cd_15_pal, _tempPal);
loadFile(cd_15_log, workScreen2);
_skyDisk->loadFile(cd_15_pal, _tempPal);
_skyDisk->loadFile(cd_15_log, workScreen2);
WAIT_SEQUENCE; //13
WAIT_VOICE; //14
@ -360,9 +360,9 @@ void SkyState::doCDIntro() {
START_VOICE; //16
START_BG;
loadFile(cd_17_log, workScreen2);
_skyDisk->loadFile(cd_17_log, workScreen2);
free (cd2_seq_data_2);
cd2_seq_data_2 = loadFile(cd_17, NULL);
cd2_seq_data_2 = _skyDisk->loadFile(cd_17, NULL);
LOAD_NEW_VOICE(cdv_17);
WAIT_VOICE; //16
@ -381,8 +381,8 @@ void SkyState::doCDIntro() {
START_BG;
LOAD_NEW_VOICE(cdv_19);
loadFile(cd_19_pal, _tempPal);
loadFile(cd_19_log, workScreen2);
_skyDisk->loadFile(cd_19_pal, _tempPal);
_skyDisk->loadFile(cd_19_log, workScreen2);
START_BG;
LOAD_NEW_BG(59496); //loud heli to quiet
@ -397,7 +397,7 @@ void SkyState::doCDIntro() {
START_VOICE; //19
START_BG;
LOAD_NEW_VOICE(cdv_20);
loadFile(cd_20_log, workScreen2);
_skyDisk->loadFile(cd_20_log, workScreen2);
LOAD_NEW_BG(59496); //quiet heli
WAIT_VOICE; //19
@ -410,7 +410,7 @@ void SkyState::doCDIntro() {
paletteFadeUp(_tempPal);
LOAD_NEW_VOICE(cdv_21);
loadFile(cd_21_log, workScreen2);
_skyDisk->loadFile(cd_21_log, workScreen2);
START_BG;
WAIT_SEQUENCE; //19
@ -435,8 +435,8 @@ void SkyState::doCDIntro() {
START_VOICE; //23
fnFadeDown(0);
loadFile(cd_23_pal, _tempPal);
loadFile(cd_24_log, workScreen2);
_skyDisk->loadFile(cd_23_pal, _tempPal);
_skyDisk->loadFile(cd_24_log, workScreen2);
LOAD_NEW_VOICE(cdv_24);
WAIT_VOICE; //23
@ -453,10 +453,10 @@ void SkyState::doCDIntro() {
START_VOICE; //26
free (cd2_seq_data_1);
cd2_seq_data_1 = loadFile(cd_27, NULL);
cd2_seq_data_1 = _skyDisk->loadFile(cd_27, NULL);
LOAD_NEW_VOICE(cdv_27);
loadFile(cd_27_pal, _tempPal);
loadFile(cd_27_log, workScreen2);
_skyDisk->loadFile(cd_27_pal, _tempPal);
_skyDisk->loadFile(cd_27_log, workScreen2);
WAIT_VOICE; //26
fnFadeDown(0);
COPY_SCREEN;
@ -488,10 +488,10 @@ void SkyState::doCDIntro() {
START_VOICE; //35
free (cd2_seq_data_2);
cd2_seq_data_2 = loadFile(cd_35, NULL);
cd2_seq_data_2 = _skyDisk->loadFile(cd_35, NULL);
LOAD_NEW_VOICE(cdv_36);
loadFile(cd_35_pal, _tempPal);
loadFile(cd_35_log, workScreen2);
_skyDisk->loadFile(cd_35_pal, _tempPal);
_skyDisk->loadFile(cd_35_log, workScreen2);
WAIT_VOICE; //35
START_VOICE; //36
fnFadeDown(0);
@ -505,7 +505,7 @@ void SkyState::doCDIntro() {
START_VOICE; //37
free (cd2_seq_data_1);
cd2_seq_data_1 = loadFile(cd_37, NULL);
cd2_seq_data_1 = _skyDisk->loadFile(cd_37, NULL);
LOAD_NEW_VOICE(cdv_38);
WAIT_SEQUENCE; //35
@ -518,8 +518,8 @@ void SkyState::doCDIntro() {
START_VOICE; //39
LOAD_NEW_VOICE(cdv_40);
loadFile(cd_40_pal, _tempPal);
loadFile(cd_40_log, workScreen2);
_skyDisk->loadFile(cd_40_pal, _tempPal);
_skyDisk->loadFile(cd_40_log, workScreen2);
WAIT_VOICE; //39
fnFadeDown(0);
COPY_SCREEN;
@ -535,8 +535,8 @@ void SkyState::doCDIntro() {
START_VOICE; //42
LOAD_NEW_VOICE(cdv_43);
loadFile(cd_43_pal, _tempPal);
loadFile(cd_43_log, workScreen2);
_skyDisk->loadFile(cd_43_pal, _tempPal);
_skyDisk->loadFile(cd_43_log, workScreen2);
WAIT_VOICE; //42
fnFadeDown(0);
@ -546,12 +546,12 @@ void SkyState::doCDIntro() {
START_VOICE; //43
free (cd2_seq_data_2);
cd2_seq_data_2 = loadFile(cd_43, NULL);
cd2_seq_data_2 = _skyDisk->loadFile(cd_43, NULL);
WAIT_VOICE; //43
startTimerSequence(cd2_seq_data_2);
LOAD_NEW_VOICE(cdv_45);
loadFile(cd_45_pal, _tempPal);
loadFile(cd_45_log, workScreen2);
_skyDisk->loadFile(cd_45_pal, _tempPal);
_skyDisk->loadFile(cd_45_log, workScreen2);
WAIT_SEQUENCE; //43
START_VOICE; //45
fnFadeDown(0);
@ -559,15 +559,15 @@ void SkyState::doCDIntro() {
showScreen();
paletteFadeUp(_tempPal);
free (cd2_seq_data_1);
cd2_seq_data_1 = loadFile(cd_45, NULL);
cd2_seq_data_1 = _skyDisk->loadFile(cd_45, NULL);
LOAD_NEW_VOICE(cdv_46);
WAIT_VOICE; //45
startTimerSequence(cd2_seq_data_1);
START_VOICE; //46
LOAD_NEW_VOICE(cdv_47);
loadFile(cd_47_pal, _tempPal);
loadFile(cd_47_log, workScreen2);
_skyDisk->loadFile(cd_47_pal, _tempPal);
_skyDisk->loadFile(cd_47_log, workScreen2);
WAIT_SEQUENCE; //45
WAIT_VOICE; //46
@ -578,8 +578,8 @@ void SkyState::doCDIntro() {
paletteFadeUp(_tempPal);
START_VOICE; //47
LOAD_NEW_VOICE(cdv_48);
loadFile(cd_48_pal, _tempPal);
loadFile(cd_48_log, workScreen2);
_skyDisk->loadFile(cd_48_pal, _tempPal);
_skyDisk->loadFile(cd_48_log, workScreen2);
WAIT_VOICE; //47
START_VOICE; //48
fnFadeDown(0);
@ -588,7 +588,7 @@ void SkyState::doCDIntro() {
paletteFadeUp(_tempPal);
free (cd2_seq_data_2);
cd2_seq_data_2 = loadFile(cd_48, NULL);
cd2_seq_data_2 = _skyDisk->loadFile(cd_48, NULL);
LOAD_NEW_VOICE(cdv_49);
WAIT_VOICE; //48
startTimerSequence(cd2_seq_data_2);
@ -597,7 +597,7 @@ void SkyState::doCDIntro() {
WAIT_VOICE; //49
START_VOICE; //50
free (cd2_seq_data_1);
cd2_seq_data_1 = loadFile(cd_49, NULL);
cd2_seq_data_1 = _skyDisk->loadFile(cd_49, NULL);
LOAD_NEW_VOICE(cdv_51);
WAIT_SEQUENCE; //48
WAIT_VOICE; //50
@ -611,7 +611,7 @@ void SkyState::doCDIntro() {
START_VOICE; //53
LOAD_NEW_VOICE(cdv_54);
free (cd2_seq_data_2);
cd2_seq_data_2 = loadFile(cd_50, NULL);
cd2_seq_data_2 = _skyDisk->loadFile(cd_50, NULL);
WAIT_VOICE; //53
WAIT_SEQUENCE; //49
@ -622,8 +622,8 @@ void SkyState::doCDIntro() {
WAIT_VOICE; //54
START_VOICE; //55
loadFile(cd_55_pal, _tempPal);
loadFile(cd_55_log, workScreen2);
_skyDisk->loadFile(cd_55_pal, _tempPal);
_skyDisk->loadFile(cd_55_log, workScreen2);
LOAD_NEW_VOICE(cdv_56);
WAIT_VOICE; //55
START_VOICE; //56
@ -638,8 +638,8 @@ void SkyState::doCDIntro() {
START_VOICE; //57
LOAD_NEW_VOICE(cdv_58);
loadFile(cd_58_pal, _tempPal);
loadFile(cd_58_log, workScreen2);
_skyDisk->loadFile(cd_58_pal, _tempPal);
_skyDisk->loadFile(cd_58_log, workScreen2);
WAIT_VOICE; //57
fnFadeDown(0);
@ -651,7 +651,7 @@ void SkyState::doCDIntro() {
WAIT_VOICE; //48
START_VOICE; //59
free (cd2_seq_data_1);
cd2_seq_data_1 = loadFile(cd_58, NULL);
cd2_seq_data_1 = _skyDisk->loadFile(cd_58, NULL);
WAIT_VOICE; //59
LOAD_NEW_VOICE(cdv_60);
START_VOICE; //60
@ -674,8 +674,8 @@ void SkyState::doCDIntro() {
START_VOICE; //65
fnFadeDown(0);
LOAD_NEW_VOICE(cdv_66);
loadFile(cd_66_pal, _tempPal);
loadFile(cd_66_log, _workScreen);
_skyDisk->loadFile(cd_66_pal, _tempPal);
_skyDisk->loadFile(cd_66_log, _workScreen);
WAIT_VOICE; //65
showScreen();
paletteFadeUp(_tempPal);
@ -683,8 +683,8 @@ void SkyState::doCDIntro() {
LOAD_NEW_VOICE(cdv_67);
WAIT_VOICE; //66
START_VOICE; //67
loadFile(cd_67_pal, _tempPal);
loadFile(cd_67_log, workScreen2);
_skyDisk->loadFile(cd_67_pal, _tempPal);
_skyDisk->loadFile(cd_67_log, workScreen2);
fnFadeDown(0);
COPY_SCREEN;
showScreen();
@ -693,10 +693,10 @@ void SkyState::doCDIntro() {
WAIT_VOICE; //67
START_VOICE; //68
free (cd2_seq_data_2);
cd2_seq_data_2 = loadFile(cd_69, NULL);
cd2_seq_data_2 = _skyDisk->loadFile(cd_69, NULL);
LOAD_NEW_VOICE(cdv_69);
loadFile(cd_69_pal, _tempPal);
loadFile(cd_69_log, workScreen2);
_skyDisk->loadFile(cd_69_pal, _tempPal);
_skyDisk->loadFile(cd_69_log, workScreen2);
WAIT_VOICE; //68
START_VOICE; //69
fnFadeDown(0);
@ -711,16 +711,16 @@ void SkyState::doCDIntro() {
WAIT_VOICE; //70
fnFadeDown(0);
START_VOICE; //71
loadFile(cd_72_pal, _tempPal);
loadFile(cd_72_log, _workScreen);
_skyDisk->loadFile(cd_72_pal, _tempPal);
_skyDisk->loadFile(cd_72_log, _workScreen);
WAIT_VOICE; //71
showScreen();
paletteFadeUp(_tempPal);
LOAD_NEW_VOICE(cdv_72);
START_VOICE; //72
loadFile(cd_73_pal, _tempPal);
loadFile(cd_73_log, _workScreen);
_skyDisk->loadFile(cd_73_pal, _tempPal);
_skyDisk->loadFile(cd_73_log, _workScreen);
LOAD_NEW_VOICE(cdv_73);
WAIT_VOICE; //72
fnFadeDown(0);
@ -733,9 +733,9 @@ void SkyState::doCDIntro() {
LOAD_NEW_VOICE(cdv_75);
WAIT_VOICE; //74
START_VOICE; //75
loadFile(cd_76_pal, _tempPal);
_skyDisk->loadFile(cd_76_pal, _tempPal);
free (workScreen2);
workScreen2 = loadFile(cd_76_log, NULL);
workScreen2 = _skyDisk->loadFile(cd_76_log, NULL);
fnFadeDown(0);
COPY_SCREEN;
showScreen();
@ -749,10 +749,10 @@ void SkyState::doCDIntro() {
START_VOICE; //77
free (cd2_seq_data_1);
cd2_seq_data_1 = loadFile(cd_100, NULL);
loadFile(cd_78_pal, _tempPal);
cd2_seq_data_1 = _skyDisk->loadFile(cd_100, NULL);
_skyDisk->loadFile(cd_78_pal, _tempPal);
free (workScreen2);
workScreen2 = loadFile(cd_78_log, NULL);
workScreen2 = _skyDisk->loadFile(cd_78_log, NULL);
LOAD_NEW_VOICE(cdv_78);
WAIT_VOICE; //77
fnFadeDown(0);
@ -775,9 +775,9 @@ void SkyState::doCDIntro() {
START_VOICE; //82
LOAD_NEW_VOICE(cdv_83);
WAIT_VOICE; //82
loadFile(cd_101_log, workScreen2);
_skyDisk->loadFile(cd_101_log, workScreen2);
free (cd2_seq_data_2);
cd2_seq_data_2 = loadFile(cd_101, NULL);
cd2_seq_data_2 = _skyDisk->loadFile(cd_101, NULL);
WAIT_SEQUENCE; //100
COPY_SCREEN;
showScreen();
@ -793,20 +793,20 @@ void SkyState::doCDIntro() {
WAIT_VOICE; //85
free (workScreen2);
workScreen2 = loadFile(cd_102_log, NULL);
workScreen2 = _skyDisk->loadFile(cd_102_log, NULL);
free (cd2_seq_data_1);
cd2_seq_data_1 = loadFile(cd_102, NULL);
cd2_seq_data_1 = _skyDisk->loadFile(cd_102, NULL);
WAIT_SEQUENCE; //101
COPY_SCREEN;
showScreen();
startTimerSequence(cd2_seq_data_1);
START_VOICE; //86
LOAD_NEW_VOICE(cdv_87);
loadFile(cd_103_pal, _tempPal);
_skyDisk->loadFile(cd_103_pal, _tempPal);
free (workScreen2);
workScreen2 = loadFile(cd_103_log, NULL);
workScreen2 = _skyDisk->loadFile(cd_103_log, NULL);
free (cd2_seq_data_2);
cd2_seq_data_2 = loadFile(cd_103, NULL);
cd2_seq_data_2 = _skyDisk->loadFile(cd_103, NULL);
WAIT_SEQUENCE; //102
fnFadeDown(0);
COPY_SCREEN;
@ -815,11 +815,11 @@ void SkyState::doCDIntro() {
startTimerSequence(cd2_seq_data_2);
WAIT_VOICE; //86
START_VOICE; //87
loadFile(cd_104_pal, _tempPal);
_skyDisk->loadFile(cd_104_pal, _tempPal);
free (workScreen2);
workScreen2 = loadFile(cd_104_log, NULL);
workScreen2 = _skyDisk->loadFile(cd_104_log, NULL);
free (cd2_seq_data_1);
cd2_seq_data_1 = loadFile(cd_104, NULL);
cd2_seq_data_1 = _skyDisk->loadFile(cd_104, NULL);
WAIT_SEQUENCE; //103
//fn_start_music(2);
@ -829,7 +829,7 @@ void SkyState::doCDIntro() {
paletteFadeUp(_tempPal);
startTimerSequence(cd2_seq_data_1);
free (cd2_seq_data_2);
cd2_seq_data_2 = loadFile(cd_105, NULL);
cd2_seq_data_2 = _skyDisk->loadFile(cd_105, NULL);
WAIT_SEQUENCE; //104
startTimerSequence(cd2_seq_data_2);
WAIT_SEQUENCE; //105

View File

@ -218,11 +218,11 @@ uint32 *command_pointer = (uint32 *)zero_commands;
void SkyState::initVirgin() {
_tempPal = loadFile(60111, NULL);
_tempPal = _skyDisk->loadFile(60111, NULL);
if (_tempPal != NULL)
setPalette(_tempPal);
_workScreen = loadFile(60110, NULL);
_workScreen = _skyDisk->loadFile(60110, NULL);
if (_workScreen != NULL)
showScreen();
@ -234,14 +234,14 @@ void SkyState::initVirgin() {
void SkyState::intro(void) {
_workScreen = loadFile(60112, NULL); //while virgin screen is up, load rev screen
_tempPal = loadFile(60113, NULL);
_workScreen = _skyDisk->loadFile(60112, NULL); //while virgin screen is up, load rev screen
_tempPal = _skyDisk->loadFile(60113, NULL);
//loadSectionMusic(0);
delay(3000); //keep virgin screen up for 3 seconds
//if (!_isCDVersion)
//if (!isCDVersion(_gameVersion))
// fn_start_music();
delay(3000); //and another 3 seconds.
@ -252,8 +252,8 @@ void SkyState::intro(void) {
free (_workScreen);
//while rev is up, load gibbons screen
_workScreen = loadFile(60114, NULL);
_tempPal = loadFile(60115, NULL);
_workScreen = _skyDisk->loadFile(60114, NULL);
_tempPal = _skyDisk->loadFile(60115, NULL);
intro_text_space = (uint8 *)malloc(10000);
intro_text_save = (uint8 *)malloc(10000);
@ -269,7 +269,7 @@ void SkyState::intro(void) {
free (_tempPal);
free (_workScreen);
if (_isCDVersion)
if (isCDVersion(_gameVersion))
doCDIntro();

View File

@ -83,7 +83,7 @@ void SkyState::go() {
_dump_file = stdout;
initialise();
if (!_isDemo || _isCDVersion)
if (!isDemo(_gameVersion) || isCDVersion(_gameVersion))
intro();
while (1) {
@ -99,8 +99,9 @@ void SkyState::initialise(void) {
_sound = new SkySound(_mixer);
initialiseDisk();
setupVersionSpecifics(_gameVersion); //_gameVersion is initialised in initialiseDisk();
_skyDisk = new SkyDisk(_gameDataPath);
_gameVersion = _skyDisk->determineGameVersion();
initialiseScreen();
initVirgin();
//initMouse();
@ -108,7 +109,7 @@ void SkyState::initialise(void) {
//initScript();
initialiseGrids();
//initialiseRouter();
initialiseText();
_skyText = getSkyText();
}
void SkyState::initItemList() {
@ -123,7 +124,7 @@ void SkyState::initItemList() {
_itemList[119] = (void*)data_0; // Compacts - Section 0
_itemList[120] = (void*)data_1; // Compacts - Section 1
if (_isDemo) {
if (isDemo(_gameVersion)) {
_itemList[121] = _itemList[122] = _itemList[123] = _itemList[124] = _itemList[125] = (void*)data_0;
} else {
_itemList[121] = (void*)data_2; // Compacts - Section 2
@ -188,3 +189,59 @@ void SkyState::delay(uint amount) { //copied and mutilated from Simon.cpp
} while (cur < start + amount);
}
SkyText *SkyState::getSkyText() {
switch (_gameVersion) {
case 267:
//floppy demo
return new SkyText_v00267(_skyDisk, _gameVersion);
case 288:
//floppy - old version
return new SkyText_v00288(_skyDisk, _gameVersion);
//case 331:
//floppy - new version
//return new SkyText_v00331(_skyDisk, _gameVersion);
case 365:
//cd demo, uses a slightly modified version of v00368
case 368:
//cd version
return new SkyText_v00368(_skyDisk, _gameVersion);
default:
error("Unknown game version!");
}
}
bool SkyState::isDemo(uint32 version) {
switch (version) {
case 267:
return true;
case 288:
return false;
case 331:
return false;
case 365:
return true;
case 368:
return false;
default:
error("Unknown game version!");
}
}
bool SkyState::isCDVersion(uint32 version) {
switch (version) {
case 267:
return false;
case 288:
return false;
case 331:
return false;
case 365:
return true;
case 368:
return true;
default:
error("Unknown game version!");
}
}

View File

@ -28,14 +28,14 @@
#include "common/timer.h"
#include "sound/mixer.h"
#include "sky/sound.h"
#include "sky/text.h"
#include "sky/disk.h"
class SkyState : public Engine {
void errorString(const char *buf_input, char *buf_output);
protected:
byte _game;
uint32 _gameVersion;
bool _isCDVersion;
bool _isDemo;
byte _key_pressed;
uint32 _tseqFrames;
@ -43,29 +43,7 @@ protected:
uint32 _tseqCounter;
void *_itemList[300];
uint8 _textBuffer[1024];
uint32 _dtLineWidth; //width of line in pixels
uint32 _dtLines; //no of lines to do
uint32 _dtLineSize; //size of one line in bytes
uint8 *_dtData; //address of textdata
uint32 _dtLetters; //no of chars in message
uint8 *_dtText; //pointer to text
uint32 _dtCharSpacing; //character seperation adjustment
uint32 _dtWidth; //width of chars in last line (for editing (?))
uint32 _dtCentre; //set for centre text
uint8 *_mouseTextData; //space for the mouse text
struct charSet {
uint8 *addr;
uint32 charHeight;
uint32 thirdVal;
} _mainCharacterSet, _linkCharacterSet, _controlCharacterSet;
uint32 _curCharSet;
uint32 _characterSet;
uint32 _charHeight;
uint8 *_preAfterTableArea;
uint16 _debugMode;
uint16 _debugLevel;
uint16 _language;
@ -78,8 +56,6 @@ protected:
int _numScreenUpdates;
uint32 _lastLoadedFileSize;
Timer *_timer;
//int _timer_id;
@ -90,6 +66,7 @@ protected:
int _sdl_mouse_x, _sdl_mouse_y;
SkySound *_sound;
SkyDisk *_skyDisk;
byte *_workScreen;
byte *_backScreen;
@ -105,36 +82,26 @@ public:
SkyState(GameDetector *detector, OSystem *syst);
virtual ~SkyState();
static bool isDemo(uint32 version);
static bool isCDVersion(uint32 version);
protected:
void delay(uint amount);
void pollMouseXY();
void go();
void convertPalette(uint8 *inpal, uint8* outpal);
void determineGameVersion(uint32 dnrEntries);
void setupVersionSpecifics(uint32 version);
SkyText *getSkyText();
void initialise();
void initTimer();
void initialiseDisk();
void initialiseScreen();
void initialiseGrids();
void initItemList();
void initialiseText();
void fnSetFont(uint32 fontNr);
void getText(uint32 textNr);
char (SkyState::*getTextChar)(uint8 *, uint8 *, uint8 *&);
char getTextChar_v00267(uint8 *inputValue, uint8 *shiftBits, uint8 *&inputStream);
char getTextChar_v00288(uint8 *inputValue, uint8 *shiftBits, uint8 *&inputStream);
char getTextChar_v00368(uint8 *inputValue, uint8 *shiftBits, uint8 *&inputStream);
bool getTBit(uint8 *inputValue, uint8 *shiftBits, byte *&inputStream);
void setPalette(uint8 *pal);
void fnFadeDown(uint8 action);
void palette_fadedown_helper(uint32 *pal, uint num);
void paletteFadeUp(uint8 *pal);
void palette_fadeup_helper(uint32 *realPal, uint32 *desiredPal, int num);
uint8 *loadFile(uint16 fileNr, uint8 *dest);
uint8 *getFileInfo(uint16 fileNr);
void dumpFile(uint16 fileNr);
void initVirgin();
void intro();
void doCDIntro();
@ -148,6 +115,7 @@ protected:
void shutdown();
RandomSource _rnd;
SkyText *_skyText;
};
#endif