public Killzone1PS3(IntPtr ipc) : base(ipc) { var baseChain = DerefChain.CreateDerefChain(ipc, BaseAddress, 0x78, 0x220, 0xD8); m_vert = baseChain.Chain(0x14c); m_hor = baseChain.Chain(0x31C).Chain(0x78); }
public Killzone2PS3(IntPtr ipc) : base(ipc) { var baseChain = DerefChain.CreateDerefChain(ipc, BaseAddress, 0x0); m_vert = baseChain.Chain(0x80).Chain(0x5c).Chain(0x11c).Chain(0x78); m_hor = baseChain.Chain(0x78).Chain(0x0).Chain(0x68).Chain(0xc).Chain(0x90); }
public NierPS3(IntPtr ipc) : base(ipc) { var baseChain = DerefChain.CreateDerefChain(ipc, BaseAddress, 0x7c); m_hor = baseChain.Chain(0x1a8); m_vert = baseChain.Chain(0x1c4); }
public Persona5PS3(IntPtr ipc) : base(ipc) { var baseChain = DerefChain.CreateDerefChain(ipc, BaseAddress, 0x34, 0xD8, 0x34); m_hor = baseChain.Chain(0x170); m_vert = baseChain.Chain(0x174); }
public Killzone3PS3(IntPtr ipc, string version) : base(ipc) { var baseChain = version switch { "01.00" => DerefChain.CreateDerefChain(ipc, 0x1587880 + 0x760, 0x38, 0x0, 0x68), "01.14" => DerefChain.CreateDerefChain(ipc, 0x15fcf80 + 0x770, 0x40, 0x68), _ => throw new NotImplementedException($"{nameof(Killzone3PS3)} with version '{version}' not implemented"), }; m_vert = baseChain.Chain(0x150).Chain(0xA0); m_hor = baseChain.Chain(0xFC).Chain(0x14).Chain(0xB0); }
public override void UpdateCamera(int diffX, int diffY) { if (DerefChain.VerifyChains(m_hor, m_vert)) { m_camera.HorY = IPCUtils.ReadFloat(m_ipc, (uint)m_hor.Value); m_camera.HorX = IPCUtils.ReadFloat(m_ipc, (uint)(m_hor.Value + 4)); m_camera.Vert = IPCUtils.ReadFloat(m_ipc, (uint)m_vert.Value); m_camera.Update(diffX * SensModifier, -diffY * SensModifier); IPCUtils.WriteFloat(m_ipc, (uint)m_hor.Value, m_camera.HorY); IPCUtils.WriteFloat(m_ipc, (uint)(m_hor.Value + 4), m_camera.HorX); IPCUtils.WriteFloat(m_ipc, (uint)m_vert.Value, m_camera.Vert); } }
public override void UpdateCamera(int diffX, int diffY) { if (DerefChain.VerifyChains(m_hor, m_vert)) { // the values are in degrees, so they need a deg -> rad conversion m_camera.Hor = (float)(IPCUtils.ReadFloat(m_ipc, (uint)m_hor.Value) * (Math.PI / 180)); m_camera.Vert = (float)(IPCUtils.ReadFloat(m_ipc, (uint)m_vert.Value) * (Math.PI / 180)); // the vertical value needs to be clamped, these values seemed reasonable m_camera.Update(-diffX * SensModifier, diffY * SensModifier); m_camera.Vert = (float)Math.Clamp(m_camera.Vert, -60f * (Math.PI / 180), 75f * (Math.PI / 180)); // the new values are in radians, so they need a rad -> deg conversion IPCUtils.WriteFloat(m_ipc, (uint)m_hor.Value, (float)(m_camera.Hor * (180 / Math.PI))); IPCUtils.WriteFloat(m_ipc, (uint)m_vert.Value, (float)(m_camera.Vert * (180 / Math.PI))); } }
public Xillia1(IntPtr ipc) : base(ipc) { m_addr = DerefChain.CreateDerefChain(ipc, BaseAddress, 0x78); }