If you want an emulator that would be easy-to-modify to support different file versions, you should implement high abstraction levels in the way you are programming it.
In .NET ... I'll try to explain the idea :).
Let's say, you got Packet base class. You should consider the idea that anything can be modified, including, let's say, the way the packet encryption is implemented by just rewriting a single method in base class of packet.
What I'm trying to say is that writing an emulator would be a job for a team which has specific code style regulations, and BRAINS. Emulator code has to be easy-to-modify, understandable, and no skid sh?t.
Anyhow, it's pretty much time passed since I first throught about writing a decent emulator. And now, I think, if we get a good team this time we would have no chance to fail. The reason why all previously known projects failed (didnt get stable enough, finished, scaleable enough) is that there were no actual possibility to do that. Now, when we got vsro 188, vsro 193, br v027, twsro, jsro etc files it wouldn't be a actual problem to get packets.
What I'm offering is creation of an actual team that would consist only of experienced .NET/MSSQL (c# preffered) developers and people who would be able to provide the actual developers team structured data about packet structure, navmesh data format etc (ofc there are some sources out there, but well, it would be better if that would be researched by OUR team of packet analysers). As I said, the main thing about all this stuff is to make everything STRUCTURED, IARCHICAL, FAST, and SCALEABLE.
Basically what I'm offering here is creating such team of developers. If there is someone who actually CAN and WANT to make an decent emulator, feel free to add me at skype - viral.leet, so, we can discuss about stuff
It's by time to do this... If we wont, noone will. If noone will, SRO dies completely.