Jump to content

IESDP soundset offsets


Miloch

Recommended Posts

In cre_v1.htm, the listing at 0x00a4 has:

(4*100 (Strref*100)) Strrefs pertaining to the character. Most are connected with the sound-set (see SOUNDOFF.IDS (BG1) and (SNDSLOT.IDS for (BG2)).
The next listing starts at 0x0234 (level in primary class).

 

Firstly, it'd be helpful to have links to those files (/bg1/soundoff/htm and /bg2/sndslot.ids) from that page. But more importantly, I can't find any details for that reference, namely the hex offsets for the relevant sound clips, and what they represent. I know they're somewhere, but I can't find them in the IESDP for the life of me, and NI only has "Sound: Unknown" for a good number of them that *should* be known (i.e., they have associated sound clips for a number of characters) and DLTCEP does not provide hex references.

 

[On a minor note, it might be helpful to provide a link from ids.htm to ids/bg2/index.htm etc. (yeah I know this might be different for each game, but there could be a horizontal link across the top... like I said, a minor thing).] Cheers.

Link to comment

Eh... ok, maybe I didn't phrase that rightly or maybe I'm just being daft. What I'd like to see on the CRE page in the IESDP, instead of the vague entry at 0x00a4 is a more detailed listing of soundset offsets. So in other words, instead of:

0x00a4 4*100 (Strref*100) Strrefs pertaining to the character...
I'd like to see:
0x00a4 4 (dword) Sound: INITIAL_MEETING

0x00a8 4 (dword) Sound: MORALE

And so on. I can use NI until I get to 0x0158, which has "Sound: Unknown" in NI, even though it's linked to (for example) "[EDWIN 36] Must you crowd so close? 'Tis bad enough... blah blah blah."

 

Incidentally, DLTCEP has "Unknown (45)" at this offset in the CRE record. Obviously, Edwin says this string (or perhaps not) in response to something, doesn't he?

 

And it's not idle curiosity that spurs this question nor does it have anything to do with Edwin. I'm trying to reverse-engineer a non-WeiDU mod that has soundclips, most of which are neither transcribed nor documented and several of which are either mapped inappropriately or not mapped at all and need to be. Fun, eh? (Shame, really, 'cause the voice acting is quite good for the most part...)

Link to comment

Yep, that would be convenient.

About the sound - it's Edwin's INSULT. Compliments and insults were used in BG1 instead of banters. They aren't used in BG2, but they do work in ToB. Actually, I have a tweak that restores them to work in BG2 (only for BGT, of course)

Link to comment

Yeah, if you want what the soundslot is used for, then that'd be the second or third of the three insult slots (not labeled in soundoff.ids, so there's no official ids token for it).

 

No idea how the engine decides which to run in BG, they may not all be used.

Link to comment
Yep, that would be convenient. About the sound - it's Edwin's INSULT.
Well I guess since the previous slot is INSULT then that should be INSULT1 and this should be INSULT2 and the next "unknown" is INSULT3. No longer unknown - yay!
Compliments and insults were used in BG1 instead of banters. They aren't used in BG2, but they do work in ToB. Actually, I have a tweak that restores them to work in BG2 (only for BGT, of course)
Where is this mythical mod, in the same extraplanar dimension as Nythrun's Tweaks? (Not to be confused with 'Level 1 NPCs'.)
No idea how the engine decides which to run in BG, they may not all be used.
Hmm. So if I'm converting a BG1 mod to the BG2 engine (Tutu, BGT), is it pointless to include them as soundsets? I don't really want to try to remap them as dialogue...
Link to comment
Well I guess since the previous slot is INSULT then that should be INSULT1 and this should be INSULT2 and the next "unknown" is INSULT3. No longer unknown - yay!

yep, these are all insults. IIRC, Responces to insults are not all listed in dtlcep, too.

 

Where is this mythical mod, in the same extraplanar dimension as Nythrun's Tweaks? (Not to be confused with 'Level 1 NPCs'.)

it's, uhm, on my home computer=). I can release it..tomorrow, I think. I need a cool name for it). But I want to get Nythrun's Tweaks in return!

Hmm. So if I'm converting a BG1 mod to the BG2 engine (Tutu, BGT), is it pointless to include them as soundsets? I don't really want to try to remap them as dialogue...

I don't quite understand. Are you converting an NPC mod?

Link to comment
Where is this mythical mod, in the same extraplanar dimension as Nythrun's Tweaks? (Not to be confused with 'Level 1 NPCs'.)
it's, uhm, on my home computer=). I can release it..tomorrow, I think. I need a cool name for it).
'Bearwere's Tweaks'? Eh, I'm sure you'll think of something... what's in a name, anyway...
But I want to get Nythrun's Tweaks in return!
Don't we all, don't we all... she's holding out on us. Maybe she's trying to think of a cool name too...
I don't quite understand. Are you converting an NPC mod?
Um, sort of... I'm helping convert DSotSC which has like, what, 6 NPCs? I know it's been done for BGT but I'm doing it for Tutu, and the BGT version isn't much of a reference when it has, say, "@20015 = ~~ [CONCHO15]" in the BGT setup.tra, and in the original I'm working off has @931 = ~[Concho15]~ [DS#CON15], and the sound clip doesn't exist for either, and I'm trying to figure out whether the 2 unmapped soundclips for Conchobhair in both versions should map to the two slots that reference an nonexistent clip, but yeah, figuring out the slot names helps somewhat, but doesn't help determine whether anyone will ever hear them in the BG2 engine... maybe I shouldn't waste my time with them if they have no effect as clips in the BG2 engine, but the voicing is actually quite good and I'm like 98% done with my bit anyway... always has to be something petty like this that hangs things up...
Link to comment

as I said, they do work, most definitely (i mean, compliments and insults, maybe you've got something else?). However, it's not just writing 2 references into .cre. You have to adjust interact.2da accordingly.

 

Plus, there's a frame rate problem. BG1 has about 30 frames per second, while BG2 can run up to 90 frames per second. And responces to compliments/insults seems to fire after certain number of frames, based on length of the sound of compliment/insult. On high rates and long lines response to insult may fire before the end of the insult itself, overlapping. It's not crucial, but somewhat I don't like, so I had to make a component that lengthens these sounds according to framerate.

Link to comment
Guest Guest

dltcep uses some ids file(s) for labeling the sound slots.

If you want them named correctly, modify your ids file.

Link to comment
as I said, they do work, most definitely (i mean, compliments and insults, maybe you've got something else?).
I've got one that sounds like a response_to_insult ("Hmm, I'll say I... hey, wait a minute!") and one that sounds like a react_to_die_general/specific ("Well *sigh*, so much for living forever, huh?"). The latter isn't a "dying" clip since one is already mapped there, but they could go in the other slots mentioned (only one of which is occupied in both cases, of more than one slot).
However, it's not just writing 2 references into .cre. You have to adjust interact.2da accordingly.

 

Plus, there's a frame rate problem. BG1 has about 30 frames per second, while BG2 can run up to 90 frames per second. And responces to compliments/insults seems to fire after certain number of frames, based on length of the sound of compliment/insult. On high rates and long lines response to insult may fire before the end of the insult itself, overlapping. It's not crucial, but somewhat I don't like, so I had to make a component that lengthens these sounds according to framerate.

Ach. Well, sounds a bit complicated for my poor orcish brain, but this tweak of yours certainly sounds useful, maybe even as an optional component for a mod like this converted from the BG1 to the BG2 engine, if not a standalone tweak mod.
dltcep uses some ids file(s) for labeling the sound slots. If you want them named correctly, modify your ids file.

Hmm, you are right, this should be perhaps a "Super Happy Modder" addition where it adds to sndslot.ids the entries:

45 INSULT2
46 INSULT3

And maybe a few more... though I'm wondering what happens in the case of the duplicate entries I see (71 EXISTANCE2, 71 SPELL_DISRUPTED) but whatever... Dunno about the NI labels, which seem erratic (sometimes they appear properly, sometimes not...) I guess I'll leave that to devSin. Not that I use NI much, except to figure out hex offsets, since DLTCEP doesn't providet that option...

 

Though of course, all this info should all be in the IESDP anyway... :crazyeyes:

Link to comment

Near Infinity uses the SNDSLOT (or SOUNDOFF if that can't be found) IDS file to label these fields. If you want correct labels, you'll need to edit your IDS file to include the additional used fields (BG2 SOUNDOFF contains more slot labels than default BG/TotSC, so you could start with it). In general, you just need to add from one unknown to the next known field with numbered labels from the preceding known field (e.g., SELECT_COMMON1-2-3, EXISTENCE1-2-3, INSULT1-2-3). IIRC, the EXISTENCE fields are the last supported ones (although I'm not sure if they all work or if only the one at 0x1b8 works). The first matching entry for a particular value is used (if you have 71 EXISTENCE and 71 SPELL_DISRUPTED, NI will pick the one coming first in the file).

 

Note also that some of the default labels in BG/TotSC's IDS are off (DIALOG_DEFAULT and DIALOG_HOSTILE, at least).

Link to comment

Ok, well here's the full list. Most of this is available elsewhere, but here it is to make it easier for igi to copy and paste into the IESDP :crazyeyes::

CRE v1 (Strrefs pertaining to the character):
Offset   Size (type)  Description
0x00a4   4 (strref)   Sound: INITIAL_MEETING
0x00a8   4 (strref)   Sound: MORALE
0x00ac   4 (strref)   Sound: HAPPY
0x00b0   4 (strref)   Sound: UNHAPPY_ANNOYED
0x00b4   4 (strref)   Sound: UNHAPPY_SERIOUS
0x00b8   4 (strref)   Sound: UNHAPPY_BREAKING_POINT
0x00bc   4 (strref)   Sound: LEADER
0x00c0   4 (strref)   Sound: TIRED
0x00c4   4 (strref)   Sound: BORED
0x00c8   4 (strref)   Sound: BATTLE_CRY1
0x00cc   4 (strref)   Sound: BATTLE_CRY2
0x00d0   4 (strref)   Sound: BATTLE_CRY3
0x00d4   4 (strref)   Sound: BATTLE_CRY4
0x00d8   4 (strref)   Sound: BATTLE_CRY5
0x00dc   4 (strref)   Sound: ATTACK1
0x00e0   4 (strref)   Sound: ATTACK2
0x00e4   4 (strref)   Sound: ATTACK3
0x00e8   4 (strref)   Sound: ATTACK4
0x00ec   4 (strref)   Sound: DAMAGE
0x00f0   4 (strref)   Sound: DYING
0x00f4   4 (strref)   Sound: HURT
0x00f8   4 (strref)   Sound: AREA_FOREST
0x00fc   4 (strref)   Sound: AREA_CITY
0x0100   4 (strref)   Sound: AREA_DUNGEON
0x0104   4 (strref)   Sound: AREA_DAY
0x0108   4 (strref)   Sound: AREA_NIGHT
0x010c   4 (strref)   Sound: SELECT_COMMON1
0x0110   4 (strref)   Sound: SELECT_COMMON2
0x0114   4 (strref)   Sound: SELECT_COMMON3
0x0118   4 (strref)   Sound: SELECT_COMMON4
0x011c   4 (strref)   Sound: SELECT_COMMON5
0x0120   4 (strref)   Sound: SELECT_COMMON6
0x0124   4 (strref)   Sound: SELECT_ACTION1
0x0128   4 (strref)   Sound: SELECT_ACTION2
0x012c   4 (strref)   Sound: SELECT_ACTION3
0x0130   4 (strref)   Sound: SELECT_ACTION4
0x0134   4 (strref)   Sound: SELECT_ACTION5
0x0138   4 (strref)   Sound: SELECT_ACTION6
0x013c   4 (strref)   Sound: SELECT_ACTION7
0x0140   4 (strref)   Sound: INTERACTION1
0x0144   4 (strref)   Sound: INTERACTION2
0x0148   4 (strref)   Sound: INTERACTION3
0x014c   4 (strref)   Sound: INTERACTION4
0x0150   4 (strref)   Sound: INTERACTION5
0x0154   4 (strref)   Sound: INSULT1
0x0158   4 (strref)   Sound: INSULT2
0x015c   4 (strref)   Sound: INSULT3
0x0160   4 (strref)   Sound: COMPLIMENT1
0x0164   4 (strref)   Sound: COMPLIMENT2
0x0168   4 (strref)   Sound: COMPLIMENT3
0x016c   4 (strref)   Sound: SPECIAL1
0x0170   4 (strref)   Sound: SPECIAL2
0x0174   4 (strref)   Sound: SPECIAL3
0x0178   4 (strref)   Sound: REACT_TO_DIE_GENERAL
0x017c   4 (strref)   Sound: REACT_TO_DIE_SPECIFIC
0x0180   4 (strref)   Sound: RESPONSE_TO_COMPLIMENT1 [MISCELLANEOUS]
0x0184   4 (strref)   Sound: RESPONSE_TO_COMPLIMENT2
0x0188   4 (strref)   Sound: RESPONSE_TO_COMPLIMENT3
0x018c   4 (strref)   Sound: RESPONSE_TO_INSULT1
0x0190   4 (strref)   Sound: RESPONSE_TO_INSULT2
0x0194   4 (strref)   Sound: RESPONSE_TO_INSULT3
0x0198   4 (strref)   Sound: DIALOG_HOSTILE
0x019c   4 (strref)   Sound: DIALOG_DEFAULT
0x01a0   4 (strref)   Sound: SELECT_RARE1
0x01a4   4 (strref)   Sound: SELECT_RARE2
0x01a8   4 (strref)   Sound: CRITICAL_HIT
0x01ac   4 (strref)   Sound: CRITICAL_MISS
0x01b0   4 (strref)   Sound: TARGET_IMMUNE
0x01b4   4 (strref)   Sound: INVENTORY_FULL
0x01b8   4 (strref)   Sound: PICKED_POCKET
0x01bc   4 (strref)   Sound: HIDDEN_IN_SHADOWS [EXISTANCE1]
0x01c0   4 (strref)   Sound: SPELL_DISRUPTED [EXISTANCE2]
0x01c4   4 (strref)   Sound: SET_A_TRAP [EXISTANCE3]
0x01c8   4 (strref)   Sound: EXISTANCE4
0x01cc   4 (strref)   String: BIO [EXISTANCE5]

I left the "EXISTANCE" typo - dunno if fixing it is gonna break anything. Anyhow, most of them, with the exception of EXISTANCE4 (which seems unused on all the NPCs I looked at) appear to be better defined by the other labels I put before them. So maybe those can be moved up in the IDS files, via Super Happy Modder pack or whatever. I also added BIO which is not in any of the IDS files, but it's obvious and is also a WeiDU constant$.

 

One more question while I'm here. Anyone know when the INTERACTION clips are supposed to trigger, and where they're defined? Looking at Kivan, for example, they all seem specific to Viconia. I vaguely recall seeing this definition somewhere but my brain is like grey ooze these days...

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...