diff options
| -rw-r--r-- | engines/cge/cge.cpp | 66 | ||||
| -rw-r--r-- | engines/cge/cge.h | 28 | ||||
| -rw-r--r-- | engines/cge/cge_main.cpp | 148 | ||||
| -rw-r--r-- | engines/cge/cge_main.h | 17 | ||||
| -rw-r--r-- | engines/cge/config.cpp | 10 | ||||
| -rw-r--r-- | engines/cge/ems.cpp | 24 | ||||
| -rw-r--r-- | engines/cge/events.cpp | 2 | ||||
| -rw-r--r-- | engines/cge/general.cpp | 8 | ||||
| -rw-r--r-- | engines/cge/general.h | 26 | ||||
| -rw-r--r-- | engines/cge/snail.cpp | 27 | ||||
| -rw-r--r-- | engines/cge/snail.h | 3 | ||||
| -rw-r--r-- | engines/cge/sound.cpp | 129 | ||||
| -rw-r--r-- | engines/cge/sound.h | 56 | ||||
| -rw-r--r-- | engines/cge/startup.cpp | 2 | ||||
| -rw-r--r-- | engines/cge/startup.h | 2 | ||||
| -rw-r--r-- | engines/cge/vol.cpp | 14 | ||||
| -rw-r--r-- | engines/cge/vol.h | 20 | ||||
| -rw-r--r-- | engines/cge/wav.h | 125 | 
18 files changed, 375 insertions, 332 deletions
| diff --git a/engines/cge/cge.cpp b/engines/cge/cge.cpp index 0487441517..87c3964563 100644 --- a/engines/cge/cge.cpp +++ b/engines/cge/cge.cpp @@ -46,7 +46,12 @@ CGEEngine::CGEEngine(OSystem *syst, const ADGameDescription *gameDescription)  	// Debug/console setup  	DebugMan.addDebugChannel(kCGEDebug, "general", "CGE general debug channel"); -	_isDemo = _gameDescription->flags & ADGF_DEMO; +	_isDemo      = _gameDescription->flags & ADGF_DEMO; +	_startupMode = 1; +	_demoText    = DEMO_TEXT; +	_oldLev      = 0; +	_jbw         = false; +	_pocPtr      = 0;  } @@ -68,7 +73,7 @@ void CGEEngine::setup() {  	_vga = new Vga(M13H);  	_heart = new Heart;  	_hero = new WALK(this, NULL); -	_sys = new SYSTEM(this); +	_sys = new System(this);  	_pocLight = new Sprite(this, LI);  	for (int i = 0; i < POCKET_NX; i++)  		_pocket[i] = new Sprite(this, NULL); @@ -103,6 +108,63 @@ void CGEEngine::setup() {  	_keyboard = new Keyboard();  	_eventManager = new EventManager();  	_offUseCount = atoi(_text->getText(OFF_USE_COUNT)); +	_music = true; + +	for (int i = 0; i < POCKET_NX; i++) +		_pocref[i] = -1; +	_volume[0] = 0; +	_volume[1] = 0; + +	_savTab[0].Ptr = &_now; +	_savTab[0].Len = sizeof(_now); +	_savTab[0].Flg = 1; +	_savTab[1].Ptr = &_oldLev; +	_savTab[1].Len = sizeof(_oldLev); +	_savTab[1].Flg = 1; +	_savTab[2].Ptr = &_demoText; +	_savTab[2].Len = sizeof(_demoText); +	_savTab[2].Flg = 1; +	_savTab[3].Ptr = &_game; +	_savTab[3].Len = sizeof(_game); +	_savTab[3].Flg = 1; +	_savTab[4].Ptr = &_game; +	_savTab[4].Len = sizeof(_game); +	_savTab[4].Flg = 1; +	_savTab[5].Ptr = &_game; +	_savTab[5].Len = sizeof(_game); +	_savTab[5].Flg = 1; +	_savTab[6].Ptr = &_game; +	_savTab[6].Len = sizeof(_game); +	_savTab[6].Flg = 1; +	_savTab[7].Ptr = &_game; +	_savTab[7].Len = sizeof(_game); +	_savTab[7].Flg = 1; +	_savTab[8].Ptr = &_vga->_mono; +	_savTab[8].Len = sizeof(_vga->_mono); +	_savTab[8].Flg = 0; +	_savTab[9].Ptr = &_music; +	_savTab[9].Len = sizeof(_music); +	_savTab[9].Flg = 1; +	_savTab[10].Ptr = _volume; +	_savTab[10].Len = sizeof(_volume); +	_savTab[10].Flg = 1; +	_savTab[11].Ptr = _flag; +	_savTab[11].Len = sizeof(_flag); +	_savTab[11].Flg = 1; +	_savTab[12].Ptr = _heroXY; +//	_savTab[12].Len = sizeof(_heroXY); FIXME: illegal sizeof +	_savTab[12].Len = 0; +	_savTab[12].Flg = 1; +	_savTab[13].Ptr = _barriers; +//	_savTab[13].Len = sizeof(_barriers); FIXME: illegal sizeof +	_savTab[13].Len = 0; +	_savTab[13].Flg = 1; +	_savTab[14].Ptr = _pocref; +	_savTab[14].Len = sizeof(_pocref); +	_savTab[14].Flg = 1; +	_savTab[15].Ptr = NULL; +	_savTab[15].Len = 0; +	_savTab[15].Flg = 0;  }  CGEEngine::~CGEEngine() { diff --git a/engines/cge/cge.h b/engines/cge/cge.h index ba6326726a..04f395559f 100644 --- a/engines/cge/cge.h +++ b/engines/cge/cge.h @@ -36,12 +36,21 @@  namespace CGE {  class Console; +class Sprite;  // our engine debug channels  enum {      kCGEDebug = 1 << 0  }; +#define POCKET_NX   8 + +struct SavTab { +	void *Ptr; +	int Len; +	uint8 Flg; +}; +  class CGEEngine : public Engine {  private:  	uint32 _lastFrame; @@ -50,8 +59,17 @@ public:  	CGEEngine(OSystem *syst, const ADGameDescription *gameDescription);  	~CGEEngine(); -	const ADGameDescription *_gameDescription; -	bool _isDemo; +	const   ADGameDescription *_gameDescription; +	bool   _isDemo; +	int    _startupMode; +	int    _demoText; +	int    _oldLev; +	bool   _jbw; +	int    _pocPtr; +	SavTab _savTab[16]; +	bool   _music; +	int    _pocref[POCKET_NX]; +	uint8  _volume[2];  	virtual Common::Error run();  	GUI::Debugger *getDebugger() { @@ -81,6 +99,7 @@ public:  	void NONE();  	void SB();  	void caveDown(); +	void caveUp();  	void xCave();  	void qGame();  	void SBM(); @@ -93,6 +112,11 @@ public:  	void setIRQ();  	void setDMA();  	void mainLoop(); +	void SaveGame(XFile &file); +	void switchMusic(); +	void selectPocket(int n); +	void SNKeep(Sprite *spr, int stp); +	void SNGive(Sprite *spr, int stp);  private:  	CGEConsole *_console; diff --git a/engines/cge/cge_main.cpp b/engines/cge/cge_main.cpp index 2caa9e0a98..6b02f82910 100644 --- a/engines/cge/cge_main.cpp +++ b/engines/cge/cge_main.cpp @@ -58,7 +58,7 @@ uint16  _stklen = (STACK_SIZ * 2);  Vga *_vga;  Heart *_heart;  WALK *_hero; -SYSTEM *_sys; +System *_sys;  Sprite *_pocLight;  EventManager *_eventManager;  Keyboard *_keyboard; @@ -91,21 +91,14 @@ Snail *_snail_;  //		    coditionals EVA for 2-month evaluation version  static char _usrFnam[15] = "\0ɱ%^þúȼ´ ÇÉ"; -static int _oldLev      = 0; -static int _demoText    = DEMO_TEXT;  //-------------------------------------------------------------------------- -bool _jbw = false; - -//------------------------------------------------------------------------- -int     _pocPtr      =  0; - -static  EMS      *_mini        = _miniEmm.alloc((uint16)MINI_EMM_SIZE); +static  Ems      *_mini        = _miniEmm.alloc((uint16)MINI_EMM_SIZE);  static  BMP_PTR  *_miniShpList = NULL;  static  BMP_PTR   _miniShp[]   = { NULL, NULL };  static  bool      _finis       = false; -static  int       _startup    = 1; +//static  int       _startup    = 1;  int	_offUseCount;  uint16 *_intStackPtr = false; @@ -115,11 +108,11 @@ Bar _barriers[1 + CAVE_MAX] = { { 0xFF, 0xFF } };  extern int findPocket(Sprite *);  extern Dac _stdPal[58]; -void   feedSnail(Sprite *spr, SNLIST snq);         // defined in SNAIL -uint8  Cluster::_map[MAP_ZCNT][MAP_XCNT]; +void  feedSnail(Sprite *spr, SNLIST snq);         // defined in SNAIL +uint8 Cluster::_map[MAP_ZCNT][MAP_XCNT]; -uint8  &Cluster::cell() { +uint8 &Cluster::cell() {  	return _map[_b][_a];  } @@ -184,36 +177,6 @@ Cluster XZ(Couple xy) {  	return XZ(x, y);  } - -int    _pocref[POCKET_NX]; -uint8  _volume[2]; - -struct SavTab { -	void *Ptr; -	int Len; -	uint8 Flg; -}; - -SavTab _savTab[] = { -	{ &_now,           sizeof(_now),          1 }, -	{ &_oldLev,        sizeof(_oldLev),       1 }, -	{ &_demoText,      sizeof(_demoText),     1 }, -	{ &_game,          sizeof(_game),         1 }, -	{ &_game,          sizeof(_game),         1 },      // spare 1 -	{ &_game,          sizeof(_game),         1 },      // spare 2 -	{ &_game,          sizeof(_game),         1 },      // spare 3 -	{ &_game,          sizeof(_game),         1 },      // spare 4 -//	{ &VGA::Mono,     sizeof(VGA::Mono),    0 }, -	{ &_music,         sizeof(_music),        1 }, -	{ _volume,         sizeof(_volume),       1 }, -	{ _flag,           sizeof(_flag),         1 }, -	{ _heroXY,         sizeof(_heroXY),       1 }, -	{ _barriers,       sizeof(_barriers),     1 }, -	{ _pocref,         sizeof(_pocref),       1 }, -	{ NULL,           0,                    0 } -}; - -  void CGEEngine::loadGame(XFile &file, bool tiny = false) {  	SavTab *st;  	Sprite *spr; @@ -270,7 +233,7 @@ static void SaveSound(void) {  } -static void SaveGame(XFile &file) { +void CGEEngine::SaveGame(XFile &file) {  	SavTab *st;  	Sprite *spr;  	int i; @@ -366,7 +329,7 @@ void WALK::tick() {  	if (Dir != NO_DIR) {  		Sprite *spr; -		_sys->FunTouch(); +		_sys->funTouch();  		for (spr = _vga->_showQ->first(); spr; spr = spr->_next) {  			if (distance(spr) < 2) {  				if (!spr->_flags._near) { @@ -554,7 +517,6 @@ void CGEEngine::setMapBrick(int x, int z) {  static void SwitchColorMode(void);  static void switchDebug(); -static void SwitchMusic(void);  static void KillSprite(void);  static void PushSprite(void);  static void PullSprite(void); @@ -605,22 +567,22 @@ static void miniStep(int stp) {  	else {  		&*_mini;  		*_miniShp[0] = *_miniShpList[stp]; -		if (_fx.Current) -			&*(_fx.Current->EAddr()); +		if (_fx._current) +			&*(_fx._current->eAddr());  		_miniCave->_flags._hide = false;  	}  } -static void PostMiniStep(int stp) { +static void postMiniStep(int stp) {  	//static int recent = -2;  	//TODO Change the SNPOST message send to a special way to send function pointer  	//if (MiniCave && stp != recent) SNPOST_(SNEXEC, -1, recent = stp, (void *)&MiniStep);  	warning("STUB: PostMiniStep()");  } -void SYSTEM::SetPal(void) { +void System::setPal() {  	uint i;  	Dac *p = Vga::_sysPal + 256 - ArrayCount(_stdPal);  	for (i = 0; i < ArrayCount(_stdPal); i++) { @@ -631,10 +593,10 @@ void SYSTEM::SetPal(void) {  } -void SYSTEM::FunTouch(void) { +void System::funTouch() {  	uint16 n = (PAIN) ? HEROFUN1 : HEROFUN0; -	if (_talk == NULL || n > FunDel) -		FunDel = n; +	if (_talk == NULL || n > _funDel) +		_funDel = n;  } @@ -646,16 +608,16 @@ static void ShowBak(int ref) {  		Bitmap::_pal = NULL;  		spr->show(2);  		_vga->copyPage(1, 2); -		_sys->SetPal(); +		_sys->setPal();  		spr->contract();  	}  } -static void caveUp() { +void CGEEngine::caveUp() {  	int BakRef = 1000 * _now;  	if (_music) -		LoadMIDI(_now); +		loadMidi(_now);  	ShowBak(BakRef);  	loadMapping(); @@ -673,10 +635,10 @@ static void caveUp() {  		spr = n;  	}  	if (_sndDrvInfo._dDev) { -		_sound.Stop(); -		_fx.Clear(); -		_fx.Preload(0); -		_fx.Preload(BakRef); +		_sound.stop(); +		_fx.clear(); +		_fx.preload(0); +		_fx.preload(BakRef);  	}  	if (_hero) { @@ -707,7 +669,7 @@ static void caveUp() {  	_vga->show();  	_vga->sunrise(Vga::_sysPal);  	_dark = false; -	if (!_startup) +	if (!_startupMode)  		_mouse->On();  	_heart->_enable = true; @@ -771,7 +733,7 @@ void CGEEngine::switchCave(int cav) {  			_cavLight->gotoxy(CAVE_X + ((_now - 1) % CAVE_NX) * CAVE_DX + CAVE_SX,  			              CAVE_Y + ((_now - 1) / CAVE_NX) * CAVE_DY + CAVE_SY);  			killText(); -			if (!_startup) +			if (!_startupMode)  				KeyClick();  			SNPOST(SNLABEL, -1, 0, NULL);  // wait for repaint  			//TODO Change the SNPOST message send to a special way to send function pointer @@ -781,22 +743,22 @@ void CGEEngine::switchCave(int cav) {  	}  } -SYSTEM::SYSTEM(CGEEngine *vm) : Sprite(vm, NULL), _vm(vm) { -	FunDel = HEROFUN0; -	SetPal(); -	Tick(); +System::System(CGEEngine *vm) : Sprite(vm, NULL), _vm(vm) { +	_funDel = HEROFUN0; +	setPal(); +	tick();  } -void SYSTEM::touch(uint16 mask, int x, int y) { +void System::touch(uint16 mask, int x, int y) {  	static int pp = 0; -	FunTouch(); +	funTouch();  	if (mask & KEYB) {  		int pp0;  		KeyClick();  		killText(); -		if (_startup == 1) { +		if (_vm->_startupMode == 1) {  			SNPOST(SNCLEAR, -1, 0, NULL);  			return;  		} @@ -854,7 +816,7 @@ void SYSTEM::touch(uint16 mask, int x, int y) {  			_hero->step(TSEQ + 3);  			break;  		case F9: -			_sys->FunDel = 1; +			_sys->_funDel = 1;  			break;  		case 'X':  			if (_keyboard->_key[ALT]) @@ -891,13 +853,13 @@ void SYSTEM::touch(uint16 mask, int x, int y) {  			break;  		case 'W':  			if (pp == 2) -				_jbw = !_jbw; +				_vm->_jbw = !_vm->_jbw;  			break;  		}  		if (pp == pp0)  			pp = 0;  	} else { -		if (_startup) +		if (_vm->_startupMode)  			return;  		int cav = 0;  		_infoLine->update(NULL); @@ -915,12 +877,12 @@ void SYSTEM::touch(uint16 mask, int x, int y) {  				if (y >= POCKET_Y && y < POCKET_Y + POCKET_NY * POCKET_DY &&  				        x >= POCKET_X && x < POCKET_X + POCKET_NX * POCKET_DX) {  					int n = ((y - POCKET_Y) / POCKET_DY) * POCKET_NX + (x - POCKET_X) / POCKET_DX; -					selectPocket(n); +					_vm->selectPocket(n);  				}  			}  		} -		PostMiniStep(cav - 1); +		postMiniStep(cav - 1);  		if (mask & L_UP) {  			if (cav && _snail->idle() && _hero->_tracePtr < 0) @@ -945,9 +907,9 @@ void SYSTEM::touch(uint16 mask, int x, int y) {  } -void SYSTEM::Tick(void) { -	if (!_startup) -		if (--FunDel == 0) { +void System::tick() { +	if (!_vm->_startupMode) +		if (--_funDel == 0) {  			killText();  			if (_snail->idle()) {  				if (PAIN) @@ -968,7 +930,7 @@ void SYSTEM::Tick(void) {  					}  				}  			} -			FunTouch(); +			funTouch();  		}  	_time = SYSTIMERATE;  } @@ -1001,7 +963,7 @@ static void SwitchColorMode(void) { -static void SwitchMusic(void) { +void CGEEngine::switchMusic() {  	if (_keyboard->_key[ALT]) {  		if (Vmenu::_addr)  			SNPOST_(SNKILL, -1, 0, Vmenu::_addr); @@ -1020,9 +982,9 @@ static void SwitchMusic(void) {  		}  	}  	if (_music) -		LoadMIDI(_now); +		loadMidi(_now);  	else -		KillMIDI(); +		killMidi();  } @@ -1203,7 +1165,7 @@ void CGEEngine::optionTouch(int opt, uint16 mask) {  		break;  	case 2 :  		if (mask & L_UP) -			SwitchMusic(); +			switchMusic();  		else if (mask & R_UP)  			if (!Mixer::_appear) {  				Mixer::_appear = true; @@ -1220,7 +1182,7 @@ void CGEEngine::optionTouch(int opt, uint16 mask) {  #pragma argsused  void Sprite::touch(uint16 mask, int x, int y) { -	_sys->FunTouch(); +	_sys->funTouch();  	if ((mask & ATTN) == 0) {  		_infoLine->update(name());  		if (mask & (R_DN | L_DN)) @@ -1236,14 +1198,14 @@ void Sprite::touch(uint16 mask, int x, int y) {  				mask |= R_UP;  			}  		if ((mask & R_UP) && _snail->idle()) { -			Sprite *ps = (_pocLight->_seqPtr) ? _pocket[_pocPtr] : NULL; +			Sprite *ps = (_pocLight->_seqPtr) ? _pocket[_vm->_pocPtr] : NULL;  			if (ps) {  				if (_flags._kept || _hero->distance(this) < MAX_DISTANCE) {  					if (works(ps)) {  						feedSnail(ps, TAKE);  					} else  						offUse(); -					selectPocket(-1); +					_vm->selectPocket(-1);  				} else  					tooFar();  			} else { @@ -1280,7 +1242,7 @@ void Sprite::touch(uint16 mask, int x, int y) {  				int n;  				for (n = 0; n < POCKET_NX; n++) {  					if (_pocket[n] == this) { -						selectPocket(n); +						_vm->selectPocket(n);  						break;  					}  				} @@ -1614,7 +1576,7 @@ void CGEEngine::runGame() {  		_sprite->step(_music);  	SNPOST_(SNSEQ, -1, _music, _sprite);  	if (!_music) -		KillMIDI(); +		killMidi();  	if (_mini && INI_FILE::exist("MINI.SPR")) {  		uint8 *ptr = (uint8 *) &*_mini; @@ -1626,7 +1588,7 @@ void CGEEngine::runGame() {  				_miniCave->moveShapes(ptr);  				_miniShp[0] = new Bitmap(*_miniCave->shp());  				_miniShpList = _miniCave->setShapeList(_miniShp); -				PostMiniStep(-1); +				postMiniStep(-1);  			}  		}  	} @@ -1661,7 +1623,7 @@ void CGEEngine::runGame() {  	if (_mouse->Busy)  		ExpandSprite(_mouse->Busy); -	_startup = 0; +	_startupMode = 0;  	SNPOST(SNLEVEL, -1, _oldLev, &_cavLight);  	_cavLight->gotoxy(CAVE_X + ((_now - 1) % CAVE_NX) * CAVE_DX + CAVE_SX, @@ -1761,7 +1723,7 @@ bool CGEEngine::showTitle(const char *name) {  		_vga->copyPage(0, 2);  		Startup::_soundOk = 2;  		if (_music) -			LoadMIDI(0); +			loadMidi(0);  	}  	if (Startup::_mode < 2) { @@ -1854,10 +1816,10 @@ void CGEEngine::cge_main(void) {  	_horzLine->_flags._hide = true;  	//srand((uint16) Timer()); -	_sys = new SYSTEM(this); +	_sys = new System(this);  	if (_music && Startup::_soundOk) -		LoadMIDI(0); +		loadMidi(0);  	if (Startup::_mode < 2)  		movie(LGO_EXT); @@ -1865,7 +1827,7 @@ void CGEEngine::cge_main(void) {  		if ((!_isDemo) && (Startup::_mode == 1))  			movie("X02"); // intro  		runGame(); -		_startup = 2; +		_startupMode = 2;  		if (FINIS)  			movie("X03");  	} else diff --git a/engines/cge/cge_main.h b/engines/cge/cge_main.h index c5be2adc26..e9c96931c3 100644 --- a/engines/cge/cge_main.h +++ b/engines/cge/cge_main.h @@ -113,17 +113,17 @@ namespace CGE {  #define FINIS          (_flag[3]) -class SYSTEM : public Sprite { -	int lum; +class System : public Sprite { +	int _lum;  public: -	int FunDel; +	int _funDel; -	SYSTEM(CGEEngine *vm); +	System(CGEEngine *vm); -	void SetPal(); -	void FunTouch(); +	void setPal(); +	void funTouch();  	virtual void touch(uint16 mask, int x, int y); -	void Tick(); +	void tick();  private:  	CGEEngine *_vm;  }; @@ -159,7 +159,6 @@ private:  }; -  Cluster XZ(int x, int y);  Cluster XZ(Couple xy); @@ -169,7 +168,7 @@ void ContractSprite(Sprite *spr);  extern WALK *_hero;  extern Vga *_vga;  extern Heart *_heart; -extern SYSTEM *_sys; +extern System *_sys;  extern int _offUseCount;  extern Sprite *_pocLight;  extern Keyboard *_keyboard; diff --git a/engines/cge/config.cpp b/engines/cge/config.cpp index 8812207371..11f2088034 100644 --- a/engines/cge/config.cpp +++ b/engines/cge/config.cpp @@ -143,7 +143,7 @@ static Choice BlsterDMA[] = {  void CGEEngine::selectSound() {  	int i; -	_sound.Close(); +	_sound.close();  	if (Vmenu::_addr)  		SNPOST_(SNKILL, -1, 0, Vmenu::_addr);  	inf(_text->getText(STYPE_TEXT)); @@ -201,7 +201,7 @@ static void select(Choice *cho, int hlp) {  void CGEEngine::NONE() {  	_sndDrvInfo._dDev = DEV_QUIET;  	_sndDrvInfo._mDev = DEV_QUIET; -	_sound.Open(); +	_sound.open();  } @@ -249,7 +249,7 @@ void CGEEngine::AUTO() {  	_sndDrvInfo._dDev = DEV_AUTO;  	_sndDrvInfo._mDev = DEV_AUTO;  	reset(); -	_sound.Open(); +	_sound.open();  } @@ -261,7 +261,7 @@ void CGEEngine::setPortD() {  void CGEEngine::setPortM() {  	_sndDrvInfo._mBase = xdeco(MIDIPorts[Vmenu::_recent]._text); -	_sound.Open(); +	_sound.open();  } @@ -276,7 +276,7 @@ void CGEEngine::setDMA() {  	if (_sndDrvInfo._mDev != _sndDrvInfo._dDev)  		select(MIDIPorts, MPORT_TEXT);  	else -		_sound.Open(); +		_sound.open();  }  } // End of namespace CGE diff --git a/engines/cge/ems.cpp b/engines/cge/ems.cpp index 158857c002..ddb4861f03 100644 --- a/engines/cge/ems.cpp +++ b/engines/cge/ems.cpp @@ -41,10 +41,10 @@ enum EMM_FUN {  }; -void *EMM::_frame = NULL; +void *Emm::_frame = NULL; -EMM::EMM(long size): _han(-1), _top(0), _lim(0), _list(NULL) { +Emm::Emm(long size): _han(-1), _top(0), _lim(0), _list(NULL) {  	/*  	    if (Test())  	    { @@ -82,7 +82,7 @@ EMM::EMM(long size): _han(-1), _top(0), _lim(0), _list(NULL) {  } -EMM::~EMM(void) { +Emm::~Emm(void) {  	/* FIXME  	  Release();  	  if (Han >= 0) @@ -97,7 +97,7 @@ EMM::~EMM(void) {  } -bool EMM::test() { +bool Emm::test() {  	/*  	  static char e[] = "EMMXXXX0"; @@ -130,7 +130,7 @@ bool EMM::test() {  } -EMS *EMM::alloc(uint16 siz) { +Ems *Emm::alloc(uint16 siz) {  	/*  	  long size = SIZ(siz),  	       top = Top; @@ -167,14 +167,14 @@ EMS *EMM::alloc(uint16 siz) {  	    }  	  fail: return NULL;  	*/ -	warning("STUB: EMM::alloc"); +	warning("STUB: Emm::alloc");  	return NULL;  } -void EMM::release() { +void Emm::release() {  	while (_list) { -		EMS *e = _list; +		Ems *e = _list;  		_list = e->_next;  		delete e;  	} @@ -182,11 +182,11 @@ void EMM::release() {  } -EMS::EMS(void) : _ptr(0), _size(0), _next(NULL) { +Ems::Ems() : _ptr(0), _size(0), _next(NULL) {  } -void *EMS::operator & () const { +void *Ems::operator & () const {  	/*  	  uint16 pgn = (uint16) (Ptr >> 14),  	       off = (uint16) Ptr & PAGE_MASK, @@ -213,12 +213,12 @@ void *EMS::operator & () const {  	  return (void *) (EMM::Frame + (void *) off);  	*/ -	warning("STUB: EMS::operator &"); +	warning("STUB: Ems::operator &");  	return NULL;  } -uint16 EMS::size() { +uint16 Ems::size() {  	return _size;  } diff --git a/engines/cge/events.cpp b/engines/cge/events.cpp index 5bafd46884..accd6fb4ab 100644 --- a/engines/cge/events.cpp +++ b/engines/cge/events.cpp @@ -95,7 +95,7 @@ Keyboard::~Keyboard() {  }  Sprite *Keyboard::setClient(Sprite *spr) { -	Swap(_client, spr); +	swap(_client, spr);  	return spr;  } diff --git a/engines/cge/general.cpp b/engines/cge/general.cpp index 6b0327ff23..3c0dc8a802 100644 --- a/engines/cge/general.cpp +++ b/engines/cge/general.cpp @@ -326,7 +326,7 @@ void sndMidiStop() {  	// FIXME: STUB: sndMIDIStop  } -DATACK *LoadWave(XFile *file, EMM *emm) { +DataCk *loadWave(XFile *file, Emm *emm) {  	warning("STUB: LoadWave");  	return NULL;  } @@ -394,9 +394,9 @@ Engine_::~Engine_() {  	warning("STUB: Engine_::~Engine_");  } -DATACK::~DATACK () { -  if (!e && Buf) -	  free(Buf); +DataCk::~DataCk() { +  if (!_e && _buf) +	  free(_buf);  }  } // End of namespace CGE diff --git a/engines/cge/general.h b/engines/cge/general.h index 63b94d3872..95660ad4df 100644 --- a/engines/cge/general.h +++ b/engines/cge/general.h @@ -109,41 +109,41 @@ public:  }; -class EMS; +class Ems; -class EMM { -	friend class EMS; +class Emm { +	friend class Ems;  	bool test();  	long _top;  	long _lim; -	EMS *_list; +	Ems *_list;  	int _han;  	static void *_frame;  public: -	EMM(long size = 0); -	~EMM(); -	EMS *alloc(uint16 siz); +	Emm(long size = 0); +	~Emm(); +	Ems *alloc(uint16 siz);  	void release();  }; -class EMS { -	friend class EMM; -	EMM *_emm; +class Ems { +	friend class Emm; +	Emm *_emm;  	long _ptr;  	uint16 _size; -	EMS *_next; +	Ems *_next;  public: -	EMS(); +	Ems();  	void *operator & () const;  	uint16 size(void);  };  template <class T> -void Swap(T &A, T &B) { +void swap(T &A, T &B) {  	T a = A;  	A = B;  	B = a; diff --git a/engines/cge/snail.cpp b/engines/cge/snail.cpp index edafd59111..4c1b8d4c2f 100644 --- a/engines/cge/snail.cpp +++ b/engines/cge/snail.cpp @@ -60,7 +60,6 @@ extern  Sprite *_pocLight;  //	int      _pocPtr      =  0;  //-------------------------------------------------------------------------  extern  Sprite *_pocket[]; -extern  int     _pocPtr;  static void SNGame(Sprite *spr, int num) {  	switch (num) { @@ -290,7 +289,7 @@ int findPocket(Sprite *spr) {  } -void selectPocket(int n) { +void CGEEngine::selectPocket(int n) {  	if (n < 0 || (_pocLight->_seqPtr && _pocPtr == n)) {  		_pocLight->step(0);  		n = findPocket(NULL); @@ -591,10 +590,10 @@ void SNSwap(Sprite *spr, int xref) {  		bool was1 = (was == 0 || was == _now);  		bool xwas1 = (xwas == 0 || xwas == _now); -		Swap(spr->_cave, xspr->_cave); -		Swap(spr->_x, xspr->_x); -		Swap(spr->_y, xspr->_y); -		Swap(spr->_z, xspr->_z); +		swap(spr->_cave, xspr->_cave); +		swap(spr->_x, xspr->_x); +		swap(spr->_y, xspr->_y); +		swap(spr->_z, xspr->_z);  		if (spr->_flags._kept) {  			int n = findPocket(spr);  			if (n >= 0) @@ -762,14 +761,14 @@ void SNKill(Sprite *spr) {  static void SNSound(Sprite *spr, int wav, int cnt) {  	if (_sndDrvInfo._dDev) {  		if (wav == -1) -			_sound.Stop(); +			_sound.stop();  		else -			_sound.Play(_fx[wav], (spr) ? ((spr->_x + spr->_w / 2) / (SCR_WID / 16)) : 8, cnt); +			_sound.play(_fx[wav], (spr) ? ((spr->_x + spr->_w / 2) / (SCR_WID / 16)) : 8, cnt);  	}  } -void SNKeep(Sprite *spr, int stp) { +void CGEEngine::SNKeep(Sprite *spr, int stp) {  	selectPocket(-1);  	if (spr && ! spr->_flags._kept && _pocket[_pocPtr] == NULL) {  		SNSound(spr, 3, 1); @@ -785,7 +784,7 @@ void SNKeep(Sprite *spr, int stp) {  } -void SNGive(Sprite *spr, int stp) { +void CGEEngine::SNGive(Sprite *spr, int stp) {  	if (spr) {  		int p = findPocket(spr);  		if (p >= 0) { @@ -956,13 +955,13 @@ void Snail::runCom() {  					if (sprel == _hero && sprel->seqTest(-1))  						sprel->step(HTALK);  					_text->say(_text->getText(snc->_val), sprel); -					_sys->FunDel = HEROFUN0; +					_sys->_funDel = HEROFUN0;  				}  				break;  			case SNINF      :  				if (_talkEnable) {  					_vm->inf(_text->getText(snc->_val)); -					_sys->FunDel = HEROFUN0; +					_sys->_funDel = HEROFUN0;  				}  				break;  			case SNTIME     : @@ -998,10 +997,10 @@ void Snail::runCom() {  				SNUncover(sprel, (snc->_val >= 0) ? locate(snc->_val) : ((Sprite *) snc->_ptr));  				break;  			case SNKEEP     : -				SNKeep(sprel, snc->_val); +				_vm->SNKeep(sprel, snc->_val);  				break;  			case SNGIVE     : -				SNGive(sprel, snc->_val); +				_vm->SNGive(sprel, snc->_val);  				break;  			case SNGAME     :  				SNGame(sprel, snc->_val); diff --git a/engines/cge/snail.h b/engines/cge/snail.h index 2e06149526..bd874a35b4 100644 --- a/engines/cge/snail.h +++ b/engines/cge/snail.h @@ -37,7 +37,6 @@ namespace CGE {  #define POCKET_Y    176  #define POCKET_DX   18  #define POCKET_DY   22 -#define POCKET_NX   8  #define POCKET_NY   1  #define POCKET_SX   8 @@ -100,7 +99,6 @@ private:  }; -void selectPocket(int n);  void pocFul(); @@ -110,7 +108,6 @@ extern  bool _dark;  extern  int _now;  extern  int _lev;  extern  int _maxCave; -extern  int _pocPtr;  extern  Bar _barriers[];  extern  struct Hxy {  	int _x; diff --git a/engines/cge/sound.cpp b/engines/cge/sound.cpp index aca4b4d534..a163949ddd 100644 --- a/engines/cge/sound.cpp +++ b/engines/cge/sound.cpp @@ -35,85 +35,84 @@  namespace CGE { -bool  _music  = true; -FX    _fx     = 16;   // must precede SOUND!! -SOUND _sound; +Fx    _fx     = 16;   // must precede SOUND!! +Sound _sound; -SOUND::SOUND(void) { +Sound::Sound() {  	if (Startup::_soundOk) -		Open(); +		open();  } -SOUND::~SOUND(void) { -	Close(); +Sound::~Sound() { +	close();  } -void SOUND::Close(void) { -	KillMIDI(); +void Sound::close() { +	killMidi();  	sndDone();  } -void SOUND::Open(void) { +void Sound::open() {  	sndInit(); -	Play(_fx[30000], 8); +	play(_fx[30000], 8);  } -void SOUND::Play(DATACK *wav, int pan, int cnt) { +void Sound::play(DataCk *wav, int pan, int cnt) {  	if (wav) { -		Stop(); -		smpinf._saddr = (uint8 *) &*(wav->EAddr()); -		smpinf._slen = (uint16)wav->Size(); -		smpinf._span = pan; -		smpinf._sflag = cnt; -		sndDigiStart(&smpinf); +		stop(); +		_smpinf._saddr = (uint8 *) &*(wav->eAddr()); +		_smpinf._slen = (uint16)wav->size(); +		_smpinf._span = pan; +		_smpinf._sflag = cnt; +		sndDigiStart(&_smpinf);  	}  } -void SOUND::Stop(void) { -	sndDigiStop(&smpinf); +void Sound::stop() { +	sndDigiStop(&_smpinf);  } -FX::FX(int size) : Emm(0L), Current(NULL) { -	Cache = new HAN[size]; -	for (Size = 0; Size < size; Size++) { -		Cache[Size].Ref = 0; -		Cache[Size].Wav = NULL; +Fx::Fx(int size) : _emm(0L), _current(NULL) { +	_cache = new Han[size]; +	for (_size = 0; _size < size; _size++) { +		_cache[_size]._ref = 0; +		_cache[_size]._wav = NULL;  	}  } -FX::~FX(void) { -	Clear(); -	delete[] Cache; +Fx::~Fx() { +	clear(); +	delete[] _cache;  } -void FX::Clear(void) { -	HAN *p, * q; -	for (p = Cache, q = p + Size; p < q; p++) { -		if (p->Ref) { -			p->Ref = 0; -			delete p->Wav; -			p->Wav = NULL; +void Fx::clear() { +	Han *p, * q; +	for (p = _cache, q = p + _size; p < q; p++) { +		if (p->_ref) { +			p->_ref = 0; +			delete p->_wav; +			p->_wav = NULL;  		}  	} -	Emm.release(); -	Current = NULL; +	_emm.release(); +	_current = NULL;  } -int FX::Find(int ref) { -	HAN *p, * q; +int Fx::find(int ref) { +	Han *p, * q;  	int i = 0; -	for (p = Cache, q = p + Size; p < q; p++) { -		if (p->Ref == ref) +	for (p = _cache, q = p + _size; p < q; p++) { +		if (p->_ref == ref)  			break;  		else  			++i; @@ -122,60 +121,60 @@ int FX::Find(int ref) {  } -void FX::Preload(int ref0) { -	HAN *CacheLim = Cache + Size; +void Fx::preload(int ref0) { +	Han *cacheLim = _cache + _size;  	int ref;  	for (ref = ref0; ref < ref0 + 10; ref++) {  		static char fname[] = "FX00000.WAV";  		wtom(ref, fname + 2, 10, 5);  		INI_FILE file = INI_FILE(fname); -		DATACK *wav = LoadWave(&file, &Emm); +		DataCk *wav = loadWave(&file, &_emm);  		if (wav) { -			HAN *p = &Cache[Find(0)]; -			if (p >= CacheLim) +			Han *p = &_cache[find(0)]; +			if (p >= cacheLim)  				break; -			p->Wav = wav; -			p->Ref = ref; +			p->_wav = wav; +			p->_ref = ref;  		}  	}  } -DATACK *FX::Load(int idx, int ref) { +DataCk *Fx::load(int idx, int ref) {  	static char fname[] = "FX00000.WAV";  	wtom(ref, fname + 2, 10, 5);  	INI_FILE file = INI_FILE(fname); -	DATACK *wav = LoadWave(&file, &Emm); +	DataCk *wav = loadWave(&file, &_emm);  	if (wav) { -		HAN *p = &Cache[idx]; -		p->Wav = wav; -		p->Ref = ref; +		Han *p = &_cache[idx]; +		p->_wav = wav; +		p->_ref = ref;  	}  	return wav;  } -DATACK *FX::operator [](int ref) { +DataCk *Fx::operator [](int ref) {  	int i; -	if ((i = Find(ref)) < Size) -		Current = Cache[i].Wav; +	if ((i = find(ref)) < _size) +		_current = _cache[i]._wav;  	else { -		if ((i = Find(0)) >= Size) { -			Clear(); +		if ((i = find(0)) >= _size) { +			clear();  			i = 0;  		} -		Current = Load(i, ref); +		_current = load(i, ref);  	} -	return Current; +	return _current;  } -static  uint8  *midi    = NULL; +static uint8 *midi = NULL; -void KillMIDI(void) { +void killMidi() {  	sndMidiStop();  	if (midi) {  		delete[] midi; @@ -184,11 +183,11 @@ void KillMIDI(void) {  } -void LoadMIDI(int ref) { +void loadMidi(int ref) {  	static char fn[] = "00.MID";  	wtom(ref, fn, 10, 2);  	if (INI_FILE::exist(fn)) { -		KillMIDI(); +		killMidi();  		INI_FILE mid = fn;  		if (mid._error == 0) {  			uint16 siz = (uint16) mid.size(); @@ -196,7 +195,7 @@ void LoadMIDI(int ref) {  			if (midi) {  				mid.read(midi, siz);  				if (mid._error) -					KillMIDI(); +					killMidi();  				else  					sndMidiStart(midi);  			} diff --git a/engines/cge/sound.h b/engines/cge/sound.h index 55dd1615cc..fda8d4f128 100644 --- a/engines/cge/sound.h +++ b/engines/cge/sound.h @@ -37,44 +37,42 @@ namespace CGE {  #define BAD_MIDI_TEXT   98 -class SOUND { +class Sound {  public: -	SmpInfo smpinf; -	SOUND(void); -	~SOUND(void); -	void Open(void); -	void Close(void); -	void Play(DATACK *wav, int pan, int cnt = 1); -	void Stop(void); +	SmpInfo _smpinf; +	Sound(); +	~Sound(); +	void open(); +	void close(); +	void play(DataCk *wav, int pan, int cnt = 1); +	void stop();  }; -class FX { -	EMM Emm; -	struct HAN { -		int Ref; -		DATACK *Wav; -	} *Cache; -	int Size; -	DATACK *Load(int idx, int ref); -	int Find(int ref); +class Fx { +	Emm _emm; +	struct Han { +		int _ref; +		DataCk *_wav; +	} *_cache; +	int _size; +	DataCk *load(int idx, int ref); +	int find(int ref);  public: -	DATACK *Current; -	FX(int size = 16); -	~FX(void); -	void Clear(void); -	void Preload(int ref0); -	DATACK *operator[](int ref); +	DataCk *_current; +	Fx(int size = 16); +	~Fx(); +	void clear(); +	void preload(int ref0); +	DataCk *operator[](int ref);  }; +extern  Sound  _sound; +extern  Fx     _fx; -extern  bool   _music; -extern  SOUND  _sound; -extern  FX     _fx; - -void        LoadMIDI(int ref); -void        KillMIDI(); +void loadMidi(int ref); +void killMidi();  } // End of namespace CGE diff --git a/engines/cge/startup.cpp b/engines/cge/startup.cpp index 0dfbc67916..6a06cbc537 100644 --- a/engines/cge/startup.cpp +++ b/engines/cge/startup.cpp @@ -38,7 +38,7 @@ extern char _copr[];  #define id (*(Ident*)_copr) -EMM _miniEmm = MINI_EMM_SIZE; +Emm _miniEmm = MINI_EMM_SIZE;  // static Startup _startUp; diff --git a/engines/cge/startup.h b/engines/cge/startup.h index 96c7388070..cc16f2a123 100644 --- a/engines/cge/startup.h +++ b/engines/cge/startup.h @@ -70,7 +70,7 @@ public:  }; -extern EMM _miniEmm; +extern Emm _miniEmm;  const char *usrPath(const char *nam); diff --git a/engines/cge/vol.cpp b/engines/cge/vol.cpp index 2988f9ab11..04a9189682 100644 --- a/engines/cge/vol.cpp +++ b/engines/cge/vol.cpp @@ -105,4 +105,18 @@ void VFile::readBuff() {  	_ptr = 0;  } +long VFile::mark() { +	return (_bufMark + _ptr) - _begMark; +} + +long VFile::size() { +	return _endMark - _begMark; +} + +long VFile::seek(long pos) { +	_recent = NULL; +	_lim = 0; +	return (_bufMark = _begMark + pos); +} +  } // End of namespace CGE diff --git a/engines/cge/vol.h b/engines/cge/vol.h index d8ba0979cb..8ed33d0ab4 100644 --- a/engines/cge/vol.h +++ b/engines/cge/vol.h @@ -70,28 +70,20 @@ private:  	long _begMark;  	long _endMark; -	void readBuff(void); -	void writeBuff(void) { } +	void readBuff(); +	void writeBuff() { }  	void make(const char *fspec);  public:  	VFile(const char *name, IOMODE mode = REA);  	~VFile(); +  	static void init();  	static void deinit(); -  	static bool exist(const char *name);  	static const char *next(); -	long mark() { -		return (_bufMark + _ptr) - _begMark; -	} -	long size() { -		return _endMark - _begMark; -	} -	long seek(long pos) { -		_recent = NULL; -		_lim = 0; -		return (_bufMark = _begMark + pos); -	} +	long mark(); +	long size(); +	long seek(long pos);  }; diff --git a/engines/cge/wav.h b/engines/cge/wav.h index 062f83dfca..c3e67f5f95 100644 --- a/engines/cge/wav.h +++ b/engines/cge/wav.h @@ -37,114 +37,111 @@ namespace CGE {  #define IBM_FORMAT_ALAW     0x0102  #define IBM_FORMAT_ADPCM    0x0103 +typedef char FourCC[4];             // Four-character code -typedef char FOURCC[4];             // Four-character code -typedef uint32 CKSIZE;              // 32-bit unsigned size - - -class CKID { // Chunk type identifier +class ChunkId { // Chunk type identifier  	union { -		FOURCC Tx; -		uint32 Id; +		FourCC _tx; +		uint32 _id;  	};  protected:  	static XFile *ckFile;  public: -	CKID(FOURCC t) { -		memcpy(Tx, t, sizeof(Tx)); +	ChunkId(FourCC t) { +		memcpy(_tx, t, sizeof(_tx));  	} -	CKID(uint32 d) { -		Id = d; +	ChunkId(uint32 d) { +		_id = d;  	} -	CKID(XFile *xf) { -		(ckFile = xf)->read(Tx, sizeof(Tx)); +	ChunkId(XFile *xf) { +		(ckFile = xf)->read(_tx, sizeof(_tx));  	} -	bool operator !=(CKID &X) { -		return Id != X.Id; +	bool operator !=(ChunkId &X) { +		return _id != X._id;  	} -	bool operator ==(CKID &X) { -		return Id == X.Id; +	bool operator ==(ChunkId &X) { +		return _id == X._id;  	} -	const char *Name(void); +	const char *name();  }; -class CKHEA : public CKID { +class CkHea : public ChunkId {  protected: -	CKSIZE ckSize;        // Chunk size field (size of ckData) +	uint32 _ckSize;        // Chunk size field (size of ckData)  public: -	CKHEA(XFile *xf) : CKID(xf) { -		XRead(xf, &ckSize); +	CkHea(XFile *xf) : ChunkId(xf) { +		XRead(xf, &_ckSize);  	} -	CKHEA(char id[]) : CKID(id), ckSize(0) { } -	void Skip(void); -	CKSIZE Size(void) { -		return ckSize; +	CkHea(char id[]) : ChunkId(id), _ckSize(0) { } +	void skip(); +	uint32 size() { +		return _ckSize;  	}  }; -class FMTCK : public CKHEA { -	struct WAV { -		uint16 wFormatTag;         // Format category -		uint16 wChannels;          // Number of channels -		uint32 dwSamplesPerSec;    // Sampling rate -		uint32 dwAvgBytesPerSec;   // For buffer estimation -		uint16 wBlockAlign;        // Data block size -	} Wav; +class FmtCk : public CkHea { +	struct Wav { +		uint16 _wFormatTag;         // Format category +		uint16 _wChannels;          // Number of channels +		uint32 _dwSamplesPerSec;    // Sampling rate +		uint32 _dwAvgBytesPerSec;   // For buffer estimation +		uint16 _wBlockAlign;        // Data block size +	} _wav;  	union {  		struct { -			uint16 wBitsPerSample;      // Sample size -		} Pcm; +			uint16 _wBitsPerSample;      // Sample size +		} _pcm;  	};  public: -	FMTCK(CKHEA &hea); -	inline  uint16 Channels(void) { -		return Wav.wChannels; +	FmtCk(CkHea &hea); +	inline  uint16 channels() { +		return _wav._wChannels;  	} -	inline uint32 SmplRate(void) { -		return Wav.dwSamplesPerSec; +	inline uint32 smplRate() { +		return _wav._dwSamplesPerSec;  	} -	inline uint32 ByteRate(void) { -		return Wav.dwAvgBytesPerSec; +	inline uint32 byteRate() { +		return _wav._dwAvgBytesPerSec;  	} -	inline  uint16 BlckSize(void) { -		return Wav.wBlockAlign; +	inline uint16 blckSize() { +		return _wav._wBlockAlign;  	} -	inline  uint16 SmplSize(void) { -		return Pcm.wBitsPerSample; +	inline uint16 smplSize() { +		return _pcm._wBitsPerSample;  	}  }; -class DATACK : public CKHEA { -	bool e; +class DataCk : public CkHea { +	bool _e;  	union { -		uint8 *Buf; -		EMS *EBuf; +		uint8 *_buf; +		Ems *_eBuf;  	};  public: -	DATACK(CKHEA &hea); -	DATACK(CKHEA &hea, EMM *emm); -	DATACK(int first, int last); -	~DATACK(void); -	inline uint8 *Addr(void) { -		return Buf; +	DataCk(CkHea &hea); +	DataCk(CkHea &hea, Emm *emm); +	DataCk(int first, int last); +	~DataCk(); +	inline uint8 *addr() { +		return _buf;  	} -	inline EMS *EAddr(void) { -		return EBuf; +	inline Ems *eAddr() { +		return _eBuf;  	}  }; -extern  CKID    RIFF; -extern  CKID    WAVE; -extern  CKID    FMT; -extern  CKID    DATA; +extern ChunkId _riff; +extern ChunkId _wave; +extern ChunkId _fmt; +extern ChunkId _data; -DATACK     *LoadWave(XFile *file, EMM *emm = NULL); +DataCk *loadWave(XFile *file, Emm *emm = NULL);  } // End of namespace CGE | 
