Post: Better RPC (FPS) Multiplayer by Jo-Milk
04-16-2015, 03:08 AM #1
-JM-
Space Ninja
(adsbygoogle = window.adsbygoogle || []).push({}); Hello guys I thought I'd give you this RPC cuz most of you don't have it and I hate choco RPC because it removes Fog so I release FPS RPC =D
here is to set the RPC
    
private void JM_RPC()
{
PS3.SetMemory(0x00466299, new byte[] { 0x9A });//RPC OFF
PS3.SetMemory(0x4667B4, new byte[] { 0x3F, 0x80, 0x10, 0x05, 0x81, 0x9C, 0x00, 0x48, 0x2C, 0x0C, 0x00, 0x00, 0x41, 0x82, 0x00, 0x64, 0x80, 0x7C, 0x00, 0x00, 0x80, 0x9C, 0x00, 0x04, 0x80, 0xBC, 0x00, 0x08, 0x80, 0xDC, 0x00, 0x0C, 0x80, 0xFC, 0x00, 0x10, 0x81, 0x1C, 0x00, 0x14, 0x81, 0x3C, 0x00, 0x18, 0x81, 0x5C, 0x00, 0x1C, 0x81, 0x7C, 0x00, 0x20, 0xC0, 0x3C, 0x00, 0x24, 0xC0, 0x5C, 0x00, 0x28, 0xC0, 0x7C, 0x00, 0x2C, 0xC0, 0x9C, 0x00, 0x30, 0xC0, 0xBC, 0x00, 0x34, 0xC0, 0xDC, 0x00, 0x38, 0xC0, 0xFC, 0x00, 0x3C, 0xC1, 0x1C, 0x00, 0x40, 0xC1, 0x3C, 0x00, 0x44, 0x7D, 0x89, 0x03, 0xA6, 0x4E, 0x80, 0x04, 0x21, 0x38, 0x80, 0x00, 0x00, 0x90, 0x9C, 0x00, 0x48, 0x90, 0x7C, 0x00, 0x4C, 0xD0, 0x3C, 0x00, 0x50, 0x48, 0x00, 0x00, 0x40 });//RPC CODE
PS3.SetMemory(0x10050000, new byte[0x2854]);//RPC arguments
PS3.SetMemory(0x00466299, new byte[] { 0x00 });//RPC ON
}

here is to call the RPC
    
public static Int32 Call(UInt32 address, params Object[] parameters)//this is VezahHFH MW3 Call function I used same place to store the arguments because I'm Lazy and I don't feel like making that function since I code in C++ but I might optimize this function
{
Int32 length = parameters.Length;
Int32 index = 0;
UInt32 count = 0;
UInt32 Strings = 0;
UInt32 Single = 0;
UInt32 Array = 0;
while (index < length)
{
if (parameters[index] is Int32)
{
WriteInt32(0x10050000 + (count * 4), (Int32)parameters[index]);
count++;
}
else if (parameters[index] is UInt32)
{
WriteUInt32(0x10050000 + (count * 4), (UInt32)parameters[index]);
count++;
}
else if (parameters[index] is Int16)
{
WriteInt16(0x10050000 + (count * 4), (Int16)parameters[index]);
count++;
}
else if (parameters[index] is UInt16)
{
WriteUInt16(0x10050000 + (count * 4), (UInt16)parameters[index]);
count++;
}
else if (parameters[index] is Byte)
{
WriteByte(0x10050000 + (count * 4), (Byte)parameters[index]);
count++;
} //Should work now Happy let me try
else
{
UInt32 pointer;
if (parameters[index] is String)
{
pointer = 0x10052000 + (Strings * 0x400);
WriteString(pointer, Convert.ToString(parameters[index]));
WriteUInt32(0x10050000 + (count * 4), pointer);
count++;
Strings++;
}
else if (parameters[index] is Single)
{
WriteSingle(0x10050024 + (Single * 4), (Single)parameters[index]);
Single++;
}
else if (parameters[index] is Single[])
{
Single[] Args = (Single[])parameters[index];
pointer = 0x10051000 + Array * 4;
WriteSingle(pointer, Args);
WriteUInt32(0x10050000 + count * 4, pointer);
count++;
Array += (UInt32)Args.Length;
}

}
index++;
}
WriteUInt32(0x10050048, address);
Thread.Sleep(20);
return ReadInt32(0x1005004c);
//or you could return a float pointer if the function that is called return one just check at the offset 0x10050050
}


FPS RPC
Credits
BadLuck Brian
Jo-Milk
VezahHFH
(adsbygoogle = window.adsbygoogle || []).push({});

The following 7 users say thank you to -JM- for this useful post:

Coffee Bean, HighModzz, iiiCenTurY, makeabce, NickBeHaxing, palombo2, Veneno
04-16-2015, 06:53 AM #2
Originally posted by JM
Hello guys I thought I'd give you this RPC cuz most of you don't have it and I hate choco RPC because it removes Fog so I release FPS RPC =D
here is to set the RPC
    
private void JM_RPC()
{
PS3.SetMemory(0x00466299, new byte[] { 0x9A });//RPC OFF
PS3.SetMemory(0x4667B4, new byte[] { 0x3F, 0x80, 0x10, 0x05, 0x81, 0x9C, 0x00, 0x48, 0x2C, 0x0C, 0x00, 0x00, 0x41, 0x82, 0x00, 0x64, 0x80, 0x7C, 0x00, 0x00, 0x80, 0x9C, 0x00, 0x04, 0x80, 0xBC, 0x00, 0x08, 0x80, 0xDC, 0x00, 0x0C, 0x80, 0xFC, 0x00, 0x10, 0x81, 0x1C, 0x00, 0x14, 0x81, 0x3C, 0x00, 0x18, 0x81, 0x5C, 0x00, 0x1C, 0x81, 0x7C, 0x00, 0x20, 0xC0, 0x3C, 0x00, 0x24, 0xC0, 0x5C, 0x00, 0x28, 0xC0, 0x7C, 0x00, 0x2C, 0xC0, 0x9C, 0x00, 0x30, 0xC0, 0xBC, 0x00, 0x34, 0xC0, 0xDC, 0x00, 0x38, 0xC0, 0xFC, 0x00, 0x3C, 0xC1, 0x1C, 0x00, 0x40, 0xC1, 0x3C, 0x00, 0x44, 0x7D, 0x89, 0x03, 0xA6, 0x4E, 0x80, 0x04, 0x21, 0x38, 0x80, 0x00, 0x00, 0x90, 0x9C, 0x00, 0x48, 0x90, 0x7C, 0x00, 0x4C, 0xD0, 0x3C, 0x00, 0x50, 0x48, 0x00, 0x00, 0x40 });//RPC CODE
PS3.SetMemory(0x10050000, new byte[0x2854]);//RPC arguments
PS3.SetMemory(0x00466299, new byte[] { 0x00 });//RPC ON
}

here is to call the RPC
    
public static Int32 Call(UInt32 address, params Object[] parameters)//this is VezahHFH MW3 Call function I used same place to store the arguments because I'm Lazy and I don't feel like making that function since I code in C++ but I might optimize this function
{
Int32 length = parameters.Length;
Int32 index = 0;
UInt32 count = 0;
UInt32 Strings = 0;
UInt32 Single = 0;
UInt32 Array = 0;
while (index < length)
{
if (parameters[index] is Int32)
{
WriteInt32(0x10050000 + (count * 4), (Int32)parameters[index]);
count++;
}
else if (parameters[index] is UInt32)
{
WriteUInt32(0x10050000 + (count * 4), (UInt32)parameters[index]);
count++;
}
else if (parameters[index] is Int16)
{
WriteInt16(0x10050000 + (count * 4), (Int16)parameters[index]);
count++;
}
else if (parameters[index] is UInt16)
{
WriteUInt16(0x10050000 + (count * 4), (UInt16)parameters[index]);
count++;
}
else if (parameters[index] is Byte)
{
WriteByte(0x10050000 + (count * 4), (Byte)parameters[index]);
count++;
} //Should work now Happy let me try
else
{
UInt32 pointer;
if (parameters[index] is String)
{
pointer = 0x10052000 + (Strings * 0x400);
WriteString(pointer, Convert.ToString(parameters[index]));
WriteUInt32(0x10050000 + (count * 4), pointer);
count++;
Strings++;
}
else if (parameters[index] is Single)
{
WriteSingle(0x10050024 + (Single * 4), (Single)parameters[index]);
Single++;
}
else if (parameters[index] is Single[])
{
Single[] Args = (Single[])parameters[index];
pointer = 0x10051000 + Array * 4;
WriteSingle(pointer, Args);
WriteUInt32(0x10050000 + count * 4, pointer);
count++;
Array += (UInt32)Args.Length;
}

}
index++;
}
WriteUInt32(0x10050048, address);
Thread.Sleep(20);
return ReadInt32(0x1005004c);
}


FPS RPC
Credits
BadLuck Brian
Jo-Milk
VezahHFH


Thanks dude Happy
04-16-2015, 04:17 PM #3
-JM-
Space Ninja
Originally posted by Haxman2580 View Post
Thanks dude Happy


No problem hopefully you'll do something cool with that Smile
04-16-2015, 10:27 PM #4
NickBeHaxing
Stoner Zone
Originally posted by JM
Hello guys I thought I'd give you this RPC cuz most of you don't have it and I hate choco RPC because it removes Fog so I release FPS RPC =D
here is to set the RPC
    
private void JM_RPC()
{
PS3.SetMemory(0x00466299, new byte[] { 0x9A });//RPC OFF
PS3.SetMemory(0x4667B4, new byte[] { 0x3F, 0x80, 0x10, 0x05, 0x81, 0x9C, 0x00, 0x48, 0x2C, 0x0C, 0x00, 0x00, 0x41, 0x82, 0x00, 0x64, 0x80, 0x7C, 0x00, 0x00, 0x80, 0x9C, 0x00, 0x04, 0x80, 0xBC, 0x00, 0x08, 0x80, 0xDC, 0x00, 0x0C, 0x80, 0xFC, 0x00, 0x10, 0x81, 0x1C, 0x00, 0x14, 0x81, 0x3C, 0x00, 0x18, 0x81, 0x5C, 0x00, 0x1C, 0x81, 0x7C, 0x00, 0x20, 0xC0, 0x3C, 0x00, 0x24, 0xC0, 0x5C, 0x00, 0x28, 0xC0, 0x7C, 0x00, 0x2C, 0xC0, 0x9C, 0x00, 0x30, 0xC0, 0xBC, 0x00, 0x34, 0xC0, 0xDC, 0x00, 0x38, 0xC0, 0xFC, 0x00, 0x3C, 0xC1, 0x1C, 0x00, 0x40, 0xC1, 0x3C, 0x00, 0x44, 0x7D, 0x89, 0x03, 0xA6, 0x4E, 0x80, 0x04, 0x21, 0x38, 0x80, 0x00, 0x00, 0x90, 0x9C, 0x00, 0x48, 0x90, 0x7C, 0x00, 0x4C, 0xD0, 0x3C, 0x00, 0x50, 0x48, 0x00, 0x00, 0x40 });//RPC CODE
PS3.SetMemory(0x10050000, new byte[0x2854]);//RPC arguments
PS3.SetMemory(0x00466299, new byte[] { 0x00 });//RPC ON
}

here is to call the RPC
    
public static Int32 Call(UInt32 address, params Object[] parameters)//this is VezahHFH MW3 Call function I used same place to store the arguments because I'm Lazy and I don't feel like making that function since I code in C++ but I might optimize this function
{
Int32 length = parameters.Length;
Int32 index = 0;
UInt32 count = 0;
UInt32 Strings = 0;
UInt32 Single = 0;
UInt32 Array = 0;
while (index < length)
{
if (parameters[index] is Int32)
{
WriteInt32(0x10050000 + (count * 4), (Int32)parameters[index]);
count++;
}
else if (parameters[index] is UInt32)
{
WriteUInt32(0x10050000 + (count * 4), (UInt32)parameters[index]);
count++;
}
else if (parameters[index] is Int16)
{
WriteInt16(0x10050000 + (count * 4), (Int16)parameters[index]);
count++;
}
else if (parameters[index] is UInt16)
{
WriteUInt16(0x10050000 + (count * 4), (UInt16)parameters[index]);
count++;
}
else if (parameters[index] is Byte)
{
WriteByte(0x10050000 + (count * 4), (Byte)parameters[index]);
count++;
} //Should work now Happy let me try
else
{
UInt32 pointer;
if (parameters[index] is String)
{
pointer = 0x10052000 + (Strings * 0x400);
WriteString(pointer, Convert.ToString(parameters[index]));
WriteUInt32(0x10050000 + (count * 4), pointer);
count++;
Strings++;
}
else if (parameters[index] is Single)
{
WriteSingle(0x10050024 + (Single * 4), (Single)parameters[index]);
Single++;
}
else if (parameters[index] is Single[])
{
Single[] Args = (Single[])parameters[index];
pointer = 0x10051000 + Array * 4;
WriteSingle(pointer, Args);
WriteUInt32(0x10050000 + count * 4, pointer);
count++;
Array += (UInt32)Args.Length;
}

}
index++;
}
WriteUInt32(0x10050048, address);
Thread.Sleep(20);
return ReadInt32(0x1005004c);
//or you could return a float pointer if the function that is called return one just check at the offset 0x10050050
}


FPS RPC
Credits
BadLuck Brian
Jo-Milk
VezahHFH


So it doesn't hook into the fog address it hooks the fps address... helpful bro
04-18-2015, 03:17 PM #5
-JM-
Space Ninja
Originally posted by NickBeHaxing View Post
So it doesn't hook into the fog address it hooks the fps address... helpful bro


yea FPS Is much better I'll fix the zombie one later

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo