
-Enstone
-iMCSx
-FeverDEX
-RTE-Make
-Raz0rMind
-Bad Luck Brian
it has 2 submenus and 10 options in each submenu and 8 other options in the main menu, but its very simple to add submenus and more options, but im not going to do everything for you, i made this so people can learn
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using PS3Lib;
using System.Globalization;
using System.Reflection;
namespace FeverDEX_v2
{
public partial class MainForm : Form
{
public CCAPI PS3 = new CCAPI();
public MainForm()
{
InitializeComponent();
}
public bool Key_Down(int client, int buttonIndex) // Local Buttons Monitoring Function
{
if (buttonIndex < 0) return false;
byte[] key = new byte[4];
PS3.GetMemory((uint)(0xF0A74C + (buttonIndex << 4) + (client * 0x112
), key);
Array.Reverse(key);
return BitConverter.ToInt32(key, 0) == 1;
}
int ButtonUp = 0x14;
int ButtonDown = 0x15;
int ButtonLeft = 0x16;
int ButtonRight = 0x17;
int ButtonO = 0x02;
int ButtonX = 0x01;
int ButtonSquare = 0x03;
int ButtonTriangle = 0x04;
int StartButton = 0x0E;
int SelectButton = 0x0F;
int ButtonR1 = 0x06;
int ButtonR2 = 0x13;
int ButtonR3 = 0x11;
int ButtonL1 = 0x05;
int ButtonL2 = 0x12;
int ButtonL3 = 0x10;
public class Hudelem //Hud Elements
{
public static uint
type = 0x6D,
xOffset = 0x00,
yOffset = 0x04,
textOffset = 0x62,
sort = 32,
fontSizeOffset = 0x0C,
clientOffset = 0x7C,
colorOffset = 0x18,
GlowColor = 0x44,
widthOffset = 0x58,
heightOffset = 0x5A,
shaderOffset = 0x74,
Material = 0x71;
}
public byte[] SetText(string Text)
{
byte[] clean = new byte[250];
PS3.SetMemory(0x2000000, clean);
PS3.SetMemory(0x2000000, Encoding.ASCII.GetBytes(Text + "\0"));
byte[] Patch = new byte[] { 0x48, 0x44, 0xB3, 0x1D, 0x3C, 0x60, 0x00, 0xD8,
0x80, 0x63, 0xBC, 0xD8, 0x2C, 0x03, 0x00, 0x00, 0x40, 0x82, 0x00, 0x7C, 0x3C, 0x60, 0x02, 0x00,
0x30, 0x63, 0x00, 0x00, 0x4B, 0xED, 0xE4, 0xED, 0x3c, 0x80, 0x02, 0x00, 0x90, 0x64, 0x50, 0x00,
0x48, 0x00, 0x00, 0x68, 0x4B, 0xFD, 0x80, 0x61 };
byte[] Unpatch = new byte[] { 0x48, 0x44, 0xB3, 0x1D, 0x3C, 0x60, 0x00,
0xD8, 0x80, 0x63, 0xBC, 0xD8, 0x2C, 0x03, 0x00, 0x00, 0x41, 0x82, 0x00, 0x7C, 0x3C, 0x60, 0x00,
0x39, 0x38, 0x80, 0x00, 0x00, 0x3B, 0xE3, 0x70, 0xE4, 0x63, 0x43, 0x00, 0x00, 0xC3, 0xFF, 0x00,
0x08, 0xFC, 0x20, 0xF8, 0x90, 0x4B, 0xFD, 0x80, 0x61 };
PS3.SetMemory(0X03976DC, Patch);
Thread.Sleep(15);
PS3.SetMemory(0X03976DC, Unpatch);
byte[] GetX = new byte[4];
PS3.GetMemory(0x2005000, GetX);
return GetX;
}
public byte[] uintBytes(uint input)
{
byte[] data = BitConverter.GetBytes(input);
Array.Reverse(data);
return data;
}
private class MenuItems
{
public static uint Shader = 0, ScrollBarBackGround = 1;
}
public byte[] ReverseBytes(byte[] inArray)
{
Array.Reverse(inArray);
return inArray;
}
public byte[] ToHexFloat(float Axis)
{
byte[] bytes = BitConverter.GetBytes(Axis);
Array.Reverse(bytes);
return bytes;
}
public 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 void StoreIcon1(int elemIndex, uint client, int shader, int width, int height, int x, int y, uint align, float sort, int r, int g, int b, int a)
{
byte[] Material_ = BitConverter.GetBytes(shader);
Array.Reverse(Material_);
byte[] Height_ = BitConverter.GetBytes(Convert.ToInt32(height));
Array.Resize(ref Height_, 2);
Array.Reverse(Height_);
byte[] width_ = BitConverter.GetBytes(Convert.ToInt32(width));
Array.Resize(ref width_, 2);
Array.Reverse(width_);
uint elem = 0x15D8400 + ((Convert.ToUInt32(elemIndex)) * 0x8
;
byte[] ClientID = ReverseBytes(BitConverter.GetBytes(client));
PS3.SetMemory(elem, new byte[0x88]);
PS3.SetMemory(elem + Hudelem.type, ReverseBytes(BitConverter.GetBytes(
));
PS3.SetMemory(elem + 0x79, new byte[] { 0xFF });
PS3.SetMemory(elem + 0xC, new byte[] { 0x3f, 0xc0 });
PS3.SetMemory(elem + Hudelem.Material, Material_);
PS3.SetMemory(elem + Hudelem.heightOffset, Height_);
PS3.SetMemory(elem + Hudelem.widthOffset, width_);
PS3.SetMemory(elem + Hudelem.textOffset + 4, ReverseBytes(BitConverter.GetBytes(sort)));
PS3.SetMemory(elem + Hudelem.xOffset, ToHexFloat(x));
PS3.SetMemory(elem + Hudelem.yOffset, ToHexFloat(y));
PS3.SetMemory(elem + Hudelem.colorOffset, RGBA(r, g, b, a));
PS3.SetMemory(elem + Hudelem.clientOffset, ClientID);
Thread.Sleep(20);
}
public void StoreTextElem1(int elemIndex, int client, string text, int font, int fontScale, int x, int y, uint align, int sort, int R, int G, int B, int a)
{
string setText = text + "\0";
byte[] TextIndex = SetText(setText);
uint elem = 0x15D8400 + ((Convert.ToUInt32(elemIndex)) * 0x8
;
byte[] ClientID = ReverseBytes(BitConverter.GetBytes(Convert.ToInt32(client)));
PS3.SetMemory(elem, new byte[0x88]);
PS3.SetMemory(elem + Hudelem.type, ReverseBytes(BitConverter.GetBytes(1)));
PS3.SetMemory(elem + 0x79, new byte[] { 0xFF });
PS3.SetMemory(elem + 0xC, new byte[] { 0x3f, 0xc0 });
PS3.SetMemory(elem + Hudelem.textOffset, TextIndex);
PS3.SetMemory(elem + Hudelem.fontSizeOffset, ReverseBytes(BitConverter.GetBytes(Convert.ToSingle(font))));
PS3.SetMemory(elem + Hudelem.xOffset, ToHexFloat(x));
PS3.SetMemory(elem + Hudelem.yOffset, ToHexFloat(y));
PS3.SetMemory(elem + Hudelem.colorOffset, RGBA(R, G, B, a));
PS3.SetMemory(elem + Hudelem.clientOffset, ClientID);
Thread.Sleep(20);
}
public void DestroyElem(int index)
{
uint elem = 0x15D8400 + ((Convert.ToUInt32(index)) * 0x8
;
PS3.SetMemory(elem, new byte[0x88]);
}
public void ChangeHudIcon(int index, int shader)
{
uint elem = 0x15D8400 + ((Convert.ToUInt32(index)) * 0x8
;
byte[] Material_ = BitConverter.GetBytes(shader);
Array.Reverse(Material_);
PS3.SetMemory(elem + Hudelem.Material, Material_);
}
public void ChangeHudColor(int index, int R, int G, int B, int a)
{
uint elem = 0x15D8400 + ((Convert.ToUInt32(index)) * 0x8
;
PS3.SetMemory(elem + Hudelem.colorOffset, RGBA(R, G, B, a));
}
public void iPrintLn(int ClientNum, string Text)
{
BO2.RPC.Call(0x349edc, 0, 0, "; \""+ Text + "\"");
}
public void iPrintLnBold(int ClientNum, string Text)
{
BO2.RPC.Call(0x349edc, 0, 0, "< \""+ Text + "\"");
}
public void Scrolling(int index, int OptionNum)
{
int StartY = 77;
uint elem = 0x15D8400 + ((Convert.ToUInt32(index)) * 0x8
;
int Y = StartY + (OptionNum*36);
PS3.SetMemory(elem + Hudelem.yOffset, ToHexFloat(Y));
}
void Button1Click(object sender, EventArgs e)
{
if (PS3.SUCCESS(PS3.ConnectTarget(textBox1.Text)))
{
PS3.Notify(CCAPI.NotifyIcon.PEN, "PS3 Connected");
}
else
{
MessageBox.Show("Cannot connect", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
void Button2Click(object sender, EventArgs e)
{
if(PS3.SUCCESS(PS3.AttachProcess()))
{
PS3.Notify(CCAPI.NotifyIcon.PROGRESS, "Menu Base Attached");
BO2.RPC.Init();
}
else
{
PS3.Notify(CCAPI.NotifyIcon.INFO, "Cannot Attach");
}
}
void Button3Click(object sender, EventArgs e)
{
Option = "Closed";
iPrintLn(Host, "^2Press [{+actionslot 1}] to open\n^0Made by FeverDEX\n^2Subscribe Youtube.com/JOHNDATGOONV2");
Menu.Start();
}
string Option;
int OptionNum;
int Host = 0;
void MenuTick(object sender, EventArgs e)
{
switch(Option )
{
case "Closed":
{
if(Key_Down(Host, ButtonUp))
{
StoreTextElem1(3, Host, "Base v1", 5, 1, 512, 10, 0, 0, 0, 50, 255, 255);
StoreIcon1(0, (uint)Host, 3, 200, 1000, 470, -50, 0, 0, 0, 0, 0, 190);
StoreIcon1(1, (uint)Host, 3, 200, 24, 470, 77, 0, 0, 255, 255, 255, 255);
StoreIcon1(2, (uint)Host, 3, 200, 2, 470, 68, 0, 0, 255, 255, 255, 255);
StoreIcon1(4, (uint)Host, 3, 3, 1000, 470, -50, 0, 0, 255, 255, 255, 255);
StoreIcon1(5, (uint)Host, 3, 3, 1000, 670, -50, 0, 0, 255, 255, 255, 255);
StoreTextElem1(6, Host, "Option 1\nOption 2\nOption 3\nOption 4\nOption 5\nOption 6\nOption 7\nOption 8\nOption 9\nOption 10", 3, 1, 528, 70, 0, 0, 0, 255, 0, 255);
Option = "Option 1";
break;
}
}
break;
case "Option 1":
if(Key_Down(Host, ButtonDown))
{
Option = "Option 2";
Scrolling(1, 1);
break;
}
if(Key_Down(Host, ButtonUp))
{
Option = "Option 10";
Scrolling(1, 9);
break;
}
if(Key_Down(Host, ButtonR3))
{
Option = "Closed";
DestroyElem(0);
DestroyElem(1);
DestroyElem(6);
DestroyElem(3);
DestroyElem(2);
DestroyElem(4);
DestroyElem(5);
break;
}
if(Key_Down(Host, ButtonX))
{
iPrintLn(Host, "Option ^21");
break;
}
break;
case "Option 2":
if(Key_Down(Host, ButtonDown))
{
Option = "Option 3";
Scrolling(1, 2);
break;
}
if(Key_Down(Host, ButtonUp))
{
Option = "Option 1";
Scrolling(1, 0);
break;
}
if(Key_Down(Host, ButtonR3))
{
Option = "Closed";
DestroyElem(0);
DestroyElem(1);
DestroyElem(6);
DestroyElem(3);
DestroyElem(2);
DestroyElem(4);
DestroyElem(5);
break;
}
if(Key_Down(Host, ButtonX))
{
iPrintLn(Host, "Option ^22");
break;
}
break;
case "Option 3":
if(Key_Down(Host, ButtonDown))
{
Option = "Option 4";
Scrolling(1, 3);
break;
}
if(Key_Down(Host, ButtonUp))
{
Option = "Option 2";
Scrolling(1, 1);
break;
}
if(Key_Down(Host, ButtonR3))
{
Option = "Closed";
DestroyElem(0);
DestroyElem(1);
DestroyElem(6);
DestroyElem(3);
DestroyElem(2);
DestroyElem(4);
DestroyElem(5);
break;
}
if(Key_Down(Host, ButtonX))
{
iPrintLn(Host, "Option ^23");
break;
}
break;
case "Option 4":
if(Key_Down(Host, ButtonDown))
{
Option = "Option 5";
Scrolling(1, 4);
break;
}
if(Key_Down(Host, ButtonUp))
{
Option = "Option 3";
Scrolling(1, 2);
break;
}
if(Key_Down(Host, ButtonR3))
{
Option = "Closed";
DestroyElem(0);
DestroyElem(1);
DestroyElem(6);
DestroyElem(3);
DestroyElem(2);
DestroyElem(4);
DestroyElem(5);
break;
}
if(Key_Down(Host, ButtonX))
{
iPrintLn(Host, "Option ^24");
break;
}
break;
case "Option 5":
if(Key_Down(Host, ButtonDown))
{
Option = "Option 6";
Scrolling(1, 5);
break;
}
if(Key_Down(Host, ButtonUp))
{
Option = "Option 4";
Scrolling(1, 3);
break;
}
if(Key_Down(Host, ButtonR3))
{
Option = "Closed";
DestroyElem(0);
DestroyElem(1);
DestroyElem(6);
DestroyElem(3);
DestroyElem(2);
DestroyElem(4);
DestroyElem(5);
break;
}
if(Key_Down(Host, ButtonX))
{
iPrintLn(Host, "Option ^25");
break;
}
break;
case "Option 6":
if(Key_Down(Host, ButtonDown))
{
Option = "Option 7";
Scrolling(1, 6);
break;
}
if(Key_Down(Host, ButtonUp))
{
Option = "Option 5";
Scrolling(1, 4);
break;
}
if(Key_Down(Host, ButtonR3))
{
Option = "Closed";
DestroyElem(0);
DestroyElem(1);
DestroyElem(6);
DestroyElem(3);
DestroyElem(2);
DestroyElem(4);
DestroyElem(5);
break;
}
if(Key_Down(Host, ButtonX))
{
iPrintLn(Host, "Option ^26");
break;
}
break;
case "Option 7":
if(Key_Down(Host, ButtonDown))
{
Option = "Option 8";
Scrolling(1, 7);
break;
}
if(Key_Down(Host, ButtonUp))
{
Option = "Option 6";
Scrolling(1, 5);
break;
}
if(Key_Down(Host, ButtonR3))
{
Option = "Closed";
DestroyElem(0);
DestroyElem(1);
DestroyElem(6);
DestroyElem(3);
DestroyElem(2);
DestroyElem(4);
DestroyElem(5);
break;
}
if(Key_Down(Host, ButtonX))
{
iPrintLn(Host, "Option ^27");
break;
}
break;
case "Option 8":
if(Key_Down(Host, ButtonDown))
{
Option = "Option 9";
Scrolling(1,
;
break;
}
if(Key_Down(Host, ButtonUp))
{
Option = "Option 7";
Scrolling(1, 6);
break;
}
if(Key_Down(Host, ButtonR3))
{
Option = "Closed";
DestroyElem(0);
DestroyElem(1);
DestroyElem(6);
DestroyElem(3);
DestroyElem(2);
DestroyElem(4);
DestroyElem(5);
break;
}
if(Key_Down(Host, ButtonX))
{
iPrintLn(Host, "Option ^28");
break;
}
break;
case "Option 9":
if(Key_Down(Host, ButtonDown))
{
Option = "Option 10";
Scrolling(1, 9);
break;
}
if(Key_Down(Host, ButtonUp))
{
Option = "Option 8";
Scrolling(1, 7);
break;
}
if(Key_Down(Host, ButtonR3))
{
Option = "Closed";
DestroyElem(0);
DestroyElem(1);
DestroyElem(6);
DestroyElem(3);
DestroyElem(2);
DestroyElem(4);
DestroyElem(5);
break;
}
if(Key_Down(Host, ButtonX))
{
iPrintLn(Host, "Option ^29");
break;
}
break;
case "Option 10":
if(Key_Down(Host, ButtonDown))
{
Option = "Option 1";
Scrolling(1, 0);
break;
}
if(Key_Down(Host, ButtonUp))
{
Option = "Option 9";
Scrolling(1,
;
break;
}
if(Key_Down(Host, ButtonR3))
{
Option = "Closed";
DestroyElem(0);
DestroyElem(1);
DestroyElem(6);
DestroyElem(3);
DestroyElem(2);
DestroyElem(4);
DestroyElem(5);
break;
}
if(Key_Down(Host, ButtonX))
{
iPrintLn(Host, "Option ^210");
break;
}
break;
}
}
void Button4Click(object sender, EventArgs e)
{
if(textBox2.Text.Length != 32)
{
MessageBox.Show("You need 32 Characters", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
PS3.SetConsoleID(textBox2.Text);
}
}
void MainFormLoad(object sender, EventArgs e)
{
MessageBox.Show("Thanks to:\n\n-Enstone\n-iMCSx\n-FeverDEX\n-RTE-Make\n-Raz0rMind\n-Bad Luck Brian", "Credits");
}
}
}
-Enstone
-iMCSx
-FeverDEX
-RTE-Make
-Raz0rMind
-Bad Luck Brian
it has 10 options and nothing more but its very simple to add submenus and more options, but im not going to do everything for you, i made this so people can learn

-Enstone
-iMCSx
-FeverDEX
-RTE-Make
-Raz0rMind
-Bad Luck Brian
it has 2 submenus and 10 options in each submenu and 8 other options in the main menu, but its very simple to add submenus and more options, but im not going to do everything for you, i made this so people can learn
), key);
. Of course it works for Client 0 because it is "ClientIndex * X" where X represents any number.. Any number multiplied by 0 is 0 (of course..) If someone could quote me with what the client interval should be or an update version of this (Not ButtonPressed because is doesn't detect DPAD presses) I would highly appreciate it.. :]
public int Call(uint func_address, params object[] parameters)
{
int num = parameters.Length;
uint num2 = 0u;
while ((ulong)num2 < (ulong)((long)num))
{
if (parameters[(int)((UIntPtr)num2)] is int)
{
byte[] bytes = BitConverter.GetBytes((int)parameters[(int)((UIntPtr)num2)]);
Array.Reverse(bytes);
PS3.SetMemory(268763144u + num2 * 4u, bytes);
}
else
{
if (parameters[(int)((UIntPtr)num2)] is uint)
{
byte[] bytes2 = BitConverter.GetBytes((uint)parameters[(int)((UIntPtr)num2)]);
Array.Reverse(bytes2);
PS3.SetMemory(268763144u + num2 * 4u, bytes2);
}
else
{
if (parameters[(int)((UIntPtr)num2)] is string)
{
byte[] bytes3 = Encoding.UTF8.GetBytes(Convert.ToString(parameters[(int)((UIntPtr)num2)]) + "\0");
PS3.SetMemory(268763180u + num2 * 336u, bytes3);
uint value = 268763180u + num2 * 336u;
byte[] bytes4 = BitConverter.GetBytes(value);
Array.Reverse(bytes4);
PS3.SetMemory(268763144u + num2 * 4u, bytes4);
}
}
}
num2 += 1u;
}
for (int i = 9 - num; i <= 9; i++)
{
PS3.SetMemory((uint)(268763144 + i * 4), new byte[4]);
}
byte[] bytes5 = BitConverter.GetBytes(func_address);
Array.Reverse(bytes5);
PS3.SetMemory(268763136u, bytes5);
Thread.Sleep(20);
byte[] memory = PS3.GetBytes(268763140u, 4);
Array.Reverse(memory);
return BitConverter.ToInt32(memory, 0);
}
Ghosts?
), key);
. Of course it works for Client 0 because it is "ClientIndex * X" where X represents any number.. Any number multiplied by 0 is 0 (of course..) If someone could quote me with what the client interval should be or an update version of this (Not ButtonPressed because is doesn't detect DPAD presses) I would highly appreciate it.. :]

-Enstone
-iMCSx
-FeverDEX
-RTE-Make
-Raz0rMind
-Bad Luck Brian
it has 2 submenus and 10 options in each submenu and 8 other options in the main menu, but its very simple to add submenus and more options, but im not going to do everything for you, i made this so people can learn
Copyright © 2026, NextGenUpdate.
All Rights Reserved.