diff options
Diffstat (limited to 'queen')
38 files changed, 1555 insertions, 1555 deletions
diff --git a/queen/bankman.cpp b/queen/bankman.cpp index a5a89a7bc0..08c76a4837 100644 --- a/queen/bankman.cpp +++ b/queen/bankman.cpp @@ -26,7 +26,7 @@ namespace Queen { -BankManager::BankManager(Resource *res) +BankManager::BankManager(Resource *res) : _res(res) { memset(_frames, 0, sizeof(_frames)); memset(_banks, 0, sizeof(_banks)); @@ -54,7 +54,7 @@ void BankManager::load(const char *bankname, uint32 bankslot) { uint16 entries = READ_LE_UINT16(_banks[bankslot].data); assert(entries < MAX_BANK_SIZE); - debug(9, "BankManager::load() entries = %d", entries); + debug(9, "BankManager::load() entries = %d", entries); uint32 offset = 2; const uint8 *p = _banks[bankslot].data; @@ -63,7 +63,7 @@ void BankManager::load(const char *bankname, uint32 bankslot) { uint16 w = READ_LE_UINT16(p + offset + 0); uint16 h = READ_LE_UINT16(p + offset + 2); // jump to next entry, skipping data & header - offset += w * h + 8; + offset += w * h + 8; } // mark this bank as loaded @@ -74,7 +74,7 @@ void BankManager::unpack(uint32 srcframe, uint32 dstframe, uint32 bankslot) { debug(9, "BankManager::unpack(%d, %d, %d)", srcframe, dstframe, bankslot); assert(bankslot < MAX_BANKS_NUMBER); assert(_banks[bankslot].data != NULL); - + BobFrame *pbf = &_frames[dstframe]; const uint8 *p = _banks[bankslot].data + _banks[bankslot].indexes[srcframe]; pbf->width = READ_LE_UINT16(p + 0); diff --git a/queen/bankman.h b/queen/bankman.h index e47b7c9d76..80bba18b9d 100644 --- a/queen/bankman.h +++ b/queen/bankman.h @@ -37,22 +37,22 @@ public: //! load a bank into the specified slot void load(const char *bankname, uint32 bankslot); - + //! unpack a frame from a loaded bank void unpack(uint32 srcframe, uint32 dstframe, uint32 bankslot); - + //! unpack a frame over an existing one from a loaded bank void overpack(uint32 srcframe, uint32 dstframe, uint32 bankslot); - + //! close a bank void close(uint32 bankslot); - + //! get a reference to unpacked frame BobFrame *fetchFrame(uint32 index); - + //! erase a frame void eraseFrame(uint32 index); - + //! erase all unpacked frames void eraseFrames(bool joe); diff --git a/queen/command.cpp b/queen/command.cpp index afc1be4ecc..2a78237eab 100644 --- a/queen/command.cpp +++ b/queen/command.cpp @@ -83,7 +83,7 @@ void CmdText::setVerb(Verb v) { void CmdText::addLinkWord(Verb v) { if (_isReversed) { char temp[MAX_COMMAND_LEN]; - + strcpy(temp, _command); strcpy(_command, _vm->logic()->verbName(v)); strcat(_command, " "); @@ -97,7 +97,7 @@ void CmdText::addLinkWord(Verb v) { void CmdText::addObject(const char *objName) { if (_isReversed) { char temp[MAX_COMMAND_LEN]; - + strcpy(temp, _command); strcpy(_command, objName); strcat(_command, " "); @@ -116,7 +116,7 @@ void CmdState::init() { commandLevel = 1; oldVerb = verb = action = VERB_NONE; oldNoun = noun = subject[0] = subject[1] = 0; - + selAction = VERB_NONE; selNoun = 0; } @@ -242,7 +242,7 @@ void Command::executeCurrentAction() { } } -void Command::updatePlayer() { +void Command::updatePlayer() { if (_vm->logic()->joeWalk() != JWM_MOVE) { int16 cx = _vm->input()->mousePosX(); int16 cy = _vm->input()->mousePosY(); @@ -287,7 +287,7 @@ void Command::readCommandsFrom(byte *&ptr) { _cmdList[i].readFromBE(ptr); } } - + _numCmdArea = READ_BE_UINT16(ptr); ptr += 2; _cmdArea = new CmdArea[_numCmdArea + 1]; if (_numCmdArea == 0) { @@ -423,8 +423,8 @@ int16 Command::executeCommand(uint16 comId, int16 condResult) { } // don't play music on an OPEN/CLOSE command - in case the command fails - if (_state.selAction != VERB_NONE && - _state.selAction != VERB_OPEN && + if (_state.selAction != VERB_NONE && + _state.selAction != VERB_OPEN && _state.selAction != VERB_CLOSE) { // only play song if it's a PLAY BEFORE type if (com->song > 0) { @@ -498,7 +498,7 @@ int16 Command::makeJoeWalkTo(int16 x, int16 y, int16 objNum, Verb v, bool mustWa p = _vm->walk()->moveJoe(facing, x, y, false); if (p != 0) { _vm->logic()->newRoom(0); // cancel makeJoeWalkTo, that should be equivalent to cr10 fix - } + } } } return p; @@ -548,7 +548,7 @@ void Command::grabSelectedObject(int16 objNum, uint16 objState, uint16 objName) } else if (_state.action == VERB_GIVE && _state.commandLevel == 1) { // command not fully constructed _state.commandLevel = 2; - _cmdText.addLinkWord(VERB_PREP_TO); + _cmdText.addLinkWord(VERB_PREP_TO); _cmdText.display(INK_CMD_NORMAL); _parse = false; } else { @@ -578,7 +578,7 @@ void Command::grabSelectedItem() { (_vm->input()->keyVerb() != VERB_NONE && _state.verb != VERB_NONE)) { if (_state.action == VERB_NONE) { if (_vm->input()->keyVerb() != VERB_NONE) { - // We've selected via the keyboard, no command is being + // We've selected via the keyboard, no command is being // constructed, so we shall find the item's default _state.verb = State::findDefaultVerb(id->state); if (_state.verb == VERB_NONE) { @@ -588,8 +588,8 @@ void Command::grabSelectedItem() { } _state.action = _state.verb; } else { - // Action>0 ONLY if command has been constructed - // Left Mouse Button pressed just do Look At + // Action>0 ONLY if command has been constructed + // Left Mouse Button pressed just do Look At _state.action = VERB_LOOK_AT; _cmdText.setVerb(VERB_LOOK_AT); } @@ -631,7 +631,7 @@ void Command::grabSelectedNoun() { if (_state.verb == VERB_NONE) { if (_mouseKey == Input::MOUSE_LBUTTON) { - if ((_state.commandLevel != 2 && _state.action == VERB_NONE) || + if ((_state.commandLevel != 2 && _state.action == VERB_NONE) || (_state.commandLevel == 2 && _parse)) { _state.verb = VERB_WALK_TO; _state.action = VERB_WALK_TO; @@ -682,7 +682,7 @@ void Command::grabSelectedVerb() { } bool Command::executeIfCutaway(const char *description) { - if (strlen(description) > 4 && + if (strlen(description) > 4 && scumm_stricmp(description + strlen(description) - 4, ".cut") == 0) { _vm->display()->clearTexts(CmdText::COMMAND_Y_POS, CmdText::COMMAND_Y_POS); @@ -699,7 +699,7 @@ bool Command::executeIfCutaway(const char *description) { } bool Command::executeIfDialog(const char *description) { - if (strlen(description) > 4 && + if (strlen(description) > 4 && scumm_stricmp(description + strlen(description) - 4, ".dog") == 0) { _vm->display()->clearTexts(CmdText::COMMAND_Y_POS, CmdText::COMMAND_Y_POS); @@ -724,7 +724,7 @@ bool Command::handleWrongAction() { uint16 roomData = _vm->logic()->currentRoomData(); // select without a command or WALK TO ; do a WALK - if ((_state.selAction == VERB_WALK_TO || _state.selAction == VERB_NONE) && + if ((_state.selAction == VERB_WALK_TO || _state.selAction == VERB_NONE) && (_state.selNoun > objMax || _state.selNoun == 0)) { if (_state.selAction == VERB_NONE) { _vm->display()->clearTexts(CmdText::COMMAND_Y_POS, CmdText::COMMAND_Y_POS); @@ -841,7 +841,7 @@ void Command::sayInvalidAction(Verb action, int16 subj1, int16 subj2) { } } break; - + default: break; } @@ -923,7 +923,7 @@ void Command::openOrCloseAssociatedObject(Verb action, int16 otherObj) { break; } } - } + } if (com != 0) { @@ -954,7 +954,7 @@ void Command::openOrCloseAssociatedObject(Verb action, int16 otherObj) { int16 Command::setConditions(uint16 command, bool lastCmd) { debug(9, "Command::setConditions(%d, %d)", command, lastCmd); - + int16 ret = 0; uint16 cmdState[21]; memset(cmdState, 0, sizeof(cmdState)); @@ -1047,7 +1047,7 @@ void Command::setObjects(uint16 command) { objData->name = 0; if (objData->room == _vm->logic()->currentRoom()) { if (dstObj != _state.subject[0]) { - // if the new object we have updated is on screen and is not the + // if the new object we have updated is on screen and is not the // current object, then we can update. This is because we turn // current object off ourselves by COM_LIST(com, 8) if (objData->image != -3 && objData->image != -4) { @@ -1084,7 +1084,7 @@ void Command::setObjects(uint16 command) { // hide the object if (objData->name > 0) { objData->name = -objData->name; - // may need to turn BOBs off for objects to be hidden on current + // may need to turn BOBs off for objects to be hidden on current // screen ! if the new object we have updated is on screen and // is not current object then update it _vm->graphics()->refreshObject(dstObj); diff --git a/queen/command.h b/queen/command.h index 55c973e11d..cfa709a3d8 100644 --- a/queen/command.h +++ b/queen/command.h @@ -36,25 +36,25 @@ struct CmdText { //! reset the command sentence void clear(); - + //! display the command sentence using the specified color void display(uint8 color); - + //! display a temporary command sentence using the specified parameters void displayTemp(uint8 color, Verb v, const char *name = NULL, bool outlined = false); - + //! display a temporary command sentence using the specified parameters void displayTemp(uint8 color, const char *name, bool outlined = false); - + //! set the verb for the command sentence void setVerb(Verb v); - + //! set the link word (between verb and object) for the command sentence void addLinkWord(Verb v); - + //! add an object name to the command sentence void addObject(const char *objName); - + //! returns true if the command sentence is empty bool isEmpty() const; @@ -62,15 +62,15 @@ struct CmdText { MAX_COMMAND_LEN = 256, COMMAND_Y_POS = 151 }; - + uint8 _y; //! flag indicating if the words in the sentence are reversed (hebrew version) bool _isReversed; - + //! buffer containing the current command sentence char _command[MAX_COMMAND_LEN]; - + QueenEngine *_vm; }; @@ -90,10 +90,10 @@ struct CmdState { class Command { public: - + Command(QueenEngine *vm); ~Command(); - + //! initialise command construction void clear(bool clearTexts); @@ -114,7 +114,7 @@ private: //! get a reference to the ObjectData for the specified room object ObjectData *findObjectData(uint16 objRoomNum) const; - + //! get a reference to the ItemData for the specified inventory object ItemData *findItemData(Verb invNum) const; @@ -126,40 +126,40 @@ private: //! update command state with current selected action void grabCurrentSelection(); - + //! update command state with current selected object void grabSelectedObject(int16 objNum, uint16 objState, uint16 objName); - + //! update command state with current selected inventory object void grabSelectedItem(); - + //! update command state with current selected room object void grabSelectedNoun(); - + //! update command state with current selected verb void grabSelectedVerb(); //! if the description is a cutaway file, execute it bool executeIfCutaway(const char *description); - + //! if the description is a dialog file, execute it bool executeIfDialog(const char *description); - + //! handle a wrong/invalid user action bool handleWrongAction(); - + //! make Joe speak something for a wrong/invalid action void sayInvalidAction(Verb action, int16 subj1, int16 subj2); - + //! update an object state void changeObjectState(Verb action, int16 obj, int16 song, bool cutDone); - + //! reset current action void cleanupCurrentAction(); - + //! OPEN_CLOSE_OTHER(OBJECT_DATA[S][4]) void openOrCloseAssociatedObject(Verb action, int16 obj); - + //! update gamestates - P1_SET_CONDITIONS int16 setConditions(uint16 command, bool lastCmd); @@ -168,7 +168,7 @@ private: //! hide/show objects, redisplay if in the same room as Joe - P3_SET_OBJECTS void setObjects(uint16 command); - + //! inserts/deletes items (inventory) - P4_SET_ITEMS void setItems(uint16 command); @@ -186,13 +186,13 @@ private: //! returns true if the verb is an action verb bool isVerbAction(Verb v) const { return (v >= VERB_PANEL_COMMAND_FIRST && v <= VERB_PANEL_COMMAND_LAST) || (v == VERB_WALK_TO); }; - + //! return true if the verb is an inventory item bool isVerbInv(Verb v) const { return v >= VERB_INV_FIRST && v <= VERB_INV_LAST; } - + //! returns true if the specified verb is an inventory scroll bool isVerbInvScroll(Verb v) const { return v == VERB_SCROLL_UP || v == VERB_SCROLL_DOWN; } - + //! commands list for each possible action CmdListData *_cmdList; uint16 _numCmdList; @@ -215,7 +215,7 @@ private: //! textual form of the command (displayed between room and panel areas) CmdText _cmdText; - + //! flag indicating that the current command is fully constructed bool _parse; diff --git a/queen/credits.cpp b/queen/credits.cpp index 2e486bc105..f768b63819 100644 --- a/queen/credits.cpp +++ b/queen/credits.cpp @@ -28,7 +28,7 @@ namespace Queen { -Credits::Credits(QueenEngine *vm, const char* filename) : +Credits::Credits(QueenEngine *vm, const char* filename) : _vm(vm), _running(true), _count(0), _pause(0), _justify(0), _fontSize(0), _color(0), _zone(0) { uint32 size; char *buf = (char *)_vm->resource()->loadFile(filename, 0, &size); @@ -72,7 +72,7 @@ void Credits::update() { if ('.' == line[0]) { int i; - switch (tolower(line[1])) { + switch (tolower(line[1])) { case 'l' : _justify = 0; break; @@ -99,7 +99,7 @@ void Credits::update() { _vm->display()->setText(_list[i].x, _list[i].y, _list[i].text); } _count = 0; - return; + return; case 'i' : _color = atoi(&line[3]); break; diff --git a/queen/credits.h b/queen/credits.h index 33f536bb1c..b8b912e0d3 100644 --- a/queen/credits.h +++ b/queen/credits.h @@ -38,7 +38,7 @@ public: //! update/display credits for current room void update(); - + //! handles room switching void nextRoom(); @@ -51,35 +51,35 @@ private: short x, y, color, fontSize; const char *text; }; - + //! contains the formatted lines of texts to display Line _list[19]; //! true if end of credits description hasn't been reached bool _running; - + //! number of elements in _list array int _count; - + //! pause counts for next room int _pause; - + //! current text justification mode int _justify; - + //! current font size (unused ?) int _fontSize; - + //! current text color int _color; - + //! current text position int _zone; //! contains the credits description LineReader *_credits; - QueenEngine *_vm; + QueenEngine *_vm; }; } // End of namespace Queen diff --git a/queen/cutaway.cpp b/queen/cutaway.cpp index 142aab99dc..a680078213 100644 --- a/queen/cutaway.cpp +++ b/queen/cutaway.cpp @@ -37,7 +37,7 @@ namespace Queen { void Cutaway::run( - const char *filename, + const char *filename, char *nextFilename, QueenEngine *vm) { Cutaway *cutaway = new Cutaway(filename, vm); @@ -46,12 +46,12 @@ void Cutaway::run( } Cutaway::Cutaway( - const char *filename, + const char *filename, QueenEngine *vm) : _vm(vm), _personDataCount(0), _personFaceCount(0), _lastSong(0), _songBeforeComic(0) { memset(&_bankNames, 0, sizeof(_bankNames)); _vm->input()->cutawayQuitReset(); - load(filename); + load(filename); } Cutaway::~Cutaway() { @@ -66,7 +66,7 @@ void Cutaway::load(const char *filename) { ptr = _fileData = _vm->resource()->loadFile(filename, 20); if (0 == scumm_stricmp(filename, "comic.cut")) - _songBeforeComic = _vm->sound()->lastOverride(); + _songBeforeComic = _vm->sound()->lastOverride(); strcpy(_basename, filename); _basename[strlen(_basename)-4] = '\0'; @@ -184,15 +184,15 @@ const byte *Cutaway::getCutawayObject(const byte *ptr, CutawayObject &object) object.objectNumber = (int16)READ_BE_INT16(ptr); ptr += 2; object.moveToX = (int16)READ_BE_INT16(ptr); ptr += 2; object.moveToY = (int16)READ_BE_INT16(ptr); ptr += 2; - object.bank = (int16)READ_BE_INT16(ptr); ptr += 2; + object.bank = (int16)READ_BE_INT16(ptr); ptr += 2; object.animList = (int16)READ_BE_INT16(ptr); ptr += 2; - object.execute = (int16)READ_BE_INT16(ptr); ptr += 2; + object.execute = (int16)READ_BE_INT16(ptr); ptr += 2; object.limitBobX1 = (int16)READ_BE_INT16(ptr); ptr += 2; object.limitBobY1 = (int16)READ_BE_INT16(ptr); ptr += 2; object.limitBobX2 = (int16)READ_BE_INT16(ptr); ptr += 2; object.limitBobY2 = (int16)READ_BE_INT16(ptr); ptr += 2; object.specialMove = (int16)READ_BE_INT16(ptr); ptr += 2; - object.animType = (int16)READ_BE_INT16(ptr); ptr += 2; + object.animType = (int16)READ_BE_INT16(ptr); ptr += 2; object.fromObject = (int16)READ_BE_INT16(ptr); ptr += 2; object.bobStartX = (int16)READ_BE_INT16(ptr); ptr += 2; object.bobStartY = (int16)READ_BE_INT16(ptr); ptr += 2; @@ -219,10 +219,10 @@ void Cutaway::dumpCutawayObject(int index, CutawayObject &object) const char *objectNumberStr; switch (object.objectNumber) { - case -1: + case -1: objectNumberStr = "MESSAGE"; break; - case 0: + case 0: objectNumberStr = "Joe"; break; default: @@ -278,9 +278,9 @@ void Cutaway::limitBob(CutawayObject &object) { if (object.objectNumber < 0) { warning("QueenCutaway::limitBob called with objectNumber = %i", object.objectNumber); return; - } + } - BobSlot *bob = + BobSlot *bob = _vm->graphics()->bob( _vm->logic()->findBob(object.objectNumber) ); if (!bob) { @@ -307,8 +307,8 @@ void Cutaway::restorePersonData() { void Cutaway::changeRooms(CutawayObject &object) { // Lines 1291-1385 in cutaway.c - debug(6, "Changing from room %i to room %i", - _temporaryRoom, + debug(6, "Changing from room %i to room %i", + _temporaryRoom, object.room); restorePersonData(); @@ -320,7 +320,7 @@ void Cutaway::changeRooms(CutawayObject &object) { for (int i = firstObjectInRoom; i <= lastObjectInRoom; i++) { ObjectData *objectData = _vm->logic()->objectData(i); - + if (objectData->image == -3 || objectData->image == -4) { assert(_personDataCount < MAX_PERSON_COUNT); @@ -363,9 +363,9 @@ void Cutaway::changeRooms(CutawayObject &object) { _vm->logic()->oldRoom(_initialRoom); - // FIXME - the first cutaway is played at the end of the command 0x178. This - // command setups some persons and associates bob slots to them. They should be - // hidden as their y coordinate is > 150, but they aren't ! A (temporary) + // FIXME - the first cutaway is played at the end of the command 0x178. This + // command setups some persons and associates bob slots to them. They should be + // hidden as their y coordinate is > 150, but they aren't ! A (temporary) // workaround is to display the room with the panel area enabled. Same problem // for cutaway c62c. int16 comPanel = _comPanel; @@ -403,7 +403,7 @@ void Cutaway::changeRooms(CutawayObject &object) { Cutaway::ObjectType Cutaway::getObjectType(CutawayObject &object) { // Lines 1387-1449 in cutaway.c - + ObjectType objectType = OBJECT_TYPE_ANIMATION; if (object.objectNumber > 0) { @@ -554,7 +554,7 @@ const byte *Cutaway::handleAnimation(const byte *ptr, CutawayObject &object) { int frameCount = 0; int header = 0; int i; - + CutawayAnim objAnim[56]; // Read animation frames @@ -582,7 +582,7 @@ const byte *Cutaway::handleAnimation(const byte *ptr, CutawayObject &object) { if (object.animType == 1) { // lines 1615-1636 in cutaway.c - + debug(6, "----- Complex cutaway animation (animType = %i) -----", object.animType); if ((_vm->logic()->currentRoom() == 47 || _vm->logic()->currentRoom() == 63) && @@ -623,7 +623,7 @@ const byte *Cutaway::handleAnimation(const byte *ptr, CutawayObject &object) { // lines 1657-1761 in cutaway.c debug(6, "----- Normal cutaway animation (animType = %i) -----", object.animType); - + for (i = 0; i < frameCount; i++) { //debug(6, "===== Animating frame %i =====", i); //dumpCutawayAnim(objAnim[i]); @@ -647,7 +647,7 @@ const byte *Cutaway::handleAnimation(const byte *ptr, CutawayObject &object) { if (!((objAnim[i].mx > 0 || objAnim[i].my > 0) && inRange(objAnim[i].object, 1, 3))) { _vm->bankMan()->unpack( - objAnim[i].unpackFrame, + objAnim[i].unpackFrame, objAnim[i].originalFrame, objAnim[i].bank); } @@ -692,7 +692,7 @@ const byte *Cutaway::handleAnimation(const byte *ptr, CutawayObject &object) { while (moving) { moving = false; _vm->update(); - + for (i = 0; i < frameCount; i++) { BobSlot *bob = _vm->graphics()->bob(objAnim[i].object); if (bob->moving) { @@ -716,8 +716,8 @@ static void findCdCut(const char *basename, int index, char *result) { } void Cutaway::handlePersonRecord( - int index, - CutawayObject &object, + int index, + CutawayObject &object, const char *sentence) { // Lines 1455-1516 in cutaway.c @@ -726,10 +726,10 @@ void Cutaway::handlePersonRecord( if (object.objectNumber == OBJECT_JOE) { if (object.moveToX || object.moveToY) { _vm->walk()->moveJoe(0, object.moveToX, object.moveToY, true); - } + } } else { _vm->logic()->initPerson( - object.objectNumber - _vm->logic()->currentRoomData(), + object.objectNumber - _vm->logic()->currentRoomData(), "", true, &p); if (object.bobStartX || object.bobStartY) { @@ -741,7 +741,7 @@ void Cutaway::handlePersonRecord( if (object.moveToX || object.moveToY) _vm->walk()->movePerson( - &p, + &p, object.moveToX, object.moveToY, _currentImage + 1, _vm->logic()->objectData(object.objectNumber)->image @@ -775,7 +775,7 @@ void Cutaway::handlePersonRecord( } char voiceFilePrefix[MAX_STRING_SIZE]; - findCdCut(_basename, index, voiceFilePrefix); + findCdCut(_basename, index, voiceFilePrefix); _vm->logic()->makePersonSpeak(sentence, (object.objectNumber == OBJECT_JOE) ? NULL : &p, voiceFilePrefix); } @@ -816,9 +816,9 @@ void Cutaway::run(char *nextFilename) { ptr = getCutawayObject(ptr, object); //dumpCutawayObject(i, object); - if (!object.moveToX && - !object.moveToY && - object.specialMove > 0 && + if (!object.moveToX && + !object.moveToY && + object.specialMove > 0 && object.objectNumber >= 0) { _vm->logic()->executeSpecialMove(object.specialMove); object.specialMove = 0; @@ -885,7 +885,7 @@ void Cutaway::run(char *nextFilename) { } } // for () - + _vm->display()->clearTexts(0, 198); // XXX lines 1887-1895 in cutaway.c @@ -911,7 +911,7 @@ void Cutaway::run(char *nextFilename) { _vm->logic()->entryObj(0); } else { /// No need to stay in current room, so return to previous room - // if one exists. Reset Joe's X,Y coords to those when first entered + // if one exists. Reset Joe's X,Y coords to those when first entered restorePersonData(); @@ -941,7 +941,7 @@ void Cutaway::run(char *nextFilename) { for (i = _vm->logic()->roomData(_vm->logic()->currentRoom()); i <= _vm->logic()->roomData(_vm->logic()->currentRoom() + 1); i++) { - ObjectData *object = _vm->logic()->objectData(i); + ObjectData *object = _vm->logic()->objectData(i); if (object->image == -3 || object->image == -4) { k++; if (object->name > 0) { @@ -962,12 +962,12 @@ void Cutaway::run(char *nextFilename) { _vm->sound()->stopSpeech(); _vm->sound()->stopSfx(); } - + _vm->input()->cutawayRunning(false); _vm->input()->cutawayQuitReset(); _vm->input()->quickSaveReset(); _vm->input()->quickLoadReset(); - + if (_songBeforeComic > 0) _vm->sound()->playSong(_songBeforeComic); else if (_lastSong > 0) @@ -988,14 +988,14 @@ void Cutaway::stop() { int16 joeRoom = READ_BE_UINT16(ptr); ptr += 2; int16 joeX = READ_BE_UINT16(ptr); ptr += 2; int16 joeY = READ_BE_UINT16(ptr); ptr += 2; - - debug(6, "[Cutaway::stop] Final position is room %i and coordinates (%i, %i)", + + debug(6, "[Cutaway::stop] Final position is room %i and coordinates (%i, %i)", joeRoom, joeX, joeY); if ((!_vm->input()->cutawayQuit() || (!_anotherCutaway && joeRoom == _finalRoom)) && joeRoom != _temporaryRoom && joeRoom != 0) { - + debug(6, "[Cutaway::stop] Changing rooms and moving Joe"); _vm->logic()->joePos(joeX, joeY); @@ -1007,18 +1007,18 @@ void Cutaway::stop() { if (_vm->input()->cutawayQuit()) { // Lines 1927-2032 in cutaway.c int i; - + // Stop the credits from running _vm->logic()->stopCredits(); - + _vm->graphics()->stopBobs(); for (i = 1; i <= _personFaceCount; i++) { int index = _personFace[i].index; if (index > 0) { _vm->logic()->objectData(_personFace[i].index)->image = _personFace[i].image; - - _vm->graphics()->bob(_vm->logic()->findBob(index))->xflip = + + _vm->graphics()->bob(_vm->logic()->findBob(index))->xflip = (_personFace[i].image != -4); } } @@ -1080,12 +1080,12 @@ void Cutaway::stop() { pbs->frameNum = objectFrame; if (frame < 0) pbs->xflip = true; - + } } } } // for () - + int16 specialMove = (int16)READ_BE_INT16(ptr); ptr += 2; if (specialMove > 0) _vm->logic()->executeSpecialMove(specialMove); @@ -1097,7 +1097,7 @@ void Cutaway::stop() { joeRoom != 37 && joeRoom != 105 && joeRoom != 106 && (joeX || joeY)) { BobSlot *joeBob = _vm->graphics()->bob(0); - + debug(6, "[Cutaway::stop] Moving Joe"); joeBob->x = joeX; @@ -1124,7 +1124,7 @@ void Cutaway::updateGameState() { bool update = false; if (stateIndex > 0) { - if (_vm->logic()->gameState(stateIndex) == stateValue) + if (_vm->logic()->gameState(stateIndex) == stateValue) update = true; } else { _vm->logic()->gameState(ABS(stateIndex), stateValue); @@ -1178,7 +1178,7 @@ int Cutaway::makeComplexAnimation(int16 currentImage, Cutaway::CutawayAnim *objA int i; assert(frameCount < 30); AnimFrame cutAnim[30]; - + memset(frameIndex, 0, sizeof(frameIndex)); debug(6, "[Cutaway::makeComplexAnimation] currentImage = %i", currentImage); @@ -1188,7 +1188,7 @@ int Cutaway::makeComplexAnimation(int16 currentImage, Cutaway::CutawayAnim *objA frameIndex[objAnim[i].unpackFrame] = 1; } - cutAnim[frameCount].frame = 0; + cutAnim[frameCount].frame = 0; cutAnim[frameCount].speed = 0; int nextFrameIndex = 1; @@ -1214,7 +1214,7 @@ int Cutaway::makeComplexAnimation(int16 currentImage, Cutaway::CutawayAnim *objA void Cutaway::handleText( int index, - ObjectType type, + ObjectType type, CutawayObject &object, const char *sentence) { // lines 1776-1863 in cutaway.c @@ -1232,7 +1232,7 @@ void Cutaway::handleText( flags = 1; } - BobSlot *bob = + BobSlot *bob = _vm->graphics()->bob( _vm->logic()->findBob(ABS(object.objectNumber)) ); _vm->graphics()->setBobText(bob, sentence, x, object.bobStartY, object.specialMove, flags); @@ -1275,13 +1275,13 @@ void Cutaway::handleText( _vm->display()->clearTexts(0, 198); _vm->update(); } - + int Cutaway::countSpaces(ObjectType type, const char *segment) { int tmp = 0; while (*segment++) tmp++; - + if (tmp < 50) tmp = 50; @@ -1298,7 +1298,7 @@ int Cutaway::scale(CutawayObject &object) { if (object.scale > 0) scaling = object.scale; else if (!object.objectNumber) { - // Only scale Joe + // Only scale Joe int x, y; if (object.bobStartX > 0 || object.bobStartY > 0) { diff --git a/queen/cutaway.h b/queen/cutaway.h index 2a81e59ff0..514480a3f0 100644 --- a/queen/cutaway.h +++ b/queen/cutaway.h @@ -150,13 +150,13 @@ private: bool _anotherCutaway; //! Room before cutaway - int _initialRoom; + int _initialRoom; //! Temporary room for cutaway - int _temporaryRoom; + int _temporaryRoom; - //! Room to stay in - int _finalRoom; + //! Room to stay in + int _finalRoom; //! Bank names char _bankNames[MAX_BANK_NAME_COUNT][MAX_FILENAME_SIZE]; @@ -193,10 +193,10 @@ private: Cutaway(const char *filename, QueenEngine *vm); ~Cutaway(); - //! Run this cutaway object + //! Run this cutaway object void run(char *nextFilename); - //! Load cutaway data from file + //! Load cutaway data from file void load(const char *filename); //! Used by load to read string data @@ -219,7 +219,7 @@ private: //! Perform actions for a person record void handlePersonRecord(int index, CutawayObject &object, const char *sentence); - + //! Perform text actions void handleText(int index, ObjectType type, CutawayObject &object, const char *sentence); diff --git a/queen/debug.cpp b/queen/debug.cpp index dec53d9fef..b2827e26ba 100644 --- a/queen/debug.cpp +++ b/queen/debug.cpp @@ -35,9 +35,9 @@ namespace Queen { -Debugger::Debugger(QueenEngine *vm) +Debugger::Debugger(QueenEngine *vm) : _vm(vm), _flags(0) { - + DCmd_Register("exit", &Debugger::Cmd_Exit); DCmd_Register("help", &Debugger::Cmd_Help); DCmd_Register("areas", &Debugger::Cmd_Areas); @@ -61,7 +61,7 @@ void Debugger::postEnter() { bool Debugger::Cmd_Exit(int argc, const char **argv) { _detach_now = true; - return false; + return false; } bool Debugger::Cmd_Help(int argc, const char **argv) { @@ -145,7 +145,7 @@ bool Debugger::Cmd_GameState(int argc, const char **argv) { break; case 3: slot = atoi(argv[1]); - DebugPrintf("GAMESTATE[%d] ", slot); + DebugPrintf("GAMESTATE[%d] ", slot); DebugPrintf("was %d ", _vm->logic()->gameState(slot)); _vm->logic()->gameState(slot, atoi(argv[2])); DebugPrintf("now %d\n", _vm->logic()->gameState(slot)); @@ -153,7 +153,7 @@ bool Debugger::Cmd_GameState(int argc, const char **argv) { default: DebugPrintf("Usage: %s slotnum value\n", argv[0]); break; - } + } return true; } @@ -182,7 +182,7 @@ bool Debugger::Cmd_PrintBobs(int argc, const char**argv) { DebugPrintf("+--+---+---+-+---+---+-+-+---+---+\n"); for (i = 0; i < Graphics::MAX_BOBS_NUMBER; ++i, ++bob) { if (bob->active) { - DebugPrintf("|%2d|%3d|%3d|%1d|%3d|%3d|%1d|%1d|%3d|%3d|\n", + DebugPrintf("|%2d|%3d|%3d|%1d|%3d|%3d|%1d|%1d|%3d|%3d|\n", i, bob->x, bob->y, bob->xflip, bob->scale, bob->frameNum, bob->animating, bob->moving, bob->speed, bob->endx, bob->endy); } @@ -191,7 +191,7 @@ bool Debugger::Cmd_PrintBobs(int argc, const char**argv) { return true; } -bool Debugger::Cmd_Room(int argc, const char **argv) { +bool Debugger::Cmd_Room(int argc, const char **argv) { if (argc == 2) { uint16 roomNum = atoi(argv[1]); _vm->logic()->joePos(0, 0); @@ -199,12 +199,12 @@ bool Debugger::Cmd_Room(int argc, const char **argv) { _vm->logic()->entryObj(_vm->logic()->roomData(roomNum) + 1); return false; } else { - DebugPrintf("Current room: %d (%s), use '%s <roomnum>' to switch\n", - _vm->logic()->currentRoom(), + DebugPrintf("Current room: %d (%s), use '%s <roomnum>' to switch\n", + _vm->logic()->currentRoom(), _vm->logic()->roomName(_vm->logic()->currentRoom()), argv[0]); } - return true; + return true; } bool Debugger::Cmd_Song(int argc, const char **argv) { diff --git a/queen/debug.h b/queen/debug.h index f4ecbda9a0..018b905381 100644 --- a/queen/debug.h +++ b/queen/debug.h @@ -35,7 +35,7 @@ public: virtual ~Debugger(); // we need this here for __SYMBIAN32__ archaic gcc/UIQ int flags() const { return _flags; } - + enum { DF_DRAW_AREAS = 1 << 0 }; @@ -56,7 +56,7 @@ protected: bool Cmd_PrintBobs(int argc, const char **argv); bool Cmd_Room(int argc, const char **argv); bool Cmd_Song(int argc, const char **argv); - + private: QueenEngine *_vm; diff --git a/queen/defs.h b/queen/defs.h index 3cc27be10b..64ff7debe8 100644 --- a/queen/defs.h +++ b/queen/defs.h @@ -28,7 +28,7 @@ namespace Queen { enum { COMPRESSION_NONE = 0, - COMPRESSION_MP3 = 1, + COMPRESSION_MP3 = 1, COMPRESSION_OGG = 2, COMPRESSION_FLAC = 3 }; @@ -182,15 +182,15 @@ enum { ROOM_JUNGLE_BEETLE = 11, ROOM_JUNGLE_MISSIONARY = 13, ROOM_JUNGLE_GORILLA_2 = 14, - + ROOM_AMAZON_ENTRANCE = 16, ROOM_AMAZON_HIDEOUT = 17, ROOM_AMAZON_THRONE = 18, ROOM_AMAZON_JAIL = 19, - + ROOM_VILLAGE = 20, ROOM_TRADER_BOBS = 21, - + ROOM_FLODA_OUTSIDE = 22, ROOM_FLODA_KITCHEN = 26, ROOM_FLODA_LOCKERROOM = 27, @@ -214,7 +214,7 @@ enum { ROOM_TEMPLE_MAZE_6 = 101, ROOM_VALLEY_CARCASS = 67, - + ROOM_HOTEL_UPSTAIRS = 70, ROOM_HOTEL_DOWNSTAIRS = 71, ROOM_HOTEL_LOLA = 72, @@ -245,9 +245,9 @@ enum { FAYE_HEAD = 37, AZURA_HEAD = 106, FRANK_HEAD = 107, - + ROOM_ENDING_CREDITS = 110, - + ROOM_JOURNAL = 200 // dummy value to keep Display methods happy }; @@ -297,7 +297,7 @@ enum Verb { VERB_DIGIT_3 = 15, VERB_DIGIT_4 = 16, VERB_DIGIT_LAST = 16, - + VERB_INV_FIRST = VERB_DIGIT_FIRST, VERB_INV_1 = VERB_DIGIT_1, VERB_INV_2 = VERB_DIGIT_2, diff --git a/queen/display.cpp b/queen/display.cpp index c376f313d8..55c9e6805e 100644 --- a/queen/display.cpp +++ b/queen/display.cpp @@ -43,7 +43,7 @@ static const uint8 *_palJoeDress; #endif Display::Display(QueenEngine *vm, OSystem *system) - : _fullscreen(true), _horizontalScroll(0), _bdWidth(0), _bdHeight(0), + : _fullscreen(true), _horizontalScroll(0), _bdWidth(0), _bdHeight(0), _system(system), _vm(vm) { if (vm->resource()->getLanguage() == HEBREW) @@ -75,7 +75,7 @@ Display::Display(QueenEngine *vm, OSystem *system) _pal.dirtyMin = 0; _pal.dirtyMax = 255; _pal.scrollable = true; - + memset(&_dynalum, 0, sizeof(_dynalum)); } @@ -83,13 +83,13 @@ Display::~Display() { delete[] _backdropBuf; delete[] _panelBuf; delete[] _screenBuf; - + delete[] _dirtyBlocks; delete[] _pal.room; delete[] _pal.screen; delete[] _pal.panel; - + delete[] _dynalum.mskBuf; delete[] _dynalum.lumBuf; } @@ -178,13 +178,13 @@ void Display::palSet(const uint8 *pal, int start, int end, bool updateScreen) { void Display::palSetJoeDress() { memcpy(_pal.room + 144 * 3, _palJoeDress, 16 * 3); - memcpy(_pal.screen + 144 * 3, _palJoeDress, 16 * 3); + memcpy(_pal.screen + 144 * 3, _palJoeDress, 16 * 3); palSet(_pal.screen, 144, 159, true); } void Display::palSetJoeNormal() { memcpy(_pal.room + 144 * 3, _palJoeClothes, 16 * 3); - memcpy(_pal.screen + 144 * 3, _palJoeClothes, 16 * 3); + memcpy(_pal.screen + 144 * 3, _palJoeClothes, 16 * 3); palSet(_pal.screen, 144, 159, true); } @@ -318,7 +318,7 @@ void Display::palCustomScroll(uint16 roomNum) { if (j <= 0 || j >= 18) { jdir = -jdir; } - loPal = 96; + loPal = 96; hiPal = 111; } break; @@ -531,7 +531,7 @@ void Display::palCustomLightsOn(uint16 roomNum) { memcpy(_pal.screen + start * 3, _pal.room + start * 3, n * 3); palSet(_pal.screen, start, end, true); - + _pal.dirtyMin = 0; _pal.dirtyMax = 223; _pal.scrollable = true; @@ -599,7 +599,7 @@ void Display::update(bool dynalum, int16 dynaX, int16 dynaY) { _pal.dirtyMin = 144; _pal.dirtyMax = 144; } - // uncomment this line to disable the dirty blocks rendering + // uncomment this line to disable the dirty blocks rendering // _fullRefresh = 1; if (_fullRefresh) { _system->copyRectToScreen(_screenBuf, SCREEN_W, 0, 0, SCREEN_W, SCREEN_H); @@ -780,12 +780,12 @@ void Display::horizontalScrollUpdate(int16 xCamera) { } else if (xCamera >= 480) { horizontalScroll(320); } else { - horizontalScroll(0); + horizontalScroll(0); } } } -void Display::horizontalScroll(int16 scroll) { +void Display::horizontalScroll(int16 scroll) { if (_horizontalScroll != scroll) { _fullRefresh = 2; _horizontalScroll = scroll; @@ -862,7 +862,7 @@ void Display::setTextCentered(uint16 y, const char *text, bool outlined) { pts->x = x; pts->color = _curTextColor; pts->outlined = outlined; - pts->text = Common::String(text, len); + pts->text = Common::String(text, len); } void Display::drawTexts() { @@ -919,7 +919,7 @@ void Display::drawChar(uint16 x, uint16 y, uint8 color, const uint8 *chr) { void Display::drawText(uint16 x, uint16 y, uint8 color, const char *text, bool outlined) { static const int dx[] = { -1, 0, 1, 1, 1, 0, -1, -1 }; - static const int dy[] = { -1, -1, -1, 0, 1, 1, 1, 0 }; + static const int dy[] = { -1, -1, -1, 0, 1, 1, 1, 0 }; const uint8 *str = (const uint8 *)text; uint16 xs = x; while (*str && x < SCREEN_W) { @@ -973,7 +973,7 @@ void Display::blankScreenEffect1() { static const int inc[] = { -1, 1 }; uint8 buf[32 * 32]; while (_vm->input()->idleTime() >= Input::DELAY_SCREEN_BLANKER) { - for (int i = 0; i < 2; ++i) { + for (int i = 0; i < 2; ++i) { uint16 x = _rnd.getRandomNumber(SCREEN_W - 32 - 2) + 1; uint16 y = _rnd.getRandomNumber(SCREEN_H - 32 - 2) + 1; uint8 *p = _screenBuf + SCREEN_W * y + x; @@ -1026,7 +1026,7 @@ void Display::blankScreenEffect3() { while (_vm->input()->idleTime() >= Input::DELAY_SCREEN_BLANKER) { if (i > 4000000) { memset(_screenBuf, 0, SCREEN_W * SCREEN_H); - _system->copyRectToScreen(_screenBuf, SCREEN_W, 0, 0, SCREEN_W, SCREEN_H); + _system->copyRectToScreen(_screenBuf, SCREEN_W, 0, 0, SCREEN_W, SCREEN_H); } else { uint16 x = _rnd.getRandomNumber(SCREEN_W - 2); uint16 y = _rnd.getRandomNumber(SCREEN_H - 2); @@ -1048,436 +1048,436 @@ void Display::blankScreenEffect3() { #ifndef __PALM_OS__ const uint8 Display::_fontRegular[] = { - 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, - 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, - 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, - 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, - 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, - 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, - 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, - 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, - 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, - 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, - 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, - 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, - 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, - 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, - 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, - 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, - 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, - 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, - 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, - 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, - 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, - 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, - 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, - 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, - 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, - 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, - 0xC0, 0x00, 0xD8, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00, 0x30, 0x7C, - 0xC0, 0x78, 0x0C, 0xF8, 0x30, 0x00, 0x00, 0xC6, 0xCC, 0x18, - 0x30, 0x66, 0xC6, 0x00, 0x38, 0x6C, 0x68, 0x36, 0xDC, 0xCC, - 0x76, 0x00, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x60, 0xC0, 0xC0, 0xC0, 0x60, 0x30, 0x00, 0xC0, 0x60, - 0x30, 0x30, 0x30, 0x60, 0xC0, 0x00, 0x00, 0x6C, 0x38, 0xFE, - 0x38, 0x6C, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0xC0, - 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x03, 0x06, 0x0C, 0x18, - 0x30, 0x60, 0xC0, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, - 0x78, 0x00, 0x30, 0x70, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x00, - 0x78, 0xCC, 0x0C, 0x78, 0xC0, 0xC0, 0xFC, 0x00, 0x78, 0xCC, - 0x0C, 0x38, 0x0C, 0xCC, 0x78, 0x00, 0x1C, 0x3C, 0x6C, 0xCC, - 0xFC, 0x0C, 0x0C, 0x00, 0xFC, 0xC0, 0xF8, 0x0C, 0x0C, 0xCC, - 0x78, 0x00, 0x78, 0xCC, 0xC0, 0xF8, 0xCC, 0xCC, 0x78, 0x00, - 0xFC, 0xCC, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00, 0x78, 0xCC, - 0xCC, 0x78, 0xCC, 0xCC, 0x78, 0x00, 0x78, 0xCC, 0xCC, 0x7C, - 0x0C, 0xCC, 0x78, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, - 0xC0, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0xC0, - 0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x00, 0x00, 0x00, - 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xC0, 0x60, 0x30, 0x18, - 0x30, 0x60, 0xC0, 0x00, 0x78, 0xCC, 0x0C, 0x18, 0x30, 0x00, - 0x30, 0x00, 0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00, - 0x38, 0x7C, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0xF8, 0xCC, - 0xCC, 0xF8, 0xCC, 0xCC, 0xF8, 0x00, 0x78, 0xCC, 0xC0, 0xC0, - 0xC0, 0xCC, 0x78, 0x00, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, - 0xF8, 0x00, 0xFC, 0xC0, 0xC0, 0xF0, 0xC0, 0xC0, 0xFC, 0x00, - 0xFC, 0xC0, 0xC0, 0xF0, 0xC0, 0xC0, 0xC0, 0x00, 0x78, 0xCC, - 0xC0, 0xDC, 0xCC, 0xCC, 0x7C, 0x00, 0xCC, 0xCC, 0xCC, 0xFC, - 0xCC, 0xCC, 0xCC, 0x00, 0xF0, 0x60, 0x60, 0x60, 0x60, 0x60, - 0xF0, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00, - 0xC6, 0xCC, 0xD8, 0xF8, 0xD8, 0xCC, 0xC6, 0x00, 0xC0, 0xC0, - 0xC0, 0xC0, 0xC0, 0xC0, 0xFC, 0x00, 0x82, 0xC6, 0xEE, 0xFE, - 0xD6, 0xC6, 0xC6, 0x00, 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, - 0xC6, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00, - 0xF8, 0xCC, 0xCC, 0xF8, 0xC0, 0xC0, 0xC0, 0x00, 0x78, 0xCC, - 0xCC, 0xCC, 0xCC, 0xDC, 0x78, 0x0C, 0xF8, 0xCC, 0xCC, 0xF8, - 0xD8, 0xCC, 0xCC, 0x00, 0x78, 0xCC, 0xC0, 0x78, 0x0C, 0xCC, - 0x78, 0x00, 0xFC, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, - 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x7C, 0x00, 0xC6, 0xC6, - 0x6C, 0x6C, 0x38, 0x38, 0x10, 0x00, 0xC6, 0xC6, 0xC6, 0xD6, - 0xFE, 0xEE, 0xC6, 0x00, 0xC6, 0x6C, 0x38, 0x10, 0x38, 0x6C, - 0xC6, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x30, 0x00, - 0xFC, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xFC, 0x00, 0xF0, 0xC0, - 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0x00, 0xC0, 0x60, 0x30, 0x18, - 0x0C, 0x06, 0x03, 0x00, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, - 0xF0, 0x00, 0xE8, 0x4D, 0x4A, 0x48, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, - 0x7C, 0xCC, 0x7C, 0x00, 0xC0, 0xC0, 0xF8, 0xCC, 0xCC, 0xCC, - 0xF8, 0x00, 0x00, 0x00, 0x78, 0xCC, 0xC0, 0xCC, 0x78, 0x00, - 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x7C, 0x00, 0x00, 0x00, - 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00, 0x38, 0x6C, 0x60, 0xF8, - 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x7C, 0xCC, 0xCC, 0x7C, - 0x0C, 0x78, 0xC0, 0xC0, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, - 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x0C, 0x00, - 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0x78, 0xC0, 0xC0, 0xCC, 0xD8, - 0xF0, 0xD8, 0xCC, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, - 0xC0, 0x00, 0x00, 0x00, 0xCC, 0xEE, 0xD6, 0xC6, 0xC6, 0x00, - 0x00, 0x00, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x00, - 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0x00, 0x00, 0xF8, 0xCC, - 0xCC, 0xF8, 0xC0, 0xC0, 0x00, 0x00, 0x7C, 0xCC, 0xCC, 0x7C, - 0x0C, 0x0C, 0x00, 0x00, 0xF8, 0xCC, 0xC0, 0xC0, 0xC0, 0x00, - 0x00, 0x00, 0x7C, 0xC0, 0x78, 0x0C, 0x78, 0x00, 0x30, 0x30, - 0xFC, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0xCC, 0xCC, - 0xCC, 0xCC, 0x7C, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, - 0x30, 0x00, 0x00, 0x00, 0xC6, 0xD6, 0xD6, 0x6C, 0x6C, 0x00, - 0x00, 0x00, 0xCC, 0x78, 0x30, 0x78, 0xCC, 0x00, 0x00, 0x00, - 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0xE0, 0x00, 0x00, 0xFC, 0x18, - 0x30, 0x60, 0xFC, 0x00, 0x38, 0x60, 0x60, 0xC0, 0x60, 0x60, - 0x38, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0x00, - 0xE0, 0x30, 0x30, 0x18, 0x30, 0x30, 0xE0, 0x00, 0x38, 0x44, - 0xBA, 0xAA, 0xBA, 0x44, 0x38, 0x00, 0x00, 0x98, 0x30, 0x60, - 0xC8, 0x98, 0x30, 0x00, 0x1E, 0x30, 0x60, 0x60, 0x30, 0x1E, - 0x0C, 0x18, 0x00, 0x66, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, - 0x0C, 0x18, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, 0x18, 0x66, - 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x3C, 0x06, 0x3E, 0x66, - 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1E, 0x30, 0x60, 0x60, 0x30, 0x1E, 0x0C, 0x18, 0x18, 0x66, - 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, 0x66, 0x00, 0x3C, 0x66, - 0x7E, 0x60, 0x3C, 0x00, 0x30, 0x18, 0x3C, 0x66, 0x7E, 0x60, - 0x3C, 0x00, 0x00, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, - 0x18, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x30, 0x18, - 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x30, 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x66, 0x00, 0x3C, - 0x66, 0x66, 0x3C, 0x00, 0x00, 0x66, 0x00, 0x3C, 0x66, 0x66, - 0x3C, 0x00, 0x30, 0x18, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, - 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x30, 0x78, 0x0C, 0x7C, 0xCC, 0x7C, 0x00, 0x0C, 0x18, - 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x30, 0x00, 0x78, - 0xCC, 0xCC, 0x78, 0x00, 0x18, 0x30, 0x00, 0xCC, 0xCC, 0xCC, - 0x7C, 0x00, 0x71, 0x8E, 0x00, 0x7C, 0x66, 0x66, 0x66, 0x00, - 0x71, 0xCE, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0x00, 0x18, 0x18, - 0x18, 0x00, 0x18, 0x18, 0x18, 0x00, 0x3C, 0x60, 0x3C, 0x66, - 0x3C, 0x06, 0x3C, 0x00, 0x18, 0x00, 0x18, 0x0C, 0x06, 0x66, - 0x3C, 0x00, 0x3F, 0x40, 0x4E, 0x58, 0x4E, 0x40, 0x3F, 0x00, - 0x1C, 0xA4, 0xC4, 0xBC, 0x80, 0xFE, 0x00, 0x00, 0x00, 0x33, - 0x66, 0xCC, 0x66, 0x33, 0x00, 0x00, 0x3E, 0x06, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, - 0xC0, 0x00, 0x81, 0xB9, 0xA5, 0xB9, 0xA5, 0x81, 0x7E, 0x00, - 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xCC, - 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0x30, - 0x30, 0x00, 0xFC, 0x00, 0xF0, 0x18, 0x30, 0x60, 0xF8, 0x00, - 0x00, 0x00, 0xF0, 0x18, 0x30, 0x18, 0xF0, 0x00, 0x00, 0x00, - 0x30, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xCC, 0xCC, 0xCC, 0xCC, 0xFE, 0xC0, 0x3E, 0x7A, 0x7A, 0x3A, - 0x0A, 0x0A, 0x0A, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, - 0x60, 0xE0, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x38, 0x44, - 0x44, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xCC, 0x66, 0x33, - 0x66, 0xCC, 0x00, 0x00, 0x40, 0xC6, 0x4C, 0x58, 0x32, 0x66, - 0xCF, 0x02, 0x40, 0xC6, 0x4C, 0x58, 0x3E, 0x62, 0xC4, 0x0E, - 0xC0, 0x23, 0x66, 0x2C, 0xD9, 0x33, 0x67, 0x01, 0x18, 0x00, - 0x18, 0x30, 0x60, 0x66, 0x3C, 0x00, 0x60, 0x30, 0x7C, 0xC6, - 0xFE, 0xC6, 0xC6, 0x00, 0x0C, 0x18, 0x7C, 0xC6, 0xFE, 0xC6, - 0xC6, 0x00, 0x38, 0xC6, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, - 0x71, 0x8E, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0x6C, 0x00, - 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0x38, 0x44, 0x7C, 0xC6, - 0xFE, 0xC6, 0xC6, 0x00, 0x1F, 0x3C, 0x3C, 0x6F, 0x7C, 0xCC, - 0xCF, 0x00, 0x1E, 0x30, 0x60, 0x60, 0x30, 0x1E, 0x0C, 0x18, - 0x60, 0x30, 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00, 0x18, 0x30, - 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00, 0x30, 0xCC, 0xFC, 0xC0, - 0xF0, 0xC0, 0xFC, 0x00, 0xCC, 0x00, 0xFC, 0xC0, 0xF0, 0xC0, - 0xFC, 0x00, 0x60, 0x30, 0x78, 0x30, 0x30, 0x30, 0x78, 0x00, - 0x18, 0x30, 0x78, 0x30, 0x30, 0x30, 0x78, 0x00, 0x30, 0xCC, - 0x78, 0x30, 0x30, 0x30, 0x78, 0x00, 0xCC, 0x00, 0x78, 0x30, - 0x30, 0x30, 0x78, 0x00, 0x78, 0x6C, 0x66, 0xF6, 0x66, 0x6C, - 0x78, 0x00, 0x71, 0xCE, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0x00, - 0x30, 0x18, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x0C, 0x18, - 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x18, 0x66, 0x3C, 0x66, - 0x66, 0x66, 0x3C, 0x00, 0x71, 0x8E, 0x3C, 0x66, 0x66, 0x66, - 0x3C, 0x00, 0xC3, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, - 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x3F, 0x66, - 0x6E, 0x7E, 0x76, 0x66, 0xFC, 0x00, 0x30, 0x18, 0x66, 0x66, - 0x66, 0x66, 0x3E, 0x00, 0x0C, 0x18, 0x66, 0x66, 0x66, 0x66, - 0x3E, 0x00, 0x18, 0x24, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00, - 0x66, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x06, 0x08, - 0xC3, 0x66, 0x3C, 0x18, 0x18, 0x00, 0x60, 0x60, 0x7E, 0x63, - 0x7E, 0x60, 0x60, 0x00, 0x3C, 0x66, 0x66, 0x6C, 0x66, 0x66, - 0x6C, 0x60, 0x30, 0x18, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, - 0x0C, 0x18, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x18, 0x66, - 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x71, 0x8E, 0x3C, 0x06, - 0x3E, 0x66, 0x3E, 0x00, 0x66, 0x00, 0x3C, 0x06, 0x3E, 0x66, - 0x3E, 0x00, 0x18, 0x24, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, - 0x00, 0x00, 0x7E, 0x1B, 0x7F, 0xD8, 0x77, 0x00, 0x00, 0x00, - 0x3C, 0x60, 0x60, 0x60, 0x3C, 0x18, 0x30, 0x18, 0x3C, 0x66, - 0x7E, 0x60, 0x3C, 0x00, 0x0C, 0x18, 0x3C, 0x66, 0x7E, 0x60, - 0x3C, 0x00, 0x18, 0x66, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, - 0x66, 0x00, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, 0x30, 0x18, - 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x18, - 0x18, 0x18, 0x18, 0x00, 0x18, 0x66, 0x00, 0x18, 0x18, 0x18, - 0x18, 0x00, 0x00, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, - 0x60, 0xFC, 0x18, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x71, 0x8E, - 0x00, 0x7C, 0x66, 0x66, 0x66, 0x00, 0x30, 0x18, 0x00, 0x3C, - 0x66, 0x66, 0x3C, 0x00, 0x0C, 0x18, 0x00, 0x3C, 0x66, 0x66, - 0x3C, 0x00, 0x18, 0x66, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, - 0x71, 0x8E, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x66, - 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x18, 0x00, 0x7E, - 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x7C, 0xCE, 0xD6, 0xE6, - 0x7C, 0x80, 0x30, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, - 0x0C, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x18, 0x66, - 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x00, 0x66, 0x00, 0x66, - 0x66, 0x66, 0x3E, 0x00, 0x0C, 0x18, 0x00, 0x66, 0x66, 0x3C, - 0x18, 0x30, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, - 0x00, 0x66, 0x00, 0x66, 0x66, 0x3C, 0x18, 0x30, 0xFF + 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, + 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, + 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, + 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, + 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, + 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, + 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, + 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, + 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, + 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, + 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, + 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, + 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, + 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, + 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, + 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, + 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, + 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, + 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, + 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, + 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, + 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, + 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, + 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, + 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, + 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, + 0xC0, 0x00, 0xD8, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00, 0x30, 0x7C, + 0xC0, 0x78, 0x0C, 0xF8, 0x30, 0x00, 0x00, 0xC6, 0xCC, 0x18, + 0x30, 0x66, 0xC6, 0x00, 0x38, 0x6C, 0x68, 0x36, 0xDC, 0xCC, + 0x76, 0x00, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x60, 0xC0, 0xC0, 0xC0, 0x60, 0x30, 0x00, 0xC0, 0x60, + 0x30, 0x30, 0x30, 0x60, 0xC0, 0x00, 0x00, 0x6C, 0x38, 0xFE, + 0x38, 0x6C, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0xC0, + 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x03, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC0, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x78, 0x00, 0x30, 0x70, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x00, + 0x78, 0xCC, 0x0C, 0x78, 0xC0, 0xC0, 0xFC, 0x00, 0x78, 0xCC, + 0x0C, 0x38, 0x0C, 0xCC, 0x78, 0x00, 0x1C, 0x3C, 0x6C, 0xCC, + 0xFC, 0x0C, 0x0C, 0x00, 0xFC, 0xC0, 0xF8, 0x0C, 0x0C, 0xCC, + 0x78, 0x00, 0x78, 0xCC, 0xC0, 0xF8, 0xCC, 0xCC, 0x78, 0x00, + 0xFC, 0xCC, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00, 0x78, 0xCC, + 0xCC, 0x78, 0xCC, 0xCC, 0x78, 0x00, 0x78, 0xCC, 0xCC, 0x7C, + 0x0C, 0xCC, 0x78, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, + 0xC0, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0xC0, + 0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x00, 0x00, 0x00, + 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xC0, 0x60, 0x30, 0x18, + 0x30, 0x60, 0xC0, 0x00, 0x78, 0xCC, 0x0C, 0x18, 0x30, 0x00, + 0x30, 0x00, 0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00, + 0x38, 0x7C, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0xF8, 0xCC, + 0xCC, 0xF8, 0xCC, 0xCC, 0xF8, 0x00, 0x78, 0xCC, 0xC0, 0xC0, + 0xC0, 0xCC, 0x78, 0x00, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0xF8, 0x00, 0xFC, 0xC0, 0xC0, 0xF0, 0xC0, 0xC0, 0xFC, 0x00, + 0xFC, 0xC0, 0xC0, 0xF0, 0xC0, 0xC0, 0xC0, 0x00, 0x78, 0xCC, + 0xC0, 0xDC, 0xCC, 0xCC, 0x7C, 0x00, 0xCC, 0xCC, 0xCC, 0xFC, + 0xCC, 0xCC, 0xCC, 0x00, 0xF0, 0x60, 0x60, 0x60, 0x60, 0x60, + 0xF0, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00, + 0xC6, 0xCC, 0xD8, 0xF8, 0xD8, 0xCC, 0xC6, 0x00, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xFC, 0x00, 0x82, 0xC6, 0xEE, 0xFE, + 0xD6, 0xC6, 0xC6, 0x00, 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, + 0xC6, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00, + 0xF8, 0xCC, 0xCC, 0xF8, 0xC0, 0xC0, 0xC0, 0x00, 0x78, 0xCC, + 0xCC, 0xCC, 0xCC, 0xDC, 0x78, 0x0C, 0xF8, 0xCC, 0xCC, 0xF8, + 0xD8, 0xCC, 0xCC, 0x00, 0x78, 0xCC, 0xC0, 0x78, 0x0C, 0xCC, + 0x78, 0x00, 0xFC, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x7C, 0x00, 0xC6, 0xC6, + 0x6C, 0x6C, 0x38, 0x38, 0x10, 0x00, 0xC6, 0xC6, 0xC6, 0xD6, + 0xFE, 0xEE, 0xC6, 0x00, 0xC6, 0x6C, 0x38, 0x10, 0x38, 0x6C, + 0xC6, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x30, 0x00, + 0xFC, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xFC, 0x00, 0xF0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0x00, 0xC0, 0x60, 0x30, 0x18, + 0x0C, 0x06, 0x03, 0x00, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, + 0xF0, 0x00, 0xE8, 0x4D, 0x4A, 0x48, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, + 0x7C, 0xCC, 0x7C, 0x00, 0xC0, 0xC0, 0xF8, 0xCC, 0xCC, 0xCC, + 0xF8, 0x00, 0x00, 0x00, 0x78, 0xCC, 0xC0, 0xCC, 0x78, 0x00, + 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x7C, 0x00, 0x00, 0x00, + 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00, 0x38, 0x6C, 0x60, 0xF8, + 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x7C, 0xCC, 0xCC, 0x7C, + 0x0C, 0x78, 0xC0, 0xC0, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, + 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x0C, 0x00, + 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0x78, 0xC0, 0xC0, 0xCC, 0xD8, + 0xF0, 0xD8, 0xCC, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, + 0xC0, 0x00, 0x00, 0x00, 0xCC, 0xEE, 0xD6, 0xC6, 0xC6, 0x00, + 0x00, 0x00, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x00, + 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0x00, 0x00, 0xF8, 0xCC, + 0xCC, 0xF8, 0xC0, 0xC0, 0x00, 0x00, 0x7C, 0xCC, 0xCC, 0x7C, + 0x0C, 0x0C, 0x00, 0x00, 0xF8, 0xCC, 0xC0, 0xC0, 0xC0, 0x00, + 0x00, 0x00, 0x7C, 0xC0, 0x78, 0x0C, 0x78, 0x00, 0x30, 0x30, + 0xFC, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0xCC, 0xCC, + 0xCC, 0xCC, 0x7C, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, + 0x30, 0x00, 0x00, 0x00, 0xC6, 0xD6, 0xD6, 0x6C, 0x6C, 0x00, + 0x00, 0x00, 0xCC, 0x78, 0x30, 0x78, 0xCC, 0x00, 0x00, 0x00, + 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0xE0, 0x00, 0x00, 0xFC, 0x18, + 0x30, 0x60, 0xFC, 0x00, 0x38, 0x60, 0x60, 0xC0, 0x60, 0x60, + 0x38, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0x00, + 0xE0, 0x30, 0x30, 0x18, 0x30, 0x30, 0xE0, 0x00, 0x38, 0x44, + 0xBA, 0xAA, 0xBA, 0x44, 0x38, 0x00, 0x00, 0x98, 0x30, 0x60, + 0xC8, 0x98, 0x30, 0x00, 0x1E, 0x30, 0x60, 0x60, 0x30, 0x1E, + 0x0C, 0x18, 0x00, 0x66, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, + 0x0C, 0x18, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, 0x18, 0x66, + 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x3C, 0x06, 0x3E, 0x66, + 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1E, 0x30, 0x60, 0x60, 0x30, 0x1E, 0x0C, 0x18, 0x18, 0x66, + 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, 0x66, 0x00, 0x3C, 0x66, + 0x7E, 0x60, 0x3C, 0x00, 0x30, 0x18, 0x3C, 0x66, 0x7E, 0x60, + 0x3C, 0x00, 0x00, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, + 0x18, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x30, 0x18, + 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x30, 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x66, 0x00, 0x3C, + 0x66, 0x66, 0x3C, 0x00, 0x00, 0x66, 0x00, 0x3C, 0x66, 0x66, + 0x3C, 0x00, 0x30, 0x18, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, + 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x30, 0x78, 0x0C, 0x7C, 0xCC, 0x7C, 0x00, 0x0C, 0x18, + 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x30, 0x00, 0x78, + 0xCC, 0xCC, 0x78, 0x00, 0x18, 0x30, 0x00, 0xCC, 0xCC, 0xCC, + 0x7C, 0x00, 0x71, 0x8E, 0x00, 0x7C, 0x66, 0x66, 0x66, 0x00, + 0x71, 0xCE, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0x00, 0x18, 0x18, + 0x18, 0x00, 0x18, 0x18, 0x18, 0x00, 0x3C, 0x60, 0x3C, 0x66, + 0x3C, 0x06, 0x3C, 0x00, 0x18, 0x00, 0x18, 0x0C, 0x06, 0x66, + 0x3C, 0x00, 0x3F, 0x40, 0x4E, 0x58, 0x4E, 0x40, 0x3F, 0x00, + 0x1C, 0xA4, 0xC4, 0xBC, 0x80, 0xFE, 0x00, 0x00, 0x00, 0x33, + 0x66, 0xCC, 0x66, 0x33, 0x00, 0x00, 0x3E, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, + 0xC0, 0x00, 0x81, 0xB9, 0xA5, 0xB9, 0xA5, 0x81, 0x7E, 0x00, + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xCC, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0x30, + 0x30, 0x00, 0xFC, 0x00, 0xF0, 0x18, 0x30, 0x60, 0xF8, 0x00, + 0x00, 0x00, 0xF0, 0x18, 0x30, 0x18, 0xF0, 0x00, 0x00, 0x00, + 0x30, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xCC, 0xCC, 0xCC, 0xCC, 0xFE, 0xC0, 0x3E, 0x7A, 0x7A, 0x3A, + 0x0A, 0x0A, 0x0A, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, + 0x60, 0xE0, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x38, 0x44, + 0x44, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xCC, 0x66, 0x33, + 0x66, 0xCC, 0x00, 0x00, 0x40, 0xC6, 0x4C, 0x58, 0x32, 0x66, + 0xCF, 0x02, 0x40, 0xC6, 0x4C, 0x58, 0x3E, 0x62, 0xC4, 0x0E, + 0xC0, 0x23, 0x66, 0x2C, 0xD9, 0x33, 0x67, 0x01, 0x18, 0x00, + 0x18, 0x30, 0x60, 0x66, 0x3C, 0x00, 0x60, 0x30, 0x7C, 0xC6, + 0xFE, 0xC6, 0xC6, 0x00, 0x0C, 0x18, 0x7C, 0xC6, 0xFE, 0xC6, + 0xC6, 0x00, 0x38, 0xC6, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, + 0x71, 0x8E, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0x6C, 0x00, + 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0x38, 0x44, 0x7C, 0xC6, + 0xFE, 0xC6, 0xC6, 0x00, 0x1F, 0x3C, 0x3C, 0x6F, 0x7C, 0xCC, + 0xCF, 0x00, 0x1E, 0x30, 0x60, 0x60, 0x30, 0x1E, 0x0C, 0x18, + 0x60, 0x30, 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00, 0x18, 0x30, + 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00, 0x30, 0xCC, 0xFC, 0xC0, + 0xF0, 0xC0, 0xFC, 0x00, 0xCC, 0x00, 0xFC, 0xC0, 0xF0, 0xC0, + 0xFC, 0x00, 0x60, 0x30, 0x78, 0x30, 0x30, 0x30, 0x78, 0x00, + 0x18, 0x30, 0x78, 0x30, 0x30, 0x30, 0x78, 0x00, 0x30, 0xCC, + 0x78, 0x30, 0x30, 0x30, 0x78, 0x00, 0xCC, 0x00, 0x78, 0x30, + 0x30, 0x30, 0x78, 0x00, 0x78, 0x6C, 0x66, 0xF6, 0x66, 0x6C, + 0x78, 0x00, 0x71, 0xCE, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0x00, + 0x30, 0x18, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x0C, 0x18, + 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x18, 0x66, 0x3C, 0x66, + 0x66, 0x66, 0x3C, 0x00, 0x71, 0x8E, 0x3C, 0x66, 0x66, 0x66, + 0x3C, 0x00, 0xC3, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, + 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x3F, 0x66, + 0x6E, 0x7E, 0x76, 0x66, 0xFC, 0x00, 0x30, 0x18, 0x66, 0x66, + 0x66, 0x66, 0x3E, 0x00, 0x0C, 0x18, 0x66, 0x66, 0x66, 0x66, + 0x3E, 0x00, 0x18, 0x24, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00, + 0x66, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x06, 0x08, + 0xC3, 0x66, 0x3C, 0x18, 0x18, 0x00, 0x60, 0x60, 0x7E, 0x63, + 0x7E, 0x60, 0x60, 0x00, 0x3C, 0x66, 0x66, 0x6C, 0x66, 0x66, + 0x6C, 0x60, 0x30, 0x18, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, + 0x0C, 0x18, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x18, 0x66, + 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x71, 0x8E, 0x3C, 0x06, + 0x3E, 0x66, 0x3E, 0x00, 0x66, 0x00, 0x3C, 0x06, 0x3E, 0x66, + 0x3E, 0x00, 0x18, 0x24, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, + 0x00, 0x00, 0x7E, 0x1B, 0x7F, 0xD8, 0x77, 0x00, 0x00, 0x00, + 0x3C, 0x60, 0x60, 0x60, 0x3C, 0x18, 0x30, 0x18, 0x3C, 0x66, + 0x7E, 0x60, 0x3C, 0x00, 0x0C, 0x18, 0x3C, 0x66, 0x7E, 0x60, + 0x3C, 0x00, 0x18, 0x66, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, + 0x66, 0x00, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, 0x30, 0x18, + 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x18, + 0x18, 0x18, 0x18, 0x00, 0x18, 0x66, 0x00, 0x18, 0x18, 0x18, + 0x18, 0x00, 0x00, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, + 0x60, 0xFC, 0x18, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x71, 0x8E, + 0x00, 0x7C, 0x66, 0x66, 0x66, 0x00, 0x30, 0x18, 0x00, 0x3C, + 0x66, 0x66, 0x3C, 0x00, 0x0C, 0x18, 0x00, 0x3C, 0x66, 0x66, + 0x3C, 0x00, 0x18, 0x66, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, + 0x71, 0x8E, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x66, + 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x18, 0x00, 0x7E, + 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x7C, 0xCE, 0xD6, 0xE6, + 0x7C, 0x80, 0x30, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, + 0x0C, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x18, 0x66, + 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x00, 0x66, 0x00, 0x66, + 0x66, 0x66, 0x3E, 0x00, 0x0C, 0x18, 0x00, 0x66, 0x66, 0x3C, + 0x18, 0x30, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, + 0x00, 0x66, 0x00, 0x66, 0x66, 0x3C, 0x18, 0x30, 0xFF }; const uint8 Display::_fontHebrew[] = { - 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, - 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, - 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, - 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, - 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, - 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, - 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, - 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, - 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, - 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, - 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, - 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, - 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, - 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, - 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, - 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, - 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, - 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, - 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, - 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, - 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, - 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, - 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, - 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, - 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, - 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, - 0xC0, 0x00, 0xD8, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00, 0x30, 0x7C, - 0xC0, 0x78, 0x0C, 0xF8, 0x30, 0x00, 0x00, 0xC6, 0xCC, 0x18, - 0x30, 0x66, 0xC6, 0x00, 0x38, 0x6C, 0x68, 0x36, 0xDC, 0xCC, - 0x76, 0x00, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x60, 0xC0, 0xC0, 0xC0, 0x60, 0x30, 0x00, 0xC0, 0x60, - 0x30, 0x30, 0x30, 0x60, 0xC0, 0x00, 0x00, 0x6C, 0x38, 0xFE, - 0x38, 0x6C, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0xC0, - 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x03, 0x06, 0x0C, 0x18, - 0x30, 0x60, 0xC0, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, - 0x78, 0x00, 0x30, 0x70, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x00, - 0x78, 0xCC, 0x0C, 0x78, 0xC0, 0xC0, 0xFC, 0x00, 0x78, 0xCC, - 0x0C, 0x38, 0x0C, 0xCC, 0x78, 0x00, 0x1C, 0x3C, 0x6C, 0xCC, - 0xFC, 0x0C, 0x0C, 0x00, 0xFC, 0xC0, 0xF8, 0x0C, 0x0C, 0xCC, - 0x78, 0x00, 0x78, 0xCC, 0xC0, 0xF8, 0xCC, 0xCC, 0x78, 0x00, - 0xFC, 0xCC, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00, 0x78, 0xCC, - 0xCC, 0x78, 0xCC, 0xCC, 0x78, 0x00, 0x78, 0xCC, 0xCC, 0x7C, - 0x0C, 0xCC, 0x78, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, - 0xC0, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0xC0, - 0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x00, 0x00, 0x00, - 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xC0, 0x60, 0x30, 0x18, - 0x30, 0x60, 0xC0, 0x00, 0x78, 0xCC, 0x0C, 0x18, 0x30, 0x00, - 0x30, 0x00, 0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00, - 0x38, 0x7C, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0xF8, 0xCC, - 0xCC, 0xF8, 0xCC, 0xCC, 0xF8, 0x00, 0x78, 0xCC, 0xC0, 0xC0, - 0xC0, 0xCC, 0x78, 0x00, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, - 0xF8, 0x00, 0xFC, 0xC0, 0xC0, 0xF0, 0xC0, 0xC0, 0xFC, 0x00, - 0xFC, 0xC0, 0xC0, 0xF0, 0xC0, 0xC0, 0xC0, 0x00, 0x78, 0xCC, - 0xC0, 0xDC, 0xCC, 0xCC, 0x7C, 0x00, 0xCC, 0xCC, 0xCC, 0xFC, - 0xCC, 0xCC, 0xCC, 0x00, 0xF0, 0x60, 0x60, 0x60, 0x60, 0x60, - 0xF0, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00, - 0xC6, 0xCC, 0xD8, 0xF8, 0xD8, 0xCC, 0xC6, 0x00, 0xC0, 0xC0, - 0xC0, 0xC0, 0xC0, 0xC0, 0xFC, 0x00, 0x82, 0xC6, 0xEE, 0xFE, - 0xD6, 0xC6, 0xC6, 0x00, 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, - 0xC6, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00, - 0xF8, 0xCC, 0xCC, 0xF8, 0xC0, 0xC0, 0xC0, 0x00, 0x78, 0xCC, - 0xCC, 0xCC, 0xCC, 0xDC, 0x78, 0x0C, 0xF8, 0xCC, 0xCC, 0xF8, - 0xD8, 0xCC, 0xCC, 0x00, 0x78, 0xCC, 0xC0, 0x78, 0x0C, 0xCC, - 0x78, 0x00, 0xFC, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, - 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x7C, 0x00, 0xC6, 0xC6, - 0x6C, 0x6C, 0x38, 0x38, 0x10, 0x00, 0xC6, 0xC6, 0xC6, 0xD6, - 0xFE, 0xEE, 0xC6, 0x00, 0xC6, 0x6C, 0x38, 0x10, 0x38, 0x6C, - 0xC6, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x30, 0x00, - 0xFC, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xFC, 0x00, 0xF0, 0xC0, - 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0x00, 0xC0, 0x60, 0x30, 0x18, - 0x0C, 0x06, 0x03, 0x00, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, - 0xF0, 0x00, 0xE8, 0x4D, 0x4A, 0x48, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, - 0x7C, 0xCC, 0x7C, 0x00, 0xC0, 0xC0, 0xF8, 0xCC, 0xCC, 0xCC, - 0xF8, 0x00, 0x00, 0x00, 0x78, 0xCC, 0xC0, 0xCC, 0x78, 0x00, - 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x7C, 0x00, 0x00, 0x00, - 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00, 0x38, 0x6C, 0x60, 0xF8, - 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x7C, 0xCC, 0xCC, 0x7C, - 0x0C, 0x78, 0xC0, 0xC0, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, - 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x0C, 0x00, - 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0x78, 0xC0, 0xC0, 0xCC, 0xD8, - 0xF0, 0xD8, 0xCC, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, - 0xC0, 0x00, 0x00, 0x00, 0xCC, 0xEE, 0xD6, 0xC6, 0xC6, 0x00, - 0x00, 0x00, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x00, - 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0x00, 0x00, 0xF8, 0xCC, - 0xCC, 0xF8, 0xC0, 0xC0, 0x00, 0x00, 0x7C, 0xCC, 0xCC, 0x7C, - 0x0C, 0x0C, 0x00, 0x00, 0xF8, 0xCC, 0xC0, 0xC0, 0xC0, 0x00, - 0x00, 0x00, 0x7C, 0xC0, 0x78, 0x0C, 0x78, 0x00, 0x30, 0x30, - 0xFC, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0xCC, 0xCC, - 0xCC, 0xCC, 0x7C, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, - 0x30, 0x00, 0x00, 0x00, 0xC6, 0xD6, 0xD6, 0x6C, 0x6C, 0x00, - 0x00, 0x00, 0xCC, 0x78, 0x30, 0x78, 0xCC, 0x00, 0x00, 0x00, - 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0xE0, 0x00, 0x00, 0xFC, 0x18, - 0x30, 0x60, 0xFC, 0x00, 0x38, 0x60, 0x60, 0xC0, 0x60, 0x60, - 0x38, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0x00, - 0xE0, 0x30, 0x30, 0x18, 0x30, 0x30, 0xE0, 0x00, 0x38, 0x44, - 0xBA, 0xAA, 0xBA, 0x44, 0x38, 0x00, 0x00, 0x98, 0x30, 0x60, - 0xC8, 0x98, 0x30, 0x00, 0xCC, 0x66, 0x76, 0xBC, 0x98, 0x8C, - 0xE6, 0x00, 0xFC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFE, 0x00, - 0x78, 0x18, 0x18, 0x18, 0x38, 0x78, 0xD8, 0x00, 0xFE, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0xFE, 0x06, 0x06, 0xC6, - 0xC6, 0xC6, 0xC6, 0x00, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x00, 0x7C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, - 0xFE, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0xDC, 0x66, - 0xE6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0xF0, 0x30, 0x30, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0xF8, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xF8, 0x00, - 0xC0, 0xFE, 0x06, 0x06, 0x0C, 0x18, 0x18, 0x00, 0xFE, 0x66, - 0x66, 0x66, 0x66, 0x66, 0x7E, 0x00, 0xFC, 0x76, 0x66, 0x66, - 0x66, 0x66, 0x6E, 0x00, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00, - 0xFE, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, 0xEE, 0x66, - 0x66, 0x66, 0x66, 0x6C, 0xF8, 0x00, 0xFE, 0xC6, 0xC6, 0xF6, - 0x06, 0x06, 0x06, 0x06, 0xFE, 0xC6, 0xC6, 0xFE, 0x06, 0x06, - 0xFE, 0x00, 0xFE, 0x66, 0x6C, 0x78, 0x60, 0x60, 0x60, 0x60, - 0xEE, 0x66, 0x3C, 0x18, 0x0C, 0x06, 0xFE, 0x00, 0xFE, 0x06, - 0x0E, 0xD8, 0xF0, 0xF0, 0xC0, 0xC0, 0xFC, 0x0C, 0x0C, 0x0C, - 0x0C, 0x0C, 0x0C, 0x00, 0xEE, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, - 0x7C, 0x00, 0xFF, 0x67, 0x67, 0x67, 0x67, 0x67, 0xE7, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x0C, 0x3E, 0x6C, - 0x3E, 0x0C, 0x00, 0x00, 0x38, 0x6C, 0x60, 0xF0, 0x60, 0x60, - 0xFC, 0x00, 0x42, 0x3C, 0x66, 0x3C, 0x42, 0x00, 0x00, 0x00, - 0xC3, 0x66, 0x3C, 0x18, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x18, - 0x18, 0x00, 0x18, 0x18, 0x18, 0x00, 0x3C, 0x60, 0x3C, 0x66, - 0x3C, 0x06, 0x3C, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3F, 0x40, 0x4E, 0x58, 0x4E, 0x40, 0x3F, 0x00, - 0x1C, 0xA4, 0xC4, 0xBC, 0x80, 0xFE, 0x00, 0x00, 0x00, 0x33, - 0x66, 0xCC, 0x66, 0x33, 0x00, 0x00, 0x3E, 0x06, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, - 0x00, 0x00, 0x81, 0xB9, 0xA5, 0xB9, 0xA5, 0x81, 0x7E, 0x00, - 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xCC, - 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0x30, - 0x30, 0x00, 0xFC, 0x00, 0xF0, 0x18, 0x30, 0x60, 0xF8, 0x00, - 0x00, 0x00, 0xF0, 0x18, 0x30, 0x18, 0xF0, 0x00, 0x00, 0x00, - 0x30, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xCC, 0xCC, 0xCC, 0xCC, 0xFE, 0xC0, 0x3E, 0x7A, 0x7A, 0x3A, - 0x0A, 0x0A, 0x0A, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, - 0x60, 0xE0, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x38, 0x44, - 0x44, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xCC, 0x66, 0x33, - 0x66, 0xCC, 0x00, 0x00, 0x40, 0xC6, 0x4C, 0x58, 0x32, 0x66, - 0xCF, 0x02, 0x40, 0xC6, 0x4C, 0x58, 0x3E, 0x62, 0xC4, 0x0E, - 0xC0, 0x23, 0x66, 0x2C, 0xD9, 0x33, 0x67, 0x01, 0x18, 0x00, - 0x18, 0x30, 0x60, 0x66, 0x3C, 0x00, 0x60, 0x30, 0x7C, 0xC6, - 0xFE, 0xC6, 0xC6, 0x00, 0x0C, 0x18, 0x7C, 0xC6, 0xFE, 0xC6, - 0xC6, 0x00, 0x38, 0xC6, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, - 0x71, 0x8E, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0x6C, 0x00, - 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0x38, 0x44, 0x7C, 0xC6, - 0xFE, 0xC6, 0xC6, 0x00, 0x1F, 0x3C, 0x3C, 0x6F, 0x7C, 0xCC, - 0xCF, 0x00, 0x1E, 0x30, 0x60, 0x60, 0x30, 0x1E, 0x0C, 0x18, - 0x60, 0x30, 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00, 0x18, 0x30, - 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00, 0x30, 0xCC, 0xFC, 0xC0, - 0xF0, 0xC0, 0xFC, 0x00, 0xCC, 0x00, 0xFC, 0xC0, 0xF0, 0xC0, - 0xFC, 0x00, 0x60, 0x30, 0x78, 0x30, 0x30, 0x30, 0x78, 0x00, - 0x18, 0x30, 0x78, 0x30, 0x30, 0x30, 0x78, 0x00, 0x30, 0xCC, - 0x78, 0x30, 0x30, 0x30, 0x78, 0x00, 0xCC, 0x00, 0x78, 0x30, - 0x30, 0x30, 0x78, 0x00, 0x78, 0x6C, 0x66, 0xF6, 0x66, 0x6C, - 0x78, 0x00, 0x71, 0xCE, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0x00, - 0x30, 0x18, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x0C, 0x18, - 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x18, 0x66, 0x3C, 0x66, - 0x66, 0x66, 0x3C, 0x00, 0x71, 0x8E, 0x3C, 0x66, 0x66, 0x66, - 0x3C, 0x00, 0xC3, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, - 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x3F, 0x66, - 0x6E, 0x7E, 0x76, 0x66, 0xFC, 0x00, 0x30, 0x18, 0x66, 0x66, - 0x66, 0x66, 0x3E, 0x00, 0x0C, 0x18, 0x66, 0x66, 0x66, 0x66, - 0x3E, 0x00, 0x18, 0x24, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00, - 0x66, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x06, 0x08, - 0xC3, 0x66, 0x3C, 0x18, 0x18, 0x00, 0x60, 0x60, 0x7E, 0x63, - 0x7E, 0x60, 0x60, 0x00, 0x3C, 0x66, 0x66, 0x6C, 0x66, 0x66, - 0x6C, 0x60, 0x30, 0x18, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, - 0x0C, 0x18, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x18, 0x66, - 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x71, 0x8E, 0x3C, 0x06, - 0x3E, 0x66, 0x3E, 0x00, 0x66, 0x00, 0x3C, 0x06, 0x3E, 0x66, - 0x3E, 0x00, 0x18, 0x24, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, - 0x00, 0x00, 0x7E, 0x1B, 0x7F, 0xD8, 0x77, 0x00, 0x00, 0x00, - 0x3C, 0x60, 0x60, 0x60, 0x3C, 0x18, 0x30, 0x18, 0x3C, 0x66, - 0x7E, 0x60, 0x3C, 0x00, 0x0C, 0x18, 0x3C, 0x66, 0x7E, 0x60, - 0x3C, 0x00, 0x18, 0x66, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, - 0x66, 0x00, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, 0x30, 0x18, - 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x18, - 0x18, 0x18, 0x18, 0x00, 0x18, 0x66, 0x00, 0x18, 0x18, 0x18, - 0x18, 0x00, 0x00, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, - 0x60, 0xFC, 0x18, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x71, 0x8E, - 0x00, 0x7C, 0x66, 0x66, 0x66, 0x00, 0x30, 0x18, 0x00, 0x3C, - 0x66, 0x66, 0x3C, 0x00, 0x0C, 0x18, 0x00, 0x3C, 0x66, 0x66, - 0x3C, 0x00, 0x18, 0x66, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, - 0x71, 0x8E, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x66, - 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x18, 0x00, 0x7E, - 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x7C, 0xCE, 0xD6, 0xE6, - 0x7C, 0x80, 0x30, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, - 0x0C, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x18, 0x66, - 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x00, 0x66, 0x00, 0x66, - 0x66, 0x66, 0x3E, 0x00, 0x0C, 0x18, 0x00, 0x66, 0x66, 0x3C, - 0x18, 0x30, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, - 0x00, 0x66, 0x00, 0x66, 0x66, 0x3C, 0x18, 0x30, 0xFF + 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, + 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, + 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, + 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, + 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, + 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, + 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, + 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, + 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, + 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, + 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, + 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, + 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, + 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, + 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, + 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, + 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, + 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, + 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, + 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, + 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, + 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, + 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, + 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, + 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, + 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, + 0xC0, 0x00, 0xD8, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00, 0x30, 0x7C, + 0xC0, 0x78, 0x0C, 0xF8, 0x30, 0x00, 0x00, 0xC6, 0xCC, 0x18, + 0x30, 0x66, 0xC6, 0x00, 0x38, 0x6C, 0x68, 0x36, 0xDC, 0xCC, + 0x76, 0x00, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x60, 0xC0, 0xC0, 0xC0, 0x60, 0x30, 0x00, 0xC0, 0x60, + 0x30, 0x30, 0x30, 0x60, 0xC0, 0x00, 0x00, 0x6C, 0x38, 0xFE, + 0x38, 0x6C, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0xC0, + 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x03, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC0, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x78, 0x00, 0x30, 0x70, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x00, + 0x78, 0xCC, 0x0C, 0x78, 0xC0, 0xC0, 0xFC, 0x00, 0x78, 0xCC, + 0x0C, 0x38, 0x0C, 0xCC, 0x78, 0x00, 0x1C, 0x3C, 0x6C, 0xCC, + 0xFC, 0x0C, 0x0C, 0x00, 0xFC, 0xC0, 0xF8, 0x0C, 0x0C, 0xCC, + 0x78, 0x00, 0x78, 0xCC, 0xC0, 0xF8, 0xCC, 0xCC, 0x78, 0x00, + 0xFC, 0xCC, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00, 0x78, 0xCC, + 0xCC, 0x78, 0xCC, 0xCC, 0x78, 0x00, 0x78, 0xCC, 0xCC, 0x7C, + 0x0C, 0xCC, 0x78, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, + 0xC0, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0xC0, + 0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x00, 0x00, 0x00, + 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xC0, 0x60, 0x30, 0x18, + 0x30, 0x60, 0xC0, 0x00, 0x78, 0xCC, 0x0C, 0x18, 0x30, 0x00, + 0x30, 0x00, 0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00, + 0x38, 0x7C, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0xF8, 0xCC, + 0xCC, 0xF8, 0xCC, 0xCC, 0xF8, 0x00, 0x78, 0xCC, 0xC0, 0xC0, + 0xC0, 0xCC, 0x78, 0x00, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0xF8, 0x00, 0xFC, 0xC0, 0xC0, 0xF0, 0xC0, 0xC0, 0xFC, 0x00, + 0xFC, 0xC0, 0xC0, 0xF0, 0xC0, 0xC0, 0xC0, 0x00, 0x78, 0xCC, + 0xC0, 0xDC, 0xCC, 0xCC, 0x7C, 0x00, 0xCC, 0xCC, 0xCC, 0xFC, + 0xCC, 0xCC, 0xCC, 0x00, 0xF0, 0x60, 0x60, 0x60, 0x60, 0x60, + 0xF0, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00, + 0xC6, 0xCC, 0xD8, 0xF8, 0xD8, 0xCC, 0xC6, 0x00, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xFC, 0x00, 0x82, 0xC6, 0xEE, 0xFE, + 0xD6, 0xC6, 0xC6, 0x00, 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, + 0xC6, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00, + 0xF8, 0xCC, 0xCC, 0xF8, 0xC0, 0xC0, 0xC0, 0x00, 0x78, 0xCC, + 0xCC, 0xCC, 0xCC, 0xDC, 0x78, 0x0C, 0xF8, 0xCC, 0xCC, 0xF8, + 0xD8, 0xCC, 0xCC, 0x00, 0x78, 0xCC, 0xC0, 0x78, 0x0C, 0xCC, + 0x78, 0x00, 0xFC, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x7C, 0x00, 0xC6, 0xC6, + 0x6C, 0x6C, 0x38, 0x38, 0x10, 0x00, 0xC6, 0xC6, 0xC6, 0xD6, + 0xFE, 0xEE, 0xC6, 0x00, 0xC6, 0x6C, 0x38, 0x10, 0x38, 0x6C, + 0xC6, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x30, 0x00, + 0xFC, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xFC, 0x00, 0xF0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0x00, 0xC0, 0x60, 0x30, 0x18, + 0x0C, 0x06, 0x03, 0x00, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, + 0xF0, 0x00, 0xE8, 0x4D, 0x4A, 0x48, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, + 0x7C, 0xCC, 0x7C, 0x00, 0xC0, 0xC0, 0xF8, 0xCC, 0xCC, 0xCC, + 0xF8, 0x00, 0x00, 0x00, 0x78, 0xCC, 0xC0, 0xCC, 0x78, 0x00, + 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x7C, 0x00, 0x00, 0x00, + 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00, 0x38, 0x6C, 0x60, 0xF8, + 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x7C, 0xCC, 0xCC, 0x7C, + 0x0C, 0x78, 0xC0, 0xC0, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, + 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x0C, 0x00, + 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0x78, 0xC0, 0xC0, 0xCC, 0xD8, + 0xF0, 0xD8, 0xCC, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, + 0xC0, 0x00, 0x00, 0x00, 0xCC, 0xEE, 0xD6, 0xC6, 0xC6, 0x00, + 0x00, 0x00, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x00, + 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0x00, 0x00, 0xF8, 0xCC, + 0xCC, 0xF8, 0xC0, 0xC0, 0x00, 0x00, 0x7C, 0xCC, 0xCC, 0x7C, + 0x0C, 0x0C, 0x00, 0x00, 0xF8, 0xCC, 0xC0, 0xC0, 0xC0, 0x00, + 0x00, 0x00, 0x7C, 0xC0, 0x78, 0x0C, 0x78, 0x00, 0x30, 0x30, + 0xFC, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0xCC, 0xCC, + 0xCC, 0xCC, 0x7C, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, + 0x30, 0x00, 0x00, 0x00, 0xC6, 0xD6, 0xD6, 0x6C, 0x6C, 0x00, + 0x00, 0x00, 0xCC, 0x78, 0x30, 0x78, 0xCC, 0x00, 0x00, 0x00, + 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0xE0, 0x00, 0x00, 0xFC, 0x18, + 0x30, 0x60, 0xFC, 0x00, 0x38, 0x60, 0x60, 0xC0, 0x60, 0x60, + 0x38, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0x00, + 0xE0, 0x30, 0x30, 0x18, 0x30, 0x30, 0xE0, 0x00, 0x38, 0x44, + 0xBA, 0xAA, 0xBA, 0x44, 0x38, 0x00, 0x00, 0x98, 0x30, 0x60, + 0xC8, 0x98, 0x30, 0x00, 0xCC, 0x66, 0x76, 0xBC, 0x98, 0x8C, + 0xE6, 0x00, 0xFC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFE, 0x00, + 0x78, 0x18, 0x18, 0x18, 0x38, 0x78, 0xD8, 0x00, 0xFE, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0xFE, 0x06, 0x06, 0xC6, + 0xC6, 0xC6, 0xC6, 0x00, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x00, 0x7C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, + 0xFE, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0xDC, 0x66, + 0xE6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0xF0, 0x30, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0xF8, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xF8, 0x00, + 0xC0, 0xFE, 0x06, 0x06, 0x0C, 0x18, 0x18, 0x00, 0xFE, 0x66, + 0x66, 0x66, 0x66, 0x66, 0x7E, 0x00, 0xFC, 0x76, 0x66, 0x66, + 0x66, 0x66, 0x6E, 0x00, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00, + 0xFE, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, 0xEE, 0x66, + 0x66, 0x66, 0x66, 0x6C, 0xF8, 0x00, 0xFE, 0xC6, 0xC6, 0xF6, + 0x06, 0x06, 0x06, 0x06, 0xFE, 0xC6, 0xC6, 0xFE, 0x06, 0x06, + 0xFE, 0x00, 0xFE, 0x66, 0x6C, 0x78, 0x60, 0x60, 0x60, 0x60, + 0xEE, 0x66, 0x3C, 0x18, 0x0C, 0x06, 0xFE, 0x00, 0xFE, 0x06, + 0x0E, 0xD8, 0xF0, 0xF0, 0xC0, 0xC0, 0xFC, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x00, 0xEE, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, + 0x7C, 0x00, 0xFF, 0x67, 0x67, 0x67, 0x67, 0x67, 0xE7, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x0C, 0x3E, 0x6C, + 0x3E, 0x0C, 0x00, 0x00, 0x38, 0x6C, 0x60, 0xF0, 0x60, 0x60, + 0xFC, 0x00, 0x42, 0x3C, 0x66, 0x3C, 0x42, 0x00, 0x00, 0x00, + 0xC3, 0x66, 0x3C, 0x18, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x18, + 0x18, 0x00, 0x18, 0x18, 0x18, 0x00, 0x3C, 0x60, 0x3C, 0x66, + 0x3C, 0x06, 0x3C, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3F, 0x40, 0x4E, 0x58, 0x4E, 0x40, 0x3F, 0x00, + 0x1C, 0xA4, 0xC4, 0xBC, 0x80, 0xFE, 0x00, 0x00, 0x00, 0x33, + 0x66, 0xCC, 0x66, 0x33, 0x00, 0x00, 0x3E, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x00, 0x00, 0x81, 0xB9, 0xA5, 0xB9, 0xA5, 0x81, 0x7E, 0x00, + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xCC, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0x30, + 0x30, 0x00, 0xFC, 0x00, 0xF0, 0x18, 0x30, 0x60, 0xF8, 0x00, + 0x00, 0x00, 0xF0, 0x18, 0x30, 0x18, 0xF0, 0x00, 0x00, 0x00, + 0x30, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xCC, 0xCC, 0xCC, 0xCC, 0xFE, 0xC0, 0x3E, 0x7A, 0x7A, 0x3A, + 0x0A, 0x0A, 0x0A, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, + 0x60, 0xE0, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x38, 0x44, + 0x44, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xCC, 0x66, 0x33, + 0x66, 0xCC, 0x00, 0x00, 0x40, 0xC6, 0x4C, 0x58, 0x32, 0x66, + 0xCF, 0x02, 0x40, 0xC6, 0x4C, 0x58, 0x3E, 0x62, 0xC4, 0x0E, + 0xC0, 0x23, 0x66, 0x2C, 0xD9, 0x33, 0x67, 0x01, 0x18, 0x00, + 0x18, 0x30, 0x60, 0x66, 0x3C, 0x00, 0x60, 0x30, 0x7C, 0xC6, + 0xFE, 0xC6, 0xC6, 0x00, 0x0C, 0x18, 0x7C, 0xC6, 0xFE, 0xC6, + 0xC6, 0x00, 0x38, 0xC6, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, + 0x71, 0x8E, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0x6C, 0x00, + 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0x38, 0x44, 0x7C, 0xC6, + 0xFE, 0xC6, 0xC6, 0x00, 0x1F, 0x3C, 0x3C, 0x6F, 0x7C, 0xCC, + 0xCF, 0x00, 0x1E, 0x30, 0x60, 0x60, 0x30, 0x1E, 0x0C, 0x18, + 0x60, 0x30, 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00, 0x18, 0x30, + 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00, 0x30, 0xCC, 0xFC, 0xC0, + 0xF0, 0xC0, 0xFC, 0x00, 0xCC, 0x00, 0xFC, 0xC0, 0xF0, 0xC0, + 0xFC, 0x00, 0x60, 0x30, 0x78, 0x30, 0x30, 0x30, 0x78, 0x00, + 0x18, 0x30, 0x78, 0x30, 0x30, 0x30, 0x78, 0x00, 0x30, 0xCC, + 0x78, 0x30, 0x30, 0x30, 0x78, 0x00, 0xCC, 0x00, 0x78, 0x30, + 0x30, 0x30, 0x78, 0x00, 0x78, 0x6C, 0x66, 0xF6, 0x66, 0x6C, + 0x78, 0x00, 0x71, 0xCE, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0x00, + 0x30, 0x18, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x0C, 0x18, + 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x18, 0x66, 0x3C, 0x66, + 0x66, 0x66, 0x3C, 0x00, 0x71, 0x8E, 0x3C, 0x66, 0x66, 0x66, + 0x3C, 0x00, 0xC3, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, + 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x3F, 0x66, + 0x6E, 0x7E, 0x76, 0x66, 0xFC, 0x00, 0x30, 0x18, 0x66, 0x66, + 0x66, 0x66, 0x3E, 0x00, 0x0C, 0x18, 0x66, 0x66, 0x66, 0x66, + 0x3E, 0x00, 0x18, 0x24, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00, + 0x66, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x06, 0x08, + 0xC3, 0x66, 0x3C, 0x18, 0x18, 0x00, 0x60, 0x60, 0x7E, 0x63, + 0x7E, 0x60, 0x60, 0x00, 0x3C, 0x66, 0x66, 0x6C, 0x66, 0x66, + 0x6C, 0x60, 0x30, 0x18, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, + 0x0C, 0x18, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x18, 0x66, + 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x71, 0x8E, 0x3C, 0x06, + 0x3E, 0x66, 0x3E, 0x00, 0x66, 0x00, 0x3C, 0x06, 0x3E, 0x66, + 0x3E, 0x00, 0x18, 0x24, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, + 0x00, 0x00, 0x7E, 0x1B, 0x7F, 0xD8, 0x77, 0x00, 0x00, 0x00, + 0x3C, 0x60, 0x60, 0x60, 0x3C, 0x18, 0x30, 0x18, 0x3C, 0x66, + 0x7E, 0x60, 0x3C, 0x00, 0x0C, 0x18, 0x3C, 0x66, 0x7E, 0x60, + 0x3C, 0x00, 0x18, 0x66, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, + 0x66, 0x00, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, 0x30, 0x18, + 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x18, + 0x18, 0x18, 0x18, 0x00, 0x18, 0x66, 0x00, 0x18, 0x18, 0x18, + 0x18, 0x00, 0x00, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, + 0x60, 0xFC, 0x18, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x71, 0x8E, + 0x00, 0x7C, 0x66, 0x66, 0x66, 0x00, 0x30, 0x18, 0x00, 0x3C, + 0x66, 0x66, 0x3C, 0x00, 0x0C, 0x18, 0x00, 0x3C, 0x66, 0x66, + 0x3C, 0x00, 0x18, 0x66, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, + 0x71, 0x8E, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x66, + 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x18, 0x00, 0x7E, + 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x7C, 0xCE, 0xD6, 0xE6, + 0x7C, 0x80, 0x30, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, + 0x0C, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x18, 0x66, + 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x00, 0x66, 0x00, 0x66, + 0x66, 0x66, 0x3E, 0x00, 0x0C, 0x18, 0x00, 0x66, 0x66, 0x3C, + 0x18, 0x30, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, + 0x00, 0x66, 0x00, 0x66, 0x66, 0x3C, 0x18, 0x30, 0xFF }; const uint8 Display::_palJoeClothes[] = { - 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x87, 0x87, 0x87, + 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x87, 0x87, 0x87, 0xB0, 0xB0, 0xB0, 0xDA, 0xDA, 0xDA, 0x43, 0x34, 0x20, - 0x77, 0x33, 0x1F, 0xA3, 0x43, 0x27, 0x80, 0x45, 0x45, - 0x9E, 0x5D, 0x5B, 0xB9, 0x78, 0x75, 0xDF, 0x97, 0x91, + 0x77, 0x33, 0x1F, 0xA3, 0x43, 0x27, 0x80, 0x45, 0x45, + 0x9E, 0x5D, 0x5B, 0xB9, 0x78, 0x75, 0xDF, 0x97, 0x91, 0x17, 0x27, 0x63, 0x1F, 0x3F, 0x83, 0x27, 0x5B, 0xA7, 0x98, 0xD4, 0xFF }; const uint8 Display::_palJoeDress[] = { 0x00, 0x00, 0x00, 0x50, 0x50, 0x50, 0x70, 0x70, 0x70, - 0x90, 0x90, 0x90, 0xC6, 0xC6, 0xC6, 0xFF, 0xFF, 0xFF, - 0x30, 0x30, 0x90, 0x47, 0x49, 0xD0, 0x40, 0x24, 0x00, - 0x79, 0x34, 0x0B, 0xB2, 0x3D, 0x22, 0xED, 0x42, 0x42, - 0x80, 0x45, 0x45, 0xA3, 0x5F, 0x5F, 0xC8, 0x7C, 0x7C, + 0x90, 0x90, 0x90, 0xC6, 0xC6, 0xC6, 0xFF, 0xFF, 0xFF, + 0x30, 0x30, 0x90, 0x47, 0x49, 0xD0, 0x40, 0x24, 0x00, + 0x79, 0x34, 0x0B, 0xB2, 0x3D, 0x22, 0xED, 0x42, 0x42, + 0x80, 0x45, 0x45, 0xA3, 0x5F, 0x5F, 0xC8, 0x7C, 0x7C, 0xEC, 0x9C, 0x9C }; #endif diff --git a/queen/display.h b/queen/display.h index c7740a8bf7..ec967dfb40 100644 --- a/queen/display.h +++ b/queen/display.h @@ -40,55 +40,55 @@ public: //! initialise dynalum for the specified room void dynalumInit(const char *roomName, uint16 roomNum); - + //! update dynalum for the current room void dynalumUpdate(int16 x, int16 y); //! convert palette from RGB to RGBA (used before uploading to the backend) void palConvert(uint8 *outPal, const uint8 *inPal, int start, int end); - + //! update the palette void palSet(const uint8 *pal, int start, int end, bool updateScreen = false); - + //! setup palette for Joe's dress void palSetJoeDress(); - + //! setup palette for Joe's normal clothes void palSetJoeNormal(); - + //! setup palette for panel and inventory objects void palSetPanel(); - + //! fade the current palette in void palFadeIn(uint16 roomNum, bool dynalum = false, int16 dynaX = 0, int16 dynaY = 0); - + //! fade the current palette out void palFadeOut(uint16 roomNum); - + //! grey the panel area (used when panel is disabled) void palGreyPanel(); - + //! scroll some palette colors void palScroll(int start, int end); - + //! custom palette effect for the specified room void palCustomColors(uint16 roomNum); - + //! custom palette scroll for the specified room void palCustomScroll(uint16 roomNum); - + //! process a 'palette flash' effect void palCustomFlash(); - + void palCustomLightsOff(uint16 roomNum); void palCustomLightsOn(uint16 roomNum); - + //! mark all palette entries as dirty void palSetAllDirty() { _pal.dirtyMin = 0; _pal.dirtyMax = 255; } //! returns the number of colors used by the room int getNumColorsForRoom(uint16 room) const; - + //! returns true if we shouldn't fade the palette in the specified room bool isPalFadingDisabled(uint16 room) const; @@ -120,13 +120,13 @@ public: //! mark the specified block as dirty void setDirtyBlock(uint16 x, uint16 y, uint16 w, uint16 h); - + //! force a full refresh (bypassing the dirtyblocks rendering), on next screen update void forceFullRefresh() { _fullRefresh = 2; } //! change mouse cursor bitmap void setMouseCursor(uint8 *buf, uint16 w, uint16 h); - + //! show/hide mouse cursor void showMouseCursor(bool show); @@ -135,29 +135,29 @@ public: //! add the specified text to the texts list void setText(uint16 x, uint16 y, const char *text, bool outlined = true); - + //! add the specified text to the texts list void setTextCentered(uint16 y, const char *text, bool outlined = true); - + //! draw the text lists void drawTexts(); - + //! remove entries from the texts list void clearTexts(uint16 y1, uint16 y2); - + //! change the current text color void textCurrentColor(uint8 color) { _curTextColor = color; } - + //! change the text color for the specified texts list entry void textColor(uint16 y, uint8 color) { _texts[y].color = color; } - + int textCenterX(const char *text) const; uint16 textWidth(const char *text) const; uint16 textWidth(const char *text, uint16 len) const; void drawChar(uint16 x, uint16 y, uint8 color, const uint8 *chr); void drawText(uint16 x, uint16 y, uint8 color, const char *text, bool outlined = true); void drawBox(int16 x1, int16 y1, int16 x2, int16 y2, uint8 col); - + void shake(bool reset); void blankScreen(); @@ -221,7 +221,7 @@ private: //! texts list TextSlot _texts[GAME_SCREEN_HEIGHT]; - + //! current text color to use for display uint8 _curTextColor; diff --git a/queen/graphics.cpp b/queen/graphics.cpp index 0bd3825f2c..32b3326992 100644 --- a/queen/graphics.cpp +++ b/queen/graphics.cpp @@ -195,7 +195,7 @@ static int compareBobDrawOrder(const void *a, const void *b) { const BobSlot *bob2 = *(const BobSlot * const *)b; int d = bob1->y - bob2->y; // As the qsort() function may reorder "equal" elements, - // we use the bob slot number when needed. This is required + // we use the bob slot number when needed. This is required // during the introduction, to hide a crate behind the clock. if (d == 0) { d = bob1 - bob2; @@ -466,7 +466,7 @@ void Graphics::setBobText(const BobSlot *pbs, const char *text, int textX, int t } } - // Find width of widest line + // Find width of widest line int maxLineWidth = 0; @@ -582,7 +582,7 @@ void Graphics::setupNewRoom(const char *room, uint16 roomNum, int16 *furniture, clearBobs(); // load/setup objects associated to this room - char filename[20]; + char filename[20]; sprintf(filename, "%s.BBK", room); _vm->bankMan()->load(filename, 15); @@ -824,7 +824,7 @@ uint16 Graphics::refreshObject(uint16 obj) { if (image > 5000) { image -= 5000; } - + GraphicData *pgd = _vm->logic()->graphicData(image); bool rebound = false; int16 lastFrame = pgd->lastFrame; @@ -925,7 +925,7 @@ void Graphics::setupRoomFurniture(int16 *furniture, uint16 furnitureCount) { void Graphics::setupRoomObjects() { uint16 i; - // furniture frames are reserved in ::setupRoomFurniture(), we append objects + // furniture frames are reserved in ::setupRoomFurniture(), we append objects // frames after the furniture ones. uint16 curImage = FRAMES_JOE + _numFurnitureStatic + _numFurnitureAnimatedLen; uint16 firstRoomObj = _vm->logic()->currentRoomData() + 1; @@ -942,7 +942,7 @@ void Graphics::setupRoomObjects() { // static/animated Bobs for (i = firstRoomObj; i <= lastRoomObj; ++i) { ObjectData *pod = _vm->logic()->objectData(i); - // setup blanks bobs for turned off objects (in case + // setup blanks bobs for turned off objects (in case // you turn them on again) if (pod->image == -1) { // static OFF Bob @@ -1059,7 +1059,7 @@ uint16 Graphics::setupPerson(uint16 noun, uint16 curImage) { debug(6, "Graphics::setupPerson(%d, %d) - bob = %d name = %s", noun, curImage, pad->bobNum, p.name); - if (p.anim != NULL) { + if (p.anim != NULL) { curImage = setupPersonAnim(pad, p.anim, curImage); } else { erasePersonAnim(pad->bobNum); @@ -1093,7 +1093,7 @@ BamScene::BamScene(QueenEngine *vm) void BamScene::playSfx() { // FIXME - we don't play all sfx here. This is only necessary for - // the fight bam, where the number of 'sfx bam frames' is too much + // the fight bam, where the number of 'sfx bam frames' is too much // important / too much closer. The original game does not have // this problem since their playSfx() function returns immediately // if a sound is already being played. @@ -1170,7 +1170,7 @@ void BamScene::updateFightAnimation() { _obj2->curPos(bdb->obj2.x, bdb->obj2.y); _obj2->frameNum = 40 + ABS(bdb->obj2.frame); _obj2->xflip = (bdb->obj2.frame < 0); - + // FX _objfx->curPos(bdb->fx.x, bdb->fx.y); _objfx->frameNum = 40 + ABS(bdb->fx.frame); diff --git a/queen/graphics.h b/queen/graphics.h index 5c9e73cf0b..f21b66372b 100644 --- a/queen/graphics.h +++ b/queen/graphics.h @@ -79,7 +79,7 @@ struct BobSlot { void animString(const AnimFrame *animBuf); void animNormal(uint16 firstFrame, uint16 lastFrame, uint16 speed, bool rebound, bool xflip); - + void scaleWalkSpeed(uint16 ms); void clear(); @@ -97,40 +97,40 @@ public: //! unpacks control frames (ie. arrows) void unpackControlBank(); - + //! setup dialog arrows void setupArrows(); - + //! setup mouse cursor void setupMouseCursor(); //! draw a bob void drawBob(const BobSlot *bs, const BobFrame *bf, const Box *box, int16 x, int16 y); - + //! draw an inventory item void drawInventoryItem(uint32 frameNum, uint16 x, uint16 y); - + //! draw a bob directly on the backdrop bitmap void pasteBob(uint16 objNum, uint16 image); - + //! resize a bobframe void shrinkFrame(const BobFrame *bf, uint16 percentage); - + //! animate/move bobs and sort them void sortBobs(); - + //! draw all the sorted bobs void drawBobs(); - + //! clear all setup bobs void clearBobs(); - + //! stop all animating/movings bobs void stopBobs(); - + //! returns a reference to the specified bob BobSlot *bob(int index); - + //! display a text 'near' the specified bob void setBobText(const BobSlot *bob, const char *text, int textX, int textY, int color, int flags); @@ -195,7 +195,7 @@ private: //! cutaway objects/persons animations AnimFrame _cutAnim[21][30]; - + uint16 _personFrames[4]; //! number of animated furniture in current room @@ -223,7 +223,7 @@ class BamScene { public: BamScene(QueenEngine *vm); - + void playSfx(); void prepareAnimation(); void updateCarAnimation(); diff --git a/queen/grid.cpp b/queen/grid.cpp index 6036928ca3..f5b2dd6859 100644 --- a/queen/grid.cpp +++ b/queen/grid.cpp @@ -28,7 +28,7 @@ namespace Queen { -Grid::Grid(QueenEngine *vm) +Grid::Grid(QueenEngine *vm) : _vm(vm) { memset(_zones, 0, sizeof(_zones)); } @@ -170,7 +170,7 @@ void Grid::drawZones() { } } -const Box *Grid::zone(GridScreen screen, uint16 index) const { +const Box *Grid::zone(GridScreen screen, uint16 index) const { const ZoneSlot *zs = &_zones[screen][index]; assert(zs->valid); return &zs->box; diff --git a/queen/grid.h b/queen/grid.h index 28579e3bab..2e5859f347 100644 --- a/queen/grid.h +++ b/queen/grid.h @@ -46,51 +46,51 @@ public: //! defines a new zone void setZone(GridScreen screen, uint16 zoneNum, uint16 x1, uint16 y1, uint16 x2, uint16 y2); - + //! defines a new zone void setZone(GridScreen screen, uint16 zoneNum, const Box &box); - + //! find the zone number containing the specified point uint16 findZoneForPos(GridScreen screen, uint16 x, uint16 y) const; - + //! find the area number containing the specified point uint16 findAreaForPos(GridScreen screen, uint16 x, uint16 y) const; - + //! clear the zones for current room void clear(GridScreen screen); - + //! setup objects zones for the specified room void setupNewRoom(uint16 room, uint16 firstRoomObjNum); - + //! setup panel zones void setupPanel(); - + //! draw the zones for current room (debug only) void drawZones(); - + //! retuns a reference to the specified zone const Box *zone(GridScreen screen, uint16 index) const; //! get the verb for the specified cursor position Verb findVerbUnderCursor(int16 cursorx, int16 cursory) const; - + //! get the object for the specified cursor position uint16 findObjectUnderCursor(int16 cursorx, int16 cursory) const; - + //! get the object for the specified zone number uint16 findObjectNumber(uint16 zoneNum) const; - + //! get scale for the specified position uint16 findScale(uint16 x, uint16 y) const; //! returns a reference to the specfied room area Area *area(int room, int num) const { return &_area[room][num]; } - + //! returns the number of areas in this room uint16 areaMax(int room) const { return _areaMax[room]; } - + //! returns the number of objects in this room - uint16 objMax(int room) const { return _objMax[room]; } + uint16 objMax(int room) const { return _objMax[room]; } void saveState(byte *&ptr); void loadState(uint32 ver, byte *&ptr); @@ -110,7 +110,7 @@ private: //! current room zones ZoneSlot _zones[GS_COUNT][MAX_ZONES_NUMBER]; - + //! number of objects for each room int16 *_objMax; diff --git a/queen/input.cpp b/queen/input.cpp index 699fbaa080..5012a50de7 100644 --- a/queen/input.cpp +++ b/queen/input.cpp @@ -47,8 +47,8 @@ const Verb Input::_verbKeys[8] = { VERB_USE }; -Input::Input(Language language, OSystem *system) : - _system(system), _fastMode(false), _keyVerb(VERB_NONE), +Input::Input(Language language, OSystem *system) : + _system(system), _fastMode(false), _keyVerb(VERB_NONE), _cutawayRunning(false), _canQuit(false), _cutawayQuit(false), _dialogueRunning(false), _talkQuit(false), _quickSave(false), _quickLoad(false), _debugger(false), _inKey(0), _mouse_x(0), @@ -83,7 +83,7 @@ void Input::delay() { delay(_fastMode ? DELAY_SHORT : DELAY_NORMAL); } -void Input::delay(uint amount) { +void Input::delay(uint amount) { OSystem::Event event; @@ -109,7 +109,7 @@ void Input::delay(uint amount) { _inKey = event.kbd.keycode; } break; - + case OSystem::EVENT_MOUSEMOVE: _mouse_x = event.mouse.x; _mouse_y = event.mouse.y; @@ -135,7 +135,7 @@ void Input::delay(uint amount) { break; } } - + #ifndef __PALM_OS__ if (amount == 0) break; @@ -201,7 +201,7 @@ int Input::checkKeys() { break; case KEY_F11: // quicksave _quickSave = true; - break; + break; case KEY_F12: // quickload _quickLoad = true; break; @@ -214,7 +214,7 @@ int Input::checkKeys() { } break; } - + int inKey = _inKey; _inKey = 0; // reset return inKey; diff --git a/queen/input.h b/queen/input.h index 8cad2e6ba4..0d074af481 100644 --- a/queen/input.h +++ b/queen/input.h @@ -97,7 +97,7 @@ private: KEY_SPACE = ' ', KEY_COMMA = ',', KEY_DOT = '.', - + KEY_DIGIT_1 = '1', KEY_DIGIT_2 = '2', KEY_DIGIT_3 = '3', @@ -106,7 +106,7 @@ private: KEY_ESCAPE = 27, KEY_RETURN = 13, KEY_BACKSPACE = 8, - + KEY_F1 = 282, KEY_F11 = KEY_F1 + 10, KEY_F5 = KEY_F1 + 4, @@ -116,7 +116,7 @@ private: enum { LANGUAGE_COUNT = 6 }; - + //! used to get keyboard and mouse events OSystem *_system; @@ -138,7 +138,7 @@ private: //! set if a dialogue is running bool _dialogueRunning; - //! moved Talk::_quit here + //! moved Talk::_quit here bool _talkQuit; //! set if quicksave requested @@ -167,7 +167,7 @@ private: //! command keys for all languages static const char *_commandKeys[LANGUAGE_COUNT]; - + //! verbs matching the command keys static const Verb _verbKeys[8]; }; diff --git a/queen/journal.cpp b/queen/journal.cpp index 98b73f6217..3fc1e63860 100644 --- a/queen/journal.cpp +++ b/queen/journal.cpp @@ -34,7 +34,7 @@ #include "queen/sound.h" namespace Queen { - + Journal::Journal(QueenEngine *vm) : _vm(vm) { _currentSavePage = 0; @@ -45,14 +45,14 @@ void Journal::use() { BobSlot *joe = _vm->graphics()->bob(0); _prevJoeX = joe->x; _prevJoeY = joe->y; - + _panelMode = PM_NORMAL; _system = &OSystem::instance(); _panelTextCount = 0; memset(_panelTextY, 0, sizeof(_panelTextY)); memset(&_textField, 0, sizeof(_textField)); - + memset(_saveDescriptions, 0, sizeof(_saveDescriptions)); _vm->findGameStateDescriptions(_saveDescriptions); @@ -100,7 +100,7 @@ void Journal::use() { void Journal::continueGame() { _vm->display()->fullscreen(false); _vm->display()->forceFullRefresh(); - + _vm->logic()->joePos(_prevJoeX, _prevJoeY); _vm->logic()->joeCutFacing(_vm->logic()->joeFacing()); @@ -153,7 +153,7 @@ void Journal::redraw() { void Journal::update() { _vm->graphics()->sortBobs(); _vm->display()->prepareUpdate(); - _vm->graphics()->drawBobs(); + _vm->graphics()->drawBobs(); if (_textField.enabled) { int16 x = _textField.x + _textField.posCursor; int16 y = _textField.y + _currentSaveSlot * _textField.h + 8; @@ -215,7 +215,7 @@ void Journal::exitInfoPanelMode() { _vm->display()->clearTexts(0, GAME_SCREEN_HEIGHT - 1); hideBob(BOB_INFO_BOX); redraw(); - _panelMode = PM_NORMAL; + _panelMode = PM_NORMAL; } void Journal::handleKeyDown(uint16 ascii, int keycode) { @@ -287,7 +287,7 @@ void Journal::handleMouseDown(int x, int y) { _quitMode = QM_CONTINUE; _vm->quitGame(); break; - } + } } else if (zoneNum == ZN_NO) { exitYesNoPanelMode(); } @@ -374,7 +374,7 @@ void Journal::handleMouseDown(int x, int y) { } void Journal::drawPanelText(int y, const char *text) { - debug(7, "Journal::drawPanelText(%d, '%s')", y, text); + debug(7, "Journal::drawPanelText(%d, '%s')", y, text); char s[80]; strcpy(s, text); char *p = strchr(s, ' '); @@ -407,7 +407,7 @@ void Journal::drawSlideBar(int value, int maxValue, int bobNum, int16 y, int fra showBob(bobNum, 136 + value * (266 - 136) / maxValue, y, frameNum); } -void Journal::drawPanel(const int *frames, const int *titles, int n) { +void Journal::drawPanel(const int *frames, const int *titles, int n) { for (int i = 0; i < _panelTextCount; ++i) { _vm->display()->clearTexts(_panelTextY[i], _panelTextY[i]); } @@ -446,7 +446,7 @@ void Journal::drawConfigPanel() { drawSlideBar(_vm->talkSpeed(), QueenEngine::MAX_TEXT_SPEED, BOB_TALK_SPEED, 164, FRAME_BLUE_PIN); drawSlideBar(_vm->music()->volume(), QueenEngine::MAX_MUSIC_VOLUME, BOB_MUSIC_VOLUME, 177, FRAME_GREEN_PIN); - + drawCheckBox(_vm->sound()->sfxOn(), BOB_SFX_TOGGLE, 221, 155, FRAME_CHECK_BOX); drawCheckBox(_vm->sound()->speechOn(), BOB_SPEECH_TOGGLE, 158, 155, FRAME_CHECK_BOX); drawCheckBox(_vm->subtitles(), BOB_TEXT_TOGGLE, 125, 167, FRAME_CHECK_BOX); @@ -527,8 +527,8 @@ void Journal::updateTextField(uint16 ascii, int keycode) { } break; default: - if (isprint((char)ascii) && - _textField.textCharsCount < (sizeof(_textField.text) - 1) && + if (isprint((char)ascii) && + _textField.textCharsCount < (sizeof(_textField.text) - 1) && _vm->display()->textWidth(_textField.text) < _textField.w) { _textField.text[_textField.textCharsCount] = (char)ascii; ++_textField.textCharsCount; diff --git a/queen/journal.h b/queen/journal.h index 0cfdf39db7..7bf1922f0e 100644 --- a/queen/journal.h +++ b/queen/journal.h @@ -35,7 +35,7 @@ public: Journal(QueenEngine *vm); void use(); - + enum { JOURNAL_BANK = 8, JOURNAL_FRAMES = 40 @@ -124,7 +124,7 @@ public: PM_INFO_BOX, PM_YES_NO }; - + enum QuitMode { QM_LOOP, QM_RESTORE, @@ -195,10 +195,10 @@ private: TextField _textField; uint16 _prevZoneNum; char _saveDescriptions[100][32]; - + OSystem *_system; QueenEngine *_vm; - + static const Zone _zones[MAX_ZONES]; }; diff --git a/queen/logic.cpp b/queen/logic.cpp index 1e288a5858..ae3632dd04 100644 --- a/queen/logic.cpp +++ b/queen/logic.cpp @@ -45,20 +45,20 @@ namespace Queen { static Common::String trim(const Common::String &s) { const char *p; - + p = s.c_str(); while (*p == ' ') ++p; int start = p - s.c_str(); - + p = s.c_str() + s.size() - 1; while (p != s.c_str() && *p == ' ') --p; int end = p - s.c_str(); - + return Common::String(s.c_str() + start, end - start + 1); } Logic::Logic(QueenEngine *vm) - : _credits(NULL), _objectData(NULL), _roomData(NULL), _sfxName(NULL), + : _credits(NULL), _objectData(NULL), _roomData(NULL), _sfxName(NULL), _itemData(NULL), _graphicData(NULL), _walkOffData(NULL), _objectDescription(NULL), _furnitureData(NULL), _actorData(NULL), _graphicAnim(NULL), _vm(vm) { _joe.x = _joe.y = 0; @@ -87,7 +87,7 @@ Logic::~Logic() { delete[] _graphicAnim; } -void Logic::initialise() { +void Logic::initialise() { int16 i; uint8 *jas = _vm->resource()->loadFile("QUEEN.JAS", 20); @@ -118,7 +118,7 @@ void Logic::initialise() { _sfxName[0] = 0; for (i = 1; i <= _numRooms; i++) { _sfxName[i] = READ_BE_UINT16(ptr); ptr += 2; - } + } } _numItems = READ_BE_UINT16(ptr); ptr += 2; @@ -198,7 +198,7 @@ void Logic::initialise() { uint32 size; char *buf = (char *)_vm->resource()->loadFile("QUEEN2.JAS", 0, &size); LineReader queen2jas(buf, size); - + _objDescription.push_back(""); for (i = 1; i <= _numDescriptions; i++) { _objDescription.push_back(queen2jas.nextLine()); @@ -208,7 +208,7 @@ void Logic::initialise() { if (_vm->resource()->getLanguage() == GERMAN) { _objDescription[296] = "Es bringt nicht viel, das festzubinden."; } - + _objName.push_back(""); for (i = 1; i <= _numNames; i++) { _objName.push_back(queen2jas.nextLine()); @@ -228,7 +228,7 @@ void Logic::initialise() { for (i = 1; i <= JOE_RESPONSE_MAX; i++) { _joeResponse.push_back(queen2jas.nextLine()); } - + // FIXME - the spanish version adds some space characters (0x20) at the // beginning and the end of the journal button captions. As we don't need // that 'trick' to center horizontally the texts, we simply trim them. @@ -247,7 +247,7 @@ void Logic::initialise() { for (i = 1; i <= _numAName; i++) { _aName.push_back(queen2jas.nextLine()); } - + _aFile.push_back(""); for (i = 1; i <= _numAFile; i++) { _aFile.push_back(queen2jas.nextLine()); @@ -272,7 +272,7 @@ ObjectData* Logic::objectData(int index) const { return &_objectData[index]; } -uint16 Logic::findBob(uint16 obj) const { +uint16 Logic::findBob(uint16 obj) const { assert(obj <= _numObjects); uint16 room = _objectData[obj].room; @@ -317,7 +317,7 @@ uint16 Logic::findBob(uint16 obj) const { } assert (img <= _numGraphics); - + if (_graphicData[img].lastFrame != 0) { ++idxAnimated; } else { @@ -450,7 +450,7 @@ void Logic::gameState(int index, int16 newValue) { _gameState[index] = newValue; } -const char *Logic::roomName(uint16 roomNum) const { +const char *Logic::roomName(uint16 roomNum) const { assert(roomNum >= 1 && roomNum <= _numRooms); return _roomName[roomNum].c_str(); } @@ -469,7 +469,7 @@ const char *Logic::joeResponse(int i) const { assert(i >= 1 && i <= JOE_RESPONSE_MAX); return _joeResponse[i].c_str(); } - + const char *Logic::verbName(Verb v) const { assert(v >= 0 && v <= 12); return _verbName[v].c_str(); @@ -591,11 +591,11 @@ bool Logic::initPerson(uint16 noun, const char *actorName, bool loadBank, Person } if (loadBank && pad->file != 0) { _vm->bankMan()->load(_aFile[pad->file].c_str(), pad->bankNum); - // if there is no valid actor file (ie pad->file is 0), the person + // if there is no valid actor file (ie pad->file is 0), the person // data is already loaded as it is included in objects room bank (.bbk) } pp->bobFrame = 31 + pp->actor->bobNum; - } + } return pad != NULL; } @@ -639,7 +639,7 @@ void Logic::setupJoeInRoom(bool autoPosition, uint16 scale) { joePos(0, 0); } else { const ObjectData *pod = objectData(_entryObj); - // find the walk off point for the entry object and make + // find the walk off point for the entry object and make // Joe walking to that point const WalkOffData *pwo = walkOffPointForObject(_entryObj); if (pwo != NULL) { @@ -731,7 +731,7 @@ uint16 Logic::joeFace() { _vm->update(); } frame = 37; - } else if ((joeFacing() == DIR_LEFT && joePrevFacing() == DIR_RIGHT) + } else if ((joeFacing() == DIR_LEFT && joePrevFacing() == DIR_RIGHT) || (joeFacing() == DIR_RIGHT && joePrevFacing() == DIR_LEFT)) { pbs->frameNum = 36; _vm->update(); @@ -761,7 +761,7 @@ uint16 Logic::joeFace() { void Logic::joeGrab(int16 grabState) { uint16 frame = 0; BobSlot *bobJoe = _vm->graphics()->bob(0); - + switch (grabState) { case STATE_GRAB_NONE: break; @@ -919,14 +919,14 @@ void Logic::inventoryRefresh() { for (int i = 0; i < 4; ++i) { uint16 itemNum = _inventoryItem[i]; if (itemNum != 0) { - // 1st object in inventory uses frame 9, + // 1st object in inventory uses frame 9, // whereas 2nd, 3rd and 4th uses frame 8 uint16 dstFrame = (itemNum != 0) ? 8 : 9; // unpack frame for object and draw it _vm->bankMan()->unpack(_itemData[itemNum].frame, dstFrame, 14); _vm->graphics()->drawInventoryItem(dstFrame, x, 14); } else { - // no object, clear the panel + // no object, clear the panel _vm->graphics()->drawInventoryItem(0, x, 14); } x += 35; @@ -974,7 +974,7 @@ uint16 Logic::numItemsInventory() const { } void Logic::inventoryInsertItem(uint16 itemNum, bool refresh) { - int16 item = _inventoryItem[0] = (int16)itemNum; + int16 item = _inventoryItem[0] = (int16)itemNum; _itemData[itemNum].name = ABS(_itemData[itemNum].name); //set visible for (int i = 1; i < 4; i++) { item = nextInventoryItem(item); @@ -1010,10 +1010,10 @@ void Logic::inventoryScroll(uint16 count, bool up) { } else { for (int i = 0; i < 3; i++) _inventoryItem[i] = _inventoryItem[i + 1]; - _inventoryItem[3] = nextInventoryItem(_inventoryItem[3]); + _inventoryItem[3] = nextInventoryItem(_inventoryItem[3]); } } - + inventoryRefresh(); } @@ -1031,12 +1031,12 @@ void Logic::removeHotelItemsFromInventory() { } void Logic::objectCopy(int dummyObjectIndex, int realObjectIndex) { - // copy data from dummy object to real object, if COPY_FROM object + // copy data from dummy object to real object, if COPY_FROM object // images are greater than COPY_TO Object images then swap the objects around. ObjectData *dummyObject = objectData(dummyObjectIndex); ObjectData *realObject = objectData(realObjectIndex); - + int fromState = (dummyObject->name < 0) ? -1 : 0; int frameCountReal = 1; @@ -1049,7 +1049,7 @@ void Logic::objectCopy(int dummyObjectIndex, int realObjectIndex) { GraphicData *data = graphicData(graphic); - if (data->lastFrame > 0) + if (data->lastFrame > 0) frameCountReal = data->lastFrame - data->firstFrame + 1; graphic = dummyObject->image; @@ -1059,7 +1059,7 @@ void Logic::objectCopy(int dummyObjectIndex, int realObjectIndex) { data = graphicData(graphic); - if (data->lastFrame > 0) + if (data->lastFrame > 0) frameCountDummy = data->lastFrame - data->firstFrame + 1; } } @@ -1159,7 +1159,7 @@ void Logic::handleSpecialArea(Direction facing, uint16 areaNum, uint16 walkDataN break; case ROOM_HOTEL_LOBBY: if (_gameState[VAR_ESCAPE_FROM_HOTEL_COUNT] == 0) { - playCutaway("c73a.CUT"); + playCutaway("c73a.CUT"); _gameState[VAR_ESCAPE_FROM_HOTEL_COUNT] = 1; joeUseUnderwear(); joeFace(); @@ -1192,7 +1192,7 @@ void Logic::handleSpecialArea(Direction facing, uint16 areaNum, uint16 walkDataN break; } - while (strlen(nextCut) > 4 && + while (strlen(nextCut) > 4 && scumm_stricmp(nextCut + strlen(nextCut) - 4, ".cut") == 0) { playCutaway(nextCut, nextCut); } @@ -1261,15 +1261,15 @@ void Logic::handlePinnacleRoom() { // piton -> embark : 0x218 (obj1=0x2c, song=7) // piton -> jungle : 0x20B (obj1=0x2b, song=3) // piton -> amazon : 0x21A (obj1=0x30, song=3) - // + // // Because none of these update objects/areas/gamestate, the EXECUTE_ACTION() - // call, as the original does, is useless. All we have to do is the playsong - // call (all songs have the PLAY_BEFORE type). This way we could get rid of + // call, as the original does, is useless. All we have to do is the playsong + // call (all songs have the PLAY_BEFORE type). This way we could get rid of // the hack described in execute.c l.334-339. - struct { + struct { uint16 obj; int16 song; - } cmds[] = { + } cmds[] = { { 0x2A, 3 }, { 0x29, 16 }, { 0x2F, 6 }, @@ -1315,17 +1315,17 @@ void Logic::saveState(byte *&ptr) { for (i = 1; i <= _numObjects; i++) _objectData[i].writeToBE(ptr); - + for (i = 1; i <= _numItems; i++) _itemData[i].writeToBE(ptr); - + for (i = 0; i < GAME_STATE_COUNT; i++) { WRITE_BE_UINT16(ptr, _gameState[i]); ptr += 2; } - + for (i = 0; i < TALK_SELECTED_COUNT; i++) _talkSelected[i].writeToBE(ptr); - + for (i = 1; i <= _numWalkOffs; i++) _walkOffData[i].writeToBE(ptr); @@ -1333,7 +1333,7 @@ void Logic::saveState(byte *&ptr) { // V1 WRITE_BE_UINT16(ptr, _puzzleAttemptCount); ptr += 2; - for (i = 1; i <= _numObjDesc; i++) + for (i = 1; i <= _numObjDesc; i++) _objectDescription[i].writeToBE(ptr); } @@ -1360,7 +1360,7 @@ void Logic::loadState(uint32 ver, byte *&ptr) { for (i = 0; i < TALK_SELECTED_COUNT; i++) _talkSelected[i].readFromBE(ptr); - + for (i = 1; i <= _numWalkOffs; i++) _walkOffData[i].readFromBE(ptr); @@ -1369,7 +1369,7 @@ void Logic::loadState(uint32 ver, byte *&ptr) { if (ver >= 1) { _puzzleAttemptCount = READ_BE_UINT16(ptr); ptr += 2; - for (i = 1; i <= _numObjDesc; i++) + for (i = 1; i <= _numObjDesc; i++) _objectDescription[i].readFromBE(ptr); } } @@ -1378,7 +1378,7 @@ void Logic::setupRestoredGame() { _vm->sound()->playLastSong(); switch (gameState(VAR_DRESSING_MODE)) { - case 0: + case 0: _vm->display()->palSetJoeNormal(); loadJoeBanks("Joe_A.BBK", "Joe_B.BBK"); break; @@ -1409,7 +1409,7 @@ void Logic::setupRestoredGame() { pbs->frameNum = 35; _vm->bankMan()->unpack(1, 31, 7); break; - } + } _oldRoom = 0; _newRoom = _currentRoom; @@ -1448,7 +1448,7 @@ void Logic::sceneStop() { } void Logic::changeRoom() { - if (!preChangeRoom()) + if (!preChangeRoom()) displayRoom(currentRoom(), RDM_FADE_JOE, 100, 1, false); _vm->display()->showMouseCursor(true); } @@ -1496,7 +1496,7 @@ void Logic::asmStartFightAnimation() { gameState(148, 1); } -void Logic::asmWaitForFrankPosition() { +void Logic::asmWaitForFrankPosition() { _vm->bam()->_flag = BamScene::F_REQ_STOP; while (_vm->bam()->_flag != BamScene::F_STOP) { _vm->update(); @@ -1526,7 +1526,7 @@ void Logic::asmMakeFrankGrowing() { gameState(157, 1); // No more Ironstein } -void Logic::asmMakeRobotGrowing() { +void Logic::asmMakeRobotGrowing() { _vm->bankMan()->unpack(1, 38, 15); BobSlot *bobRobot = _vm->graphics()->bob(5); bobRobot->frameNum = 38; @@ -1540,7 +1540,7 @@ void Logic::asmMakeRobotGrowing() { for (i = 0; i <= 20; ++i) { _vm->update(); } - + objectData(524)->name = -ABS(objectData(524)->name); // Azura object off objectData(526)->name = -ABS(objectData(526)->name); // Frank object off } @@ -1713,7 +1713,7 @@ void Logic::asmSmooch() { void Logic::asmMakeLightningHitPlane() { _vm->graphics()->putCameraOnBob(-1); short iy = 0, x, ydir = -1, j, k; - + BobSlot *planeBob = _vm->graphics()->bob(5); BobSlot *lightningBob = _vm->graphics()->bob(20); @@ -1760,7 +1760,7 @@ void Logic::asmMakeLightningHitPlane() { fireBob->animating = true; fireBob->x = planeBob->x; fireBob->y = planeBob->y + 10; - + _vm->bankMan()->unpack(19, fireBob->frameNum, 15); _vm->update(); @@ -1781,7 +1781,7 @@ void Logic::asmMakeLightningHitPlane() { if (j == 4) j = 1; } - + _vm->update(); } @@ -1875,8 +1875,8 @@ void Logic::asmPanRightToHugh() { _vm->update(); // Adjust thug1 gun so it matches rest of body - bob_thugA1->x += 160 - 45; - bob_thugA2->x += 160; + bob_thugA1->x += 160 - 45; + bob_thugA2->x += 160; bob_thugA3->x += 160; bob_hugh1->x += 160 * 2; @@ -1884,7 +1884,7 @@ void Logic::asmPanRightToHugh() { bob_hugh3->x += 160 * 2; bob_thugB1->x += 160 * 3; - bob_thugB2->x += 160 * 3; + bob_thugB2->x += 160 * 3; int horizontalScroll = 0; while (horizontalScroll < 160 && !_vm->input()->cutawayQuit()) { @@ -1895,8 +1895,8 @@ void Logic::asmPanRightToHugh() { _vm->display()->horizontalScroll(horizontalScroll); - bob_thugA1->x -= 16; - bob_thugA2->x -= 16; + bob_thugA1->x -= 16; + bob_thugA2->x -= 16; bob_thugA3->x -= 16; bob_hugh1->x -= 24; @@ -1925,7 +1925,7 @@ void Logic::asmPanRightToJoeAndRita() { // cdint.cut _vm->graphics()->putCameraOnBob(-1); _vm->input()->fastMode(true); - + _vm->update(); bob_box ->x += 280 * 2; @@ -1959,7 +1959,7 @@ void Logic::asmPanLeftToBomb() { _vm->graphics()->putCameraOnBob(-1); _vm->input()->fastMode(true); - + int horizontalScroll = _vm->display()->horizontalScroll(); while ((horizontalScroll > 0 || bob21->x < 136) && !_vm->input()->cutawayQuit()) { diff --git a/queen/logic.h b/queen/logic.h index 9fdf285679..d610d5d8bd 100644 --- a/queen/logic.h +++ b/queen/logic.h @@ -55,21 +55,21 @@ public: virtual ~Logic(); uint16 currentRoom() const { return _currentRoom; } - void currentRoom(uint16 room) { + void currentRoom(uint16 room) { assert(room >= 1 && room <= _numRooms); - _currentRoom = room; + _currentRoom = room; } uint16 oldRoom() const { return _oldRoom; } - void oldRoom(uint16 room) { + void oldRoom(uint16 room) { assert(room <= _numRooms); - _oldRoom = room; + _oldRoom = room; } uint16 newRoom() const { return _newRoom; } - void newRoom(uint16 room) { + void newRoom(uint16 room) { assert(room <= _numRooms); - _newRoom = room; + _newRoom = room; } ObjectData *objectData(int index) const; @@ -137,34 +137,34 @@ public: //! setup Joe at the right place when entering a room void setupJoeInRoom(bool autoPosition, uint16 scale); - + uint16 joeFace(); void joeGrab(int16 grabState); //! change Joe clothes to dress void joeUseDress(bool showCut); - + //! restore Joe clothes void joeUseClothes(bool showCut); - + //! change Joe clothes to underwear void joeUseUnderwear(); - void makeJoeSpeak(uint16 descNum, bool objectType = false); + void makeJoeSpeak(uint16 descNum, bool objectType = false); void makePersonSpeak(const char *sentence, Person *person, const char *voiceFilePrefix); - + //! start the specified dialogue void startDialogue(const char *dlgFile, int personInRoom, char *cutaway); - + //! play the specified cutaway void playCutaway(const char *cutFile, char *next = NULL); //! initialize the inventory void inventorySetup(); - + //! get the inventory item for the specified inventory slot uint16 findInventoryItem(int invSlot) const; - + //! refresh inventory contents void inventoryRefresh(); int16 previousInventoryItem(int16 first) const; @@ -269,7 +269,7 @@ protected: virtual bool preChangeRoom() = 0; virtual bool handleSpecialMove(uint16 sm) = 0; - + uint16 _currentRoom; uint16 _oldRoom; @@ -309,7 +309,7 @@ protected: FurnitureData *_furnitureData; uint16 _numFurniture; - + GraphicAnim *_graphicAnim; uint16 _numGraphicAnim; @@ -348,7 +348,7 @@ protected: JoeWalkMode walk; uint16 scale; } _joe; - + int16 _gameState[GAME_STATE_COUNT]; TalkSelected _talkSelected[TALK_SELECTED_COUNT]; diff --git a/queen/music.cpp b/queen/music.cpp index 57d85f48e0..a9b0083169 100644 --- a/queen/music.cpp +++ b/queen/music.cpp @@ -36,7 +36,7 @@ MusicPlayer::MusicPlayer(MidiDriver *driver, byte *data, uint32 size) : _driver( _parser = MidiParser::createParser_SMF(); _parser->setMidiDriver(this); _parser->setTimerRate(_driver->getBaseTempo()); - + _numSongs = READ_LE_UINT16(_musicData); this->open(); } @@ -53,12 +53,12 @@ void MusicPlayer::setVolume(int volume) { volume = 0; else if (volume > 255) volume = 255; - + if (_masterVolume == volume) return; - + _masterVolume = volume; - + for (int i = 0; i < 16; ++i) { if (_channel[i]) _channel[i]->volume(_channelVolume[i] * _masterVolume / 255); @@ -76,10 +76,10 @@ bool MusicPlayer::queueSong(uint16 songNum) { for (int i = 0; i < MUSIC_QUEUE_SIZE; i++) if (!_songQueue[i]) emptySlots++; - + if (!emptySlots) return false; - + // Work around bug in Roland music, note that these numbers are 'one-off' // from the original code if (/*isRoland && */ songNum == 88 || songNum == 89) @@ -100,27 +100,27 @@ int MusicPlayer::open() { // Don't ever call open without first setting the output driver! if (!_driver) return 255; - + int ret = _driver->open(); if (ret) return ret; _driver->setTimerCallback(this, &onTimer); return 0; } - + void MusicPlayer::close() { _driver->setTimerCallback(NULL, NULL); if (_driver) _driver->close(); _driver = 0; } - + void MusicPlayer::send(uint32 b) { if (_passThrough) { _driver->send(b); return; } - + byte channel = (byte)(b & 0x0F); if ((b & 0xFFF0) == 0x07B0) { // Adjust volume changes by master volume @@ -130,14 +130,14 @@ void MusicPlayer::send(uint32 b) { b = (b & 0xFF00FFFF) | (volume << 16); } else if ((b & 0xF0) == 0xC0 && !_nativeMT32) { b = (b & 0xFFFF00FF) | MidiDriver::_mt32ToGm[(b >> 8) & 0xFF] << 8; - } + } else if ((b & 0xFFF0) == 0x007BB0) { //Only respond to All Notes Off if this channel //has currently been allocated if (_channel[b & 0x0F]) return; } - + //Work around annoying loud notes in certain Roland Floda tunes if (channel == 3 && _currentSong == 90) return; @@ -145,10 +145,10 @@ void MusicPlayer::send(uint32 b) { return; if (channel == 5 && _currentSong == 38) return; - + if (!_channel[channel]) _channel[channel] = (channel == 9) ? _driver->getPercussionChannel() : _driver->allocateChannel(); - + if (_channel[channel]) _channel[channel]->send(b); } @@ -157,22 +157,22 @@ void MusicPlayer::metaEvent(byte type, byte *data, uint16 length) { //Only thing we care about is End of Track. if (type != 0x2F) return; - - if (_looping || _songQueue[1]) + + if (_looping || _songQueue[1]) playMusic(); else stopMusic(); } - + void MusicPlayer::onTimer(void *refCon) { MusicPlayer *music = (MusicPlayer *)refCon; if (music->_isPlaying) music->_parser->onTimer(); } - + void MusicPlayer::queueTuneList(int16 tuneList) { queueClear(); - + //Jungle is the only part of the game that uses multiple tunelists. //For the sake of code simplification we just hardcode the extended list ourselves if ((tuneList + 1) == 3) { @@ -182,7 +182,7 @@ void MusicPlayer::queueTuneList(int16 tuneList) { queueSong(Sound::_jungleList[i++] - 1); return; } - + int mode = (_numSongs == 40) ? Sound::_tuneDemo[tuneList].mode : Sound::_tune[tuneList].mode; switch (mode) { case 0: // random loop @@ -191,13 +191,13 @@ void MusicPlayer::queueTuneList(int16 tuneList) { break; case 1: // sequential loop setLoop(_songQueue[1] == 0); - break; + break; case 2: // play once default: setLoop(false); break; } - + int i = 0; if (_numSongs == 40) { while (Sound::_tuneDemo[tuneList].tuneNum[i]) @@ -206,11 +206,11 @@ void MusicPlayer::queueTuneList(int16 tuneList) { while (Sound::_tune[tuneList].tuneNum[i]) queueSong(Sound::_tune[tuneList].tuneNum[i++] - 1); } - + if (_randomLoop) _queuePos = randomQueuePos(); } - + void MusicPlayer::playMusic() { if (!_songQueue[0]) { debug(5, "MusicPlayer::playMusic - Music queue is empty!"); @@ -241,7 +241,7 @@ void MusicPlayer::playMusic() { _buf = 0; } } - + _currentSong = songNum; if (!songNum) { stopMusic(); @@ -267,14 +267,14 @@ void MusicPlayer::playMusic() { musicPtr = ((byte *)_buf) + ((*musicPtr == 0x63) ? 1 : 0); size = packedSize * 2; } - + _parser->loadMusic(musicPtr, size); - _parser->setTrack(0); + _parser->setTrack(0); debug(8, "Playing song %d [queue position: %d]", songNum, _queuePos); _isPlaying = true; queueUpdatePos(); } - + void MusicPlayer::queueUpdatePos() { if (_randomLoop) { _queuePos = randomQueuePos(); @@ -285,16 +285,16 @@ void MusicPlayer::queueUpdatePos() { _queuePos = 0; } } - + uint8 MusicPlayer::randomQueuePos() { int queueSize = 0; for (int i = 0; i < MUSIC_QUEUE_SIZE; i++) if (_songQueue[i]) queueSize++; - + if (!queueSize) return 0; - + return (uint8) _rnd.getRandomNumber(queueSize - 1) & 0xFF; } @@ -326,13 +326,13 @@ Music::Music(MidiDriver *driver, QueenEngine *vm) : _vToggle(false) { Music::~Music() { delete _player; - delete[] _musicData; + delete[] _musicData; } void Music::playSong(uint16 songNum) { _player->queueClear(); _player->queueSong(songNum); - _player->playMusic(); + _player->playMusic(); } void Music::toggleVChange() { diff --git a/queen/music.h b/queen/music.h index 9c6aba9506..6c0ba53af0 100644 --- a/queen/music.h +++ b/queen/music.h @@ -37,7 +37,7 @@ public: ~MusicPlayer(); void setVolume(int volume); int getVolume() { return _masterVolume; } - + void hasNativeMT32(bool b) { _nativeMT32 = b; } void playMusic(); void stopMusic(); @@ -46,21 +46,21 @@ public: bool queueSong(uint16 songNum); void queueClear(); void setPassThrough(bool b) { _passThrough = b; } - + //MidiDriver interface implementation int open(); void close(); void send(uint32 b); - + void metaEvent(byte type, byte *data, uint16 length); - + void setTimerCallback(void *timerParam, void (*timerProc)(void *)) { } uint32 getBaseTempo(void) { return _driver ? _driver->getBaseTempo() : 0; } - + //Channel allocation functions MidiChannel *allocateChannel() { return 0; } MidiChannel *getPercussionChannel() { return 0; } - + protected: enum { @@ -79,9 +79,9 @@ protected: byte _channelVolume[16]; bool _nativeMT32; bool _passThrough; - + Common::RandomSource _rnd; - + bool _isPlaying; bool _looping; bool _randomLoop; @@ -90,13 +90,13 @@ protected: int16 _currentSong; int16 _lastSong; //first song from previous queue int16 _songQueue[MUSIC_QUEUE_SIZE]; - + uint16 _numSongs; byte *_musicData; uint16 *_buf; uint32 _musicDataSize; }; - + class Music { public: Music(MidiDriver *_driver, QueenEngine *vm); @@ -108,10 +108,10 @@ public: void stopSong() { _player->stopMusic(); } void setPassThrough(bool b) { _player->setPassThrough(b); } - void toggleVChange(); + void toggleVChange(); void setVolume(int vol) { _player->setVolume(vol); } int volume() { return _player->getVolume(); } - + protected: bool _vToggle; byte *_musicData; diff --git a/queen/musicdata.cpp b/queen/musicdata.cpp index 5e6637fbad..7e35f727ec 100644 --- a/queen/musicdata.cpp +++ b/queen/musicdata.cpp @@ -36,723 +36,723 @@ const int16 *Sound::_jungleList; #else const songData Sound::_songDemo[] = { /* 1 - Hotel Gangsters */ - { { 1, 0 }, 128, 128, 128, 1, 0 }, + { { 1, 0 }, 128, 128, 128, 1, 0 }, /* 2 - Hotel General */ - { { 2, 0 }, 128, 128, 128, 1, 0 }, + { { 2, 0 }, 128, 128, 128, 1, 0 }, /* 3 - Jungle */ - { { 3, 4, 5, 6, 0 }, 128, 128, 128, 1, 0 }, + { { 3, 4, 5, 6, 0 }, 128, 128, 128, 1, 0 }, /* 4 - Waterfall On */ - { { 7, 0 }, 128, 128, 128, 0, 0 }, + { { 7, 0 }, 128, 128, 128, 0, 0 }, /* 5 - Vnormal */ - { { 8, 0 }, 128, 128, 128, 2, 0 }, + { { 8, 0 }, 128, 128, 128, 2, 0 }, /* 6 - Trader Bob */ - { { 9, 0 }, 120, 128, 128, 1, 0 }, + { { 9, 0 }, 120, 128, 128, 1, 0 }, /* 7 - Jetty Music */ - { { 10, 0 }, 128, 128, 128, 1, 0 }, + { { 10, 0 }, 128, 128, 128, 1, 0 }, /* 8 - Ferry Music */ - { { 11, 0 }, 128, 128, 128, 1, 0 }, + { { 11, 0 }, 128, 128, 128, 1, 0 }, /* 9 - Temple Upstairs */ - { { 12, 0 }, 128, 128, 128, 1, 0 }, + { { 12, 0 }, 128, 128, 128, 1, 0 }, /* 10 - Temple Downstairs */ - { { 13, 0 }, 128, 128, 128, 1, 0 }, + { { 13, 0 }, 128, 128, 128, 1, 0 }, /* 11 - Temple Maze */ - { { 14, 0 }, 128, 128, 128, 1, 0 }, + { { 14, 0 }, 128, 128, 128, 1, 0 }, /* 12 - Temple Skull */ - { { 15, 0 }, 128, 128, 128, 1, 0 }, + { { 15, 0 }, 128, 128, 128, 1, 0 }, /* 13 - Johns Theme (Love Story) */ - { { 16, 0 }, 128, 128, 128, 1, 0 }, + { { 16, 0 }, 128, 128, 128, 1, 0 }, /* 14 - Vmedium */ - { { 17, 0 }, 128, 128, 0, 2, 0 }, + { { 17, 0 }, 128, 128, 0, 2, 0 }, /* 15 - Vsoft */ - { { 18, 0 }, 128, 128, 0, 2, 0 }, + { { 18, 0 }, 128, 128, 0, 2, 0 }, /* 16 - Floda Upstairs */ - { { 19, 0 }, 128, 128, 0, 1, 0 }, + { { 19, 0 }, 128, 128, 0, 1, 0 }, /* 17 - Floda General */ - { { 20, 0 }, 128, 128, 128, 1, 0 }, + { { 20, 0 }, 128, 128, 128, 1, 0 }, /* 18 - Klunks Room */ - { { 21, 0 }, 110, 128, 128, 1, 0 }, + { { 21, 0 }, 110, 128, 128, 1, 0 }, /* 19 - Hotel Lola */ - { { 22, 0 }, 120, 18128, 128, 1, 0 }, + { { 22, 0 }, 120, 18128, 128, 1, 0 }, /* 20 - Hotel Escape 1 */ - { { 23, 0 }, 128, 18128, 128, 1, 0 }, + { { 23, 0 }, 128, 18128, 128, 1, 0 }, /* 21 - Amazon Fortress */ - { { 24, 0 }, 128, 128, 128, 1, 0 }, + { { 24, 0 }, 128, 128, 128, 1, 0 }, /* 22 - Waterfall Off */ - { { 25, 0 }, 128, 128, 128, 0, 0 }, + { { 25, 0 }, 128, 128, 128, 0, 0 }, /* 23 - Wave Torch */ - { { 26, 0 }, 128, 128, 128, 0, 1 }, + { { 26, 0 }, 128, 128, 128, 0, 1 }, /* 24 - Zombies Rez Out */ - { { 27, 0 }, 128, 128, 128, 0, 1 }, + { { 27, 0 }, 128, 128, 128, 0, 1 }, /* 25 - Open Door (standard) */ - { { 28, 0 }, 128, 128, 128, 0, 1 }, + { { 28, 0 }, 128, 128, 128, 0, 1 }, /* 26 - Close Door (standard) */ - { { 29, 0 }, 128, 128, 128, 0, 1 }, + { { 29, 0 }, 128, 128, 128, 0, 1 }, /* 27 - Cloth Unrolls */ - { { 30, 0 }, 128, 128, 128, 0, 1 }, + { { 30, 0 }, 128, 128, 128, 0, 1 }, /* 28 - Snake Slithers Off */ - { { 31, 0 }, 128, 128, 128, 0, 1 }, + { { 31, 0 }, 128, 128, 128, 0, 1 }, /* 29 - Hotel Fanfare 2 */ - { { 32, 0 }, 128, 128, 128, 1, 1 }, + { { 32, 0 }, 128, 128, 128, 1, 1 }, /* 30 - Floda Secret */ - { { 33, 0 }, 120, 128, 128, 1, 0 }, + { { 33, 0 }, 120, 128, 128, 1, 0 }, /* 31 - Temple Fanfare 1 */ - { { 34, 0 }, 128, 128, 128, 1, 1 }, + { { 34, 0 }, 128, 128, 128, 1, 1 }, }; const songData Sound::_song[] = { /* 1 - Hotel Gangsters */ - { { 1, 0 }, 128, 180, 0, 1, 0 }, + { { 1, 0 }, 128, 180, 0, 1, 0 }, /* 2 - Hotel General */ - { { 2, 0 }, 128, 180, 0, 1, 0 }, + { { 2, 0 }, 128, 180, 0, 1, 0 }, /* 3 - Jungle */ - { { 3, 4, 5, 6, 0 }, 128, 0, 0, 1, 0 }, + { { 3, 4, 5, 6, 0 }, 128, 0, 0, 1, 0 }, /* 4 - Waterfall On */ - { { 7, 0 }, 128, 0, 0, 0, 0 }, + { { 7, 0 }, 128, 0, 0, 0, 0 }, /* 5 - Vnormal */ - { { 8, 0 }, 128, 0, 0, 2, 0 }, + { { 8, 0 }, 128, 0, 0, 2, 0 }, /* 6 - Trader Bob */ - { { 9, 0 }, 120, 0, 0, 1, 0 }, + { { 9, 0 }, 120, 0, 0, 1, 0 }, /* 7 - Jetty Music */ - { { 10, 0 }, 128, 0, 0, 1, 0 }, + { { 10, 0 }, 128, 0, 0, 1, 0 }, /* 8 - Ferry Music */ - { { 11, 0 }, 128, 0, 0, 1, 0 }, + { { 11, 0 }, 128, 0, 0, 1, 0 }, /* 9 - Temple Upstairs */ - { { 12, 0 }, 128, 0, 0, 1, 0 }, + { { 12, 0 }, 128, 0, 0, 1, 0 }, /* 10 - Temple Downstairs */ - { { 13, 0 }, 128, 0, 0, 1, 0 }, + { { 13, 0 }, 128, 0, 0, 1, 0 }, /* 11 - Temple Maze */ - { { 14, 0 }, 128, 0, 0, 1, 0 }, + { { 14, 0 }, 128, 0, 0, 1, 0 }, /* 12 - Temple Skull */ - { { 15, 0 }, 128, 0, 0, 1, 0 }, + { { 15, 0 }, 128, 0, 0, 1, 0 }, /* 13 - Johns Theme (Love Story) */ - { { 16, 0 }, 128, 0, 0, 1, 0 }, + { { 16, 0 }, 128, 0, 0, 1, 0 }, /* 14 - Vmedium */ - { { 17, 0 }, 120, 0, 0, 2, 0 }, + { { 17, 0 }, 120, 0, 0, 2, 0 }, /* 15 - Vsoft */ - { { 18, 0 }, 110, 0, 0, 2, 0 }, + { { 18, 0 }, 110, 0, 0, 2, 0 }, /* 16 - Floda Upstairs */ - { { 19, 0 }, 110, 0, 0, 1, 0 }, + { { 19, 0 }, 110, 0, 0, 1, 0 }, /* 17 - Floda General */ - { { 20, 0 }, 128, 0, 0, 1, 0 }, + { { 20, 0 }, 128, 0, 0, 1, 0 }, /* 18 - Klunks Room */ - { { 21, 0 }, 128, 0, 0, 1, 0 }, + { { 21, 0 }, 128, 0, 0, 1, 0 }, /* 19 - Hotel Lola */ - { { 22, 0 }, 120, 180, 0, 1, 0 }, + { { 22, 0 }, 120, 180, 0, 1, 0 }, /* 20 - Hotel Escape 1 */ - { { 23, 0 }, 128, 180, 0, 1, 0 }, + { { 23, 0 }, 128, 180, 0, 1, 0 }, /* 21 - Amazon Fortress */ - { { 24, 0 }, 128, 0, 0, 1, 0 }, + { { 24, 0 }, 128, 0, 0, 1, 0 }, /* 22 - Waterfall Off */ - { { 25, 0 }, 128, 0, 0, 0, 0 }, + { { 25, 0 }, 128, 0, 0, 0, 0 }, /* 23 - Wave Torch */ - { { 26, 0 }, 128, 0, 0, 0, 1 }, + { { 26, 0 }, 128, 0, 0, 0, 1 }, /* 24 - Zombies Rez Out */ - { { 27, 0 }, 128, 0, 0, 0, 1 }, + { { 27, 0 }, 128, 0, 0, 0, 1 }, /* 25 - Open Door (standard) */ - { { 28, 0 }, 128, 0, 0, 0, 1 }, + { { 28, 0 }, 128, 0, 0, 0, 1 }, /* 26 - Close Door (standard) */ - { { 29, 0 }, 128, 0, 0, 0, 1 }, + { { 29, 0 }, 128, 0, 0, 0, 1 }, /* 27 - Cloth Unrolls */ - { { 30, 0 }, 128, 0, 0, 0, 1 }, + { { 30, 0 }, 128, 0, 0, 0, 1 }, /* 28 - Snake Slithers Off */ - { { 31, 0 }, 128, 0, 0, 0, 1 }, + { { 31, 0 }, 128, 0, 0, 0, 1 }, /* 29 - Hotel Fanfare 2 */ - { { 32, 0 }, 128, 0, 0, 1, 1 }, + { { 32, 0 }, 128, 0, 0, 1, 1 }, /* 30 - Floda Secret */ - { { 33, 0 }, 128, 0, 0, 1, 0 }, + { { 33, 0 }, 128, 0, 0, 1, 0 }, /* 31 - Temple Fanfare 1 */ - { { 34, 0 }, 128, 0, 0, 1, 1 }, + { { 34, 0 }, 128, 0, 0, 1, 1 }, /* 32 - Commander Rocket 1 */ - { { 35, 0 }, 128, 0, 0, 1, 0 }, + { { 35, 0 }, 128, 0, 0, 1, 0 }, /* 33 - Hotel Escape 2 */ - { { 36, 0 }, 128, 180, 0, 1, 0 }, + { { 36, 0 }, 128, 180, 0, 1, 0 }, /* 34 - Back of Truck */ - { { 37, 0 }, 128, 180, 0, 1, 0 }, + { { 37, 0 }, 128, 180, 0, 1, 0 }, /* 35 - Hotel Fanfare 1 */ - { { 38, 0 }, 128, 0, 0, 1, 1 }, + { { 38, 0 }, 128, 0, 0, 1, 1 }, /* 36 - Truck Fanfare */ - { { 39, 0 }, 128, 0, 0, 1, 1 }, + { { 39, 0 }, 128, 0, 0, 1, 1 }, /* 37 - Airport */ - { { 40, 0 }, 128, 0, 0, 1, 0 }, + { { 40, 0 }, 128, 0, 0, 1, 0 }, /* 38 - Plane Leaves */ - { { 41, 0 }, 128, 0, 0, 1, 1 }, + { { 41, 0 }, 128, 0, 0, 1, 1 }, /* 39 - Arrive Hotel */ - { { 42, 0 }, 128, 0, 0, 1, 0 }, + { { 42, 0 }, 128, 0, 0, 1, 0 }, /* 40 - Jungle Fanfare */ - { { 43, 0 }, 128, 0, 0, 1, 1 }, + { { 43, 0 }, 128, 0, 0, 1, 1 }, /* 41 - General Fanfare */ - { { 44, 0 }, 128, 0, 0, 1, 1 }, + { { 44, 0 }, 128, 0, 0, 1, 1 }, /* 42 - Johns Room */ - { { 45, 0 }, 128, 0, 0, 1, 0 }, + { { 45, 0 }, 128, 0, 0, 1, 0 }, /* 43 - Floda Lab */ - { { 46, 0 }, 128, 0, 0, 1, 0 }, + { { 46, 0 }, 128, 0, 0, 1, 0 }, /* 44 - Azura's Theme */ - { { 47, 0 }, 128, 0, 0, 1, 0 }, + { { 47, 0 }, 128, 0, 0, 1, 0 }, /* 45 - Use Record */ - { { 48, 0 }, 128, 0, 0, 1, 1 }, + { { 48, 0 }, 128, 0, 0, 1, 1 }, /* 46 - Franks Theme */ - { { 49, 0 }, 128, 0, 0, 1, 0 }, + { { 49, 0 }, 128, 0, 0, 1, 0 }, /* 47 - Anderson Doubts */ - { { 50, 0 }, 128, 0, 0, 1, 0 }, + { { 50, 0 }, 128, 0, 0, 1, 0 }, /* 48 - Bud and Lou Theme */ - { { 51, 0 }, 128, 0, 0, 1, 1 }, + { { 51, 0 }, 128, 0, 0, 1, 1 }, /* 49 - Gorilla Theme */ - { { 52, 0 }, 128, 0, 0, 1, 1 }, + { { 52, 0 }, 128, 0, 0, 1, 1 }, /* 50 - Missionaries Theme */ - { { 53, 0 }, 128, 0, 0, 1, 1 }, + { { 53, 0 }, 128, 0, 0, 1, 1 }, /* 51 - Sloth Theme */ - { { 54, 0 }, 128, 0, 0, 1, 1 }, + { { 54, 0 }, 128, 0, 0, 1, 1 }, /* 52 - Amazon Dungeon */ - { { 55, 0 }, 128, 0, 0, 1, 0 }, + { { 55, 0 }, 128, 0, 0, 1, 0 }, /* 53 - Throne Room */ - { { 56, 0 }, 128, 0, 0, 1, 0 }, + { { 56, 0 }, 128, 0, 0, 1, 0 }, /* 54 - Temple Puzzle */ - { { 57, 0 }, 128, 0, 0, 1, 0 }, + { { 57, 0 }, 128, 0, 0, 1, 0 }, /* 55 - Temple Fountain Room */ - { { 58, 0 }, 128, 0, 0, 1, 0 }, + { { 58, 0 }, 128, 0, 0, 1, 0 }, /* 56 - Light Switch */ - { { 59, 0 }, 128, 0, 0, 0, 1 }, + { { 59, 0 }, 128, 0, 0, 0, 1 }, /* 57 - Hydraulic Open */ - { { 60, 0 }, 128, 0, 0, 0, 1 }, + { { 60, 0 }, 128, 0, 0, 0, 1 }, /* 58 - Hydraulic Close */ - { { 61, 0 }, 128, 0, 0, 0, 1 }, + { { 61, 0 }, 128, 0, 0, 0, 1 }, /* 59 - Close Door (metal) */ - { { 62, 0 }, 128, 0, 0, 0, 1 }, + { { 62, 0 }, 128, 0, 0, 0, 1 }, /* 60 - Small Hatch Close */ - { { 63, 0 }, 128, 0, 0, 0, 1 }, + { { 63, 0 }, 128, 0, 0, 0, 1 }, /* 61 - Scissors Snip */ - { { 64, 0 }, 128, 0, 0, 0, 1 }, + { { 64, 0 }, 128, 0, 0, 0, 1 }, /* 62 - Pick up Sticky */ - { { 65, 0 }, 128, 0, 0, 0, 1 }, + { { 65, 0 }, 128, 0, 0, 0, 1 }, /* 63 - Oracle Rezzes In */ - { { 66, 0 }, 128, 0, 0, 0, 1 }, + { { 66, 0 }, 128, 0, 0, 0, 1 }, /* 64 - Sparkle SFX */ - { { 67, 0 }, 128, 0, 0, 0, 1 }, + { { 67, 0 }, 128, 0, 0, 0, 1 }, /* 65 - Splorch! */ - { { 68, 0 }, 128, 0, 0, 0, 1 }, + { { 68, 0 }, 128, 0, 0, 0, 1 }, /* 66 - Pour Liquid */ - { { 69, 0 }, 128, 0, 0, 0, 1 }, + { { 69, 0 }, 128, 0, 0, 0, 1 }, /* 67 - End Credit Medley */ - { { 70, 0 }, 128, 0, 0, 1, 0 }, + { { 70, 0 }, 128, 0, 0, 1, 0 }, /* 68 - Dino Ray */ - { { 71, 0 }, 128, 0, 0, 0, 1 }, + { { 71, 0 }, 128, 0, 0, 0, 1 }, /* 69 - Squish! */ - { { 72, 0 }, 128, 0, 0, 0, 1 }, + { { 72, 0 }, 128, 0, 0, 0, 1 }, /* 70 - Robot Laser */ - { { 73, 0 }, 128, 0, 0, 0, 1 }, + { { 73, 0 }, 128, 0, 0, 0, 1 }, /* 71 - Thud wood light */ - { { 74, 0 }, 128, 0, 0, 0, 1 }, + { { 74, 0 }, 128, 0, 0, 0, 1 }, /* 72 - Thud wood deep */ - { { 75, 0 }, 128, 0, 0, 0, 1 }, + { { 75, 0 }, 128, 0, 0, 0, 1 }, /* 73 - Thud metallic */ - { { 76, 0 }, 128, 0, 0, 0, 1 }, + { { 76, 0 }, 128, 0, 0, 0, 1 }, /* 74 - Cut Coconut */ - { { 77, 0 }, 128, 0, 0, 0, 1 }, + { { 77, 0 }, 128, 0, 0, 0, 1 }, /* 75 - Thud Stone */ - { { 78, 0 }, 128, 0, 0, 0, 1 }, + { { 78, 0 }, 128, 0, 0, 0, 1 }, /* 76 - Cloth Slide 1 */ - { { 79, 0 }, 128, 0, 0, 0, 1 }, + { { 79, 0 }, 128, 0, 0, 0, 1 }, /* 77 - Open Chest */ - { { 80, 0 }, 128, 0, 0, 0, 1 }, + { { 80, 0 }, 128, 0, 0, 0, 1 }, /* 78 - Close Chest */ - { { 81, 0 }, 128, 0, 0, 0, 1 }, + { { 81, 0 }, 128, 0, 0, 0, 1 }, /* 79 - Open Drawer */ - { { 82, 0 }, 128, 0, 0, 0, 1 }, + { { 82, 0 }, 128, 0, 0, 0, 1 }, /* 80 - Truck door closes */ - { { 83, 0 }, 128, 0, 0, 0, 1 }, + { { 83, 0 }, 128, 0, 0, 0, 1 }, /* 81 - Truck Starts */ - { { 84, 0 }, 128, 0, 0, 0, 1 }, + { { 84, 0 }, 128, 0, 0, 0, 1 }, /* 82 - Truck Drives Off */ - { { 85, 0 }, 128, 0, 0, 0, 1 }, + { { 85, 0 }, 128, 0, 0, 0, 1 }, /* 83 - Fish Splash */ - { { 86, 0 }, 128, 0, 0, 0, 1 }, + { { 86, 0 }, 128, 0, 0, 0, 1 }, /* 84 - Close Drawer/Push Ladder */ - { { 87, 0 }, 128, 0, 0, 0, 1 }, + { { 87, 0 }, 128, 0, 0, 0, 1 }, /* 85 - Agression Enhancer */ - { { 88, 0 }, 128, 0, 0, 0, 1 }, + { { 88, 0 }, 128, 0, 0, 0, 1 }, /* 86 - Stone Door Grind 1 */ - { { 89, 0 }, 128, 0, 0, 0, 1 }, + { { 89, 0 }, 128, 0, 0, 0, 1 }, /* 87 - Prequel 1 */ - { { 90, 0 }, 128, 0, 0, 1, 0 }, + { { 90, 0 }, 128, 0, 0, 1, 0 }, /* 88 - Intro Credits */ - { { 91, 0 }, 128, 0, 0, 1, 0 }, + { { 91, 0 }, 128, 0, 0, 1, 0 }, /* 89 - Valley 1 */ - { { 92, 0 }, 128, 0, 0, 1, 0 }, + { { 92, 0 }, 128, 0, 0, 1, 0 }, /* 90 - Valley 3 */ - { { 93, 0 }, 128, 0, 0, 1, 0 }, + { { 93, 0 }, 128, 0, 0, 1, 0 }, /* 91 - Fight Music */ - { { 94, 0 }, 128, 0, 0, 1, 0 }, + { { 94, 0 }, 128, 0, 0, 1, 0 }, /* 92 - Confrontation 1 */ - { { 95, 0 }, 128, 0, 0, 1, 0 }, + { { 95, 0 }, 128, 0, 0, 1, 0 }, /* 93 - Confrontation 2 */ - { { 96, 0 }, 128, 0, 0, 1, 0 }, + { { 96, 0 }, 128, 0, 0, 1, 0 }, /* 94 - Plane Hatch Open */ - { { 97, 0 }, 128, 128, 128, 0, 1 }, + { { 97, 0 }, 128, 128, 128, 0, 1 }, /* 95 - Plane Hatch Close */ - { { 98, 0 }, 128, 128, 128, 0, 1 }, + { { 98, 0 }, 128, 128, 128, 0, 1 }, /* 96 - Tie Vines */ - { { 99, 0 }, 128, 128, 128, 0, 1 }, + { { 99, 0 }, 128, 128, 128, 0, 1 }, /* 97 - Pterodactyl */ - { { 100, 0 }, 128, 128, 128, 0, 1 }, + { { 100, 0 }, 128, 128, 128, 0, 1 }, /* 98 - Beef Jerky Splash */ - { { 101, 0 }, 128, 128, 128, 0, 1 }, + { { 101, 0 }, 128, 128, 128, 0, 1 }, /* 99 - Piranha Burp */ - { { 102, 0 }, 128, 128, 128, 0, 1 }, + { { 102, 0 }, 128, 128, 128, 0, 1 }, /* 100 - Falling Vine */ - { { 103, 0 }, 128, 128, 128, 0, 1 }, + { { 103, 0 }, 128, 128, 128, 0, 1 }, /* 101 - Stone Door Grind 2 */ - { { 104, 0 }, 128, 128, 128, 0, 1 }, + { { 104, 0 }, 128, 128, 128, 0, 1 }, /* 102 - Stone Grind (light) */ - { { 105, 0 }, 128, 128, 128, 0, 1 }, + { { 105, 0 }, 128, 128, 128, 0, 1 }, /* 103 - Ape Takes Off Mask */ - { { 106, 0 }, 128, 128, 128, 0, 1 }, + { { 106, 0 }, 128, 128, 128, 0, 1 }, /* 104 - Bark Breaks */ - { { 107, 0 }, 128, 128, 128, 0, 1 }, + { { 107, 0 }, 128, 128, 128, 0, 1 }, /* 105 - Stone Click */ - { { 108, 0 }, 128, 128, 128, 0, 1 }, + { { 108, 0 }, 128, 128, 128, 0, 1 }, /* 106 - Sproing! */ - { { 109, 0 }, 128, 128, 128, 0, 1 }, + { { 109, 0 }, 128, 128, 128, 0, 1 }, /* 107 - Cash Register */ - { { 110, 0 }, 128, 128, 128, 0, 1 }, + { { 110, 0 }, 128, 128, 128, 0, 1 }, /* 108 - Squeaky Toy */ - { { 111, 0 }, 128, 128, 128, 0, 1 }, + { { 111, 0 }, 128, 128, 128, 0, 1 }, /* 109 - Falling Chains */ - { { 112, 0 }, 128, 128, 128, 0, 1 }, + { { 112, 0 }, 128, 128, 128, 0, 1 }, /* 110 - Open Locker Door */ - { { 113, 0 }, 128, 128, 128, 0, 1 }, + { { 113, 0 }, 128, 128, 128, 0, 1 }, /* 111 - Close Locker Door */ - { { 114, 0 }, 128, 128, 128, 0, 1 }, + { { 114, 0 }, 128, 128, 128, 0, 1 }, /* 112 - Rub Pencil */ - { { 115, 0 }, 128, 128, 128, 0, 1 }, + { { 115, 0 }, 128, 128, 128, 0, 1 }, /* 113 - Open Safe */ - { { 116, 0 }, 128, 128, 128, 0, 1 }, + { { 116, 0 }, 128, 128, 128, 0, 1 }, /* 114 - Close Safe */ - { { 117, 0 }, 128, 128, 128, 0, 1 }, + { { 117, 0 }, 128, 128, 128, 0, 1 }, /* 115 - Push Chair */ - { { 118, 0 }, 128, 128, 128, 0, 1 }, + { { 118, 0 }, 128, 128, 128, 0, 1 }, /* 116 - Snake Hiss */ - { { 119, 0 }, 128, 128, 128, 0, 1 }, + { { 119, 0 }, 128, 128, 128, 0, 1 }, /* 117 - Oracle Rezzes Out */ - { { 120, 0 }, 128, 128, 128, 0, 1 }, + { { 120, 0 }, 128, 128, 128, 0, 1 }, /* 118 - Wall Crumbles */ - { { 121, 0 }, 128, 128, 128, 0, 1 }, + { { 121, 0 }, 128, 128, 128, 0, 1 }, /* 119 - Crypt Crumbles */ - { { 122, 0 }, 128, 128, 128, 0, 1 }, + { { 122, 0 }, 128, 128, 128, 0, 1 }, /* 120 - Joe Sucked Up */ - { { 123, 0 }, 128, 128, 128, 0, 1 }, + { { 123, 0 }, 128, 128, 128, 0, 1 }, /* 121 - Rocket Pack Zoom */ - { { 124, 0 }, 128, 128, 128, 0, 1 }, + { { 124, 0 }, 128, 128, 128, 0, 1 }, /* 122 - Piranha Splash */ - { { 125, 0 }, 128, 128, 128, 0, 1 }, + { { 125, 0 }, 128, 128, 128, 0, 1 }, /* 123 - Snap Branch */ - { { 126, 0 }, 128, 128, 128, 0, 1 }, + { { 126, 0 }, 128, 128, 128, 0, 1 }, /* 124 - Dino Horn */ - { { 127, 0 }, 128, 128, 128, 0, 1 }, + { { 127, 0 }, 128, 128, 128, 0, 1 }, /* 125 - Tyre Screech */ - { { 128, 0 }, 128, 128, 128, 0, 1 }, + { { 128, 0 }, 128, 128, 128, 0, 1 }, /* 126 - Oil Splat */ - { { 129, 0 }, 128, 128, 128, 0, 1 }, + { { 129, 0 }, 128, 128, 128, 0, 1 }, /* 127 - Punch */ - { { 130, 0 }, 128, 128, 128, 0, 1 }, + { { 130, 0 }, 128, 128, 128, 0, 1 }, /* 128 - Body Hits Ground */ - { { 131, 0 }, 128, 128, 128, 0, 1 }, + { { 131, 0 }, 128, 128, 128, 0, 1 }, /* 129 - Chicken */ - { { 132, 0 }, 128, 128, 128, 0, 1 }, + { { 132, 0 }, 128, 128, 128, 0, 1 }, /* 130 - Open Sarcophagus */ - { { 133, 0 }, 128, 128, 128, 0, 1 }, + { { 133, 0 }, 128, 128, 128, 0, 1 }, /* 131 - Close Sarcophagus */ - { { 134, 0 }, 128, 128, 128, 0, 1 }, + { { 134, 0 }, 128, 128, 128, 0, 1 }, /* 132 - Creaking Stick */ - { { 135, 0 }, 128, 128, 128, 0, 1 }, + { { 135, 0 }, 128, 128, 128, 0, 1 }, /* 133 - Pick Hits Stone */ - { { 136, 0 }, 128, 128, 128, 0, 1 }, + { { 136, 0 }, 128, 128, 128, 0, 1 }, /* 134 - Stalactite Crumbles */ - { { 137, 0 }, 128, 128, 128, 0, 1 }, + { { 137, 0 }, 128, 128, 128, 0, 1 }, /* 135 - Tic-Toc */ - { { 138, 0 }, 128, 128, 128, 0, 1 }, + { { 138, 0 }, 128, 128, 128, 0, 1 }, /* 136 - Stone Grind (heavy) */ - { { 139, 0 }, 128, 128, 128, 0, 1 }, + { { 139, 0 }, 128, 128, 128, 0, 1 }, /* 137 - Explosion */ - { { 140, 0 }, 128, 128, 128, 0, 1 }, + { { 140, 0 }, 128, 128, 128, 0, 1 }, /* 138 - Cloth Slide 2 */ - { { 141, 0 }, 128, 128, 128, 0, 1 }, + { { 141, 0 }, 128, 128, 128, 0, 1 }, /* 139 - Temple Laser */ - { { 142, 0 }, 128, 128, 128, 0, 1 }, + { { 142, 0 }, 128, 128, 128, 0, 1 }, /* 140 - Dino Transformation */ - { { 143, 0 }, 128, 128, 128, 0, 1 }, + { { 143, 0 }, 128, 128, 128, 0, 1 }, /* 141 - Experimental Laser */ - { { 144, 0 }, 128, 128, 128, 0, 1 }, + { { 144, 0 }, 128, 128, 128, 0, 1 }, /* 142 - Stone Grind (medium) */ - { { 145, 0 }, 128, 128, 128, 0, 1 }, + { { 145, 0 }, 128, 128, 128, 0, 1 }, /* 143 - Weeping God Grind */ - { { 146, 0 }, 128, 128, 128, 0, 1 }, + { { 146, 0 }, 128, 128, 128, 0, 1 }, /* 144 - Alien Hum */ - { { 147, 0 }, 128, 128, 128, 0, 1 }, + { { 147, 0 }, 128, 128, 128, 0, 1 }, /* 145 - Alien Puzzle */ - { { 148, 0 }, 128, 128, 128, 0, 1 }, + { { 148, 0 }, 128, 128, 128, 0, 1 }, /* 146 - Vacuum On */ - { { 149, 0 }, 128, 128, 128, 0, 1 }, + { { 149, 0 }, 128, 128, 128, 0, 1 }, /* 147 - Vacuum Off */ - { { 150, 0 }, 128, 128, 128, 0, 1 }, + { { 150, 0 }, 128, 128, 128, 0, 1 }, /* 148 - Elevator Starts */ - { { 151, 0 }, 128, 128, 128, 0, 1 }, + { { 151, 0 }, 128, 128, 128, 0, 1 }, /* 149 - Mummy Crumbles */ - { { 152, 0 }, 128, 128, 128, 0, 1 }, + { { 152, 0 }, 128, 128, 128, 0, 1 }, /* 150 - Temple Green Circle */ - { { 153, 0 }, 128, 128, 128, 0, 1 }, + { { 153, 0 }, 128, 128, 128, 0, 1 }, /* 151 - Rattle Bars */ - { { 154, 0 }, 128, 128, 128, 0, 1 }, + { { 154, 0 }, 128, 128, 128, 0, 1 }, /* 152 - Door Dissolves */ - { { 155, 0 }, 128, 128, 128, 0, 1 }, + { { 155, 0 }, 128, 128, 128, 0, 1 }, /* 153 - Altar Slides */ - { { 156, 0 }, 128, 128, 128, 0, 1 }, + { { 156, 0 }, 128, 128, 128, 0, 1 }, /* 154 - Light Torch */ - { { 157, 0 }, 128, 128, 128, 0, 1 }, + { { 157, 0 }, 128, 128, 128, 0, 1 }, /* 155 - Stamp Sound */ - { { 158, 0 }, 128, 128, 128, 0, 1 }, + { { 158, 0 }, 128, 128, 128, 0, 1 }, /* 156 - Plaster Loud */ - { { 159, 0 }, 128, 128, 128, 0, 1 }, + { { 159, 0 }, 128, 128, 128, 0, 1 }, /* 157 - Sparky Bathtub */ - { { 160, 0 }, 128, 128, 128, 0, 1 }, + { { 160, 0 }, 128, 128, 128, 0, 1 }, /* 158 - Ape Rezzes Out */ - { { 161, 0 }, 128, 128, 128, 0, 1 }, + { { 161, 0 }, 128, 128, 128, 0, 1 }, /* 159 - Song 159 */ - { { 162, 0 }, 128, 128, 128, 1, 0 }, + { { 162, 0 }, 128, 128, 128, 1, 0 }, /* 160 - Song 160 */ - { { 163, 0 }, 128, 128, 128, 1, 0 }, + { { 163, 0 }, 128, 128, 128, 1, 0 }, /* 161 - Song 161 */ - { { 164, 0 }, 128, 128, 128, 1, 0 }, + { { 164, 0 }, 128, 128, 128, 1, 0 }, /* 162 - Piranhas Swim */ - { { 165, 0 }, 128, 128, 128, 0, 1 }, + { { 165, 0 }, 128, 128, 128, 0, 1 }, /* 163 - Prison/Dungeon Door */ - { { 166, 0 }, 128, 128, 128, 0, 1 }, + { { 166, 0 }, 128, 128, 128, 0, 1 }, /* 164 - Fight Explosion */ - { { 167, 0 }, 128, 128, 128, 0, 1 }, + { { 167, 0 }, 128, 128, 128, 0, 1 }, /* 165 - Press Button */ - { { 168, 0 }, 128, 128, 128, 2, 1 }, + { { 168, 0 }, 128, 128, 128, 2, 1 }, /* 166 - Pull Lever */ - { { 169, 0 }, 128, 128, 128, 0, 1 }, + { { 169, 0 }, 128, 128, 128, 0, 1 }, /* 167 - Wrong Code */ - { { 170, 0 }, 128, 128, 128, 0, 1 }, + { { 170, 0 }, 128, 128, 128, 0, 1 }, /* 168 - Correct Code */ - { { 171, 0 }, 128, 128, 128, 0, 1 }, + { { 171, 0 }, 128, 128, 128, 0, 1 }, /* 169 - Sizzle */ - { { 172, 0 }, 128, 128, 128, 0, 1 }, + { { 172, 0 }, 128, 128, 128, 0, 1 }, /* 170 - Money In Slot */ - { { 173, 0 }, 128, 128, 128, 0, 1 }, + { { 173, 0 }, 128, 128, 128, 0, 1 }, /* 171 - Lightning Crack */ - { { 174, 0 }, 128, 128, 128, 0, 1 }, + { { 174, 0 }, 128, 128, 128, 0, 1 }, /* 172 - Machine Gun Fire */ - { { 175, 0 }, 128, 128, 128, 0, 1 }, + { { 175, 0 }, 128, 128, 128, 0, 1 }, /* 173 - Cage Descends */ - { { 176, 0 }, 128, 128, 128, 0, 1 }, + { { 176, 0 }, 128, 128, 128, 0, 1 }, /* 174 - Chair Activates */ - { { 177, 0 }, 128, 128, 128, 0, 1 }, + { { 177, 0 }, 128, 128, 128, 0, 1 }, /* 175 - Robot Powers On */ - { { 178, 0 }, 128, 128, 128, 0, 1 }, + { { 178, 0 }, 128, 128, 128, 0, 1 }, /* 176 - Grow Big */ - { { 179, 0 }, 128, 128, 128, 0, 1 }, + { { 179, 0 }, 128, 128, 128, 0, 1 }, /* 177 - Eat Food */ - { { 180, 0 }, 128, 128, 128, 0, 1 }, + { { 180, 0 }, 128, 128, 128, 0, 1 }, /* 178 - Head Shrink */ - { { 181, 0 }, 128, 128, 128, 0, 1 }, + { { 181, 0 }, 128, 128, 128, 0, 1 }, /* 179 - Grinding Gears */ - { { 182, 0 }, 128, 128, 128, 0, 1 }, + { { 182, 0 }, 128, 128, 128, 0, 1 }, /* 180 - Chair Splash */ - { { 183, 0 }, 128, 128, 128, 0, 1 }, + { { 183, 0 }, 128, 128, 128, 0, 1 }, /* 181 - Deflect Laser */ - { { 184, 0 }, 128, 128, 128, 0, 1 }, + { { 184, 0 }, 128, 128, 128, 0, 1 }, /* 182 - Zap Frank */ - { { 185, 0 }, 128, 128, 128, 0, 1 }, + { { 185, 0 }, 128, 128, 128, 0, 1 }, /* 183 - Frank Transforms */ - { { 186, 0 }, 128, 128, 128, 0, 1 }, + { { 186, 0 }, 128, 128, 128, 0, 1 }, /* 184 - Alarm Clock */ - { { 187, 0 }, 128, 128, 128, 0, 1 }, + { { 187, 0 }, 128, 128, 128, 0, 1 }, /* 185 - Slide Chute */ - { { 188, 0 }, 128, 128, 128, 0, 1 }, + { { 188, 0 }, 128, 128, 128, 0, 1 }, /* 186 - Puff */ - { { 189, 0 }, 128, 128, 128, 0, 1 }, + { { 189, 0 }, 128, 128, 128, 0, 1 }, /* 187 - Bite */ - { { 190, 0 }, 128, 128, 128, 0, 0 }, + { { 190, 0 }, 128, 128, 128, 0, 0 }, /* 188 - Stone Door Grind 2 */ - { { 191, 0 }, 128, 128, 128, 0, 1 }, + { { 191, 0 }, 128, 128, 128, 0, 1 }, /* 189 - Prequel 2 */ - { { 192, 0 }, 128, 128, 128, 1, 0 }, + { { 192, 0 }, 128, 128, 128, 1, 0 }, /* 190 - Prequel 3 */ - { { 193, 0 }, 128, 128, 128, 1, 0 }, + { { 193, 0 }, 128, 128, 128, 1, 0 }, /* 191 - Prequel 4 */ - { { 194, 0 }, 128, 128, 128, 1, 0 }, + { { 194, 0 }, 128, 128, 128, 1, 0 }, /* 192 - Stop Music */ - { { 195, 0 }, 128, 128, 128, 1, 0 }, + { { 195, 0 }, 128, 128, 128, 1, 0 }, /* 193 - Plane Flyby */ - { { 196, 0 }, 128, 128, 128, 0, 1 }, + { { 196, 0 }, 128, 128, 128, 0, 1 }, /* 194 - Commander Rocket 2 */ - { { 197, 0 }, 128, 128, 128, 1, 0 }, + { { 197, 0 }, 128, 128, 128, 1, 0 }, /* 195 - Commander Rocket 3 */ - { { 198, 0 }, 128, 128, 128, 1, 0 }, + { { 198, 0 }, 128, 128, 128, 1, 0 }, /* 196 - Rescue */ - { { 199, 0 }, 128, 128, 128, 1, 0 }, + { { 199, 0 }, 128, 128, 128, 1, 0 }, /* 197 - Slow Fanfare */ - { { 200, 0 }, 128, 128, 128, 1, 0 }, + { { 200, 0 }, 128, 128, 128, 1, 0 }, /* 198 - Plane Crash */ - { { 201, 0 }, 128, 128, 128, 1, 0 }, + { { 201, 0 }, 128, 128, 128, 1, 0 }, /* 199 - Plane Engine 1 */ - { { 202, 0 }, 128, 128, 128, 0, 1 }, + { { 202, 0 }, 128, 128, 128, 0, 1 }, /* 200 - Plane Engine 2 */ - { { 203, 0 }, 128, 128, 128, 0, 1 }, + { { 203, 0 }, 128, 128, 128, 0, 1 }, /* 201 - Boat In */ - { { 204, 0 }, 128, 128, 128, 0, 1 }, + { { 204, 0 }, 128, 128, 128, 0, 1 }, /* 202 - Boat Out */ - { { 205, 0 }, 128, 128, 128, 0, 1 }, + { { 205, 0 }, 128, 128, 128, 0, 1 }, /* 203 - Final Fanfare! */ - { { 206, 0 }, 128, 128, 128, 1, 0 }, + { { 206, 0 }, 128, 128, 128, 1, 0 }, /* 204 - Frank Destroyed */ - { { 207, 0 }, 128, 128, 128, 1, 0 }, + { { 207, 0 }, 128, 128, 128, 1, 0 }, /* 205 - Jaspar Eats */ - { { 208, 0 }, 128, 128, 128, 0, 1 }, + { { 208, 0 }, 128, 128, 128, 0, 1 }, /* 206 - Compy Scream 1 */ - { { 209, 0 }, 128, 128, 128, 0, 1 }, + { { 209, 0 }, 128, 128, 128, 0, 1 }, /* 207 - Compy Scream 2 */ - { { 210, 0 }, 128, 128, 128, 0, 1 }, + { { 210, 0 }, 128, 128, 128, 0, 1 }, /* 208 - Punch Klunk Fanfare */ - { { 211, 0 }, 128, 128, 128, 1, 0 }, + { { 211, 0 }, 128, 128, 128, 1, 0 }, /* 209 - Talk Frank */ { { 212, 0 }, 128, 128, 128, 1, 0 } @@ -760,745 +760,745 @@ const songData Sound::_song[] = { const tuneData Sound::_tuneDemo[] = { /* 1 - Hotel Gangsters */ - { { 32, 0 }, { 0, 0 }, 1, 0 }, + { { 32, 0 }, { 0, 0 }, 1, 0 }, /* 2 - Hotel General */ - { { 26, 0 }, { 0, 0 }, 1, 0 }, + { { 26, 0 }, { 0, 0 }, 1, 0 }, /* 3 - Jungle */ - { { 15, 0 }, { 0, 0 }, 1, 0 }, + { { 15, 0 }, { 0, 0 }, 1, 0 }, /* 4 - Jungle */ - { { 17, 0 }, { 0, 0 }, 1, 0 }, + { { 17, 0 }, { 0, 0 }, 1, 0 }, /* 5 - Jungle */ - { { 18, 0 }, { 0, 0 }, 1, 0 }, + { { 18, 0 }, { 0, 0 }, 1, 0 }, /* 6 - Jungle */ - { { 7, 8, 9, 10, 11, 12, 13, 14, 0 }, { 0, 0 }, 0, 0 }, + { { 7, 8, 9, 10, 11, 12, 13, 14, 0 }, { 0, 0 }, 0, 0 }, /* 7 - Waterfall On */ - { { 3, 0 }, { 0, 0 }, 1, 0 }, + { { 3, 0 }, { 0, 0 }, 1, 0 }, /* 8 - Vnormal */ - { { 1, 0 }, { 0, 0 }, 1, 0 }, + { { 1, 0 }, { 0, 0 }, 1, 0 }, /* 9 - Trader Bob */ - { { 1, 0 }, { 0, 0 }, 1, 0 }, + { { 1, 0 }, { 0, 0 }, 1, 0 }, /* 10 - Jetty Music */ - { { 37, 0 }, { 0, 0 }, 1, 0 }, + { { 37, 0 }, { 0, 0 }, 1, 0 }, /* 11 - Ferry Music */ - { { 38, 0 }, { 0, 0 }, 1, 0 }, + { { 38, 0 }, { 0, 0 }, 1, 0 }, /* 12 - Temple Upstairs */ - { { 30, 0 }, { 0, 0 }, 1, 0 }, + { { 30, 0 }, { 0, 0 }, 1, 0 }, /* 13 - Temple Downstairs */ - { { 34, 0 }, { 0, 0 }, 1, 0 }, + { { 34, 0 }, { 0, 0 }, 1, 0 }, /* 14 - Temple Maze */ - { { 35, 0 }, { 0, 0 }, 1, 0 }, + { { 35, 0 }, { 0, 0 }, 1, 0 }, /* 15 - Temple Skull */ - { { 36, 0 }, { 0, 0 }, 1, 0 }, + { { 36, 0 }, { 0, 0 }, 1, 0 }, /* 16 - Johns Theme (Love Story) */ - { { 43, 0 }, { 0, 0 }, 1, 0 }, + { { 43, 0 }, { 0, 0 }, 1, 0 }, /* 17 - Vmedium */ - { { 28, 0 }, { 0, 0 }, 1, 0 }, + { { 28, 0 }, { 0, 0 }, 1, 0 }, /* 18 - Vsoft */ - { { 28, 0 }, { 0, 0 }, 1, 0 }, + { { 28, 0 }, { 0, 0 }, 1, 0 }, /* 19 - Floda Upstairs */ - { { 28, 0 }, { 0, 0 }, 1, 0 }, + { { 28, 0 }, { 0, 0 }, 1, 0 }, /* 20 - Floda General */ - { { 29, 0 }, { 0, 0 }, 1, 0 }, + { { 29, 0 }, { 0, 0 }, 1, 0 }, /* 21 - Klunks Room */ - { { 39, 0 }, { 0, 0 }, 1, 0 }, + { { 39, 0 }, { 0, 0 }, 1, 0 }, /* 22 - Hotel Lola */ - { { 31, 0 }, { 0, 0 }, 1, 0 }, + { { 31, 0 }, { 0, 0 }, 1, 0 }, /* 23 - Hotel Escape 1 */ - { { 33, 0 }, { 0, 0 }, 1, 0 }, + { { 33, 0 }, { 0, 0 }, 1, 0 }, /* 24 - Amazon Fortress */ - { { 40, 0 }, { 0, 0 }, 1, 0 }, + { { 40, 0 }, { 0, 0 }, 1, 0 }, /* 25 - Waterfall Off */ - { { -3, 0 }, { 0, 0 }, 1, 0 }, + { { -3, 0 }, { 0, 0 }, 1, 0 }, /* 26 - Wave Torch */ - { { 22, 0 }, { 121, 0 }, 2, 0 }, + { { 22, 0 }, { 121, 0 }, 2, 0 }, /* 27 - Zombies Rez Out */ - { { 25, 0 }, { 20, 0 }, 2, 0 }, + { { 25, 0 }, { 20, 0 }, 2, 0 }, /* 28 - Open Door (standard) */ - { { 20, 0 }, { 1, 0 }, 2, 0 }, + { { 20, 0 }, { 1, 0 }, 2, 0 }, /* 29 - Close Door (standard) */ - { { 21, 0 }, { 2, 0 }, 2, 0 }, + { { 21, 0 }, { 2, 0 }, 2, 0 }, /* 30 - Cloth Unrolls */ - { { 23, 0 }, { 51, 0 }, 2, 0 }, + { { 23, 0 }, { 51, 0 }, 2, 0 }, /* 31 - Snake Slithers Off */ - { { 24, 0 }, { 122, 0 }, 2, 0 }, + { { 24, 0 }, { 122, 0 }, 2, 0 }, /* 32 - Hotel Fanfare 2 */ - { { 69, 1003, 0 }, { 0, 0 }, 2, 0 }, + { { 69, 1003, 0 }, { 0, 0 }, 2, 0 }, /* 33 - Floda Secret */ - { { 28, 0 }, { 0, 0 }, 1, 0 }, + { { 28, 0 }, { 0, 0 }, 1, 0 }, /* 34 - Temple Fanfare 1 */ - { { 60, 162, 0 }, { 0, 0 }, 2, 0 }, + { { 60, 162, 0 }, { 0, 0 }, 2, 0 }, /* 35 - Commander Rocket 1 */ - { { 46, 0 }, { 0, 0 }, 1, 0 }, + { { 46, 0 }, { 0, 0 }, 1, 0 }, }; const tuneData Sound::_tune[] = { /* 1 - Hotel Gangsters */ - { { 32, 0 }, { 0, 0 }, 1, 0 }, + { { 32, 0 }, { 0, 0 }, 1, 0 }, /* 2 - Hotel General */ - { { 41, 0 }, { 0, 0 }, 1, 0 }, + { { 41, 0 }, { 0, 0 }, 1, 0 }, /* 3 - Jungle */ - { { 15, 16, 0 }, { 0, 0 }, 1, 0 }, + { { 15, 16, 0 }, { 0, 0 }, 1, 0 }, /* 4 - Jungle */ - { { 17, 0 }, { 0, 0 }, 1, 0 }, + { { 17, 0 }, { 0, 0 }, 1, 0 }, /* 5 - Jungle */ - { { 18, 0 }, { 0, 0 }, 1, 0 }, + { { 18, 0 }, { 0, 0 }, 1, 0 }, /* 6 - Jungle */ - { { 7, 8, 9, 10, 11, 12, 13, 14, 0 }, { 0, 0 }, 0, -10 }, + { { 7, 8, 9, 10, 11, 12, 13, 14, 0 }, { 0, 0 }, 0, -10 }, /* 7 - Waterfall On */ - { { 3, 0 }, { 0, 0 }, 1, 0 }, + { { 3, 0 }, { 0, 0 }, 1, 0 }, /* 8 - Vnormal */ - { { 23, 0 }, { 0, 0 }, 1, 0 }, + { { 23, 0 }, { 0, 0 }, 1, 0 }, /* 9 - Trader Bob */ - { { 23, 0 }, { 0, 0 }, 1, 0 }, + { { 23, 0 }, { 0, 0 }, 1, 0 }, /* 10 - Jetty Music */ - { { 37, 0 }, { 0, 0 }, 1, 0 }, + { { 37, 0 }, { 0, 0 }, 1, 0 }, /* 11 - Ferry Music */ - { { 38, 0 }, { 0, 0 }, 1, 0 }, + { { 38, 0 }, { 0, 0 }, 1, 0 }, /* 12 - Temple Upstairs */ - { { 30, 0 }, { 0, 0 }, 1, 0 }, + { { 30, 0 }, { 0, 0 }, 1, 0 }, /* 13 - Temple Downstairs */ - { { 34, 36, 56, 0 }, { 0, 0 }, 0, 0 }, + { { 34, 36, 56, 0 }, { 0, 0 }, 0, 0 }, /* 14 - Temple Maze */ - { { 87, 35, 0 }, { 0, 0 }, 1, 0 }, + { { 87, 35, 0 }, { 0, 0 }, 1, 0 }, /* 15 - Temple Skull */ - { { 76, 0 }, { 0, 0 }, 1, 0 }, + { { 76, 0 }, { 0, 0 }, 1, 0 }, /* 16 - Johns Theme (Love Story) */ - { { 44, 0 }, { 0, 0 }, 1, 0 }, + { { 44, 0 }, { 0, 0 }, 1, 0 }, /* 17 - Vmedium */ - { { 28, 0 }, { 0, 0 }, 1, 0 }, + { { 28, 0 }, { 0, 0 }, 1, 0 }, /* 18 - Vsoft */ - { { 28, 0 }, { 0, 0 }, 1, 0 }, + { { 28, 0 }, { 0, 0 }, 1, 0 }, /* 19 - Floda Upstairs */ - { { 28, 39, 0 }, { 0, 0 }, 0, 0 }, + { { 28, 39, 0 }, { 0, 0 }, 0, 0 }, /* 20 - Floda General */ - { { 89, 63, 64, 65, 0 }, { 0, 0 }, 0, 0 }, + { { 89, 63, 64, 65, 0 }, { 0, 0 }, 0, 0 }, /* 21 - Klunks Room */ - { { 43, 0 }, { 0, 0 }, 1, 0 }, + { { 43, 0 }, { 0, 0 }, 1, 0 }, /* 22 - Hotel Lola */ - { { 31, 0 }, { 0, 0 }, 1, 0 }, + { { 31, 0 }, { 0, 0 }, 1, 0 }, /* 23 - Hotel Escape 1 */ - { { 52, 0 }, { 0, 0 }, 1, 0 }, + { { 52, 0 }, { 0, 0 }, 1, 0 }, /* 24 - Amazon Fortress */ - { { 40, 0 }, { 0, 0 }, 1, 0 }, + { { 40, 0 }, { 0, 0 }, 1, 0 }, /* 25 - Waterfall Off */ - { {-3, 0 }, { 0, 0 }, 1, 0 }, + { {-3, 0 }, { 0, 0 }, 1, 0 }, /* 26 - Wave Torch */ - { { 0, 0 }, { 121, 0 }, 2, 0 }, + { { 0, 0 }, { 121, 0 }, 2, 0 }, /* 27 - Zombies Rez Out */ - { { 0, 0 }, { 20, 0 }, 2, 0 }, + { { 0, 0 }, { 20, 0 }, 2, 0 }, /* 28 - Open Door (standard) */ - { { 0, 0 }, { 1, 0 }, 2, 0 }, + { { 0, 0 }, { 1, 0 }, 2, 0 }, /* 29 - Close Door (standard) */ - { { 0, 0 }, { 2, 0 }, 2, 0 }, + { { 0, 0 }, { 2, 0 }, 2, 0 }, /* 30 - Cloth Unrolls */ - { { 0, 0 }, { 51, 0 }, 2, 0 }, + { { 0, 0 }, { 51, 0 }, 2, 0 }, /* 31 - Snake Slithers Off */ - { { 0, 0 }, { 122, 0 }, 2, 0 }, + { { 0, 0 }, { 122, 0 }, 2, 0 }, /* 32 - Hotel Fanfare 2 */ - { { 69, 2000, 0 }, { 0, 0 }, 2, 0 }, + { { 69, 2000, 0 }, { 0, 0 }, 2, 0 }, /* 33 - Floda Secret */ - { { 29, 42, 0 }, { 0, 0 }, 1, 0 }, + { { 29, 42, 0 }, { 0, 0 }, 1, 0 }, /* 34 - Temple Fanfare 1 */ - { { 70, 2000, 0 }, { 0, 0 }, 2, 0 }, + { { 70, 2000, 0 }, { 0, 0 }, 2, 0 }, /* 35 - Commander Rocket 1 */ - { { 45, 0 }, { 0, 0 }, 2, 0 }, + { { 45, 0 }, { 0, 0 }, 2, 0 }, /* 36 - Hotel Escape 2 */ - { { 52, 0 }, { 0, 0 }, 1, 0 }, + { { 52, 0 }, { 0, 0 }, 1, 0 }, /* 37 - Back of Truck */ - { { 51, 48, 33, 54, 52, 0 }, { 0, 0 }, 1, 0 }, + { { 51, 48, 33, 54, 52, 0 }, { 0, 0 }, 1, 0 }, /* 38 - Hotel Fanfare 1 */ - { { 67, 2000, 0 }, { 0, 0 }, 2, 0 }, + { { 67, 2000, 0 }, { 0, 0 }, 2, 0 }, /* 39 - Truck Fanfare */ - { { 67, 177, 0 }, { 0, 0 }, 2, 0 }, + { { 67, 177, 0 }, { 0, 0 }, 2, 0 }, /* 40 - Airport */ { { 81, 0 }, { 0, 0 }, 1, 0 }, - + /* 41 - Plane Leaves */ - { { 68, 1198, 0 }, { 0, 0 }, 2, 0 }, + { { 68, 1198, 0 }, { 0, 0 }, 2, 0 }, /* 42 - Arrive Hotel */ - { { 26, 0 }, { 0, 0 }, 1, 0 }, + { { 26, 0 }, { 0, 0 }, 1, 0 }, /* 43 - Jungle Fanfare */ - { { 68, 2000, 0 }, { 0, 0 }, 2, 0 }, + { { 68, 2000, 0 }, { 0, 0 }, 2, 0 }, /* 44 - General Fanfare */ - { { 57, 2000, 0 }, { 0, 0 }, 2, 0 }, + { { 57, 2000, 0 }, { 0, 0 }, 2, 0 }, /* 45 - Johns Room */ - { { 90, 0 }, { 0, 0 }, 1, 0 }, + { { 90, 0 }, { 0, 0 }, 1, 0 }, /* 46 - Floda Lab */ - { { 92, 0 }, { 0, 0 }, 1, 0 }, + { { 92, 0 }, { 0, 0 }, 1, 0 }, /* 47 - Azura's Theme */ - { { 80, 0 }, { 0, 0 }, 1, 0 }, + { { 80, 0 }, { 0, 0 }, 1, 0 }, /* 48 - Use Record */ - { { 91, 2000, 0 }, { 0, 0 }, 2, 0 }, + { { 91, 2000, 0 }, { 0, 0 }, 2, 0 }, /* 49 - Franks Theme */ - { { 77, 0 }, { 0, 0 }, 1, 0 }, + { { 77, 0 }, { 0, 0 }, 1, 0 }, /* 50 - Anderson Doubts */ - { { 75, 0 }, { 0, 0 }, 1, 0 }, + { { 75, 0 }, { 0, 0 }, 1, 0 }, /* 51 - Bud and Lou Theme */ - { { 94, 1003, 0 }, { 0, 0 }, 1, 0 }, + { { 94, 1003, 0 }, { 0, 0 }, 1, 0 }, /* 52 - Gorilla Theme */ - { { 97, 1003, 0 }, { 0, 0 }, 1, 0 }, + { { 97, 1003, 0 }, { 0, 0 }, 1, 0 }, /* 53 - Missionaries Theme */ - { { 98, 1003, 0 }, { 0, 0 }, 1, 0 }, + { { 98, 1003, 0 }, { 0, 0 }, 1, 0 }, /* 54 - Sloth Theme */ - { { 100, 1003, 0 }, { 0, 0 }, 1, 0 }, + { { 100, 1003, 0 }, { 0, 0 }, 1, 0 }, /* 55 - Amazon Dungeon */ - { { 96, 0 }, { 0, 0 }, 1, 0 }, + { { 96, 0 }, { 0, 0 }, 1, 0 }, /* 56 - Throne Room */ - { { 78, 0 }, { 0, 0 }, 1, 0 }, + { { 78, 0 }, { 0, 0 }, 1, 0 }, /* 57 - Temple Puzzle */ - { { 88, 0 }, { 0, 0 }, 1, 0 }, + { { 88, 0 }, { 0, 0 }, 1, 0 }, /* 58 - Temple Fountain Room */ - { { 55, 0 }, { 0, 0 }, 1, 0 }, + { { 55, 0 }, { 0, 0 }, 1, 0 }, /* 59 - Light Switch */ - { { 0, 0 }, { 4, 0 }, 2, 0 }, + { { 0, 0 }, { 4, 0 }, 2, 0 }, /* 60 - Hydraulic Open */ - { { 0, 0 }, { 7, 0 }, 2, 0 }, + { { 0, 0 }, { 7, 0 }, 2, 0 }, /* 61 - Hydraulic Close */ - { { 0, 0 }, { 8, 0 }, 2, 0 }, + { { 0, 0 }, { 8, 0 }, 2, 0 }, /* 62 - Close Door (metal) */ - { { 0, 0 }, { 9, 0 }, 2, 0 }, + { { 0, 0 }, { 9, 0 }, 2, 0 }, /* 63 - Small Hatch Close */ - { { 0, 0 }, { 10, 0 }, 2, 0 }, + { { 0, 0 }, { 10, 0 }, 2, 0 }, /* 64 - Scissors Snip */ - { { 0, 0 }, { 5, 0 }, 2, 0 }, + { { 0, 0 }, { 5, 0 }, 2, 0 }, /* 65 - Pick up Sticky */ - { { 0, 0 }, { 6, 0 }, 2, 0 }, + { { 0, 0 }, { 6, 0 }, 2, 0 }, /* 66 - Oracle Rezzes In */ - { { 0, 0 }, { 11, 0 }, 2, 0 }, + { { 0, 0 }, { 11, 0 }, 2, 0 }, /* 67 - Sparkle SFX */ - { { 0, 0 }, { 12, 0 }, 2, 0 }, + { { 0, 0 }, { 12, 0 }, 2, 0 }, /* 68 - Splorch! */ - { { 0, 0 }, { 13, 0 }, 2, 0 }, + { { 0, 0 }, { 13, 0 }, 2, 0 }, /* 69 - Pour Liquid */ - { { 0, 0 }, { 3, 0 }, 2, 0 }, + { { 0, 0 }, { 3, 0 }, 2, 0 }, /* 70 - End Credit Medley */ - { { 95, 0 }, { 0, 0 }, 1, 0 }, + { { 95, 0 }, { 0, 0 }, 1, 0 }, /* 71 - Dino Ray */ - { { 0, 0 }, { 14, 0 }, 2, 0 }, + { { 0, 0 }, { 14, 0 }, 2, 0 }, /* 72 - Squish! */ - { { 0, 0 }, { 15, 0 }, 2, 0 }, + { { 0, 0 }, { 15, 0 }, 2, 0 }, /* 73 - Robot Laser */ - { { 0, 0 }, { 16, 0 }, 2, 0 }, + { { 0, 0 }, { 16, 0 }, 2, 0 }, /* 74 - Thud wood light */ - { { 0, 0 }, { 17, 0 }, 2, 0 }, + { { 0, 0 }, { 17, 0 }, 2, 0 }, /* 75 - Thud wood deep */ - { { 0, 0 }, { 18, 0 }, 2, 0 }, + { { 0, 0 }, { 18, 0 }, 2, 0 }, /* 76 - Thud metallic */ - { { 0, 0 }, { 19, 0 }, 2, 0 }, + { { 0, 0 }, { 19, 0 }, 2, 0 }, /* 77 - Cut Coconut */ - { { 0, 0 }, { 22, 0 }, 2, 0 }, + { { 0, 0 }, { 22, 0 }, 2, 0 }, /* 78 - Thud Stone */ - { { 0, 0 }, { 23, 0 }, 2, 0 }, + { { 0, 0 }, { 23, 0 }, 2, 0 }, /* 79 - Cloth Slide 1 */ - { { 0, 0 }, { 24, 0 }, 2, 0 }, + { { 0, 0 }, { 24, 0 }, 2, 0 }, /* 80 - Open Chest */ - { { 0, 0 }, { 25, 0 }, 2, 0 }, + { { 0, 0 }, { 25, 0 }, 2, 0 }, /* 81 - Close Chest */ - { { 0, 0 }, { 26, 0 }, 2, 0 }, + { { 0, 0 }, { 26, 0 }, 2, 0 }, /* 82 - Open Drawer */ - { { 0, 0 }, { 27, 0 }, 2, 0 }, + { { 0, 0 }, { 27, 0 }, 2, 0 }, /* 83 - Truck door closes */ - { { 0, 0 }, { 28, 0 }, 2, 0 }, + { { 0, 0 }, { 28, 0 }, 2, 0 }, /* 84 - Truck Starts */ - { { 0, 0 }, { 29, 0 }, 2, 0 }, + { { 0, 0 }, { 29, 0 }, 2, 0 }, /* 85 - Truck Drives Off */ - { { 0, 0 }, { 30, 0 }, 2, 0 }, + { { 0, 0 }, { 30, 0 }, 2, 0 }, /* 86 - Fish Splash */ - { { 0, 0 }, { 31, 0 }, 2, 0 }, + { { 0, 0 }, { 31, 0 }, 2, 0 }, /* 87 - Close Drawer/Push Ladder */ - { { 0, 0 }, { 33, 0 }, 2, 0 }, + { { 0, 0 }, { 33, 0 }, 2, 0 }, /* 88 - Agression Enhancer */ - { { 0, 0 }, { 32, 0 }, 2, 0 }, + { { 0, 0 }, { 32, 0 }, 2, 0 }, /* 89 - Stone Door Grind 1 */ - { { 0, 0 }, { 78, 0 }, 2, 0 }, + { { 0, 0 }, { 78, 0 }, 2, 0 }, /* 90 - Prequel 1 */ - { { 20, 0 }, { 0, 0 }, 1, 0 }, + { { 20, 0 }, { 0, 0 }, 1, 0 }, /* 91 - Intro Credits */ - { { 21, 0 }, { 0, 0 }, 2, 0 }, + { { 21, 0 }, { 0, 0 }, 2, 0 }, /* 92 - Valley 1 */ - { { 71, 0 }, { 0, 0 }, 1, 0 }, + { { 71, 0 }, { 0, 0 }, 1, 0 }, /* 93 - Valley 3 */ - { { 73, 0 }, { 0, 0 }, 1, 0 }, + { { 73, 0 }, { 0, 0 }, 1, 0 }, /* 94 - Fight Music */ - { { 72, 0 }, { 0, 0 }, 1, 0 }, + { { 72, 0 }, { 0, 0 }, 1, 0 }, /* 95 - Confrontation 1 */ - { { 93, 0 }, { 0, 0 }, 1, 0 }, + { { 93, 0 }, { 0, 0 }, 1, 0 }, /* 96 - Confrontation 2 */ - { { 74, 0 }, { 0, 0 }, 1, 0 }, + { { 74, 0 }, { 0, 0 }, 1, 0 }, /* 97 - Plane Hatch Open */ - { { 0, 0 }, { 35, 0 }, 2, 0 }, + { { 0, 0 }, { 35, 0 }, 2, 0 }, /* 98 - Plane Hatch Close */ - { { 0, 0 }, { 36, 0 }, 2, 0 }, + { { 0, 0 }, { 36, 0 }, 2, 0 }, /* 99 - Tie Vines */ - { { 0, 0 }, { 37, 0 }, 2, 0 }, + { { 0, 0 }, { 37, 0 }, 2, 0 }, /* 100 - Pterodactyl */ - { { 0, 0 }, { 38, 0 }, 2, 0 }, + { { 0, 0 }, { 38, 0 }, 2, 0 }, /* 101 - Beef Jerky Splash */ - { { 0, 0 }, { 39, 0 }, 2, 0 }, + { { 0, 0 }, { 39, 0 }, 2, 0 }, /* 102 - Piranha Burp */ - { { 0, 0 }, { 40, 0 }, 2, 0 }, + { { 0, 0 }, { 40, 0 }, 2, 0 }, /* 103 - Falling Vine */ - { { 0, 0 }, { 41, 0 }, 2, 0 }, + { { 0, 0 }, { 41, 0 }, 2, 0 }, /* 104 - Stone Door Grind 2 */ - { { 0, 0 }, { 79, 0 }, 2, 0 }, + { { 0, 0 }, { 79, 0 }, 2, 0 }, /* 105 - Stone Grind (light) */ - { { 0, 0 }, { 82, 0 }, 2, 0 }, + { { 0, 0 }, { 82, 0 }, 2, 0 }, /* 106 - Ape Takes Off Mask */ - { { 0, 0 }, { 44, 0 }, 2, 0 }, + { { 0, 0 }, { 44, 0 }, 2, 0 }, /* 107 - Bark Breaks */ - { { 0, 0 }, { 45, 0 }, 2, 0 }, + { { 0, 0 }, { 45, 0 }, 2, 0 }, /* 108 - Stone Click */ - { { 0, 0 }, { 46, 0 }, 2, 0 }, + { { 0, 0 }, { 46, 0 }, 2, 0 }, /* 109 - Sproing! */ - { { 0, 0 }, { 42, 0 }, 2, 0 }, + { { 0, 0 }, { 42, 0 }, 2, 0 }, /* 110 - Cash Register */ - { { 0, 0 }, { 48, 0 }, 2, 0 }, + { { 0, 0 }, { 48, 0 }, 2, 0 }, /* 111 - Squeaky Toy */ - { { 0, 0 }, { 49, 0 }, 2, 0 }, + { { 0, 0 }, { 49, 0 }, 2, 0 }, /* 112 - Falling Chains */ - { { 0, 0 }, { 50, 0 }, 2, 0 }, + { { 0, 0 }, { 50, 0 }, 2, 0 }, /* 113 - Open Locker Door */ - { { 0, 0 }, { 52, 0 }, 2, 0 }, + { { 0, 0 }, { 52, 0 }, 2, 0 }, /* 114 - Close Locker Door */ - { { 0, 0 }, { 53, 0 }, 2, 0 }, + { { 0, 0 }, { 53, 0 }, 2, 0 }, /* 115 - Rub Pencil */ - { { 0, 0 }, { 54, 0 }, 2, 0 }, + { { 0, 0 }, { 54, 0 }, 2, 0 }, /* 116 - Open Safe */ - { { 0, 0 }, { 55, 0 }, 2, 0 }, + { { 0, 0 }, { 55, 0 }, 2, 0 }, /* 117 - Close Safe */ - { { 0, 0 }, { 56, 0 }, 2, 0 }, + { { 0, 0 }, { 56, 0 }, 2, 0 }, /* 118 - Push Chair */ - { { 0, 0 }, { 57, 0 }, 2, 0 }, + { { 0, 0 }, { 57, 0 }, 2, 0 }, /* 119 - Snake Hiss */ - { { 0, 0 }, { 58, 0 }, 2, 0 }, + { { 0, 0 }, { 58, 0 }, 2, 0 }, /* 120 - Oracle Rezzes Out */ - { { 0, 0 }, { 59, 0 }, 2, 0 }, + { { 0, 0 }, { 59, 0 }, 2, 0 }, /* 121 - Wall Crumbles */ - { { 0, 0 }, { 60, 0 }, 2, 0 }, + { { 0, 0 }, { 60, 0 }, 2, 0 }, /* 122 - Crypt Crumbles */ - { { 0, 0 }, { 61, 0 }, 2, 0 }, + { { 0, 0 }, { 61, 0 }, 2, 0 }, /* 123 - Joe Sucked Up */ - { { 0, 0 }, { 63, 0 }, 2, 0 }, + { { 0, 0 }, { 63, 0 }, 2, 0 }, /* 124 - Rocket Pack Zoom */ - { { 0, 0 }, { 47, 0 }, 2, 0 }, + { { 0, 0 }, { 47, 0 }, 2, 0 }, /* 125 - Piranha Splash */ - { { 0, 0 }, { 83, 0 }, 2, 0 }, + { { 0, 0 }, { 83, 0 }, 2, 0 }, /* 126 - Snap Branch */ - { { 0, 0 }, { 66, 0 }, 2, 0 }, + { { 0, 0 }, { 66, 0 }, 2, 0 }, /* 127 - Dino Horn */ - { { 0, 0 }, { 67, 0 }, 2, 0 }, + { { 0, 0 }, { 67, 0 }, 2, 0 }, /* 128 - Tyre Screech */ - { { 0, 0 }, { 68, 0 }, 2, 0 }, + { { 0, 0 }, { 68, 0 }, 2, 0 }, /* 129 - Oil Splat */ - { { 0, 0 }, { 70, 0 }, 2, 0 }, + { { 0, 0 }, { 70, 0 }, 2, 0 }, /* 130 - Punch */ - { { 0, 0 }, { 71, 0 }, 2, 0 }, + { { 0, 0 }, { 71, 0 }, 2, 0 }, /* 131 - Body Hits Ground */ - { { 0, 0 }, { 72, 0 }, 2, 0 }, + { { 0, 0 }, { 72, 0 }, 2, 0 }, /* 132 - Chicken */ - { { 0, 0 }, { 69, 0 }, 2, 0 }, + { { 0, 0 }, { 69, 0 }, 2, 0 }, /* 133 - Open Sarcophagus */ - { { 0, 0 }, { 21, 0 }, 2, 0 }, + { { 0, 0 }, { 21, 0 }, 2, 0 }, /* 134 - Close Sarcophagus */ - { { 0, 0 }, { 21, 0 }, 2, 0 }, + { { 0, 0 }, { 21, 0 }, 2, 0 }, /* 135 - Creaking Stick */ - { { 0, 0 }, { 62, 0 }, 2, 0 }, + { { 0, 0 }, { 62, 0 }, 2, 0 }, /* 136 - Pick Hits Stone */ - { { 0, 0 }, { 73, 0 }, 2, 0 }, + { { 0, 0 }, { 73, 0 }, 2, 0 }, /* 137 - Stalactite Crumbles */ - { { 0, 0 }, { 74, 0 }, 2, 0 }, + { { 0, 0 }, { 74, 0 }, 2, 0 }, /* 138 - Tic-Toc */ - { { 0, 0 }, { 76, 0 }, 2, 0 }, + { { 0, 0 }, { 76, 0 }, 2, 0 }, /* 139 - Stone Grind (heavy) */ - { { 0, 0 }, { 81, 0 }, 2, 0 }, + { { 0, 0 }, { 81, 0 }, 2, 0 }, /* 140 - Explosion */ - { { 0, 0 }, { 77, 0 }, 2, 0 }, + { { 0, 0 }, { 77, 0 }, 2, 0 }, /* 141 - Cloth Slide 2 */ - { { 0, 0 }, { 84, 0 }, 2, 0 }, + { { 0, 0 }, { 84, 0 }, 2, 0 }, /* 142 - Temple Laser */ - { { 0, 0 }, { 85, 0 }, 2, 0 }, + { { 0, 0 }, { 85, 0 }, 2, 0 }, /* 143 - Dino Transformation */ - { { 0, 0 }, { 86, 0 }, 2, 0 }, + { { 0, 0 }, { 86, 0 }, 2, 0 }, /* 144 - Experimental Laser */ - { { 0, 0 }, { 87, 0 }, 2, 0 }, + { { 0, 0 }, { 87, 0 }, 2, 0 }, /* 145 - Stone Grind (medium) */ - { { 0, 0 }, { 88, 0 }, 2, 0 }, + { { 0, 0 }, { 88, 0 }, 2, 0 }, /* 146 - Weeping God Grind */ - { { 0, 0 }, { 89, 0 }, 2, 0 }, + { { 0, 0 }, { 89, 0 }, 2, 0 }, /* 147 - Alien Hum */ - { { 0, 0 }, { 90, 0 }, 2, 0 }, + { { 0, 0 }, { 90, 0 }, 2, 0 }, /* 148 - Alien Puzzle */ - { { 0, 0 }, { 91, 0 }, 2, 0 }, + { { 0, 0 }, { 91, 0 }, 2, 0 }, /* 149 - Vacuum On */ - { { 0, 0 }, { 92, 0 }, 2, 0 }, + { { 0, 0 }, { 92, 0 }, 2, 0 }, /* 150 - Vacuum Off */ - { { 0, 0 }, { 93, 0 }, 2, 0 }, + { { 0, 0 }, { 93, 0 }, 2, 0 }, /* 151 - Elevator Starts */ - { { 0, 0 }, { 94, 0 }, 2, 0 }, + { { 0, 0 }, { 94, 0 }, 2, 0 }, /* 152 - Mummy Crumbles */ - { { 0, 0 }, { 95, 0 }, 2, 0 }, + { { 0, 0 }, { 95, 0 }, 2, 0 }, /* 153 - Temple Green Circle */ - { { 0, 0 }, { 96, 0 }, 2, 0 }, + { { 0, 0 }, { 96, 0 }, 2, 0 }, /* 154 - Rattle Bars */ - { { 0, 0 }, { 97, 0 }, 2, 0 }, + { { 0, 0 }, { 97, 0 }, 2, 0 }, /* 155 - Door Dissolves */ - { { 0, 0 }, { 98, 0 }, 2, 0 }, + { { 0, 0 }, { 98, 0 }, 2, 0 }, /* 156 - Altar Slides */ - { { 0, 0 }, { 99, 0 }, 2, 0 }, + { { 0, 0 }, { 99, 0 }, 2, 0 }, /* 157 - Light Torch */ - { { 0, 0 }, { 100, 0 }, 2, 0 }, + { { 0, 0 }, { 100, 0 }, 2, 0 }, /* 158 - Stamp Sound */ - { { 0, 0 }, { 34, 0 }, 2, 0 }, + { { 0, 0 }, { 34, 0 }, 2, 0 }, /* 159 - Plaster Loud */ - { { 0, 0 }, { 102, 0 }, 2, 0 }, + { { 0, 0 }, { 102, 0 }, 2, 0 }, /* 160 - Sparky Bathtub */ - { { 0, 0 }, { 103, 0 }, 2, 0 }, + { { 0, 0 }, { 103, 0 }, 2, 0 }, /* 161 - Ape Rezzes Out */ - { { 0, 0 }, { 104, 0 }, 2, 0 }, + { { 0, 0 }, { 104, 0 }, 2, 0 }, /* 162 - Song 159 */ - { { 0, 0 }, { 0, 0 }, 2, 0 }, + { { 0, 0 }, { 0, 0 }, 2, 0 }, /* 163 - Song 160 */ - { { 0, 0 }, { 0, 0 }, 2, 0 }, + { { 0, 0 }, { 0, 0 }, 2, 0 }, /* 164 - Song 161 */ - { { 0, 0 }, { 0, 0 }, 2, 0 }, + { { 0, 0 }, { 0, 0 }, 2, 0 }, /* 165 - Piranhas Swim */ - { { 0, 0 }, { 105, 0 }, 2, 0 }, + { { 0, 0 }, { 105, 0 }, 2, 0 }, /* 166 - Prison/Dungeon Door */ - { { 0, 0 }, { 43, 0 }, 2, 0 }, + { { 0, 0 }, { 43, 0 }, 2, 0 }, /* 167 - Fight Explosion */ - { { 0, 0 }, { 80, 0 }, 2, 0 }, + { { 0, 0 }, { 80, 0 }, 2, 0 }, /* 168 - Press Button */ - { { 0, 0 }, { 65, 0 }, 2, 0 }, + { { 0, 0 }, { 65, 0 }, 2, 0 }, /* 169 - Pull Lever */ - { { 0, 0 }, { 107, 0 }, 2, 0 }, + { { 0, 0 }, { 107, 0 }, 2, 0 }, /* 170 - Wrong Code */ - { { 0, 0 }, { 108, 0 }, 2, 0 }, + { { 0, 0 }, { 108, 0 }, 2, 0 }, /* 171 - Correct Code */ - { { 0, 0 }, { 109, 0 }, 2, 0 }, + { { 0, 0 }, { 109, 0 }, 2, 0 }, /* 172 - Sizzle */ - { { 0, 0 }, { 110, 0 }, 2, 0 }, + { { 0, 0 }, { 110, 0 }, 2, 0 }, /* 173 - Money In Slot */ - { { 0, 0 }, { 111, 0 }, 2, 0 }, + { { 0, 0 }, { 111, 0 }, 2, 0 }, /* 174 - Lightning Crack */ - { { 0, 0 }, { 112, 0 }, 2, 0 }, + { { 0, 0 }, { 112, 0 }, 2, 0 }, /* 175 - Machine Gun Fire */ - { { 0, 0 }, { 113, 0 }, 2, 0 }, + { { 0, 0 }, { 113, 0 }, 2, 0 }, /* 176 - Cage Descends */ - { { 0, 0 }, { 114, 0 }, 2, 0 }, + { { 0, 0 }, { 114, 0 }, 2, 0 }, /* 177 - Chair Activates */ - { { 0, 0 }, { 115, 0 }, 2, 0 }, + { { 0, 0 }, { 115, 0 }, 2, 0 }, /* 178 - Robot Powers On */ - { { 0, 0 }, { 116, 0 }, 2, 0 }, + { { 0, 0 }, { 116, 0 }, 2, 0 }, /* 179 - Grow Big */ - { { 0, 0 }, { 117, 0 }, 2, 0 }, + { { 0, 0 }, { 117, 0 }, 2, 0 }, /* 180 - Eat Food */ - { { 0, 0 }, { 118, 0 }, 2, 0 }, + { { 0, 0 }, { 118, 0 }, 2, 0 }, /* 181 - Head Shrink */ - { { 0, 0 }, { 119, 0 }, 2, 0 }, + { { 0, 0 }, { 119, 0 }, 2, 0 }, /* 182 - Grinding Gears */ - { { 0, 0 }, { 120, 0 }, 2, 0 }, + { { 0, 0 }, { 120, 0 }, 2, 0 }, /* 183 - Chair Splash */ - { { 0, 0 }, { 123, 0 }, 2, 0 }, + { { 0, 0 }, { 123, 0 }, 2, 0 }, /* 184 - Deflect Laser */ - { { 0, 0 }, { 124, 0 }, 2, 0 }, + { { 0, 0 }, { 124, 0 }, 2, 0 }, /* 185 - Zap Frank */ - { { 0, 0 }, { 125, 0 }, 2, 0 }, + { { 0, 0 }, { 125, 0 }, 2, 0 }, /* 186 - Frank Transforms */ - { { 0, 0 }, { 126, 0 }, 2, 0 }, + { { 0, 0 }, { 126, 0 }, 2, 0 }, /* 187 - Alarm Clock */ - { { 0, 0 }, { 127, 0 }, 2, 0 }, + { { 0, 0 }, { 127, 0 }, 2, 0 }, /* 188 - Slide Chute */ - { { 0, 0 }, { 64, 0 }, 2, 0 }, + { { 0, 0 }, { 64, 0 }, 2, 0 }, /* 189 - Puff */ - { { 0, 0 }, { 128, 0 }, 2, 0 }, + { { 0, 0 }, { 128, 0 }, 2, 0 }, /* 190 - Bite */ - { { 0, 0 }, { 129, 0 }, 2, 0 }, + { { 0, 0 }, { 129, 0 }, 2, 0 }, /* 191 - Stone Door Grind 2 */ - { { 0, 0 }, { 79, 0 }, 2, 0 }, + { { 0, 0 }, { 79, 0 }, 2, 0 }, /* 192 - Prequel 2 */ - { { 22, 0 }, { 0, 0 }, 1, 0 }, + { { 22, 0 }, { 0, 0 }, 1, 0 }, /* 193 - Prequel 3 */ - { { 24, 0 }, { 0, 0 }, 1, 0 }, + { { 24, 0 }, { 0, 0 }, 1, 0 }, /* 194 - Prequel 4 */ - { { 25, 0 }, { 0, 0 }, 1, 0 }, + { { 25, 0 }, { 0, 0 }, 1, 0 }, /* 195 - Stop Music */ - { { 1, 0 }, { 0, 0 }, 1, 0 }, + { { 1, 0 }, { 0, 0 }, 1, 0 }, /* 196 - Plane Flyby */ - { { 0, 0 }, { 101, 0 }, 2, 0 }, + { { 0, 0 }, { 101, 0 }, 2, 0 }, /* 197 - Commander Rocket 2 */ - { { 46, 0 }, { 0, 0 }, 1, 0 }, + { { 46, 0 }, { 0, 0 }, 1, 0 }, /* 198 - Commander Rocket 3 */ - { { 47, 0 }, { 0, 0 }, 1, 0 }, + { { 47, 0 }, { 0, 0 }, 1, 0 }, /* 199 - Rescue */ - { { 99, 0 }, { 0, 0 }, 1, 0 }, + { { 99, 0 }, { 0, 0 }, 1, 0 }, /* 200 - Slow Fanfare */ - { { 0, 0 }, { 0, 0 }, 1, 0 }, + { { 0, 0 }, { 0, 0 }, 1, 0 }, /* 201 - Plane Crash */ - { { 93, 0 }, { 0, 0 }, 1, 0 }, + { { 93, 0 }, { 0, 0 }, 1, 0 }, /* 202 - Plane Engine 1 */ - { { 0, 0 }, { 130, 0 }, 2, 0 }, + { { 0, 0 }, { 130, 0 }, 2, 0 }, /* 203 - Plane Engine 2 */ - { { 0, 0 }, { 131, 0 }, 2, 0 }, + { { 0, 0 }, { 131, 0 }, 2, 0 }, /* 204 - Boat In */ - { { 0, 0 }, { 132, 0 }, 2, 0 }, + { { 0, 0 }, { 132, 0 }, 2, 0 }, /* 205 - Boat Out */ - { { 0, 0 }, { 133, 0 }, 2, 0 }, + { { 0, 0 }, { 133, 0 }, 2, 0 }, /* 206 - Final Fanfare! */ - { { 21, 95, 21, 0 }, { 0, 0 }, 1, 0 }, + { { 21, 95, 21, 0 }, { 0, 0 }, 1, 0 }, /* 207 - Frank Destroyed */ - { { 25, 1044, 0 }, { 0, 0 }, 1, 0 }, + { { 25, 1044, 0 }, { 0, 0 }, 1, 0 }, /* 208 - Jaspar Eats */ - { { 0, 0 }, { 134, 0 }, 2, 0 }, + { { 0, 0 }, { 134, 0 }, 2, 0 }, /* 209 - Compy Scream 1 */ - { { 0, 0 }, { 135, 0 }, 2, 0 }, + { { 0, 0 }, { 135, 0 }, 2, 0 }, /* 210 - Compy Scream 2 */ - { { 0, 0 }, { 136, 0 }, 2, 0 }, + { { 0, 0 }, { 136, 0 }, 2, 0 }, /* 211 - Punch Klunk Fanfare */ - { { 69, 1017, 0 }, { 0, 0 }, 1, 0 }, + { { 69, 1017, 0 }, { 0, 0 }, 1, 0 }, /* 212 - Talk Frank */ { { 77, 1017, 0 }, { 0, 0 }, 1, 0 } @@ -1506,409 +1506,409 @@ const tuneData Sound::_tune[] = { const char *Sound::_sfxName[] = { /* 1 - Door Open (standard) */ - "116Bssss", + "116Bssss", /* 2 - Door Close (standard) */ - "105assss", + "105assss", /* 3 - Pour Liquid */ - "133sssss", + "133sssss", /* 4 - Light Switch */ - "27ssssss", + "27ssssss", /* 5 - Scissor Snip */ - "15ssssss", + "15ssssss", /* 6 - Pick up Sticky */ - "79ssssss", + "79ssssss", /* 7 - Hydraulic Doors Open */ - "96ssssss", + "96ssssss", /* 8 - Hydraulic Doors Close */ - "97ssssss", + "97ssssss", /* 9 - Metallic Door Slams */ - "105sssss", + "105sssss", /* 10 - Small Hatch Close */ - "106sssss", + "106sssss", /* 11 - Oracle Rezzes In */ - "132sssss", + "132sssss", /* 12 - Polish Sparkle */ - "132Cssss", + "132Cssss", /* 13 - Splorch! */ - "137Bssss", + "137Bssss", /* 14 - Dino Ray Gun */ - "138sssss", + "138sssss", /* 15 - Squish! */ - "137Assss", + "137Assss", /* 16 - Robot Laser */ - "61ssssss", + "61ssssss", /* 17 - Thud wood light */ - "109sssss", + "109sssss", /* 18 - Thud wood deep */ - "110sssss", + "110sssss", /* 19 - Thud metallic */ - "111sssss", + "111sssss", /* 20 - Zombies Rez Out */ - "77ssssss", + "77ssssss", /* 21 - Sarc Door Closes */ - "58ssssss", + "58ssssss", /* 22 - Thud breadboard fruit/Coconut */ - "131Assss", + "131Assss", /* 23 - Thud stone */ - "75ssssss", + "75ssssss", /* 24 - Cloth Slide 1 */ - "135sssss", + "135sssss", /* 25 - Open Chest */ - "112sssss", + "112sssss", /* 26 - Close Chest */ - "121sssss", + "121sssss", /* 27 - Open Drawer */ - "120sssss", + "120sssss", /* 28 - Truck door closes */ - "122sssss", + "122sssss", /* 29 - Truck Starts */ - "123Assss", + "123Assss", /* 30 - Truck Drives Off */ - "123Bssss", + "123Bssss", /* 31 - Fish Splash */ - "18ssssss", + "18ssssss", /* 32 - Agression Enhancer */ - "138Bssss", + "138Bssss", /* 33 - Close Drawer/Push Ladder */ - "113sssss", + "113sssss", /* 34 - *Stamp Sound */ - "40ssssss", + "40ssssss", /* 35 - plane hatch open */ - "3sssssss", + "3sssssss", /* 36 - plane hatch close */ - "4sssssss", + "4sssssss", /* 37 - tie vines */ - "11ssssss", + "11ssssss", /* 38 - Pterodactyl */ - "10ssssss", + "10ssssss", /* 39 - Beef Jerky Splash */ - "6sssssss", + "6sssssss", /* 40 - Piranha Burp */ - "7sssssss", + "7sssssss", /* 41 - Falling Vine */ - "13ssssss", + "13ssssss", /* 42 - Sproing! */ - "29ssssss", + "29ssssss", /* 43 - Prison/Dungeon Door */ - "33ssssss", + "33ssssss", /* 44 - Ape takes off mask */ - "24ssssss", + "24ssssss", /* 45 - Bark breaks */ - "25ssssss", + "25ssssss", /* 46 - Stone Click */ - "136sssss", + "136sssss", /* 47 - Rocket Pack Zoom */ - "1006ssss", + "1006ssss", /* 48 - Cash Register */ - "36ssssss", + "36ssssss", /* 49 - Squeaky Toy */ - "37ssssss", + "37ssssss", /* 50 - Falling Chains */ - "38ssssss", + "38ssssss", /* 51 - Cloth Unravels */ - "64ssssss", + "64ssssss", /* 52 - Open Locker Door */ - "48ssssss", + "48ssssss", /* 53 - Close Locker Door */ - "49ssssss", + "49ssssss", /* 54 - Rub Pencil on Pad */ - "50ssssss", + "50ssssss", /* 55 - Open Safe */ - "51ssssss", + "51ssssss", /* 56 - Close Safe */ - "52ssssss", + "52ssssss", /* 57 - Push Chair */ - "59ssssss", + "59ssssss", /* 58 - Snake Hiss */ - "83ssssss", + "83ssssss", /* 59 - Oracle Rezzes Out */ - "70ssssss", + "70ssssss", /* 60 - Wall Crumbles */ - "73Asssss", + "73Asssss", /* 61 - Crypt Crumbles */ - "76ssssss", + "76ssssss", /* 62 - Creaking Stick */ - "74Asssss", + "74Asssss", /* 63 - Joe Sucked Up */ - "80ssssss", + "80ssssss", /* 64 - Slide Chute */ - "114assss", + "114assss", /* 65 - Press Button */ - "1007ssss", + "1007ssss", /* 66 - Snap Branch */ - "101sssss", + "101sssss", /* 67 - Dino Horn */ - "103sssss", + "103sssss", /* 68 - Tyre Screech */ - "125sssss", + "125sssss", /* 69 - Chicken */ - "126sssss", + "126sssss", /* 70 - Oil Splat */ - "127sssss", + "127sssss", /* 71 - Punch */ - "128sssss", + "128sssss", /* 72 - Body Hits Ground */ - "129sssss", + "129sssss", /* 73 - Pick Hits Stone */ - "71ssssss", + "71ssssss", /* 74 - Stalactite Crumbles */ - "119sssss", + "119sssss", /* 75 - *Drip */ - "93ssssss", + "93ssssss", /* 76 - Tic-Toc */ - "42Bsssss", + "42Bsssss", /* 77 - Explosion */ - "88ssssss", + "88ssssss", /* 78 - Stone Door Grind 1 */ - "1001ssss", + "1001ssss", /* 79 - Stone Door Grind 2 */ - "1002ssss", + "1002ssss", /* 80 - *Fight Explosion */ - "1000ssss", + "1000ssss", /* 81 - Stone Grind (heavy) */ - "1003ssss", + "1003ssss", /* 82 - Stone Grind (light) */ - "89ssssss", + "89ssssss", /* 83 - Piranha Splash */ - "5sssssss", + "5sssssss", /* 84 - Cloth Slide 2 */ - "1005ssss", + "1005ssss", /* 85 - Temple Laser */ - "87ssssss", + "87ssssss", /* 86 - Dino Transformation */ - "55Bsssss", + "55Bsssss", /* 87 - Experimental Laser */ - "55ssssss", + "55ssssss", /* 88 - Stone Grind (medium) */ - "134sssss", + "134sssss", /* 89 - Weeping God Grind */ - "94ssssss", + "94ssssss", /* 90 - Alien Hum */ - "95ssssss", + "95ssssss", /* 91 - Alien Puzzle */ - "103Assss", + "103Assss", /* 92 - Vacuum On */ - "21ssssss", + "21ssssss", /* 93 - Vacuum Off */ - "21Csssss", + "21Csssss", /* 94 - Elevator Starts */ - "44ssssss", + "44ssssss", /* 95 - Mummy Crumbles */ - "68ssssss", + "68ssssss", /* 96 - Temple Green Circle */ - "60Bsssss", + "60Bsssss", /* 97 - Rattle Bars */ - "115sssss", + "115sssss", /* 98 - Door Dissolves */ - "56ssssss", + "56ssssss", /* 99 - Altar Slides */ - "85ssssss", + "85ssssss", /* 100 - Light Torch */ - "81ssssss", + "81ssssss", /* 101 - Plane Flyby */ - "1027ssss", + "1027ssss", /* 102 - Plaster Loud */ - "41Bsssss", + "41Bsssss", /* 103 - Sparky Bathtub */ - "73ssssss", + "73ssssss", /* 104 - Ape Rezzes Out */ - "14ssssss", + "14ssssss", /* 105 - Piranhas Swim */ - "17ssssss", + "17ssssss", /* 106 - *Gun Shot */ - "1004ssss", + "1004ssss", /* 107 - Pull Lever */ - "1008ssss", + "1008ssss", /* 108 - Wrong Code */ - "1009ssss", + "1009ssss", /* 109 - Correct Code */ - "1010ssss", + "1010ssss", /* 110 - Sizzle */ - "1011ssss", + "1011ssss", /* 111 - Money In Slot */ - "1012ssss", + "1012ssss", /* 112 - Lightning */ - "1013ssss", + "1013ssss", /* 113 - Machine Gun Fire */ - "1014ssss", + "1014ssss", /* 114 - Cage Descends */ - "1015ssss", + "1015ssss", /* 115 - Temple Chair Activates */ - "1016ssss", + "1016ssss", /* 116 - Robot Powers On */ - "1017ssss", + "1017ssss", /* 117 - Grow Big */ - "1018ssss", + "1018ssss", /* 118 - Eat Food */ - "1019ssss", + "1019ssss", /* 119 - Head Shrink */ - "1020ssss", + "1020ssss", /* 120 - Grinding Gears */ - "84ssssss", + "84ssssss", /* 121 - Wave Torch */ - "1021ssss", + "1021ssss", /* 122 - Snake Slithers Off */ - "1022ssss", + "1022ssss", /* 123 - Chair Splash */ - "26ssssss", + "26ssssss", /* 124 - Deflect Laser */ - "60ssssss", + "60ssssss", /* 125 - Zap Frank */ - "1023ssss", + "1023ssss", /* 126 - Frank Transforms */ - "1024ssss", + "1024ssss", /* 127 - Alarm Clock */ - "1025ssss", + "1025ssss", /* 128 - Puff */ - "35ssssss", + "35ssssss", /* 129 - Bite */ - "1026ssss", + "1026ssss", /* 130 - Plane Engine 1 */ - "1028ssss", + "1028ssss", /* 131 - Plane Engine 2 */ - "1029ssss", + "1029ssss", /* 132 - Boat In */ - "1030ssss", + "1030ssss", /* 133 - Boat Out */ - "1031ssss", + "1031ssss", /* 134 - Jaspar Eats */ - "1032ssss", + "1032ssss", /* 135 - Compy Scream 1 */ - "1033ssss", + "1033ssss", /* 136 - Compy Scream 2 */ "1034ssss" diff --git a/queen/queen.cpp b/queen/queen.cpp index 54b86fa17c..e8fb0b2e88 100644 --- a/queen/queen.cpp +++ b/queen/queen.cpp @@ -98,7 +98,7 @@ DetectedGameList Engine_QUEEN_detectGames(const FSList &fslist) { Common::File dataFile; dataFile.open(file->path().c_str()); assert(dataFile.isOpen()); - + if (0 == scumm_stricmp("queen.1", gameName)) { //an unmodified file detectedGames.push_back(determineTarget(dataFile.size())); } else if (0 == scumm_stricmp("queen.1c", gameName)) { //oh joy, it's a rebuilt file @@ -172,7 +172,7 @@ void QueenEngine::checkOptionSettings() { if (!_sound->speechOn()) { _subtitles = true; } - + // demo and interview versions don't have speech at all if (_sound->speechOn() && (_resource->isDemo() || _resource->isInterview())) { _sound->speechToggle(false); @@ -214,7 +214,7 @@ void QueenEngine::update(bool checkPlayerInput) { } BobSlot *joe = _graphics->bob(0); _display->update(joe->active, joe->x, joe->y); - + _input->checkKeys(); if (_input->debugger()) { _input->debuggerReset(); @@ -429,7 +429,7 @@ int QueenEngine::init(GameDetector &detector) { driver = MidiDriver_ADLIB_create(_mixer); else if (ConfMan.getBool("native_mt32") || (midiDriver == MD_MT32)) driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE); - + _music = new Music(driver, this); _music->hasNativeMT32(ConfMan.getBool("native_mt32") || (midiDriver == MD_MT32)); diff --git a/queen/queen.h b/queen/queen.h index f6e614885e..18247c6757 100644 --- a/queen/queen.h +++ b/queen/queen.h @@ -123,7 +123,7 @@ public: SAVESTATE_MAX = 100, AUTOSAVE_INTERVAL = 5 * 60 * 1000, AUTOSAVE_SLOT = 0xFF, - + MIN_TEXT_SPEED = 4, MAX_TEXT_SPEED = 100, MAX_MUSIC_VOLUME = 255 diff --git a/queen/resource.cpp b/queen/resource.cpp index 02ceab58a3..ddebe98f32 100644 --- a/queen/resource.cpp +++ b/queen/resource.cpp @@ -65,7 +65,7 @@ Resource::~Resource() { _resourceFile->close(); delete _resourceFile; - if (_resourceTable != _resourceTablePEM10) + if (_resourceTable != _resourceTablePEM10) delete[] _resourceTable; } @@ -124,7 +124,7 @@ bool Resource::findNormalVersion() { _compression = COMPRESSION_NONE; - // detect game version based on resource file size ; we try to + // detect game version based on resource file size ; we try to // verify that it is indeed the version we think it is later on const GameVersion *gameVersion = detectGameVersion(_resourceFile->size()); if (gameVersion == NULL) @@ -160,7 +160,7 @@ void Resource::checkJASVersion() { offset += JAS_VERSION_OFFSET_DEMO; else if (isInterview()) offset += JAS_VERSION_OFFSET_INTV; - else + else offset += JAS_VERSION_OFFSET_PC; _resourceFile->seek(offset); diff --git a/queen/resource.h b/queen/resource.h index 7e45a75453..7a3c914b4f 100644 --- a/queen/resource.h +++ b/queen/resource.h @@ -63,7 +63,7 @@ public: //! loads the specified from the resource file uint8 *loadFile(const char *filename, uint32 skipBytes = 0, uint32 *size = NULL, bool useMalloc = false); - + //! returns true if the file is present in the resource bool fileExists(const char *filename) const { return resourceEntry(filename) != NULL; } @@ -74,13 +74,13 @@ public: bool isInterview() const { return !strcmp(_versionString, "PEint"); } bool isFloppy() const { return _versionString[0] == 'P'; } bool isCD() const { return _versionString[0] == 'C'; } - + //! returns compression type for audio files uint8 compression() const { return _compression; } - + //! returns JAS version string (contains language, platform and version information) const char *JASVersion() const { return _versionString; } - + //! returns language of the game Language getLanguage() const; @@ -101,10 +101,10 @@ public: VER_COUNT = 13 }; - + enum { CURRENT_TBL_VERSION = 1 - }; + }; enum { JAS_VERSION_OFFSET_DEMO = 0x119A8, @@ -115,48 +115,48 @@ public: protected: Common::File *_resourceFile; - + //! compression type for audio files uint8 _compression; - + //! JAS version string of the game char _versionString[6]; - + //! number of entries in resource table uint32 _resourceEntries; - + ResourceEntry *_resourceTable; //! look for a normal queen version (ie. queen.1) bool findNormalVersion(); - + //! look for a compressed/rebuilt queen version (ie. queen.1c) bool findCompressedVersion(); - + //! verify the version of the selected game void checkJASVersion(); - + //! returns a reference to the ReseourceEntry for the specified filename ResourceEntry *resourceEntry(const char *filename) const; - + //! extarct the resource table for the specified game version bool readTableFile(const GameVersion *gameVersion); - + //! reads the resource table from a rebuilt datafile (ie. queen.1c) void readTableCompResource(); - + //! read the resource table from the specified file void readTableEntries(Common::File *file); - + //! detect game version based on queen.1 datafile size const GameVersion *detectGameVersion(uint32 size) const; //! resource table filename (queen.tbl) static const char *_tableFilename; - + //! known FOTAQ versions static const GameVersion _gameVersions[]; - + #ifndef __PALM_OS__ //! resource table for english floppy version static ResourceEntry _resourceTablePEM10[]; diff --git a/queen/sound.cpp b/queen/sound.cpp index 0a058d57d0..97f464989c 100644 --- a/queen/sound.cpp +++ b/queen/sound.cpp @@ -36,7 +36,7 @@ namespace Queen { -Sound::Sound(Audio::Mixer *mixer, QueenEngine *vm) : +Sound::Sound(Audio::Mixer *mixer, QueenEngine *vm) : _mixer(mixer), _vm(vm), _sfxToggle(true), _speechToggle(true), _musicToggle(true), _lastOverride(0) { } @@ -46,7 +46,7 @@ Sound::~Sound() { Sound *Sound::giveSound(Audio::Mixer *mixer, QueenEngine *vm, uint8 compression) { if (!mixer->isReady()) return new SilentSound(mixer, vm); - + switch (compression) { case COMPRESSION_NONE: return new SBSound(mixer, vm); @@ -115,7 +115,7 @@ void Sound::playSfx(uint16 sfx, bool isSpeech) { void Sound::playSfx(const char *base, bool isSpeech) { if (isSpeech && !speechOn()) return; else if (!sfxOn()) return; - + char name[13]; strcpy(name, base); // alter filename to add zeros and append ".SB" @@ -138,7 +138,7 @@ void Sound::playSong(int16 songNum) { _vm->music()->stopSong(); return; } - + int16 newTune; if (_vm->resource()->isDemo()) { if (songNum == 17) { @@ -171,9 +171,9 @@ void Sound::playSong(int16 songNum) { return; break; } - + _lastOverride = songNum; - + _vm->music()->queueTuneList(newTune); _vm->music()->playMusic(); } @@ -208,7 +208,7 @@ void MP3Sound::sfxPlay(const char *name, bool isSpeech) { #ifdef USE_VORBIS void OGGSound::sfxPlay(const char *name, bool isSpeech) { uint32 size; - Common::File *f = _vm->resource()->giveCompressedSound(name, &size); + Common::File *f = _vm->resource()->giveCompressedSound(name, &size); _mixer->playInputStream(Audio::Mixer::kSFXSoundType, isSpeech ? &_speechHandle : &_sfxHandle, makeVorbisStream(f, size)); } #endif @@ -216,7 +216,7 @@ void OGGSound::sfxPlay(const char *name, bool isSpeech) { #ifdef USE_FLAC void FLACSound::sfxPlay(const char *name, bool isSpeech) { uint32 size; - Common::File *f = _vm->resource()->giveCompressedSound(name, &size); + Common::File *f = _vm->resource()->giveCompressedSound(name, &size); _mixer->playInputStream(Audio::Mixer::kSFXSoundType, isSpeech ? &_speechHandle : &_sfxHandle, makeFlacStream(f, size)); } #endif diff --git a/queen/sound.h b/queen/sound.h index 338425696b..5ab078d150 100644 --- a/queen/sound.h +++ b/queen/sound.h @@ -31,7 +31,7 @@ namespace Queen { class Input; class Resource; -struct songData { +struct songData { int16 tuneList[5]; int16 volume; int16 tempo; @@ -40,7 +40,7 @@ struct songData { int16 ignore; }; -struct tuneData { +struct tuneData { int16 tuneNum[9]; int16 sfx[2]; int16 mode; @@ -52,7 +52,7 @@ class QueenEngine; class Sound { public: Sound(Audio::Mixer *mixer, QueenEngine *vm); - virtual ~Sound(); + virtual ~Sound(); virtual void sfxPlay(const char *name, bool isSpeech) = 0; static Sound *giveSound(Audio::Mixer *mixer, QueenEngine *vm, uint8 compression); void playSfx(uint16 sfx, bool isSpeech); @@ -61,7 +61,7 @@ public: void playLastSong() { playSong(_lastOverride); } void stopSpeech() { _mixer->stopHandle(_speechHandle); } void stopSfx() { _mixer->stopHandle(_sfxHandle); } - + bool sfxOn() const { return _sfxToggle; } void sfxToggle(bool val) { _sfxToggle = val; } void toggleSfx() { _sfxToggle ^= true; } @@ -69,16 +69,16 @@ public: bool speechOn() const { return _speechToggle; } void speechToggle(bool val) { _speechToggle = val; } void toggleSpeech() { _speechToggle ^= true; } - + bool musicOn() const { return _musicToggle; } void musicToggle(bool val) { _musicToggle = val; } void toggleMusic() { _musicToggle ^= true; } bool isSpeechActive() const { return _mixer->isSoundHandleActive(_speechHandle); } bool isSfxActive() const { return _mixer->isSoundHandleActive(_sfxHandle); } - + bool speechSfxExists() const { return _speechSfxExists; } - + int16 lastOverride() const { return _lastOverride; } void saveState(byte *&ptr); @@ -110,7 +110,7 @@ protected: bool _speechToggle; bool _musicToggle; bool _speechSfxExists; - + int16 _lastOverride; Audio::SoundHandle _sfxHandle; Audio::SoundHandle _speechHandle; diff --git a/queen/state.h b/queen/state.h index c7e06d6d7b..1e89c7bd49 100644 --- a/queen/state.h +++ b/queen/state.h @@ -52,15 +52,15 @@ enum StateUse { /*! - Each object/item in game has a state field. + Each object/item in game has a state field. (refer to ObjectData and ItemData). - + <table> <tr> <td>Name</td> <td>Bits</td> <td>Description</td> - </tr> + </tr> <tr> <td>USE</td> <td>10</td> diff --git a/queen/structs.h b/queen/structs.h index c4e1be1eef..935fb2437b 100644 --- a/queen/structs.h +++ b/queen/structs.h @@ -103,10 +103,10 @@ struct Area { uint16 dy = box.yDiff(); int16 ds = scaleDiff(); uint16 scale = 0; - + if (dy) // Prevent division-by-zero scale = ((((y - box.y1) * 100) / dy) * ds) / 100 + bottomScaleFactor; - + if (scale == 0) scale = 100; @@ -314,7 +314,7 @@ struct ItemData { uint16 description; //! state of the object uint16 state; - //! bank bobframe + //! bank bobframe uint16 frame; //! entry in OBJECT_DESCR (>0 if available) int16 sfxDescription; @@ -372,7 +372,7 @@ struct ActorData { anim = READ_BE_UINT16(ptr); ptr += 2; bankNum = READ_BE_UINT16(ptr); ptr += 2; file = READ_BE_UINT16(ptr); ptr += 2; - // Fix the actor data (see queen.c - l.1518-1519). When there is no + // Fix the actor data (see queen.c - l.1518-1519). When there is no // valid actor file, we must load the data from the objects room bank. // This bank has number 15 (not 10 as in the data files). if (file == 0) { @@ -555,7 +555,7 @@ struct TalkSelected { hasTalkedTo = READ_BE_UINT16(ptr) != 0; ptr += 2; for (int i = 0; i < 4; i++) { values[i] = (int16)READ_BE_UINT16(ptr); ptr += 2; - } + } } void writeToBE(byte *&ptr) { diff --git a/queen/talk.cpp b/queen/talk.cpp index 3a0c47670d..452e3dc922 100644 --- a/queen/talk.cpp +++ b/queen/talk.cpp @@ -43,7 +43,7 @@ static const Talk::SpeechParameters *_speechParameters; #endif void Talk::talk( - const char *filename, + const char *filename, int personInRoom, char *cutawayFilename, QueenEngine *vm) { @@ -53,7 +53,7 @@ void Talk::talk( } bool Talk::speak( - const char *sentence, + const char *sentence, Person *person, const char *voiceFilePrefix, QueenEngine *vm) { @@ -118,12 +118,12 @@ void Talk::talk(const char *filename, int personInRoom, char *cutawayFilename) { // Lines 906-? in talk.c _vm->display()->showMouseCursor(true); - + int16 level=1, retval=0; int16 head = _dialogueTree[level][0].head; // TODO: split this loop in several functions - while (retval != -1) { + while (retval != -1) { char otherVoiceFilePrefix[MAX_STRING_SIZE]; _talkString[0][0] = '\0'; @@ -200,7 +200,7 @@ void Talk::talk(const char *filename, int personInRoom, char *cutawayFilename) { level = 0; // Set LEVEL to the selected child in dialogue tree - + for (i = 1; i <= _levelMax; i++) if (_dialogueTree[i][0].head == head) level = i; @@ -241,7 +241,7 @@ void Talk::talk(const char *filename, int personInRoom, char *cutawayFilename) { // if the selected dialogue line has a POSITIVE game state value // then set gamestate to Value = TALK(OLDLEVEL,S,3) - + index = _dialogueTree[oldLevel][selectedSentence].gameStateIndex; if (index > 0) _vm->logic()->gameState(index, _dialogueTree[oldLevel][selectedSentence].gameStateValue); @@ -269,7 +269,7 @@ void Talk::talk(const char *filename, int personInRoom, char *cutawayFilename) { } } } - + _vm->grid()->setupPanel(); uint16 offset = _cutawayPtrOff; @@ -303,14 +303,14 @@ void Talk::talk(const char *filename, int personInRoom, char *cutawayFilename) { pbs->x = person.actor->x; pbs->y = person.actor->y; - + // Better kick start the persons anim sequence _vm->graphics()->resetPersonAnim(person.actor->bobNum); } _vm->logic()->joeWalk(JWM_NORMAL); } - + void Talk::disableSentence(int oldLevel, int selectedSentence) { // Mark off selected option @@ -351,7 +351,7 @@ byte *Talk::loadDialogFile(const char *filename) { { "chief1.dog", FRENCH }, { "chief2.dog", FRENCH }, { "bud1.dog", ITALIAN } - }; + }; for (int i = 0; i < ARRAYSIZE(dogFiles); ++i) { if (!scumm_stricmp(filename, dogFiles[i].filename) && _vm->resource()->getLanguage() == dogFiles[i].lang) { @@ -399,9 +399,9 @@ void Talk::load(const char *filename) { _person1PtrOff = READ_BE_UINT16(ptr); ptr += 2; _cutawayPtrOff = READ_BE_UINT16(ptr); ptr += 2; - _person2PtrOff = READ_BE_UINT16(ptr); ptr += 2; + _person2PtrOff = READ_BE_UINT16(ptr); ptr += 2; _joePtrOff = 32 + _levelMax * 96; - + // Load dialogue tree ptr = _fileData + 32; memset(&_dialogueTree[0], 0, sizeof(_dialogueTree[0])); @@ -419,7 +419,7 @@ void Talk::load(const char *filename) { } void Talk::initialTalk() { - // Lines 848-903 in talk.c + // Lines 848-903 in talk.c uint16 offset = _joePtrOff + 2; uint16 hasNotString = READ_BE_UINT16(_fileData + offset); offset += 2; @@ -436,15 +436,15 @@ void Talk::initialTalk() { getString(_fileData, offset, _person2String, MAX_STRING_LENGTH); getString(_fileData, offset, joe2String, MAX_STRING_LENGTH); - if (!hasTalkedTo()) { - // Not yet talked to this person + if (!hasTalkedTo()) { + // Not yet talked to this person if (joeString[0] != '0') { char voiceFilePrefix[MAX_STRING_SIZE]; sprintf(voiceFilePrefix, "%2dSSSSJ", _talkKey); speak(joeString, NULL, voiceFilePrefix); } } else { - // Already spoken to them, choose second response + // Already spoken to them, choose second response if (joe2String[0] != '0') { char voiceFilePrefix[MAX_STRING_SIZE]; sprintf(voiceFilePrefix, "%2dXXXXJ", _talkKey); @@ -460,7 +460,7 @@ int Talk::getSpeakCommand(const Person *person, const char *sentence, unsigned & switch (id) { case 'AO': commandCode = SPEAK_AMAL_ON; - break; + break; case 'FL': commandCode = SPEAK_FACE_LEFT; break; @@ -480,10 +480,10 @@ int Talk::getSpeakCommand(const Person *person, const char *sentence, unsigned & case 'GM': _vm->logic()->joeGrab(STATE_GRAB_MID); commandCode = SPEAK_NONE; - break; + break; case 'WT': commandCode = SPEAK_PAUSE; - break; + break; case 'XY': // For example *XY00(237,112) { @@ -533,13 +533,13 @@ bool Talk::speak(const char *sentence, Person *person, const char *voiceFilePref joe_actor.bobNum = 0; joe_actor.color = 14; joe_actor.bankNum = 7; - + joe_person.actor = &joe_actor; joe_person.name = "JOE"; person = &joe_person; } - + debug(6, "Sentence '%s' is said by person '%s' and voice files with prefix '%s' played", sentence, person->name, voiceFilePrefix); @@ -550,7 +550,7 @@ bool Talk::speak(const char *sentence, Person *person, const char *voiceFilePref if (0 == strcmp(person->name, "FAYE-H" ) || 0 == strcmp(person->name, "FRANK-H") || 0 == strcmp(person->name, "AZURA-H") || - 0 == strcmp(person->name, "X3_RITA") || + 0 == strcmp(person->name, "X3_RITA") || (0 == strcmp(person->name, "JOE") && _vm->logic()->currentRoom() == FAYE_HEAD ) || (0 == strcmp(person->name, "JOE") && _vm->logic()->currentRoom() == AZURA_HEAD) || (0 == strcmp(person->name, "JOE") && _vm->logic()->currentRoom() == FRANK_HEAD)) @@ -567,7 +567,7 @@ bool Talk::speak(const char *sentence, Person *person, const char *voiceFilePref if (SPEAK_NONE != command) { speakSegment( - sentence + segmentStart, + sentence + segmentStart, segmentLength, person, command, @@ -587,7 +587,7 @@ bool Talk::speak(const char *sentence, Person *person, const char *voiceFilePref if (segmentStart != i) { speakSegment( - sentence + segmentStart, + sentence + segmentStart, i - segmentStart, person, 0, @@ -603,7 +603,7 @@ int Talk::countSpaces(const char *segment) { while (*segment++) tmp++; - + if (tmp < 10) tmp = 10; @@ -616,7 +616,7 @@ void Talk::headStringAnimation(const SpeechParameters *parameters, int bobNum, i if (parameters->animation[0] == 'E') { int offset = 1; - + BobSlot *bob = _vm->graphics()->bob(bobNum); int16 x = bob->x; int16 y = bob->y; @@ -693,7 +693,7 @@ void Talk::defaultAnimation( const char *segment, bool isJoe, const SpeechParameters *parameters, - int startFrame, + int startFrame, int bankNum) { // lines 1730-1823 in talk.c @@ -740,7 +740,7 @@ void Talk::defaultAnimation( if (_vm->input()->talkQuit()) break; - + if (_vm->logic()->joeWalk() == JWM_SPEAK) { _vm->update(); } else { @@ -756,7 +756,7 @@ void Talk::defaultAnimation( _vm->sound()->stopSpeech(); break; } - + if (_vm->sound()->speechOn() && _vm->sound()->speechSfxExists()) { // sfx is finished, stop the speak animation if (!_vm->sound()->isSpeechActive()) { @@ -779,8 +779,8 @@ void Talk::defaultAnimation( void Talk::speakSegment( - const char *segmentStart, - int length, + const char *segmentStart, + int length, Person *person, int command, const char *voiceFilePrefix, @@ -790,12 +790,12 @@ void Talk::speakSegment( char segment[MAX_STRING_SIZE]; memcpy(segment, segmentStart, length); segment[length] = '\0'; - + char voiceFileName[MAX_STRING_SIZE]; sprintf(voiceFileName, "%s%1x", voiceFilePrefix, index + 1); - // FIXME - it seems the french talkie version has a useless voice file ; - // the c30e_102 file is very similar to c30e_101, so there is no need to + // FIXME - it seems the french talkie version has a useless voice file ; + // the c30e_102 file is very similar to c30e_101, so there is no need to // play it. This voice was used in room 30 (N8) when talking to Klunk. if (!(_vm->resource()->getLanguage() == FRENCH && !strcmp(voiceFileName, "c30e_102")) && _vm->sound()->speechOn()) @@ -814,7 +814,7 @@ void Talk::speakSegment( case SPEAK_FACE_RIGHT: case SPEAK_FACE_FRONT: case SPEAK_FACE_BACK: - faceDirectionCommand = command; + faceDirectionCommand = command; command = 0; break; } @@ -988,7 +988,7 @@ void Talk::speakSegment( // Joe is facing either Front or Back! // - Don't FACE_JOE in room 69, because Joe is probably // holding the Dino Ray gun. - if (_vm->logic()->currentRoom() != 69) + if (_vm->logic()->currentRoom() != 69) _vm->logic()->joeFace(); } else { if (command == SPEAK_DEFAULT || @@ -1000,7 +1000,7 @@ void Talk::speakSegment( if (parameters->rf != -1) // XXX should really be just "bf", but it is not always calculated... :-( _vm->bankMan()->overpack(parameters->bf, startFrame, bankNum); - + if (parameters->ff == 0) _vm->bankMan()->overpack(10, startFrame, bankNum); else @@ -1013,8 +1013,8 @@ void Talk::speakSegment( } const Talk::SpeechParameters *Talk::findSpeechParameters( - const char *name, - int state, + const char *name, + int state, int faceDirection) { const SpeechParameters *iterator = _speechParameters; if (faceDirection == DIR_RIGHT) @@ -1115,7 +1115,7 @@ int Talk::splitOptionHebrew(const char *str, char optionText[5][MAX_STRING_SIZE] strcpy(tmpString, optionText[optionLines]); strncpy(optionText[optionLines], p + 1, len); optionText[optionLines][len] = '\0'; - strcat(optionText[optionLines], tmpString); + strcat(optionText[optionLines], tmpString); } ++optionLines; } @@ -1216,8 +1216,8 @@ int16 Talk::selectSentence() { for (j = 0; j < optionLines; j++) { if (yOffset < 5) { _vm->display()->setText( - (j == 0) ? 0 : OPTION_TEXT_MARGIN, - 150 - PUSHUP + yOffset * LINE_HEIGHT, + (j == 0) ? 0 : OPTION_TEXT_MARGIN, + 150 - PUSHUP + yOffset * LINE_HEIGHT, optionText[j]); } yOffset++; @@ -1326,38 +1326,38 @@ int16 Talk::selectSentence() { speak(_talkString[selectedSentence], NULL, _joeVoiceFilePrefix[selectedSentence]); } - + _vm->display()->clearTexts(151, 151); return selectedSentence; } - + #ifndef __PALM_OS__ const Talk::SpeechParameters Talk::_speechParameters[] = { { "JOE", 0, 1, 1, 10, 2, 3, "", 0 }, { "JOE", 0, 3, 3, 28, 2, 3, "", 0 }, { "JOE", 0, 4, 5, 38, 1, 0, "", 0 }, - + { "JOE", 1, 1, 1, 45, -1, 0, "", 0 }, { "JOE", 1, 3, 3, 28, 2, 3, "", 0 }, { "JOE", 1, 4, 5, 38, 1, 0, "", 0 }, - + { "JOE", 2, 1, 1, 46, -1, 0, "", 0 }, { "JOE", 2, 3, 3, 28, 2, 3, "", 0 }, { "JOE", 2, 4, 5, 38, 1, 0, "", 0 }, - + { "JOE", 3, 1, 1, 47, -1, 0, "", 0 }, { "JOE", 3, 3, 3, 28, 2, 3, "", 0 }, { "JOE", 3, 4, 5, 38, 1, 0, "", 0 }, - + { "JOE", 4, 1, 1, 50, -1, 0, "", 0 }, { "JOE", 4, 3, 3, 28, 2, 3, "", 0 }, { "JOE", 4, 4, 5, 38, 1, 0, "", 0 }, - + { "JOE", 5, 1, 2, 0, 0, 0, "", 0 }, { "JOE", 5, 3, 4, 0, 0, 0, "", 0 }, { "JOE", 5, 4, 6, 0, 0, 0, "", 0 }, - + { "JOE", 6, 1, 1, 48, 0, 1, "", 0 }, { "JOE", 6, 3, 3, 28, 2, 3, "", 0 }, { "JOE", 6, 4, 5, 38, 1, 0, "", 0 }, @@ -1365,27 +1365,27 @@ const Talk::SpeechParameters Talk::_speechParameters[] = { { "JOE", 7, 1, 1, 51, 0, 1, "", 0 }, { "JOE", 7, 3, 3, 28, 2, 3, "", 0 }, { "JOE", 7, 4, 5, 38, 1, 0, "", 0 }, - + { "JOE", 8, 1, 1, 26, 0, 0, "", 0 }, { "JOE", 8, 3, 3, 28, 2, 3, "", 0 }, { "JOE", 8, 4, 5, 38, 1, 0, "", 0 }, - + { "JOE", 9, 1, 1, 29, 0, 0, "", 0 }, { "JOE", 9, 3, 3, 28, 0, 0, "", 0 }, { "JOE", 9, 4, 5, 38, 0, 0, "", 0 }, - + { "JOE", 10, 1, 1, 12, 0, 0, "T046,010,010,010,012,012,012,012,012,012,012,012,012,012,012,012,012,012,010,000", 0 }, { "JOE", 10, 3, 3, 18, 0, 0, "", 0 }, { "JOE", 10, 4, 5, 44, 0, 0, "", 0 }, - + { "JOE", 11, 1, 1, 53, -1, 0, "", 0 }, { "JOE", 11, 3, 3, 28, 2, 3, "", 0 }, { "JOE", 11, 4, 5, 38, 1, 0, "", 0 }, - + { "JOE", 12, 1, 1, 10, 2, 3, "", 0 }, { "JOE", 12, 3, 3, 28, 2, 0, "", 0 }, { "JOE", 12, 4, 5, 38, 1, 0, "", 0 }, - + { "JOE", 13, 1, 1, 10, 2, 3, "T012,013,019,019,019,019,019,019,019,019,019,019,013,010,000", 0 }, { "JOE", 13, 3, 3, 28, 2, 3, "", 0 }, { "JOE", 13, 4, 5, 38, 1, 0, "", 0 }, diff --git a/queen/talk.h b/queen/talk.h index ba0f2b6440..b0d2b68976 100644 --- a/queen/talk.h +++ b/queen/talk.h @@ -162,7 +162,7 @@ private: byte *loadDialogFile(const char *filename); - //! Load talk data from .dog file + //! Load talk data from .dog file void load(const char *filename); //! First things spoken @@ -181,12 +181,12 @@ private: void setHasTalkedTo() { talkSelected()->hasTalkedTo = true; } //! Get a selected value - int16 selectedValue(int index) { + int16 selectedValue(int index) { return talkSelected()->values[index-1]; } //! Set a selected value - void selectedValue(int index, int16 value) { + void selectedValue(int index, int16 value) { talkSelected()->values[index-1] = value; } @@ -204,9 +204,9 @@ private: //! Speak a part of a sentence void speakSegment( - const char *segmentStart, + const char *segmentStart, int length, - Person *person, + Person *person, int command, const char *voiceFilePrefix, int index); @@ -216,22 +216,22 @@ private: void stringAnimation(const SpeechParameters *parameters, int startFrame, int bankNum); void defaultAnimation( - const char *segment, + const char *segment, bool isJoe, - const SpeechParameters *parameters, - int startFrame, + const SpeechParameters *parameters, + int startFrame, int bankNum); int countSpaces(const char *segment); //! Get special parameters for speech const SpeechParameters *findSpeechParameters( - const char *name, - int state, + const char *name, + int state, int faceDirection); int splitOption(const char *str, char optionText[5][MAX_STRING_SIZE]); - + int splitOptionHebrew(const char *str, char optionText[5][MAX_STRING_SIZE]); int splitOptionDefault(const char *str, char optionText[5][MAX_STRING_SIZE]); diff --git a/queen/walk.cpp b/queen/walk.cpp index 9a4b907bce..c4cda39aca 100644 --- a/queen/walk.cpp +++ b/queen/walk.cpp @@ -92,7 +92,7 @@ void Walk::animateJoePrepare() { pwd->anim.set(19, 24, DIR_FRONT); } } - } + } } } @@ -126,7 +126,7 @@ void Walk::animateJoe() { // adjust Joe's movespeed according to scale pbs->scale = pwd->area->calcScale(pbs->y); _vm->logic()->joeScale(pbs->scale); - pbs->scaleWalkSpeed(6); + pbs->scaleWalkSpeed(6); _vm->update(true); if (_vm->input()->cutawayQuit() || _vm->logic()->joeWalk() == JWM_EXECUTE) { stopJoe(); @@ -278,7 +278,7 @@ int16 Walk::moveJoe(int direction, int16 endx, int16 endy, bool inCutaway) { if (calc(oldPos, newPos, oldx, oldy, endx, endy)) { if (_walkDataCount > 0) { animateJoePrepare(); - animateJoe(); + animateJoe(); if (_joeInterrupted) { can = -1; } @@ -380,10 +380,10 @@ void Walk::stopPerson(uint16 bobNum) { bool Walk::calc(uint16 oldPos, uint16 newPos, int16 oldx, int16 oldy, int16 x, int16 y) { // if newPos is outside of an AREA then traverse Y axis until an AREA is found - if (newPos == 0) { + if (newPos == 0) { newPos = findAreaPosition(&x, &y, true); } - + // do the same for oldPos in case Joe somehow sits on the border of an AREA // and does not register if (oldPos == 0) { @@ -427,9 +427,9 @@ int16 Walk::calcC(int16 c1, int16 c2, int16 c3, int16 c4, int16 lastc) { } int16 Walk::findAreaPosition(int16 *x, int16 *y, bool recalibrate) { - // FIXME - in order to locate the nearest available area, the original - // algorithm computes the X (or Y) closest face distance for each available - // area. We simply added the case where the pointer is neither lying in the + // FIXME - in order to locate the nearest available area, the original + // algorithm computes the X (or Y) closest face distance for each available + // area. We simply added the case where the pointer is neither lying in the // X range nor in the Y one. // To get an example of this in action, in the room D1, make Joe walking // to the wall at the right of the window (just above the radiator). On the @@ -511,7 +511,7 @@ bool Walk::isAreaStruck(uint16 area) const { bool Walk::calcPath(uint16 oldArea, uint16 newArea) { debug(9, "Walk::calcPath(%d, %d)", oldArea, newArea); _areaList[1] = _areaStrike[1] = oldArea; - _areaListCount = _areaStrikeCount = 1; + _areaListCount = _areaStrikeCount = 1; uint16 area = oldArea; while (_areaListCount > 0 && area != newArea) { area = findFreeArea(area); @@ -519,7 +519,7 @@ bool Walk::calcPath(uint16 oldArea, uint16 newArea) { // wrong path, rolling back _areaList[_areaListCount] = 0; --_areaListCount; - area = _areaList[_areaListCount]; + area = _areaList[_areaListCount]; } else { ++_areaListCount; assert(_areaListCount < MAX_WALK_DATA); @@ -529,7 +529,7 @@ bool Walk::calcPath(uint16 oldArea, uint16 newArea) { assert(_areaStrikeCount < MAX_WALK_DATA); _areaStrike[_areaStrikeCount] = area; } - } + } } return _areaList[1] != 0; } diff --git a/queen/walk.h b/queen/walk.h index a03693ca71..83c7a23b7d 100644 --- a/queen/walk.h +++ b/queen/walk.h @@ -85,7 +85,7 @@ private: //! compute transition coordinate static int16 calcC(int16 c1, int16 c2, int16 c3, int16 c4, int16 lastc); - + //! find area for position int16 findAreaPosition(int16 *x, int16 *y, bool recalibrate); @@ -97,29 +97,29 @@ private: //! calculates the path list from oldArea to newArea bool calcPath(uint16 oldArea, uint16 newArea); - + //! resets path computed in calcPath() void initWalkData(); - + //! add an area to the path void incWalkData(int16 px, int16 py, int16 x, int16 y, uint16 area); - + //! compute path (and populates _walkData) from current position to the new one bool calc(uint16 oldPos, uint16 newPos, int16 oldx, int16 oldy, int16 x, int16 y); //! areas for current room const Area *_roomArea; - + //! number of areas for current room uint16 _roomAreaCount; //! walking steps WalkData _walkData[MAX_WALK_DATA]; - + //! number of walking steps uint16 _walkDataCount; - + uint16 _areaStrike[MAX_WALK_DATA]; uint16 _areaStrikeCount; |