@@ -429,9 +429,11 @@ void S9xDisableCheat (SCheat *c)
429429 if (!c->enabled )
430430 return ;
431431
432- S9xUpdateCheatInMemory (c);
433432 c->enabled = false ;
434433
434+ if (!Cheat.enabled )
435+ return ;
436+
435437 if (c->conditional && !c->cond_true )
436438 return ;
437439
@@ -478,6 +480,10 @@ void S9xEnableCheat (SCheat *c)
478480 return ;
479481
480482 c->enabled = true ;
483+
484+ if (!Cheat.enabled )
485+ return ;
486+
481487 byte = S9xGetByteFree (c->address );
482488
483489 if (c->conditional )
@@ -511,8 +517,8 @@ void S9xDisableCheatGroup (uint32 num)
511517 for (i = 0 ; i < Cheat.g [num].c .size (); i++)
512518 {
513519 S9xDisableCheat (&Cheat.g [num].c [i]);
514-
515520 }
521+
516522 Cheat.g [num].enabled = false ;
517523}
518524
@@ -650,6 +656,9 @@ void S9xUpdateCheatsInMemory (void)
650656 unsigned int i;
651657 unsigned int j;
652658
659+ if (!Cheat.enabled )
660+ return ;
661+
653662 for (i = 0 ; i < Cheat.g .size (); i++)
654663 {
655664 for (j = 0 ; j < Cheat.g [i].c .size (); j++)
@@ -705,8 +714,6 @@ bool8 S9xLoadCheatFile (const char *filename)
705714 if (!bml)
706715 return FALSE ;
707716
708- S9xDeleteCheats ();
709-
710717 n = bml_find_sub (bml, " cartridge" );
711718 if (n)
712719 {
@@ -724,7 +731,10 @@ bool8 S9xSaveCheatFile (const char *filename)
724731 FILE *file = NULL ;
725732
726733 if (Cheat.g .size () == 0 )
734+ {
735+ remove (filename);
727736 return TRUE ;
737+ }
728738
729739 file = fopen (filename, " w" );
730740
@@ -738,20 +748,62 @@ bool8 S9xSaveCheatFile (const char *filename)
738748
739749 for (i = 0 ; i < Cheat.g .size (); i++)
740750 {
751+ char *txt = S9xCheatGroupToText (i);
752+
741753 fprintf (file,
742754 " cheat%s\n "
743755 " description: %s\n "
744- " code: %s\n\n " ,
756+ " code: %s\n " ,
745757 (Cheat.g [i].enabled ? " enabled" : " " ),
746758 Cheat.g [i].name ,
747- S9xCheatGroupToText (i));
759+ txt);
760+
761+ delete[] txt;
748762 }
749763
750764 fclose (file);
751765
752766 return TRUE ;
753767}
754768
769+ void S9xCheatsDisable (void )
770+ {
771+ unsigned int i;
772+
773+ if (!Cheat.enabled )
774+ return ;
775+
776+ for (i = 0 ; i < Cheat.g .size (); i++)
777+ {
778+ if (Cheat.g [i].enabled )
779+ {
780+ S9xDisableCheatGroup (i);
781+ Cheat.g [i].enabled = TRUE ;
782+ }
783+ }
784+
785+ Cheat.enabled = FALSE ;
786+ }
787+
788+ void S9xCheatsEnable (void )
789+ {
790+ unsigned int i;
791+
792+ if (Cheat.enabled )
793+ return ;
794+
795+ Cheat.enabled = TRUE ;
796+
797+ for (i = 0 ; i < Cheat.g .size (); i++)
798+ {
799+ if (Cheat.g [i].enabled )
800+ {
801+ Cheat.g [i].enabled = FALSE ;
802+ S9xEnableCheatGroup (i);
803+ }
804+ }
805+ }
806+
755807bool8 S9xImportCheatsFromDatabase (const char *filename)
756808{
757809 bml_node *bml;
0 commit comments