Duke4.net Forums: Exploring Duke Nukem 3D's Sounds - Duke4.net Forums

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Exploring Duke Nukem 3D's Sounds  "intensive research"

User is offline   Hendricks266 

  • Weaponized Autism

  #1

I manipulated the sound-related contents of DEFS.CON and USER.CON to create a series of charts and scripts.

Data Folder

This research has the following objectives:

1. To provide a chart with every sound's file name, label, definition, and ID number in one place. This could easily be expanded to a handy HTML asset (including the sounds themselves embedded) for mapping tutorials.

Expansive Sound Chart

2. To find sounds with labels in DEFS.CON but no definition in USER.CON.

final game, v1.5 Atomic:

define DUKE_PASSWIND 32
define DUKE_GLAD 44
define DUKE_HEHE 46
define DUKE_SHUCKS 47
define LIZTROOP_GROWL 52
define LIZTROOP_TALK1 53
define LIZTROOP_TALK2 54
define LIZTROOP_TALK3 55
define LIZCAPT_GROWL 57
define LIZCAPT_TALK1 58
define LIZCAPT_TALK2 59
define LIZCAPT_TALK3 60
define LIZARD_PAIN 62
define LIZARD_DEATH 63
define DRONE1_HISSRATTLE 65
define DRONE1_HISSSCREECH 66
define THEATER_BREATH 94


v0.99 beta:

define FEM1_SPEECH 27
define FEM2_SPEECH 29
define FEM3_SPEECH 30
define DUKE_OPENING_SODA 35
define DUKE_JUMP 41
define SNAKE1_HISSRATTLE 65
define SNAKE1_HISSSCREECH 66
define START_FANFARE 106
define SNAK_ROAM 130
define SNAK_RECOG 131
define SNAK_ATTACK1 132
define SNAK_PAIN 133
define SNAK_DYING 134
define SLIM_PAIN 148
define SNAK_ATTACK2 157
define DOOR_OPERATE5 168
define GENERIC_AMBIENCE7 183
define DUKE_PAIN1 204
define DUKE_PAIN2 205


v1.0:

// define FIRELASERHITWALL 41
define WAR_AMBIENCE11 241
define WAR_AMBIENCE12 242
define KILLBITCH 254


3. To find sounds with labels and definitions, but no sound file in the game data.

definesound TURR_ROAM turrrm.voc 0 0 3 0 0
definesound TURR_RECOG turrrg.voc 0 0 3 0 0
definesound TURR_ATTACK turrat.voc 0 0 3 0 0
definesound TURR_PAIN turrpn.voc 0 0 3 0 0
definesound TURR_DYING turrdy.voc 0 0 3 0 0
definesound SLIM_PAIN slimpn.voc -256 256 3 0 0
definesound BOS3_ATTACK1 b3atk01.voc 0 0 3 0 0
definesound BOS3_ATTACK2 b3atk01.voc 0 0 3 0 0
definesound DUKE_BREATHING hlminhal.voc 0 0 255 4 0
definesound DUKE_EXHALING hlmexhal.voc 0 0 255 4 0
definesound DUKE_YES yes.voc 0 0 255 4 0
definesound FAN fan.voc 0 0 0 0 0
definesound HOVER_CRAFT hover.voc 0 0 0 0 0
definesound GENERIC_AMBIENCE22 vpiss2.voc 0 0 255 4 0
definesound ENDSEQVOL3SND1 KICKHEAD.VOC 0 0 254 0 0
definesound VOL4_1 jacuzzi2.voc 0 0 0 1 0
definesound JOKE joke.voc 0 0 128 0 0


4. To find sounds with files in the game data, but no labels or definitions.

BLANK.VOC
DSCREM38.VOC
PAIN13.VOC
PAIN28.VOC
PIGWRN.VOC
PISSIN01.VOC


5. To identify sound files which are defined more than one time, and therefore have duplicate definitions.

soundchart_duplicates.csv

Note that not all of these are truly identical because of the different parameters used in the sound definitions.

This objective is prerequisite to getting an accurate final reading for #6.

6. To identify perfectly valid sound definitions and sound files which are both used and unused in anywhere in the game, and individually in the source, the CONs, and the maps.

This one has an interesting situation because there are some duplicates sounds where only one of the pair is used. Including unused sound falling into this category, see the sounds_not_used_yet_valid files.

These are files which are valid, unused, and do not have a used duplicate:

definesound DRON_DYING snakdy.voc 0 0 3 0 0
definesound GENERIC_AMBIENCE14 onlyon03.voc 0 0 255 4 0
definesound WAR_AMBIENCE3 WARAMB23.VOC -512 0 254 16 0
definesound WAR_AMBIENCE4 WARAMB29.VOC -512 0 254 16 0
definesound ALIEN_TALK2 DEFEATED.VOC 0 0 255 12 0
definesound NEWBEAST_RECOG blrec4b.voc 1400 0 3 0 0
definesound SUPERMARKETCRY cry01.voc 0 0 0 4 0


Two Duke quotes are among these. GENERIC_AMBIENCE14 onlyon03.voc is "What, there's only one of you?". SUPERMARKETCRY cry01.voc is "I'm not crying over this!".

Notes:

"definesound ALIEN_ELEVATOR1 hydro43.voc 0 0 0 0 0" and "definesound SUPERMARKET aisle402.voc 0 0 0 4 0" are defined twice.

SLIM_PAIN is commented out in USER.CON, as it has no corresponding label in DEFS.CON.

KICKHEAD.VOC is found in v1.3D, but not v1.4 or v1.5. Its sound, ENDSEQVOL3SND1, is also commented out.

MYENEMY_DEAD, MYENEMY_HURT, MYENEMY_ROAM, and MYENEMY_SHOOT are used for a tutorial. They have labels in DEFS.CON. They have no defines in USER.CON, but their defines from the tutorial in GAME.CON are included in the chart.

Also take into account the sounds from the v0.99 beta.

This post has been edited by Hendricks266: 19 July 2011 - 09:27 PM

1

User is offline   Daedolon 

  • Ancient Blood God

#2

Thanks for the interesting thread, I wasn't aware of all of those unused audio files, need to check them out to hear what's missing from the game again.

When I was adding menu sounds to my mod years ago I started learning that a lot of the sounds are cycled randomly when the player enters/leaves the main menu or chooses an option therein. I'm quite sure this is very inconclusive still but here's what I know. The notes quoted out were basically what audio file I used to replace the sound with, ie. "Select" for selecting a menu option, I can't recall why I chose null for some of them. Anyway, feel free to correct me.

Sounds used by the Duke 1.5 menu system:

define KICK_HIT						 0 // Select
define PISTOL_RICOCHET				  1 // Open
define PISTOL_BODYHIT				   2 // null?
define PISTOL_FIRE					  3 // Open
define INSERT_CLIP					  5 // null?
define CHAINGUN_FIRE					6 // Open
define RPG_SHOOT						7 // Open
define RPG_EXPLODE					  9 // Open
define PIPEBOMB_BOUNCE				 13 // Open
define PIPEBOMB_EXPLODE				14 // null?
define LASERTRIP_EXPLODE			   17 // Open
define DUKE_GRUNT					  38 // Open
define SQUISHED						69 // Open
define DUKE_GETWEAPON2				107 // Enter
define SHOTGUN_FIRE				   109 // Open
define BOS1_WALK					  156 // Open
define THUD						   158 // Open
define BONUS_SPEECH1				  195 // Enter
define BONUS_SPEECH2				  196 // Enter
define BONUS_SPEECH3				  197 // Enter
define DUKE_LAND_HURT				 200 // Open
define DUKE_GET					   210 // Open
define NITEVISION_ONOFF			   213 // Open
define DUKE_CRACK_FIRST			   215 // null?
define SELECT_WEAPON				  219 // null?
define JIBBED_ACTOR5				  226 // Enter
define JIBBED_ACTOR6				  227 // Enter
define EXITMENUSOUND				  243 // Close
define FLY_BY						 244 // null?
define SHRINKER_HIT				   246 // Open
define INTO_MENU					  248 // Open

1

User is offline   TerminX 

  • el fundador

  #3

void S_MenuSound(void)
{
	static int32_t SoundNum=0;
	static const uint8_t menusnds[] =
	{
		LASERTRIP_EXPLODE,
		DUKE_GRUNT,
		DUKE_LAND_HURT,
		CHAINGUN_FIRE,
		SQUISHED,
		KICK_HIT,
		PISTOL_RICOCHET,
		PISTOL_BODYHIT,
		PISTOL_FIRE,
		SHOTGUN_FIRE,
		BOS1_WALK,
		RPG_EXPLODE,
		PIPEBOMB_BOUNCE,
		PIPEBOMB_EXPLODE,
		NITEVISION_ONOFF,
		RPG_SHOOT,
		SELECT_WEAPON
	};

	S_PlaySound(menusnds[SoundNum++ % (sizeof(menusnds)/sizeof(menusnds[0]))]);

}

1

#4

One more to objective #1:
define THEATER_BREATH				  94


Your chart seems messed up a bit because it lists definesound TGSPEECH next to define THEATER_BREATH and so on.
0

User is offline   Hendricks266 

  • Weaponized Autism

  #5

Thanks for that. Fixed. A duplicate "definesound SUPERMARKET aisle402.voc 0 0 0 4 0" was the culprit.

This post has been edited by Hendricks266: 13 July 2011 - 10:42 PM

0

User is offline   Daedolon 

  • Ancient Blood God

#6

View PostTX, on Jul 14 2010, 10:38 AM, said:

void S_MenuSound(void)


Thanks for this, but I have no clue why the other sounds still play when doing something with the menu.
0

User is offline   Hendricks266 

  • Weaponized Autism

  #7

I looked through the early Duke versions some more, and I found these:

(v0.99 beta and v1.0 moved to first post)

This post has been edited by Hendricks266: 18 July 2011 - 09:54 PM

0

User is offline   Inspector Lagomorf 

  • Glory To Motherland!

#8

Quote

define START_FANFARE 106


Interesting. Were Apogee and 3D Realms one and the same back then?

Edit: For those of you who have no idea what I'm talking about, clearly this was supposed to be a digitized version of Apogee's opening fanfare, as appears in many of their games.

This post has been edited by The Mighty Bison: 14 July 2010 - 09:37 PM

0

User is offline   Hendricks266 

  • Weaponized Autism

  #9

Apogee and 3D Realms always have been one and the same, until 2007-2008 with the new Apogee unit that's making Duke Nukem Trilogy.

It could very well be the Apogee fanfare, given that Duke 3D was in the planning stages when Duke II was released (see DN2 Ep. 4 ending), plus:

Posted ImagePosted Image
0

User is offline   Hendricks266 

  • Weaponized Autism

  #10

I think this discovery is bump-worthy.

http://hendricks266....beta/DUNG01.wav

Thanks to The Cutting Room Floor, I extracted DUNG04.VOC from the DUKE.RTS file of the v0.99 beta. For some reason (probably lack of quality), they replaced it with DSCREM04.VOC, the falling scream.

Duke Nukem 3D Beta Analysis - Sounds has been updated.

"Way to go, dung brains."
0

User is offline   Fox 

  • Fraka kaka kaka kaka-kow!

#11

There is also one more objective, sounds that are not used in any stock map or anywere in the game.

For example, whenever Duke seeks a boss except for Battlelord, he will give a one-line. In Battlelord case, the monster will give a characteristic scream. However, there is still a scream sound for each boss (Overlord, Cycloid Emperor and Alien Queen).
1

User is offline   Hendricks266 

  • Weaponized Autism

  #12

In the coming days, I will write an m32script to dump all the uses of sounds in the stock maps. That will leave CON and the source code, which should be simpler.
0

User is offline   Jimmy 

  • Let's go Brandon!

#13

How have we missed that line in the RTS? :( Good detective work!
0

User is offline   Hendricks266 

  • Weaponized Autism

  #14

I updated the first post and reformatted it a bit. I added a new objective about finding duplicate definitions and my findings.

Objective #6 is partially complete. I successfully dumped the sounds from the CONs and from the source. My M32script is functional, but I'm encountering some problem and I've asked Helix about it.

I uploaded the finished portions here: http://hendricks266....0determination/

I'm particularly proud of the source dumping script, which uses regular expressions so that, for example, the search doesn't hit OCTABRAIN for the sound RAIN, but it does get things sandwiched between commas, parentheses, and other symbols that the whole-word option wouldn't have caught. I'm also proud of my M32script [edit: now part of dump_used_assets.m32 in samples/].

This post has been edited by Hendricks266: 26 November 2012 - 12:40 AM

0

User is offline   Hendricks266 

  • Weaponized Autism

  #15

Objective #6 is complete, and all my data and scripts for it are uploaded to the data folder, under the "usage determination" folder.

I've read people claim they've heard both the quotes that turned up. I believe I heard Duke say "I'm not crying over this!", but I couldn't find it in-game when I went to look.

View PostFox, on 13 July 2011 - 11:52 PM, said:

For example, whenever Duke seeks a boss except for Battlelord, he will give a one-line. In Battlelord case, the monster will give a characteristic scream. However, there is still a scream sound for each boss (Overlord, Cycloid Emperor and Alien Queen).

About these... They are actually "used", but note the quotes. The only place they are found is this function in the source:

void A_PlayAlertSound(int32_t i)
{
    if (sprite[i].extra > 0)
        switch (DynamicTileMap[PN])
        {
        case LIZTROOPONTOILET__STATIC:
        case LIZTROOPJUSTSIT__STATIC:
        case LIZTROOPSHOOT__STATIC:
        case LIZTROOPJETPACK__STATIC:
        case LIZTROOPDUCKING__STATIC:
        case LIZTROOPRUNNING__STATIC:
        case LIZTROOP__STATIC:
            A_PlaySound(PRED_RECOG,i);
            break;
        case LIZMAN__STATIC:
        case LIZMANSPITTING__STATIC:
        case LIZMANFEEDING__STATIC:
        case LIZMANJUMP__STATIC:
            A_PlaySound(CAPT_RECOG,i);
            break;
        case PIGCOP__STATIC:
        case PIGCOPDIVE__STATIC:
            A_PlaySound(PIG_RECOG,i);
            break;
        case RECON__STATIC:
            A_PlaySound(RECO_RECOG,i);
            break;
        case DRONE__STATIC:
            A_PlaySound(DRON_RECOG,i);
            break;
        case COMMANDER__STATIC:
        case COMMANDERSTAYPUT__STATIC:
            A_PlaySound(COMM_RECOG,i);
            break;
        case ORGANTIC__STATIC:
            A_PlaySound(TURR_RECOG,i);
            break;
        case OCTABRAIN__STATIC:
        case OCTABRAINSTAYPUT__STATIC:
            A_PlaySound(OCTA_RECOG,i);
            break;
        case BOSS1__STATIC:
            S_PlaySound(BOS1_RECOG);
            break;
        case BOSS2__STATIC:
            if (sprite[i].pal == 1)
                S_PlaySound(BOS2_RECOG);
            else S_PlaySound(WHIPYOURASS);
            break;
        case BOSS3__STATIC:
            if (sprite[i].pal == 1)
                S_PlaySound(BOS3_RECOG);
            else S_PlaySound(RIPHEADNECK);
            break;
        case BOSS4__STATIC:
        case BOSS4STAYPUT__STATIC:
            if (sprite[i].pal == 1)
                S_PlaySound(BOS4_RECOG);
            S_PlaySound(BOSS4_FIRSTSEE);
            break;
        case GREENSLIME__STATIC:
            A_PlaySound(SLIM_RECOG,i);
            break;
        }
}


As you can see, they only play when the boss is pal 1, completely blue, and for BOSS2 and BOSS3, the one-liner does not play when the screams do. I don't know what Todd was intoxicated with when he wrote this.

This post has been edited by Hendricks266: 19 July 2011 - 09:34 PM

1

User is offline   Jimmy 

  • Let's go Brandon!

#16

I think Duke says "I'm not crying over this!" in the room in Shop-n-Bag where there is seal and dolphin meat.
0

User is offline   LakiSoft 

#17

Quote

Two Duke quotes are among these. GENERIC_AMBIENCE14 onlyon03.voc is "What, there's only one of you?".


I remember recently when i played some very old user map MOONBAS3.MAP in 0.99 Executable, when i reached the final fight with Cycloid Emperor in this map, Duke said "What, there's only one of you?"

It suggests that this line was later replaced with "It's down you and me, you one-eyed freak!" But this is just my theory. It's also noteworthy to mention that when i loaded E3L9 into 0.99 Executable this line didn't occurred. But this may have to be reason for this, as MOONBAS3.MAP had actually Cycloid Emperor appear by use of RESPAWN sprite rather than straight placing it in map like in case of with E3L9. Maybe the fact he got spawned using RESPAWN sprite was what determinated 0.99 Executable to play the line "What, there's only one of you?" but i am not sure. It's all a speculation.
0

User is offline   Jamesfff 

#18

Interesting note - the quote "What, there's only one of you?" appears to be absent from the World Tour edition of Duke 3D. I remembered hearing it in a user map from the Official Duke Nukem 3D Level Design Kit CD (hulk.map, near the start - go through the teleport in the start room and open the wall behind you in the room you emerge in), but it didn't play in World Tour. It did play in the Atomic Edition, though.
1

User is offline   Aleks 

#19

I've had no idea this quote is absent from anywhere within the game, as it's super popular in user maps, making just the right "silence before storm" moment right when the level is about to throw a crapload of monsters on the player after he killed a single, innocent trooper :P
2

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic


All copyrights and trademarks not owned by Voidpoint, LLC are the sole property of their respective owners. Play Ion Fury! ;) © Voidpoint, LLC

Enter your sign in name and password


Sign in options