Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- W@W FPS RPC
- 3F 80 10 05 81 9C 00 48 2C 0C 00 00 41 82 00 64 80 7C 00 00 80 9C 00 04 80 BC 00 08 80 DC 00 0C 80 FC 00 10 81 1C 00 14 81 3C 00 18 81 5C 00 1C 81 7C 00 20 C0 3C 00 24 C0 5C 00 28 C0 7C 00 2C C0 9C 00 30 C0 BC 00 34 C0 DC 00 38 C0 FC 00 3C C1 1C 00 40 C1 3C 00 44 7D 89 03 A6 4E 80 04 21 38 80 00 00 90 9C 00 48 90 7C 00 4C D0 3C 00 50 48 00 01 64
- PPC
- lis %r28, 0x1005
- lwz %r12, 0x48(%r28)
- cmpwi %r12, 0
- beq 0x64
- lwz %r3, 0x00(%r28)
- lwz %r4, 0x04(%r28)
- lwz %r5, 0x08(%r28)
- lwz %r6, 0x0C(%r28)
- lwz %r7, 0x10(%r28)
- lwz %r8, 0x14(%r28)
- lwz %r9, 0x18(%r28)
- lwz %r10, 0x1C(%r28)
- lwz %r11, 0x20(%r28)
- lfs %f1, 0x24(%r28)
- lfs %f2, 0x28(%r28)
- lfs %f3, 0x2C(%r28)
- lfs %f4, 0x30(%r28)
- lfs %f5, 0x34(%r28)
- lfs %f6, 0x38(%r28)
- lfs %f7, 0x3C(%r28)
- lfs %f8, 0x40(%r28)
- lfs %f9, 0x44(%r28)
- mtctr %r12
- bctrl
- li %r4, 0
- stw %r4, 0x48(%r28)
- stw %r3, 0x4C(%r28)
- stfs %f1, 0x50(%r28)
- b 0x164
- C# part
- public static void Enable()
- {
- PS3.SetMemory(0x274DEC0, new byte[] { 0x00 });//FPS OFF
- byte[] WritePPC = 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, 0x01, 0x64 };
- PS3.SetMemory(0x1D8BB8, WritePPC);/*Write PPC at FPS Function aka offset 0x1D8B88 I use 0x1D8BB8 to use the fps stack*/
- PS3.SetMemory(0x274DEC0, new byte[] { 0x01 });//FPS ON
- }
- public static Int32 Call(UInt32 address, params Object[] parameters)
- {
- 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)
- {
- PS3.Extension.WriteInt32(0x10050000 + (count * 4), (Int32)parameters[index]);
- count++;
- }
- else if (parameters[index] is UInt32)
- {
- PS3.Extension.WriteUInt32(0x10050000 + (count * 4), (UInt32)parameters[index]);
- count++;
- }
- else if (parameters[index] is Int16)
- {
- PS3.Extension.WriteInt16(0x10050000 + (count * 4), (Int16)parameters[index]);
- count++;
- }
- else if (parameters[index] is UInt16)
- {
- PS3.Extension.WriteUInt16(0x10050000 + (count * 4), (UInt16)parameters[index]);
- count++;
- }
- else if (parameters[index] is Byte)
- {
- PS3.Extension.WriteByte(0x10050000 + (count * 4), (Byte)parameters[index]);
- count++;
- } //Should work now :D let me try
- else
- {
- UInt32 pointer;
- if (parameters[index] is String)
- {
- pointer = 0x10052000 + (Strings * 0x400);
- PS3.Extension.WriteString(pointer, Convert.ToString(parameters[index]));
- PS3.Extension.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);
- PS3.Extension.WriteUInt32(0x10050000 + count * 4, pointer);
- count++;
- Array += (UInt32)Args.Length;
- }
- }
- index++;
- }
- PS3.Extension.WriteUInt32(0x10050048, address);
- Thread.Sleep(20);
- return PS3.Extension.ReadInt32(0x1005004c);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement