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 |