Advertisement
fastman92

IMGlimits::SetLimitOfIMGarchives

Aug 3rd, 2015
432
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.69 KB | None | 0 0
  1.     // Patches limit of IMG archives.
  2.     void IMGlimits::SetLimitOfIMGarchives(unsigned int numberOfIMGarchives)
  3.     {
  4.         CPatch::EnterNewLevel();
  5.         // CPatch::EnableDebugMode();
  6.  
  7.         if(!CPatch::IsDebugModeActive())
  8.         {
  9.             if(numberOfIMGarchives > 8)
  10.             {
  11.                 IMGlimits::ms_files = new tImgDescriptor[numberOfIMGarchives];
  12.                 memset(IMGlimits::ms_files, NULL, numberOfIMGarchives * sizeof(tImgDescriptor));
  13.             }
  14.         }
  15.         else
  16.             numberOfIMGarchives = 8;
  17.  
  18.         IMGlimits::maxNumberOfIMGarchives = numberOfIMGarchives;
  19.  
  20.         // CStreaming__InitImageList
  21.         CPatch::PatchPointer(0x4083C0 + 1, &IMGlimits::ms_files -> streamHandle);       // mov     eax, offset _ZN10CStreaming8ms_filesE.streamHandle
  22.         CPatch::PatchPointer(0x4083DD + 1, &IMGlimits::ms_files[numberOfIMGarchives].streamHandle);
  23.         CPatch::PatchPointer(0x408459 + 2, &IMGlimits::ms_files -> streamHandle);       // mov     ds:_ZN10CStreaming8ms_filesE.streamHandle[esi], eax
  24.         CPatch::PatchPointer(0x4084A0 + 2, &IMGlimits::ms_files -> streamHandle);       // mov     ds:_ZN10CStreaming8ms_filesE.streamHandle[esi], eax
  25.         CPatch::PatchPointer(0x4083E8 + 1, IMGlimits::ms_files);        // mov     eax, offset _ZN10CStreaming8ms_filesE; CStreaming::ms_files
  26.         CPatch::PatchPointer(0x4083F9 + 1, &IMGlimits::ms_files[numberOfIMGarchives]);  // cmp     eax, offset CStreaming__bLoadingBigModel
  27.         CPatch::PatchPointer(0x40840A + 1, IMGlimits::ms_files);        // mov     eax, offset _ZN10CStreaming8ms_filesE; CStreaming::ms_files
  28.         CPatch::PatchPointer(0X408419 + 1, &IMGlimits::ms_files[numberOfIMGarchives]);  // cmp     eax, offset CStreaming__bLoadingBigModel
  29.         CPatch::PatchPointer(0x408439 + 2, IMGlimits::ms_files);        // lea     edx, _ZN10CStreaming8ms_filesE.name[ecx]; CStreaming::ms_files
  30.         CPatch::PatchPointer(0x408477 + 2, IMGlimits::ms_files);        // lea     edx, _ZN10CStreaming8ms_filesE.name[edx]; CStreaming::ms_files
  31.  
  32.         // CStreaming__LoadCdDirectory
  33.         CPatch::PatchPointer(0x5B82F0 + 1, IMGlimits::ms_files);        // mov     al, ds:_ZN10CStreaming8ms_filesE.name; CStreaming::ms_files
  34.         CPatch::PatchPointer(0x5B82FC + 1, IMGlimits::ms_files);        // mov     esi, offset _ZN10CStreaming8ms_filesE; CStreaming::ms_files
  35.         CPatch::PatchPointer(0x5B8301 + 2, &IMGlimits::ms_files[numberOfIMGarchives]);  // cmp     esi, offset CStreaming__bLoadingBigModel
  36.  
  37.         // CStreaming__AddImageToList_HOODLUM
  38.         CPatch::PatchPointer(0x1567B93 + 1, IMGlimits::ms_files);       // mov     eax, offset _ZN10CStreaming8ms_filesE; CStreaming::ms_files
  39.         CPatch::PatchPointer(0x1567BA1 + 1, &IMGlimits::ms_files[numberOfIMGarchives]); // cmp     eax, offset CStreaming__bLoadingBigModel
  40.         CPatch::PatchPointer(0x1567BB8 + 2, IMGlimits::ms_files);       // lea     edx, _ZN10CStreaming8ms_filesE.name[esi]; CStreaming::ms_files
  41.         CPatch::PatchPointer(0x1567BD4 + 2, &IMGlimits::ms_files -> streamHandle);      // mov     ds:_ZN10CStreaming8ms_filesE.streamHandle[esi], eax
  42.         CPatch::PatchPointer(0x1567BE1 + 2, &IMGlimits::ms_files -> isNotPlayerImg);        // mov     ds:_ZN10CStreaming8ms_filesE.isNotPlayerImg[esi], al
  43.  
  44.         // CStreaming__InitImageList
  45.         CPatch::PatchPointer(0x40845F + 2, &IMGlimits::ms_files -> isNotPlayerImg);     // mov     ds:_ZN10CStreaming8ms_filesE.isNotPlayerImg[esi], 1
  46.         CPatch::PatchPointer(0x4084A6 + 2, &IMGlimits::ms_files -> isNotPlayerImg);     // mov     ds:_ZN10CStreaming8ms_filesE.isNotPlayerImg[esi], 1
  47.  
  48.         // CStreaming::GetArchiveStreamHandle
  49.         CPatch::PatchPointer(0x40757D + 2, &IMGlimits::ms_files -> streamHandle);       // mov     eax, ds:_ZN10CStreaming8ms_filesE.streamHandle[eax]
  50.  
  51.         // CStreaming__GetNextFileOnCd
  52.         CPatch::PatchPointer(0x408FDA + 2, &IMGlimits::ms_files -> streamHandle);       // mov     eax, ds:_ZN10CStreaming8ms_filesE.streamHandle[edx]
  53.  
  54.         // sub_409D10
  55.         CPatch::PatchPointer(0x409D58 + 2, &IMGlimits::ms_files -> streamHandle);       // mov     ecx, ds:_ZN10CStreaming8ms_filesE.streamHandle[ecx]
  56.  
  57.         // CStreaming__RequestModelStream
  58.         CPatch::PatchPointer(0x40CC52 + 2, &IMGlimits::ms_files -> streamHandle);       // mov     eax, ds:_ZN10CStreaming8ms_filesE.streamHandle[edx]
  59.         CPatch::PatchPointer(0x40CCC5 + 2, &IMGlimits::ms_files -> streamHandle);       // mov     ecx, ds:_ZN10CStreaming8ms_filesE.streamHandle[ecx]
  60.  
  61.         // CStreamingInfo__GetCdPosnAndSize_HOODLUM
  62.         CPatch::PatchPointer(0x1560E66 + 2, &IMGlimits::ms_files -> streamHandle);      // mov     edx, ds:_ZN10CStreaming8ms_filesE.streamHandle[eax]
  63.  
  64.         // CStreaming__InitObjectInfoAndRequestModel_HOODLUM
  65.         CPatch::PatchPointer(0x15663E5 + 2, &IMGlimits::ms_files -> streamHandle);      // mov     eax, ds:_ZN10CStreaming8ms_filesE.streamHandle[edx]
  66.  
  67.         // finish
  68.         CPatch::LeaveThisLevel();
  69.        
  70.         CGenericLogStorage::SaveFormattedTextLn("Modified max number of IMG archives to: %d", numberOfIMGarchives);
  71.         CGenericLogStorage::WriteLineSeparator();
  72.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement