I am starting work on getting EQEmu to work with Secrets of Faydwer, since it appears that it will be the last retail pack that includes all previous expansions that SoE is going to offer. Currently, I am just trying to be able to log in with it, but no luck just yet. I pulled a bunch of opcodes from SEQs nearest release to when SoF came out, and put them into the anniversary opcodes file (since I can't seem to get it to compile when I create SoF patch files). I think I can still pull more opcodes and see if that helps, but at the point it is failing, I think I will need to start trying to find the structures from SEQ and edit them into the EQEmu code.
Just wanted to mention that I am starting on this, in case anyone else is interested :) I figure that if I can get it to at least log into the world, I can start working out the rest of the opcodes and structs from that point on. Once we have enough for basic play, I think it will be ready to update the SVN with it and all can work on it together. I figure that the way Derision used to pull opcodes from 6.2 and find the opcodes in Titanium should work for finding SoF opcodes as well. Not getting very far yet, but I am determined lol. I figured that with a bit of research and learning a few things, I can make at least some progress. ATM, I think I still need the proper Opcodes to use for SoF. Once I have those, I think I will have to start on Packet Structures. I have found some decent info from the source in SEQ, but it is hard to tell which to trust, EQEmu source, or SEQ source lol. From my EQ Debug Logs: Code:
[Sat Dec 06 06:17:26 2008]00035:WorldAuthenticate: Initiating Login. |
So Far, I have the following Opcodes correct for sure:
Code:
OP_SendLoginInfo=0x6c3c #Trevius 12/07/08 - Verified Correct! Code:
OP_GuildsList |
There's a lot of different things we'll have to deal with with the SoF client too. Death and out of combat regen are a bit different and probably a billion different structures. Good luck, you're braver than I. =p
|
Ya, I figure if worse comes to worse, at least I am learning something along the way, which is always a good thing :)
My current plan is to find as many opcodes as I can. I think once I get the hang of it, it won't be too bad to find many of them. As long as I can get the important ones going, then I can move onto the next step. The next step will be to see if I can figure out how to collect packet structures from EQLive, and then compare the Titanium structures to the Live structures and see if I can figure out what might work for SoF. I imagine that the structures from SoF are still fairly close to Live in alot of ways. By looking at the added features from each expansion, it might not be too hard to figure out what to add/remove and where. I think then the main issue will be making sure that everything takes up the correct space in the structs, since that will be hard to guess. Once the old and new structures are compared, we can probably narrow it down to a few questionable pieces and try to resolve those. I also think that SEQ source might be of some help. Though, I am not sure how exact their structures are for their releases. Nothing ever gets done by lack of trying. Gotta start somewhere I guess, lol. I figure that if I can get a good start on this, maybe some people will see the progress and jump on board to help and finish it off quicker. |
Also might be worth seeing if showEQ has a patch that matches with SoF client, not sure if you have or not. They usually figure out most of the really big structures and opcodes.
|
Ya, SoF was released on November 13, 2007 according to it's wiki page, and SEQ has patches for Nov 21, 28, and Dec 17. The Opcode update wasn't until Dec 17.
Here is the list of SEQ releases: http://sourceforge.net/project/showf...ckage_id=13256 Here is a post about some changes after the expansion: http://www.showeq.net/forums/showthr...3&page=5&pp=15 And more changes discussion after the patch here: http://www.showeq.net/forums/showthr...?t=5943&page=4 The Opcodes I could find from the SEQ code don't seem to work. At least the ones I have tried so far. Though, I don't think they change them all with each patch, so maybe some of them will still work. At least it looks like they have some good struct info, or at least something to work with. It is too bad our 2 projects don't really work together, because we could both share the load in working on stuff like this and EQEmu would have been updated long ago :P Here are some of their change logs to give a timeframe idea of what they did and when: Quote:
|
Wow! I found some more good opcodes from the SEQ code that was just mislabelled on the date it was last updated. I finally made it to character select :)
Code:
[Mon Dec 08 04:07:32 2008]00035:WorldAuthenticate: Initiating Login. Code:
#Required to reach Char Select: http://www.showeq.net/forums/showthread.php?t=5975 Here is where it is failing now, from my EQ Log File: Code:
[Mon Dec 08 04:09:12 2008]00194:THE SERVER IS NOT RESPONDING. Code:
6825 [12.08. - 01:35:50] [NET__IDENT_TRACE] 192.168.1.101:3874: First opcode matched 0x6c3c and length matched 464 |
I pulled some more opcodes from the SEQ source. I didn't get them all yet, but from what I can tell, most (or maybe all) of these seem good so far:
Code:
#world packets Code:
13296 [12.08. - 04:08:47] [WORLD__CLIENT_TRACE] [OpCode OP_AckPacket (0x4d38) Size=4] |
Hmm, I guess the section in red in the logs above aren't the issue. That seems to be normal when I compare it to these logs from a Titanium login that works:
Code:
13958 [12.08. - 04:33:25] [WORLD__CLIENT_TRACE] trevadmin: Sending EQApplicationPacket OpCode 0x0103 Code:
14299 [12.08. - 04:45:48] [WORLD__CLIENTLIST] ClientList[0x08152540]::FindByAccountID(0x2) iterator.GetData()[0x8173520]14299 [12.08. - 04:45:48] [WORLD__CLIENT] trevadmin: Sending client to zone load (184) at 192.168.1.102:7503 |
Wow, nice work trevius. I can't help in the slightest, but I make a decent cheerleader. :)
Go Go T! |
I have been working alot on this over the past couple of days, but I am still not able to get in world yet. I am not exactly sure what is killing it yet, but it appears to be related to the structs for the playerprofile not being perfect. Here is the log from my EQ Debug Logs:
Code:
[Sat Dec 13 03:23:44 2008]00593:Zone Connect -- 0 -- Received MSG_ZONE_ADDRESS Code:
[Debug] [NET__RATES] 192.168.1.101:4755: Exceeded write threshold in seq with 4240/4194 bytes Code:
[Debug] [NET__FRAGMENT] 192.168.1.101:4755: Subsequent fragment: len 338, used 23610/23608. |
Also, I am getting what appears to be 2 more CRC checks that don't exist in Titanium as far as I can tell. They come in right after the CRC1 and CRC2 check, and before the Ackpacket and WorldClientReady packets. They are the same size (2056) as the CRC checks, so I assume they are 2 additional CRC checks. These occur when I am connecting to character select, but I am guessing that since the server isn't actually handling them, that it shouldn't really matter anyway. My guess is that they are sent so that the server can disconnect you if they don't match (when playing on live). Since the emu doesn't care if they match or not, it probably isn't coded to disconnect them if they don't match. So, I am guessing that not having the opcodes for them shouldn't really make a difference. But, here are the logs from them anyway:
Code:
25686 [12.13. - 03:47:57] Unable to convert EQ opcode 0x22cf to an Application opcode. |
And right after the AckPacket and WorldClientReady, I get this new opcode 0x58FB, which I am not sure about either:
Code:
25686 [12.13. - 03:48:16] [WORLD__CLIENT_TRACE] [OpCode OP_AckPacket (0x4d38) Size=4] EDIT: After looking into it a bit more, this 3rd unknown opcode does show up when connecting with Titanium as well, only it uses 0x6A5F, which from what I can tell is the auto-AFK opcode. It is "unknown" in Titanium as well and doesn't cause problems, so it shouldn't be an issue at all for SoF. I am pretty sure we can at least ignore this particular one (0x58FB), since it appears to be AFK related. |
I finally made a little more progress. I am 1 step closer to being able to get in game now lol. I have been trying to figure out the size of the playerprofile struct so that I could at least get the EQ Debug log to show me reaching the next step. After trying many other ways, I finally figured it out by looking at the IDA Assembly code and finding the error I was getting and then checking the HEX for that was causing the error to happen. I checked the HEX and it came out to be 5C18, which is 23576. I checked IDA for Titanium and the same code matched the PlayerProfile size for Titanium (19592). I did another compile with the new structure size and now I am getting this:
Code:
[Mon Dec 15 07:06:53 2008]01792:Zone Connect -- 0 -- Received MSG_ZONE_ADDRESS heroic_agi heroic_cha heroic_dex heroic_int heroic_sta heroic_str heroic_wis I also see these that aren't listed in my Items Table currently, but they may just be newly discovered Uknowns that already exist, but aren't labeled properly: spelldmg backstabdmg clairvoyance dsmitigation healamt I am not sure if that would cause a crash or not, but I guess I will try adding those and see what happens. Not that it really means much to me, but this seems to be the part where those errors get generated if it isn't equal to whatever check is being done here: Code:
.text:004C0CD3 loc_4C0CD3: ; CODE XREF: sub_4C0A50+5Cj |
According to the script from 13th floor that dumps items, here:
http://eqitems.13th-floor.org/svn/sc...ump/fields.txt It looks like the current list of item fields is in this order: Code:
itemclass |
All times are GMT -4. The time now is 07:01 AM. |
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.