Advertisement
PMT-Exanity

PS3.h

Nov 20th, 2017
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.67 KB | None | 0 0
  1. #define TOC                                                     ( 0x0072DCE8 )
  2.  
  3. struct opd_s
  4. {
  5.         uint32_t sub;
  6.         uint32_t toc;
  7. };
  8.  
  9. int sys_ppu_thread_exit()
  10. {
  11.         system_call_1(41, 0);
  12.         return_to_user_prog(int);
  13. }
  14.  
  15. int cstrcmp(const char* s1, const char* s2)//Please note if its equal to zero the strings are equal
  16. {
  17.         while(*s1 && (*s1==*s2))
  18.                 s1++,s2++;
  19.         return *(const unsigned char*)s1-*(const unsigned char*)s2;
  20. }
  21.  
  22. int console_write(const char * s)
  23. {
  24.         uint32_t len;
  25.         system_call_4(403, 0, (uint64_t) s, std::strlen(s), (uint64_t) &len);
  26.         return_to_user_prog(int);
  27. }
  28.  
  29.  
  30. sys_ppu_thread_t create_thread(void (*entry)(uint64_t), int priority, size_t stacksize, const char* threadname, sys_ppu_thread_t tid)
  31. {      
  32.         if(sys_ppu_thread_create(&tid, entry, 0, priority , stacksize, 0, threadname) != CELL_OK)
  33.         {
  34.                 console_write("Thread creation failed\n");    
  35.         }
  36.         else
  37.         {
  38.                 console_write("Thread created\n");    
  39.         }      
  40.     return tid;
  41. }
  42.  
  43. void sleep(usecond_t time)  //1 second = 1000
  44. {
  45.         sys_timer_usleep(time * 1000);
  46. }
  47.  
  48. namespace PS3
  49. {
  50.         float floatArray[100];
  51.     float* ReadFloat(int address, int length)
  52.     {
  53.         for (int i = 0; i < length; i++)
  54.         {
  55.             floatArray[i] =  *(float*)(address + (i * 0x04));
  56.         }
  57.         return floatArray;
  58.     }
  59.  
  60.         char byteArray[100];
  61.         char* ReadBytes(int address, int length)
  62.     {
  63.         for (int i = 0; i < length; i++)
  64.         {
  65.             byteArray[i] =  *(char*)(address + (i));
  66.         }
  67.         return byteArray;
  68.     }
  69.  
  70.         void WriteFloat(int address, float* input, int length)
  71.         {
  72.                 for (int i = 0; i < length; i++)
  73.                 {
  74.                         *(float*)(address + (i * 4)) = input[i];
  75.                 }
  76.         }
  77.  
  78.         void WriteBytes(int address, char* input, int length)
  79.     {
  80.         for (int i = 0; i < length; i++)
  81.         {
  82.             *(char*)(address + (i)) = input[i];
  83.         }
  84.     }
  85.  
  86.         float intArray[100];
  87.     float* ReadInt(int address, int length)
  88.     {
  89.         for (int i = 0; i < length; i++)
  90.         {
  91.             intArray[i] =  *(int*)(address + (i * 0x04));
  92.         }
  93.         return intArray;
  94.     }
  95.  
  96.         void WriteInt(int address, int* input, int length)
  97.     {
  98.         for (int i = 0; i < length; i++)
  99.         {
  100.             *(int*)(intArray + (i * 0x04)) = input[i];
  101.         }
  102.     }
  103.  
  104.         void WriteString(int address, char* string)
  105.         {
  106.                 int FreeMem = 0x1D00000;
  107.                 int strlength = std::strlen(string);
  108.                 *(char**)FreeMem = string;
  109.                 char* StrBytes = PS3::ReadBytes(*(int*)FreeMem, strlength);
  110.                 PS3::WriteBytes(address, StrBytes, strlength);
  111.         }
  112.  
  113.         struct readstr
  114.         {
  115.                 char returnRead[100];
  116.         }ReturnRead[1000];
  117.         int strcount;
  118.  
  119.         char* ReadString(int address)
  120.         {
  121.                 strcount ++;
  122.                 memset(&ReturnRead[strcount].returnRead[0], 0, sizeof(ReturnRead[strcount].returnRead));
  123.                 int strlength = 100;
  124.                 char* StrBytes = ReadBytes(address, strlength);
  125.                 for (int i = 0; i < strlength; i++)
  126.                 {
  127.                         if (StrBytes[i] != 0x00)
  128.                                 ReturnRead[strcount].returnRead[i] = StrBytes[i];
  129.                         else
  130.                                 break;
  131.                 }
  132.                 return ReturnRead[strcount].returnRead;
  133.         }
  134. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement