Putting the 'role' back in role-playing games since 2002.
Donate to Codex
Good Old Games
  • Welcome to rpgcodex.net, a site dedicated to discussing computer based role-playing games in a free and open fashion. We're less strict than other forums, but please refer to the rules.

    "This message is awaiting moderator approval": All new users must pass through our moderation queue before they will be able to post normally. Until your account has "passed" your posts will only be visible to yourself (and moderators) until they are approved. Give us a week to get around to approving / deleting / ignoring your mundane opinion on crap before hassling us about it. Once you have passed the moderation period (think of it as a test), you will be able to post normally, just like all the other retards.

Arcanum Arcanum Multiverse Edition

Hirato

Purse-Owner
Patron
Joined
Oct 16, 2010
Messages
3,930
Location
Australia
Codex 2012 Codex USB, 2014 Shadorwun: Hong Kong
Macbeth Corvell

Maybe one of you two can help me instead, can either of you tell me how the various files of arcanum are read, eg the ART, map, or prototype files?

If you do, please share,
Though it to be useful to me, I will need whatever you have to be structured similarly to this, which is just a quickie I wrote up to describe Arcanum's DAT files.
Code:
The dat files are structured in this order

1. Series of zlib deflate streams
2. number of DatEntry items
3. The DatEntry items
4. DatFooter

So to read it, you first jump to the end of the file, then you back up sizeof(DatFooter) bytes and read the footer.
The DatFooter looks like this and weighs 28 bytes.

struct DatFooter {
   char uuid[16]; //no idea what this is used for
   char magic[4]; // should be 1TAD to indicate a valid file
   uint filenameTotalBytes; // size in bytes of all filenames in the archive put together, serves no purpose unless you want to address the items in one big buffer
   uint datEntryStartFromEnd; // basically a sum of bytes of everything written that isn't a deflate stream
};

Once you've read the footer, you should be back at the end of the file.
You now want to backup datEntryStartFromEnd bytes so you jump right after all the deflatestreams in the archive.

So basically you want to now fseek(archiveStream, filesize - footer.datEntryStartFromEnd, SEEK_SET);
Here you read an integer from the file, and this is the number of DatEntry objects that are in the file, then you just iteratively load them.
Each DatEntry object looks like this:

struct DatEntry {
   enum EntryType
   {
       STORED     = 0x00000001, //It's just stored, not a deflate stream
       COMPRESSED = 0x00000002, //deflate stream
       DIRECTORY  = 0x00000400  //a directory
   };

   const char *filename;
   uint unk_value; // no idea, probably a crc or an offset
   EntryType type;
   uint originalSize; //size of uncompressed blob
   uint deflateSize; //size of the deflatestream blob
   uint offset; //position in the fileStream where the deflatestream blob starts
};

To read the filename, you read an int, this will get you the string size to allocate. Then you read size bytes from the stream; the filename read includes a terminating '\0' character so you do not need to account for it.
Then you read another 5 integers and store them in the respective fields and you're done.

To then load a file, you just jump to the offset and use your favourite tool/library to 'reinflate' the deflate streams - eg zlib
 

Corwell

Novice
Joined
Jul 9, 2017
Messages
9
Location
Russian Lodka
Maybe one of you two can help me instead, can either of you tell me how the various files of arcanum are read, eg the ART, map, or prototype files?

If you do, please share,
Though it to be useful to me, I will need whatever you have to be structured similarly to this, which is just a quickie I wrote up to describe Arcanum's DAT files.

We work with the structure and sequense of DAT files. That meanes we put in one DAT graphics, in the another DAT - sound, in the third - resources with Russian-language or English-language content, depending on the language of the game (such DAT-file has ENG and RUS versions).
If you just need this, then we'll tell you everything. If you need something at the programming level, then we cannot help you, 'cause we're not coders (despite the fact that we use WinHex for some purposes).
 

Hirato

Purse-Owner
Patron
Joined
Oct 16, 2010
Messages
3,930
Location
Australia
Codex 2012 Codex USB, 2014 Shadorwun: Hong Kong
Maybe one of you two can help me instead, can either of you tell me how the various files of arcanum are read, eg the ART, map, or prototype files?

If you do, please share,
Though it to be useful to me, I will need whatever you have to be structured similarly to this, which is just a quickie I wrote up to describe Arcanum's DAT files.

We work with the structure and sequense of DAT files. That meanes we put in one DAT graphics, in the another DAT - sound, in the third - resources with Russian-language or English-language content, depending on the language of the game (such DAT-file has ENG and RUS versions).
If you just need this, then we'll tell you everything. If you need something at the programming level, then we cannot help you, 'cause we're not coders (despite the fact that we use WinHex for some purposes).

I kind of want to make the OpenMW equivalent of Arcanum.
Alas I have absolutely no reverse engineering skills to speak of, and seemingly the people who have reverse engineered the formats with some success have just disappeared off of the face of the earth.
 

YES!

Hi, I'm Roqua
Dumbfuck
Joined
Feb 26, 2017
Messages
2,088
I just want to thank any and all modders of Arcanum and other great rpgs. And I am also looking forward to the next release. Thank you guys.
 

luj1

You're all shills
Vatnik
Joined
Jan 2, 2016
Messages
12,699
Location
Eastern block
-- Because now the followers in the UAP can be manually leveled, a la Dragon Age. This is completely optional, the only difference is the buttons in their character sheet are now active so you can disable their auto-level scheme if you wish and distribute the points yourself. Of note, this is coded differently than the Follower Editor trainer I've mentioned earlier in this thread.

auto-level schemes are still locked for me. I'm using Multiverse 1.3.0.0.

Am guessing that's a newer release of UAP from the one integrated with Multiverse?
 
Last edited:
Self-Ejected

Drog Black Tooth

Self-Ejected
Joined
Feb 20, 2008
Messages
2,636
-- Because now the followers in the UAP can be manually leveled, a la Dragon Age. This is completely optional, the only difference is the buttons in their character sheet are now active so you can disable their auto-level scheme if you wish and distribute the points yourself. Of note, this is coded differently than the Follower Editor trainer I've mentioned earlier in this thread.

auto-level schemes are still locked for me. I'm using Multiverse 1.3.0.0.

Am guessing that's a newer release of UAP from the one integrated with Multiverse?
You should try reading this thread more thoroughly. Really failing your reading comprehension here bro.

This and many other engine improvements that I've talked about in this thread were coded for the proposed UAP 2.0 update which has been postponed indefinitely.

It was supposed to be a huge update that would fix many long standing issues with the game and add various follower/combat/character creation related features, more restored cut content etc, all in a big installation package with many boxes to check off. And yes, it is largely done, but you know how it goes, the last 10% of the development takes forever, can't be bothered to do all the grunt work to polish it.

Not to mention that my trip down the memory lane is completely over. I've thoroughly enjoyed this particular nostalgia rush, but there's no point in obsessing over this old hat of a game, now is there.
 
Last edited:

luj1

You're all shills
Vatnik
Joined
Jan 2, 2016
Messages
12,699
Location
Eastern block
if that's a release which is 90% completed it'd be terribly irrational and unoptimal to scrap it despite everything.

Does your FollowerEditor work with Multiverse at least?
 
Last edited:

Ent238

Barely Literate
Joined
Jul 20, 2017
Messages
1
Yo Drog came across this thread on the internet when I was looking up Arcanum stuff.

Wanted to register and say that I seriously appreciate all the work you've put in to Arcanum over the years and please don't let the work you've done on the new UAP go on the scrapheap. I rediscovered Arcanum relatively recently after like a 15-16 year hiatus and was probably only able to enjoy it in a playable state thanks to the work you threw in to it about a decade ago.

Keep on truckin bro.
 

hell bovine

Arcane
Joined
Sep 9, 2013
Messages
2,711
Location
Secret Level
Not to mention that my trip down the memory lane is completely over. I've thoroughly enjoyed this particular nostalgia rush, but there's no point in obsessing over this old hat of a game, now is there.
Obsessing? Nah, not really. But as my gaming time is getting shorter (while I'm getting older :lol:), I just don't have the patience anymore for all the new flashy titles that turn out to be disappointments anyway. Indies and oldies is what keeps me gaming. So thanks for your trip down the memory lane, it's appreciated! ;)
 

OracleX

Augur
Patron
Joined
Jul 18, 2007
Messages
351
Divinity: Original Sin Project: Eternity Torment: Tides of Numenera Shadorwun: Hong Kong Divinity: Original Sin 2
with Grimore out, im pretty sure that Drog can finish this somewhere in the coming 20 years too!
 

Gepeu

Savant
Patron
Joined
Oct 16, 2016
Messages
986
So I've finally started a playthrough with Multiverse added.

And holyfucking shit :argh: after Virgil kamikaze'd himself in the wolf's cave, I've mechanically went Save game and fucked up my only slot, instead of loading the slot :argh::argh::argh: I didn't even bother with secondary slots, since I was like 1 hour in :argh::argh::argh: I don't really want to restart the game now. But it seems I have to, I hate to loose him this early. :negative:

Or would you encourage me to press on and play without him?
 

Goral

Arcane
Patron
The Real Fanboy
Joined
May 4, 2008
Messages
3,552
Location
Poland
Or would you encourage me to press on and play without him?
Sure, why not? You will take him with you the next time you play it (and you will play it again, that's guaranteed) and without Virgil you will have one follower spot empty.
 

YES!

Hi, I'm Roqua
Dumbfuck
Joined
Feb 26, 2017
Messages
2,088
So I've finally started a playthrough with Multiverse added.

And holyfucking shit :argh: after Virgil kamikaze'd himself in the wolf's cave, I've mechanically went Save game and fucked up my only slot, instead of loading the slot :argh::argh::argh: I didn't even bother with secondary slots, since I was like 1 hour in :argh::argh::argh: I don't really want to restart the game now. But it seems I have to, I hate to loose him this early. :negative:

Or would you encourage me to press on and play without him?

He is one of the companions with a lot of content and does well if you are magic or tech. The dwarf is the other main one. Spoiler - the dwarf is very mechanically inclined but does well even if you go high magic. He will not join you if you have idiot savant or really low intelligence.
 

YES!

Hi, I'm Roqua
Dumbfuck
Joined
Feb 26, 2017
Messages
2,088
Of all companions, Virgil is the one that that actually has a lot of story. I say restart, I would hate to have missed him on my first playthrough.
Besides, replaying the first hour of a game will be significantly faster.

Wow, we posted at the same time. I agree. An hour is nothing in Arcanum and he will probably waste a lot more time reverting to earlier saves if he is anal retentive in later parts of the game.
 

Starwars

Arcane
Joined
Jan 31, 2007
Messages
2,829
Location
Sweden
On the other hand you won't have to listen to his annoying bark quotes whenever he gets low on health and all that.
 

Gepeu

Savant
Patron
Joined
Oct 16, 2016
Messages
986
I played Arcanum 10 or 11 years ago, but never finished it. I lost Virgil pretty early, too. Hence my question. Thank you all, I think I will press on and keep him alive next time.
 

As an Amazon Associate, rpgcodex.net earns from qualifying purchases.
Back
Top Bottom