public static void DumpGen1()
        {
            var r = Resources.encounter_red;
            var b = Resources.encounter_blue;
            var y = Resources.encounter_yellow;

            var rbf = Resources.encounter_rb_f;
            var yf  = Resources.encounter_yellow_f;

            var red_gw   = EncounterArea1.GetArray1GrassWater(r, 248);
            var blu_gw   = EncounterArea1.GetArray1GrassWater(b, 248);
            var ylw_gw   = EncounterArea1.GetArray1GrassWater(y, 249);
            var rb_fish  = EncounterArea1.GetArray1Fishing(rbf, 33);
            var ylw_fish = EncounterArea1.GetArray1FishingYellow(yf);

            foreach (var area in red_gw)
            {
                area.Location = DumpUtil.RBYLocIndexes[area.Location];
            }
            foreach (var area in blu_gw)
            {
                area.Location = DumpUtil.RBYLocIndexes[area.Location];
            }
            foreach (var area in ylw_gw)
            {
                area.Location = DumpUtil.RBYLocIndexes[area.Location];
            }

            for (var i = 0; i < rb_fish.Length; i++)
            {
                rb_fish[i].Location = DumpUtil.RBFishIndexes[i];
            }
            rb_fish = rb_fish.Where(z => z.Location != 0).ToArray(); // remove duplicate locations (cerulean gym same as cerulean city)
            for (var i = 0; i < ylw_fish.Length; i++)
            {
                ylw_fish[i].Location = DumpUtil.YFishIndexes[i];
            }

            var rb = red_gw.Concat(rb_fish).OrderBy(z => z.Location).ThenBy(z => z.Type).ToArray();
            var bb = blu_gw.Concat(rb_fish).OrderBy(z => z.Location).ThenBy(z => z.Type).ToArray();
            var yb = ylw_gw.Concat(ylw_fish).OrderBy(z => z.Location).ThenBy(z => z.Type).ToArray();

            Write(rb, "encounter_red.pkl");
            Write(bb, "encounter_blue.pkl");
            Write(yb, "encounter_yellow.pkl");

            var jp_bu = DumpGen1JPBU();

            Write(rb.Concat(bb).Concat(yb), jp_bu, "encounter_blue_jp.pkl");
        }
        public static IOrderedEnumerable <EncounterArea1> DumpGen1JPBU()
        {
            var b = Resources.encounter_blue_jp;

            var rbf = Resources.encounter_blue_jp_f;

            var blu_gw  = EncounterArea1.GetArray1GrassWater(b, 248);
            var rb_fish = EncounterArea1.GetArray1Fishing(rbf, 33);

            foreach (var area in blu_gw)
            {
                area.Location = DumpUtil.RBYLocIndexes[area.Location];
            }

            for (var i = 0; i < rb_fish.Length; i++)
            {
                rb_fish[i].Location = DumpUtil.RBFishIndexes[i];
            }
            rb_fish = rb_fish.Where(z => z.Location != 0).ToArray(); // remove duplicate locations (cerulean gym same as cerulean city)

            return(blu_gw.Concat(rb_fish).OrderBy(z => z.Location).ThenBy(z => z.Type));
        }