@@ -130,26 +130,27 @@ static void Patch_CallRelativeAddress(const std::vector<void*>& offsets)
130130void PatchOriginalCode ()
131131{
132132 rslog::info_ts () << __FUNCTION__ << std::endl;
133-
134- // patch CoCreateInstance calls
135- {
136- rslog::info_ts () << " Patching CoCreateInstance" << std::endl;
137133
138- std::vector<void *> offsets = FindBytesOffsets (originalBytes_call_CoCreateInstance, sizeof (originalBytes_call_CoCreateInstance));
139- Patch_CallAbsoluteAddress<( void *)&Patched_CoCreateInstance>(offsets );
140- }
134+ std::vector<void *> offsets_CoCreateInstance = FindBytesOffsets (originalBytes_call_CoCreateInstance, sizeof (originalBytes_call_CoCreateInstance));
135+ std::vector< void *> offsets_PaMarshalPointers = FindBytesOffsets (originalBytes_call_PortAudio_MarshalStreamComPointers, sizeof (originalBytes_call_PortAudio_MarshalStreamComPointers) );
136+ std::vector< void *> offsets_PaUnmarshalPointers = FindBytesOffsets (originalBytes_call_UnmarshalStreamComPointers, sizeof (originalBytes_call_UnmarshalStreamComPointers));
141137
142- // patch PortAudio MarshalStreamComPointers
138+ if (offsets_CoCreateInstance. size () == 0 && offsets_PaMarshalPointers. size () == 0 && offsets_PaUnmarshalPointers. size () == 0 )
143139 {
144- rslog::info_ts () << " Patching PortAudio MarshalStreamComPointers" << std::endl;
145- std::vector<void *> offsets = FindBytesOffsets (originalBytes_call_PortAudio_MarshalStreamComPointers, sizeof (originalBytes_call_PortAudio_MarshalStreamComPointers));
146- Patch_CallRelativeAddress<(void *)&Patched_PortAudio_MarshalStreamComPointers>(offsets);
140+ rslog::error_ts () << " No valid locations for patching were found. Make sure you're trying this on the right game version." << std::endl;
147141 }
148-
149- // patch PortAudio UnmarshalStreamComPointers
142+ else
150143 {
144+ // patch CoCreateInstance calls
145+ rslog::info_ts () << " Patching CoCreateInstance" << std::endl;
146+ Patch_CallAbsoluteAddress<(void *)&Patched_CoCreateInstance>(offsets_CoCreateInstance);
147+
148+ // patch PortAudio MarshalStreamComPointers
149+ rslog::info_ts () << " Patching PortAudio MarshalStreamComPointers" << std::endl;
150+ Patch_CallRelativeAddress<(void *)&Patched_PortAudio_MarshalStreamComPointers>(offsets_PaMarshalPointers);
151+
152+ // patch PortAudio UnmarshalStreamComPointers
151153 rslog::info_ts () << " Patching PortAudio UnmarshalStreamComPointers" << std::endl;
152- std::vector<void *> offsets = FindBytesOffsets (originalBytes_call_UnmarshalStreamComPointers, sizeof (originalBytes_call_UnmarshalStreamComPointers));
153- Patch_CallRelativeAddress<(void *)&Patched_PortAudio_UnmarshalStreamComPointers>(offsets);
154+ Patch_CallRelativeAddress<(void *)&Patched_PortAudio_UnmarshalStreamComPointers>(offsets_PaUnmarshalPointers);
154155 }
155156}
0 commit comments