diff --git a/sound/wav/.gitignore b/sound/wav/.gitignore new file mode 100644 index 000000000..447978328 --- /dev/null +++ b/sound/wav/.gitignore @@ -0,0 +1,2 @@ +*.wav + diff --git a/sound/windsound/windsound.c b/sound/windsound/windsound.c index d6732bc44..661bacce6 100644 --- a/sound/windsound/windsound.c +++ b/sound/windsound/windsound.c @@ -82,7 +82,8 @@ windsound_hero_playnotes(int32_t instrument, const char *str, int32_t volume) #ifdef WAVEMUSIC_SOUNDS int reslt = 0; boolean has_note_variations = FALSE; - char resourcename[120], *end_of_res = 0, *c = 0; + char resourcename[120], *end_of_res = 0; + const char *c = 0; if (!str) return; diff --git a/sys/windows/Makefile.mingw32 b/sys/windows/Makefile.mingw32 index 5486400c8..e9e5a46a1 100644 --- a/sys/windows/Makefile.mingw32 +++ b/sys/windows/Makefile.mingw32 @@ -248,6 +248,7 @@ MSWIN =../win/win32 WCURSES =../win/curses WSHR =../win/share QT =../win/Qt +SNDWAVDIR =../sound/wav # # Object directory. @@ -769,6 +770,26 @@ NHWOBJS = $(addprefix $(ONHW)/, $(COREOBJS) $(NHWONLY)) DATEW_O = $(addsuffix .o, $(addprefix $(ONHW)/, date)) TILEFILES = $(addprefix $(WSHR)/, monsters.txt objects.txt other.txt) BMPS = $(addprefix $(MSWIN)/, $(addsuffix .bmp, mnsel mnselcnt mnunsel petmark pilemark rip splash tiles)) +WAVLIST = se_squeak_A se_squeak_B se_squeak_B_flat se_squeak_C \ + se_squeak_D se_squeak_D_flat se_squeak_E \ + se_squeak_E_flat se_squeak_F se_squeak_F_sharp \ + se_squeak_G se_squeak_G_sharp sound_Bell sound_Bugle_A \ + sound_Bugle_B sound_Bugle_C sound_Bugle_D sound_Bugle_E \ + sound_Bugle_F sound_Bugle_G sound_Drum_Of_Earthquake \ + sound_Fire_Horn sound_Frost_Horn sound_Leather_Drum \ + sound_Magic_Harp_A sound_Magic_Harp_B sound_Magic_Harp_C \ + sound_Magic_Harp_D sound_Magic_Harp_E sound_Magic_Harp_F \ + sound_Magic_Harp_G sound_Tooled_Horn_A sound_Tooled_Horn_B \ + sound_Tooled_Horn_C sound_Tooled_Horn_D sound_Tooled_Horn_E \ + sound_Tooled_Horn_F sound_Tooled_Horn_G sound_Wooden_Flute_A \ + sound_Wooden_Flute_B sound_Wooden_Flute_C \ + sound_Wooden_Flute_D sound_Wooden_Flute_E \ + sound_Wooden_Flute_F sound_Wooden_Flute_G \ + sound_Wooden_Harp_A sound_Wooden_Harp_B \ + sound_Wooden_Harp_C sound_Wooden_Harp_D \ + sound_Wooden_Harp_E sound_Wooden_Harp_F \ + sound_Wooden_Harp_G +WAVS = $(addprefix $(SNDWAVDIR)/, $(addsuffix .wav, $(WAVLIST))) NHWRES = $(ONHW)/winres.o NHWTARGETS = $(GAMEDIR)/NetHackW.exe @@ -809,8 +830,8 @@ $(ONHW)/%.o: $(MSWIN)/%.c $(NHLUAH) | $(ONHW) $(ONHW)/%.o: $(WSHR)/%.c $(NHLUAH) | $(ONHW) $(cc) $(CFLAGSW) $< -o$@ -$(NHWRES): $(MSWIN)/NetHackW.rc $(BMPS) $(MSWIN)/NetHack.ico | $(ONHW) - $(rc) --include-dir=$(MSWIN) --input=$< -o$@ +$(NHWRES): $(MSWIN)/NetHackW.rc $(BMPS) $(WAVS) $(MSWIN)/NetHack.ico | $(ONHW) + $(rc) --include-dir=$(MSWIN) --include-dir=$(SNDWAVDIR) --input=$< -o$@ $(MSWIN)/tiles.bmp: $(U)tile2bmp.exe $(TILEFILES) $< $@ @@ -819,11 +840,15 @@ $(MSWIN)/%.bmp: $(U)uudecode.exe $(MSWIN)/%.uu $^ mv $(notdir $@) $@ +$(SNDWAVDIR)/%.wav: $(U)uudecode.exe $(SNDWAVDIR)/%.uu + $^ + mv $(notdir $@) $@ + $(ONHW): @mkdir -p $@ CLEAN_DIR += $(ONHW) -CLEAN_FILE += $(NHWTARGETS) $(NHWOBJS) $(NHWRES) $(BMPS) +CLEAN_FILE += $(NHWTARGETS) $(NHWOBJS) $(NHWRES) $(BMPS) $(WAVS) #========================================== # nethack @@ -846,7 +871,7 @@ NHTARGET = $(GAMEDIR)/NetHack.exe nethack: $(NHTARGET) -$(GAMEDIR)/NetHack.exe: $(NHOBJS) $(NHRES) $(DATE_O) $(LUALIB) $(PDCLIB) | $(GAMEDIR) +$(GAMEDIR)/NetHack.exe: $(NHOBJS) $(WAVS) $(NHRES) $(DATE_O) $(LUALIB) $(PDCLIB) | $(GAMEDIR) $(ld) $(LDFLAGS) -mconsole $^ $(LIBS) -static -lstdc++ -o$@ $(ONH)/%.o: $(SRC)/%.c $(NHLUAH) | $(ONH) @@ -887,8 +912,8 @@ $(ONH)/%.o: $(TTY)/%.c $(NHLUAH) | $(ONH) $(ONH)/%.o: $(WCURSES)/%.c $(NHLUAH) | $(ONH) $(cc) $(CFLAGSNH) $(PDCINCL) $< -o$@ -$(NHRES): $(MSWIN)/NetHack.rc $(MSWIN)/NetHack.ico | $(ONH) - $(rc) --include-dir=$(MSWIN) --input=$< -o$@ +$(NHRES): $(MSWIN)/NetHack.rc $(WAVS) $(MSWIN)/NetHack.ico | $(ONH) + $(rc) --include-dir=$(MSWIN) --include-dir=$(SNDWAVDIR) --input=$< -o$@ $(ONH): @mkdir -p $@ diff --git a/sys/windows/Makefile.nmake b/sys/windows/Makefile.nmake index bd6fad192..77bd1a493 100644 --- a/sys/windows/Makefile.nmake +++ b/sys/windows/Makefile.nmake @@ -139,6 +139,7 @@ QT = ..\win\Qt # QT support files X11 = ..\win\X11 # X11 support files LIBDIR = ..\lib # libraries and external bits SUBM = ..\submodules # NetHack git submodules +SndWavDir = ..\sound\wav # sound files that get integrated #============================================================================== # Sanity checks for prerequisite Lua and pdcurses @@ -523,7 +524,7 @@ MDLIBTTY = $(OTTY)mdlib.o DLBOBJTTY = $(OTTY)dlb.o REGEXTTY = $(OTTY)cppregex.o LUAOBJTTY = $(OTTY)nhlua.o $(OTTY)nhlsel.o $(OTTY)nhlobj.o -SOUNDTTY = $(OTTY)windsound.o +SOUNDTTY = $(OTTY)windsound.o $(OTTY)sample.o VVOBJTTY = $(OTTY)version.o SOBJTTY = $(OTTY)windmain.o $(OTTY)windsys.o $(OTTY)win10.o \ @@ -652,6 +653,34 @@ DLBOBJ_HOST = $(OTTY)dlb$(HOST).o SOUNDLIBDEFS = -DSND_LIB_WINDSOUND -DUSER_SOUNDS +SNDWAVFILES = $(SndWavDir)\se_squeak_A.wav $(SndWavDir)\se_squeak_B.wav \ + $(SndWavDir)\se_squeak_B_flat.wav $(SndWavDir)\se_squeak_C.wav \ + $(SndWavDir)\se_squeak_D.wav $(SndWavDir)\se_squeak_D_flat.wav \ + $(SndWavDir)\se_squeak_E.wav $(SndWavDir)\se_squeak_E_flat.wav \ + $(SndWavDir)\se_squeak_F.wav $(SndWavDir)\se_squeak_F_sharp.wav \ + $(SndWavDir)\se_squeak_G.wav $(SndWavDir)\se_squeak_G_sharp.wav \ + $(SndWavDir)\sound_Bell.wav $(SndWavDir)\sound_Bugle_A.wav \ + $(SndWavDir)\sound_Bugle_B.wav $(SndWavDir)\sound_Bugle_C.wav \ + $(SndWavDir)\sound_Bugle_D.wav $(SndWavDir)\sound_Bugle_E.wav \ + $(SndWavDir)\sound_Bugle_F.wav $(SndWavDir)\sound_Bugle_G.wav \ + $(SndWavDir)\sound_Drum_Of_Earthquake.wav \ + $(SndWavDir)\sound_Fire_Horn.wav $(SndWavDir)\sound_Frost_Horn.wav \ + $(SndWavDir)\sound_Leather_Drum.wav $(SndWavDir)\sound_Magic_Harp_A.wav \ + $(SndWavDir)\sound_Magic_Harp_B.wav $(SndWavDir)\sound_Magic_Harp_C.wav \ + $(SndWavDir)\sound_Magic_Harp_D.wav $(SndWavDir)\sound_Magic_Harp_E.wav \ + $(SndWavDir)\sound_Magic_Harp_F.wav $(SndWavDir)\sound_Magic_Harp_G.wav \ + $(SndWavDir)\sound_Tooled_Horn_A.wav $(SndWavDir)\sound_Tooled_Horn_B.wav \ + $(SndWavDir)\sound_Tooled_Horn_C.wav $(SndWavDir)\sound_Tooled_Horn_D.wav \ + $(SndWavDir)\sound_Tooled_Horn_E.wav $(SndWavDir)\sound_Tooled_Horn_F.wav \ + $(SndWavDir)\sound_Tooled_Horn_G.wav $(SndWavDir)\sound_Wooden_Flute_A.wav \ + $(SndWavDir)\sound_Wooden_Flute_B.wav $(SndWavDir)\sound_Wooden_Flute_C.wav \ + $(SndWavDir)\sound_Wooden_Flute_D.wav $(SndWavDir)\sound_Wooden_Flute_E.wav \ + $(SndWavDir)\sound_Wooden_Flute_F.wav $(SndWavDir)\sound_Wooden_Flute_G.wav \ + $(SndWavDir)\sound_Wooden_Harp_A.wav $(SndWavDir)\sound_Wooden_Harp_B.wav \ + $(SndWavDir)\sound_Wooden_Harp_C.wav $(SndWavDir)\sound_Wooden_Harp_D.wav \ + $(SndWavDir)\sound_Wooden_Harp_E.wav $(SndWavDir)\sound_Wooden_Harp_F.wav \ + $(SndWavDir)\sound_Wooden_Harp_G.wav + #========================================== # Header file macros #========================================== @@ -946,7 +975,7 @@ DLB = $(Q)$(CC) $(CFLAGS) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ $< #========================================== -# Rules for files in sound\wind +# Rules for files in sound\windsound #========================================== {..\sound\windsound}.c{$(OBJTTY)}.o: @@ -955,6 +984,16 @@ DLB = {..\sound\windsound}.c{$(OBJGUI)}.o: $(Q)$(CC) $(CFLAGS) -I$(WSHR) $(GUIDEF) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ $< +#========================================== +# Rules for files in sound\sample +#========================================== + +{..\sound\sample}.c{$(OBJTTY)}.o: + $(Q)$(CC) $(CFLAGS) -I$(WSHR) $(TTYDEF) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ $< + +{..\sound\sample}.c{$(OBJGUI)}.o: + $(Q)$(CC) $(CFLAGS) -I$(WSHR) $(GUIDEF) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ $< + #========================================== # Rules for files in sys\share #========================================== @@ -1049,6 +1088,15 @@ DLB = {$(LUASRC)}.c{$(OBJLUA)}.o: $(Q)$(CC) $(CFLAGS) -wd4701 -wd4702 -wd4774 -wd4324 $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ $< +#=============================================================================== +# Rules for integrated sound files in sound/wav +#=============================================================================== + +{$(SndWavDir)}.uu{$(SndWavDir)}.wav: + cd $(SndWavDir) + ..\..\util\uudecode.exe $(@B).uu + cd ..\..\src + #========================================== #=============== TARGETS ================== #========================================== @@ -1254,13 +1302,13 @@ $(OGUI)NetHackW.res: $(SRC)\tiles.bmp $(MSWIN)\NetHackW.rc \ $(MSWIN)\mnsel.bmp \ $(MSWIN)\mnselcnt.bmp $(MSWIN)\mnunsel.bmp \ $(MSWIN)\petmark.bmp $(MSWIN)\pilemark.bmp $(MSWIN)\NetHack.ico \ - $(MSWIN)\rip.bmp $(MSWIN)\splash.bmp + $(MSWIN)\rip.bmp $(MSWIN)\splash.bmp $(SNDWAVFILES) @echo Building resource file $@ from $** - @$(rc) -nologo -r -fo$@ -i$(MSWIN) -dNDEBUG $(MSWIN)\NetHackW.rc + @$(rc) -nologo -r -fo$@ -i$(MSWIN) -dNDEBUG -I..\sound\wav $(MSWIN)\NetHackW.rc -$(OTTY)console.res: $(MSWSYS)\console.rc $(MSWSYS)\NetHack.ico +$(OTTY)console.res: $(MSWSYS)\console.rc $(MSWSYS)\NetHack.ico $(SNDWAVFILES) @echo Building resource file $@ from $** - @$(rc) -nologo -r -fo$@ -i$(MSWSYS) -dNDEBUG $(MSWSYS)\console.rc + @$(rc) -nologo -r -fo$@ -i$(MSWSYS) -dNDEBUG -I..\sound\wav $(MSWSYS)\console.rc # # Secondary Targets. @@ -1749,6 +1797,7 @@ $(OTTY)consoletty.o: $(MSWSYS)\consoletty.c $(WINDHDR) $(HACK_H) $(TILE_H) $(OTTY)win10.o: $(MSWSYS)\win10.c $(WINDHDR) $(HACK_H) $(OTTY)windsys.o: $(MSWSYS)\windsys.c $(WINDHDR) $(HACK_H) $(OTTY)windsound.o: ..\sound\windsound\windsound.c $(HACK_H) +$(OTTY)sample.o: ..\sound\sample\sample.c $(HACK_H) $(OTTY)windmain.o: $(MSWSYS)\windmain.c $(WINDHDR) $(HACK_H) $(OTTY)safeproc.o: $(WSHR)\safeproc.c $(WINDHDR) $(HACK_H) @@ -1894,6 +1943,62 @@ $(DAT)\epitaph: $(U)makedefs.exe $(DAT)\epitaph.txt $(DAT)\bogusmon: $(U)makedefs.exe $(DAT)\bogusmon.txt $(U)makedefs -s +#=============================================================================== +# Integrated sound files +#=============================================================================== +$(SndWavDir)se_squeak_A.wav: $(SndWavDir)se_squeak_A.uu $(U)uudecode.exe +$(SndWavDir)se_squeak_B.wav: $(SndWavDir)se_squeak_B.uu $(U)uudecode.exe +$(SndWavDir)se_squeak_B_flat.wav: $(SndWavDir)se_squeak_B_flat.uu $(U)uudecode.exe +$(SndWavDir)se_squeak_C.wav: $(SndWavDir)se_squeak_C.uu $(U)uudecode.exe +$(SndWavDir)se_squeak_D.wav: $(SndWavDir)se_squeak_D.uu $(U)uudecode.exe +$(SndWavDir)se_squeak_D_flat.wav: $(SndWavDir)se_squeak_D_flat.uu $(U)uudecode.exe +$(SndWavDir)se_squeak_E.wav: $(SndWavDir)se_squeak_E.uu $(U)uudecode.exe +$(SndWavDir)se_squeak_E_flat.wav: $(SndWavDir)se_squeak_E_flat.uu $(U)uudecode.exe +$(SndWavDir)se_squeak_F.wav: $(SndWavDir)se_squeak_F.uu $(U)uudecode.exe +$(SndWavDir)se_squeak_F_sharp.wav: $(SndWavDir)se_squeak_F_sharp.uu $(U)uudecode.exe +$(SndWavDir)se_squeak_G.wav: $(SndWavDir)se_squeak_G.uu $(U)uudecode.exe +$(SndWavDir)se_squeak_G_sharp.wav: $(SndWavDir)se_squeak_G_sharp.uu $(U)uudecode.exe +$(SndWavDir)sound_Bell.wav: $(SndWavDir)sound_Bell.uu $(U)uudecode.exe +$(SndWavDir)sound_Bugle_A.wav: $(SndWavDir)sound_Bugle_A.uu $(U)uudecode.exe +$(SndWavDir)sound_Bugle_B.wav: $(SndWavDir)sound_Bugle_B.uu $(U)uudecode.exe +$(SndWavDir)sound_Bugle_C.wav: $(SndWavDir)sound_Bugle_C.uu $(U)uudecode.exe +$(SndWavDir)sound_Bugle_D.wav: $(SndWavDir)sound_Bugle_D.uu $(U)uudecode.exe +$(SndWavDir)sound_Bugle_E.wav: $(SndWavDir)sound_Bugle_E.uu $(U)uudecode.exe +$(SndWavDir)sound_Bugle_F.wav: $(SndWavDir)sound_Bugle_F.uu $(U)uudecode.exe +$(SndWavDir)sound_Bugle_G.wav: $(SndWavDir)sound_Bugle_G.uu $(U)uudecode.exe +$(SndWavDir)sound_Drum_Of_Earthquake.wav: $(SndWavDir)sound_Drum_Of_Earthquake.uu $(U)uudecode.exe +$(SndWavDir)sound_Fire_Horn.wav: $(SndWavDir)sound_Fire_Horn.uu $(U)uudecode.exe +$(SndWavDir)sound_Frost_Horn.wav: $(SndWavDir)sound_Frost_Horn.uu $(U)uudecode.exe +$(SndWavDir)sound_Leather_Drum.wav: $(SndWavDir)sound_Leather_Drum.uu $(U)uudecode.exe +$(SndWavDir)sound_Magic_Harp_A.wav: $(SndWavDir)sound_Magic_Harp_A.uu $(U)uudecode.exe +$(SndWavDir)sound_Magic_Harp_B.wav: $(SndWavDir)sound_Magic_Harp_B.uu $(U)uudecode.exe +$(SndWavDir)sound_Magic_Harp_C.wav: $(SndWavDir)sound_Magic_Harp_C.uu $(U)uudecode.exe +$(SndWavDir)sound_Magic_Harp_D.wav: $(SndWavDir)sound_Magic_Harp_D.uu $(U)uudecode.exe +$(SndWavDir)sound_Magic_Harp_E.wav: $(SndWavDir)sound_Magic_Harp_E.uu $(U)uudecode.exe +$(SndWavDir)sound_Magic_Harp_F.wav: $(SndWavDir)sound_Magic_Harp_F.uu $(U)uudecode.exe +$(SndWavDir)sound_Magic_Harp_G.wav: $(SndWavDir)sound_Magic_Harp_G.uu $(U)uudecode.exe +$(SndWavDir)sound_Tooled_Horn_A.wav: $(SndWavDir)sound_Tooled_Horn_A.uu $(U)uudecode.exe +$(SndWavDir)sound_Tooled_Horn_B.wav: $(SndWavDir)sound_Tooled_Horn_B.uu $(U)uudecode.exe +$(SndWavDir)sound_Tooled_Horn_C.wav: $(SndWavDir)sound_Tooled_Horn_C.uu $(U)uudecode.exe +$(SndWavDir)sound_Tooled_Horn_D.wav: $(SndWavDir)sound_Tooled_Horn_D.uu $(U)uudecode.exe +$(SndWavDir)sound_Tooled_Horn_E.wav: $(SndWavDir)sound_Tooled_Horn_E.uu $(U)uudecode.exe +$(SndWavDir)sound_Tooled_Horn_F.wav: $(SndWavDir)sound_Tooled_Horn_F.uu $(U)uudecode.exe +$(SndWavDir)sound_Tooled_Horn_G.wav: $(SndWavDir)sound_Tooled_Horn_G.uu $(U)uudecode.exe +$(SndWavDir)sound_Wooden_Flute_A.wav: $(SndWavDir)sound_Wooden_Flute_A.uu $(U)uudecode.exe +$(SndWavDir)sound_Wooden_Flute_B.wav: $(SndWavDir)sound_Wooden_Flute_B.uu $(U)uudecode.exe +$(SndWavDir)sound_Wooden_Flute_C.wav: $(SndWavDir)sound_Wooden_Flute_C.uu $(U)uudecode.exe +$(SndWavDir)sound_Wooden_Flute_D.wav: $(SndWavDir)sound_Wooden_Flute_D.uu $(U)uudecode.exe +$(SndWavDir)sound_Wooden_Flute_E.wav: $(SndWavDir)sound_Wooden_Flute_E.uu $(U)uudecode.exe +$(SndWavDir)sound_Wooden_Flute_F.wav: $(SndWavDir)sound_Wooden_Flute_F.uu $(U)uudecode.exe +$(SndWavDir)sound_Wooden_Flute_G.wav: $(SndWavDir)sound_Wooden_Flute_G.uu $(U)uudecode.exe +$(SndWavDir)sound_Wooden_Harp_A.wav: $(SndWavDir)sound_Wooden_Harp_A.uu $(U)uudecode.exe +$(SndWavDir)sound_Wooden_Harp_B.wav: $(SndWavDir)sound_Wooden_Harp_B.uu $(U)uudecode.exe +$(SndWavDir)sound_Wooden_Harp_C.wav: $(SndWavDir)sound_Wooden_Harp_C.uu $(U)uudecode.exe +$(SndWavDir)sound_Wooden_Harp_D.wav: $(SndWavDir)sound_Wooden_Harp_D.uu $(U)uudecode.exe +$(SndWavDir)sound_Wooden_Harp_E.wav: $(SndWavDir)sound_Wooden_Harp_E.uu $(U)uudecode.exe +$(SndWavDir)sound_Wooden_Harp_F.wav: $(SndWavDir)sound_Wooden_Harp_F.uu $(U)uudecode.exe +$(SndWavDir)sound_Wooden_Harp_G.wav: $(SndWavDir)sound_Wooden_Harp_G.uu $(U)uudecode.exe + #=============================================================================== # Housekeeping #=============================================================================== diff --git a/sys/windows/vs/NetHackW/NetHackW.vcxproj b/sys/windows/vs/NetHackW/NetHackW.vcxproj index 15baedc1a..07de0b5cb 100644 --- a/sys/windows/vs/NetHackW/NetHackW.vcxproj +++ b/sys/windows/vs/NetHackW/NetHackW.vcxproj @@ -16,10 +16,10 @@ $(BinDir) - true + false - true + false diff --git a/sys/windows/vs/files.props b/sys/windows/vs/files.props index 3394fe51b..e17fb4468 100644 --- a/sys/windows/vs/files.props +++ b/sys/windows/vs/files.props @@ -148,6 +148,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sys/windows/vs/uudecode/afteruudecode.proj b/sys/windows/vs/uudecode/afteruudecode.proj index dbfdf604e..20be01069 100644 --- a/sys/windows/vs/uudecode/afteruudecode.proj +++ b/sys/windows/vs/uudecode/afteruudecode.proj @@ -13,6 +13,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +