Bored of the Rings wrote: "The difference is the FVF structure/FVF sizes."
I'm, sure there's more to that. I guess I'll see what stuff is different when I start reading the DBO format specification.
Bored of the Rings wrote: "When the DBO gets saved out, there is an additional sphere mesh that gets saved as part of the final model (usually named Group)."
I assume you mean, when DBP is saving a DBO file. Why would a sphere mesh be baked into the DBO? Seems pointless and arbitrary. Maybe you are talking about FPSC adding a skybox when saving a level or something.
Bored of the Rings wrote: "There have been quite a few stumbling blocks just to get everything to come out correctly, especially when there were multi materials/textures being used."
I was thinking when I finally get a object file written, when it finally doesn't immediately crash the modelling program, I'm sure that I'll have joints bending the wrong way, wrong weights, scrambling the model possibly. Normals are another issue. I have a good idea how normals work but I am a bit hazy. So having to convert between different ways of storing the data is bound to be a disaster. No doubt I'll need to bust my brain on that for a while.
Bored of the Rings wrote: "I originally had a few code bottlenecks that were taking ages to process e.g. the animation frames for both matrix and quaternion keyframes were taking forever to process because of the large number of animation frames. Changing the code to use banks instead of memblocks was a godsend and also I had to develop a super fast way of concatenating large strings i.e. using pointers and poking/peeking."
I wonder if I will run into a similar problem. I am not doing the same stuff as you, since I am working with different formats. I generally would not go with a method that writes large strings, though I can see where it would be useful to write large groups of bytes. Perhaps at the conversion process this need becomes more obvious as a necessity. Also I was able to load a model file of a 1200 poly character with about 300 anims into memory and write the complete contents out in plain text. That seems to take about 5 seconds. You mention your process was taking a lot of time. This is a bit of a surprise to me. My impression was that that actual work was rather trivial once you figured out how to actually convert the data.