Jump to content

Animation Limit Crash Fix


Recommended Posts

Posted
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

Posted (edited)

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
Posted

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?

Posted (edited)

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
  • 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...