Here is what Ben Turi had to say when he posted this breakthrough to the group:
"Howdy all,
The (small) development team has continued to work hard to make progress toward seeing an EQOA Revival. In the last week or so, we have had two big breakthroughs and we wanted to share those with you.
1) Determination of the generalized CRC parameters/scheme used between the Client/Server to make sure no packets are lost in transmission. If we don't get the CRC correct, the client won't accept the server's packets. In the previous breakthrough to get to the server select screen (December), we were using hard-coded values we backed out from the original PCAP. This was great in that it showed progress, but it was not going to work long term. Over the past couple of months we have continued to research and investigate to determine how to calculate the CRC from 'scratch' by determining the generalized CRC parameters. We have now accomplished this and it will make continued communication with the client possible.
2) In a related effort, the development team has also extended our current C server's capabilities to get to the Character Selection/Creation screen. This is a rather large breakthrough in our goal of getting in world from the 'front door' vs. a save state. Since we can view toons and their associated gear (no rings, belts, ears, etc) we will be able to start identifying which hex codes are associated with a particular image/sprite. We should also be able to view all possible sprites on the disc instead of just the ones in the save state. This will also help us understand how toons are represented in memory. With this breakthrough, we can also get to the character creation screen. We were able to delete a toon, and start up a new one, choosing race, sex, class, and initial stat points. You can even give them a name (This all appears to happen solely on the client). However, it will lock up once you try to save that toon since those routines have not been figure out or incorporated in our local server at this point. Additionally, we have not coded up the 'ping' response for the client, so the client will eventually timout and go back to the server select screen. Every 10 secs or so the client sends a ping to the server and it expects a response. It will do this for about 2 mins without disconnecting, but then it will disconnect. For now, I have attached a single image I made of the Character Selection screen where I passed in a different name for Matt's Cleric.
These breakthroughs are huge and open up a lot more opportunities for us to learn how the client expects the server to work. Please remember, we don't have ANY type of full featured server capability at this point. The client sends our server packets and we have to figure out how to respond to those in the correct way. The only way we can do this is with the single LIVE packet capture we have and perhaps trial and error. The current 'server' is really more of a research tool to allow the dev team to interact with the client to gain an understanding of how everything worked and fits together to make a playable game. An updated C++ server is being developed with the insights the breakthroughs have provided.
There are a number of next steps possible. Several people are planning on investigating the character byte representations on the character selection screen to document those. I will move forward to do more packet analysis to see what additional steps are needed to get us in world. My preliminary investigation shows that once we select "enter game world", that the server starts to dump a large amount of information to the client's memory that contains all the hotkey information and stuff like that. Finally, it provides information about where the toon will enter the world and what objects can be seen. A main focus of the team will be to get 'in world' and continue to explore and extract various opcodes that the client is sending and determine the proper server response. I would like to also get to the point where we could spawn something, even if we can't attack or fight it.
We are hoping a few expert C++ developers in the current group will get involved and start getting things organized and improve on the current code. The more people that understand what is going on in detail and can make contributions will help progress along greatly. If you want to help, you must take the initiative and be pro-active as much as you can. We currently have maybe two developers working on this. Wouldn't it go twice as fast with just four? (I know I know, not really, but you get my point). We are all learning here. No one has done this before so just jump in and ask questions. You can send me a PM or leave a message in the server forum and I will do my best to help. I can try to connect you with the right people in the group.
For now, let us all revel in this accomplishment at the beginning of the summer and hopefully with the renewed interest we can push forward. The dev team would like to thank everyone for their support. And if you have any packet captures from EQOA, it would help tremendously.
Ben and the Dev team
Hail the Knighthood of Marr(CLW)"
|