It seems like we've got a two-problems-discussion in here:
1. Argueing about who ported FF7 to PC and the Quality of the Port.
2. Writing our own Engine
I'l try to concentrate on the second one...
I've got to agree with Qhimm. I thought that making self-made additions to the engine would be an option, however, I've been tought here that this is going to be a risk for the whole project. So let's forget about this one first.
A "Naked Engine" is what we have to work on.
This is one of the points that makes my head ache:
1 make sure that users have orygiinal ff7 so Square earned money
The engine *should* have a cd-check or any sort of pseudo-copy-protection to ensure the end-user has a legal copy of FF7.
Problems:
1. If this is going to be an open-source project, then we can totally forget that. Everyone could download the source and recompile it without the protection. (what means that Open-source isn't such a good idea at all)
2. AFAIK FF7 did not have any copy protection on their original discs, so there won't be a way to check if the end user has a legal copy. But this is Square's Problem I think...
And something else:
Some months ago I was trying to write a 2d-jump-and-run engine, however, the project was cancelled.
But I was writing some sort of "Virtual Directory Manager", and I think this maybe could be helpful for that FF7 engine...
That manager consist of 2 Classes: A Directory and a File class.
Once you specify a path to the directory and "mount" it, the directory class scans the path for files, and creates an array of File classes.
Then, it checks if there are any archive files (LGPs in FF7), and if there are, it reads out the Header of the archives and add the files inside of that archive to the File class array. Of course, this only works when the archives are not compressed, but AFAIK, all LGPs are uncompressed in FF7 PC.
Advantages:
1. You do not to decompress those archives to tempory files, you can access them directly from the archive (as use it as a usual file that is not packed into an archive). Of course, this is only working well if you want to have Read Access to those files - it's tricky when you want to change a file inside an archive.
2. Because of that File array, you do not need to search for the files you want to open - you just get them from your array.
Disadvantage:
Once a directory was "mounted" it does not recognize any changes in that directory until it is "remounted", which means closing all files, destroying the file array and mounting again.
(However, I was thinking about making an "Silent Remount" which will not require closing and destroying *all* objects...)
Unfortunately, my last file backup f**ked up, so I lost the source files.
However, I have already started rewriting those two classes. It will take some time until I can send you some code, however, maybe this would be a way to solve some of our cross-platform problems...
What do you think?
- Alhexx