Hud.Enable_Cacher();
class PS3
{
public static uint[] ProcessIDs;
public static uint ProcessID;
public static void Connect()
{
PS3TMAPI.InitTargetComms();
PS3TMAPI.Connect(0, null);
}
public static void TurnOFF()
{
PS3TMAPI.PowerOff(0, true);
}
public static void Attach()
{
PS3TMAPI.GetProcessList(0, out ProcessIDs);
ulong uProcess = ProcessIDs[0];
ProcessID = Convert.ToUInt32(uProcess);
PS3TMAPI.ProcessAttach(0, PS3TMAPI.UnitType.PPU, ProcessID);
PS3TMAPI.ProcessContinue(0, ProcessID);
}
public static void SetMemory(uint Address, byte[] Bytes)
{
PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Address, Bytes);
}
public static byte[] ReadMemory(uint addr, int lenght)
{
byte[] Get = new byte[lenght];
PS3.GetMemory(addr, ref Get);
return Get;
}
public static void GetMemory(uint Address, ref byte[] bytes)
{
PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Address, ref bytes);
}
public static string ReadString(uint addr)
{
byte[] Reader = new byte[1]; uint i = 0;
List<byte> StringBuilder = new List<byte>();
while (true)
{
PS3.GetMemory(addr + i, ref Reader);
if (Reader[0] == 0x00)
break;
else
StringBuilder.Add(Reader[0]);
i++;
}
System.Text.UTF8Encoding Encode = new System.Text.UTF8Encoding();
return Encode.GetString(StringBuilder.ToArray());
}
public static void WriteFloat(uint addr, float f)
{
byte[] Float = BitConverter.GetBytes(f);
Array.Reverse(Float);
PS3.SetMemory(addr, Float);
}
public static float ReadFloat(uint addr, int lenght)
{
byte[] F = PS3.ReadMemory(addr, 4);
if (BitConverter.IsLittleEndian)
{
Array.Reverse(F);
}
float myFloat = BitConverter.ToSingle(F, 0);
return myFloat;
}
}
class Conversions
{
public static byte[] ReverseBytes(byte[] input)
{
Array.Reverse(input);
return input;
}
public static byte[] RandomizeRGBA()
{
byte[] RGBA = new byte[4];
Random randomize = new Random();
RGBA[0] = BitConverter.GetBytes(randomize.Next(0, 255))[0];
RGBA[1] = BitConverter.GetBytes(randomize.Next(0, 255))[0];
RGBA[2] = BitConverter.GetBytes(randomize.Next(0, 255))[0];
RGBA[3] = BitConverter.GetBytes(randomize.Next(0, 255))[0];
return RGBA;
}
}
public static class Hud
{
public static class HElems
{
public static uint
ELEM = 0xD55F88,
FIX_ELEM = 0x3314F,
FPS = 0x363148,
xOffset = 0x04,
yOffset = 0x08,
textOffset = 0x40,
fontOffset = 0x24,
fontSizeOffset = 0x14,
colorOffset = 0x30,
relativeOffset = 0x28,
widthOffset = 0x44,
heightOffset = 0x48,
shaderOffset = 0x4C,
GlowColor = 0x8C,
clientOffset = 0x10,
alignOffset = 0x2C;
}
public static void Enable_Cacher()
{
SetMemory(0x2100000, new byte[32]);
SetMemory(0x2105000, new byte[32]);
SetMemory(Hud.HElems.FPS, new byte[] { 0x3C, 0x60, 0x02, 0x10, 0x80, 0x63, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x40, 0x82, 0x00, 0x08, 0x48, 0x00, 0x00, 0x88, 0x3C, 0x60, 0x02, 0x10, 0x4B, 0xCC, 0xFF, 0xA9, 0x3C, 0x80, 0x02, 0x10, 0x90, 0x64, 0x50, 0x00, 0x38, 0x60, 0x00, 0x00, 0x90, 0x64, 0x00, 0x00, 0x48, 0x00, 0x00, 0x6C });
SetMemory(HElems.FIX_ELEM, new byte[] { 0x01 });
}
public static void ActivateIndex(int index, int type)
{
byte[] Typ = BitConverter.GetBytes(type);
Array.Reverse(Typ);
PS3.SetMemory(Hud.HElems.ELEM + 0xb8 * (uint)index, Typ);
}
public static byte[] ToHexFloat(float Axis)
{
byte[] bytes = BitConverter.GetBytes(Axis);
Array.Reverse(bytes);
return bytes;
}
public static byte[] RGBA(decimal R, decimal G, decimal B, decimal A)
{
byte[] RGBA = new byte[4];
byte[] RVal = BitConverter.GetBytes(Convert.ToInt32(R));
byte[] GVal = BitConverter.GetBytes(Convert.ToInt32(G));
byte[] BVal = BitConverter.GetBytes(Convert.ToInt32(B));
byte[] AVal = BitConverter.GetBytes(Convert.ToInt32(A));
RGBA[0] = RVal[0];
RGBA[1] = GVal[0];
RGBA[2] = BVal[0];
RGBA[3] = AVal[0];
return RGBA;
}
public static void StoreIcon(uint elemIndex, decimal client, int shader, int width, int height, float x, float y, uint align, float sort, int r, int g, int b, int a)
{
uint elem = HElems.ELEM + ((elemIndex) * 0xb
;
byte[] ClientID = ReverseBytes(BitConverter.GetBytes(Convert.ToInt32(client)));
PS3.SetMemory(elem, new byte[0xB8]);
PS3.SetMemory(elem, new byte[] { 0x00, 0x00, 0x00, 0x04 });
PS3.SetMemory(elem + HElems.shaderOffset, ReverseBytes(BitConverter.GetBytes(shader)));
PS3.SetMemory(elem + HElems.heightOffset, ReverseBytes(BitConverter.GetBytes(height)));
PS3.SetMemory(elem + HElems.widthOffset, ReverseBytes(BitConverter.GetBytes(width)));
PS3.SetMemory(elem + HElems.alignOffset, ReverseBytes(BitConverter.GetBytes(0)));
PS3.SetMemory(elem + HElems.relativeOffset, ReverseBytes(BitConverter.GetBytes(0)));
PS3.SetMemory(elem + HElems.xOffset, ToHexFloat(x));
PS3.SetMemory(elem + HElems.yOffset, ToHexFloat(y));
PS3.SetMemory(elem + HElems.colorOffset, RGBA(r, g, b, a));
PS3.SetMemory(elem + HElems.clientOffset, ClientID);
}
public static byte[] CacheString(string Text)
{
PS3.SetMemory(HElems.FIX_ELEM, new byte[] { 0x01 }); //must patch this to make it work
PS3.SetMemory(0x2100000, Encoding.ASCII.GetBytes(Text + "\0"));
byte[] result = new byte[4];
Thread.Sleep(10);
PS3.GetMemory(0x2105000, ref result);
return result;
}
public static void StoreTextElem(uint elemIndex, int client, string Text, int font, float fontScale, int x, int y, uint align, float sort, int r, int g, int b, int a, int r1, int g1, int b1, int a1)
{
uint elem = HElems.ELEM + ((elemIndex) * 0xB
;
byte[] ClientID = ReverseBytes(BitConverter.GetBytes(client));
PS3.SetMemory(elem, new byte[0xB4]);
PS3.SetMemory(elem, new byte[] { 0x00, 0x00, 0x00, 0x01 });
PS3.SetMemory(elem + HElems.textOffset, CacheString(Text));
PS3.SetMemory(elem + HElems.fontOffset, ReverseBytes(BitConverter.GetBytes(Convert.ToInt32(font))));
PS3.SetMemory(elem + HElems.alignOffset, ReverseBytes(BitConverter.GetBytes(Convert.ToInt32(0))));
PS3.SetMemory(elem + HElems.relativeOffset, ReverseBytes(BitConverter.GetBytes(0)));
PS3.SetMemory(elem + HElems.fontSizeOffset, ToHexFloat(fontScale));
PS3.SetMemory(elem + HElems.xOffset, ToHexFloat(x));
PS3.SetMemory(elem + HElems.yOffset, ToHexFloat(y));
PS3.SetMemory(elem + HElems.colorOffset, RGBA(r, g, b, a));
PS3.SetMemory(elem + HElems.GlowColor, RGBA(r1, g1, b1, a1));
PS3.SetMemory(elem + HElems.clientOffset, ClientID);
}
public static byte[] UInt32ToBytes(uint input)
{
byte[] bytes = BitConverter.GetBytes(input);
Array.Reverse(bytes);
return bytes;
}
public static byte[] ReverseBytes(byte[] inArray)
{
Array.Reverse(inArray);
return inArray;
}
public static byte[] uintBytes(uint input)
{
byte[] data = BitConverter.GetBytes(input);
Array.Reverse(data);
return data;
}
}
Hud.StoreIcon((uint)10, 0, (int)12, (int)267, (int)500, (int)210, (int)0, 0, 0, (int)1, (int)1, (int)1, (int)200);
Copyright © 2026, NextGenUpdate.
All Rights Reserved.