PDA

View Full Version : PoR Beta



spack
01-14-2006, 08:10 PM
Is anyone in the PoR Beta that knows how to work on patching SEQ? I am in the Beta but I am a tard when it comes to code and such. I understand about NDA agreements and I will not talk about the beta. But, since SEQ is kind of against the rules and I use it anyway, is there something I can do to help progress of the code so that it's working for beta and future releases? I really don't know how Purple and others go about patching SEQ as soon as it breaks by a game patch, but I'm willing to give learning a shot if someone wants to help me. Or if others are working on this, I'm willing to render assistances.

Regards...

purple
01-14-2006, 09:19 PM
I'm not in beta and I don't plan to pay any attention to it personally until it goes live.

There are really just 3 places that change with the network stream: protocol changes (very rare), opcode changes, and structure changes.

If there are protocol changes, I'd be kinda surprised. But hey anything is possible.

Opcodes are just numbers on each application-level packet (one protocol-level packet can contain either multiple application-level packets, one application-level packet, or a partial application-level packet). Those numbers map to functionality (i.e. there is an opcode for a spawn appearing in a zone, there is an opcode for you hitting spacebar to jump, etc.). The mapping of numbers to functionality changes frequently and needs to be remapped. This involves turning on Network->Log->Zone Data and identifying packets and fixing their mapping in zoneopcodes.xml (and likewise for world opcodes, but there are much less of those).

On the other side of that number->functionality mapping there are structs. This is the payload of the application-level packet. A struct just describes those bytes. So with the new spawn opcode, it's a lot of information like the spawn name or how fast it runs or whether it should display its helm graphic, etc. These structs change (which means the format of the data on the wire changes) frequently as well. Sometimes new information shows up, other times the struct just sort of moves around.

So, when I start seq up and nothing shows up, then it's pretty obvious there are opcode changes. Once I fix some important opcodes, if size mismatch errors start popping up in the console, then it means structs have changed.

Fixing seq on patch day is nothing more than making sure the opcodes that are important to seq are mapped correctly and that the structs that are important to seq are properly aligned. If they aren't, then for the most part i use visual inspection of packet dumps to fix opcodes or fix structs. Once you get used to certain things, it makes it go quicker. Starting out, I'm sure it's a bunch of gibberish.

As an example, what normally happens is:
1) Oh crap seq doesn't work
2) Turn on Network->Log->World Data and Network->Log->Zone Data
3) Look at world.log and compare it to a known good world.log to make sure opcodes look the same. The only really important one to seq functionality is OP_GuildList which is obvious from the world.log
4) Look at zone.log for a zone starting with OP_PlayerProfile (which is obvious) and compare it to a known zone log to find struct size changes and remap opcodes. Notice that all opcodes changed again, player profile gained 16 bytes, and OP_ZoneEntry from the server gained 8 bytes
5) For charProfileStruct, make sure the zone id is correct. If it is, add unknown padding to match size to the end. If it's wrong, dump the player profile and see how things are lining up and try to add the padding to make the obvious bits line up properly.
6) For spawnStruct, notice that it's totally reorganized and #if 0 the old one out and rebuild it from scratch moving fields from the old to the new struct as they are found
7) Recompile and hope things start working a bit. Fix any alignment or size issued caused by poor adding skills for sizing unknowns.
8) Walk the zoneopcode xml from top to bottom filling in opcodes that are important or easy

That's what I do *shrug*.

uRit1u2CBBA=
01-15-2006, 06:27 PM
I wanted to sit down this weekend and play around with this, but got ill and just didn't feel like it - I may try during slow times in the week from my normal job.

By the looks of it, it's just structure changes. But that can be as easy as adding a few bytes at the end, to as complicated as rearranging all the variables.

I'll honestly be surprised if I can get the time to get this working before PoR goes live.

uRit1u2CBBA=
01-16-2006, 01:12 AM
Well, seems I can be surprised at myself. :) Kids fell asleep early, was an off-night in my guild from raiding, so I had time to sit down and putz with this.

It isn't 100%, but it should do what needs to be done until Purple can find the few things I missed when it's released (presuming they don't rearrange everything again)

Download the following file: everquest.h (http://www.llaffer.com/misc/everquest.h), backup the production version of everquest.h (found in the src directory of the tarball) so you can go back to Live if you want, put the downloaded version in the src directory, re-compile (and re-install).

A patch can be generated if asked, but with re-numbering of the offsets, it's pretty much going to re-patch the entire structure vs. just the pieces changed.

When you want it to go back into Live mode, you'll have to replace the everquest.h file with the original one you were supposed to have backed up (backing up the beta version first, of course).

Good luck :)

Cryonic
01-16-2006, 01:25 AM
Or better yet, since the only difference is in the structures, instead of doing "make install", simply copy the showeq binary to the same place as the normal one, but name it differently.

e.g. cp showeq /usr/local/bin/showeq-beta

then launch that file instead.

This way you can go from live to beta and back again without rebuilding SEQ.

spack
01-17-2006, 04:03 PM
Wow! Thank you both of you. One day I'll learn how you guys make all this stuff happen. I did the copy thing and named it showeq-beta. Seems to work fine. Happy days!

uRit1u2CBBA=
01-20-2006, 09:12 PM
The old beta everquest.h won't work with 5.2.5. I've updated it at the link here (http://www.llaffer.com/misc/everquest.h) (same link as above) so you can grab the latest copy.

kraim
02-04-2006, 12:40 AM
Other than going out and buying a new Box and getting showeq is there any way to get the ingame maps for beta?

purple
02-04-2006, 07:13 AM
If you don't have in-game maps, there aren't showeq maps either. They more or less use the same maps.

uRit1u2CBBA=
02-04-2006, 01:30 PM
Usually, rogues will have made some maps up during beta and submitted it to mapfiend. Mapfiend will make them public on release day (or at least when NDA is lifted)

I<3EQ
02-05-2006, 11:04 AM
Also, check the beta boards. I think someone last week posted the maps they made. Since only people in beta (and covered by the NDA) use the boards, they allow posting of maps.

Fatal
02-15-2006, 11:53 PM
could someone send me the short and long zone names for PoR? Thanks.

purple
02-16-2006, 10:14 AM
From the 1/18/2006 live .exe (not the beta .exe). Again, like last time, no guarantees this will go live.



369 3630 arcstone Arcstone
370 3631 relic Relic
371 3632 skylance Skylance
372 3633 devastation The Devastation
373 3634 devastationa The Seething Wall
374 3635 rage Sverag, Stronghold of Rage
375 3636 ragea Razorthorn, Prison of Sullon Zek
376 3637 takishruins Ruins of Takish-Hiz
377 3638 takishruinsa The Root of Ro
378 3639 elddar The Elddar Forest
379 3640 elddara Tunare's Shrine
380 3641 theater Theater of Blood
381 3642 theatera Deathknell, Tower of Dissonance
382 3643 freeporteast Freeport East
383 3644 freeportwest Freeport West
384 3645 freeportsewers Freeport Sewers
385 3646 freeportacademy Academy of Arcane Sciences
386 3647 freeportttemple Temple of Mith Marr
387 3648 freeportmilitia Freeport Militia House
388 3649 freeportarena Arena
389 3650 freeportcityhall City Hall
390 3651 freeporttheater Theater
391 3652 freeporthall Hall of Truth
392 3655 ro The Desert of Ro

purple
02-16-2006, 10:28 AM
From the 2/15 beta .exe. There are some differences.



369 3630 arcstone Arcstone
370 3631 relic Relic
371 3632 skylance Skylance
372 3633 devastation The Devastation
373 3634 devastationa The Seething Wall
374 3635 rage Sverag, Stronghold of Rage
375 3636 ragea Razorthorn, Tower of Sullon Zek
376 3637 takishruins Ruins of Takish-Hiz
377 3638 takishruinsa The Root of Ro
378 3639 elddar The Elddar Forest
379 3640 elddara Tunare's Shrine
380 3641 theater Theater of Blood
381 3642 theatera Deathknell, Tower of Dissonance
382 3643 freeporteast Freeport East
383 3644 freeportwest Freeport West
384 3645 freeportsewers Freeport Sewers
385 3646 freeportacademy Academy of Arcane Sciences
386 3647 freeporttemple Temple of Marr
387 3648 freeportmilitia Freeport Militia House
388 3649 freeportarena Arena
389 3650 freeportcityhall City Hall
390 3651 freeporttheater Theater
391 3652 freeporthall Hall of Truth
392 2275 northro North Ro
393 2276 southro South Ro

Fatal
02-16-2006, 09:04 PM
Like last time, much appreciated.

uRit1u2CBBA=
02-16-2006, 11:13 PM
FYI - NDA lifted as of Thursday evening.

Fatal
02-20-2006, 03:53 PM
Yeah. I've added the maps to the database so they are available now. thanks.

Hendrix_Morton
02-21-2006, 10:05 PM
Tried putting the linked everquest.h file in my src directory, doing a ./confgiure, make, and make install, and not gettin any skittles...

Keep getting a warning during running about OP_AAExpUpdate (0x3367) (dataLen: 8) doesnt match: sizeof(altExpUpdateStruct):12

Did I bork something up in the recompile, or did Sony change something else since that .h file was tested ?

>HM<

spack
02-21-2006, 10:30 PM
Yeah, lot has changed since that code worked in the beta. Now that it went live (today), I'd be expecting a new live version soon (/praying). :eek:

uRit1u2CBBA=
02-21-2006, 10:32 PM
yeah, SEQ for beta hasn't worked in about a month - they changed opcodes and more structure differences that I've not been able to iron out.

spack
02-21-2006, 10:51 PM
Thanks for all the work you did before. I got kind of busy with real life. Factor in my guild fell apart and I had to do the dog and pony show to join another guild :( Had no time free to play in beta after the first few weeks.