• Welcome to Valhalla Legends Archive.
 

F1 2002 selfmade Dedicated Server

Started by ThePro, June 09, 2007, 07:13 AM

Previous topic - Next topic

ThePro

Finally I have enough information, to make the server. :)
I was wrong with that the Server changes random pieces of Bytes before forwarding the packets.
I found out, that just one byte will be changed, where the PlayerID of the geometry stuff is stored. With that you can define, on which player the following information will take effect.
The rest will be forwarded 1:1 except 4 bytes. If you still let them on their values you received from the client, it will  work anyway (dunno whats the sense then).

Fortunally the PlayerID will be set by the client so I dont have to write a routine for it. Now its also unnessecary to know which speed, forces etc. will be transmitted.

//Game Protocol
F1_GC_PLAYERDATA: 0x00BE0960

Unknown: 04 01 08 BE 00 3A
PlayerID: (BYTE, union)
    Unknown (10 bits)
    ID(4bits)

Geometry stuff:
0C 80 10 28 CD 15 45
FD 78 6A C2 82 E6 F8 C0 AB 0E 9A 41 ED FF DE F3
00 00 0D 0D 05 05 00 00 00 00 00 00 FB FF 00 00
00 00 00 00 00 00 00 00 DC FF 06 00 40 F1 0F 00
00 A0

ThePro

#16
I've deceided to make something like the BnetDocs to collect my researches.
Here it is: page is down, use my bitbucket page instead:
http://bitbucket.org/thepro/f1-2002-dedicated-server/wiki/packets


If someone is interested in researching F1 2002 too, please write me a private message in this forum.

ThePro

#17
After two years I decided to continue this project.

I'm using mercurial now, which is a very cool version control system.
The whole project will be open source and it will be available on bitbucket.org for everyone.

This is the wiki of the packets I reversed yet:
http://bitbucket.org/thepro/f1-2002-dedicated-server/wiki/packets

If you are good in reversing and/or python and are interested to help me feel free to contact me.

ThePro

Are there any tips on how to find the routine which build the packets?
I already found the routine which copies the data into the send() buffer  (By setting a breakpoint on send() and tracing up) but I need to know how this data is built.

The Problem is it seems I am stuck in an endless loop (Thats a network thread which waits for the data to be sent I guess)

Setting a breakpoint on the data which will be copied in the buffer doesen't help, since olly breaks all the time then when leaving step mode. (Dynamic allocation)