public void LoadLevelData() { LevelData = new List <LevelData>(); // dump all single player save slots var rawLevelData = MemoryUtils.DumpSaveSlots(Gecko, 0, SaveSlotsAddress, 768); // read data from slots var j = 0; while (j < rawLevelData.Length) { var levelNumber = rawLevelData[j]; // check if an empty save slot if (levelNumber == uint.MaxValue) { break; } var clearState = rawLevelData[j + 1]; var scroll = Convert.ToBoolean(rawLevelData[j + 2]); // add to the list LevelData.Add(new LevelData(levelNumber, clearState, scroll)); // move to next slot j += 3; } }
public void ReloadWeapons() { _weapons.Clear(); EquippedWeapon = Gecko.peek((uint)GearAddress.EquippedWeapon + Offset); var weaponData = MemoryUtils.DumpSaveSlots(Gecko, Offset, (uint)GearAddress.Weapons, 5120); // read data from slots var j = 0; while (j < weaponData.Length) { var id = weaponData[j]; // check if an empty save slot if (id.Equals(uint.MaxValue)) { break; } var number = weaponData[j + 1]; var sub = (SubWeapon)weaponData[j + 2]; var special = (SpecialWeapon)weaponData[j + 3]; var turfInked = weaponData[j + 4]; var timestamp = weaponData[j + 7]; var newFlag = weaponData[j + 8] == 0x0; AddWeapon(new Weapon(id, number, sub, special, turfInked, timestamp, newFlag)); // move to next slot j += 10; } }