HenryEx icon

Rune Factory 4 Savefile Binary Template

HenryEx | PRO | 10/04/20 05:10:42 PM UTC (Edited) | 0 ⭐ | 952 👁️ | Never ⏰ | []
text |

131.74 KB

|

None

|

0 👍

/

0 👎

//--------------------------------------
//--- 010 Editor v8.0.0 Binary Template
//
// File: RF4 save files (rf4a.sav, rf4b.sav, rf4c.sav, rf4_sXX.sav)
// Author: HenryEx
// Revision: 2020-10-04
// Purpose: Works for both Rune Factory 4 (3DS) and
//          Rune Factory 4 Special (NS)
//--------------------------------------
 /* Addresses:
 0x00000: CRC32 4b
0x00022: Something about tornados? 0B - no tornado, 05 - Tornado
0x00036: Gender
0x0003C: Lumber 4b
0x00040: Stone 4b
0x00044: Compost 4b
0x00048: Fodder 4b
0x0004C: Money 4b, 8b?
0x00054: Cur HP 4b
0x00058: HP mod 4b
0x0005C: Cur RP 2b
0x0005E: RP mod 2b
0x00060: Str mod
0x00064: Int mod
0x00068: Vit mod
0x0006C: Level (minus 1)
0x00070: Exp
 - Birthday - 
0x1E8DE: Middle 8 bits spread over 2 bytes, and in
         REVERSE BIT ORDER HOLY OMFG WHAT WHY, so:
         b0-4: ???
         b5-6: Month (0-3)
         b7-11: Day (not 0-based)
         b12-15: ???
Reverse bits means, for days: day 30 is value 15; Day 2 is value 8,
Day 11 is value 26... this is terrible
 - Villager Stats -
(Block size: 0x64 / 100 
 Starts at dummy, 0xb8?)
 Vishnal:
0x0011C: Cur HP 4b
0x00120: HP mod 4b
0x00128: Str mod
0x0012C: Int mod
0x00130: Vit mod
0x00134: Level (minus 1)
0x00138: Exp
0x0013D: flags (80 if been in party -> stats visible)
  - Skills & Skill Exp (4b, 4b) -
0x05964: Short Sword
0x0596C: Long Sword
0x05974: Spear
0x0597C: Axe/Hammer
0x05984: Dual Blades
0x0598C: Fist
0x05994: Fire
0x0599C: Water
0x059A4: Earth
0x059AC: Wind
0x059B4: Light
0x059BC: Dark
0x059C4: Love
0x059CC: Farming
0x059D4: Logging
0x059DC: Mining
0x059E4: Fishing
0x059EC: Cooking
0x059F4: Forging
0x059FC: Chemistry
0x05A04: Crafting
0x05A0C: Searching
0x05A14: Walking
0x05A1C: Sleeping
0x05A24: Eating
0x05A2C: Defense
0x05A34: Resist poison
0x05A3C: Resist Seals
0x05A44: Resist Paralysis
0x05A4C: Resist Sleep
0x05A54: Resist Fatigue
0x05A5C: Resist Cold
0x05A64: Resist Knockout
0x05A6C: Bathing
0x05A74: Taming
0x05A7C: Throwing
0x05A84: Leadership
0x05A8C: Bartering
  - Item Storages -
# Block size p. Item: 0x1C / 28 (except magic, size 02)
# Start offsets for Inv types:
0x05AA4: Backpack/Equipment (0x7C4 / 1988) [71]
0x06268: Spellpack (magic) (0x3C / 60) [30]
0x062A4: Fridge (0x6C48 / 27720) [990]
0x0CEEC: Storage (0x6C48 / 27720) [990]
0x13B34: Weapon Box (0xD20 / 3360) [120]
0x14854: Wardrobe (0xD20 / 3360) [120]
0x15574: Tool Box (0x1068 / 4200) [150]
0x165DC: Shipping Box (0x20D0 / 8400) [300]
0x186AC: Shop Box (0x1A4 / 420) [15]
0x18850: Bookshelf (magic) (0xB4 / 180) [90]
  - Fields & Soil Attributes -
# Start at 0x1AEB4, block size 0x10 / 16
# size?: 0xA20 / 2592
 - Animal Flags & FP -
(Block size: 0x24 / 36, Start at: 0x1BDB0)
#Note: 20 slots per Barn, 10 Barns
0x00: Name
0x13: slot no., 1b
0x14: Monster Type? 4b
0x18: FP? 2b?
 - Villager Flags & FP -
(Block size: 0x2C / 44, Start at: 0x1DB10)
#Note: 1st & last persons are dummies
FP levels: 
140 - Lv4
0x00: FP 4b
0x04-2B: ???
 - NPC Equipment -
#Start at: 0x1EB88, block size: 0xFC / 252
 - Farm objects - 
Table for objects on the farm
76 (?) objects, length 0xC / 12 bytes, per farm; Start 0x18EA4
0x00: crop / object ID - 00 is nothing, 58 tilled earth for example
0x07: 00 dry earth, 20 wet earth
0x08: crop (object) health
0x09-0B: 11bit(?) X/Y coords for object, (0,0) top left
         one "grid" square seems to be 32x32
         For ref.: middle of top-left square on main farm is 79|176
         Top-right 431|176; Bottom-left 79|336; Bottom-right 431|336
 0x20694: Prince(ss) Points 4b
0x20698: Tourists 4b
 - Requests -
Some flags
0x1E042: 01 - Daily request #1 done?
0x1E043: 80 - Daily request #2 done?, "come back tomorrow"?
 - Orders - 
0x1E93F: 80 - Backpack +1, 40 - Backpack +2
0x1E94F: 10 - Unlock Sharance maze
 - Difficulty -
1 byte for original 3 difficulties, 1 bitflag for additional RF4S difficulty
0x0005: 00 - Normal, 40 - Easy, 80 - Hard
0x1EA3B: 20 - HELL difficulty (RF4S only) if on Hard
 - Fishing -
 Biggest & smallest size each 2b
 Masu trout records: 0x21934 & 0x2197C (0x219B4 & 0x219FC Special)
  0x1E8C4: Story flag? 20 - Time frozen w/ Volkanon, 28 - normal?
0x1E8DE: 5bit reverse bit order - # of cooking breads Porco sells (max. 31)
*/
  // #include "VarDefs.bt"  // shorthand typedefs
// Typedef some custom variables:
  //-----------------------------------
// Define enums
 typedef enum <ubyte> {
   Male,
   Female
} GENDER;
 typedef enum <uint> {
   Spring,
   Summer,
   Fall,
   Winter
} MONTH;
 typedef enum <ubyte> {
   Normal,
   Easy = 64,
   Hard = 128
} DIFF;
 typedef enum <ubyte> {
   DefaultCostume,
   Variant1 = 4,
   Variant2 = 8
} COST;
 typedef enum <short> {
   NoChange,
   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,
   TravelerF1 = 34,
   TravelerF2,
   Ethelberd = 239,
   Pico = 309,
   Lest = 9999
} MODEL;
 typedef enum <ushort> {
   __000,
   __001,
   __002,
   __003,
   Farm_004,
   Farm_005,
   Farm_006,
   Farm_007,
   Field_008,
   Field_009,
   Field_010,
   Field_011,
   Field_012,
   Field_013,
   Field_014,
   Field_015,
   Field_016,
   Field_017,
   Field_018,
   Field_019,
   Field_020,
   Field_021,
   Field_022,
   Field_023,
   Selphia_AirshipWay_024,
   Selphia_AirshipWay_025,
   Selphia_AirshipWay_026,
   Selphia_AirshipWay_027,
   Selphia_HousingArea_028,
   Selphia_HousingArea_029,
   Selphia_HousingArea_030,
   Selphia_HousingArea_031,
   Selphia_MelodyStreet_032,
   Selphia_MelodyStreet_033,
   Selphia_MelodyStreet_034,
   Selphia_MelodyStreet_035,
   Selphia_Observatory_036,
   Selphia_Observatory_037,
   Selphia_Observatory_038,
   Selphia_Observatory_039,
   Selphia_DragonLake_040,
   Selphia_DragonLake_041,
   Selphia_DragonLake_042,
   Selphia_DragonLake_043,
   SelphiaCastleGate_044,
   SelphiaCastleGate_045,
   SelphiaCastleGate_046,
   SelphiaCastleGate_047,
   Selphia_TownSquare_048,
   Selphia_TownSquare_049,
   Selphia_TownSquare_050,
   Selphia_TownSquare_051,
   Selphia_052,
   Selphia_053,
   Selphia_054,
   Selphia_055,
   Selphia_056,
   Selphia_057,
   Selphia_058,
   Selphia_059,
   Castle_DragonRoom_060,
   Castle_DragonRoom_061,
   Castle_DragonRoom_062,
   Castle_DragonRoom_063,
   YourRoom_064,
   ButlersRoom_065,
   YourRoom_066,
   YourRoom_067,
   YourRoom_068,
   YourRoom_069,
   TrophyRoom_070,
   TrophyRoomB2_071,
   YourRoom_072,
   TrophyRoomB3_073,
   Room_Dummy_074,
   Room_Dummy_075,
   Room_Dummy_076,
   MonsterBarn_077,
   MonsterBarn_078,
   MonsterBarn_079,
   MonsterBarn_080,
   MonsterBarn_081,
   MonsterBarn_082,
   MonsterBarn_083,
   MonsterBarn_084,
   MonsterBarn_085,
   MonsterBarn_086,
   MonsterBarn_087,
   MonsterBarn_088,
   MonsterBarn_089,
   MonsterBarn_090,
   MonsterBarn_091,
   MonsterBarn_092,
   MonsterBarn_093,
   MonsterBarn_094,
   MonsterBarn_095,
   MonsterBarn_096,
   MonsterBarn_097,
   MonsterBarn_098,
   MonsterBarn_099,
   MonsterBarn_100,
   MonsterBarn_101,
   MonsterBarn_102,
   MonsterBarn_103,
   MonsterBarn_104,
   MonsterBarn_105,
   MonsterBarn_106,
   MonsterBarn_107,
   MonsterBarn_108,
   MonsterBarn_109,
   MonsterBarn_110,
   MonsterBarn_111,
   MonsterBarn_112,
   MonsterBarn_113,
   MonsterBarn_114,
   MonsterBarn_115,
   MonsterBarn_116,
   MonsterBarn_117,
   MonsterBarn_118,
   MonsterBarn_119,
   MonsterBarn_120,
   MonsterBarn_121,
   MonsterBarn_122,
   MonsterBarn_123,
   MonsterBarn_124,
   MonsterBarn_125,
   MonsterBarn_126,
   SincerityGeneralStore_127,
   SincerityGeneral2F_128,
   Blacksmith_129,
   PorcolinesKitchen_130,
   PorcolinesKitchen2F_131,
   TinyBandageClinic_132,
   TinyBandageClinic2F_133,
   Carnations_134,
   Carnations2F_135,
   BellHotelLobby_136,
   BellHotelResidence_137,
   BellHotelGuestRoom_138,
   BellBath_139,
   MargaretsHouse_140,
   SainteCoquilleManor_141,
   SteCoquilleManor2F_142,
   FortesHouse_143,
   House_144,
   House_145,
   House_146,
   House_147,
   __148,
   House_149,
   House_150,
   House_151,
   House_152,
   House_153,
   House_154,
   House_155,
   House_156,
   House_157,
   House_158,
   Airship_159,
   Airship_160,
   SelphiaPlain_161,
   SelphiaPlain_162,
   SelphiaPlain_163,
   SelphiaPlain_164,
   SelphiaPlain_165,
   SelphiaPlain_166,
   SelphiaPlain_167,
   SelphiaPlainMushRoad_168,
   SelphiaPlainMushSpan_169,
   SelphiaPlainEast_170,
   SelphiaPlainEast_171,
   WaterRuins_172,
   SelphiaPlain_173,
   SelphiaPlainMushRoad_174,
   SelphiaPlainMushRoad_175,
   SelphiaPlainMushRoad_176,
   SelphiaPlainMushRoad_177,
   SelphiaPlain_178,
   Cliff_179,
   SelphiaPlainWest_180,
   SelphiaPlainWest_181,
   SelphiaPlainWest_182,
   SelphiaPlainMushRoad_183,
   SelphiaPlainMushRoad_184,
   SelphiaPlainWest_185,
   SelphiaPlainWest_186,
   TwinRocks_187,
   SelphiaPlainWest_188,
   LeonKarnak_189,
   SelphiaPlainWest_190,
   CedarTree_191,
   SelphiaPlainEast_192,
   SelphiaPlainEast_193,
   SelphiaPlainEast_194,
   SercerezoHill_195,
   DailyRoad_196,
   SelphiaPlainEast_197,
   IdraCave_198,
   SercerezoHill_199,
   SercerezoHill_200,
   SercerezoHill_201,
   SercerezoHill_202,
   SelphiaPlain_203,
   SelphiaPlain_204,
   AutumnBridge_205,
   AutumnBridge_206,
   AutumnRoad_207,
   AutumnRoad_208,
   AutumnRoad_209,
   DeliriumLavaRuins_210,
   AutumnRoad_211,
   AutumnRoad_212,
   AutumnRoad_213,
   AutumnRoad_214,
   AutumnRoad_215,
   AutumnRoad_216,
   AutumnRoad_217,
   AutumnRiver_218,
   AutumnRoad_219,
   AutumnRoad_220,
   AutumnRoad_221,
   AutumnRoad_222,
   AutumnRoad_223,
   AutumnRoad_224,
   AutumnRoad_225,
   MayaRoadEntrance_226,
   SelphiaPlainEast_227,
   CerezoBridge_228,
   CerezoBridge_229,
   SercerezoHill_230,
   CluckCluckNest_231,
   SilverArch_232,
   SilverArch_233,
   SilverLake_234,
   WinterSpring_235,
   AutumnSpring_236,
   SelphiaPlainEast_237,
   SummerSpring_238,
   SpringSpring_239,
   BuriedCave_240,
   KeenoLake_241,
   SelphiaPlain_242,
   SelphiaPlain_243,
   SilverLake_244,
   SilverLake_245,
   SilverLake_246,
   SercerezoHill_247,
   SercerezoHill_248,
   SercerezoLake_249,
   SercerezoHill_250,
   DemonsDen_251,
   SercerezoHill_252,
   SercerezoHillBridge_253,
   SercerezoHill_254,
   SercerezoHill_255,
   AutumnBridge_256,
   RevivalCave_257,
   MayaBridge_258,
   SercerezoHill_259,
   Cave_260,
   SpringField_261,
   SummerField_262,
   AutumnField_263,
   WinterField_264,
   SelphiaPlain_265,
   SelphiaPlain_266,
   SelphiaPlain_267,
   SelphiaPlain_268,
   SelphiaPlain_269,
   SelphiaPlain_270,
   YokmirForest_271,
   YokmirForestDepths_272,
   YokmirForest_273,
   YokmirForest_274,
   YokmirForest_275,
   YokmirForest_276,
   YokmirForest_277,
   YokmirForest_278,
   Forest_Dummy_279,
   Forest_Dummy_280,
   Forest_Dummy_281,
   Forest_Dummy_282,
   Forest_Dummy_283,
   WaterRuins_284,
   WaterRuinsDepths_285,
   WaterRuins_286,
   WaterRuins_287,
   WaterRuins_288,
   WaterRuins_289,
   WaterRuins_290,
   WaterRuins_291,
   WaterRuins_292,
   WaterRuins_293,
   WaterRuins_294,
   WaterRuins_295,
   WaterRuins_296,
   WaterRuins_297,
   WaterRuins_298,
   WaterRuins_299,
   WaterRuins_300,
   Temple_Dummy_301,
   Temple_Dummy_302,
   ObsidianMansion_303,
   ObsidianMnsnTheatre_304,
   ObsidianMnsnEntrance_305,
   ObsidianMansion_306,
   ObsidianMansion_307,
   ObsidianMansion_308,
   ObsidianMansion_309,
   ObsidianMansion_310,
   ObsidianMansion_311,
   ObsidianMansion_312,
   ObsidianMansion_313,
   ObsidianMansion_314,
   ObsidianMansion_315,
   ObsidianMansion_316,
   ObsidianMansion_317,
   ObsidianMansion_318,
   ObsidianMansion_319,
   ObsidianMansion_320,
   ObsidianMansion_321,
   Ruin_Dummy_322,
   Ruin_Dummy_323,
   LeonKarnak_324,
   LeonKarnakDepths_325,
   LeonKarnak_326,
   LeonKarnak_327,
   LeonKarnak_328,
   LeonKarnak_329,
   LeonKarnak_330,
   LeonKarnak_331,
   LeonKarnak_332,
   LeonKarnak_333,
   LeonKarnak_334,
   LeonKarnak_335,
   LeonKarnak_336,
   LeonKarnak_337,
   LeonKarnak_338,
   LeonKarnak_339,
   LeonKarnak_340,
   LeonKarnak_341,
   LeonKarnak_342,
   LeonKarnak_343,
   LeonKarnak_344,
   LeonKarnak_345,
   LeonKarnak_346,
   FloatingEmpire_347,
   FloatingEmpire_348,
   FloatingEmpireFront_349,
   FloatingEmpire_350,
   FloatingEmpire_351,
   FloatingEmpireSouth_352,
   FloatingEmpireSouth_353,
   FloatingEmpireSouth_354,
   FloatingEmpireSouth_355,
   FloatingEmpireSouth_356,
   FloatingEmpireSouth_357,
   FloatingEmpireSouth_358,
   FloatingEmpireSouth_359,
   FloatingEmpireSouth_360,
   FloatingEmpireSouth_361,
   FloatingEmpireSouth_362,
   FloatingEmpireSouth_363,
   FloatingEmpireSouth_364,
   FloatingEmpireSouth_365,
   FloatingEmpireSouth_366,
   FloatingEmpireSouth_367,
   FloatingEmpireSouth_368,
   FloatingEmpireSouth_369,
   FloatingEmpireSouth_370,
   FloatingEmpireSouth_371,
   FloatingEmpireSouth_372,
   FloatingEmpireSouth_373,
   FloatingEmpireSouth_374,
   FloatingEmpireSouth_375,
   FloatingEmpireSouth_376,
   FloatingEmpireWest_377,
   FloatingEmpireWest_378,
   FloatingEmpireWest_379,
   FloatingEmpireWest_380,
   FloatingEmpireWest_381,
   FloatingEmpireWest_382,
   FloatingEmpireWest_383,
   FloatingEmpireWest_384,
   FloatingEmpireWest_385,
   FloatingEmpireWest_386,
   FloatingEmpireWest_387,
   FloatingEmpireWest_388,
   FloatingEmpireWest_389,
   FloatingEmpireWest_390,
   FloatingEmpireWest_391,
   FloatingEmpireWest_392,
   FloatingEmpireWest_393,
   FloatingEmpireWest_394,
   FloatingEmpireWest_395,
   FloatingEmpireWest_396,
   FloatingEmpireWest_397,
   FloatingEmpireWest_398,
   FloatingEmpireWest_399,
   FloatingEmpireWest_400,
   FloatingEmpireWest_401,
   FloatingEmpireWest_402,
   FloatingEmpireWest_403,
   FloatingEmpireWest_404,
   FloatingEmpireWest_405,
   FloatingEmpireWest_406,
   FloatingEmpireWest_407,
   FloatingEmpireWest_408,
   FloatingEmpireEast_409,
   FloatingEmpireEast_410,
   FloatingEmpireEast_411,
   FloatingEmpireEast_412,
   FloatingEmpireEast_413,
   FloatingEmpireEast_414,
   FloatingEmpireEast_415,
   FloatingEmpireEast_416,
   FloatingEmpireEast_417,
   FloatingEmpireEast_418,
   FloatingEmpireEast_419,
   FloatingEmpireEast_420,
   FloatingEmpireEast_421,
   FloatingEmpireEast_422,
   FloatingEmpireEast_423,
   FloatingEmpireEast_424,
   FloatingEmpireEast_425,
   FloatingEmpireEast_426,
   FloatingEmpireEast_427,
   FloatingEmpireEast_428,
   FloatingEmpireEast_429,
   FloatingEmpireEast_430,
   FloatingEmpireEast_431,
   FloatingEmpireEast_432,
   FloatingEmpireEast_433,
   FloatingEmpireEast_434,
   FloatingEmpireEast_435,
   FloatingEmpireEast_436,
   FloatingEmpireEast_437,
   FloatingEmpireEast_438,
   FloatingEmpireSouth_439,
   FloatingEmpire_440,
   FloatingEmpire_441,
   WorldofFields_442,
   SharanceMaze_443,
   SharanceMaze_444,
   SharanceMaze_445,
   SharanceMaze_446,
   SharanceMaze_447,
   SharanceMaze_448,
   SharanceMaze_449,
   SharanceMaze_450,
   SharanceMaze_451,
   SharanceMaze_452,
   SharanceMaze_453,
   YokmirCave_454,
   YokmirCave_455,
   YokmirCave_456,
   YokmirCave_457,
   YokmirCave_458,
   YokmirCave_459,
   YokmirCave_460,
   YokmirCave_461,
   YokmirCave_462,
   YokmirCave_463,
   YokmirCave_464,
   YokmirCave_465,
   YokmirCave_466,
   YokmirCave_467,
   YokmirCave_468,
   YokmirCave_469,
   YokmirCave_470,
   YokmirCave_471,
   YokmirCave_472,
   YokmirCave_473,
   YokmirCave_474,
   YokmirCave_475,
   YokmirCave_476,
   YokmirCave_477,
   YokmirCave_478,
   YokmirCave_479,
   YokmirCave_480,
   YokmirCave_481,
   YokmirCave_482,
   YokmirCave_483,
   YokmirCave_484,
   YokmirCave_485,
   DeliriumLavaRuins_486,
   DeliriumLavaRuins_487,
   DeliriumLavaRuins_488,
   DeliriumLavaRuins_489,
   DeliriumLavaRuins_490,
   DeliriumLavaRuins_491,
   DeliriumLavaRuins_492,
   DeliriumLavaRuins_493,
   DeliriumLavaRuins_494,
   DeliriumLavaRuins_495,
   DeliriumLavaRuins_496,
   DeliriumLavaRuins_497,
   DeliriumLavaRuins_498,
   DeliriumLavaRuins_499,
   DeliriumLavaRuins_500,
   DeliriumLavaRuins_501,
   DeliriumLavaRuins_502,
   DeliriumLavaRuins_503,
   DeliriumLavaRuins_504,
   DeliriumLavaRuins_505,
   DeliriumLavaRuins_506,
   DeliriumLavaRuins_507,
   DeliriumLavaRuins_508,
   DeliriumLavaRuins_509,
   DeliriumLavaRuins_510,
   DeliriumLavaRuins_511,
   DeliriumLavaRuins_512,
   DeliriumLavaRuins_513,
   DeliriumLavaRuins_514,
   DeliriumLavaRuins_515,
   DeliriumLavaRuins_516,
   DeliriumLavaRuins_517,
   DeliriumLavaRuins_518,
   DeliriumLavaRuins_519,
   DeliriumLavaRuins_520,
   DeliriumLavaRuins_521,
   DeliriumLavaRuins_522,
   DeliriumLavaRuins_523,
   DeliriumLavaRuins_524,
   DeliriumLavaRuins_525,
   DeliriumLavaRuins_526,
   Unknown_527,
   Unknown_528,
   Unknown_529,
   Unknown_530,
   Unknown_531,
   Unknown_532,
   Unknown_533,
   Unknown_534,
   Unknown_535,
   Unknown_536,
   Unknown_537,
   Unknown_538,
   Unknown_539,
   Unknown_540,
   IdraCave_541,
   IdraCave_542,
   IdraCave_543,
   IdraCave_544,
   IdraCave_545,
   IdraCave_546,
   IdraCave_547,
   IdraCave_548,
   IdraCave_549,
   IdraCave_550,
   IdraCave_551,
   IdraCaveB1_552,
   IdraCaveB1_553,
   IdraCaveB1_554,
   IdraCaveB1_555,
   IdraCaveB1_556,
   IdraCaveB1_557,
   IdraCaveB1_558,
   IdraCaveB1_559,
   IdraCaveB1_560,
   IdraCaveB1_561,
   IdraCaveB1_562,
   IdraCaveB1_563,
   IdraCaveB1_564,
   IdraCaveB1_565,
   IdraCaveB1_566,
   IdraCaveB1_567,
   IdraCaveB1_568,
   IdraCaveB1_569,
   IdraCaveB1_570,
   IdraCaveB1_571,
   IdraCaveB2_572,
   IdraCaveB2_573,
   IdraCaveB2_574,
   IdraCaveB2_575,
   IdraCaveB2_576,
   IdraCaveB2_577,
   IdraCaveB2_578,
   IdraCaveB2_579,
   IdraCaveB2_580,
   IdraCaveB2_581,
   IdraCaveB2_582,
   IdraCaveB2_583,
   IdraCaveB2_584,
   IdraCaveB2_585,
   IdraCaveB2_586,
   IdraCaveB2_587,
   IdraCaveB2_588,
   IdraCaveB2_589,
   IdraCaveB2_590,
   IdraCaveB2_591,
   IdraCaveB2_592,
   IdraCaveB2_593,
   ImperialResearchCntr_594,
   MayaRoad_595,
   MayaRoad_596,
   MayaRoad_597,
   MayaRoad_598,
   MayaRoad_599,
   MayaRoad_600,
   MayaRoad_601,
   MayaRoad_602,
   MayaRoad_603,
   MayaRoad_604,
   MayaRoad_605,
   MayaRoad_606,
   MayaRoad_607,
   MayaRoad_608,
   MayaRoad_609,
   MayaRoad_610,
   MayaRoad_611,
   MayaRoad_612,
   MayaRoad_613,
   MayaRoad_614,
   MayaRoad_615,
   MayaRoad_616,
   MayaRoad_617,
   MayaRoad_618,
   MayaRoad_619,
   MayaRoad_620,
   MayaRoad_621,
   MayaRoad_622,
   MayaRoad_623,
   MayaRoad_624,
   MayaRoad_625,
   MayaRoad_626,
   MayaRoad_627,
   MayaRoad_628,
   MayaRoad_629,
   MayaRoad_630,
   MayaRoad_631,
   MayaRoad_632,
   MayaRoad_633,
   MayaRoad_634,
   MayaRoad_635,
   MayaRoad_636,
   MayaRoad_637,
   MayaRoad_638,
   MayaRoad_639,
   MayaRoad_640,
   MayaRoad_641,
   MayaRoad_642,
   MayaRoad_643,
   MayaRoad_644,
   MayaRoad_645,
   MayaRoad_646,
   MayaRoad_647,
   MayaRoad_648,
   MayaRoad_649,
   MayaRoad_650,
   MayaRoad_651,
   MayaRoad_652,
   MayaRoad_653,
   MayaRoad_654,
   MayaRoad_655,
   MayaRoad_656,
   MayaRoad_657,
   SechsTerritory_658,
   SechsTerritory_659,
   SechsTerritory_660,
   SechsTerritory_661,
   SechsTerritory_662,
   SechsTerritory_663,
   SechsTerritory_664,
   SechsTerritory_665,
   SechsTerritory_666,
   SechsTerritory_667,
   SechsTerritory_668,
   SechsTerritory_669,
   SechsTerritory_670,
   SechsTerritory_671,
   SechsTerritory_672,
   SechsTerritory_673,
   SechsTerritory_674,
   SechsTerritory_675,
   SechsTerritory_676,
   SechsTerritory_677,
   SechsTerritory_678,
   SechsTerritory_679,
   SechsTerritory_680,
   SechsTerritory_681,
   SechsTerritory_682,
   SechsTerritory_683,
   SechsTerritory_684,
   SechsTerritory_685,
   SechsTerritory_686,
   SechsTerritory_687,
   SechsTerritory_688,
   SechsTerritory_689,
   SechsTerritory_690,
   SechsTerritory_691,
   SechsTerritory_692,
   SechsTerritory_693,
   SechsTerritory_694,
   SechsTerritory_695,
   SechsTerritory_696,
   SechsTerritory_697,
   SechsTerritory_698,
   SechsTerritory_699,
   SechsTerritory_700,
   SechsTerritory_701,
   SechsTerritory_702,
   SechsTerritory_703,
   SechsTerritory_704,
   SechsTerritory_705,
   SechsTerritory_706,
   SechsTerritory_707,
   SechsTerritory_708,
   SechsTerritory_709,
   SechsTerritory_710,
   SechsTerritory_711,
   SechsTerritory_712,
   SechsTerritory_713,
   SechsTerritory_714,
   SechsTerritory_715,
   SechsTerritory_716,
   SechsTerritory_717,
   SechsTerritory_718,
   SechsTerritory_719,
   SechsTerritory_720,
   SechsTerritory_721,
   SechsTerritory_722,
   SechsTerritory_723,
   SechsTerritory_724,
   SechsTerritory_725,
   RunePrana_726,
   RunePrana_727,
   RunePrana_728,
   RunePrana_729,
   RunePrana_730,
   RunePrana_731,
   RunePrana_732,
   RunePrana_733,
   RunePrana_734,
   RunePrana_735,
   RunePrana_736,
   RunePrana_737,
   RunePrana_738,
   RunePrana_739,
   RunePrana_740,
   RunePrana_741,
   RunePrana_742,
   RunePrana_743,
   RunePrana_744,
   RunePrana_745,
   RunePrana_746,
   RunePrana_747,
   RunePrana_748,
   RunePrana_749,
   RunePrana_750,
   RunePrana_751,
   RunePrana_752,
   RunePrana_753,
   RunePrana_754,
   RunePrana_755,
   RunePrana_756,
   RunePrana_757,
   RunePrana_758,
   RunePrana_759,
   RunePrana_760,
   RunePrana_761,
   RunePrana_762,
   RunePrana_763,
   RunePrana_764,
   RunePrana_765,
   RunePrana_766,
   RunePrana_767,
   RunePrana_768,
   RunePrana_769,
   RunePrana_770,
   RunePrana_771,
   RunePrana_772,
   RunePrana_773,
   RunePrana_774,
   RunePrana_775,
   RunePrana_776,
   RunePrana_777,
   RunePrana_778,
   RunePrana_779,
   RunePrana_780,
   RunePrana_781,
   RunePrana_782,
   RunePrana_783,
   RunePrana_784,
   RunePrana_785,
   RunePrana_786,
   RunePrana_787,
   RunePrana_788,
   RunePrana_789,
   RunePrana_790,
   RunePrana_791,
   RunePrana_792,
   RunePrana_793,
   RunePrana_794,
   RunePrana_795,
   RunePrana_796,
   RunePrana_797,
   RunePrana_798,
   RunePrana_799,
   RunePrana_800,
   RunePrana_801,
   RunePrana_802,
   RunePrana_803,
   RunePrana_804,
   RunePrana_805,
   RunePrana_806,
   RunePrana_807,
   RunePrana_808,
   RunePrana_809,
   RunePrana_810,
   RunePrana_811,
   RunePrana_812,
   RunePrana_813,
   RunePrana_814,
   RunePrana_815,
   RunePrana_816,
   RunePrana_817,
   RunePrana_818,
   RunePrana_819,
   RunePrana_820,
   RunePrana_821,
   RunePrana_822,
   RunePrana_823,
   RunePrana_824,
   RunePrana_825,
   RunePrana_826,
   RunePrana_827,
   RunePrana_828,
   RunePrana_829,
   RunePrana_830,
   RunePrana_831,
   RunePrana_832,
   RunePrana_833,
   RunePrana_834,
   RunePrana_835,
   RunePrana_836,
   RunePrana_837,
   RunePrana_838,
   RunePrana_839,
   RunePrana_840,
   RunePrana_841,
   RunePrana_842,
   RunePrana_843,
   RunePrana_844,
   RunePrana_845,
   RunePrana_846,
   RunePrana_847,
   RunePrana_848,
   RunePrana_849,
   RunePrana_850,
   RunePrana_851,
   RunePrana_852,
   CluckCluckNest_853,
   CluckCluckNest_854,
   CluckCluckNest_855,
   CluckCluckNest_856,
   CluckCluckNest_857,
   RevivalCave_858,
   RevivalCave_859,
   RevivalCave_860,
   DemonsDen_861,
   DemonsDen_862,
   DemonsDen_863,
   DemonsDen_864,
   DemonsDen_865,
   DemonsDen_866,
   DemonsDen_867,
   DemonsDen_868,
   DemonsDen_869,
   __870,
   __871,
   VolkanonBridge_872,
   AmoureuxdesSaisons_873
} ROOM;
 typedef enum <short> {
   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 <short> {
   Escape,
   Fireball,
   BigFire,
   Explosion,
   WaterLaser,
   ParallelLaser,
   DeltaLaser,
   ScrewRock,
   EarthSpike,
   AvengerRock,
   SonicWind,
   DoubleSonic,
   PenetrateSonic,
   LightBarrier,
   Shine,
   Prism,
   DarkBall,
   DarkSnake,
   Darkness,
   Cure,
   CureAll,
   MasterCure,
   Medipoison,
   Mediparalyze,
   Mediseal,
   GreetingSpell,
   PowerWave,
   DashSlash,
   RushAttack,
   RoundBreak,
   MindThrust,
   Gust,
   Storm,
   Blitz,
   TwinAttack,
   RailStrike,
   WindSlash,
   FlashStrike,
   NaiveBlade,
   SteelHeart,
   DeltaStrike,
   Hurricane,
   ReaperSlash,
   Millionstrike,
   AxelDisaster,
   StardustUpper,
   TornadoSwing,
   GrandImpact,
   GigaSwing,
   UpperCut,
   DoubleKick,
   StraightPunch,
   NekoDamashi,
   RushPunch,
   Cyclone,
   RapidMove,
   BonusConcerto,
   StrikingMarch,
   IronWaltz
} SPELLID;
 typedef enum <ubyte> {
   Nothing_C,
   Stone_C,
   Rock_C,
   Branch_C,
   TreeStump_C,
   BrokenStump_C,
   PoisonSwamp_C,
   EllieLeaves_C,
   MedicinalHerb_C,
   AntidotalHerb_C,
   BlackGrass_C,
   OrangeGrass_C,
   RedGrass_C,
   YellowGrass_C,
   BlueGrass_C,
   GreenGrass_C,
   PurpeGrass_C,
   IndigoGrass_C,
   WhiteGrass_C,
   Weed_C,
   WitheredGrass_C,
   BambooSprout_C,
   ClayStone_C,
   RuneFlower_C,
   RuneCrystal_C,
   AyngondaiaLawn_C,
   Mineral_Scrap_C,
   Mineral_Iron_C,
   MineralC_C,
   MineralD_C,
   MineralE_C,
   MineralF_C,
   MineralG_C,
   MineralH_C,
   MineralI_C,
   MineralJ_C,
   MineralK_C,
   MineralL_C,
   Strawberry_C,
   Cabbage_C,
   PinkTurnip_C,
   Onion_C,
   Toyherb_C,
   MoondropFlower_C,
   CherryGrass_C,
   LampGrass_C,
   EmeryFlower_C,
   BlueCrystal_C,
   GoldenCabbage_C,
   PinkMelon_C,
   Pumpkin_C,
   Cucumber_C,
   Corn_C,
   Tomato_C,
   Eggplant_C,
   Pineapple_C,
   PinkCat_C,
   Ironleaf_C,
   FourLeafClover_C,
   Fireflower_C,
   GreenCrystal_C,
   GoldenPumpkin_C,
   Yam_C,
   Potato_C,
   Carrot_C,
   GreenPepper_C,
   Spinach_C,
   CharmBlue_C,
   AutumnGrass_C,
   PomPomGrass_C,
   RedCrystal_C,
   GoldenPotato_C,
   Turnip_C,
   Radish_C,
   Leek_C,
   BokChoy_C,
   NoelGrass_C,
   WhiteCrystal_C,
   GoldenTurnip_C,
   HotHotFruit_C,
   Fodder_C,
   AppleTree_C,
   OrangeTree_C,
   GrapeTree_C,
   TwinkleTree_C,
   DungeonFlower_C,
   SwordFlower_C,
   ShieldFlower_C,
   TilledEarth_C,
   SultanStrawberry_C,
   KingCabbage_C,
   PinkTurnipB_C,
   UltraOnion_C,
   UltraToyherb_C,
   GreatMoondropFlower_C,
   KingCherryGrass_C,
   KaiserLampGrass_C,
   GreatEmeryFlower_C,
   BigBlueCrystal_C,
   KingGoldCabbage_C,
   ConquerorMelon_C,
   DoomPumpkin_C,
   KaiserCucumber_C,
   GigantCorn_C,
   TitanTomato_C,
   EmperorEggplant_C,
   KingPineapple_C,
   KingPinkCat_C,
   UltraIronleaf_C,
   GiantFourLeafClover_C,
   BigFireflower_C,
   BigGreenCrystal_C,
   GoldenDoomPumpkin_C,
   LordlyYam_C,
   PrincelyPotato_C,
   RoyalCarrot_C,
   GreenPepperRex_C,
   SovereignSpinach_C,
   GreatCharmBlue_C,
   GreatAutumnGrass_C,
   KingPomPomGrass_C,
   BigRedCrystal_C,
   GoldenPrincelyPotato_C,
   TyrantTurnip_C,
   NobleRadish_C,
   LegendaryLeek_C,
   BossBokChoy_C,
   LargeNoelGrass_C,
   BigWhiteCrystal_C,
   GoldenTyrantTurnip_C,
   GiantHotHotFruit_C,
   FodderB_C,
   LargeAppleTree_C,
   LargeOrangeTree_C,
   LargeGrapeTree_C,
   LargeTwinkleTree_C,
   DungeonFlowerB_C,
   SwordFlowerB_C,
   ShieldFlowerB_C,
} CROPID;
 typedef enum <ushort> {
   None_000,
   Table_292 = 292,
   Table_293,
   Table_294,
   Chair_295,
   Chair_296,
   PommePommeToy_297,
   WoolyToy_298,
   ChipsqueekToy_299,
   DuckToy_300,
   WolfToy_301,
   RuneSaur_302,
   SpringPottedPlant_303,
   SummerPottedPlant_304,
   AutumnPottedPlant_305,
   WinterPottedPlant_306,
   Cactus_307,
   CuteStatue_308,
   ColumnStatue_309,
   Snowman_310,
   RainbowArt_311,
   Barrel_312,
   Brazier_313,
   LargeAnchor_314,
   FoldingScreen_315,
   RollingBall_316,
   RollingBall_317,
   RollingBall_318,
   RollingBall_319,
   BouncingBall_320,
   BouncingBall_321,
   BouncingBall_322,
   BouncingBall_323,
   VentisCharm_324,
   WeaponBox_325,
   Dummy_326,
   Bed_327,
   DoubleBed_328,
   Bird_329,
   Bird_330,
   Bird_331,
   Bird_332,
   Sign_333,
   Sign_334,
   Bookshelf_335,
   Butterfly_336,
   Butterfly_337,
   Butterfly_338,
   Butterfly_339,
   Calendar_340,
   Closet_341,
   FertilizerBin_342,
   CookingTable_343,
   Knife_344,
   FryingPan_345,
   Pot_346,
   Oven_347,
   Steamer_348,
   Mixer_349,
   ChemistrySet_350,
   Forge_351,
   CraftingTable_352,
   Statue_353,
   Statue_354,
   Statue_355,
   Statue_356,
   Statue_357,
   Statue_358,
   Statue_359,
   Statue_360,
   Diary_361,
   Dice_362,
   Sign_363,
   Sign_364,
   FarmToolBox_365,
   Fridge_366,
   Fridge_367,
   Device_368,
   WingFin_369,
   SmallFodderBin_370,
   BitingGrass_371,
   LumberStoneBox_372,
   MusicPlayer_373,
   OrderBoard_374,
   BigFodderBin_375,
   Mailbox_376,
   Fence_377,
   Fence_378,
   SavePoint_379,
   ShopBox_380,
   Storage_381,
   ShippingBox_382,
   Telecommunicator_383,
   Can_384,
   Can_385,
   Warp_386,
   Well_387,
   FurnitureStore_388,
   FashionStore_389,
   FishMarket_390,
   MagicStore_391,
   JewelryStore_392,
   AbilityStore_393
} OBJID;
  //-----------------------------------
// Define aux structures
 typedef struct {
 } UNKNWN;
 // Mini-scruct for bitflag arrays
typedef struct ( int idx ) {
   local int idx = idx;
   ubyte flag : 1;
} BFLAG <read=ReadBitflag, write=WriteBitflag>; 
 // Flags on whether an area was discovered (visible on map)
typedef struct {
   struct {
      ubyte __000 : 1;
      ubyte __001 : 1;
      ubyte __002 : 1;
      ubyte __003 : 1;
   } blank;
   struct {
      ubyte Farm_004 : 1;
      ubyte Farm_005 : 1;
      ubyte Farm_006 : 1;
      ubyte Farm_007 : 1;
      ubyte Field_008 : 1;
      ubyte Field_009 : 1;
      ubyte Field_010 : 1;
      ubyte Field_011 : 1;
      ubyte Field_012 : 1;
      ubyte Field_013 : 1;
      ubyte Field_014 : 1;
      ubyte Field_015 : 1;
      ubyte Field_016 : 1;
      ubyte Field_017 : 1;
      ubyte Field_018 : 1;
      ubyte Field_019 : 1;
      ubyte Field_020 : 1;
      ubyte Field_021 : 1;
      ubyte Field_022 : 1;
      ubyte Field_023 : 1;
   } farmAndFields;
   struct {
      ubyte Selphia_AirshipWay_024 : 1;
      ubyte Selphia_AirshipWay_025 : 1;
      ubyte Selphia_AirshipWay_026 : 1;
      ubyte Selphia_AirshipWay_027 : 1;
      ubyte Selphia_HousingArea_028 : 1;
      ubyte Selphia_HousingArea_029 : 1;
      ubyte Selphia_HousingArea_030 : 1;
      ubyte Selphia_HousingArea_031 : 1;
      ubyte Selphia_MelodyStreet_032 : 1;
      ubyte Selphia_MelodyStreet_033 : 1;
      ubyte Selphia_MelodyStreet_034 : 1;
      ubyte Selphia_MelodyStreet_035 : 1;
      ubyte Selphia_Observatory_036 : 1;
      ubyte Selphia_Observatory_037 : 1;
      ubyte Selphia_Observatory_038 : 1;
      ubyte Selphia_Observatory_039 : 1;
      ubyte Selphia_DragonLake_040 : 1;
      ubyte Selphia_DragonLake_041 : 1;
      ubyte Selphia_DragonLake_042 : 1;
      ubyte Selphia_DragonLake_043 : 1;
      ubyte SelphiaCastleGate_044 : 1;
      ubyte SelphiaCastleGate_045 : 1;
      ubyte SelphiaCastleGate_046 : 1;
      ubyte SelphiaCastleGate_047 : 1;
      ubyte Selphia_TownSquare_048 : 1;
      ubyte Selphia_TownSquare_049 : 1;
      ubyte Selphia_TownSquare_050 : 1;
      ubyte Selphia_TownSquare_051 : 1;
      ubyte Selphia_052 : 1;
      ubyte Selphia_053 : 1;
      ubyte Selphia_054 : 1;
      ubyte Selphia_055 : 1;
      ubyte Selphia_056 : 1;
      ubyte Selphia_057 : 1;
      ubyte Selphia_058 : 1;
      ubyte Selphia_059 : 1;
      ubyte Castle_DragonRoom_060 : 1;
      ubyte Castle_DragonRoom_061 : 1;
      ubyte Castle_DragonRoom_062 : 1;
      ubyte Castle_DragonRoom_063 : 1;
      ubyte YourRoom_064 : 1;
      ubyte ButlersRoom_065 : 1;
      ubyte YourRoom_066 : 1;
      ubyte YourRoom_067 : 1;
      ubyte YourRoom_068 : 1;
      ubyte YourRoom_069 : 1;
      ubyte TrophyRoom_070 : 1;
      ubyte TrophyRoomB2_071 : 1;
      ubyte YourRoom_072 : 1;
      ubyte TrophyRoomB3_073 : 1;
      ubyte Room_Dummy_074 : 1;
      ubyte Room_Dummy_075 : 1;
      ubyte Room_Dummy_076 : 1;
   } selphia;
   struct {
      ubyte MonsterBarn_077 : 1;
      ubyte MonsterBarn_078 : 1;
      ubyte MonsterBarn_079 : 1;
      ubyte MonsterBarn_080 : 1;
      ubyte MonsterBarn_081 : 1;
      ubyte MonsterBarn_082 : 1;
      ubyte MonsterBarn_083 : 1;
      ubyte MonsterBarn_084 : 1;
      ubyte MonsterBarn_085 : 1;
      ubyte MonsterBarn_086 : 1;
      ubyte MonsterBarn_087 : 1;
      ubyte MonsterBarn_088 : 1;
      ubyte MonsterBarn_089 : 1;
      ubyte MonsterBarn_090 : 1;
      ubyte MonsterBarn_091 : 1;
      ubyte MonsterBarn_092 : 1;
      ubyte MonsterBarn_093 : 1;
      ubyte MonsterBarn_094 : 1;
      ubyte MonsterBarn_095 : 1;
      ubyte MonsterBarn_096 : 1;
      ubyte MonsterBarn_097 : 1;
      ubyte MonsterBarn_098 : 1;
      ubyte MonsterBarn_099 : 1;
      ubyte MonsterBarn_100 : 1;
      ubyte MonsterBarn_101 : 1;
      ubyte MonsterBarn_102 : 1;
      ubyte MonsterBarn_103 : 1;
      ubyte MonsterBarn_104 : 1;
      ubyte MonsterBarn_105 : 1;
      ubyte MonsterBarn_106 : 1;
      ubyte MonsterBarn_107 : 1;
      ubyte MonsterBarn_108 : 1;
      ubyte MonsterBarn_109 : 1;
      ubyte MonsterBarn_110 : 1;
      ubyte MonsterBarn_111 : 1;
      ubyte MonsterBarn_112 : 1;
      ubyte MonsterBarn_113 : 1;
      ubyte MonsterBarn_114 : 1;
      ubyte MonsterBarn_115 : 1;
      ubyte MonsterBarn_116 : 1;
      ubyte MonsterBarn_117 : 1;
      ubyte MonsterBarn_118 : 1;
      ubyte MonsterBarn_119 : 1;
      ubyte MonsterBarn_120 : 1;
      ubyte MonsterBarn_121 : 1;
      ubyte MonsterBarn_122 : 1;
      ubyte MonsterBarn_123 : 1;
      ubyte MonsterBarn_124 : 1;
      ubyte MonsterBarn_125 : 1;
      ubyte MonsterBarn_126 : 1;
   } monsterBarns;
   struct {
      ubyte SincerityGeneralStore_127 : 1;
      ubyte SincerityGeneral2F_128 : 1;
      ubyte Blacksmith_129 : 1;
      ubyte PorcolinesKitchen_130 : 1;
      ubyte PorcolinesKitchen2F_131 : 1;
      ubyte TinyBandageClinic_132 : 1;
      ubyte TinyBandageClinic2F_133 : 1;
      ubyte Carnations_134 : 1;
      ubyte Carnations2F_135 : 1;
      ubyte BellHotelLobby_136 : 1;
      ubyte BellHotelResidence_137 : 1;
      ubyte BellHotelGuestRoom_138 : 1;
      ubyte BellBath_139 : 1;
      ubyte MargaretsHouse_140 : 1;
      ubyte SainteCoquilleManor_141 : 1;
      ubyte SteCoquilleManor2F_142 : 1;
      ubyte FortesHouse_143 : 1;
      ubyte House_144 : 1;
      ubyte House_145 : 1;
      ubyte House_146 : 1;
      ubyte House_147 : 1;
      ubyte __148 : 1;
      ubyte House_149 : 1;
      ubyte House_150 : 1;
      ubyte House_151 : 1;
      ubyte House_152 : 1;
      ubyte House_153 : 1;
      ubyte House_154 : 1;
      ubyte House_155 : 1;
      ubyte House_156 : 1;
      ubyte House_157 : 1;
      ubyte House_158 : 1;
      ubyte Airship_159 : 1;
      ubyte Airship_160 : 1;
   } selphiaHouses;
   struct {
      ubyte SelphiaPlain_161 : 1;
      ubyte SelphiaPlain_162 : 1;
      ubyte SelphiaPlain_163 : 1;
      ubyte SelphiaPlain_164 : 1;
      ubyte SelphiaPlain_165 : 1;
      ubyte SelphiaPlain_166 : 1;
      ubyte SelphiaPlain_167 : 1;
      ubyte SelphiaPlainMushRoad_168 : 1;
      ubyte SelphiaPlainMushSpan_169 : 1;
      ubyte SelphiaPlainEast_170 : 1;
      ubyte SelphiaPlainEast_171 : 1;
      ubyte WaterRuins_172 : 1;
      ubyte SelphiaPlain_173 : 1;
      ubyte SelphiaPlainMushRoad_174 : 1;
      ubyte SelphiaPlainMushRoad_175 : 1;
      ubyte SelphiaPlainMushRoad_176 : 1;
      ubyte SelphiaPlainMushRoad_177 : 1;
      ubyte SelphiaPlain_178 : 1;
      ubyte Cliff_179 : 1;
      ubyte SelphiaPlainWest_180 : 1;
      ubyte SelphiaPlainWest_181 : 1;
      ubyte SelphiaPlainWest_182 : 1;
      ubyte SelphiaPlainMushRoad_183 : 1;
      ubyte SelphiaPlainMushRoad_184 : 1;
      ubyte SelphiaPlainWest_185 : 1;
      ubyte SelphiaPlainWest_186 : 1;
      ubyte TwinRocks_187 : 1;
      ubyte SelphiaPlainWest_188 : 1;
      ubyte LeonKarnak_189 : 1;
      ubyte SelphiaPlainWest_190 : 1;
      ubyte CedarTree_191 : 1;
      ubyte SelphiaPlainEast_192 : 1;
      ubyte SelphiaPlainEast_193 : 1;
      ubyte SelphiaPlainEast_194 : 1;
      ubyte SercerezoHill_195 : 1;
      ubyte DailyRoad_196 : 1;
      ubyte SelphiaPlainEast_197 : 1;
      ubyte IdraCave_198 : 1;
      ubyte SercerezoHill_199 : 1;
      ubyte SercerezoHill_200 : 1;
      ubyte SercerezoHill_201 : 1;
      ubyte SercerezoHill_202 : 1;
      ubyte SelphiaPlain_203 : 1;
      ubyte SelphiaPlain_204 : 1;
      ubyte AutumnBridge_205 : 1;
      ubyte AutumnBridge_206 : 1;
      ubyte AutumnRoad_207 : 1;
      ubyte AutumnRoad_208 : 1;
      ubyte AutumnRoad_209 : 1;
      ubyte DeliriumLavaRuins_210 : 1;
      ubyte AutumnRoad_211 : 1;
      ubyte AutumnRoad_212 : 1;
      ubyte AutumnRoad_213 : 1;
      ubyte AutumnRoad_214 : 1;
      ubyte AutumnRoad_215 : 1;
      ubyte AutumnRoad_216 : 1;
      ubyte AutumnRoad_217 : 1;
      ubyte AutumnRiver_218 : 1;
      ubyte AutumnRoad_219 : 1;
      ubyte AutumnRoad_220 : 1;
      ubyte AutumnRoad_221 : 1;
      ubyte AutumnRoad_222 : 1;
      ubyte AutumnRoad_223 : 1;
      ubyte AutumnRoad_224 : 1;
      ubyte AutumnRoad_225 : 1;
      ubyte MayaRoadEntrance_226 : 1;
      ubyte SelphiaPlainEast_227 : 1;
      ubyte CerezoBridge_228 : 1;
      ubyte CerezoBridge_229 : 1;
      ubyte SercerezoHill_230 : 1;
      ubyte CluckCluckNest_231 : 1;
      ubyte SilverArch_232 : 1;
      ubyte SilverArch_233 : 1;
      ubyte SilverLake_234 : 1;
      ubyte WinterSpring_235 : 1;
      ubyte AutumnSpring_236 : 1;
      ubyte SelphiaPlainEast_237 : 1;
      ubyte SummerSpring_238 : 1;
      ubyte SpringSpring_239 : 1;
      ubyte BuriedCave_240 : 1;
      ubyte KeenoLake_241 : 1;
      ubyte SelphiaPlain_242 : 1;
      ubyte SelphiaPlain_243 : 1;
      ubyte SilverLake_244 : 1;
      ubyte SilverLake_245 : 1;
      ubyte SilverLake_246 : 1;
      ubyte SercerezoHill_247 : 1;
      ubyte SercerezoHill_248 : 1;
      ubyte SercerezoLake_249 : 1;
      ubyte SercerezoHill_250 : 1;
      ubyte DemonsDen_251 : 1;
      ubyte SercerezoHill_252 : 1;
      ubyte SercerezoHillBridge_253 : 1;
      ubyte SercerezoHill_254 : 1;
      ubyte SercerezoHill_255 : 1;
      ubyte AutumnBridge_256 : 1;
      ubyte RevivalCave_257 : 1;
      ubyte MayaBridge_258 : 1;
      ubyte SercerezoHill_259 : 1;
      ubyte Cave_260 : 1;
      ubyte SpringField_261 : 1;
      ubyte SummerField_262 : 1;
      ubyte AutumnField_263 : 1;
      ubyte WinterField_264 : 1;
      ubyte SelphiaPlain_265 : 1;
      ubyte SelphiaPlain_266 : 1;
      ubyte SelphiaPlain_267 : 1;
      ubyte SelphiaPlain_268 : 1;
      ubyte SelphiaPlain_269 : 1;
      ubyte SelphiaPlain_270 : 1;
      ubyte YokmirForest_271 : 1;
      ubyte YokmirForestDepths_272 : 1;
      ubyte YokmirForest_273 : 1;
      ubyte YokmirForest_274 : 1;
      ubyte YokmirForest_275 : 1;
      ubyte YokmirForest_276 : 1;
      ubyte YokmirForest_277 : 1;
      ubyte YokmirForest_278 : 1;
      ubyte Forest_Dummy_279 : 1;
      ubyte Forest_Dummy_280 : 1;
      ubyte Forest_Dummy_281 : 1;
      ubyte Forest_Dummy_282 : 1;
      ubyte Forest_Dummy_283 : 1;
   } overworld;
   struct {
      ubyte WaterRuins_284 : 1;
      ubyte WaterRuinsDepths_285 : 1;
      ubyte WaterRuins_286 : 1;
      ubyte WaterRuins_287 : 1;
      ubyte WaterRuins_288 : 1;
      ubyte WaterRuins_289 : 1;
      ubyte WaterRuins_290 : 1;
      ubyte WaterRuins_291 : 1;
      ubyte WaterRuins_292 : 1;
      ubyte WaterRuins_293 : 1;
      ubyte WaterRuins_294 : 1;
      ubyte WaterRuins_295 : 1;
      ubyte WaterRuins_296 : 1;
      ubyte WaterRuins_297 : 1;
      ubyte WaterRuins_298 : 1;
      ubyte WaterRuins_299 : 1;
      ubyte WaterRuins_300 : 1;
   } waterRuins;
   ubyte Temple_Dummy_301 : 1;
   ubyte Temple_Dummy_302 : 1;
   struct {
      ubyte ObsidianMansion_303 : 1;
      ubyte ObsidianMnsnTheatre_304 : 1;
      ubyte ObsidianMnsnEntrance_305 : 1;
      ubyte ObsidianMansion_306 : 1;
      ubyte ObsidianMansion_307 : 1;
      ubyte ObsidianMansion_308 : 1;
      ubyte ObsidianMansion_309 : 1;
      ubyte ObsidianMansion_310 : 1;
      ubyte ObsidianMansion_311 : 1;
      ubyte ObsidianMansion_312 : 1;
      ubyte ObsidianMansion_313 : 1;
      ubyte ObsidianMansion_314 : 1;
      ubyte ObsidianMansion_315 : 1;
      ubyte ObsidianMansion_316 : 1;
      ubyte ObsidianMansion_317 : 1;
      ubyte ObsidianMansion_318 : 1;
      ubyte ObsidianMansion_319 : 1;
      ubyte ObsidianMansion_320 : 1;
      ubyte ObsidianMansion_321 : 1;
   } obsidianMansion;
   ubyte Ruin_Dummy_322 : 1;
   ubyte Ruin_Dummy_323 : 1;
   struct {
      ubyte LeonKarnak_324 : 1;
      ubyte LeonKarnakDepths_325 : 1;
      ubyte LeonKarnak_326 : 1;
      ubyte LeonKarnak_327 : 1;
      ubyte LeonKarnak_328 : 1;
      ubyte LeonKarnak_329 : 1;
      ubyte LeonKarnak_330 : 1;
      ubyte LeonKarnak_331 : 1;
      ubyte LeonKarnak_332 : 1;
      ubyte LeonKarnak_333 : 1;
      ubyte LeonKarnak_334 : 1;
      ubyte LeonKarnak_335 : 1;
      ubyte LeonKarnak_336 : 1;
      ubyte LeonKarnak_337 : 1;
      ubyte LeonKarnak_338 : 1;
      ubyte LeonKarnak_339 : 1;
      ubyte LeonKarnak_340 : 1;
      ubyte LeonKarnak_341 : 1;
      ubyte LeonKarnak_342 : 1;
      ubyte LeonKarnak_343 : 1;
      ubyte LeonKarnak_344 : 1;
      ubyte LeonKarnak_345 : 1;
      ubyte LeonKarnak_346 : 1;
   } leonKarnak;
   struct {
      ubyte FloatingEmpire_347 : 1;
      ubyte FloatingEmpire_348 : 1;
      ubyte FloatingEmpireFront_349 : 1;
      ubyte FloatingEmpire_350 : 1;
      ubyte FloatingEmpire_351 : 1;
      ubyte FloatingEmpireSouth_352 : 1;
      ubyte FloatingEmpireSouth_353 : 1;
      ubyte FloatingEmpireSouth_354 : 1;
      ubyte FloatingEmpireSouth_355 : 1;
      ubyte FloatingEmpireSouth_356 : 1;
      ubyte FloatingEmpireSouth_357 : 1;
      ubyte FloatingEmpireSouth_358 : 1;
      ubyte FloatingEmpireSouth_359 : 1;
      ubyte FloatingEmpireSouth_360 : 1;
      ubyte FloatingEmpireSouth_361 : 1;
      ubyte FloatingEmpireSouth_362 : 1;
      ubyte FloatingEmpireSouth_363 : 1;
      ubyte FloatingEmpireSouth_364 : 1;
      ubyte FloatingEmpireSouth_365 : 1;
      ubyte FloatingEmpireSouth_366 : 1;
      ubyte FloatingEmpireSouth_367 : 1;
      ubyte FloatingEmpireSouth_368 : 1;
      ubyte FloatingEmpireSouth_369 : 1;
      ubyte FloatingEmpireSouth_370 : 1;
      ubyte FloatingEmpireSouth_371 : 1;
      ubyte FloatingEmpireSouth_372 : 1;
      ubyte FloatingEmpireSouth_373 : 1;
      ubyte FloatingEmpireSouth_374 : 1;
      ubyte FloatingEmpireSouth_375 : 1;
      ubyte FloatingEmpireSouth_376 : 1;
      ubyte FloatingEmpireWest_377 : 1;
      ubyte FloatingEmpireWest_378 : 1;
      ubyte FloatingEmpireWest_379 : 1;
      ubyte FloatingEmpireWest_380 : 1;
      ubyte FloatingEmpireWest_381 : 1;
      ubyte FloatingEmpireWest_382 : 1;
      ubyte FloatingEmpireWest_383 : 1;
      ubyte FloatingEmpireWest_384 : 1;
      ubyte FloatingEmpireWest_385 : 1;
      ubyte FloatingEmpireWest_386 : 1;
      ubyte FloatingEmpireWest_387 : 1;
      ubyte FloatingEmpireWest_388 : 1;
      ubyte FloatingEmpireWest_389 : 1;
      ubyte FloatingEmpireWest_390 : 1;
      ubyte FloatingEmpireWest_391 : 1;
      ubyte FloatingEmpireWest_392 : 1;
      ubyte FloatingEmpireWest_393 : 1;
      ubyte FloatingEmpireWest_394 : 1;
      ubyte FloatingEmpireWest_395 : 1;
      ubyte FloatingEmpireWest_396 : 1;
      ubyte FloatingEmpireWest_397 : 1;
      ubyte FloatingEmpireWest_398 : 1;
      ubyte FloatingEmpireWest_399 : 1;
      ubyte FloatingEmpireWest_400 : 1;
      ubyte FloatingEmpireWest_401 : 1;
      ubyte FloatingEmpireWest_402 : 1;
      ubyte FloatingEmpireWest_403 : 1;
      ubyte FloatingEmpireWest_404 : 1;
      ubyte FloatingEmpireWest_405 : 1;
      ubyte FloatingEmpireWest_406 : 1;
      ubyte FloatingEmpireWest_407 : 1;
      ubyte FloatingEmpireWest_408 : 1;
      ubyte FloatingEmpireEast_409 : 1;
      ubyte FloatingEmpireEast_410 : 1;
      ubyte FloatingEmpireEast_411 : 1;
      ubyte FloatingEmpireEast_412 : 1;
      ubyte FloatingEmpireEast_413 : 1;
      ubyte FloatingEmpireEast_414 : 1;
      ubyte FloatingEmpireEast_415 : 1;
      ubyte FloatingEmpireEast_416 : 1;
      ubyte FloatingEmpireEast_417 : 1;
      ubyte FloatingEmpireEast_418 : 1;
      ubyte FloatingEmpireEast_419 : 1;
      ubyte FloatingEmpireEast_420 : 1;
      ubyte FloatingEmpireEast_421 : 1;
      ubyte FloatingEmpireEast_422 : 1;
      ubyte FloatingEmpireEast_423 : 1;
      ubyte FloatingEmpireEast_424 : 1;
      ubyte FloatingEmpireEast_425 : 1;
      ubyte FloatingEmpireEast_426 : 1;
      ubyte FloatingEmpireEast_427 : 1;
      ubyte FloatingEmpireEast_428 : 1;
      ubyte FloatingEmpireEast_429 : 1;
      ubyte FloatingEmpireEast_430 : 1;
      ubyte FloatingEmpireEast_431 : 1;
      ubyte FloatingEmpireEast_432 : 1;
      ubyte FloatingEmpireEast_433 : 1;
      ubyte FloatingEmpireEast_434 : 1;
      ubyte FloatingEmpireEast_435 : 1;
      ubyte FloatingEmpireEast_436 : 1;
      ubyte FloatingEmpireEast_437 : 1;
      ubyte FloatingEmpireEast_438 : 1;
      ubyte FloatingEmpireSouth_439 : 1;
      ubyte FloatingEmpire_440 : 1;
      ubyte FloatingEmpire_441 : 1;
   } floatingEmpire;
   ubyte WorldofFields_442 : 1;
   struct {
      ubyte SharanceMaze_443 : 1;
      ubyte SharanceMaze_444 : 1;
      ubyte SharanceMaze_445 : 1;
      ubyte SharanceMaze_446 : 1;
      ubyte SharanceMaze_447 : 1;
      ubyte SharanceMaze_448 : 1;
      ubyte SharanceMaze_449 : 1;
      ubyte SharanceMaze_450 : 1;
      ubyte SharanceMaze_451 : 1;
      ubyte SharanceMaze_452 : 1;
      ubyte SharanceMaze_453 : 1;
   } sharance;
   struct {
      ubyte YokmirCave_454 : 1;
      ubyte YokmirCave_455 : 1;
      ubyte YokmirCave_456 : 1;
      ubyte YokmirCave_457 : 1;
      ubyte YokmirCave_458 : 1;
      ubyte YokmirCave_459 : 1;
      ubyte YokmirCave_460 : 1;
      ubyte YokmirCave_461 : 1;
      ubyte YokmirCave_462 : 1;
      ubyte YokmirCave_463 : 1;
      ubyte YokmirCave_464 : 1;
      ubyte YokmirCave_465 : 1;
      ubyte YokmirCave_466 : 1;
      ubyte YokmirCave_467 : 1;
      ubyte YokmirCave_468 : 1;
      ubyte YokmirCave_469 : 1;
      ubyte YokmirCave_470 : 1;
      ubyte YokmirCave_471 : 1;
      ubyte YokmirCave_472 : 1;
      ubyte YokmirCave_473 : 1;
      ubyte YokmirCave_474 : 1;
      ubyte YokmirCave_475 : 1;
      ubyte YokmirCave_476 : 1;
      ubyte YokmirCave_477 : 1;
      ubyte YokmirCave_478 : 1;
      ubyte YokmirCave_479 : 1;
      ubyte YokmirCave_480 : 1;
      ubyte YokmirCave_481 : 1;
      ubyte YokmirCave_482 : 1;
      ubyte YokmirCave_483 : 1;
      ubyte YokmirCave_484 : 1;
      ubyte YokmirCave_485 : 1;
   } yokmir;
   struct {
      ubyte DeliriumLavaRuins_486 : 1;
      ubyte DeliriumLavaRuins_487 : 1;
      ubyte DeliriumLavaRuins_488 : 1;
      ubyte DeliriumLavaRuins_489 : 1;
      ubyte DeliriumLavaRuins_490 : 1;
      ubyte DeliriumLavaRuins_491 : 1;
      ubyte DeliriumLavaRuins_492 : 1;
      ubyte DeliriumLavaRuins_493 : 1;
      ubyte DeliriumLavaRuins_494 : 1;
      ubyte DeliriumLavaRuins_495 : 1;
      ubyte DeliriumLavaRuins_496 : 1;
      ubyte DeliriumLavaRuins_497 : 1;
      ubyte DeliriumLavaRuins_498 : 1;
      ubyte DeliriumLavaRuins_499 : 1;
      ubyte DeliriumLavaRuins_500 : 1;
      ubyte DeliriumLavaRuins_501 : 1;
      ubyte DeliriumLavaRuins_502 : 1;
      ubyte DeliriumLavaRuins_503 : 1;
      ubyte DeliriumLavaRuins_504 : 1;
      ubyte DeliriumLavaRuins_505 : 1;
      ubyte DeliriumLavaRuins_506 : 1;
      ubyte DeliriumLavaRuins_507 : 1;
      ubyte DeliriumLavaRuins_508 : 1;
      ubyte DeliriumLavaRuins_509 : 1;
      ubyte DeliriumLavaRuins_510 : 1;
      ubyte DeliriumLavaRuins_511 : 1;
      ubyte DeliriumLavaRuins_512 : 1;
      ubyte DeliriumLavaRuins_513 : 1;
      ubyte DeliriumLavaRuins_514 : 1;
      ubyte DeliriumLavaRuins_515 : 1;
      ubyte DeliriumLavaRuins_516 : 1;
      ubyte DeliriumLavaRuins_517 : 1;
      ubyte DeliriumLavaRuins_518 : 1;
      ubyte DeliriumLavaRuins_519 : 1;
      ubyte DeliriumLavaRuins_520 : 1;
      ubyte DeliriumLavaRuins_521 : 1;
      ubyte DeliriumLavaRuins_522 : 1;
      ubyte DeliriumLavaRuins_523 : 1;
      ubyte DeliriumLavaRuins_524 : 1;
      ubyte DeliriumLavaRuins_525 : 1;
      ubyte DeliriumLavaRuins_526 : 1;
   } deliriumLavaRuins;
   struct {
      ubyte Unknown_527 : 1;
      ubyte Unknown_528 : 1;
      ubyte Unknown_529 : 1;
      ubyte Unknown_530 : 1;
      ubyte Unknown_531 : 1;
      ubyte Unknown_532 : 1;
      ubyte Unknown_533 : 1;
      ubyte Unknown_534 : 1;
      ubyte Unknown_535 : 1;
      ubyte Unknown_536 : 1;
      ubyte Unknown_537 : 1;
      ubyte Unknown_538 : 1;
      ubyte Unknown_539 : 1;
      ubyte Unknown_540 : 1;
   } unknownPlace;
   struct {
      ubyte IdraCave_541 : 1;
      ubyte IdraCave_542 : 1;
      ubyte IdraCave_543 : 1;
      ubyte IdraCave_544 : 1;
      ubyte IdraCave_545 : 1;
      ubyte IdraCave_546 : 1;
      ubyte IdraCave_547 : 1;
      ubyte IdraCave_548 : 1;
      ubyte IdraCave_549 : 1;
      ubyte IdraCave_550 : 1;
      ubyte IdraCave_551 : 1;
      ubyte IdraCaveB1_552 : 1;
      ubyte IdraCaveB1_553 : 1;
      ubyte IdraCaveB1_554 : 1;
      ubyte IdraCaveB1_555 : 1;
      ubyte IdraCaveB1_556 : 1;
      ubyte IdraCaveB1_557 : 1;
      ubyte IdraCaveB1_558 : 1;
      ubyte IdraCaveB1_559 : 1;
      ubyte IdraCaveB1_560 : 1;
      ubyte IdraCaveB1_561 : 1;
      ubyte IdraCaveB1_562 : 1;
      ubyte IdraCaveB1_563 : 1;
      ubyte IdraCaveB1_564 : 1;
      ubyte IdraCaveB1_565 : 1;
      ubyte IdraCaveB1_566 : 1;
      ubyte IdraCaveB1_567 : 1;
      ubyte IdraCaveB1_568 : 1;
      ubyte IdraCaveB1_569 : 1;
      ubyte IdraCaveB1_570 : 1;
      ubyte IdraCaveB1_571 : 1;
      ubyte IdraCaveB2_572 : 1;
      ubyte IdraCaveB2_573 : 1;
      ubyte IdraCaveB2_574 : 1;
      ubyte IdraCaveB2_575 : 1;
      ubyte IdraCaveB2_576 : 1;
      ubyte IdraCaveB2_577 : 1;
      ubyte IdraCaveB2_578 : 1;
      ubyte IdraCaveB2_579 : 1;
      ubyte IdraCaveB2_580 : 1;
      ubyte IdraCaveB2_581 : 1;
      ubyte IdraCaveB2_582 : 1;
      ubyte IdraCaveB2_583 : 1;
      ubyte IdraCaveB2_584 : 1;
      ubyte IdraCaveB2_585 : 1;
      ubyte IdraCaveB2_586 : 1;
      ubyte IdraCaveB2_587 : 1;
      ubyte IdraCaveB2_588 : 1;
      ubyte IdraCaveB2_589 : 1;
      ubyte IdraCaveB2_590 : 1;
      ubyte IdraCaveB2_591 : 1;
      ubyte IdraCaveB2_592 : 1;
      ubyte IdraCaveB2_593 : 1;
   } idraCave;
   ubyte ImperialResearchCntr_594 : 1;
   struct {
      ubyte MayaRoad_595 : 1;
      ubyte MayaRoad_596 : 1;
      ubyte MayaRoad_597 : 1;
      ubyte MayaRoad_598 : 1;
      ubyte MayaRoad_599 : 1;
      ubyte MayaRoad_600 : 1;
      ubyte MayaRoad_601 : 1;
      ubyte MayaRoad_602 : 1;
      ubyte MayaRoad_603 : 1;
      ubyte MayaRoad_604 : 1;
      ubyte MayaRoad_605 : 1;
      ubyte MayaRoad_606 : 1;
      ubyte MayaRoad_607 : 1;
      ubyte MayaRoad_608 : 1;
      ubyte MayaRoad_609 : 1;
      ubyte MayaRoad_610 : 1;
      ubyte MayaRoad_611 : 1;
      ubyte MayaRoad_612 : 1;
      ubyte MayaRoad_613 : 1;
      ubyte MayaRoad_614 : 1;
      ubyte MayaRoad_615 : 1;
      ubyte MayaRoad_616 : 1;
      ubyte MayaRoad_617 : 1;
      ubyte MayaRoad_618 : 1;
      ubyte MayaRoad_619 : 1;
      ubyte MayaRoad_620 : 1;
      ubyte MayaRoad_621 : 1;
      ubyte MayaRoad_622 : 1;
      ubyte MayaRoad_623 : 1;
      ubyte MayaRoad_624 : 1;
      ubyte MayaRoad_625 : 1;
      ubyte MayaRoad_626 : 1;
      ubyte MayaRoad_627 : 1;
      ubyte MayaRoad_628 : 1;
      ubyte MayaRoad_629 : 1;
      ubyte MayaRoad_630 : 1;
      ubyte MayaRoad_631 : 1;
      ubyte MayaRoad_632 : 1;
      ubyte MayaRoad_633 : 1;
      ubyte MayaRoad_634 : 1;
      ubyte MayaRoad_635 : 1;
      ubyte MayaRoad_636 : 1;
      ubyte MayaRoad_637 : 1;
      ubyte MayaRoad_638 : 1;
      ubyte MayaRoad_639 : 1;
      ubyte MayaRoad_640 : 1;
      ubyte MayaRoad_641 : 1;
      ubyte MayaRoad_642 : 1;
      ubyte MayaRoad_643 : 1;
      ubyte MayaRoad_644 : 1;
      ubyte MayaRoad_645 : 1;
      ubyte MayaRoad_646 : 1;
      ubyte MayaRoad_647 : 1;
      ubyte MayaRoad_648 : 1;
      ubyte MayaRoad_649 : 1;
      ubyte MayaRoad_650 : 1;
      ubyte MayaRoad_651 : 1;
      ubyte MayaRoad_652 : 1;
      ubyte MayaRoad_653 : 1;
      ubyte MayaRoad_654 : 1;
      ubyte MayaRoad_655 : 1;
      ubyte MayaRoad_656 : 1;
      ubyte MayaRoad_657 : 1;
   } mayaRoad;
   struct {
      ubyte SechsTerritory_658 : 1;
      ubyte SechsTerritory_659 : 1;
      ubyte SechsTerritory_660 : 1;
      ubyte SechsTerritory_661 : 1;
      ubyte SechsTerritory_662 : 1;
      ubyte SechsTerritory_663 : 1;
      ubyte SechsTerritory_664 : 1;
      ubyte SechsTerritory_665 : 1;
      ubyte SechsTerritory_666 : 1;
      ubyte SechsTerritory_667 : 1;
      ubyte SechsTerritory_668 : 1;
      ubyte SechsTerritory_669 : 1;
      ubyte SechsTerritory_670 : 1;
      ubyte SechsTerritory_671 : 1;
      ubyte SechsTerritory_672 : 1;
      ubyte SechsTerritory_673 : 1;
      ubyte SechsTerritory_674 : 1;
      ubyte SechsTerritory_675 : 1;
      ubyte SechsTerritory_676 : 1;
      ubyte SechsTerritory_677 : 1;
      ubyte SechsTerritory_678 : 1;
      ubyte SechsTerritory_679 : 1;
      ubyte SechsTerritory_680 : 1;
      ubyte SechsTerritory_681 : 1;
      ubyte SechsTerritory_682 : 1;
      ubyte SechsTerritory_683 : 1;
      ubyte SechsTerritory_684 : 1;
      ubyte SechsTerritory_685 : 1;
      ubyte SechsTerritory_686 : 1;
      ubyte SechsTerritory_687 : 1;
      ubyte SechsTerritory_688 : 1;
      ubyte SechsTerritory_689 : 1;
      ubyte SechsTerritory_690 : 1;
      ubyte SechsTerritory_691 : 1;
      ubyte SechsTerritory_692 : 1;
      ubyte SechsTerritory_693 : 1;
      ubyte SechsTerritory_694 : 1;
      ubyte SechsTerritory_695 : 1;
      ubyte SechsTerritory_696 : 1;
      ubyte SechsTerritory_697 : 1;
      ubyte SechsTerritory_698 : 1;
      ubyte SechsTerritory_699 : 1;
      ubyte SechsTerritory_700 : 1;
      ubyte SechsTerritory_701 : 1;
      ubyte SechsTerritory_702 : 1;
      ubyte SechsTerritory_703 : 1;
      ubyte SechsTerritory_704 : 1;
      ubyte SechsTerritory_705 : 1;
      ubyte SechsTerritory_706 : 1;
      ubyte SechsTerritory_707 : 1;
      ubyte SechsTerritory_708 : 1;
      ubyte SechsTerritory_709 : 1;
      ubyte SechsTerritory_710 : 1;
      ubyte SechsTerritory_711 : 1;
      ubyte SechsTerritory_712 : 1;
      ubyte SechsTerritory_713 : 1;
      ubyte SechsTerritory_714 : 1;
      ubyte SechsTerritory_715 : 1;
      ubyte SechsTerritory_716 : 1;
      ubyte SechsTerritory_717 : 1;
      ubyte SechsTerritory_718 : 1;
      ubyte SechsTerritory_719 : 1;
      ubyte SechsTerritory_720 : 1;
      ubyte SechsTerritory_721 : 1;
      ubyte SechsTerritory_722 : 1;
      ubyte SechsTerritory_723 : 1;
      ubyte SechsTerritory_724 : 1;
      ubyte SechsTerritory_725 : 1;
   } sechsTerritory;
   struct {
      ubyte RunePrana_726 : 1;
      ubyte RunePrana_727 : 1;
      ubyte RunePrana_728 : 1;
      ubyte RunePrana_729 : 1;
      ubyte RunePrana_730 : 1;
      ubyte RunePrana_731 : 1;
      ubyte RunePrana_732 : 1;
      ubyte RunePrana_733 : 1;
      ubyte RunePrana_734 : 1;
      ubyte RunePrana_735 : 1;
      ubyte RunePrana_736 : 1;
      ubyte RunePrana_737 : 1;
      ubyte RunePrana_738 : 1;
      ubyte RunePrana_739 : 1;
      ubyte RunePrana_740 : 1;
      ubyte RunePrana_741 : 1;
      ubyte RunePrana_742 : 1;
      ubyte RunePrana_743 : 1;
      ubyte RunePrana_744 : 1;
      ubyte RunePrana_745 : 1;
      ubyte RunePrana_746 : 1;
      ubyte RunePrana_747 : 1;
      ubyte RunePrana_748 : 1;
      ubyte RunePrana_749 : 1;
      ubyte RunePrana_750 : 1;
      ubyte RunePrana_751 : 1;
      ubyte RunePrana_752 : 1;
      ubyte RunePrana_753 : 1;
      ubyte RunePrana_754 : 1;
      ubyte RunePrana_755 : 1;
      ubyte RunePrana_756 : 1;
      ubyte RunePrana_757 : 1;
      ubyte RunePrana_758 : 1;
      ubyte RunePrana_759 : 1;
      ubyte RunePrana_760 : 1;
      ubyte RunePrana_761 : 1;
      ubyte RunePrana_762 : 1;
      ubyte RunePrana_763 : 1;
      ubyte RunePrana_764 : 1;
      ubyte RunePrana_765 : 1;
      ubyte RunePrana_766 : 1;
      ubyte RunePrana_767 : 1;
      ubyte RunePrana_768 : 1;
      ubyte RunePrana_769 : 1;
      ubyte RunePrana_770 : 1;
      ubyte RunePrana_771 : 1;
      ubyte RunePrana_772 : 1;
      ubyte RunePrana_773 : 1;
      ubyte RunePrana_774 : 1;
      ubyte RunePrana_775 : 1;
      ubyte RunePrana_776 : 1;
      ubyte RunePrana_777 : 1;
      ubyte RunePrana_778 : 1;
      ubyte RunePrana_779 : 1;
      ubyte RunePrana_780 : 1;
      ubyte RunePrana_781 : 1;
      ubyte RunePrana_782 : 1;
      ubyte RunePrana_783 : 1;
      ubyte RunePrana_784 : 1;
      ubyte RunePrana_785 : 1;
      ubyte RunePrana_786 : 1;
      ubyte RunePrana_787 : 1;
      ubyte RunePrana_788 : 1;
      ubyte RunePrana_789 : 1;
      ubyte RunePrana_790 : 1;
      ubyte RunePrana_791 : 1;
      ubyte RunePrana_792 : 1;
      ubyte RunePrana_793 : 1;
      ubyte RunePrana_794 : 1;
      ubyte RunePrana_795 : 1;
      ubyte RunePrana_796 : 1;
      ubyte RunePrana_797 : 1;
      ubyte RunePrana_798 : 1;
      ubyte RunePrana_799 : 1;
      ubyte RunePrana_800 : 1;
      ubyte RunePrana_801 : 1;
      ubyte RunePrana_802 : 1;
      ubyte RunePrana_803 : 1;
      ubyte RunePrana_804 : 1;
      ubyte RunePrana_805 : 1;
      ubyte RunePrana_806 : 1;
      ubyte RunePrana_807 : 1;
      ubyte RunePrana_808 : 1;
      ubyte RunePrana_809 : 1;
      ubyte RunePrana_810 : 1;
      ubyte RunePrana_811 : 1;
      ubyte RunePrana_812 : 1;
      ubyte RunePrana_813 : 1;
      ubyte RunePrana_814 : 1;
      ubyte RunePrana_815 : 1;
      ubyte RunePrana_816 : 1;
      ubyte RunePrana_817 : 1;
      ubyte RunePrana_818 : 1;
      ubyte RunePrana_819 : 1;
      ubyte RunePrana_820 : 1;
      ubyte RunePrana_821 : 1;
      ubyte RunePrana_822 : 1;
      ubyte RunePrana_823 : 1;
      ubyte RunePrana_824 : 1;
      ubyte RunePrana_825 : 1;
      ubyte RunePrana_826 : 1;
      ubyte RunePrana_827 : 1;
      ubyte RunePrana_828 : 1;
      ubyte RunePrana_829 : 1;
      ubyte RunePrana_830 : 1;
      ubyte RunePrana_831 : 1;
      ubyte RunePrana_832 : 1;
      ubyte RunePrana_833 : 1;
      ubyte RunePrana_834 : 1;
      ubyte RunePrana_835 : 1;
      ubyte RunePrana_836 : 1;
      ubyte RunePrana_837 : 1;
      ubyte RunePrana_838 : 1;
      ubyte RunePrana_839 : 1;
      ubyte RunePrana_840 : 1;
      ubyte RunePrana_841 : 1;
      ubyte RunePrana_842 : 1;
      ubyte RunePrana_843 : 1;
      ubyte RunePrana_844 : 1;
      ubyte RunePrana_845 : 1;
      ubyte RunePrana_846 : 1;
      ubyte RunePrana_847 : 1;
      ubyte RunePrana_848 : 1;
      ubyte RunePrana_849 : 1;
      ubyte RunePrana_850 : 1;
      ubyte RunePrana_851 : 1;
      ubyte RunePrana_852 : 1;
   }  runePrana;
   struct {
      ubyte CluckCluckNest_853 : 1;
      ubyte CluckCluckNest_854 : 1;
      ubyte CluckCluckNest_855 : 1;
      ubyte CluckCluckNest_856 : 1;
      ubyte CluckCluckNest_857 : 1;
   }  cluckCluckNest;
   struct {
      ubyte RevivalCave_858 : 1;
      ubyte RevivalCave_859 : 1;
      ubyte RevivalCave_860 : 1;
   }  revivalCave;
   struct {
      ubyte DemonsDen_861 : 1;
      ubyte DemonsDen_862 : 1;
      ubyte DemonsDen_863 : 1;
      ubyte DemonsDen_864 : 1;
      ubyte DemonsDen_865 : 1;
      ubyte DemonsDen_866 : 1;
      ubyte DemonsDen_867 : 1;
      ubyte DemonsDen_868 : 1;
      ubyte DemonsDen_869 : 1;
   }  demonsDen;
   ubyte __870 : 1;
   ubyte __871 : 1;
} MAPB <size=109>;
 // Unlocked recipes bitfield
typedef struct {
   ubyte    : 7;  // probably part of a different flagset - fix later
   struct {
      ubyte Yarn : 1;
      ubyte Cheap_Bracelet : 1;
      ubyte Bronze_Bracelet : 1;
      ubyte Silver_Bracelet : 1;
      ubyte Gold_Bracelet : 1;
      ubyte Platinum_Bracelet : 1;
      ubyte Silver_Ring : 1;
      ubyte Gold_Ring : 1;
      ubyte Platinum_Ring : 1;
      ubyte Shield_Ring : 1;
      ubyte Critical_Ring : 1;
      ubyte Silent_Ring : 1;
      ubyte Paralysis_Ring : 1;
      ubyte Poison_Ring : 1;
      ubyte Magic_Ring : 1;
      ubyte Throwing_Ring : 1;
      ubyte Stay_up_Ring : 1;
      ubyte Aquamarine_Ring : 1;
      ubyte Amethyst_Ring : 1;
      ubyte Emerald_Ring : 1;
      ubyte Sapphire_Ring : 1;
      ubyte Ruby_Ring : 1;
      ubyte Cursed_Ring : 1;
      ubyte Diamond_Ring : 1;
      ubyte Aquamarine_Brooch : 1;
      ubyte Amethyst_Brooch : 1;
      ubyte Emerald_Brooch : 1;
      ubyte Sapphire_Brooch : 1;
      ubyte Ruby_Brooch : 1;
      ubyte Diamond_Brooch : 1;
      ubyte Dolphin_Brooch : 1;
      ubyte Fire_Ring : 1;
      ubyte Wind_Ring : 1;
      ubyte Water_Ring : 1;
      ubyte Earth_Ring : 1;
      ubyte Happy_Ring : 1;
      ubyte Silver_Pendant : 1;
      ubyte Star_Pendant : 1;
      ubyte Sun_Pendant : 1;
      ubyte Field_Pendant : 1;
      ubyte Dew_Pendant : 1;
      ubyte Earth_Pendant : 1;
      ubyte Heart_Pendant : 1;
      ubyte Strange_Pendant : 1;
      ubyte Anettes_Necklace : 1;
      ubyte Work_Gloves : 1;
      ubyte Gloves : 1;
      ubyte Power_Gloves : 1;
      ubyte Earrings : 1;
      ubyte Witch_Earrings : 1;
      ubyte Magic_Earrings : 1;
      ubyte Charm : 1;
      ubyte Holy_Amulet : 1;
      ubyte Rosary : 1;
      ubyte Talisman : 1;
      ubyte Magic_Charm : 1;
      ubyte Leather_Belt : 1;
      ubyte Lucky_Strike : 1;
      ubyte Champ_Belt : 1;
      ubyte Hand_Knit_Scarf : 1;
      ubyte Fluffy_Scarf : 1;
      ubyte Heros_Proof : 1;
      ubyte Proof_of_Wisdom : 1;
      ubyte Art_of_Attack : 1;
      ubyte Art_of_Defense : 1;
      ubyte Art_of_Magic : 1;
      ubyte Badge : 1;
      ubyte Courage_Badge : 1;
      ubyte Ventis_Charm_A : 1;
      ubyte Ventis_Charm_B : 1;
   } craft_Accessories;
   struct {
      ubyte Shirt : 1;
      ubyte Vest : 1;
      ubyte Cotton_Cloth : 1;
      ubyte Mail : 1;
      ubyte Chain_Mail : 1;
      ubyte Scale_Vest : 1;
      ubyte Sparkling_Shirt : 1;
      ubyte Wind_Cloak : 1;
      ubyte Protector : 1;
      ubyte Platinum_Mail : 1;
      ubyte Lamellar_Vest : 1;
      ubyte Mercenarys_Cloak : 1;
      ubyte Wooly_Shirt : 1;
      ubyte Elvish_Cloak : 1;
      ubyte Dragon_Cloak : 1;
      ubyte Power_Protector : 1;
      ubyte Rune_Vest : 1;
      ubyte Royal_Garter : 1;
      ubyte Four_Dragons_Vest : 1;
   } craft_Armor;
   struct {
      ubyte Trout_Sashimi : 1;
      ubyte Char_Sashimi : 1;
      ubyte Rainbow_Sashimi : 1;
      ubyte Salmon_Sashimi : 1;
      ubyte Cherry_Sashimi : 1;
      ubyte Taimen_Sashimi : 1;
      ubyte Snapper_Sashimi : 1;
      ubyte Glitter_Sashimi : 1;
      ubyte Lover_Sashimi : 1;
      ubyte Girella_Sashimi : 1;
      ubyte Skipjack_Sashimi : 1;
      ubyte Yellowtail_Sashimi : 1;
      ubyte Tuna_Sashimi : 1;
      ubyte Sardine_Sashimi : 1;
      ubyte Needlefish_Sashimi : 1;
      ubyte Pike_Sashimi : 1;
      ubyte Flounder_Sashimi : 1;
      ubyte Turbot_Sashimi : 1;
      ubyte Fall_Sashimi : 1;
      ubyte Squid_Sashimi : 1;
      ubyte Sunsquid_Sashimi : 1;
      ubyte Lamp_Squid_Sashimi : 1;
      ubyte Blowfish_Sashimi : 1;
      ubyte Lobster_Sashimi : 1;
      ubyte Shrimp_Sashimi : 1;
   } cooking_Knife;
   struct {
      ubyte Fried_Veggies : 1;
      ubyte Fried_Rice : 1;
      ubyte Cabbage_Cakes : 1;
      ubyte French_Fries : 1;
      ubyte Croquettes : 1;
      ubyte Popcorn : 1;
      ubyte Corn_Cereal : 1;
      ubyte Miso_Eggplant : 1;
      ubyte Fried_Eggs : 1;
      ubyte Omelet : 1;
      ubyte Omelet_Rice : 1;
      ubyte Baked_Apple : 1;
      ubyte Curry_Bread : 1;
      ubyte French_Toast : 1;
      ubyte Donut : 1;
      ubyte Fried_Udon : 1;
      ubyte Tempura : 1;
      ubyte Pancakes : 1;
      ubyte Gyoza : 1;
      ubyte Risotto : 1;
      ubyte Dry_Curry : 1;
      ubyte Salted_Masu_Trout : 1;
      ubyte Salted_Char : 1;
      ubyte Salted_R_Trout : 1;
      ubyte Salted_C_Salmon : 1;
      ubyte Salted_Chub : 1;
      ubyte Salted_Salmon : 1;
      ubyte Salted_Taimen : 1;
      ubyte Grilled_C_Carp : 1;
      ubyte Grilled_Gibelio : 1;
      ubyte Grilled_Snapper : 1;
      ubyte Grilled_Girella : 1;
      ubyte Grilled_G_Snapper : 1;
      ubyte Grilled_L_Snapper : 1;
      ubyte Grilled_Skipjack : 1;
      ubyte Grilled_Mackerel : 1;
      ubyte Grilled_Yellowtail : 1;
      ubyte Salted_Pond_Smelt : 1;
      ubyte Tuna_Teriyaki : 1;
      ubyte Dried_Sardines : 1;
      ubyte Grilled_Needlefish : 1;
      ubyte Salted_Pike : 1;
      ubyte Grilled_Flounder : 1;
      ubyte Grilled_Turbot : 1;
      ubyte Grilled_F_Flounder : 1;
      ubyte Grilled_Squid : 1;
      ubyte Grilled_Sunsquid : 1;
      ubyte Grilled_Lamp_Squid : 1;
      ubyte Grilled_Blowfish : 1;
      ubyte Grilled_Lobster : 1;
      ubyte Grilled_Shrimp : 1;
      ubyte Grilled_S_Flounder : 1;
   } cooking_FryingPan;
   struct {
      ubyte Hot_Milk : 1;
      ubyte Hot_Chocolate : 1;
      ubyte Grape_Liqueur : 1;
      ubyte Boiled_Pumpkin : 1;
      ubyte Boiled_Spinach : 1;
      ubyte Boiled_Egg : 1;
      ubyte Glazed_Yam : 1;
      ubyte Boiled_Gyoza : 1;
      ubyte Strawberry_Jam : 1;
      ubyte Apple_Jam : 1;
      ubyte Grape_Jam : 1;
      ubyte Marmalade : 1;
      ubyte Cheese_Fondue : 1;
      ubyte Udon : 1;
      ubyte Curry_Udon : 1;
      ubyte Tempura_Udon : 1;
      ubyte Rice_Porridge : 1;
      ubyte Milk_Porridge : 1;
      ubyte Tempura_Bowl : 1;
      ubyte Egg_Bowl : 1;
      ubyte Stew : 1;
      ubyte Curry_Rice : 1;
      ubyte Ultimate_Curry : 1;
      ubyte Royal_Curry : 1;
      ubyte Relax_Tea : 1;
      ubyte Grilled_Miso : 1;
      ubyte Union_Stew : 1;
      ubyte Rockfish_Stew : 1;
      ubyte Yogurt : 1;
   } cooking_Pot;
   struct {
      ubyte Corn_on_the_Cob : 1;
      ubyte Baked_Onigiri : 1;
      ubyte Sweet_Potato : 1;
      ubyte Toast : 1;
      ubyte Jam_Roll : 1;
      ubyte Butter_Roll : 1;
      ubyte Pizza : 1;
      ubyte Seafood_Pizza : 1;
      ubyte Doria : 1;
      ubyte Seafood_Doria : 1;
      ubyte Gratin : 1;
      ubyte Seafood_Gratin : 1;
      ubyte Yam_of_the_Ages : 1;
      ubyte Cookie : 1;
      ubyte Choco_Cookie : 1;
      ubyte Cake : 1;
      ubyte Chocolate_Cake : 1;
      ubyte Cheesecake : 1;
      ubyte Apple_Pie : 1;
   } cooking_Oven;
   struct {
      ubyte Pineapple_Juice : 1;
      ubyte Tomato_Juice : 1;
      ubyte Grape_Juice : 1;
      ubyte Orange_Juice : 1;
      ubyte Apple_Juice : 1;
      ubyte Strawberry_Milk : 1;
      ubyte Fruit_Juice : 1;
      ubyte Fruit_Smoothie : 1;
      ubyte Vegetable_Juice : 1;
      ubyte Veggie_Smoothie : 1;
      ubyte Mixed_Juice : 1;
      ubyte Mixed_Smoothie : 1;
      ubyte Ketchup : 1;
      ubyte Butter : 1;
      ubyte Gold_Juice : 1;
      ubyte Prelude_to_Love : 1;
      ubyte Hot_Juice : 1;
   } cooking_Mixer;
   struct {
      ubyte Steamed_Bread : 1;
      ubyte Cheese_Bread : 1;
      ubyte Meat_Dumpling : 1;
      ubyte Chinese_Manju : 1;
      ubyte Curry_Manju : 1;
      ubyte Steamed_Gyoza : 1;
      ubyte Pound_Cake : 1;
      ubyte Chocolate_Sponge : 1;
      ubyte Flan : 1;
      ubyte Pumpkin_Flan : 1;
      ubyte Dumplings : 1;
   } cooking_Steamer;
   struct {
      ubyte Salad : 1;
      ubyte Sandwich : 1;
      ubyte Fruit_Sandwich : 1;
      ubyte Pickled_Turnip : 1;
      ubyte Pickles : 1;
      ubyte Bamboo_Rice : 1;
      ubyte Raisin_Bread : 1;
      ubyte Ice_Cream : 1;
      ubyte Relax_Tea_Leaves : 1;
      ubyte Onigiri : 1;
      ubyte Bread : 1;
      ubyte Salmon_Onigiri : 1;
      ubyte Pickle_Mix : 1;
      ubyte Turnip_Heaven : 1;
      ubyte Cheese : 1;
      ubyte Mayonnaise : 1;
   } cooking_HandmadeAndOthers;
   struct {
      ubyte The_Protein : 1;
      ubyte Intelligencer : 1;
      ubyte Vital_Gummi : 1;
      ubyte Heart_Drink : 1;
      ubyte Antidote_Potion : 1;
      ubyte Para_Gone : 1;
      ubyte Roundoff : 1;
      ubyte Cold_Medicine : 1;
      ubyte Formuade : 1;
      ubyte Love_Potion : 1;
      ubyte Invinciroid : 1;
      ubyte Leveliser : 1;
      ubyte Heavy_Spice : 1;
      ubyte Sweet_Powder : 1;
      ubyte Sour_Drop : 1;
      ubyte Mixed_Herbs : 1;
      ubyte Recovery_Potion : 1;
      ubyte Healing_Potion : 1;
      ubyte Mystery_Potion : 1;
      ubyte Magical_Potion : 1;
   } chem_Medicine;
   struct {
      ubyte Cheap_Hoe : 1;
      ubyte Sturdy_Hoe : 1;
      ubyte Seasoned_Hoe : 1;
      ubyte Shiny_Hoe : 1;
      ubyte Blessed_Hoe : 1;
      ubyte Cheap_Waterpot : 1;
      ubyte Tin_Waterpot : 1;
      ubyte Lion_Waterpot : 1;
      ubyte Rainbow_Waterpot : 1;
      ubyte Joy_Waterpot : 1;
      ubyte Cheap_Sickle : 1;
      ubyte Iron_Sickle : 1;
      ubyte Quality_Sickle : 1;
      ubyte Super_Sickle : 1;
      ubyte Legendary_Sickle : 1;
      ubyte Cheap_Hammer : 1;
      ubyte Iron_Hammer : 1;
      ubyte Silver_Hammer : 1;
      ubyte Golden_Hammer : 1;
      ubyte Platinum_Hammer : 1;
      ubyte Cheap_Axe : 1;
      ubyte Chopping_Axe : 1;
      ubyte Lumber_Axe : 1;
      ubyte Mountain_Axe : 1;
      ubyte Miracle_Axe : 1;
      ubyte Cheap_Pole : 1;
      ubyte Beginners_Pole : 1;
      ubyte Skilled_Pole : 1;
      ubyte Famous_Pole : 1;
      ubyte Sacred_Pole : 1;
   } forge_FarmTools;
   struct {
      ubyte Headband : 1;
      ubyte Blue_Ribbon : 1;
      ubyte Green_Ribbon : 1;
      ubyte Purple_Ribbon : 1;
      ubyte Summer_Headdress : 1;
      ubyte Spectacles : 1;
      ubyte Straw_Hat : 1;
      ubyte Fancy_Hat : 1;
      ubyte Brand_Glasses : 1;
      ubyte Cute_Knitting : 1;
      ubyte Intelligent_Glasses : 1;
      ubyte Fireproof_Hood : 1;
      ubyte Black_Ribbon : 1;
      ubyte Lolita_Headdress : 1;
      ubyte Headdress : 1;
      ubyte Yellow_Ribbon : 1;
      ubyte Autumn_Headdress : 1;
      ubyte Cat_Ears : 1;
      ubyte Silver_Hairpin : 1;
      ubyte Red_Ribbon : 1;
      ubyte Spring_Headdress : 1;
      ubyte Orange_Ribbon : 1;
      ubyte Winter_Headdress : 1;
      ubyte White_Ribbon : 1;
      ubyte Four_Seasons : 1;
      ubyte Feathered_Hat : 1;
      ubyte Gold_Hairpin : 1;
      ubyte Indigo_Ribbon : 1;
      ubyte Crown : 1;
      ubyte Turnip_Headgear : 1;
      ubyte Pumpkin_Headgear : 1;
      ubyte Silk_Hat : 1;
   } craft_Headgear;
   ubyte  : 1; // dummy_341
   ubyte Engagement_Ring : 1;
   struct {
      ubyte Wettable_Powder : 1;
      ubyte Greenifier : 1;
      ubyte GreenifierPlus : 1;
      ubyte FormulaA : 1;
      ubyte FormulaB : 1;
      ubyte FormulaC : 1;
      ubyte NoRotAlpha : 1;
      ubyte NoRotBeta : 1;
      ubyte Giantizer : 1;
      ubyte Minimizer : 1;
   } chem_FarmChemicals;
   struct {
      ubyte Small_Shield : 1;
      ubyte Umbrella : 1;
      ubyte Iron_Shield : 1;
      ubyte Monkey_Plush : 1;
      ubyte Round_Shield : 1;
      ubyte Turtle_Shield : 1;
      ubyte Chaos_Shield : 1;
      ubyte Bone_Shield : 1;
      ubyte Magic_Shield : 1;
      ubyte Heavy_Shield : 1;
      ubyte Platinum_Shield : 1;
      ubyte Kite_Shield : 1;
      ubyte Knight_Shield : 1;
      ubyte Element_Shield : 1;
      ubyte Magical_Shield : 1;
      ubyte Prism_Shield : 1;
      ubyte Rune_Shield : 1;
   } craft_Shields;
   struct {
      ubyte Feather_Boots : 1;
      ubyte Heavy_Boots : 1;
      ubyte Leather_Boots : 1;
      ubyte Iron_Geta : 1;
      ubyte Snow_Boots : 1;
      ubyte Ice_Skates : 1;
      ubyte Piyo_Sandals : 1;
      ubyte Step_In_Boots : 1;
      ubyte Ghost_Boots : 1;
      ubyte Knight_Boots : 1;
      ubyte Strider_Boots : 1;
      ubyte Secret_Shoes : 1;
      ubyte Wet_Boots : 1;
      ubyte Sneaking_Boots : 1;
      ubyte Fast_Step_Boots : 1;
      ubyte Water_Shoes : 1;
      ubyte Rocket_Wing : 1;
      ubyte Silver_Boots : 1;
      ubyte Gold_Boots : 1;
      ubyte Bone_Boots : 1;
      ubyte Fairy_Boots : 1;
      ubyte Free_Farming_Shoes : 1;
   } craft_Shoes;
   struct {
      ubyte Broadsword : 1;
      ubyte Steel_Sword : 1;
      ubyte Steel_Sword_Plus : 1;
      ubyte Cutlass : 1;
      ubyte Aqua_Sword : 1;
      ubyte Invisiblade : 1;
      ubyte Defender : 1;
      ubyte Burning_Sword : 1;
      ubyte Gorgeous_Sword : 1;
      ubyte Gaia_Sword : 1;
      ubyte Snakesword : 1;
      ubyte Luck_Blade : 1;
      ubyte Platinum_Sword : 1;
      ubyte Wind_Sword : 1;
      ubyte Chaos_Blade : 1;
      ubyte Sakura : 1;
      ubyte Sunspot : 1;
      ubyte Durendal : 1;
      ubyte Aerial_Blade : 1;
      ubyte Grantale : 1;
      ubyte Smash_Blade : 1;
      ubyte Icifier : 1;
      ubyte Soul_Eater : 1;
      ubyte Raventine : 1;
      ubyte Star_Saber : 1;
      ubyte Platinum_Sword_Plus : 1;
      ubyte Dragon_Slayer : 1;
      ubyte Rune_Blade : 1;
      ubyte Gladius : 1;
      ubyte Rune_Legend : 1;
      ubyte Back_Scratcher : 1;
      ubyte Spoon : 1;
      ubyte Veggieblade : 1;
   } forge_ShortSwords;
   struct {
      ubyte Claymore : 1;
      ubyte Zweihaender : 1;
      ubyte Zweihaender_Plus : 1;
      ubyte Great_Sword : 1;
      ubyte Sea_Cutter : 1;
      ubyte Cyclone_Blade : 1;
      ubyte Poison_Blade : 1;
      ubyte Katzbalger : 1;
      ubyte Earth_Shade : 1;
      ubyte Big_Knife : 1;
      ubyte Katana : 1;
      ubyte Flame_Saber : 1;
      ubyte Bio_Smasher : 1;
      ubyte Snow_Crown : 1;
      ubyte Dancing_Dicer : 1;
      ubyte Flamberge : 1;
      ubyte Flamberge_Plus : 1;
      ubyte Volcanon : 1;
      ubyte Psycho : 1;
      ubyte Shine_Blade : 1;
      ubyte Grand_Smasher : 1;
      ubyte Belzebuth : 1;
      ubyte Orochi : 1;
      ubyte Punisher : 1;
      ubyte Steel_Slicer : 1;
      ubyte Moon_Shadow : 1;
      ubyte Blue_Eyed_Blade : 1;
      ubyte Balmung : 1;
      ubyte Braveheart : 1;
      ubyte Force_Element : 1;
      ubyte Heaven_Asunder : 1;
      ubyte Caliburn : 1;
      ubyte Dekash : 1;
      ubyte Daicone : 1;
   } forge_LongSwords;
   struct {
      ubyte Spear : 1;
      ubyte Wood_Staff : 1;
      ubyte Lance : 1;
      ubyte Lance_Plus : 1;
      ubyte Needle_Spear : 1;
      ubyte Trident : 1;
      ubyte Water_Spear : 1;
      ubyte Halberd : 1;
      ubyte Corsesca : 1;
      ubyte Corsesca_Plus : 1;
      ubyte Poison_Spear : 1;
      ubyte Fivestaff : 1;
      ubyte Heavy_Lance : 1;
      ubyte Feather_Lance : 1;
      ubyte Iceberg : 1;
      ubyte Blood_Lance : 1;
      ubyte Magical_Lance : 1;
      ubyte Flare_Lance : 1;
      ubyte Brionac : 1;
      ubyte Poison_Queen : 1;
      ubyte Monk_Staff : 1;
      ubyte Metus : 1;
      ubyte Silent_Grave : 1;
      ubyte Overbreak : 1;
      ubyte Bjor : 1;
      ubyte Belvarose : 1;
      ubyte Gae_Bolg : 1;
      ubyte Gungnir : 1;
      ubyte Dragons_Fang : 1;
      ubyte Legion : 1;
      ubyte Pitchfork : 1;
      ubyte Safety_Lance : 1;
      ubyte Pine_Club : 1;
      ubyte  : 1; // dummy_492
      ubyte  : 1; // dummy_493
      ubyte  : 1; // dummy_494
      ubyte  : 1; // dummy_495
      ubyte  : 1; // dummy_496
   } forge_Spears;
   struct {
      ubyte Battle_Hammer : 1;
      ubyte Battle_Axe : 1;
      ubyte Bat : 1;
      ubyte War_Hammer : 1;
      ubyte Battle_Scythe : 1;
      ubyte War_Hammer_Plus : 1;
      ubyte Pole_Axe : 1;
      ubyte Iron_Bat : 1;
      ubyte Pole_Axe_Plus : 1;
      ubyte Great_Hammer : 1;
      ubyte Great_Axe : 1;
      ubyte Ice_Hammer : 1;
      ubyte Tomahawk : 1;
      ubyte Basilisk_Fang : 1;
      ubyte Bone_Hammer : 1;
      ubyte Rock_Axe : 1;
      ubyte Strong_Stone : 1;
      ubyte Demon_Axe : 1;
      ubyte Flame_Hammer : 1;
      ubyte Gigant_Hammer : 1;
      ubyte Sky_Hammer : 1;
      ubyte Frost_Axe : 1;
      ubyte Crescent_Axe : 1;
      ubyte Crescent_Axe_Plus : 1;
      ubyte Graviton_Hammer : 1;
      ubyte Spiked_Hammer : 1;
      ubyte Heat_Axe : 1;
      ubyte Crystal_Hammer : 1;
      ubyte Schnabel : 1;
      ubyte Double_Edge : 1;
      ubyte Alldale : 1;
      ubyte Gigant_Hammer_Plus : 1;
      ubyte Devil_Finger : 1;
      ubyte Kongo : 1;
      ubyte Executioner : 1;
      ubyte Mjolnir : 1;
      ubyte Fatal_Crush : 1;
      ubyte Saint_Axe : 1;
      ubyte Splash_Star : 1;
      ubyte Hammer : 1;
      ubyte Toy_Hammer : 1;
      ubyte Axe : 1;
      ubyte Lollipop : 1;
      ubyte  : 1; // dummy_540
      ubyte  : 1; // dummy_541
      ubyte  : 1; // dummy_542
      ubyte  : 1; // dummy_543
      ubyte  : 1; // dummy_544
      ubyte  : 1; // dummy_545
      ubyte  : 1; // dummy_546
      ubyte  : 1; // dummy_547
      ubyte  : 1; // dummy_548
      ubyte  : 1; // dummy_549
      ubyte  : 1; // dummy_550
      ubyte  : 1; // dummy_551
      ubyte  : 1; // dummy_552
      ubyte  : 1; // dummy_553
      ubyte  : 1; // dummy_554
      ubyte  : 1; // dummy_555
      ubyte  : 1; // dummy_556
      ubyte  : 1; // dummy_557
      ubyte  : 1; // dummy_558
      ubyte  : 1; // dummy_559
   } forge_AxesHammers;
   struct {
      ubyte Rod : 1;
      ubyte Amethyst_Rod : 1;
      ubyte Aquamarine_Rod : 1;
      ubyte Friendly_Rod : 1;
      ubyte Love_Love_Rod : 1;
      ubyte Staff : 1;
      ubyte Emerald_Rod : 1;
      ubyte Silver_Staff : 1;
      ubyte Flare_Staff : 1;
      ubyte Ruby_Rod : 1;
      ubyte Sapphire_Rod : 1;
      ubyte Earth_Staff : 1;
      ubyte Lightning_Wand : 1;
      ubyte Ice_Staff : 1;
      ubyte Diamond_Rod : 1;
      ubyte Wizards_Staff : 1;
      ubyte Mages_Staff : 1;
      ubyte Shooting_Star_Staff : 1;
      ubyte Hell_Branch : 1;
      ubyte Crimson_Staff : 1;
      ubyte Bubble_Staff : 1;
      ubyte Gaia_Rod : 1;
      ubyte Cyclone_Rod : 1;
      ubyte Storm_Wand : 1;
      ubyte Rune_Staff : 1;
      ubyte Mages_Staff_Plus : 1;
      ubyte Magic_Broom : 1;
      ubyte Magic_Shot : 1;
      ubyte Hell_Curse : 1;
      ubyte Algernon : 1;
      ubyte Sorcerers_Wand : 1;
      ubyte Basket : 1;
      ubyte Golden_Turnip_Staff : 1;
      ubyte Sweet_Potato_Staff : 1;
      ubyte Elvish_Harp : 1;
      ubyte Syringe : 1;
   } forge_Staves;
   struct {
      ubyte Short_Dagger : 1;
      ubyte Steel_Edge : 1;
      ubyte Frost_Edge : 1;
      ubyte Twin_Leeks : 1;
      ubyte Iron_Edge : 1;
      ubyte Thief_Knife : 1;
      ubyte Wind_Edge : 1;
      ubyte Gorgeous_Lx : 1;
      ubyte Steel_Katana : 1;
      ubyte Twin_Blade : 1;
      ubyte Rampage : 1;
      ubyte Salamander : 1;
      ubyte Platinum_Edge : 1;
      ubyte Sonic_Dagger : 1;
      ubyte Chaos_Edge : 1;
      ubyte Desert_Wind : 1;
      ubyte Broken_Wall : 1;
      ubyte Force_Divide : 1;
      ubyte Heart_Fire : 1;
      ubyte Orcus_Sword : 1;
      ubyte Deep_Blizzard : 1;
      ubyte Dark_Invitation : 1;
      ubyte Priest_Saber : 1;
      ubyte Efreet : 1;
      ubyte Dragoon_Claw : 1;
      ubyte Emerald_Edge : 1;
      ubyte Rune_Edge : 1;
      ubyte Earnest_Edge : 1;
      ubyte Twin_Justice : 1;
      ubyte Double_Scratch : 1;
      ubyte Acutorimass : 1;
   } forge_DualBlades;
   struct {
      ubyte Leather_Gloves : 1;
      ubyte Brass_Knuckles : 1;
      ubyte Kote : 1;
      ubyte Gloves : 1;
      ubyte Bear_Claws : 1;
      ubyte Fists_of_the_Earth : 1;
      ubyte Fists_of_Fire : 1;
      ubyte Fists_of_Water : 1;
      ubyte Dragon_Claws : 1;
      ubyte Fists_of_Dark : 1;
      ubyte Fists_of_Wind : 1;
      ubyte Fists_of_Light : 1;
      ubyte Cat_Punch : 1;
      ubyte Animal_Puppets : 1;
      ubyte Ironleaf_Fists : 1;
      ubyte Caestus : 1;
      ubyte Golem_Punch : 1;
      ubyte Hand_of_God : 1;
      ubyte Bazal_Katar : 1;
      ubyte Fenrir : 1;
   } forge_Fists;
} RECIP <size=188>;
 typedef struct {
   ubyte    : 5;
   ubyte season : 2 <read=ReadBMonth, write=WriteBMonth, comment="Spring = 0, Winter = 3">;
   ubyte day : 5 <read=ReadBDay, write=WriteBDay>;
   ubyte    : 4;
} BDAY <read=GetBDay>;
 typedef struct {
   long  level;
   long  exp;
} SKILL <read=ReadSkillVal>;
 typedef struct {
   SPELLID  spellID : 10;  // 10 bits spell ID
   ubyte isActive : 1;  // 1 bit spell exists?
   ubyte level : 5 <comment="Level - 1 (0-9)">;
} SPELL <read=ReadSpell, size=2>;
 typedef struct {
   ITEMID   itemID : 11;
   ubyte amount : 5 <comment="Item stack size (for spells: level)">;
   short isCrafted;
   if( (isCrafted > 0) || ( (itemID >= 985) && (itemID < 1020) ) ) { // crafted or fish
      ubyte  iLevel;
      ubyte  UnknownA;
      if (isCrafted > 0) {
         ubyte  iQuality;
         ushort UnknownB;
         ushort   : 2;
         ushort iRarity : 8;
         ubyte  UnknownC;
         ITEMID inheritedItem;
      }
      else {
         ushort   UnknownB;
         ushort   fishSize <comment="in mm">;
      }
   }
   else {
      ubyte iLevels[9] <comment="Descending order, Level - 1 (0-9)">;
   }
 } ITEM <read=ReadItem, size=28, optimize=false>;
 // An object on a farm
typedef struct {
   CROPID   crop;
   ubyte    UnknownA : 2 <hidden=true>;
   ushort   cropLevel : 12 <read=ReadCropLvl, write=WriteCropLvl, comment="Always rounded down">;
   ushort   sizeBonus : 10 <read=ReadCropSize, write=WriteCropSize,comment="Range -2 to 2">;
   uint     growthProgress : 17 <read=ReadCropGrowth, write=WriteCropGrowth, comment="Max. 511; measured in days assuming normal growth">;
   ushort   additionalCrops : 12 <read=ReadCropNum, write=WriteCropNum, comment="Range -7 to 7">;
   ubyte    isWatered : 1;
   ubyte    UnknownB : 2 <hidden=true>;
   ubyte    health;
   ushort   coordX : 11 <comment="'Square' length is 32">;
   ushort   coordY : 10 <comment="'Square' length is 32">;
   ubyte    levelChanged : 1 <comment="CropLv changed by soil? (turns number blue)">;
   ubyte    UnknownC : 1 <hidden=true>;
   ubyte    playerMade : 1 <comment="(Not sure) Player created this?">;
} CROP <size=12, name=ReadCropName, read=ReadCropValue, comment=ReadCropComment>;
 // An interactable object (storage boxes etc.)
typedef struct {
   ROOM     room : 15;
   ushort   UnknownA :1 ;
   OBJID    object <comment="unsure">;
   ushort   coordX <comment="'Square' length is 32">;
   ushort   coordY <comment="'Square' length is 32">;
} OBJ <size=8, name=ReadObjName, read=ReadObjValue>;
 typedef struct {
   local int i;
   for( i = 0; i < 15; i ++ )
      ITEM  item;
} EQPAGE <optimize=true>;
 typedef struct {
   local int i;
   for( i = 0; i < 15; i ++ )
      SPELL spell;
} SPLPAGE <optimize=true>;
 typedef struct {
   ITEM  carried;
   ITEM  weapon;
   ITEM  shield;
   ITEM  accessory;
   ITEM  head;
   ITEM  boots;
   struct {
      ITEM  spell_X1;
      ITEM  spell_Y1;
      ITEM  spell_X2;
      ITEM  spell_Y2;
   } spells;
   ITEM  armor;
} EQUIPINV <size=308>;
 typedef struct {
   local int i;
   for( i = 0; i < 4; i ++ )
      EQPAGE  page;
} BACKPACK <size=1680, optimize=true>;
 typedef struct {
   local int i;
   for( i = 0; i < 2; i ++ )
      SPLPAGE  page;
} SPELLINV <size=60, optimize=true>;
 typedef struct {
   local int i;
   for( i = 0; i < 66; i ++ )
      EQPAGE  page;
} STORAGE <size=27720, optimize=true>;
 typedef struct {
   local int i;
   for( i = 0; i < 66; i ++ )
      EQPAGE  page;
} FRIDGE <size=27720, optimize=true>;
 typedef struct {
   local int i;
   for( i = 0; i < 6; i ++ )
      SPLPAGE  page;
} LIBRARY <size=180, optimize=true>;
 typedef struct {
   local int i;
   for( i = 0; i < 20; i ++ )
      EQPAGE  page;
} SHIPBOX <size=8400, optimize=true>;
 typedef struct {
   local int i;
   for( i = 0; i < 1; i ++ )
      EQPAGE  page;
} SHOPBOX <size=420, optimize=true>;
 typedef struct {
   local int i;
   for( i = 0; i < 8; i ++ )
      EQPAGE  page;
} WPNBOX <size=3360, optimize=true>;
 typedef struct {
   local int i;
   for( i = 0; i < 10; i ++ )
      EQPAGE  page;
} TOOLBOX <size=4200, optimize=true>;
 typedef struct {
   local int i;
   for( i = 0; i < 8; i ++ )
      EQPAGE  page;
} WARDROBE <size=3360, optimize=true>;
 typedef struct {
   ITEM  weapon;
   ITEM  shield;
   ITEM  accessory;
   ITEM  armor;
   ITEM  head;
   ITEM  boots;
   ITEM  UnkA;
   ITEM  UnkB;
   ITEM  UnkC;
} NPCINV <size=252>;
 typedef struct {
   long     curHP;
   long     modHP;
   ushort   curRP;
   ushort   modRP;
   short    modStr;
   ushort   UnknownStr;
   short    modInt;
   ushort   UnknownInt;
   short    modVit;
   ushort   UnknownVit;
   ushort   level;
   ushort   UnknownB;
   long     exp;
   ushort   UnknownC;
   COST     costume;
} CHARSTAT <size=100>;
 typedef struct {
   local int i;
   for( i = 0; i < 20; i ++ )
      CHARSTAT monster <name=ReadMonNameB>;
} BARNSTAT <optimize=true>;
 typedef struct ( ubyte bytelen, ubyte hasSign, float factor ){
   local ubyte bytelen = bytelen;
   local ubyte hasSign = hasSign;
   local float factor = factor; 
   ulong value : bytelen;
} FSTAT;
 typedef struct {
   ushort tmpSpeed : 11 <read=GetTmpSpeed, write=SetTmpSpeed, comment="Range 0 to 8">;
   ushort tmpNumber : 11 <read=GetTmpNumber, write=SetTmpNumber, comment="Range -4 to 4">;
   ushort tmpQuality : 10 <read=GetTmpQuality, write=SetTmpQuality, comment="Range -2 to 2">;
    ushort tmpSize : 10 <read=GetTmpSize, write=SetTmpSize, comment="Range -2 to 2">;
   ushort defense : 6 <comment="Range 0 to 63">;
   ubyte  HPc <comment="Range 0 to 255">;
   ubyte  UnknownA : 8;
    ubyte  UnknownB : 4;
   ubyte  numberA : 4 <read=GetNumber, write=SetNumber, comment="Range 1 to 16.99">;
   ubyte  qualityA : 4 <read=GetQuality, write=SetQuality, comment="Range 1 to 16.99">;
   ubyte  sizeA : 4 <read=GetSize, write=SetSize, comment="Range 1 to 16.99">;
   ubyte  overallB <read=GetOverall, write=SetOverall, comment="Range 1 to 16.99">;
   ubyte  speedB <read=GetSpeed, write=SetSpeed, comment="Range 1 to 16.99">;
    ubyte  numberB <read=GetNumber, write=SetNumber, comment="Range 1 to 16.99">;
   ubyte  qualityB <read=GetQuality, write=SetQuality, comment="Range 1 to 16.99">;
   ubyte  sizeB <read=GetSize, write=SetSize, comment="Range 1 to 16.99">;
   ubyte  overallA : 4 <read=GetOverall, write=SetOverall, comment="Range 1 to 16.99">;
   ubyte  speedA : 4 <read=GetSpeed, write=SetSpeed, comment="Range 1 to 16.99">;
} SOIL <size=16, read=ReadSoil, comment=CommentSoil>;
  typedef struct ( byte amnt ){
   local int j;
   for( j = 0; j < amnt; j ++ )
      SOIL  soilpatch;
} FROW;
 typedef struct ( byte cols, byte rows )
{
   local int i;
   for( i = 0; i < rows; i ++ )
      FROW  fieldRow ( cols );
   if( (cols * rows) < 18 ) {
      i = cols * rows;
      struct {
         for( i; i < 18; i ++ )
            SOIL  soilpatch;
      } dummyPatches <hidden=true>;
   }
} FARM;
 typedef struct {
   long     FP;
   uint     Flags[2];
   ushort   ID <comment="maybe?">;
   struct {
      ROOM     location;
      ushort   coordX;
      ushort   coordY;
   } pos;
} VILSTAT <size=44, comment=ReadVillagerLocation>;
 typedef struct {
   char     name[19];
   ubyte    slotID;
   uint     type;
   ushort   FP;
} MONSTAT <name=ReadMonName, size=36>;
 // Highest level shipped for flowers/crops
typedef struct {
   ubyte Unknown[19];
   ubyte Strawberry_lv;
   ubyte Cabbage_lv;
   ubyte PinkTurnip_lv;
   ubyte Onion_lv;
   ubyte Toyherb_lv;
   ubyte MoondropFlower_lv;
   ubyte CherryGrass_lv;
   ubyte LampGrass_lv;
   ubyte EmeryFlower_lv;
   ubyte BlueCrystal_lv;
   ubyte GoldenCabbage_lv;
   ubyte PinkMelon_lv;
   ubyte Pumpkin_lv;
   ubyte Cucumber_lv;
   ubyte Corn_lv;
   ubyte Tomato_lv;
   ubyte Eggplant_lv;
   ubyte Pineapple_lv;
   ubyte PinkCat_lv;
   ubyte Ironleaf_lv;
   ubyte FourLeafClover_lv;
   ubyte Fireflower_lv;
   ubyte GreenCrystal_lv;
   ubyte GoldenPumpkin_lv;
   ubyte Yam_lv;
   ubyte Potato_lv;
   ubyte Carrot_lv;
   ubyte GreenPepper_lv;
   ubyte Spinach_lv;
   ubyte CharmBlue_lv;
   ubyte AutumnGrass_lv;
   ubyte PomPomGrass_lv;
   ubyte RedCrystal_lv;
   ubyte GoldenPotato_lv;
   ubyte Turnip_lv;
   ubyte Radish_lv;
   ubyte Leek_lv;
   ubyte BokChoy_lv;
   ubyte NoelGrass_lv;
   ubyte WhiteCrystal_lv;
   ubyte GoldenTurnip_lv;
   ubyte HotHotFruit_lv;
   ubyte Fodder_lv;
   ubyte AppleTree_lv;
   ubyte OrangeTree_lv;
   ubyte GrapeTree_lv;
   ubyte TwinkleTree_lv;
   ubyte DungeonFlower_lv;
   ubyte SwordFlower_lv;
   ubyte ShieldFlower_lv;
} SHIPL;
 // Money earned via items shipped
typedef struct {
   local int i;
   for( i = 0; i < 1106; i ++ )
      ulong item : 30 <name=ReadShippedName>;
} SHIPT;
 // FSize for shipped fish
typedef struct {
   int   MasuTrout;
   int   Squid;
   int   Taimen;
   int   Sardine;
   int   Char;
   int   Chub;
   int   GlitterSnapper;
   int   Skipjack;
   int   Turbot;
   int   Gibelio;
   int   Salmon;
   int   Mackerel;
   int   Needlefish;
   int   Pike;
   int   Sunsquid;
   int   Shrimp;
   int   Snapper;
   int   ThrobbySnapper;
   int   RainbowTrout;
   int   Flounder;
   int   Blowfish;
   int   Yellowtail;
   int   CrucianCarp;
   int   Tuna;
   int   Girella;
   int   FallFlounder;
   int   CherrySalmon;
   int   LampSquid;
   int   Lobster;
   int   PondSmelt;
   int   SandFlounder;
   int   Rockfish;
} SHIPF <size=132>;
 // Flags whether an item was shipped or not
typedef struct {
   local int i;
   for( i = 0; i < 1108; i ++ )
      BFLAG item(i) <name=ReadItemBitName>;
} SHIPB <size=139>;
 // Flags whether an item was picked up / in player possession?
typedef struct {
   local int i;
   for( i = 0; i < 1108; i ++ )
      BFLAG item(i) <name=ReadItemBitName>;
} PICKB <size=139>;
 //-----------------------------------
// Define main structures
 typedef struct {
   uint     CRC32<format=hex>;
   ubyte    UnknownA[1];
   DIFF     difficulty <comment="RF4S: Extra HELL flag @ 0x1EA3B">;
   ubyte    UnknownB[6];
   uint     clock_Minutes;
   uint     clock_Hours;
   uint     day;
   MONTH    month;
   uint     UnknownC[4];
   struct {
      ROOM     room <read=ReadRoom>;
      ushort   CoordX <comment="counts from left of screen">;
      ushort   CoordY <comment="counts from top of screen">;
   } playerLocation ;
   ubyte    UnknownD[4];
   GENDER   gender;
   ubyte    wateringCanCharges <comment="max. = 20?">;
   uint     UnknownE;
   struct {
      uint  lumber;
      uint  stone;
      uint  compost;
      uint  fodder;
   } materials;
   uint     money;
   uint     UnknownF;
} HEADER <size=84>;
 typedef struct {
   CHARSTAT player;
   CHARSTAT villager[27];
   BARNSTAT monsterbarn[10];
} BTLSTATS;
 typedef struct {
   struct {
      SKILL shortSword;
      SKILL longSword;
      SKILL spear;
      SKILL axeHammer;
      SKILL dualBlades;
      SKILL fists;
   } Weapons;
   struct {
      SKILL fire;
      SKILL water;
      SKILL earth;
      SKILL wind;
      SKILL light;
      SKILL dark;
      SKILL love;
   } Magic;
   struct {
      SKILL farming;
      SKILL logging;
      SKILL mining;
      SKILL fishing;
   } Farming;
   struct {
      SKILL cooking;
      SKILL forging;
      SKILL chemistry;
      SKILL crafting;
   } Crafting;
   struct {
      SKILL searching;
      SKILL walking;
      SKILL sleeping;
      SKILL eating;
   } Adventure;
   struct {
      SKILL defense;
      SKILL resPoison;
      SKILL resSeal;
      SKILL resParalysis;
      SKILL resSleep;
      SKILL resFatigue;
      SKILL resCold;
      SKILL resKnockout;
   } Defense;
   struct {
      SKILL bathing;
      SKILL taming;
      SKILL throwing;
      SKILL leadership;
      SKILL bartering;
   } Other;
   SKILL Unknown[2] <hidden=true>;
} SKILLS;
 typedef struct {
   EQUIPINV equipment;
   BACKPACK backpack;
   SPELLINV spellpack;
   FRIDGE   fridge;
   STORAGE  storage;
   WPNBOX   weaponbox;
   WARDROBE wardrobe;
   TOOLBOX  toolbox;
   SHIPBOX  shippingbox;
   SHOPBOX  shopbox;
   LIBRARY  bookshelf;
} ITEMS;
 typedef struct {
   local int i;
   for( i = 0; i < 76; i ++ )
      CROP  fieldObject;
} FOBJ;
 typedef struct {
   local int i;
   for( i = 0; i < 67; i ++ )
      OBJ   object;
} WOBJ <size=536>;
 typedef struct {
   struct {
      FOBJ  mainFarm <comment="X 79-431 | Y 176-336 (field squares)">;
      FOBJ  secondFarm <comment="">;
      FOBJ  thirdFarm <comment="">;
      FOBJ  fourthFarm <comment="">;
      FOBJ  fifthFarm <comment="">;
      FOBJ  springFarm <comment="">;
      FOBJ  summerFarm <comment="">;
      FOBJ  autumnFarm <comment="">;
      FOBJ  winterFarm <comment="">;
   } farmObjects;
   struct {
      FARM  mainFarm ( 6,3 ) <comment="First and central plot.">;
      FARM  secondFarm ( 6,3 ) <comment="Bottom-left plot.">;
      FARM  thirdFarm ( 6,3 ) <comment="Bottom-right plot.">;
      FARM  fourthFarm ( 6,3 ) <comment="">;
      FARM  fifthFarm ( 6,3 ) <comment="">;
      FARM  springFarm ( 2,4 ) <comment="">;
      FARM  summerFarm ( 2,2 ) <comment="">;
      FARM  autumnFarm ( 3,3 ) <comment="Farm is 2x3 - 3rd (rightmost) column in each row is dummied out.">;
      FARM  winterFarm ( 4,3 ) <comment="">;
   } fields <comment="Fields start top-left, count going right and down.">;
} FARMS <size=10800>;
 typedef struct {
   local int i;
   struct {
      for( i = 0; i < 20; i ++ )
         MONSTAT  monster;
   } monsterbarn[10] <size=720, optimize=false>;
   UNKNWN   Unknown <size=368, hidden=true>;
   struct {
      VILSTAT  Vishnal;
      VILSTAT  Clorica;
      VILSTAT  Volkanon;
      VILSTAT  Forte;
      VILSTAT  Kiel;
      VILSTAT  Bado;
      VILSTAT  Margaret;
      VILSTAT  Dylas;
      VILSTAT  Arthur;
      VILSTAT  Porcoline;
      VILSTAT  XiaoPai;
      VILSTAT  LinFa;
      VILSTAT  Amber;
      VILSTAT  Illuminata;
      VILSTAT  Doug;
      VILSTAT  Blossom;
      VILSTAT  Dolce;
      VILSTAT  Jones;
      VILSTAT  Nancy;
      VILSTAT  Leon;
      VILSTAT  Ventuswill;
      VILSTAT  Son;
      VILSTAT  Daughter;
   } villagers;
} OSTATS;
 typedef struct {
   NPCINV   DummyA;
   NPCINV   Vishnal;
   NPCINV   Clorica;
   NPCINV   Volkanon;
   NPCINV   Forte;
   NPCINV   Kiel;
   NPCINV   Bado;
   NPCINV   Margaret;
   NPCINV   Dylas;
   NPCINV   Arthur;
   NPCINV   Porcoline;
   NPCINV   XiaoPai;
   NPCINV   LinFa;
   NPCINV   Amber;
   NPCINV   Illuminata;
   NPCINV   Doug;
   NPCINV   Blossom;
   NPCINV   Dolce;
   NPCINV   Jones;
   NPCINV   Nancy;
   NPCINV   Leon;
   NPCINV   Ventuswill;
   NPCINV   Son;
   NPCINV   Daughter;
   NPCINV   Barrett;
   NPCINV   Raven;
   NPCINV   DummyB;
} NPCEQ;
 typedef struct {
   ulong    princessPoints <comment="Max 99999">;
   ulong    tourists;
   ubyte    Unknown <hidden=true>;
   ubyte    monstersSlainToday <comment="First 10 monsters give PP">;
   ubyte    UnknownA[4] <hidden=true>;
    ubyte       : 5;
   ubyte    bDisableTownEvents : 1;
   ubyte       : 2;
    ubyte       : 3;
   ubyte    bDisableExpGain : 1;
   ubyte    bDisableSkillGain : 1;
   ubyte    bSeeMonsterLevels : 1;
   ubyte    bSeeMonsterHP : 1;
    ulong    UnknownB[3] <hidden=true>;
    ubyte    monsterLevelIncrease <comment="# of times the monster level was increased">;
   ubyte    UnknownC[7] <hidden=true>;
    struct {
   ulong       : 1;
   ulong    bFestBeanToss :1;
   ulong       : 1;
   ulong    bFestDeFluff : 1;
   ulong    bFestTurnip : 1;
   ulong    bFestTurnipFlurry : 1;
   ulong    bFestQuizContest : 1;
   ulong       : 1;
    ulong    bFestFishingFrenzy : 1;
   ulong       : 1;
   ulong    bFestSquidCatch : 1;
   ulong       : 1;
   ulong    bFestSpringHarvest : 1;
   ulong       : 2;
   ulong    bFestWinterHarvest : 1;
    ulong    bFestCooking : 1;
   ulong       : 7;
    ulong       : 1;
   ulong    bFestChristmas : 1;
   ulong       : 6;
   } festivalFlags;
    ubyte    UnknownD[4] <hidden=true>;
   ulong    festivalsOrdered <hidden=true, comment="Ordered once, not currently ordered">;
   MODEL    appearanceChange;
} MISC;
 //--------------------------------------------
// Custom functions 
 // Read out pseudo-float soil values
string ReadFieldStat( uint fval, ubyte bitlength, float factor, ubyte hasSign, ubyte round ) {
   local string s;
   local double value, div;
   local uint temp = fval;
   local ubyte bLen = bitlength;
   local ubyte neg;
    //Printf( "Raw value: %d, Hex: 0x%04X \nValue's bit length: %d, Factor: %f (0x%08X) \n", temp, temp, bLen, factor, factor);
    if (factor) {
      temp <<= (32 - bLen);
       if (hasSign) {
        if ( temp & 0x80000000 )
          neg = 1;
        //else Printf( "Value is positive! \n");
        temp <<= 1;
        bLen -= 1;
        if( neg )
          //Printf( "Value is negative! Before: 0x%08X, after: 0x%08X \n", temp, ~temp + 1 );
          temp = ~temp;
      }
       temp >>= (32 - bLen);
      //Printf( "Value shifted RIGHT to the end by %d ( 16 - bitLength %d )! Now: %u, Hex: 0x%04X \n", ( 16 - bLen ), bLen, temp, temp);
       // Get maximum bit value and divide by factor ( max. variable value)
      // Get max bit value +1 if variable doesn't reach max value
      div = 1 << bLen;
      if( round )
         div -= 1;
       if( neg )
         div /= -factor;
      else
         div /= factor;
       // divide integer by value to get pseudo-"float"
      // Printf("temp: %d, div: %lf, result: %lf \n", temp, div, value / div );
      value = temp / div;
       //Printf( "Divided value by %d , now: %.18f, \n", temp, value);
       SPrintf( s, "%f", value );
    }
   else s = "No float!";
   // Put the var value into a buffer string via SPrintf
   //SPrintf( s, "Val: %d (0x%04X)", temp, temp );
   return s;
}
 // Write back pseudo-float soil values
string WriteFieldStat( double fval, ubyte bitlength, float factor, ubyte hasSign, ubyte round ) {
   local string s;
   local uint mask = -1;
   local uint temp;
   local ubyte bLen = bitlength;
    if (hasSign) 
      bLen -= 1;
    // Shift FFFF mask left / right by # of unused bits (effectively, 16 - [number of bits in original value]) 
   // to get the bit length of our value in active bits
   mask <<= ( 32 - bLen );
   //Printf( "Shift mask LEFT by %d ( 32 - bitLength %d ), now: %u, Hex: 0x%08X \n", (32 - bLen), bLen, mask, mask);
   mask >>= ( 32 - bLen );
   //Printf( "Shift mask RIGHT by %d ( 32 - bitLength %d ), now: %u, Hex: 0x%08X \n", (32 - bLen), bLen, mask, mask);
    if( round )
      SPrintf( s, "%.lf", Abs( fval ) / factor * mask );  // round value by putting into a string at 0 precision
   else
      SPrintf( s, "%.lf", Abs( fval ) / factor * (mask + 1) );  // round value by putting into a string at 0 precision
    SScanf( s, "%u", temp); // read value back out as integer
   if ( temp > mask)
      temp = mask; // limit to maximum value
   //Printf( "Temp value: %u (0x%08X) \n", temp, temp);
    if ( hasSign && ( fval < 0 )) {
      //Printf( "Value is signed and input %lf is negative! \n", fval );
      temp <<= ( 32 - (bLen+1) );
      temp = ~ temp;
      temp >>= ( 32 - (bLen+1) );
      //Printf( "Value now: %u (0x%04X) \n", temp, temp );
   }
   SPrintf( s, "%u", temp);
   return s;
}
 // Read & write values on a bitflag struct, so you don't have to
// open it to modify / check
string ReadBitflag( BFLAG &flag ) {
   local string s;
   SPrintf( s, "%d", flag.flag );
   return s;
}
 void WriteBitflag( BFLAG &flag, string s ) {
   local ubyte input;
   SScanf( s, "%d", input );
   if( input )
      flag.flag = 1;
   else
      flag.flag = 0;
}
 // Display soil health, defense and overall quality at a quick glance
string ReadSoil( SOIL &soil ) {
   local string s;
   local float val;
   SScanf( GetOverall( soil.overallA ), "%f", val);
   // Put the var value into a buffer string via SPrintf
   SPrintf( s, "%dHP %d Def %.2f Ovrl", soil.HPc, soil.defense, val );
   return s;
}
 // Display unknown soil values as comment for quick comparison
string CommentSoil( SOIL &soil ) {
   local string s;
   SPrintf( s, "%u | %u", soil.UnknownA, soil.UnknownB );
   return s;
}
 // Display skill level and exp
string ReadSkillVal( SKILL &skl ) {
   local string s;
   // Put the var value into a buffer string via SPrintf
   SPrintf( s, "%d ( %d )", skl.level, skl.exp );
   return s;
}
 // Display spell name
string ReadSpell( SPELL &spl ) {
   local string s = "";
   if( spl.isActive != 0 )
      s = EnumToString( spl.spellID );
   return s;
}
 // Display item name
string ReadItem( ITEM &item ) {
   local string s = "";
   s = EnumToString( item.itemID );
   return s;
}
 // Display location
string ReadRoom( ROOM &room ) {
   local string s = "";
   s = EnumToString( room );
   if( s == "" )
      SPrintf(s, "%d", room);
   else
      s = StrDel( s, Strlen( s ) - 4, 4 ); // Remove the _XXX from name
   return s;
}
 // Display villager location on otherStats
string ReadVillagerLocation( VILSTAT &vil ) {
   local string s = "";
   s = EnumToString( vil.pos.location );
   if( s == "" )
      SPrintf(s, "%d", room);
   else
      s = StrDel( s, Strlen( s ) - 4, 4 ); // Remove the _XXX from name
   SPrintf( s, "%s (%d,%d)", s, vil.pos.coordX, vil.pos.coordY );
   return s;
}
 // Display field object's name
string ReadCropName( CROP &object ) {
   local string s = "";
   local float lvl;
   s = EnumToString( object.crop );
   if( s == "" )
      SPrintf(s, "%d", object.crop);
   else
      s = StrDel( s, Strlen( s ) - 2, 2 ); // Remove the _C from name
      if( object.crop > 37 ) {
         SScanf( ReadCropLvl( object.cropLevel ), "%f", lvl);
         SPrintf( s, "%s LV%.f", s, Floor( lvl ) );
      }
   return s;
}
 // Display field object's coords
string ReadCropValue( CROP &object ) {
   local string s = "";
   local float grw;
   if( object.crop > 0 )
      SPrintf( s, "[%d|%d] %dHP", object.coordX, object.coordY, object.health );
   if( object.growthProgress > 0 ) {
      SScanf( ReadCropGrowth( object.growthProgress ), "%f", grw);
      SPrintf( s, "%s %.1fD", s, grw);
   }
   return s;
}
 // Display field object's unknown values for quick comparison
string ReadCropComment( CROP &object ) {
   local string s = "";
   if( object.crop > 0 ) {
      SPrintf( s, "%X | %X | %X", object.UnknownA, object.UnknownB, object.UnknownC );
      if( object.levelChanged )
         s += " [Lv]";
      if( object.playerMade )
         s += " [P]";
   }
   return s;
}
 // Display world object's name
string ReadObjName( OBJ &object ) {
   local string s = "";
   s = EnumToString( object.object );
   if( s == "" )
      SPrintf(s, "%d", object.object);
   else
      s = StrDel( s, Strlen( s ) - 4, 4 ); // Remove the _XX from name
   return s;
}
 // Display world object's coords
string ReadObjValue( OBJ &object ) {
   local string s = "";
   s = EnumToString( object.room );
   if( s == "" )
      SPrintf(s, "%d", object.room);
   else
      s = StrDel( s, Strlen( s ) - 4, 4 ); // Remove the _XXX from name
   SPrintf( s, "%s (%d,%d) | %d", s, object.coordX, object.coordY, object.UnknownA );
   return s;
}
 // Lmao holy shit this is a terrible way to find the array index of a value
// Convert float to string to integer why do i have to do this
// But it works for now, i hope
string ReadShippedName( ulong &item ) {
   local string s;
   local double val;
   local ITEMID i;
   val = ( startof(item) - startof( parentof(item).item[0] ) );
   val = val * 8 / 30;
   SPrintf( s, "%.lf", val ); // why can't i just round nearest instead...
   SScanf( s, "%d", i);   
   return EnumToString( i );
}
 // Fetch monster name from otherstats for display in battlestats
// Lmao this jank-ass array index gathering again, kill me
// And i need TWO OF THEM this time
string ReadMonNameB( CHARSTAT &monster ) {
   local string s;
   local int idx1, idx2;
   idx1 = ( startof(monster) - startof( parentof(monster).monster[0] ) );
   idx2 = (idx1 % 2000) / 100;
   idx1 /= 0x7D0;
   if( exists( otherStats.monsterbarn[idx1].monster[idx2] ) )
      // SPrintf(s, "%d", otherStats.monsterbarn[idx1].monster[idx2].FP);
      s += otherStats.monsterbarn[idx1].monster[idx2].name;
   else
      s = "monster";
   if( s != "" )
      return s;
   else
      return "(none)";
}
 // Lets try something else to read bitflag item names
string ReadItemBitName( BFLAG &flag ) {
   local ITEMID i = flag.idx;
   return EnumToString( i );
}
 // Read and display monster names in otherstats
string ReadMonName( MONSTAT &stats ) {
   local string s;
   s += stats.name;
   if( s != "" )
      return s;
   else
      return "(none)";
}
 // Reverse bit order in a byte
ubyte ReverseBits( ubyte bits ) {
   bits = (bits & 0xF0) >> 4 | (bits & 0x0F) << 4;
   bits = (bits & 0xCC) >> 2 | (bits & 0x33) << 2;
   bits = (bits & 0xAA) >> 1 | (bits & 0x55) << 1;
   return bits;
}
 // Read & write reverse bit-order birthday, which is a PITA
string ReadBDay( ubyte &val )
{
   local string s;
   local ubyte bits = ReverseBits( val ) >> 3;
   SPrintf( s, "%d", bits );
   return s;
}
 void WriteBDay( ubyte &val, string s ) {
   local ubyte bits;
   SScanf( s, "%d", bits );
   val = ReverseBits( bits ) >> 3;
}
 // Read & write reverse bit-order birth month, still a PITA
string ReadBMonth( ubyte &val )
{
   local string s;
   local ubyte bits = ReverseBits( val ) >> 6;
   SPrintf( s, "%d", bits );
   return s;
}
 void WriteBMonth( ubyte &val, string s ) {
   local ubyte bits;
   SScanf( s, "%d", bits );
   val = ReverseBits( bits ) >> 6;
}
 // Get a nice display string for BDay
string GetBDay( BDAY &bday ) {
   local string s;
   local ubyte day = ReverseBits( bday.day ) >> 3;
   local ubyte season = ReverseBits( bday.season ) >> 6;
   local MONTH month = season;
   SPrintf( s, "%d. %s", day, EnumToString(month) );
   return s;
}
 // Display & modify crop level
string ReadCropLvl( ushort &lvl ) {
   local string s;
   local float f1;
   SScanf( ReadFieldStat( lvl, 12, 16, 0, 0 ) , "%f", f1 );
   SPrintf(s, "%f", f1 + 1 );
   return s;
}
 void WriteCropLvl( ushort &lvl, string s ) {
   local double value;
   SScanf( s, "%lf", value );
   value = Max( Abs(value) - 1, 0 ); // minimum 0
   SScanf( WriteFieldStat( value, 12, 16, 0, 0 ), "%u", lvl );
}
 // Display & modify crop size bonus
string ReadCropSize( ushort &size ) {
   return ReadFieldStat( size, 10, 2, 1, 0 );
}
 void WriteCropSize( ushort &size, string s ) {
   local double value;
   SScanf( s, "%lf", value );
   SScanf( WriteFieldStat( value, 10, 2, 1, 0 ), "%u", size );
}
 // Display & modify crop growth
string ReadCropGrowth( uint &grw ) {
   return ReadFieldStat( grw, 17, 512, 0, 0 );
}
 void WriteCropGrowth( uint &grw, string s ) {
   local double value;
   SScanf( s, "%lf", value );
   SScanf( WriteFieldStat( value, 17, 512, 0, 0 ), "%u", grw );
}
 // Display & modify additional crop yield
string ReadCropNum( ushort &num ) {
   return ReadFieldStat( num, 12, 8, 1, 0 );
}
 void WriteCropNum( ushort &num, string s ) {
   local double value;
   SScanf( s, "%lf", value );
   SScanf( WriteFieldStat( value, 12, 8, 1, 0 ), "%u", num );
}
 // All the silly helper functions for soil values
string GetTmpSpeed( uint16 &fval ) {
   return ReadFieldStat( fval, 11, 8, 0, 1 );
}
 void SetTmpSpeed( uint16 &fval, string s ) {
   local double value;
   SScanf( s, "%lf", value );
   SScanf( WriteFieldStat( value, 11, 8, 0, 1 ), "%u", fval );
}
 string GetTmpNumber( uint16 &fval ) {
   return ReadFieldStat( fval, 11, 4, 1, 1 );
}
 void SetTmpNumber( uint16 &fval, string s ) {
   local double value;
   SScanf( s, "%lf", value );
   SScanf( WriteFieldStat( value, 11, 4, 1, 1 ), "%u", fval );
}
 string GetTmpQuality( uint16 &fval ) {
   return ReadFieldStat( fval, 10, 2, 1, 1 );
}
 void SetTmpQuality( uint16 &fval, string s ) {
   local double value;
   SScanf( s, "%lf", value );
   SScanf( WriteFieldStat( value, 10, 2, 1, 1 ), "%u", fval );
}
 string GetTmpSize( uint16 &fval ) {
   return ReadFieldStat( fval, 10, 2, 1, 1 );
}
 void SetTmpSize( uint16 &fval, string s ) {
   local double value;
   SScanf( s, "%lf", value );
   SScanf( WriteFieldStat( value, 10, 2, 1, 1 ), "%u", fval );
}
 string GetOverall( ubyte &fval ) {
   local string s;
   local float f1;
   local uint value = parentof(fval).overallA;
   value = (value << 8) + parentof(fval).overallB;
   SScanf( ReadFieldStat( value, 12, 16, 0, 0 ) , "%f", f1 );
   SPrintf(s, "%f", f1 + 1 );
   return s;
}
 void SetOverall( ubyte &fval, string s ) {
   local float f1, f2;
   local double value;
   SScanf( s, "%lf", value );
   value = Abs( value );
   //Printf( "Received input string %s, read out value: %lf \n", s, value);
   f1 = Max( Floor(value) - 1, 0 ); // minimum 0
   f2 = Max( value - f1 - 1, 0 ); // minimum 0
   //Printf( "Split values into: ValA %f, ValB %f \n", f1, f2);
   SScanf( WriteFieldStat( f1, 4, 15, 0, 0 ) , "%u", parentof(fval).overallA );
   SScanf( WriteFieldStat( f2, 8, 1, 0, 0 ) , "%u", parentof(fval).overallB );
}
 string GetSpeed( ubyte &fval ) {
   local string s;
   local float f1;
   local uint value = parentof(fval).speedA;
   value = (value << 8) + parentof(fval).speedB;
   SScanf( ReadFieldStat( value, 12, 16, 0, 0 ) , "%f", f1 );
   SPrintf(s, "%f", f1 + 1 );
   return s;
}
 void SetSpeed( ubyte &fval, string s ) {
   local float f1, f2;
   local double value;
   SScanf( s, "%lf", value );
   value = Abs( value );
   f1 = Max( Floor(value) - 1, 0 ); // minimum 0
   f2 = Max( value - f1 - 1, 0 ); // minimum 0
   SScanf( WriteFieldStat( f1, 4, 15, 0, 0 ) , "%u", parentof(fval).speedA );
   SScanf( WriteFieldStat( f2, 8, 1, 0, 0 ) , "%u", parentof(fval).speedB );
}
 string GetSize( ubyte &fval ) {
   local string s;
   local float f1;
   local uint value = parentof(fval).sizeA;
   value = (value << 8) + parentof(fval).sizeB;
   SScanf( ReadFieldStat( value, 12, 16, 0, 0 ) , "%f", f1 );
   SPrintf(s, "%f", f1 + 1 );
   return s;
}
 void SetSize( ubyte &fval, string s ) {
   local float f1, f2;
   local double value;
   SScanf( s, "%lf", value );
   value = Abs( value );
   f1 = Max( Floor(value) - 1, 0 ); // minimum 0
   f2 = Max( value - f1 - 1, 0 ); // minimum 0
   SScanf( WriteFieldStat( f1, 4, 15, 0, 0 ) , "%u", parentof(fval).sizeA );
   SScanf( WriteFieldStat( f2, 8, 1, 0, 0 ) , "%u", parentof(fval).sizeB );
}
 string GetQuality( ubyte &fval ) {
   local string s;
   local float f1;
   local uint value = parentof(fval).qualityA;
   value = (value << 8) + parentof(fval).qualityB;
   SScanf( ReadFieldStat( value, 12, 16, 0, 0 ) , "%f", f1 );
   SPrintf(s, "%f", f1 + 1 );
   return s;
}
 void SetQuality( ubyte &fval, string s ) {
   local float f1, f2;
   local double value;
   SScanf( s, "%lf", value );
   value = Abs( value );
   f1 = Max( Floor(value) - 1, 0 ); // minimum 0
   f2 = Max( value - f1 - 1, 0 ); // minimum 0
   SScanf( WriteFieldStat( f1, 4, 15, 0, 0 ) , "%u", parentof(fval).qualityA );
   SScanf( WriteFieldStat( f2, 8, 1, 0, 0 ) , "%u", parentof(fval).qualityB );
}
 string GetNumber( ubyte &fval ) {
   local string s;
   local float f1;
   local uint value = parentof(fval).numberA;
   value = (value << 8) + parentof(fval).numberB;
   SScanf( ReadFieldStat( value, 12, 16, 0, 0 ) , "%f", f1 );
   SPrintf(s, "%f", f1 + 1 );
   return s;
}
 void SetNumber( ubyte &fval, string s ) {
   local float f1, f2;
   local double value;
   SScanf( s, "%lf", value );
   value = Abs( value );
   f1 = Max( Floor(value) - 1, 0 ); // minimum 0
   f2 = Max( value - f1 - 1, 0 ); // minimum 0
   SScanf( WriteFieldStat( f1, 4, 15, 0, 0 ) , "%u", parentof(fval).numberA );
   SScanf( WriteFieldStat( f2, 8, 1, 0, 0 ) , "%u", parentof(fval).numberB );
}
 //-----------------------------------
// Define file itself
 BitfieldDisablePadding();
 HEADER   header;
BTLSTATS battleStats;
SKILLS   skills <comment="Level ( Exp )">;
ITEMS    items;
MAPB     mapBits;
UNKNWN   UnknownStruct <size=1331, comment="Visited rooms / locations?">;
FARMS    farms;
UNKNWN   UnknownStruct2 <size=1024, comment="Overworld items? location(?) + CropID in pairs">;
UNKNWN   UnknownStruct3 <size=220, comment="Some kind of flag field?">;
OSTATS   otherStats;
UNKNWN   UnknownStruct4 <size=1576>;
if ( FileSize() > 0x22400 )  // RF4S
   struct { char  name[25]; } names_Unknown[10]; 
else  // RF4
   struct { char  name[25]; } names_Unknown[5]; 
SHIPL    maxLevelsShipped <size=80, comment="Highest level shipped for seeds/produce">;
if ( FileSize() == 0x22400 ) // RF4
   ubyte UnknownPadding <hidden=true>;
WOBJ     worldObjects <comment="Unknown amount">;
UNKNWN   UnknownStruct6 <size=650, comment="Hellstruct with reverse bit order values">;
RECIP    unlockedRecipes;
NPCEQ    npcInventories;
uint     seedRNG <comment="Seed for random things like harvest report">;
UNKNWN   UnknownStruct7 <size=116>;
if ( FileSize() > 0x22400 )  // RF4S
   MISC     misc <size=80>;
else  // RF4
   MISC     misc <size=76>;
SHIPT    shippedTotal <comment="Total money earned per item shipped">;
SHIPF    shippedFishSize;
PICKB    hasOwnedItem <comment="Check ItemID; whether player has picked up / owned an item">;
UNKNWN   UnknownStruct8 <size=525>;
uint     Unknowns[2] <hidden=true>;
SHIPB    shippedFlags <comment="Whether played has ever shipped this item">;
 // Extremely jank birthday, but at least it's editable
if ( FileSize() > 0x22400 )  // RF4S
   FSeek(0x1E8DE);  
else  // RF4
   FSeek(0x1E862);
BDAY     playerBirthday;
 

Comments