Skip to content

Commit d98a7e8

Browse files
committed
s_init
1 parent 68fbbed commit d98a7e8

File tree

5 files changed

+91
-2
lines changed

5 files changed

+91
-2
lines changed

jsdoom/d_main.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,4 +261,7 @@ function D_DoomMain()
261261

262262
console.log("I_Init: Setting up machine state.");
263263
I_Init();
264+
265+
console.log("S_Init: Setting up sound.");
266+
S_Init(snd_SfxVolume, snd_MusicVolume);
264267
}

jsdoom/i_sound.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ var audio_fd;
88

99
var mixbuffer = [];
1010

11+
var steptable = [];
12+
13+
var vol_lookup = [];
14+
1115
function getsfx(sfxname, lenarray, leni)
1216
{
1317
let name = "ds" + sfxname;
@@ -31,6 +35,27 @@ function getsfx(sfxname, lenarray, leni)
3135
return paddedsfx.buffer;
3236
}
3337

38+
function I_SetChannels()
39+
{
40+
for(let i = -128; i < 128; i++)
41+
steptable[i+128] = (Math.pow(2, i/64)*65536)|0;
42+
43+
for(let i = 0; i < 128; i++)
44+
for(let j = 0; j < 256; j++)
45+
vol_lookup[i*256+j] = ((i*(j-128)*256)/127)|0;
46+
}
47+
48+
function I_SetSfxVolume(volume)
49+
{
50+
snd_SfxVolume = volume;
51+
}
52+
53+
function I_SetMusicVolume(volume)
54+
{
55+
snd_MusicVolume = volume;
56+
// TODO: actually make it change music?
57+
}
58+
3459
function I_InitSound()
3560
{
3661
if(!(typeof (window.AudioContext || window.webkitAudioContext) === "function"))

jsdoom/m_misc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ var defaults =
2424
new default_t("mouse_sensitivity", "mouseSensitivity", 5),
2525
new default_t("sfx_volume", "snd_SfxVolume", 8),
2626
new default_t("music_volume", "snd_MusicVolume", 8),
27-
new default_t("show_messages", "snd_SfxVolume", true),
27+
new default_t("show_messages", "showMessages", true),
2828

2929
new default_t("key_right", "key_right", KEY_RIGHTARROW),
3030
new default_t("key_left", "key_left", KEY_LEFTARROW),

jsdoom/s_sound.js

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,52 @@
1+
class channel_t
2+
{
3+
sfxinfo = new sfxinfo_t();
4+
origin = null;
5+
handle = 0;
6+
}
7+
8+
var channels;
9+
110
var snd_SfxVolume = 15;
211
var snd_MusicVolume = 15;
312

4-
var numChannels;
13+
var mus_paused;
14+
15+
var numChannels;
16+
17+
function S_Init(sfxVolume, musicVolume)
18+
{
19+
console.info("S_Init: default sfx volume " + sfxVolume);
20+
21+
I_SetChannels();
22+
23+
S_SetSfxVolume(sfxVolume);
24+
S_SetMusicVolume(musicVolume);
25+
26+
channels = [];
27+
28+
mus_paused = false;
29+
30+
for(let i = 0; i < sfxenum_t.length; i++)
31+
S_sfx[i].lumpnum = S_sfx[i].usefulness = -1;
32+
}
33+
34+
function S_SetMusicVolume(volume)
35+
{
36+
if(volume < 0 || volume > 127)
37+
{
38+
I_Error("Attempt to set music volume at " + volume);
39+
}
40+
41+
I_SetMusicVolume(127);
42+
I_SetMusicVolume(volume);
43+
snd_MusicVolume = volume;
44+
}
45+
46+
function S_SetSfxVolume(volume)
47+
{
48+
if(volume < 0 || volume > 127)
49+
I_Error("Attempt to set sfx volume at " + volume);
50+
51+
snd_SfxVolume = volume;
52+
}

jsdoom/sounds.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11

22
class sfxinfo_t
33
{
4+
name = null;
5+
singularity = 0;
6+
priority = 0;
7+
link = null;
8+
pitch = 0;
9+
volume = 0;
10+
data = null;
11+
usefulness = 0;
12+
lumpnum = 0;
413
constructor(name, singularity, priority, link, pitch, volume, data, usefulness, lumpnum)
514
{
615
this.name = name;
@@ -17,6 +26,10 @@ class sfxinfo_t
1726

1827
class musicinfo_t
1928
{
29+
name = null;
30+
lumpnum = 0;
31+
data = null;
32+
handle = 0;
2033
constructor(name, lumpnum, data, handle)
2134
{
2235
this.name = name;

0 commit comments

Comments
 (0)