Jump to content

Recommended Posts

Quote

No valid segment found! SrtCrashFix64 patch cannot be applied.
It may happen due to incompatible runtime version
or some other plugin already made changes to the patching segment.

Unfortunately i am getting this for skyrimvr, i disabled all plugins but sksevr

Link to comment

While searching around with the find_segment function I removed the inner loop of the search function to make it faster.. i think

std::list<byte*> find_segment(byte* start, byte* stop, byte* segment, int segment_len)
{
	std::list<byte*> matches;
	int seq_match = 0;
	for (byte* ptr = start; ptr < stop; ptr++)
	{
		if (*ptr == segment[seq_match]) {
			seq_match++;
		}
		else {
			seq_match = 0;
		}
		if (seq_match == segment_len)
		{
			byte* match = ptr - segment_len;
			matches.push_back(match);
		}
		if (matches.size() > 1) {
			break;
		}
	}
	return matches;
}

Also I noticed that in the original code the seach starts at 0xB669C0 and ends at 0x200000, isnt 0x200000<0xB669C0 or am I not understanding something??

Edit, ah i overlocked the other find_segment, that explains why i thought it was so slow lol

Edited by fgt5uh
Link to comment

I noticed that the LE patch and SE patch look quite similar.

LE:

	byte expected[] = { 0xF, 0xBF, 0x86, 0xA8, 0x0, 0x0, 0x0 };
	byte data[] = { 0x33, 0xC0, 0x90, 0x90, 0x90, 0x90, 0x90 };

SE:

	//byte expected[] = { 0xF, 0xBF, 0x83, 0x28, 0x1, 0x0 }; // movsx eax,word ptr ds:[rbx+128]
	//byte data[] = { 0x33, 0xC0, 0x90, 0x90, 0x90, 0x90, 0x90 }; // xor eax,eax + nop's

The first two and the last one entry are the same, is that a pattern or just random chance?

 

Becouse I found that there are 150 instances of where there are matches between first, second and last

and >5k of matching first and second only in the range 0x000000 -> 0xFFFFFF.

 

Is there a chance that i find the animation fix patch location by going through all of them?

Link to comment

Lol, i think i found it

no crash with

byte expected[] = { 0xF, 0xBF, 0x83, 0x28, 0x1, 0x0, 0x0 };
RelocAddr<uintptr_t> addr(0xba1830); // SkyrimVR

it was number 109 of 150, luckily i started at location 100,

how can i test it further?

Edited by fgt5uh
Link to comment
  • 5 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use