Extending the shiplist

Extending the shiplist; support/discussion/questions

Moderator: thunderchero

User avatar
DCER
Code Master
Code Master
Posts: 683
Joined: Sat Apr 26, 2008 2:00 am

Extending the shiplist

Post by DCER »

On the old forum Joker posted this info for trek.exe:

Number of ships is at 454537 (0x0006EF89) and 454703 (0x0006F02F).

Edo Guardian ID is at 324018 (0x0004F1B2)

Combat Drone ID is at 324087 (0x0004F1F7)

However If you extend the shiplist, you'll get a "Not a monster I've heard of" error


Joker wanted to find the ID's of other monsters. Here they are:

Borg Cube is at 323291 (0x0004EEDB)

Calamarain is at 323803 (0x0004F0DB)

Chodak is at 323674 (0x0004F05A)

Crystal Entity 323611 (0x0004F01B)

Gomtuu is at 323873 (0x0004F121)

Husnock is at 324146 (0x0004F232)

Tarellian is at 323955 (0x0004F173)

Don't know if the orbital battery is in there, but it doesn't matter because it's not being used.


Each monster ID is the size of 2 bytes followed by 3 bytes and an index to lexicon.dic entry with the monsters name.

If you set all the above values you still get the "Not a monster I've heard of" error. But this error happens only when botf tries to add aliens with ID > 124 to the game.

So if you add one ship to the playlist you can play the game normally - aliens are of the right type and you hear the right voices when fighting them - if the game tries to introduce tarellians, the game will crash. If you play without randoms, you could extend the shiplist by 4 ships maximum.

One thing I've noticed is that when I extended the shiplist and the borg came - they were unable to bombard systems. They behaved like the borg and parked on the nearest populated system, but turn after turn nothing happened.

Things I've tried to fix the "Not a monster I've heard of" error and didn't work:

I've extended the list by 5 ships, so the Edo Guardian would throw the error everytime I create a new game unless the error is fixed.

- I replaced every value of 78 00 (old Edo ID) with 7D 00 (new Edo ID) one by one

- I replaced every value of 7C 00 (last ship index) with 7D 00 (to include the Edo) one by one

- I replaced every value of 7D 00 (old number of ships) with 7E 00 (number of ships + 1 to include the Edo) one by one

- I've set a fixed possition for the aliens in shiplist.sst, so they stayed in the same position in the file, only their ID's changed.

None of the above worked. If anyone wants to play with this, I can send them a dev version of UE which will auto-set the trek.exe values for them (ship numbers and monster ID's).
User avatar
DCER
Code Master
Code Master
Posts: 683
Joined: Sat Apr 26, 2008 2:00 am

Post by DCER »

Thanks to advice from Joker this is now solved.

At 324439 (0x0004F357) is an unsigned byte that needs to point to the first alien ship in shiplist.sst (borg cube).

Changing it will fix the "Not a monster..." error and also aliens will behave as they should - borg for instance assimilate systems.

Also the ID for the orbital battery isn't in there, it's just ignored.

The next version of UE will (or rather does as it's already implemented) allow people to add ships to the shiplist, making the shiplist bigger. I still have to fix a feature that doesn't work on extended shiplist and add the option to delete ships. And then there is life...

EDIT:

I've uploaded an extended shiplist to my 4shared folder, each major race has two additional strike cruisers (I). In total ten ships are added.

You need a vanilla instalation, a modified no-cd exe is included. Make sure you edit stbof.ini and copy disk.id, the english or german folder and test.wav from your cd to the installation directory if you haven't already.

Add the *.sst files to stbof.res - make sure you aren't using winzip or botf will crash badly.

If UE 0.6.3 miss-behaves and you want to edit the new ships let me know.

Here's the link. Go to Botf->Experimental
User avatar
thunderchero
Site Administrator aka Fleet Admiral
Site  Administrator aka Fleet Admiral
Posts: 7936
Joined: Fri Apr 25, 2008 2:00 am
Location: On a three month training mission, in command of the USS Valiant.

Post by thunderchero »

WOW!!!!!

This is a big break though is there any limit to how many ships can be added?

Edit; I have been testing Experimental files all night this is great I can't wait for new UE please send it to me to test.
I WANT IT......please
If you could only see me drooling right now...

so only limit would be sharing trek.exe phaser slots And we have learned how to do that. (200 new ships for UDMIII and every minor has a ship) but I am only dreaming that would be 10 updates away. we are having problems just replacing all vanilla ships.

thunderchero
User avatar
DCER
Code Master
Code Master
Posts: 683
Joined: Sat Apr 26, 2008 2:00 am

Post by DCER »

Hi thunderchero,

I've sent you UE through email.

The limit if I understand it correctly is 255 ships plus aliens. But I think there might be a limit per race as well.
matress_of_evil
Lieutenant-Commander
Lieutenant-Commander
Posts: 213
Joined: Sat Apr 26, 2008 2:00 am
Location: South Wales - Not The Australian One, The Other One!

Post by matress_of_evil »

Wow this IS good news!

We've been working hard to make models for BOTF2 - in fact we're aiming to have over 200 ships in the game, so if you guys need or would like to share models, please let us know. BOTF2 is still a community-led project so any collaboration would be of benefit to all.

Kenneth_of_Borg is in charge of the models so any model sharing would have to be done through him. You can browse our model database at any time from Here though. You will need an account to add/edit/delete files, (Which you can get from Mstrobel on the BOTF2 forums) but ALL the files can be downloaded for free. Like I said though, Kenneth is in charge of the models though so you will have to ask him about permissions.
Check out the latest news for Star Trek: Supremacy, Birth of the Empires and more at Star-Trek-Games.com!

"Anyone without a sense of humour is truly at the mercy of the rest of us."
User avatar
siggi
Lieutenant-Junior Grade
Lieutenant-Junior Grade
Posts: 64
Joined: Sat Apr 26, 2008 2:00 am
Location: Germany

Post by siggi »

*nods in overwhelming agreement with thunderchero's post :-D :-D!

This is excellent news, indeed! Mind if you send me over the new UE test version as well? ;-) I wouldn't mind at all to do some additional translation work, if any is necessary...

Now on the other hand... Do you have the slightest idea of what this means to us in terms of workload for UDM III? :lol: :lol: There is no way for us now to turn down anyone's request for added ships in the mod... But well, who needs sleep, anyway?

My mind just starts reeling out ideas what we could put into the mod as well... You said once, minor races were not limited to one ship type, didn't you?

Imagine Fighter squadrons and additional upgrades for later techs... meaning rebalancing all the stats and tech trees and stuff... *gulps. I better be off getting started. So please, mail me the new version, pretty please? :-D

Congrats and rounds of applause to you! :D :D

Cheers,
Siggi
...of course, this was also true at the Birth of the Federation...
_______________________________
Download UDM III and patches here:

http://www.4shared.com/dir/2718319/cd23df1/sharing.html
User avatar
DCER
Code Master
Code Master
Posts: 683
Joined: Sat Apr 26, 2008 2:00 am

Post by DCER »

@siggi:

I've sent you an email.

Yes, minor races will happily build more than one ship type. And I'm sorry for the trouble I've caused :wink:
User avatar
Gowron
Code Master
Code Master
Posts: 304
Joined: Sat Apr 26, 2008 2:00 am
Location: 50° N, 11° E

Post by Gowron »

Congratulations DCER and Joker, this is really great 8)

Didn't think this would ever be solved. Now we have a lot of possibilities to test and play around with :)

Just one question, are there any problems with the list of minor race ships starting at a greater offset than before in shiplist.sst?
sean_west wrote:Is it possible to have minors building and using colony ships like in the show, some races have several sytems where they have expanded?

This would be a cool addition, to have 3 or 4 doing this, little sub-empires?
They can be assigned colony ships and troop transports, but unfortunately the minor race AI cannot make use of them and just treats them as warships instead.
A discovery consists in seeing something everybody has seen and at the same time thinking something nobody has thought yet.
User avatar
Joker
Ensign
Ensign
Posts: 22
Joined: Thu May 01, 2008 2:00 am
Location: Vienna
Contact:

Post by Joker »

Gowron wrote: Just one question, are there any problems with the list of minor race ships starting at a greater offset than before in shiplist.sst?
No
The monsters where the problem
not the minors.

edit:
my own editor now support a longer shiplist and modify trek.exe as well
http://www.4shared.com/file/49703002/a1 ... pedit.html
trek.exe must be placed in the same folder as database.txt

J-shipedit x "c:\fol der\shipfolder" "d:\fol der\datafolder"
extract information about ships from *.sst files
and store those infos in database.txt

J-shipedit c d:\folder\datafolder c:\folder\shipfolder
generate *.sst files from database.txt

database.txt is a textfile that can/must be modified with notepad
User avatar
DCER
Code Master
Code Master
Posts: 683
Joined: Sat Apr 26, 2008 2:00 am

Post by DCER »

Ok, I've found another alien id test. The value at 303045 ( 0x49FC5 ) needs to be changed to the first monster's id. I've done tests and didn't have any more crashes.

I've uploaded a new version of UE which will set this value as well as others. Just add and remove a ship to make UE edit those values. I hope it works now without any more problems.
User avatar
Joker
Ensign
Ensign
Posts: 22
Joined: Thu May 01, 2008 2:00 am
Location: Vienna
Contact:

Post by Joker »

User avatar
Gowron
Code Master
Code Master
Posts: 304
Joined: Sat Apr 26, 2008 2:00 am
Location: 50° N, 11° E

Post by Gowron »

Let's complete the list :)

There's another monster list check at
0x49DA5 (1 byte)
and yet another one at
0x4E878 (1 byte).

Also, it is VERY likely that there are two more monster list beginning pointers at
0x4E698 (4 bytes)
and
0x4F0E0 (4 bytes).

I'll also provide a list of all remaining integers of the values 0x73 in trek.exe. If you still get a monster list crash and the above values don't work, then you can try these. But there's no evidence that they've got anything to do with the monster list.
4 bytes:

Code: Select all

8A4CC
8BF5A
AE0BC
B0B7F
10D2C6
1 byte:

Code: Select all

CCB
D4E
D49D
2A737
34DE7
855AF
856F7
85803
858A3
86556
86626
866D2
A52DC
155165
Of course there are lots of occurrences of 0x73 in trek.exe, but many of them are jump commands or parts of offsets, so there's no need to check them all. (I should note that there's a small chance that my disassembler could not find all resp. integers)
A discovery consists in seeing something everybody has seen and at the same time thinking something nobody has thought yet.
User avatar
DCER
Code Master
Code Master
Posts: 683
Joined: Sat Apr 26, 2008 2:00 am

Post by DCER »

Good work finding those!

The first two are definitely alien id checks.

I'm looking at the one at 0x4E698 and the assembly code around it, I'm not sure what it does. I think I'll do some debugging to see what values it's loading and from where.

In a called function 0x73 is compared to another value and the check is: if lower or equal.

If the loaded value is lower or equal than 0x73 then continue else exit.

It could be checking non alien ships (and loading them it seems), but the check is then faulty, because the borg ship then gets included to non-alien ships.

And from what I can tell the function returns true (check went well) or false (quick exit), but this value isn't being checked in the calling function.

EDIT:

ok, edx is always being compared to the total number of ships. And edx seems to be ship id. This function is being called from others and the id's aren't sequential.

It seems to load ship data and then compare the ids (if it got the right one)

0x4E698 is used when a cube spawns for the first time, but not when copies are made after system assimilation. so 0x73 is most likely the cube id.

Interestingly the new cubes name seems to get incremented (didn't notice this before), if last cube name is 237 of something then the name for the new one is 238 of something.
User avatar
DCER
Code Master
Code Master
Posts: 683
Joined: Sat Apr 26, 2008 2:00 am

Post by DCER »

Ok I was wrong, 0x4E698 gets called even when no cubes spawn. And it seems to be reading the empsInfo file. I'm not sure what this does anymore. Runs through successfully and no cubes appear.

The fourth one (0x4F0E0) is reading from the lexicon.dic, specifically entry 115 which reads: "the Calamarian"
User avatar
Gowron
Code Master
Code Master
Posts: 304
Joined: Sat Apr 26, 2008 2:00 am
Location: 50° N, 11° E

Post by Gowron »

DCER wrote:Ok I was wrong, 0x4E698 gets called even when no cubes spawn. And it seems to be reading the empsInfo file. I'm not sure what this does anymore. Runs through successfully and no cubes appear.
A really enigmatic value, it seems. I can't pin it down either.
DCER wrote:The fourth one (0x4F0E0) is reading from the lexicon.dic, specifically entry 115 which reads: "the Calamarian"
Ah, ok, so that's why it was next to the Calamarain ID :D
Thank you very much, that leaves just one hot candidate (0x4E698) :)
Joker wrote:J-shipedit 1.2.4

mod too
0x49DA5 (1 byte)
0x4E878 (1 byte)
0x49DA5 (1 byte)
0x4E878 (1 byte)
0x4E698 (4 bytes)
0x4F0E0 (4 bytes)
As DCER pointed out, 0x4F0E0 is just a lexicon pointer, so it should remain unchanged.
As for 0x4E698, we're not sure yet :? (see above)
A discovery consists in seeing something everybody has seen and at the same time thinking something nobody has thought yet.
Post Reply

Return to “Extending the shiplist”