Pages with the tag “Reverse Engineering Earth 2150”
June 13, 2021
Reverse Engineering Earth 2150, Part 7: Mesh Files
Next thing I’m trying to make sense of is the mesh format. This one is going to be difficult.
Some background to begin with. A 3D model needs to define, at a minimum, a set of polygons defined by three or more coplanar vertices, each of which will have an x, y, and z coordinate. It may also include normal mapping and UV data for each face, though I’m not sure if Earth 2150’s do.
read more
June 10, 2021
Reverse Engineering Earth 2150, Part 6: Texture Files
So you know all those things I said I was going to do next? I didn’t. I decided to take a look at texture files instead. I know others have already reverse-engineered this format, so this was purely for my own enjoyment.
Deliberately not looking at anyone else’s work, I started with a clean slate, which meant extracting a TEX file and looking at it in my hex editor. I decided to go with the compass texture because there are several known things about it.
read more
June 8, 2021
Reverse Engineering Earth 2150, Part 5: PAR Compiler
As of this evening, I now have a working PAR file compiler as well as a decompiler. Source files in the usual place.
Most of the work up to this point has been learning about the file structure. The same knowledge that lets me decompile the file will let me recompile it from the generated sources, so I was able to turn out the first prototype compiler in an evening.
read more
June 7, 2021
Reverse Engineering Earth 2150, Part 4: PAR Decompiler
This is what it’s all been building towards. I now have a script that reads off the contents of a PAR file and dumps all the data to a series of CSV files. You can find it over on my git repo if you’re interested, as I know a few people have been. Special thanks to Alexander O., CYDI-TST, Guardian, __jmp32, Noctis, and Skeltek, variously from the InsideEARTH and United Lunar Dynasty discords, for their help in figuring out the last few details, especially to __jmp32 and Skeltek for showing me where to find the source file so I could get the field names.
read more
June 6, 2021
Reverse Engineering Earth 2150, Part 3: Vehicle Data
After talking to the Earth 2150 community a bit more, I hit the proverbial jackpot. I was able to get hold of the source file the PAR file was compiled from. It has the names of all of the fields, and they match the order of those in the PAR file. That means I have a lot more information than I did last time.
So far, I’ve adequately worked out meanings for types 1, 2, 3, 4, 6, and 7.
read more
June 5, 2021
Reverse Engineering Earth 2150, Part 2: Data Types
Since writing my last entry on reverse engineering Earth 2150, I’ve been in touch with the small community that still plays the game online. They don’t have any deep insights into the PAR file format, but they were able to point me at the SDK documentation. That doesn’t describe the format, but it does list various attributes that objects have for use in AI scripts, so I’ve got a bit more information to go on.
read more
June 1, 2021
Reverse Engineering Earth 2150, Part 1: File Structure
I’ve been playing an old game called Earth 2150 recently. It’s an RTS from around 2000 or so, and was one of the first full-3D entries in the genre. Over the weekend, I decided that instead of playing it, I’d try to reverse-engineer its data files. I made a surprising amount of progress. This post is extremely technical, particularly the later sections where I’m working out what each thing does, and probably isn’t of much interest to anyone but me, but writing all this down helps me think.
read more