mirror of
https://gitlab.com/skmp/dca3-game.git
synced 2025-04-28 13:07:59 +03:00
Pack stream lengths to a .bin file so we don't have to open them all on startup
This commit is contained in:
parent
162de2aab4
commit
3ab8061980
10 changed files with 1574 additions and 1472 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -378,6 +378,7 @@ liberty/animtool*
|
|||
liberty/texconv*
|
||||
liberty/imgtool*
|
||||
liberty/coltool*
|
||||
liberty/streamheaderpack*
|
||||
liberty/extract-sfx*
|
||||
liberty/pack-sfx*
|
||||
liberty/analyze-profile*
|
||||
|
@ -397,6 +398,7 @@ miami/animtool*
|
|||
miami/texconv*
|
||||
miami/imgtool*
|
||||
miami/coltool*
|
||||
miami/streamheaderpack*
|
||||
miami/extract-sfx*
|
||||
miami/pack-sfx*
|
||||
miami/analyze-profile*
|
||||
|
|
|
@ -29,6 +29,7 @@ REPACK_IMG_DC_DIR?=$(REPACK_DIR)/img-dc
|
|||
REPACK_SFX_ORIG_DIR?=$(REPACK_DIR)/sfx-orig
|
||||
REPACK_SFX_DC_DIR?=$(REPACK_DIR)/sfx-dc
|
||||
REPACK_STREAM_DECODED_DIR?=$(REPACK_DIR)/stream-decoded
|
||||
REPACK_STREAM_DEST_DIR=$(REPACK_GTA_DIR)/stream
|
||||
REPACK_CUTS_ORIG_DIR?=$(REPACK_DIR)/cuts-orig
|
||||
REPACK_CUTS_DC_DIR?=$(REPACK_DIR)/cuts-dc
|
||||
|
||||
|
@ -299,6 +300,9 @@ animtool: ../src/tools/animtool.cpp
|
|||
coltool: ../src/tools/coltool.cpp
|
||||
$(CXX) -std=c++17 -o $@ -g -O0 $<
|
||||
|
||||
streamheaderpack: ../src/tools/streamheaderpack.cpp
|
||||
$(CXX) -std=c++17 -o $@ -g -O0 $<
|
||||
|
||||
-include $(DEPS)
|
||||
|
||||
#### Repacking ####
|
||||
|
@ -380,8 +384,8 @@ LOOSE_FILES_DC = $(addprefix $(REPACK_GTA_DIR)/, $(MISC_FILES))
|
|||
SFX_DC_DIR = $(REPACK_GTA_DIR)/sfx
|
||||
SFX_DC_RAW = $(SFX_DC_DIR)/sfx_all.raw
|
||||
SFX_DC_DSC = $(SFX_DC_DIR)/sfx_all.dsc
|
||||
STREAM_ADPCM_DC = $(addprefix $(REPACK_GTA_DIR)/stream/, $(STREAM_WAV:.wav=.APM)) \
|
||||
$(addprefix $(REPACK_GTA_DIR)/stream/, $(STREAM_MP3:.mp3=.APM))
|
||||
STREAM_ADPCM_DC = $(addprefix $(REPACK_STREAM_DEST_DIR)/, $(STREAM_WAV:.wav=.APM)) \
|
||||
$(addprefix $(REPACK_STREAM_DEST_DIR)/, $(STREAM_MP3:.mp3=.APM))
|
||||
|
||||
IMG_TEXTURES_ORIG = $(addprefix $(REPACK_IMG_ORIG_DIR)/, $(IMG_TEXTURES))
|
||||
IMG_MODELS_ORIG = $(addprefix $(REPACK_IMG_ORIG_DIR)/, $(IMG_MODELS))
|
||||
|
@ -398,8 +402,10 @@ STREAM_WAV_DECODED = $(addprefix $(REPACK_STREAM_DECODED_DIR)/, $(STREAM_WAV))
|
|||
|
||||
.PRECIOUS: $(SFX_ORIG) $(SFX_REPACK_DC) $(STREAM_MP3_DECODED) $(STREAM_WAV_DECODED)
|
||||
|
||||
$(REPACK_DIR)/repacked: $(REPACK_GTA_DIR)/models/gta3.img $(REPACK_GTA_DIR)/models/gta3.dir $(LOOSE_FILES_DC) $(STREAM_ADPCM_DC) $(SFX_DC_RAW) $(SFX_DC_DSC)
|
||||
$(REPACK_DIR)/repacked: $(REPACK_GTA_DIR)/models/gta3.img $(REPACK_GTA_DIR)/models/gta3.dir $(LOOSE_FILES_DC) $(STREAM_ADPCM_DC) $(SFX_DC_RAW) $(SFX_DC_DSC) streamheaderpack
|
||||
mkdir -p $(@D)
|
||||
# $(REPACK_GTA_DIR) needed as first argument as paths in the game prefix with stream/
|
||||
./streamheaderpack liberty $(REPACK_GTA_DIR) $(REPACK_STREAM_DEST_DIR)/hdr.bin
|
||||
@git archive --format zip --output "$(REPACK_GTA_DIR)/DCA3-$(GIT_VERSION).zip" HEAD
|
||||
@touch $@
|
||||
@echo && echo && echo "*** Repack Completed Successfully ($(PROJECT_NAME)) ***" && echo && echo
|
||||
|
@ -586,20 +592,20 @@ $(REPACK_SFX_DC_DIR)/%.pcm: $(REPACK_SFX_ORIG_DIR)/%.wav aud2adpcm
|
|||
# stream processing
|
||||
|
||||
# first try the mods loose directory
|
||||
$(REPACK_GTA_DIR)/stream/%.APM: $(GTA_MOD_LOOSE_DIR)/audio/%.wav aud2adpcm
|
||||
$(REPACK_STREAM_DEST_DIR)/%.APM: $(GTA_MOD_LOOSE_DIR)/audio/%.wav aud2adpcm
|
||||
@mkdir -p $(@D)
|
||||
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
||||
|
||||
$(REPACK_GTA_DIR)/stream/%.APM: $(GTA_MOD_LOOSE_DIR)/audio/%.mp3 aud2adpcm
|
||||
$(REPACK_STREAM_DEST_DIR)/%.APM: $(GTA_MOD_LOOSE_DIR)/audio/%.mp3 aud2adpcm
|
||||
@mkdir -p $(@D)
|
||||
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
||||
|
||||
# then original folder
|
||||
$(REPACK_GTA_DIR)/stream/%.APM: $(GTA_DIR)/audio/%.wav aud2adpcm
|
||||
$(REPACK_STREAM_DEST_DIR)/%.APM: $(GTA_DIR)/audio/%.wav aud2adpcm
|
||||
@mkdir -p $(@D)
|
||||
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
||||
|
||||
$(REPACK_GTA_DIR)/stream/%.APM: $(GTA_DIR)/audio/%.mp3 aud2adpcm
|
||||
$(REPACK_STREAM_DEST_DIR)/%.APM: $(GTA_DIR)/audio/%.mp3 aud2adpcm
|
||||
@mkdir -p $(@D)
|
||||
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ REPACK_IMG_DC_DIR?=$(REPACK_DIR)/miami-img-dc
|
|||
REPACK_SFX_ORIG_DIR?=$(REPACK_DIR)/miami-sfx-orig
|
||||
REPACK_SFX_DC_DIR?=$(REPACK_DIR)/miami-sfx-dc
|
||||
REPACK_STREAM_DECODED_DIR?=$(REPACK_DIR)/miami-stream-decoded
|
||||
REPACK_STREAM_DEST_DIR=$(REPACK_GTA_DIR)/stream
|
||||
REPACK_CUTS_ORIG_DIR?=$(REPACK_DIR)/miami-cuts-orig
|
||||
REPACK_CUTS_DC_DIR?=$(REPACK_DIR)/miami-cuts-dc
|
||||
|
||||
|
@ -305,6 +306,9 @@ animtool: ../src/tools/animtool.cpp
|
|||
coltool: ../src/tools/coltool.cpp
|
||||
$(CXX) -std=c++17 -o $@ -g -O0 $<
|
||||
|
||||
streamheaderpack: ../src/tools/streamheaderpack.cpp
|
||||
$(CXX) -std=c++17 -o $@ -g -O0 $<
|
||||
|
||||
-include $(DEPS)
|
||||
|
||||
#### Repacking ####
|
||||
|
@ -371,9 +375,9 @@ LOOSE_FILES_DC = $(addprefix $(REPACK_GTA_DIR)/, $(MISC_FILES))
|
|||
SFX_DC_DIR = $(REPACK_GTA_DIR)/sfx
|
||||
SFX_DC_RAW = $(SFX_DC_DIR)/sfx_all.raw
|
||||
SFX_DC_DSC = $(SFX_DC_DIR)/sfx_all.dsc
|
||||
STREAM_ADPCM_DC = $(addprefix $(REPACK_GTA_DIR)/stream/, $(STREAM_WAV:.wav=.APM)) \
|
||||
$(addprefix $(REPACK_GTA_DIR)/stream/, $(STREAM_MP3:.mp3=.APM)) \
|
||||
$(addprefix $(REPACK_GTA_DIR)/stream/, $(STREAM_ADF:.adf=.APM))
|
||||
STREAM_ADPCM_DC = $(addprefix $(REPACK_STREAM_DEST_DIR)/, $(STREAM_WAV:.wav=.APM)) \
|
||||
$(addprefix $(REPACK_STREAM_DEST_DIR)/, $(STREAM_MP3:.mp3=.APM)) \
|
||||
$(addprefix $(REPACK_STREAM_DEST_DIR)/, $(STREAM_ADF:.adf=.APM))
|
||||
|
||||
IMG_TEXTURES_ORIG = $(addprefix $(REPACK_IMG_ORIG_DIR)/, $(IMG_TEXTURES))
|
||||
IMG_MODELS_ORIG = $(addprefix $(REPACK_IMG_ORIG_DIR)/, $(IMG_MODELS))
|
||||
|
@ -391,8 +395,10 @@ STREAM_ADF_DECODED = $(addprefix $(REPACK_STREAM_DECODED_DIR)/, $(STREAM_ADF:.ad
|
|||
|
||||
.PRECIOUS: $(SFX_ORIG) $(SFX_REPACK_DC) $(STREAM_ADF_DECODED)
|
||||
|
||||
$(REPACK_DIR)/repacked: $(REPACK_GTA_DIR)/models/gta3.img $(REPACK_GTA_DIR)/models/gta3.dir $(REPACK_GTA_DIR)/anim/cuts.img $(REPACK_GTA_DIR)/anim/cuts.dir $(LOOSE_FILES_DC) $(STREAM_ADPCM_DC) $(SFX_DC_RAW) $(SFX_DC_DSC)
|
||||
$(REPACK_DIR)/repacked: $(REPACK_GTA_DIR)/models/gta3.img $(REPACK_GTA_DIR)/models/gta3.dir $(REPACK_GTA_DIR)/anim/cuts.img $(REPACK_GTA_DIR)/anim/cuts.dir $(LOOSE_FILES_DC) $(STREAM_ADPCM_DC) $(SFX_DC_RAW) $(SFX_DC_DSC) streamheaderpack
|
||||
mkdir -p $(@D)
|
||||
# $(REPACK_GTA_DIR) needed as first argument as paths in the game prefix with stream/
|
||||
./streamheaderpack miami $(REPACK_GTA_DIR) $(REPACK_STREAM_DEST_DIR)/hdr.bin
|
||||
@git archive --format zip --output "$(REPACK_GTA_DIR)/DCA3-$(GIT_VERSION).zip" HEAD
|
||||
@touch $@
|
||||
@echo && echo && echo "*** Repack Completed Successfully ($(PROJECT_NAME)) ***" && echo && echo
|
||||
|
@ -592,7 +598,7 @@ $(REPACK_SFX_DC_DIR)/%.pcm: $(REPACK_SFX_ORIG_DIR)/%.wav aud2adpcm
|
|||
# stream processing
|
||||
|
||||
# first try the mods loose directory
|
||||
$(REPACK_GTA_DIR)/stream/%.APM: $(GTA_MOD_LOOSE_DIR)/Audio/%.wav aud2adpcm
|
||||
$(REPACK_STREAM_DEST_DIR)/%.APM: $(GTA_MOD_LOOSE_DIR)/Audio/%.wav aud2adpcm
|
||||
@mkdir -p $(@D)
|
||||
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
||||
|
||||
|
@ -600,16 +606,16 @@ $(REPACK_STREAM_DECODED_DIR)/%.mp3: $(GTA_MOD_LOOSE_DIR)/Audio/%.adf adf2mp3
|
|||
@mkdir -p $(@D)
|
||||
./adf2mp3 $< $@
|
||||
|
||||
$(REPACK_GTA_DIR)/stream/%.APM: $(GTA_MOD_LOOSE_DIR)/Audio/%.mp3 aud2adpcm
|
||||
$(REPACK_STREAM_DEST_DIR)/%.APM: $(GTA_MOD_LOOSE_DIR)/Audio/%.mp3 aud2adpcm
|
||||
@mkdir -p $(@D)
|
||||
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
||||
|
||||
$(REPACK_GTA_DIR)/stream/%.APM: $(REPACK_STREAM_DECODED_DIR)/%.mp3 aud2adpcm
|
||||
$(REPACK_STREAM_DEST_DIR)/%.APM: $(REPACK_STREAM_DECODED_DIR)/%.mp3 aud2adpcm
|
||||
@mkdir -p $(@D)
|
||||
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
||||
|
||||
# then original folder
|
||||
$(REPACK_GTA_DIR)/stream/%.APM: $(GTA_DIR)/Audio/%.wav aud2adpcm
|
||||
$(REPACK_STREAM_DEST_DIR)/%.APM: $(GTA_DIR)/Audio/%.wav aud2adpcm
|
||||
@mkdir -p $(@D)
|
||||
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
||||
|
||||
|
@ -617,11 +623,11 @@ $(REPACK_STREAM_DECODED_DIR)/%.mp3: $(GTA_DIR)/Audio/%.adf adf2mp3
|
|||
@mkdir -p $(@D)
|
||||
./adf2mp3 $< $@
|
||||
|
||||
$(REPACK_GTA_DIR)/stream/%.APM: $(GTA_DIR)/Audio/%.mp3 aud2adpcm
|
||||
$(REPACK_STREAM_DEST_DIR)/%.APM: $(GTA_DIR)/Audio/%.mp3 aud2adpcm
|
||||
@mkdir -p $(@D)
|
||||
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
||||
|
||||
$(REPACK_GTA_DIR)/stream/%.APM: $(REPACK_STREAM_DECODED_DIR)/%.mp3 aud2adpcm
|
||||
$(REPACK_STREAM_DEST_DIR)/%.APM: $(REPACK_STREAM_DECODED_DIR)/%.mp3 aud2adpcm
|
||||
@mkdir -p $(@D)
|
||||
./aud2adpcm $(AUDIO_STREAM_OPTION) $< $@
|
||||
|
||||
|
|
|
@ -478,6 +478,7 @@ static char PS2StreamedNameTable[][25]=
|
|||
};
|
||||
#endif
|
||||
|
||||
#ifdef PC_AUDIO_PATHS
|
||||
static char StreamedNameTable[][25] =
|
||||
{
|
||||
"AUDIO\\HEAD.WAV",
|
||||
|
@ -677,204 +678,6 @@ static char StreamedNameTable[][25] =
|
|||
"AUDIO\\k1_b.WAV",
|
||||
"AUDIO\\cat1.WAV"
|
||||
};
|
||||
|
||||
static char DCStreamedNameTable[][25] =
|
||||
{
|
||||
"stream/HEAD.APM",
|
||||
"stream/CLASS.APM",
|
||||
"stream/KJAH.APM",
|
||||
"stream/RISE.APM",
|
||||
"stream/LIPS.APM",
|
||||
"stream/GAME.APM",
|
||||
"stream/MSX.APM",
|
||||
"stream/FLASH.APM",
|
||||
"stream/CHAT.APM",
|
||||
"stream/HEAD.APM",
|
||||
"stream/POLICE.APM",
|
||||
"stream/CITY.APM",
|
||||
"stream/WATER.APM",
|
||||
"stream/COMOPEN.APM",
|
||||
"stream/SUBOPEN.APM",
|
||||
"stream/JB.APM",
|
||||
"stream/BET.APM",
|
||||
"stream/L1_LG.APM",
|
||||
"stream/L2_DSB.APM",
|
||||
"stream/L3_DM.APM",
|
||||
"stream/L4_PAP.APM",
|
||||
"stream/L5_TFB.APM",
|
||||
"stream/J0_DM2.APM",
|
||||
"stream/J1_LFL.APM",
|
||||
"stream/J2_KCL.APM",
|
||||
"stream/J3_VH.APM",
|
||||
"stream/J4_ETH.APM",
|
||||
"stream/J5_DST.APM",
|
||||
"stream/J6_TBJ.APM",
|
||||
"stream/T1_TOL.APM",
|
||||
"stream/T2_TPU.APM",
|
||||
"stream/T3_MAS.APM",
|
||||
"stream/T4_TAT.APM",
|
||||
"stream/T5_BF.APM",
|
||||
"stream/S0_MAS.APM",
|
||||
"stream/S1_PF.APM",
|
||||
"stream/S2_CTG.APM",
|
||||
"stream/S3_RTC.APM",
|
||||
"stream/S5_LRQ.APM",
|
||||
"stream/S4_BDBA.APM",
|
||||
"stream/S4_BDBB.APM",
|
||||
"stream/S2_CTG2.APM",
|
||||
"stream/S4_BDBD.APM",
|
||||
"stream/S5_LRQB.APM",
|
||||
"stream/S5_LRQC.APM",
|
||||
"stream/A1_SSO.APM",
|
||||
"stream/A2_PP.APM",
|
||||
"stream/A3_SS.APM",
|
||||
"stream/A4_PDR.APM",
|
||||
"stream/A5_K2FT.APM",
|
||||
"stream/K1_KBO.APM",
|
||||
"stream/K2_GIS.APM",
|
||||
"stream/K3_DS.APM",
|
||||
"stream/K4_SHI.APM",
|
||||
"stream/K5_SD.APM",
|
||||
"stream/R0_PDR2.APM",
|
||||
"stream/R1_SW.APM",
|
||||
"stream/R2_AP.APM",
|
||||
"stream/R3_ED.APM",
|
||||
"stream/R4_GF.APM",
|
||||
"stream/R5_PB.APM",
|
||||
"stream/R6_MM.APM",
|
||||
"stream/D1_STOG.APM",
|
||||
"stream/D2_KK.APM",
|
||||
"stream/D3_ADO.APM",
|
||||
"stream/D5_ES.APM",
|
||||
"stream/D7_MLD.APM",
|
||||
"stream/D4_GTA.APM",
|
||||
"stream/D4_GTA2.APM",
|
||||
"stream/D6_STS.APM",
|
||||
"stream/A6_BAIT.APM",
|
||||
"stream/A7_ETG.APM",
|
||||
"stream/A8_PS.APM",
|
||||
"stream/A9_ASD.APM",
|
||||
"stream/K4_SHI2.APM",
|
||||
"stream/C1_TEX.APM",
|
||||
"stream/EL_PH1.APM",
|
||||
"stream/EL_PH2.APM",
|
||||
"stream/EL_PH3.APM",
|
||||
"stream/EL_PH4.APM",
|
||||
"stream/YD_PH1.APM",
|
||||
"stream/YD_PH2.APM",
|
||||
"stream/YD_PH3.APM",
|
||||
"stream/YD_PH4.APM",
|
||||
"stream/HD_PH1.APM",
|
||||
"stream/HD_PH2.APM",
|
||||
"stream/HD_PH3.APM",
|
||||
"stream/HD_PH4.APM",
|
||||
"stream/HD_PH5.APM",
|
||||
"stream/MT_PH1.APM",
|
||||
"stream/MT_PH2.APM",
|
||||
"stream/MT_PH3.APM",
|
||||
"stream/MT_PH4.APM",
|
||||
"stream/MISCOM.APM",
|
||||
"stream/END.APM",
|
||||
"stream/lib_a1.APM",
|
||||
"stream/lib_a2.APM",
|
||||
"stream/lib_a.APM",
|
||||
"stream/lib_b.APM",
|
||||
"stream/lib_c.APM",
|
||||
"stream/lib_d.APM",
|
||||
"stream/l2_a.APM",
|
||||
"stream/j4t_1.APM",
|
||||
"stream/j4t_2.APM",
|
||||
"stream/j4t_3.APM",
|
||||
"stream/j4t_4.APM",
|
||||
"stream/j4_a.APM",
|
||||
"stream/j4_b.APM",
|
||||
"stream/j4_c.APM",
|
||||
"stream/j4_d.APM",
|
||||
"stream/j4_e.APM",
|
||||
"stream/j4_f.APM",
|
||||
"stream/j6_1.APM",
|
||||
"stream/j6_a.APM",
|
||||
"stream/j6_b.APM",
|
||||
"stream/j6_c.APM",
|
||||
"stream/j6_d.APM",
|
||||
"stream/t4_a.APM",
|
||||
"stream/s1_a.APM",
|
||||
"stream/s1_a1.APM",
|
||||
"stream/s1_b.APM",
|
||||
"stream/s1_c.APM",
|
||||
"stream/s1_c1.APM",
|
||||
"stream/s1_d.APM",
|
||||
"stream/s1_e.APM",
|
||||
"stream/s1_f.APM",
|
||||
"stream/s1_g.APM",
|
||||
"stream/s1_h.APM",
|
||||
"stream/s1_i.APM",
|
||||
"stream/s1_j.APM",
|
||||
"stream/s1_k.APM",
|
||||
"stream/s1_l.APM",
|
||||
"stream/s3_a.APM",
|
||||
"stream/s3_b.APM",
|
||||
"stream/el3_a.APM",
|
||||
"stream/mf1_a.APM",
|
||||
"stream/mf2_a.APM",
|
||||
"stream/mf3_a.APM",
|
||||
"stream/mf3_b.APM",
|
||||
"stream/mf3_b1.APM",
|
||||
"stream/mf3_c.APM",
|
||||
"stream/mf4_a.APM",
|
||||
"stream/mf4_b.APM",
|
||||
"stream/mf4_c.APM",
|
||||
"stream/a1_a.APM",
|
||||
"stream/a3_a.APM",
|
||||
"stream/a5_a.APM",
|
||||
"stream/a4_a.APM",
|
||||
"stream/a4_b.APM",
|
||||
"stream/a4_c.APM",
|
||||
"stream/a4_d.APM",
|
||||
"stream/k1_a.APM",
|
||||
"stream/k3_a.APM",
|
||||
"stream/r1_a.APM",
|
||||
"stream/r2_a.APM",
|
||||
"stream/r2_b.APM",
|
||||
"stream/r2_c.APM",
|
||||
"stream/r2_d.APM",
|
||||
"stream/r2_e.APM",
|
||||
"stream/r2_f.APM",
|
||||
"stream/r2_g.APM",
|
||||
"stream/r2_h.APM",
|
||||
"stream/r5_a.APM",
|
||||
"stream/r6_a.APM",
|
||||
"stream/r6_a1.APM",
|
||||
"stream/r6_b.APM",
|
||||
"stream/lo2_a.APM",
|
||||
"stream/lo6_a.APM",
|
||||
"stream/yd2_a.APM",
|
||||
"stream/yd2_b.APM",
|
||||
"stream/yd2_c.APM",
|
||||
"stream/yd2_c1.APM",
|
||||
"stream/yd2_d.APM",
|
||||
"stream/yd2_e.APM",
|
||||
"stream/yd2_f.APM",
|
||||
"stream/yd2_g.APM",
|
||||
"stream/yd2_h.APM",
|
||||
"stream/yd2_ass.APM",
|
||||
"stream/yd2_ok.APM",
|
||||
"stream/h5_a.APM",
|
||||
"stream/h5_b.APM",
|
||||
"stream/h5_c.APM",
|
||||
"stream/ammu_a.APM",
|
||||
"stream/ammu_b.APM",
|
||||
"stream/ammu_c.APM",
|
||||
"stream/door_1.APM",
|
||||
"stream/door_2.APM",
|
||||
"stream/door_3.APM",
|
||||
"stream/door_4.APM",
|
||||
"stream/door_5.APM",
|
||||
"stream/door_6.APM",
|
||||
"stream/t3_a.APM",
|
||||
"stream/t3_b.APM",
|
||||
"stream/t3_c.APM",
|
||||
"stream/k1_b.APM",
|
||||
"stream/cat1.APM"
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -15,6 +15,7 @@
|
|||
#define debugf(...) // dbglog(DBG_CRITICAL, __VA_ARGS__)
|
||||
|
||||
#include "sampman.h"
|
||||
#include "sampman_dc_streams.h"
|
||||
#include "AudioManager.h"
|
||||
#include "MusicManager.h"
|
||||
#include "Frontend.h"
|
||||
|
@ -172,6 +173,8 @@ file_t fdPedSfx;
|
|||
volatile uint32 nPedSfxReqReadId = 1;
|
||||
volatile uint32 nPedSfxReqNextId = 1;
|
||||
|
||||
static int32 DCStreamedLength[TOTAL_STREAMED_SOUNDS];
|
||||
|
||||
struct WavHeader {
|
||||
// RIFF Header
|
||||
char riff[4]; // RIFF Header Magic header
|
||||
|
@ -461,6 +464,12 @@ cSampleManager::Initialise(void)
|
|||
|
||||
assert(fdPedSfx >= 0);
|
||||
|
||||
file_t fd = fs_open("stream/hdr.bin", O_RDONLY);
|
||||
assert(fd >= 0);
|
||||
static_assert(sizeof(DCStreamedLength) == TOTAL_STREAMED_SOUNDS*sizeof(int32));
|
||||
assert(fs_read(fd, DCStreamedLength, sizeof(DCStreamedLength)) == sizeof(DCStreamedLength));
|
||||
fs_close(fd);
|
||||
|
||||
_bSampmanInitialised = true;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1212,21 +1221,10 @@ int32
|
|||
cSampleManager::GetStreamedFileLength(uint8 nFile)
|
||||
{
|
||||
ASSERT( nFile < TOTAL_STREAMED_SOUNDS );
|
||||
int32 rv = 1; // Look in MusicManager.cpp:268
|
||||
file_t fd = fs_open(DCStreamedNameTable[nFile], O_RDONLY);
|
||||
assert(fd >= 0);
|
||||
WavHeader hdr;
|
||||
assert(fs_read(fd, &hdr, sizeof(hdr)) == sizeof(hdr));
|
||||
|
||||
uint64_t rv64 = (uint64_t)hdr.dataSize * 2000 / hdr.numOfChan / hdr.samplesPerSec;
|
||||
|
||||
assert(rv64 <= INT32_MAX);
|
||||
rv = (int32)rv64;
|
||||
|
||||
fs_close(fd);
|
||||
auto rv = DCStreamedLength[nFile];
|
||||
|
||||
debugf("GetStreamedFileLength: %d %d\n", nFile, rv);
|
||||
return rv <= 0 ? 1 : rv;
|
||||
return rv;
|
||||
}
|
||||
|
||||
bool8
|
||||
|
|
200
src/liberty/audio/sampman_dc_streams.h
Normal file
200
src/liberty/audio/sampman_dc_streams.h
Normal file
|
@ -0,0 +1,200 @@
|
|||
|
||||
static char DCStreamedNameTable[][25] =
|
||||
{
|
||||
"stream/HEAD.APM",
|
||||
"stream/CLASS.APM",
|
||||
"stream/KJAH.APM",
|
||||
"stream/RISE.APM",
|
||||
"stream/LIPS.APM",
|
||||
"stream/GAME.APM",
|
||||
"stream/MSX.APM",
|
||||
"stream/FLASH.APM",
|
||||
"stream/CHAT.APM",
|
||||
"stream/HEAD.APM",
|
||||
"stream/POLICE.APM",
|
||||
"stream/CITY.APM",
|
||||
"stream/WATER.APM",
|
||||
"stream/COMOPEN.APM",
|
||||
"stream/SUBOPEN.APM",
|
||||
"stream/JB.APM",
|
||||
"stream/BET.APM",
|
||||
"stream/L1_LG.APM",
|
||||
"stream/L2_DSB.APM",
|
||||
"stream/L3_DM.APM",
|
||||
"stream/L4_PAP.APM",
|
||||
"stream/L5_TFB.APM",
|
||||
"stream/J0_DM2.APM",
|
||||
"stream/J1_LFL.APM",
|
||||
"stream/J2_KCL.APM",
|
||||
"stream/J3_VH.APM",
|
||||
"stream/J4_ETH.APM",
|
||||
"stream/J5_DST.APM",
|
||||
"stream/J6_TBJ.APM",
|
||||
"stream/T1_TOL.APM",
|
||||
"stream/T2_TPU.APM",
|
||||
"stream/T3_MAS.APM",
|
||||
"stream/T4_TAT.APM",
|
||||
"stream/T5_BF.APM",
|
||||
"stream/S0_MAS.APM",
|
||||
"stream/S1_PF.APM",
|
||||
"stream/S2_CTG.APM",
|
||||
"stream/S3_RTC.APM",
|
||||
"stream/S5_LRQ.APM",
|
||||
"stream/S4_BDBA.APM",
|
||||
"stream/S4_BDBB.APM",
|
||||
"stream/S2_CTG2.APM",
|
||||
"stream/S4_BDBD.APM",
|
||||
"stream/S5_LRQB.APM",
|
||||
"stream/S5_LRQC.APM",
|
||||
"stream/A1_SSO.APM",
|
||||
"stream/A2_PP.APM",
|
||||
"stream/A3_SS.APM",
|
||||
"stream/A4_PDR.APM",
|
||||
"stream/A5_K2FT.APM",
|
||||
"stream/K1_KBO.APM",
|
||||
"stream/K2_GIS.APM",
|
||||
"stream/K3_DS.APM",
|
||||
"stream/K4_SHI.APM",
|
||||
"stream/K5_SD.APM",
|
||||
"stream/R0_PDR2.APM",
|
||||
"stream/R1_SW.APM",
|
||||
"stream/R2_AP.APM",
|
||||
"stream/R3_ED.APM",
|
||||
"stream/R4_GF.APM",
|
||||
"stream/R5_PB.APM",
|
||||
"stream/R6_MM.APM",
|
||||
"stream/D1_STOG.APM",
|
||||
"stream/D2_KK.APM",
|
||||
"stream/D3_ADO.APM",
|
||||
"stream/D5_ES.APM",
|
||||
"stream/D7_MLD.APM",
|
||||
"stream/D4_GTA.APM",
|
||||
"stream/D4_GTA2.APM",
|
||||
"stream/D6_STS.APM",
|
||||
"stream/A6_BAIT.APM",
|
||||
"stream/A7_ETG.APM",
|
||||
"stream/A8_PS.APM",
|
||||
"stream/A9_ASD.APM",
|
||||
"stream/K4_SHI2.APM",
|
||||
"stream/C1_TEX.APM",
|
||||
"stream/EL_PH1.APM",
|
||||
"stream/EL_PH2.APM",
|
||||
"stream/EL_PH3.APM",
|
||||
"stream/EL_PH4.APM",
|
||||
"stream/YD_PH1.APM",
|
||||
"stream/YD_PH2.APM",
|
||||
"stream/YD_PH3.APM",
|
||||
"stream/YD_PH4.APM",
|
||||
"stream/HD_PH1.APM",
|
||||
"stream/HD_PH2.APM",
|
||||
"stream/HD_PH3.APM",
|
||||
"stream/HD_PH4.APM",
|
||||
"stream/HD_PH5.APM",
|
||||
"stream/MT_PH1.APM",
|
||||
"stream/MT_PH2.APM",
|
||||
"stream/MT_PH3.APM",
|
||||
"stream/MT_PH4.APM",
|
||||
"stream/MISCOM.APM",
|
||||
"stream/END.APM",
|
||||
"stream/lib_a1.APM",
|
||||
"stream/lib_a2.APM",
|
||||
"stream/lib_a.APM",
|
||||
"stream/lib_b.APM",
|
||||
"stream/lib_c.APM",
|
||||
"stream/lib_d.APM",
|
||||
"stream/l2_a.APM",
|
||||
"stream/j4t_1.APM",
|
||||
"stream/j4t_2.APM",
|
||||
"stream/j4t_3.APM",
|
||||
"stream/j4t_4.APM",
|
||||
"stream/j4_a.APM",
|
||||
"stream/j4_b.APM",
|
||||
"stream/j4_c.APM",
|
||||
"stream/j4_d.APM",
|
||||
"stream/j4_e.APM",
|
||||
"stream/j4_f.APM",
|
||||
"stream/j6_1.APM",
|
||||
"stream/j6_a.APM",
|
||||
"stream/j6_b.APM",
|
||||
"stream/j6_c.APM",
|
||||
"stream/j6_d.APM",
|
||||
"stream/t4_a.APM",
|
||||
"stream/s1_a.APM",
|
||||
"stream/s1_a1.APM",
|
||||
"stream/s1_b.APM",
|
||||
"stream/s1_c.APM",
|
||||
"stream/s1_c1.APM",
|
||||
"stream/s1_d.APM",
|
||||
"stream/s1_e.APM",
|
||||
"stream/s1_f.APM",
|
||||
"stream/s1_g.APM",
|
||||
"stream/s1_h.APM",
|
||||
"stream/s1_i.APM",
|
||||
"stream/s1_j.APM",
|
||||
"stream/s1_k.APM",
|
||||
"stream/s1_l.APM",
|
||||
"stream/s3_a.APM",
|
||||
"stream/s3_b.APM",
|
||||
"stream/el3_a.APM",
|
||||
"stream/mf1_a.APM",
|
||||
"stream/mf2_a.APM",
|
||||
"stream/mf3_a.APM",
|
||||
"stream/mf3_b.APM",
|
||||
"stream/mf3_b1.APM",
|
||||
"stream/mf3_c.APM",
|
||||
"stream/mf4_a.APM",
|
||||
"stream/mf4_b.APM",
|
||||
"stream/mf4_c.APM",
|
||||
"stream/a1_a.APM",
|
||||
"stream/a3_a.APM",
|
||||
"stream/a5_a.APM",
|
||||
"stream/a4_a.APM",
|
||||
"stream/a4_b.APM",
|
||||
"stream/a4_c.APM",
|
||||
"stream/a4_d.APM",
|
||||
"stream/k1_a.APM",
|
||||
"stream/k3_a.APM",
|
||||
"stream/r1_a.APM",
|
||||
"stream/r2_a.APM",
|
||||
"stream/r2_b.APM",
|
||||
"stream/r2_c.APM",
|
||||
"stream/r2_d.APM",
|
||||
"stream/r2_e.APM",
|
||||
"stream/r2_f.APM",
|
||||
"stream/r2_g.APM",
|
||||
"stream/r2_h.APM",
|
||||
"stream/r5_a.APM",
|
||||
"stream/r6_a.APM",
|
||||
"stream/r6_a1.APM",
|
||||
"stream/r6_b.APM",
|
||||
"stream/lo2_a.APM",
|
||||
"stream/lo6_a.APM",
|
||||
"stream/yd2_a.APM",
|
||||
"stream/yd2_b.APM",
|
||||
"stream/yd2_c.APM",
|
||||
"stream/yd2_c1.APM",
|
||||
"stream/yd2_d.APM",
|
||||
"stream/yd2_e.APM",
|
||||
"stream/yd2_f.APM",
|
||||
"stream/yd2_g.APM",
|
||||
"stream/yd2_h.APM",
|
||||
"stream/yd2_ass.APM",
|
||||
"stream/yd2_ok.APM",
|
||||
"stream/h5_a.APM",
|
||||
"stream/h5_b.APM",
|
||||
"stream/h5_c.APM",
|
||||
"stream/ammu_a.APM",
|
||||
"stream/ammu_b.APM",
|
||||
"stream/ammu_c.APM",
|
||||
"stream/door_1.APM",
|
||||
"stream/door_2.APM",
|
||||
"stream/door_3.APM",
|
||||
"stream/door_4.APM",
|
||||
"stream/door_5.APM",
|
||||
"stream/door_6.APM",
|
||||
"stream/t3_a.APM",
|
||||
"stream/t3_b.APM",
|
||||
"stream/t3_c.APM",
|
||||
"stream/k1_b.APM",
|
||||
"stream/cat1.APM"
|
||||
};
|
File diff suppressed because it is too large
Load diff
|
@ -15,6 +15,7 @@
|
|||
#define debugf(...) // dbglog(DBG_CRITICAL, __VA_ARGS__)
|
||||
|
||||
#include "sampman.h"
|
||||
#include "sampman_dc_streams.h"
|
||||
#include "AudioManager.h"
|
||||
#include "MusicManager.h"
|
||||
#include "Frontend.h"
|
||||
|
@ -469,20 +470,11 @@ cSampleManager::Initialise(void)
|
|||
|
||||
assert(fdPedSfx >= 0);
|
||||
|
||||
for (unsigned nFile = 0; nFile < TOTAL_STREAMED_SOUNDS; nFile++) {
|
||||
file_t fd = fs_open(DCStreamedNameTable[nFile], O_RDONLY);
|
||||
|
||||
file_t fd = fs_open("stream/hdr.bin", O_RDONLY);
|
||||
assert(fd >= 0);
|
||||
WavHeader hdr;
|
||||
assert(fs_read(fd, &hdr, sizeof(hdr)) == sizeof(hdr));
|
||||
|
||||
uint64_t rv64 = (uint64_t)hdr.dataSize * 2000 / hdr.numOfChan / hdr.samplesPerSec;
|
||||
|
||||
assert(rv64 <= INT32_MAX);
|
||||
DCStreamedLength[nFile] = (int32)rv64;
|
||||
|
||||
static_assert(sizeof(DCStreamedLength) == TOTAL_STREAMED_SOUNDS*sizeof(int32));
|
||||
assert(fs_read(fd, DCStreamedLength, sizeof(DCStreamedLength)) == sizeof(DCStreamedLength));
|
||||
fs_close(fd);
|
||||
}
|
||||
|
||||
_bSampmanInitialised = true;
|
||||
return TRUE;
|
||||
|
|
1228
src/miami/audio/sampman_dc_streams.h
Normal file
1228
src/miami/audio/sampman_dc_streams.h
Normal file
File diff suppressed because it is too large
Load diff
94
src/tools/streamheaderpack.cpp
Normal file
94
src/tools/streamheaderpack.cpp
Normal file
|
@ -0,0 +1,94 @@
|
|||
#include <cstdint>
|
||||
#include <iostream>
|
||||
#include <cassert>
|
||||
#include <string>
|
||||
|
||||
struct WavHeader {
|
||||
// RIFF Header
|
||||
char riff[4]; // RIFF Header Magic header
|
||||
uint32_t chunkSize; // RIFF Chunk Size
|
||||
char wave[4]; // WAVE Header
|
||||
// "fmt" sub-chunk
|
||||
char fmt[4]; // FMT header
|
||||
uint32_t subchunk1Size; // Size of the fmt chunk
|
||||
uint16_t audioFormat; // Audio format 1=PCM, other values indicate compression
|
||||
uint16_t numOfChan; // Number of channels 1=Mono, 2=Stereo
|
||||
uint32_t samplesPerSec; // Sampling Frequency in Hz
|
||||
uint32_t bytesPerSec; // bytes per second
|
||||
uint16_t blockAlign; // 2=16-bit mono, 4=16-bit stereo
|
||||
uint16_t bitsPerSample; // Number of bits per sample
|
||||
// "data" sub-chunk
|
||||
char data[4]; // "data" string
|
||||
uint32_t dataSize; // Size of the data section
|
||||
};
|
||||
|
||||
#define DCStreamedNameTable DCStreamedNameTable_liberty
|
||||
#include "../liberty/audio/sampman_dc_streams.h"
|
||||
#undef DCStreamedNameTable
|
||||
#define DCStreamedNameTable DCStreamedNameTable_miami
|
||||
#include "../miami/audio/sampman_dc_streams.h"
|
||||
#undef DCStreamedNameTable
|
||||
int main(int argc, const char** argv) {
|
||||
|
||||
size_t table_len = 0;
|
||||
const char (* table)[25] = nullptr;
|
||||
|
||||
if (argc != 4) {
|
||||
std::cerr << "Usage: " << argv[0] << "liberty|miami <input_dir> <output_file>" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (strcmp(argv[1], "miami") == 0) {
|
||||
table = DCStreamedNameTable_miami;
|
||||
table_len = sizeof(DCStreamedNameTable_miami)/sizeof(DCStreamedNameTable_miami[0]);
|
||||
} else if (strcmp(argv[1], "liberty") == 0) {
|
||||
table = DCStreamedNameTable_liberty;
|
||||
table_len = sizeof(DCStreamedNameTable_liberty)/sizeof(DCStreamedNameTable_liberty[0]);
|
||||
} else {
|
||||
std::cerr << "Invalid game name" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
FILE* fout=fopen(argv[3], "wb");
|
||||
if (!fout) {
|
||||
std::cerr << "Failed to open " << argv[3] << " for writing" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (int i = 0; i < table_len; i++) {
|
||||
std::string filename = std::string(argv[2]) + "/" + table[i];
|
||||
|
||||
FILE* f = fopen(filename.c_str(), "rb");
|
||||
if (!f) {
|
||||
std::cerr << "Failed to open " << filename << std::endl;
|
||||
fclose(fout);
|
||||
return 1;
|
||||
}
|
||||
WavHeader hdr;
|
||||
auto rv = fread(&hdr, sizeof(hdr), 1, f);
|
||||
if (rv != 1) {
|
||||
std::cerr << "Failed to read header from " << filename << std::endl;
|
||||
fclose(f);
|
||||
fclose(fout);
|
||||
return 1;
|
||||
}
|
||||
|
||||
uint64_t sl64 = (uint64_t)hdr.dataSize * 2000 / hdr.numOfChan / hdr.samplesPerSec;
|
||||
|
||||
assert(sl64 <= INT32_MAX);
|
||||
|
||||
int32_t sl32 = (int32_t)sl64;
|
||||
|
||||
rv = fwrite(&sl32, sizeof(sl32), 1, fout);
|
||||
if (rv != 1) {
|
||||
std::cerr << "Failed to write to " << argv[2] << std::endl;
|
||||
fclose(f);
|
||||
fclose(fout);
|
||||
return 1;
|
||||
}
|
||||
fclose(f);
|
||||
}
|
||||
fclose(fout);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue