2525FF7Save::FF7Save ()
2626{
2727 fileHasChanged = false ;
28- for (int i = 0 ; i < 15 ; i++)
28+ for (int i = 0 ; i < 15 ; i++) {
2929 slotChanged[i] = false ;
30+ SG_Region_String.append (QString ());
31+ }
3032 buffer_slot.checksum = 0x4D1D ;
3133}
3234
@@ -104,9 +106,9 @@ bool FF7Save::loadFile(const QString &fileName)
104106 if (FF7SaveInfo::isTypePC (fileFormat)) {
105107 for (int i = 0 ; i < 15 ; i++) {
106108 if (slot[i].checksum != 0x0000 && slot[i].checksum != 0x4D1D )
107- SG_Region_String[i] = QString (" BASCUS-94163FF7-S%1" ).arg (QString::number (i + 1 ), 2 , QChar (' 0' ));
109+ SG_Region_String. replace (i, QString (" BASCUS-94163FF7-S%1" ).arg (QString::number (i + 1 ), 2 , QChar (' 0' ) ));
108110 else
109- SG_Region_String[i]. clear ( );
111+ SG_Region_String. replace (i, QString () );
110112 }
111113 } else if (FF7SaveInfo::isTypeVMC (fileFormat)) {
112114 QByteArray mc_header;
@@ -116,21 +118,21 @@ bool FF7Save::loadFile(const QString &fileName)
116118 for (int i = 0 ; i < 15 ; i++) {
117119 int index = (128 * i) + 138 ;
118120 QString temp = QString (mc_header.mid (index, 20 ));
119- SG_Region_String[i] = (temp != invalidRegion) ? QString (mc_header.mid (index, 20 )) : QString ();
121+ SG_Region_String. replace (i, (temp != invalidRegion) ? QString (mc_header.mid (index, 20 )) : QString () );
120122 }
121123 } else if (FF7SaveInfo::isTypeSSS (fileFormat)) {
122124 if (fileFormat == FF7SaveInfo::FORMAT::PSX) {
123- SG_Region_String[ 0 ] = QFileInfo (file).fileName ();
125+ SG_Region_String. replace ( 0 , QFileInfo (file).fileName () );
124126 } else {
125127 file.seek (FF7SaveInfo::psxSaveNameOffset (fileFormat));
126- SG_Region_String[ 0 ] = QString (file.read (20 ));
128+ SG_Region_String. replace ( 0 , QString (file.read (20 ) ));
127129 }
128130 for (int i = 1 ; i < 15 ; i++)
129131 clearSlot (i);
130132 } else if (fileFormat == FF7SaveInfo::FORMAT::PDA) {
131133 file.seek (0 );
132134 QString temp = file.read (20 );
133- SG_Region_String[ 0 ] = (temp != invalidRegion) ? file.read (20 ) : QString ();
135+ SG_Region_String. replace ( 0 , (temp != invalidRegion) ? file.read (20 ) : QString () );
134136 } else {
135137 return false ;
136138 }
@@ -315,7 +317,7 @@ bool FF7Save::exportPCFormat(const QString &fileName, FF7SaveInfo::FORMAT export
315317 FF7HEADFOOT prev_slot_hf[15 ];
316318 bool prev_slotChanged[15 ];
317319 for (int i =0 ; i < 15 ; i++) {
318- prev_regionString[i] = SG_Region_String[i] ;
320+ prev_regionString[i] = SG_Region_String. at (i) ;
319321 prev_slots[i] = slot[i];
320322 prev_slotChanged[i] = slotChanged[i];
321323 prev_slot_hf[i] = hf[i];
@@ -348,7 +350,7 @@ bool FF7Save::exportPCFormat(const QString &fileName, FF7SaveInfo::FORMAT export
348350 filename = prev_fileName;
349351 _fileHeader = prev_fileHeader;
350352 for (int i =0 ; i < 15 ; i++) {
351- SG_Region_String[i] = prev_regionString[i];
353+ SG_Region_String. replace (i, prev_regionString[i]) ;
352354 slot[i] = prev_slots[i];
353355 slotChanged[i] = prev_slotChanged[i];
354356 hf[i] = prev_slot_hf[i];
@@ -369,7 +371,7 @@ bool FF7Save::exportVMCFormat(const QString &fileName, FF7SaveInfo::FORMAT expor
369371 FF7HEADFOOT prev_slot_hf[15 ];
370372 bool prev_slotChanged[15 ];
371373 for (int i =0 ; i < 15 ; i++) {
372- prev_regionString[i] = SG_Region_String[i] ;
374+ prev_regionString[i] = SG_Region_String. at (i) ;
373375 prev_slots[i] = slot[i];
374376 prev_slotChanged[i] = slotChanged[i];
375377 prev_slot_hf[i] = hf[i];
@@ -405,7 +407,7 @@ bool FF7Save::exportVMCFormat(const QString &fileName, FF7SaveInfo::FORMAT expor
405407 filename = prev_fileName;
406408 _fileHeader = prev_fileHeader;
407409 for (int i =0 ; i < 15 ; i++) {
408- SG_Region_String[i] = prev_regionString[i];
410+ SG_Region_String. replace (i, prev_regionString[i]) ;
409411 slot[i] = prev_slots[i];
410412 slotChanged[i] = prev_slotChanged[i];
411413 if (slotChanged[i])
@@ -556,7 +558,7 @@ void FF7Save::clearSlot(int rmslot)
556558 setSlotHeader (rmslot, QByteArray (FF7SaveInfo::slotHeaderSize (fileFormat), 0x00 ));
557559 setSlotFF7Data (rmslot, QByteArray (FF7SaveInfo::slotSize (), 0x00 ));
558560 setSlotFooter (rmslot, QByteArray (FF7SaveInfo::slotFooterSize (fileFormat), 0x00 ));
559- SG_Region_String[rmslot]. clear ( );
561+ SG_Region_String. insert (rmslot, QString () );
560562 if (FF7SaveInfo::isTypeVMC (fileFormat)) {
561563 // clean the mem card header if needed.
562564 int index = (128 + (128 * rmslot));
@@ -762,7 +764,7 @@ void FF7Save::fix_psv_header(int s, int blocks)
762764 fix_psx_header (s);// adjust time.
763765 QByteArray data = fileHeader ();
764766 data.replace (FF7SaveInfo::psxSaveNameOffset (FF7SaveInfo::FORMAT::PS3), 0x20 , QByteArray (0x20 , ' \x00 ' ));
765- data.replace (FF7SaveInfo::psxSaveNameOffset (FF7SaveInfo::FORMAT::PS3), SG_Region_String[s] .size (), SG_Region_String[s] .toLatin1 ());
767+ data.replace (FF7SaveInfo::psxSaveNameOffset (FF7SaveInfo::FORMAT::PS3), SG_Region_String. at (s) .size (), SG_Region_String. at (s) .toLatin1 ());
766768 QByteArray bSize (3 , ' \x00 ' );
767769 switch ((blocks * FF7SaveInfo::fileSize (FF7SaveInfo::FORMAT::PSX))) {
768770 default : bSize.setRawData (" \x00\x20\x00 " , 3 ); break ;
@@ -861,8 +863,9 @@ void FF7Save::setSaveNumber(int s, int saveNum)
861863{
862864 if (!isFF7 (s))
863865 return ;
864-
865- SG_Region_String[s].replace (SG_Region_String[s].lastIndexOf (QChar (' S' ))+ 1 , 2 , QString (" %1" ).arg (QString::number (saveNum + 1 ), 2 , QChar (' 0' )));
866+ auto str = SG_Region_String.at (s);
867+ str.replace (str.lastIndexOf (QChar (' S' ))+ 1 , 2 , QString (" %1" ).arg (QString::number (saveNum + 1 ), 2 , QChar (' 0' )));
868+ SG_Region_String.replace (s, str);
866869
867870 switch (format ()) {
868871 default : break ;
@@ -878,26 +881,26 @@ void FF7Save::setSaveNumber(int s, int saveNum)
878881
879882QString FF7Save::region (int s)
880883{
881- return SG_Region_String[s] ;
884+ return SG_Region_String. at (s) ;
882885}
883886void FF7Save::setRegion (int s, const QString &new_region)
884887{
885888 if ((new_region == " USA" ) || (new_region == " NTSC-U" ) || (new_region == " 1" )) {
886- SG_Region_String[s] = QString (" BASCUS-94163FF7-S%1" ).arg (QString::number (s + 1 ), 2 , QChar (' 0' ));
889+ SG_Region_String. replace (s, QString (" BASCUS-94163FF7-S%1" ).arg (QString::number (s + 1 ), 2 , QChar (' 0' ) ));
887890 } else if ((new_region == " UK" ) || (new_region == " PAL-E" ) || (new_region == " 2" )) {
888- SG_Region_String[s] = QString (" BESCES-00867FF7-S%1" ).arg (QString::number (s + 1 ), 2 , QChar (' 0' ));
891+ SG_Region_String. replace (s, QString (" BESCES-00867FF7-S%1" ).arg (QString::number (s + 1 ), 2 , QChar (' 0' ) ));
889892 } else if ((new_region == " French" ) || (new_region == " PAL-FR" ) || (new_region == " 3" )) {
890- SG_Region_String[s] = QString (" BESCES-00868FF7-S%1" ).arg (QString::number (s + 1 ), 2 , QChar (' 0' ));
893+ SG_Region_String. replace (s, QString (" BESCES-00868FF7-S%1" ).arg (QString::number (s + 1 ), 2 , QChar (' 0' ) ));
891894 } else if ((new_region == " German" ) || (new_region == " PAL-DE" ) || (new_region == " 4" )) {
892- SG_Region_String[s] = QString (" BESCES-00869FF7-S%1" ).arg (QString::number (s + 1 ), 2 , QChar (' 0' ));
895+ SG_Region_String. replace (s, QString (" BESCES-00869FF7-S%1" ).arg (QString::number (s + 1 ), 2 , QChar (' 0' ) ));
893896 } else if ((new_region == " Spanish" ) || (new_region == " PAL-ES" ) || (new_region == " 5" )) {
894- SG_Region_String[s] = QString (" BESCES-00900FF7-S%1" ).arg (QString::number (s + 1 ), 2 , QChar (' 0' ));
897+ SG_Region_String. replace (s, QString (" BESCES-00900FF7-S%1" ).arg (QString::number (s + 1 ), 2 , QChar (' 0' ) ));
895898 } else if ((new_region == " Japanese" ) || (new_region == " NTSC-J" ) || (new_region == " 6" )) {
896- SG_Region_String[s] = QString (" BISLPS-00700FF7-S%1" ).arg (QString::number (s + 1 ), 2 , QChar (' 0' ));
899+ SG_Region_String. replace (s, QString (" BISLPS-00700FF7-S%1" ).arg (QString::number (s + 1 ), 2 , QChar (' 0' ) ));
897900 } else if ((new_region == " International" ) || (new_region == " NTSC-JI" ) || (new_region == " 7" )) {
898- SG_Region_String[s] = QString (" BISLPS-01057FF7-S%1" ).arg (QString::number (s + 1 ), 2 , QChar (' 0' ));
901+ SG_Region_String. replace (s, QString (" BISLPS-01057FF7-S%1" ).arg (QString::number (s + 1 ), 2 , QChar (' 0' ) ));
899902 } else {
900- SG_Region_String[s] = new_region;
903+ SG_Region_String. replace (s, new_region) ;
901904 }
902905
903906 if (FF7SaveInfo::isTypeVMC (fileFormat)) {
@@ -912,14 +915,14 @@ void FF7Save::setRegion(int s, const QString &new_region)
912915void FF7Save::copySlot (int s)
913916{
914917 buffer_slot = slot[s];
915- buffer_region = SG_Region_String[s] ;
918+ buffer_region = SG_Region_String. at (s) ;
916919}
917920
918921void FF7Save::pasteSlot (int s)
919922{
920923 slot[s] = buffer_slot;
921- SG_Region_String[s] = buffer_region;
922- SG_Region_String[s] .replace (SG_Region_String[s]. lastIndexOf ( QChar ( ' S ' ))+ 1 , 2 , QString ( " %1 " ). arg ( QString::number (s + 1 ), 2 , QChar ( ' 0 ' )) );
924+ auto newRegion = buffer_region. replace (buffer_region. lastIndexOf ( QChar ( ' S ' ))+ 1 , 2 , QString ( " %1 " ). arg ( QString::number (s + 1 ), 2 , QChar ( ' 0 ' ))) ;
925+ SG_Region_String.replace (s, newRegion );
923926 if (FF7SaveInfo::isTypeVMC (fileFormat)) {
924927 vmcRegionEval (s);
925928 fix_vmc_header ();
@@ -5682,7 +5685,7 @@ void FF7Save::vmcRegionEval(int s)
56825685 }
56835686 }
56845687 }
5685- SG_Region_String[s] = newRegionString;
5688+ SG_Region_String. replace (s, newRegionString) ;
56865689}
56875690bool FF7Save::subMiniGameVictory (int s)
56885691{
0 commit comments