//-------------------------------------- //--- 010 Editor v8.0 Binary Template // // File: rf4s.sav / rf4_sys.sav // Author: HenryEx // Revision: 2020-09-22 // Purpose: Display and edit the save selection / // system settings file in Rune Factory 4 //-------------------------------------- //----------------------------------- // Define enums typedef enum { EASY, NORMAL = 64, HARD = 128 } DIFF; // this is a simple bitflag, but classed as 4byte for padding shenanigans typedef enum { Male, Female } GENDER; // ItemID, 2 bytes but defined as 4 for bitfield shenanigans typedef enum { Cabbage = 1, KingCabbage, PinkTurnip, ColossalPink, PinkMelon, ConquerorMelon, Onion, UltraOnion, Pumpkin, DoomPumpkin, Cucumber, KaiserCucumber, Corn, GigantCorn, Tomato, TitanTomato, Eggplant, EmperorEggplant, Yam, LordlyYam, Potato, PrincelyPotato, Carrot, RoyalCarrot, GreenPepper, GreenPepperRex, Spinach, SovereignSpinach, Turnip, TyrantTurnip, Radish, NobleRadish, Leek, LegendaryLeek, BokChoy, BossBokChoy, HotHotFruit, GiantHotHotFruit, BambooSprout, GoldenCabbage, GoldenKingCabbage, GoldenPumpkin, GldnDoomPumpkin, GoldenPotato, GoldPrincePotato, GoldenTurnip, GoldenTyrantTurnip, MushroomA, MushroomB, MushroomC, MushroomD, MushroomE, Mushroom, MonarchMushroom, Strawberry, SultanStrawberry, Pineapple, KingPineapple, Grapes, Apple, Orange, MealyApple, Toyherb, UltraToyherb, MoondropFlower, UltraMoondropFlower, PinkCat, KingPinkCat, CharmBlue, GreatCharmBlue, MedicinalHerb, AntidoteGrass, BlackGrass, OrangeGrass, RedGrass, YellowGrass, BlueGrass, GreenGrass, PurpleGrass, IndigoGrass, WhiteGrass, Weeds, WitheredGrass, CherryGrass, KingCherryGrass, LampGrass, KaiserLampGrass, BlueCrystal, BigBlueCrystal, EmeryFlower, GreatEmeryFlower, Ironleaf, SuperIronleaf, FourLeafClover, Great4LeafClover, Fireflower, BigFireflower, GreenCrystal, BigGreenCrystal, NoelGrass, LargeNoelGrass, AutumnGrass, BigAutumnGrass, PomPomGrass, KingPomPomGrass, RedCrystal, BigRedCrystal, WhiteCrystal, BigWhiteCrystal, AyngondaiaLawn, TheProtein, Intelligencer, VitalGummi, HeartDrink, AntidotePotion, ParaGone, Roundoff, ColdMedicine, Formuade, LovePotion, Invinciroid, Leveliser, HeavySpice, SweetPowder, SourDrop, MixedHerbs, RecoveryPotion, HealingPotion, MysteryPotion, MagicalPotion, ObjectX, FailedDish, DisastrousDish, TroutSashimi, CharSashimi, RainbowSashimi, SalmonSashimi, CherrySashimi, TaimenSashimi, SnapperSashimi, GlitterSashimi, LoverSashimi, GirellaSashimi, SkipjackSashimi, YellowtailSashimi, TunaSashimi, SardineSashimi, NeedlefishSashimi, PikeSashimi, FlounderSashimi, TurbotSashimi, FallSashimi, SquidSashimi, SunsquidSashimi, LampSquidSashimi, BlowfishSashimi, LobsterSashimi, ShrimpSashimi, FriedVeggies, FriedRice, CabbageCakes, FrenchFries, Croquettes, Popcorn, CornCereal, MisoEggplant, FriedEggs, Omelet, OmeletRice, BakedApple, CurryBread, FrenchToast, Donut, FriedUdon, Tempura, Pancakes, Gyoza, Risotto, DryCurry, SaltedMasuTrout, SaltedChar, SaltedRTrout, SaltedCSalmon, SaltedChub, SaltedSalmon, SaltedTaimen, GrilledCCarp, GrilledGibelio, GrilledSnapper, GrilledGirella, GrilledGSnapper, GrilledLSnapper, GrilledSkipjack, GrilledMackerel, GrilledYellowtail, SaltedPondSmelt, TunaTeriyaki, DriedSardines, GrilledNeedlefish, SaltedPike, GrilledFlounder, GrilledTurbot, GrilledFFlounder, GrilledSquid, GrilledSunsquid, GrilledLampSquid, GrilledBlowfish, GrilledLobster, GrilledShrimp, GrilledSFlounder, HotMilk, HotChocolate, GrapeLiqueur, BoiledPumpkin, BoiledSpinach, BoiledEgg, GlazedYam, BoiledGyoza, StrawberryJam, AppleJam, GrapeJam, Marmalade, CheeseFondue, Udon, CurryUdon, TempuraUdon, RicePorridge, MilkPorridge, TempuraBowl, EggBowl, Stew, CurryRice, UltimateCurry, RoyalCurry, RelaxTea, GrilledMiso, UnionStew, RockfishStew, CornontheCob, BakedOnigiri, SweetPotato, Toast, JamRoll, ButterRoll, Pizza, SeafoodPizza, Doria, SeafoodDoria, Gratin, SeafoodGratin, YamoftheAges, Cookie, ChocoCookie, Cake, ChocolateCake, Cheesecake, ApplePie, PineappleJuice, TomatoJuice, GrapeJuice, OrangeJuice, AppleJuice, StrawberryMilk, FruitJuice, FruitSmoothie, VegetableJuice, VeggieSmoothie, MixedJuice, MixedSmoothie, Ketchup, Butter, GoldJuice, PreludetoLove, HotJuice, SteamedBread, CheeseBread, MeatDumpling, ChineseManju, CurryManju, SteamedGyoza, PoundCake, ChocolateSponge, Flan, PumpkinFlan, Dumplings, Salad, Sandwich, FruitSandwich, PickledTurnip, Pickles, BambooRice, RaisinBread, IceCream, RelaxTeaLeaves, Onigiri, Bread, SalmonOnigiri, PickleMix, TurnipHeaven, Rice, Chocolate, Wine, ElliLeaves, Milk_S, Milk_M, Milk_L, Egg_S, Egg_M, Egg_L, Mayonnaise, Cheese, Yogurt, Honey, Flour, Oil, CurryPowder, RiceFlour, MedicineBread, MedicineBreadPlus, CookingBread, CookingBreadPlus, WeaponBread, WeaponBreadPlus, AccessoryBread, AccessoryBreadPlus, FarmingBread, FarmingBreadPlus, Broadsword, SteelSword, WindSword, AquaSword, Defender, AerialBlade, BurningSword, Sakura, LuckBlade, PlatinumSword, Raventine, Icifier, SoulEater, SmashBlade, DragonSlayer, Sunspot, StarSaber, GaiaSword, Grantale, ChaosBlade, RuneBlade, SteelSwordPlus, PlatinumSwordPlus, Cutlass, BackScratcher, Durendal, Gladius, GorgeousSword, Spoon, RuneLegend, Snakesword, Veggieblade, Invisiblade, PlantSword, Claymore, Zweihaender, FlameSaber, CycloneBlade, DancingDicer, GreatSword, HeavenAsunder, GrandSmasher, BlueEyedBlade, PoisonBlade, SteelSlicer, Flamberge, ShineBlade, EarthShade, BioSmasher, Punisher, SeaCutter, Volcanon, SnowCrown, MoonShadow, ForceElement, ZweihaenderPlus, FlambergePlus, Katzbalger, BigKnife, Katana, Balmung, Psycho, Dekash, Braveheart, Belzebuth, Daicone, Caliburn, Orochi, Spear, Lance, NeedleSpear, Halberd, WaterSpear, BloodLance, WoodStaff, PoisonSpear, Corsesca, SilentGrave, FlareLance, HeavyLance, Iceberg, Metus, MonkStaff, Overbreak, Brionac, FeatherLance, Belvarose, Bjor, Gungnir, LancePlus, CorsescaPlus, Trident, Pitchfork, DragonsFang, GaeBolg, MagicalLance, SafetyLance, Legion, PoisonQueen, PineClub, Fivestaff, BattleHammer, WarHammer, GreatHammer, Schnabel, GigantHammer, Mjolnir, SpikedHammer, FlameHammer, IceHammer, SkyHammer, GravitonHammer, BoneHammer, CrystalHammer, WarHammerPlus, GigantHammerPlus, Hammer, ToyHammer, FatalCrush, StrongStone, Kongo, Bat, IronBat, SplashStar, BattleAxe, PoleAxe, Alldale, GreatAxe, DemonAxe, CrescentAxe, Executioner, HeatAxe, FrostAxe, Tomahawk, RockAxe, DoubleEdge, SaintAxe, PoleAxePlus, CrescentAxePlus, Axe, Lollipop, BattleScythe, BasiliskFang, DevilFinger, Rod, Staff, SilverStaff, FlareStaff, IceStaff, LightningWand, EarthStaff, WizardsStaff, MagesStaff, RuneStaff, MagesStaffPlus, MagicBroom, Basket, MagicShot, HellBranch, CrimsonStaff, BubbleStaff, GaiaRod, ShootingStarStaff, CycloneRod, StormWand, RubyRod, EmeraldRod, SapphireRod, AmethystRod, AquamarineRod, DiamondRod, FriendlyRod, LoveLoveRod, SorcerersWand, HellCurse, Algernon, GoldenTurnipStaff, SweetPotatoStaff, ElvishHarp, Syringe, ShortDagger, SteelEdge, WindEdge, FrostEdge, SteelKatana, SonicDagger, Salamander, TwinBlade, Rampage, PlatinumEdge, Efreet, DeepBlizzard, DarkInvitation, ForceDivide, DragoonClaw, HeartFire, DesertWind, BrokenWall, OrcusSword, ChaosEdge, RuneEdge, IronEdge, EmeraldEdge, ThiefKnife, DoubleScratch, PriestSaber, EarnestEdge, GorgeousLx, Acutorimass, TwinLeeks, TwinJustice, LeatherGloves, BrassKnuckles, Kote, BearClaws, FistsofFire, FistsofWater, FistsofWind, FistsoftheEarth, FistsofLight, FistsofDark, Gloves_A, CatPunch, DragonClaws, AnimalPuppets, IronleafFists, GolemPunch, HandofGod, Caestus, BazalKatar, Fenrir, CheapHoe, SturdyHoe, SeasonedHoe, ShinyHoe, BlessedHoe, CheapWaterpot, TinWaterpot, LionWaterpot, RainbowWaterpot, JoyWaterpot, CheapSickle, IronSickle, QualitySickle, SuperSickle, LegendarySickle, CheapHammer, IronHammer, SilverHammer, GoldenHammer, PlatinumHammer, CheapAxe, ChoppingAxe, LumberAxe, MountainAxe, MiracleAxe, CheapPole, BeginnersPole, SkilledPole, FamousPole, SacredPole, SmallShield, IronShield, RoundShield, PlatinumShield, HeavyShield, KnightShield, RuneShield, MagicShield, PrismShield, ElementShield, ChaosShield, TurtleShield, BoneShield, KiteShield, MagicalShield, MonkeyPlush, Umbrella, MagicPlantShield, AquamarineRing, AmethystRing, EmeraldRing, SapphireRing, DiamondRing, RubyRing, HappyRing, CursedRing, FireRing, WindRing, WaterRing, EarthRing, SilverRing, GoldRing, PlatinumRing, CriticalRing, SilentRing, ParalysisRing, PoisonRing, MagicRing, CheapBracelet, BronzeBracelet, SilverBracelet, GoldBracelet, PlatinumBracelet, AquamarineBrooch, AmethystBrooch, EmeraldBrooch, SapphireBrooch, DiamondBrooch, RubyBrooch, SilverPendant, HeartPendant, StarPendant, SunPendant, FieldPendant, DewPendant, EarthPendant, HolyAmulet, Charm, LeatherBelt, LuckyStrike, Talisman, ChampBelt, Gloves_B, WorkGloves, Badge, PowerGloves, MagicCharm, ShieldRing, Rosary, CourageBadge, HerosProof, ProofofWisdom, HandKnitScarf, FluffyScarf, ArtofAttack, ArtofDefense, ArtofMagic, Earrings, WitchEarrings, MagicEarrings, VentisCharmA, VentisCharmB, AnettesNecklace, ThrowingRing, StayUpRing, StrangePendant, DolphinBrooch, EngagementRing, SilverHairpin, GoldHairpin, FancyHat, Headband, FeatheredHat, BrandGlasses, Spectacles, IntelligentGlasses, StrawHat, FireproofHood, CuteKnitting, BlackRibbon, OrangeRibbon, RedRibbon, YellowRibbon, BlueRibbon, GreenRibbon, PurpleRibbon, IndigoRibbon, WhiteRibbon, TurnipHeadgear, PumpkinHeadgear, SpringHeaddress, SummerHeaddress, AutumnHeaddress, WinterHeaddress, LolitaHeaddress, Headdress, CatEars, Crown, FourSeasons, SilkHat, FeatherBoots, HeavyBoots, LeatherBoots, KnightBoots, SnowBoots, IceSkates, PiyoSandals, StepInBoots, GhostBoots, IronGeta, StriderBoots, SecretShoes, WetBoots, SneakingBoots, FastStepBoots, WaterShoes, RocketWing, SilverBoots, GoldBoots, BoneBoots, FairyBoots, FreeFarmingShoes, Shirt, Vest, WoolyShirt, MercenarysCloak, Mail, CottonCloth, ChainMail, ScaleVest, Protector, WindCloak, SparklingShirt, PlatinumMail, LamellarVest, ElvishCloak, PowerProtector, DragonCloak, RuneVest, RoyalGarter, FourDragonsVest, Brush, Clippers, MagnifyingGlass, TurnipSeeds, PotatoSeeds, CucumberSeeds, StrawberrySeeds, CabbageSeeds, MoondropSeeds, ToyherbSeeds, TomatoSeeds, CornSeeds, OnionSeeds, PumpkinSeeds, PineappleSeeds, PinkCatSeeds, EggplantSeeds, CarrotSeeds, YamSeeds, SpinachSeeds, GreenPepperSeeds, CharmBlueSeeds, FodderSeeds, CherryGrassSeeds, LampGrassSeeds, BlueCrystalSeeds, EmeryFlowerSeeds, IronleafSeeds, CloverSeeds, FireflowerSeeds, GreenCrystalSeeds, NoelGrassSeeds, AutumnGrassSeeds, PomPomGrassSeeds, RedCrystalSeeds, WhiteCrystalSeeds, PinkTurnipSeeds, RadishSeeds, LeekSeeds, BokChoySeeds, GoldCabbageSeeds, GoldPumpkinSeeds, GoldPotatoSeeds, GoldTurnipSeeds, GoldMelonSeeds, HotHotSeeds, AppleTreeSeeds, OrangeTreeSeed, GrapeTreeSeed, ShiningSeed, DungeonSeed, SwordSeed, ShieldSeed, WettablePowder, Greenifier, GreenifierPlus, FormulaA, FormulaB, FormulaC, NoRotAlpha, NoRotBeta, Giantizer, Minimizer, Fodder, Fur_S, Fur_M, Fur_L, Yarn, ScrapMetal, Iron, Bronze, Silver, Gold, Platinum, Orichalcum, Diamond, Ruby, Emerald, Sapphire, Amethyst, Aquamarine, CheapCloth, QualityCloth, SilkCloth, Arrowhead, WarriorsProof, Glue, OldBandage, Gunpowder, EarthCrystal, DevilHorn, DevilBlood, MagicPowder, MagicCrystal, ShoulderPiece, GiantsNail, GiantsGloves, HammerPiece, InsectCarapace, InsectJaw, SpidersThread, PrettyThread, PrettyCarapace, RigidHorn, ScorpionTail, ScorpionPincer, PantherClaw, DragonFang, WolfFang, QualityFur, BullsHorn, BirdsFeather, WindCrystal, Fur, Root, Spore, PoisonPowder, PlantStem, StrongVine, FishFossil, WaterCrystal, TurtleShell, FireCrystal, GhostHood, Skull, BrokenHilt, BrokenBox, FairyDust, SmallCrystal, WoolyFurball, LightCrystal, DarkCrystal, LoveCrystal, RaccoonLeaf, DragonBones, RedLionFur, BlueLionFur, BrokenIceWall, Ammonite, IcyNose, ChestHair, ChimeraTail, GrimoireScale, LegendaryScale, DragonFin, MovingBranch, ElectroCrystal, MelodyBottle, GolemTablet, EarthwyrmScale, FirewyrmScale, AmbrosiasThorns, LightningMane, CursedDoll, PuppetryStrings, LeftRockShard, RightRockShard, CrystalSkull, ThroneoftheEmpire, WindDragonTooth, RuneSphereShard, RafflesiaPetal, MTGUPlate, CheapPropeller, QualityPropeller, RustyScrew, ShinyScrew, PalmClaw, MalmClaw, BigCrystal, RuneCrystal, GreenCore, RedCore, YellowCore, BlueCore, WaterDragonAsh, FireDragonAsh, EarthDragonAsh, HolySpore, WhiteStone, InvisibleStone, ShadeStone, DoubleSteel, TenFoldSteel, RoundStone, GlittaAugite, LightOre, ScrapMetalPlus, Stick, QualityPuffyFur, YellowDown, PenguinDown, IvoryTusk, UnbrokenIvoryTusk, TinyGolemStone, ParalysisPoison, BlackBirdFeather, Vine, InsectHorn, MysteriousPowder, WetScale, Magic, GoldWolfFang, BlueGiantsGlove, ThickStick, MagicClaw, GlisteningBlade, FairyElixir, GreatHammerShard, GolemStone, BlackTortoiseShell, ThunderbirdFeather, BigGiantsNail, YellowFeather, QualityWornCloth, PiratesArmor, BladeShard, ProofofRank, TurnipsMiracle, DragonScale, GolemSpiritStone, AncientOrcCloth, QueensJaw, PoisonKing, DangerousScissors, ChimerasClaw, TabletofTruth, BigBirdsComb, BattleTurnip, BlackScale, BlueScale, GlitterScale, CrimsonScale, LoveScale, DragonicStone, MasuTrout, Squid, Taimen, Sardine, Char, Chub, GlitterSnapper, Skipjack, Turbot, Gibelio, Salmon, Mackerel, Needlefish, Pike, Sunsquid, Shrimp, Snapper, ThrobbySnapper, RainbowTrout, Flounder, Blowfish, Yellowtail, CrucianCarp, Tuna, Girella, FallFlounder, CherrySalmon, LampSquid, Lobster, PondSmelt, SandFlounder, Rockfish, Can, Boot, RareCan, Rock, Branch, Lumber, MaterialStone, Escape_S, Fireball_S, BigFire_S, Explosion_S, WaterLaser_S, ParallelLaser_S, DeltaLaser_S, ScrewRock_S, EarthSpike_S, AvengerRock_S, SonicWind_S, DoubleSonic_S, PenetrateSonic_S, LightBarrier_S, Shine_S, Prism_S, DarkBall_S, DarkSnake_S, Darkness_S, Cure_S, CureAll_S, MasterCure_S, Medipoison_S, Mediparalyze_S, Mediseal_S, GreetingSpell_S, PowerWave_S, DashSlash_S, RushAttack_S, RoundBreak_S, MindThrust_S, Gust_S, Storm_S, Blitz_S, TwinAttack_S, RailStrike_S, WindSlash_S, FlashStrike_S, NaiveBlade_S, SteelHeart_S, DeltaStrike_S, Hurricane_S, ReaperSlash_S, Millionstrike_S, AxelDisaster_S, StardustUpper_S, TornadoSwing_S, GrandImpact_S, GigaSwing_S, UpperCut_S, DoubleKick_S, StraightPunch_S, NekoDamashi_S, RushPunch_S, Cyclone_S, RapidMove_S, BonusConcerto_S, StrikingMarch_S, IronWaltz_S, Minerals, Liquids, ClawsandFangs, SticksandStems, ClothsandSkins, Furs, Strings, Shards, PowdersandSpores, Scales, ShellsandBones, Stones, Turnip_B, Crystals, Jewels, Feathers, Jam, Curry, Squid_B, BattleTurnip_B, GoldBattleTurnip, Bullet, GoldenBullet, CherryTurnip, DisgustingFood } ITEMID; typedef enum { Spring, Summer, Fall, Winter } MONTH; // 5-bit enum; Traveler_29 to _31 crash (no picture) typedef enum { None, Vishnal, Clorica, Volkanon, Forte, Kiel, Bado, Margaret, Dylas, Arthur, Porcoline, XiaoPai, LinFa, Amber, Illuminata, Doug, Blossom, Dolce, Jones, Nancy, Leon, Ventuswill, Son, Daughter, Barrett, Raven, MistressTrupin, TravelerM1, TravelerM2 } PTNR; //----------------------------------- // Define aux structures // Placeholder typedef struct { } UNKNWN; // Character and Farm names typedef struct { char charName[19]; char farmName1[25]; char farmName2[25]; char farmName3[25]; char farmName4[25]; char farmName5[25]; } NAMES; // bitfield for active saves typedef struct { ulong slot01 : 1; ulong slot02 : 1; ulong slot03 : 1; ulong slot04 : 1; ulong slot05 : 1; ulong slot06 : 1; ulong slot07 : 1; ulong slot08 : 1; ulong slot09 : 1; ulong slot10 : 1; ulong slot11 : 1; ulong slot12 : 1; ulong slot13 : 1; ulong slot14 : 1; ulong slot15 : 1; ulong slot16 : 1; ulong slot17 : 1; ulong slot18 : 1; ulong slot19 : 1; ulong slot20 : 1; } SLOTB; //----------------------------------- // Define main structures for 3DS typedef struct { char magic[4]; uint CRC32; struct { ubyte slot1 : 1; ubyte slot2 : 1; ubyte slot3 : 1; ubyte : 5; } activeSaveSlots; ubyte loadPos : 4 ; ubyte extraOrders : 4; } HEADER ; typedef struct { ubyte timeMinute; ubyte timeHour; ubyte currentDay; MONTH currentMonth; short currentYear; DIFF difficulty; ubyte costume; ushort level ; ushort location : 10; PTNR partner : 5; ushort UnknownB : 1; GENDER gender : 1; ITEMID headGear : 11; ITEMID mainHand : 10; ITEMID offHand : 10; NAMES names; } SLOT ; //----------------------------------- // Define main structures for Switch typedef struct { char magic[4]; uint CRC32; SLOTB activeSaveSlots; SLOTB activeSaveSlotsNW ; struct { ubyte gameCleared : 1 ; ubyte extraOrdersA : 1 ; ubyte : 2; ubyte extraOrdersB : 1 ; ubyte extraOrdersC : 1 ; ubyte : 2; ubyte : 1; ubyte unlockedAllNewlywed : 1 ; ubyte japaneseAudio : 1; ubyte : 5; ubyte : 8; ubyte : 8; } bitflags; ushort loadPos ; ushort loadPosNW ; } SHEADER ; typedef struct { ubyte timeMinute; ubyte timeHour; ubyte currentDay; MONTH currentMonth; short currentYear; DIFF difficulty; ubyte Unknown; ubyte costume; ubyte isSuperHard ; ushort UnknownA ; ushort level ; ushort location : 10; PTNR partner : 5; ushort UnknownB : 1; GENDER gender : 1; ITEMID headGear : 11; ITEMID mainHand : 10; ITEMID offHand : 10; NAMES names; } SSLOT ; //-------------------------------------------- // Custom functions // Read and display char names on save slots string ReadSaveChar( SLOT &sslot ) { local string s; s += sslot.names.charName; if( s != "" ) { SPrintf( s, "%s, Level %d ", s, sslot.level + 1 ); // if( sslot.partner ) // s = s + "+ " + EnumToString( sslot.partner ); return s; } else return "(none)"; } // Read and display char names on save slots for Special string ReadSaveCharS( SSLOT &sslot ) { local string s; s += sslot.names.charName; if( s != "" ) { SPrintf( s, "%s, Level %d ", s, sslot.level + 1 ); if( sslot.partner ) s = s + "+ " + EnumToString( sslot.partner ); return s; } else return "(none)"; } // Display save info for Special string ReadSaveInfoS( SSLOT &sinfo ) { local string s; // Put the var value into a buffer string via SPrintf if ( sinfo.currentDay != 0 ) SPrintf( s, "%02d:%02d, %02d. %s Y%d", sinfo.timeHour, sinfo.timeMinute, sinfo.currentDay, EnumToString( sinfo.currentMonth ), sinfo.currentYear ); return s; } // Display save info string ReadSaveInfo( SLOT &sinfo ) { local string s; // Put the var value into a buffer string via SPrintf if ( sinfo.currentDay != 0 ) SPrintf( s, "%02d:%02d, %02d. %s Y%d", sinfo.timeHour, sinfo.timeMinute, sinfo.currentDay, EnumToString( sinfo.currentMonth ), sinfo.currentYear ); return s; } // Display unknown values in comments for quick comparison string ReadSaveCommentS( SSLOT &sinfo ) { local string s; if ( sinfo.currentDay != 0 ) { s = EnumToString( sinfo.difficulty ); if( (s == "HARD") && sinfo.isSuperHard ) s = "HELL"; SPrintf( s, "%s C%d %d 0x%02X %d", s, sinfo.costume, sinfo.Unknown, sinfo.UnknownA, sinfo.UnknownB ); } return s; } //----------------------------------- // Define file itself if (FileSize() == 0x1FC) { HEADER header; SLOT Save1; SLOT Save2; SLOT Save3; } else { SHEADER header; SSLOT saves[20]; SSLOT savesNW[20]; }