ff7tk 0.80.25
Work with Final Fantasy 7 game data
FF7Save.h
Go to the documentation of this file.
1/****************************************************************************/
2// copyright 2012 -2022 Chris Rizzitello <sithlord48@gmail.com> //
3// //
4// This file is part of FF7tk //
5// //
6// FF7tk is free software: you can redistribute it and/or modify //
7// it under the terms of the GNU General Public License as published by //
8// the Free Software Foundation, either version 3 of the License, or //
9// (at your option) any later version. //
10// //
11// FF7tk is distributed in the hope that it will be useful, //
12// but WITHOUT ANY WARRANTY; without even the implied warranty of //
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
14// GNU General Public License for more details. //
15/****************************************************************************/
16#pragma once
17
18#include <QObject>
19#include <cstdlib>
20
21#ifndef ff7tk_export_h
22 #include <ff7tk_export.h>
23#endif
24#include <FF7SaveInfo.h> //All consts placed here
25#include <FF7Save_Types.h> //All Custom Types for this class here.
26
27class QColor;
28class QDateTime;
29class QFile;
30class QFileInfo;
31class QDomDocument;
32class QTextCodec;
33
67class FF7TK_EXPORT FF7Save: public QObject
68{
69 Q_OBJECT
70public:
71 //Enums
72 enum WORLDVEHICLE {WVEHCILE_BUGGY = 0, WVEHCILE_TBRONCO = 2, WVEHCILE_HIGHWIND = 4};
73 enum WORLDCHOCOBO {WCHOCO_WILD, WCHOCO_YELLOW = 2, WCHOCO_GREEN = 3, WCHOCO_BLUE = 4, WCHOCO_BLACK = 5, WCHOCO_GOLD = 6};
74 enum LOVER {LOVE_BARRET, LOVE_TIFA, LOVE_AERIS, LOVE_YUFFIE};
75 enum MATERIACAVE {CAVE_MIME, CAVE_HPMP, CAVE_QUADMAGIC, CAVE_KOTR};
76 enum SOUNDMODE {SOUND_MONO, SOUND_STEREO};
77 enum CONTROLMODE {CONTROL_NORMAL, CONTROL_CUSTOM};
78 enum CURSORMODE {CURSOR_INITIAL, CURSOR_MEMORY};
79 enum ATBMODE {ATB_ACTIVE, ATB_RECOMMENED, ATB_WAIT};
80 enum CAMERAMODE {CAMERA_AUTO, CAMERA_FIXED};
81 enum MAGICORDER {MAGIC_RAI, MAGIC_RIA, MAGIC_AIR, MAGIC_ARI, MAGIC_IRA, MAGIC_IAR};
85 enum MENUITEMS {MENUITEM, MENUMAGIC, MENUMATERIA, MENUEQUIPMENT, MENUSTATUS, MENUFORM, MENULIMIT, MENUCONFIG, MENUPHS, MENUSAVE};
90 ACTION_CAMERA, ACTION_TARGET, ACTION_PAGEUP, ACTION_PAGEDOWN,
91 ACTION_MENU, ACTION_OK, ACTION_CANCEL, ACTION_SWITCH,
92 ACTION_HELP, ACTION_UNKNOWN1, ACTION_UNKNOWN2,
93 ACTION_PAUSE, ACTION_UP, ACTION_RIGHT, ACTION_DOWN, ACTION_LEFT
94 };
95
99 enum PSXBUTTON {
100 BTN_L2, BTN_R2, BTN_L1, BTN_R1,
101 BTN_TRIANGLE, BTN_CIRCLE, BTN_X, BTN_SQUARE,
102 BTN_SELECT, BTN_UNKNOWN1, BTN_UNKNOWN2, BTN_START,
103 BTN_UP, BTN_RIGHT, BTN_DOWN, BTN_LEFT
104 };
108 enum KEYITEMS {
109 COTTONDRESS, SATINDRESS, SILKDRESS, WIG, DYEDWIG, BLONDEWIG, GLASSTIARA, RUBYTIATA, DIAMONDTIARA, COLOGNE, FLOWERCOLOGNE, SEXYCOLOGNE, MEMBERSCARD,
110 LINGERIE, MYSTERYPANTIES, BIKINIBRIEFS, PHARMACYCOUPON, DISINFECTANT, DEODORANT, DIGESTIVE, HUGEMATERIA_CONDOR, HUGEMATERIA_COREL, HUGEMATERIA_UNDERWATER,
111 HUGEMATERIA_ROCKET, KEYTOANCIENTS, LETTERTOADAUGHTER, LETTERTOAWIFE, LUNARHARP, BASEMENTKEY, KEYTOSECTOR5, KEYCARD60, KEYCARD62, KEYCARD65, KEYCARD66,
112 KEYCARD68, MIDGARPARTS1, MIDGARPARTS2, MIDGARPARTS3, MIDGARPARTS4, MIDGARPARTS5, PHS, GOLDTICKET, KEYSTONE, LEIATHANSCALES, GLACIERMAP, COUPON_A, COUPON_B,
113 COUPON_C, BLACKMATERIA, MYTHRIL, SNOWBOARD
114 };
115 //Functions
116 explicit FF7Save();
117 //File Members
118
124 FF7SaveInfo::FORMAT fileDataFormat(QFile &file);
125
130 bool loadFile(const QString &fileName);
131
137 bool saveFile(const QString &fileName, int s = 0);
138
146 bool exportFile(const QString &fileName, FF7SaveInfo::FORMAT exportFormat, int s = 0);
147
155 void importSlot(int s = 0, QString fileName = "", int fileSlot = 0);
156
160 void clearSlot(int s);
161
165 void copySlot(int s);
166
170 void pasteSlot(int s);
171
177 void newGame(int s, const QString &region = QStringLiteral("NTSC-U"), const QString &fileName = QString()); //new game in slot s (over load default w/ fileName must be RAW PSX)
178
186 void newGamePlus(int s, QString CharFileName, QString fileName = ""); //new game + in slot s (over load default w/ fileName must be RAW PSX
187
194 bool exportCharacter(int s, int char_num, QString fileName); // Write slot[s].char[char_num] to fileName
195
201 void importCharacter(int s, int char_num, QByteArray new_char); //import new_char to slot[s].char[char_num]
202
206 typedef QVector< QString > SubContainer;
207
213 bool fixMetaData(QString fileName = "", QString UserID = "");
214
221 QByteArray generatePsSaveSignature(QByteArray data, QByteArray keySeed);
222
223 QByteArray fileHeader(void);
229 bool setFileHeader(QByteArray data);
230
231 QByteArray slotHeader(int s);
238 bool setSlotHeader(int s, QByteArray data);
239
240 QByteArray slotFooter(int s);
247 bool setSlotFooter(int s, QByteArray data);
248
249 QByteArray slotPsxRawData(int s);
258 bool setSlotPsxRawData(int s, QByteArray data);
259
260 QByteArray slotFF7Data(int s);
267 bool setSlotFF7Data(int s, QByteArray data);
268 bool setSlotFF7Data(int s, const FF7SLOT &data);
269
270 QList<QByteArray> slotIcon(int s);
276 QList<qint8> chocoboPens(int s);
277
283 void setChocoboPen(int s, int pen, qint8 value);
284
289 quint8 condorWins(int s);
290
295 void setCondorWins(int s, quint8 wins);
296
301 quint8 condorLosses(int s);
302
307 void setCondorLosses(int s, quint8 losses);
308
312 quint16 condorFunds(int s);
313
318 void setCondorFunds(int s, quint16 value);
319 //Field Location
320
325 quint16 locationId(int s);
326
331 void setLocationId(int s, quint16 locationID);
332
337 quint16 mapId(int s);
338
343 void setMapId(int s, quint16 mapID);
344
349 qint16 locationX(int s);
350
355 void setLocationX(int s, qint16 x);
356
361 qint16 locationY(int s);
362
367 void setLocationY(int s, qint16 y);
368
373 quint16 locationT(int s);
374
379 void setLocationT(int s, quint16 t);
380
385 quint8 locationD(int s);
386
391 void setLocationD(int s, quint8 d);
392
397 quint16 craterSavePointMapID(int s);
398
403 qint16 craterSavePointX(int s);
404
409 qint16 craterSavePointY(int s);
410
415 qint16 craterSavePointZ(int s);
416
421 void setCraterSavePointMapID(int s, int value);
422
427 void setCraterSavePointX(int s, int value);
428
433 void setCraterSavePointY(int s, int value);
434
439 void setCraterSavePointZ(int s, int value);
440
441 //options
448 QByteArray controllerMapping(int s);
449
456 void setControllerMapping(int s, QByteArray map);
457
465 quint8 controllerMapping(int s, int action);
466
474 void setControllerMapping(int s, int action, int button);
475
480 quint16 options(int s);
481
486 void setOptions(int s, int opt);
487
492 bool soundMode(int s);
493
498 void setSoundMode(int s, int mode);
499
500 void setSoundMode(int s, bool mode);
501 bool controlMode(int s);
502 void setControlMode(int s, int mode);
503 void setControlMode(int s, bool mode);
504 bool cursorMode(int s);
505 void setCursorMode(int s, int mode);
506 void setCursorMode(int s, bool mode);
507 int atbMode(int s);
508 void setAtbMode(int s, int mode);
509 bool cameraMode(int s);
510 void setCameraMode(int s, int mode);
511 void setCameraMode(int s, bool mode);
512 int magicOrder(int s);
513 void setMagicOrder(int s, int order);
514 bool battleHelp(int s);
515 void setBattleHelp(int s, bool shown);
516 int battleSpeed(int s);
517 void setBattleSpeed(int s, int speed);
518 int battleMessageSpeed(int s);
519 void setBattleMessageSpeed(int s, int speed);
520 int messageSpeed(int s);
521 void setMessageSpeed(int s, int speed);
522 bool fieldHelp(int s);
523 void setFieldHelp(int s, bool shown);
524 bool battleTargets(int s);
525 void setBattleTargets(int s, bool shown);
526
527 //Phs/Menu
528 bool phsVisible(int s, int who);
529 void setPhsVisible(int s, int who, bool checked);
530 quint16 phsVisible(int s);
531 void setPhsVisible(int s, quint16 phs_visible);
532 bool phsAllowed(int s, int who);
533 quint16 phsAllowed(int s);
534 void setPhsAllowed(int s, int who, bool checked);
535 void setPhsAllowed(int s, quint16 phs_visible);
536 bool menuVisible(int s, int index);
537 void setMenuVisible(int s, int index, bool checked);
538 quint16 menuVisible(int s);
539 void setMenuVisible(int s, quint16 menu_visible);
540 bool menuLocked(int s, int index);
541 void setMenuLocked(int s, int index, bool checked);
542 quint16 menuLocked(int s);
543 void setMenuLocked(int s, quint16 menu_visible);
544 //item info
545 quint16 item(int s, int item_num); //return raw ff7item
546 QList<quint16> items(int s);// return all items
547// quint16 itemId(int s, int item_num);
548// quint16 itemId(quint16 rawitem);
549// quint8 itemQty(int s, int item_num);
550// quint8 itemQty(quint16 rawitem);
551 void setItems(int s, QList<quint16> items);
552 void setItem(int s, int item_num, quint16 rawitem);
553 void setItem(int s, int item_num, quint16 new_id, quint8 new_qty);
554 //materia get/set
555 bool materiaCave(int s, MATERIACAVE cave);
556 void setMateriaCave(int s, MATERIACAVE cave, bool isEmpty);
557 quint8 partyMateriaId(int s, int mat_num);
558 qint32 partyMateriaAp(int s, int mat_num);
559 quint8 stolenMateriaId(int s, int mat_num);
560 qint32 stolenMateriaAp(int s, int mat_num);
561 void setPartyMateria(int s, int mat_num, quint8 id, qint32 ap);
562 void setStolenMateria(int s, int mat_num, quint8 id, qint32 ap);
563 //Description Stuff.
564 quint32 descTime(int s);
565 void setDescTime(int s, quint32 new_time);
566 QString descName(int s);//return the name in the description
567 void setDescName(int s, QString new_name); // desc name = new_name
568 QString descLocation(int s);//return the location string used in the description
569 void setDescLocation(int s, QString new_desc_location);//write new desc location string called from setLocation
570 quint8 descLevel(int s);
571 void setDescLevel(int s, int new_level);
572 quint8 descParty(int s, int char_num);
573 void setDescParty(int s, int char_num, quint8 new_id);
574 quint16 descCurHP(int s);
575 void setDescCurHP(int s, quint16 new_curHP);
576 quint16 descMaxHP(int s);
577 void setDescMaxHP(int s, quint16 new_maxHP);
578 quint16 descCurMP(int s);
579 void setDescCurMP(int s, quint16 new_curMP);
580 quint16 descMaxMP(int s);
581 void setDescMaxMP(int s, quint16 new_maxMP);
582 quint32 descGil(int s);
583 void setDescGil(int s, quint32 new_gil);
584 //Dialog Colors
585 QColor dialogColorUL(int s);
586 QColor dialogColorUR(int s);
587 QColor dialogColorLL(int s);
588 QColor dialogColorLR(int s);
589 void setDialogColorUL(int s, QColor color);
590 void setDialogColorUR(int s, QColor color);
591 void setDialogColorLL(int s, QColor color);
592 void setDialogColorLR(int s, QColor color);
593 // String Functions.
594 QString chocoName(int s, int choco_num); //return choco_num's name.
595 void setChocoName(int s, int choco_num, QString new_name); //write choco_num 's new_name to slot s
596 QString location(int s);// return save location string
597 void setLocation(int s, QString new_location);//set save location string to new_location
598 quint32 gil(int s);
599 void setGil(int s, quint32 gil);
600 quint16 gp(int s);
601 void setGp(int s, int gp);
602 quint16 battles(int s);
603 void setBattles(int s, int battles);
604 quint16 runs(int s);
605 void setRuns(int s, int runs);
606 quint8 party(int s, int pos);
613 void setParty(int s, int pos, int new_id);
614 qint8 chocoboPen(int s, int pos);
615 void setChocoboPen(int s, int pos, int type);
616 bool seenPandorasBox(int s);
617 void setSeenPandorasBox(int s, bool seen);
618 //Mini Game Stuff
619 quint8 love(int s, bool battle, LOVER who);
620 void setLove(int s, bool battle, LOVER who, quint8 love);
621 quint16 speedScore(int s, int rank);
622 void setSpeedScore(int s, int rank, quint16 score);
623 quint16 bikeHighScore(int s);
624 void setBikeHighScore(int s, quint16 score);
625 QString snowboardTime(int s, int course);
626 void setSnowboardTime(int s, int course, QString time);
627 quint8 snowboardScore(int s, int course);
628 void setSnowboardScore(int s, int course, quint8 score);
629 quint32 countdownTimer(int s);
630 void setCountdownTimer(int s, quint32 time);
631 //Char Releated Functions
632 FF7CHAR character(int s, int char_num); //Return Full Char
633 QByteArray rawCharacterData(int s, int char_num);
634 quint8 charID(int s, int char_num); //Return Char ID
635 quint8 charLevel(int s, int char_num); //Return Char Level
636 quint8 charStr(int s, int char_num);
637 quint8 charVit(int s, int char_num);
638 quint8 charMag(int s, int char_num);
639 quint8 charSpi(int s, int char_num);
640 quint8 charDex(int s, int char_num);
641 quint8 charLck(int s, int char_num);
642 quint8 charStrBonus(int s, int char_num);
643 quint8 charVitBonus(int s, int char_num);
644 quint8 charMagBonus(int s, int char_num);
645 quint8 charSpiBonus(int s, int char_num);
646 quint8 charDexBonus(int s, int char_num);
647 quint8 charLckBonus(int s, int char_num);
648 qint8 charLimitLevel(int s, int char_num);
649 quint8 charLimitBar(int s, int char_num);
650 QString charName(int s, int char_num); //Return Char name
651 quint8 charWeapon(int s, int char_num);
652 quint8 charArmor(int s, int char_num);
653 quint8 charAccessory(int s, int char_num);
654 quint8 charFlag(int s, int char_num, int flag_num);
655 quint16 charLimits(int s, int char_num); //Return Char ID
656 quint16 charKills(int s, int char_num); //Return Char Level
657 quint16 charTimesLimitUsed(int s, int char_num, int level);
658 quint16 charCurrentHp(int s, int char_num);
659 quint16 charBaseHp(int s, int char_num);
660 quint16 charCurrentMp(int s, int char_num);
661 quint16 charBaseMp(int s, int char_num);
662 quint8 charUnknown(int s, int char_num, int unknown_num);
663 quint16 charMaxHp(int s, int char_num);
664 quint16 charMaxMp(int s, int char_num);
665 quint32 charCurrentExp(int s, int char_num);
666 quint32 charNextExp(int s, int char_num);
667 quint8 charMateriaId(int s, int who, int mat_num);
668 qint32 charMateriaAp(int s, int who, int mat_num);
669 void setCharacter(int s, int char_num, const FF7CHAR &new_char);
670 void setCharID(int s, int char_num, qint8 new_id);
671 void setCharLevel(int s, int char_num, qint8 new_level);
672 void setCharStr(int s, int char_num, quint8 str);
673 void setCharVit(int s, int char_num, quint8 vit);
674 void setCharMag(int s, int char_num, quint8 mag);
675 void setCharSpi(int s, int char_num, quint8 spi);
676 void setCharDex(int s, int char_num, quint8 dex);
677 void setCharLck(int s, int char_num, quint8 lck);
678 void setCharStrBonus(int s, int char_num, quint8 strbonus);
679 void setCharVitBonus(int s, int char_num, quint8 vitbonus);
680 void setCharMagBonus(int s, int char_num, quint8 magbonus);
681 void setCharSpiBonus(int s, int char_num, quint8 spibonus);
682 void setCharDexBonus(int s, int char_num, quint8 dexbonus);
683 void setCharLckBonus(int s, int char_num, quint8 lckbonus);
684 void setCharLimitLevel(int s, int char_num, qint8 limitlevel);
685 void setCharLimitBar(int s, int char_num, quint8 limitbar);
686 void setCharName(int s, int char_num, QString new_name); //write char_num 's new_name to slot s
687 void setCharWeapon(int s, int char_num, quint8 weapon);
688 void setCharArmor(int s, int char_num, quint8 armor);
689 void setCharAccessory(int s, int char_num, quint8 accessory);
690 void setCharFlag(int s, int char_num, int flag_num, quint8 flag_value);
691 void setCharLimits(int s, int char_num, quint16 new_limits);
692 void setCharKills(int s, int char_num, quint16 kills);
693 void setCharTimeLimitUsed(int s, int char_num, int level, quint16 timesused);
694 void setCharCurrentHp(int s, int char_num, quint16 curHp);
695 void setCharBaseHp(int s, int char_num, quint16 baseHp);
696 void setCharCurrentMp(int s, int char_num, quint16 curMp);
697 void setCharBaseMp(int s, int char_num, quint16 baseMp);
698 void setCharUnknown(int s, int char_num, int unknown_num, quint8 value);
699 void setCharMaxHp(int s, int char_num, quint16 maxHp);
700 void setCharMaxMp(int s, int char_num, quint16 maxMp);
701 void setCharCurrentExp(int s, int char_num, quint32 exp);
702 void setCharNextExp(int s, int char_num, quint32 next);
703 void setCharMateria(int s, int who, int mat_num, quint8 id, qint32 ap);
704 void setCharMateria(int s, int who, int mat_num, materia mat);
705 //chocobo Stuff.
706 QList<FF7CHOCOBO> chocobos(int s);
707 QList<quint16> chocobosStaminas(int s);
708 QList<QString> chocobosNames(int s);
709 QList<bool> chocoboCantMates(int s);
710 qint8 stablesOwned(int s);
711 qint8 stablesOccupied(int s);
712 qint8 stableMask(int s);
713 void setStablesOwned(int s, qint8 value);
714 void setStablesOccupied(int s, qint8 value);
715 void setStableMask(int s, qint8 value);
716 FF7CHOCOBO chocobo(int s, int chocoSlot);
717 quint16 chocoStamina(int s, int chocoSlot);
718 quint16 chocoSpeed(int s, int chocoSlot);
719 quint16 chocoMaxSpeed(int s, int chocoSlot);
720 quint16 chocoSprintSpeed(int s, int chocoSlot);
721 quint16 chocoMaxSprintSpeed(int s, int chocoSlot);
722 quint8 chocoSex(int s, int chocoSlot);
723 quint8 chocoType(int s, int chocoSlot);
724 quint8 chocoCoop(int s, int chocoSlot);
725 quint8 chocoAccel(int s, int chocoSlot);
726 quint8 chocoIntelligence(int s, int chocoSlot);
727 quint8 chocoRaceswon(int s, int chocoSlot);
728 quint8 chocoPCount(int s, int chocoSlot);
729 quint8 chocoPersonality(int s, int chocoSlot);
730 bool chocoCantMate(int s, int chocoSlot);
731 void setChocoStamina(int s, int chocoSlot, quint16 stamina);
732 void setChocoSpeed(int s, int chocoSlot, quint16 speed);
733 void setChocoMaxSpeed(int s, int chocoSlot, quint16 maxspeed);
734 void setChocoSprintSpeed(int s, int chocoSlot, quint16 sprintSpeed);
735 void setChocoMaxSprintSpeed(int s, int chocoSlot, quint16 maxsprintSpeed);
736 void setChocoSex(int s, int chocoSlot, quint8 value);
737 void setChocoType(int s, int chocoSlot, quint8 value);
738 void setChocoCoop(int s, int chocoSlot, quint8 value);
739 void setChocoAccel(int s, int chocoSlot, quint8 value);
740 void setChocoIntelligence(int s, int chocoSlot, quint8 value);
741 void setChocoRaceswon(int s, int chocoSlot, quint8 value);
742 void setChocoPCount(int s, int chocoSlot, quint8 value);
743 void setChocoPersonality(int s, int chocoSlot, quint8 value);
744 void setChocoCantMate(int s, int chocoSlot, bool cantMate);
745 // Return File Info
746 int lenFile(void);//Return File length.
747 int lenFileHeader(void);//Return File Header length
748 int lenCoreSave(void);//Return Slot length (data portion)
749 int lenSlotHeader(void);//Return slot header length
750 int lenSlotFooter(void);//Return slot footer length
751 int lenSlot(void);//Return Slot length
752 int numberOfSlots(void);//Return number of slots in the file_footer_dex
753 QString fileName(void);//return loaded filename
754 void setFileModified(bool, int s); //file changed toggle, with slot called
755 void setRegion(int s, const QString &region);
756 bool isFileModified(void);//has the file changed since load
757 bool isSlotModified(int s);//has slot[s] changed since load.
758 bool isSlotEmpty(int s);//is Slot s empty
759 bool isFF7(int s);//valid ff7 slot?
760 bool isPAL(int s);//PAL SLOT?
761 bool isNTSC(int s);//NTSC SLOT??
762 bool isJPN(int s);//is a Japanese File
763 QString region(int s);// region string of slot s
764 //Set Needed Info Stuffs
765
766 char psx_block_type(int s);//mask of psx slot (used by index)
767 void setPsx_block_type(int s, char block_type);
768 quint8 psx_block_next(int s);// if using more then one block return location of next block
769 void setPsx_block_next(int s, int next);
770 quint8 psx_block_size(int s);//how many blocks save uses.
771 void setPsx_block_size(int s, int blockSize);
772 void fix_pc_bytemask(int s);// update so last slot is shown selected on load (must be public to set to currently viewed slot).
773 //more data members
774 QByteArray unknown(int s, int z);
775 bool setUnknown(int s, int z, QByteArray data);
776 quint16 steps(int s);
777 void setSteps(int s, int steps);
778 quint8 churchProgress(int s);
779 void setChurchProgress(int s, int progress);
780 quint8 donProgress(int s);
781 void setDonProgress(int s, int progress);
782 quint16 battlePoints(int s);
783 void setBattlePoints(int s, quint16);
784 quint32 time(int s);
785 void setTime(int s, quint32 new_time);
786 void setDisc(int s, int disc);
787 quint8 disc(int s);
788 quint16 mainProgress(int s);
789 void setMainProgress(int s, int mProgress);
790 QByteArray keyItems(int s);
791 bool setKeyItems(int s, QByteArray data);
792 bool keyItem(int s, int keyItem);
793 void setKeyItem(int s, int keyItem, bool pickedUp);
794 bool itemMask1(int s, int bit);
795 void setItemMask1(int s, int bit, bool pickedUp);
796 bool bmProgress1(int s, int bit);
797 void setBmProgress1(int s, int bit, bool isTrue);
798 void setBmProgress1(int s, int value);
799 bool bmProgress2(int s, int bit);
800 void setBmProgress2(int s, int bit, bool isTrue);
801 void setBmProgress2(int s, int value);
802 bool bmProgress3(int s, int bit);
803 void setBmProgress3(int s, int bit, bool isTrue);
804 void setBmProgress3(int s, int value);
805 bool midgarTrainFlags(int s, int bit);
806 void setMidgarTrainFlags(int s, int bit, bool isTrue);
807 void setMidgarTrainFlags(int s, int value);
808 bool turtleParadiseFlyerSeen(int s, int flyer);
809 quint8 turtleParadiseFlyersSeen(int s);
810 void setTurtleParadiseFlyerSeen(int s, int flyer, bool seen);
811 void setTurtleParadiseFlyersSeen(int s, quint8 flyersSeen);
812 bool startBombingMission(int s);
813 void setStartBombingMission(int s, bool isTrue);
814 quint32 uWeaponHp(int s);
815 void setUWeaponHp(int s, int hp);
816 bool killedEmeraldWeapon(int s);
817 void setKilledEmeraldWeapon(int s, bool isTrue);
818 bool killedRubyWeapon(int s);
819 void setKilledRubyWeapon(int s, bool isTrue);
820 quint8 tutSave(int s);
821 void setTutSave(int s, int value);
822 bool canFightNinjaInForest(int s);
823 void setCanFightNinjaInForest(int s, bool isTrue);
824 quint8 tutSub(int s);
825 bool tutSub(int s, int bit);
826 void setTutSub(int s, int bit, bool isTrue);
827 void setTutSub(int s, int value);
828
833 bool yuffieUnlocked(int s);
834
839 void setYuffieUnlocked(int s, bool isUnlocked);
840
845 bool vincentUnlocked(int s);
846
851 void setVincentUnlocked(int s, bool isUnlocked);
852
853 bool worldChocobo(int s, int bit);
854 void setWorldChocobo(int s, int bit, bool isTrue);
855 bool worldVehicle(int s, int bit);
856 void setWorldVehicle(int s, int bit, bool isTrue);
857 //World Coords
858 quint32 worldCoordsLeader(int s, bool firstChunk);
859 int worldCoordsLeaderX(int s);
860 int worldCoordsLeaderID(int s);
861 int worldCoordsLeaderAngle(int s);
862 int worldCoordsLeaderY(int s);
863 int worldCoordsLeaderZ(int s);
864 void setWorldCoordsLeader(int s, bool firstChunk, int value);
865 void setWorldCoordsLeaderX(int s, int value);
866 void setWorldCoordsLeaderID(int s, int value);
867 void setWorldCoordsLeaderAngle(int s, int value);
868 void setWorldCoordsLeaderY(int s, int value);
869 void setWorldCoordsLeaderZ(int s, int value);
870 quint32 worldCoordsTc(int s, bool firstChunk);
871 int worldCoordsTcX(int s);
872 int worldCoordsTcID(int s);
873 int worldCoordsTcAngle(int s);
874 int worldCoordsTcY(int s);
875 int worldCoordsTcZ(int s);
876 void setWorldCoordsTc(int s, bool firstChunk, int value);
877 void setWorldCoordsTcX(int s, int value);
878 void setWorldCoordsTcID(int s, int value);
879 void setWorldCoordsTcAngle(int s, int value);
880 void setWorldCoordsTcY(int s, int value);
881 void setWorldCoordsTcZ(int s, int value);
882 quint32 worldCoordsBh(int s, bool firstChunk);
883 int worldCoordsBhX(int s);
884 int worldCoordsBhID(int s);
885 int worldCoordsBhAngle(int s);
886 int worldCoordsBhY(int s);
887 int worldCoordsBhZ(int s);
888 void setWorldCoordsBh(int s, bool firstChunk, int value);
889 void setWorldCoordsBhX(int s, int value);
890 void setWorldCoordsBhID(int s, int value);
891 void setWorldCoordsBhAngle(int s, int value);
892 void setWorldCoordsBhY(int s, int value);
893 void setWorldCoordsBhZ(int s, int value);
894 quint32 worldCoordsSub(int s, bool firstChunk);
895 int worldCoordsSubX(int s);
896 int worldCoordsSubID(int s);
897 int worldCoordsSubAngle(int s);
898 int worldCoordsSubY(int s);
899 int worldCoordsSubZ(int s);
900 void setWorldCoordsSub(int s, bool firstChunk, int value);
901 void setWorldCoordsSubX(int s, int value);
902 void setWorldCoordsSubID(int s, int value);
903 void setWorldCoordsSubAngle(int s, int value);
904 void setWorldCoordsSubY(int s, int value);
905 void setWorldCoordsSubZ(int s, int value);
906 quint32 worldCoordsWchoco(int s, bool firstChunk);
907 int worldCoordsWchocoX(int s);
908 int worldCoordsWchocoID(int s);
909 int worldCoordsWchocoAngle(int s);
910 int worldCoordsWchocoY(int s);
911 int worldCoordsWchocoZ(int s);
912 void setWorldCoordsWchoco(int s, bool firstChunk, int value);
913 void setWorldCoordsWchocoX(int s, int value);
914 void setWorldCoordsWchocoID(int s, int value);
915 void setWorldCoordsWchocoAngle(int s, int value);
916 void setWorldCoordsWchocoY(int s, int value);
917 void setWorldCoordsWchocoZ(int s, int value);
918 quint32 worldCoordsDurw(int s, bool firstChunk);
919 int worldCoordsDurwX(int s);
920 int worldCoordsDurwID(int s);
921 int worldCoordsDurwAngle(int s);
922 int worldCoordsDurwY(int s);
923 int worldCoordsDurwZ(int s);
924 void setWorldCoordsDurw(int s, bool firstChunk, int value);
925 void setWorldCoordsDurwX(int s, int value);
926 void setWorldCoordsDurwID(int s, int value);
927 void setWorldCoordsDurwAngle(int s, int value);
928 void setWorldCoordsDurwY(int s, int value);
929 void setWorldCoordsDurwZ(int s, int value);
930 void setSaveNumber(int s, int saveNum);
931
932 bool subMiniGameVictory(int s);
933 void setSubMiniGameVictory(int s, bool won);
934
940 bool playedPianoOnFlashback(int s);
941
947 void setPlayedPianoOnFlashback(int s, bool played);
948
955 quint8 chocoboRating(int s, int stable);
956
964 void setChocoboRating(int s, int stable, int rating);
965 QList<quint8> chocoboRatings(int s);
966
972 QString psxDesc(int s);
973
981 void setPsxDesc(QString newDesc, int s);
982
987 inline int unknown_zmax()
988 {
989 return 47; //Number of "z" vars.
990 }
991
996 void setFormat(FF7SaveInfo::FORMAT newFormat);
997
1002 FF7SaveInfo::FORMAT format();
1003
1004 bool isBufferSlotPopulated();
1005signals:
1006 void fileChanged(bool);
1008private:
1014 bool exportPCFormat(const QString &fileName, FF7SaveInfo::FORMAT exportFormat);
1015
1021 bool exportVMCFormat(const QString &fileName, FF7SaveInfo::FORMAT exportFormat);
1022
1029 bool exportSlot(const QString &fileName, FF7SaveInfo::FORMAT exportFormat, int s);
1030
1031 QString md5sum(QString fileName, QString UserID);
1032 QString fileblock(const QString &fileName);
1033 QString filetimestamp(QString fileName);
1034 void checksumSlots();
1035 quint16 ff7Checksum(int s);
1036 void fix_psv_header(int s, int blocks = 1);
1037 void fix_pge_header(int s);
1038 void fix_pda_header(int s);
1039 void fix_psx_header(int s);
1040 void fix_vmp_header(void);
1041 void fix_vmc_header(void);
1042 void vmcRegionEval(int s);
1043 //data members
1044 FF7SLOT buffer_slot;// hold a buffer slot
1045 FF7SLOT slot[15]; //core slot data.
1046 FF7HEADFOOT hf[15]; //slot header and footer.
1048 QByteArray _bufferFileHeader;
1049 QByteArray _fileHeader;
1050 bool slotChanged[15];
1051 bool fileHasChanged;
1052 QString buffer_region; // hold the buffers region data.
1053 QString SG_Region_String[15];
1054 QString filename;//opened file;
1055 QVector< SubContainer > parseXML(const QString &fileName, const QString &metadataPath, const QString &UserID);
1056 QVector< SubContainer > createMetadata(const QString &fileName, const QString &UserID);
1057
1058 inline static const quint8 defaultSave[0x10F4] = {
1059 0xCD, 0x2A, 0x00, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0x25, 0x58, 0x0D, 0x33, 0x2F, 0x2C, 0x24, 0x29,
1060 0x25, 0x32, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x00, 0x40, 0x01, 0x36, 0x00, 0x39, 0x00,
1061 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x4C, 0x41, 0x54, 0x46, 0x4F, 0x52, 0x4D,
1062 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1063 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x58, 0xB0, 0x00, 0x00, 0x50, 0x00, 0x00,
1064 0x80, 0x00, 0x00, 0x20, 0x00, 0x06, 0x14, 0x10, 0x13, 0x11, 0x06, 0x0E, 0x00, 0x00, 0x00, 0x00,
1065 0x00, 0x00, 0x01, 0x80, 0x25, 0x58, 0x0D, 0x33, 0x2F, 0x2C, 0x24, 0x29, 0x25, 0x32, 0xFF, 0xFF,
1066 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x1D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1067 0x3A, 0x01, 0x3A, 0x01, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x01, 0x36, 0x00,
1068 0x62, 0x02, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
1069 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1070 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1071 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1072 0xFF, 0xFF, 0xFF, 0xFF, 0x23, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0F, 0x0D, 0x0B, 0x09, 0x05, 0x0D,
1073 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x22, 0x41, 0x52, 0x52, 0x45, 0x54, 0xFF, 0xFF,
1074 0x00, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 0xFF, 0x00, 0xFF, 0x1B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
1075 0x00, 0x00, 0x00, 0x00, 0xDE, 0x00, 0xDE, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
1076 0xDE, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1077 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1078 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1079 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1080 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x0B, 0x0B,
1081 0x0B, 0x0A, 0x07, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x19, 0x34, 0x49, 0x46, 0x41,
1082 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x01, 0x00,
1083 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x10, 0x00, 0x10, 0x00,
1084 0x00, 0x00, 0x00, 0x00, 0xDB, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
1085 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1086 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1087 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1088 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
1089 0x03, 0x01, 0x0A, 0x0B, 0x0D, 0x0E, 0x05, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14,
1090 0x21, 0x45, 0x52, 0x49, 0x54, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E, 0x00, 0xFF, 0x00,
1091 0xFE, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB1, 0x00, 0xB1, 0x00,
1092 0x17, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
1093 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1094 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1095 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1096 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1097 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x0A, 0x0C, 0x0B, 0x0A, 0x0A, 0x0E, 0x00, 0x00, 0x00, 0x00,
1098 0x00, 0x00, 0x01, 0x6A, 0x32, 0x45, 0x44, 0x00, 0x38, 0x29, 0x29, 0x29, 0xFF, 0xFF, 0xFF, 0xFF,
1099 0x30, 0x03, 0xFF, 0x00, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1100 0xDD, 0x00, 0xDD, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
1101 0x0C, 0x00, 0x00, 0x00, 0x31, 0xE8, 0x03, 0x00, 0x17, 0xE8, 0x03, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
1102 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1103 0xFF, 0xFF, 0xFF, 0xFF, 0x25, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1104 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1105 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1106 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x2B, 0x39, 0x55, 0x46, 0x46, 0x49, 0x45, 0xFF, 0xFF,
1107 0xFF, 0xFF, 0xFF, 0xFF, 0x57, 0x04, 0xFF, 0x00, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
1108 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
1109 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2C, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
1110 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1111 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1112 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1113 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x09, 0x01, 0x0C, 0x0C,
1114 0x0B, 0x0A, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x23, 0x4C, 0x4F, 0x55,
1115 0x44, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x00, 0x00, 0xFE, 0x07, 0x01, 0x00,
1116 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x8C, 0x00, 0x04, 0x00, 0x04, 0x00,
1117 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
1118 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1119 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1120 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1121 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x74, 0x00, 0x00, 0x00,
1122 0x0A, 0x32, 0x55, 0x48, 0x44, 0x46, 0x41, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1123 0x33, 0x45, 0x50, 0x48, 0x49, 0x52, 0x4F, 0x54, 0x48, 0xFF, 0xFF, 0xFF, 0x7F, 0x06, 0x08, 0x00,
1124 0xFF, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F,
1125 0xCC, 0x01, 0xCC, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0xE3, 0x04, 0x00,
1126 0x37, 0xFF, 0xFF, 0xFF, 0x35, 0xFF, 0xFF, 0xFF, 0x33, 0xFF, 0xFF, 0xFF, 0x17, 0xFF, 0xFF, 0xFF,
1127 0x31, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1128 0x32, 0xFF, 0xFF, 0xFF, 0x17, 0xFF, 0xFF, 0xFF, 0x34, 0xFF, 0xFF, 0xFF, 0x17, 0xFF, 0xFF, 0xFF,
1129 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1130 0xAA, 0xE8, 0x00, 0x00, 0x08, 0x01, 0x0C, 0x0C, 0x0B, 0x0A, 0x06, 0x0E, 0x00, 0x00, 0x00, 0x00,
1131 0x00, 0x00, 0x01, 0x3F, 0x23, 0x49, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1132 0x49, 0x06, 0xFF, 0x00, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1133 0xDF, 0x00, 0xDF, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
1134 0x12, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1135 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1136 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1137 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1138 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x03, 0x02,
1139 0x07, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1140 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1141 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1142 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1143 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1144 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1145 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1146 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1147 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1148 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1149 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1150 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1151 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1152 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1153 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1154 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1155 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1156 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1157 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1158 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1159 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1160 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1161 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1162 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1163 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1164 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1165 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1166 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1167 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1168 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1169 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1170 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1171 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1172 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1173 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1174 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1175 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1176 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1177 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1178 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1179 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1180 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1181 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1182 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1183 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1184 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1185 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1186 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1187 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1188 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1189 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1190 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1191 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1192 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1193 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1194 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1195 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1196 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1197 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1198 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1199 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1200 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1201 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1202 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1203 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1204 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1205 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1206 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1207 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1208 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1209 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1210 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1211 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1212 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1213 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1214 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1215 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1216 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1217 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1218 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1219 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1220 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1221 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1222 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1223 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1224 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1225 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1226 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1227 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1228 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1229 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1230 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1231 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1232 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1233 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1234 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1235 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1236 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1237 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1238 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1239 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1240 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1241 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1242 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00,
1243 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x4B, 0x00, 0x00, 0xB3, 0x4B, 0x00, 0x00,
1244 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x74, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x28, 0x6B, 0x19, 0x00,
1245 0x60, 0x40, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x32, 0x1E, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1246 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1247 0xFB, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1248 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1249 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1250 0x00, 0x00, 0x00, 0x00, 0x64, 0x64, 0x64, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1251 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1252 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1253 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1254 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1255 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1256 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1257 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1258 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1259 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1260 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1261 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF,
1262 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1263 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1264 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1265 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1266 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1267 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1268 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1269 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1270 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1271 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1272 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1273 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1274 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1275 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1276 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1277 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1278 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1279 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1280 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1281 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1282 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1283 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1284 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1285 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1286 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1287 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1288 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1289 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1290 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1291 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1292 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1293 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00,
1294 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1295 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1296 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1297 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1298 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
1299 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x4C, 0x41, 0x54,
1300 0x46, 0x4F, 0x52, 0x4D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
1301 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1302 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1303 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1304 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1305 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1306 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1307 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1308 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1309 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1310 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1311 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1312 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1313 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1314 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1315 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1316 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1317 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1318 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1319 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1320 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1321 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1322 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1323 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1324 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1325 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1326 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1327 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1328 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x41, 0x00, 0x00, 0x01, 0x02, 0x03,
1329 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x80, 0x00, 0x00, 0x00,
1330 0x00, 0x00, 0x00, 0x00
1331 };
1332};
FORMAT
Supported Data Types.
Definition: FF7SaveInfo.h:35
@ UNKNOWN
UNKNOWN FORMAT.
edit saves from Final Fantasy 7
Definition: FF7Save.h:68
SOUNDMODE
Definition: FF7Save.h:76
MENUITEMS
Menu items for ff7.
Definition: FF7Save.h:85
CONTROLACTION
Possible Actions the user can input.
Definition: FF7Save.h:89
KEYITEMS
ID's for each keyitem.
Definition: FF7Save.h:108
CURSORMODE
Definition: FF7Save.h:78
PSXBUTTON
Final Fantasy 7 Buttons for when on PSX.
Definition: FF7Save.h:99
WORLDVEHICLE
Definition: FF7Save.h:72
LOVER
Definition: FF7Save.h:74
int unknown_zmax()
the number of unknown z vars.
Definition: FF7Save.h:987
WORLDCHOCOBO
Definition: FF7Save.h:73
void setChocoboPen(int s, int pen, qint8 value)
return the chocobos in the pen outside of the chocobo farm
MAGICORDER
Definition: FF7Save.h:81
QVector< QString > SubContainer
used to hold more xml style string in metadata signing
Definition: FF7Save.h:206
ATBMODE
Definition: FF7Save.h:79
CONTROLMODE
Definition: FF7Save.h:77
MATERIACAVE
Definition: FF7Save.h:75
CAMERAMODE
Definition: FF7Save.h:80
void fileChanged(bool)
emits when internal data changes
Character Info in the save game.
a chocobo in save game
Main FF7 Save Data Structure.
materia format saved in materia list or on a character