In Marlin_main.cpp there are all kinds of differences in the SD Memory Card commands. They are like this:

*(starpos) = '\0'; turned into *(starpos-1) = '\0';

There are 4 or 5 places and those have to do with the name it is looking for in the directory. Specifically, case 23: , case 28: , case 30: , case 32: , case 928:

And then in SD2Card.cpp and SD2Card.h the Eight3C version looks much more mature. There is a lot more code. But all of the other SD files are identical.

Which version works? My guess is the Eight3C version works and the other one does not? If the file name is not being properly terminated with the *(starpos)='\0'; line, I can believe you can select but not open the file. I would change those first. But then if that worked, I would also try swapping in the more mature sd2card.cpp and sd2card.h file. That code looks more mature.