private void findAddressOffset() { bool found = false; Int32 offset = 0x00000000; Int32 testAddr = 0x0010001C; string good = "280C"; while (!found) { string tester = BytesToHex(memory.ReadMemory(testAddr + offset, 2)); if (tester == "Service not started. Waiting for PCSX2") { break; } else if (tester == good) { found = true; } else { offset = offset + 0x10000000; } } ADDRESS_OFFSET = offset; }
public void UpdateMemory() { byte[] levelData = memory.ReadMemory(levelAddress + ADDRESS_OFFSET, 2); if (levelData[0] == 0 && Weapon != "Sword") { Weapon = "Sword"; } else if (levelData[0] == 1 && Weapon != "Shield") { Weapon = "Shield"; } else if (levelData[0] == 2 && Weapon != "Staff") { Weapon = "Staff"; } previousLevels[0] = previousLevels[1]; previousLevels[1] = previousLevels[2]; previousLevels[2] = Level; if (Level != levelData[1]) { Level = levelData[1]; } byte[] statsData = memory.ReadMemory(statsAddress + ADDRESS_OFFSET, 5); if (Strength != statsData[0]) { Strength = statsData[0]; } if (Magic != statsData[2]) { Magic = statsData[2]; } if (Defense != statsData[4]) { Defense = statsData[4]; } byte[] modelData = memory.ReadMemory(formAddress + ADDRESS_OFFSET, 1); form = modelData[0]; }
private void ReadReward(int address, int byteCount, List <Tuple <int, string> > rewards, int level) { int num = address + ADDRESS_OFFSET; byte[] reward = memory.ReadMemory(num, byteCount); int i = BitConverter.ToInt16(reward, 0); if (IsImportant(i, out string name)) { rewards.Add(new Tuple <int, string>(level, name)); } }
public void UpdateMemory() { byte[] worldData = memory.ReadMemory(worldAddress + ADDRESS_OFFSET, 9); worldNum = worldData[0]; roomNumber = worldData[1]; eventID1 = worldData[4]; eventID2 = worldData[6]; eventID3 = worldData[8]; string tempWorld; if (worldCodes.ContainsKey(worldNum)) { // simplify determining if in stt if (worldName == "SimulatedTwilightTown" && !(worldCodes[worldNum] == "HollowBastion" && roomNumber == 26)) { return; } tempWorld = worldCodes[worldNum]; } else { tempWorld = ""; } // Handle crit bonus start if (tempWorld == "TwilightTown" && roomNumber == 32 && eventID1 == 1 && eventID2 == 1 && eventID3 == 1) { worldName = "GoA"; } // Handle AS fights else if (tempWorld == "HollowBastion") { if (roomNumber == 26) { worldName = "GoA"; } else if (roomNumber == 32) { worldName = "HalloweenTown"; // Vexen } else if (roomNumber == 33 && eventID1 == 123) { worldName = "Agrabah"; // Lexaeus } else if (roomNumber == 33 && eventID1 == 129) { worldName = "SpaceParanoids"; // Larxene } else if (roomNumber == 34) { worldName = "OlympusColiseum"; // Zexion } else if (roomNumber == 38) { worldName = "DisneyCastle"; // Marluxia } else { worldName = "HollowBastion"; } } // Handle STT else if (tempWorld == "TwilightTown") { // probably need to track every save point for safety if ((roomNumber == 2 && eventID1 == 63) || (roomNumber == 21 && eventID1 == 7)) { worldName = "SimulatedTwilightTown"; } else { worldName = "TwilightTown"; } } // Handle Data fights else if (tempWorld == "TWTNW") { if (roomNumber == 10 && eventID1 == 108) { worldName = "LandofDragons"; // Xigbar } else if (roomNumber == 15 && eventID1 == 110) { worldName = "PrideLands"; // Saix } else if (roomNumber == 14 && eventID1 == 112) { worldName = "PortRoyal"; // Luxord } else if (roomNumber == 21 && eventID1 == 114) { worldName = "SimulatedTwilightTown"; // roxas } else { worldName = "TWTNW"; } } else { if (worldName != tempWorld) { worldName = tempWorld; } } }
public virtual byte[] UpdateMemory() { return(memory.ReadMemory(Address + ADDRESS_OFFSET, Bytes)); }