Star Trek Armada II: Fleet Operations

Star Trek: Armada II Patch 1.2 Project => PP General => Topic started by: Chael on December 13, 2007, 12:01:00 AM



Title: Galaxy Separator
Post by: Chael on December 13, 2007, 12:01:00 AM
Hi, I'm Chael. I've been working on a little modification in my spare time and was wondering if you fleetops guys have any advice for me. It apperears you guys are waist deep in disassembled armada code and as it happens, so am I. I've been attempting to modify the .exe to allow a second separatingweapon function, possibly with 3 or more ships. I know you have developed something similar to this and I was hoping you might share some of your information with me. I do not intend to release my mod due it's obvious obsolescence and the legal issues that everyone keeps telling me about, but I do want to complete it simply for the challenge. Thanks in advance.


Title: Re: Galaxy Separator
Post by: DOCa Cola on December 14, 2007, 07:30:15 PM
welcome to the forums.
modifying is not enough, you need to inject some self written code. basically you need to look at some of the weapon class functions (you should find these with the pdb) and create a new class inheriting from it. when this is done you need to create a prototype class and register it within armada.
creating the inherince class is the biggest part of work here. i did this entirely in delphi. i don't know if you can do this easier in c++ as i did in pascal. i had to recreate everything from ground up that means even virtual function table and object descriptors as obviously delphi uses its own data structures for classes. as armada 2 was programmed in ms c++ 6.0 it may be easier to create a new class with c++.


Title: Re: Galaxy Separator
Post by: Chael on December 15, 2007, 12:13:43 AM
Thank you for your reply! I'm sure i don't know quite as much about this as you, but here's what I've been looking at: I used a disassembler to get a rough understanding of the code. I traced the separatingweapon class all the way back to the other special weapons (I think). I beleive I can copy separatingweapon and it's dependants and then rework all of the address references. Do you follow? Or is this a ridiculous waste of my time? I know enough C++ to do as you described, I think. But I've never tried it. Basically I've been working with assembly and a hex version of the exe. I can't find a program that will disassemble it and reassemble it, so all my modifications are done to the hex using the assembly as a reference.


Title: Re: Galaxy Separator
Post by: DOCa Cola on December 15, 2007, 01:20:15 PM
you need to write a hooking dll and loader, that attaches the dll to armada (google for hooking). it's alot easier to write a new weaponclass from scratch as modifying the existing one. you need to call a lot of armadas existing functions for that. i don't know how that works in c++ but you could always do some assembler calls.