vars: pull sample variables

This commit is contained in:
rr- 2021-11-03 22:12:56 +01:00 committed by Marcin Kurczewski
parent f5d33c2a1e
commit 461073a241
4 changed files with 25 additions and 21 deletions

View file

@ -37,6 +37,10 @@ void (*EffectRoutines[])(ITEM_INFO *item) = {
bool SoundIsActive = true; bool SoundIsActive = true;
int32_t MnSoundMasterVolume; int32_t MnSoundMasterVolume;
int16_t SampleLUT[MAX_SAMPLES];
SAMPLE_INFO *SampleInfos;
SAMPLE_DATA **SampleData;
int32_t NumSampleData;
int32_t NoInputCount = 0; int32_t NoInputCount = 0;
int32_t IDelay; int32_t IDelay;

View file

@ -80,13 +80,10 @@ extern INPUT_STATE InputDB;
extern int32_t KeyChange; extern int32_t KeyChange;
extern bool SoundIsActive; extern bool SoundIsActive;
#define SampleLUT ARRAY_(0x0045EB60, int16_t, [MAX_SAMPLES]) extern int16_t SampleLUT[MAX_SAMPLES];
#define SampleInfos VAR_U_(0x0045ED60, SAMPLE_INFO*) extern SAMPLE_INFO *SampleInfos;
#define SampleData VAR_U_(0x0045B954, SAMPLE_DATA**) extern SAMPLE_DATA** SampleData;
#define NumSampleData VAR_U_(0x0045B96C, int32_t) extern int32_t NumSampleData;
#define NumSampleInfos VAR_U_(0x0045A210, int32_t)
#define NumSamples VAR_U_(0x0045E964, int32_t)
#define DecibelLUT ARRAY_(0x0045F1E0, int32_t, [DECIBEL_LUT_SIZE])
#define CDTrack VAR_I_(0x004534DC, int16_t, -1) #define CDTrack VAR_I_(0x004534DC, int16_t, -1)
#define CDTrackLooped VAR_I_(0x0045B97C, int16_t, -1) #define CDTrackLooped VAR_I_(0x0045B97C, int16_t, -1)
#define CDLoop VAR_U_(0x0045B94C, int32_t) #define CDLoop VAR_U_(0x0045B94C, int32_t)

View file

@ -558,16 +558,17 @@ static int32_t LoadSamples(MYFILE *fp)
} }
FileRead(SampleLUT, sizeof(int16_t), MAX_SAMPLES, fp); FileRead(SampleLUT, sizeof(int16_t), MAX_SAMPLES, fp);
FileRead(&NumSampleInfos, sizeof(int32_t), 1, fp); int32_t num_sample_infos;
LOG_INFO("%d sample infos", NumSampleInfos); FileRead(&num_sample_infos, sizeof(int32_t), 1, fp);
if (!NumSampleInfos) { LOG_INFO("%d sample infos", num_sample_infos);
if (!num_sample_infos) {
S_ExitSystem("No Sample Infos"); S_ExitSystem("No Sample Infos");
return 0; return 0;
} }
SampleInfos = SampleInfos =
game_malloc(sizeof(SAMPLE_INFO) * NumSampleInfos, GBUF_SAMPLE_INFOS); game_malloc(sizeof(SAMPLE_INFO) * num_sample_infos, GBUF_SAMPLE_INFOS);
FileRead(SampleInfos, sizeof(SAMPLE_INFO), NumSampleInfos, fp); FileRead(SampleInfos, sizeof(SAMPLE_INFO), num_sample_infos, fp);
int32_t sample_data_size; int32_t sample_data_size;
FileRead(&sample_data_size, sizeof(int32_t), 1, fp); FileRead(&sample_data_size, sizeof(int32_t), 1, fp);
@ -580,26 +581,27 @@ static int32_t LoadSamples(MYFILE *fp)
char *sample_data = game_malloc(sample_data_size, GBUF_SAMPLES); char *sample_data = game_malloc(sample_data_size, GBUF_SAMPLES);
FileRead(sample_data, sizeof(char), sample_data_size, fp); FileRead(sample_data, sizeof(char), sample_data_size, fp);
FileRead(&NumSamples, sizeof(int32_t), 1, fp); int32_t num_samples;
LOG_INFO("%d samples", NumSamples); FileRead(&num_samples, sizeof(int32_t), 1, fp);
if (!NumSamples) { LOG_INFO("%d samples", num_samples);
if (!num_samples) {
S_ExitSystem("No Samples"); S_ExitSystem("No Samples");
return 0; return 0;
} }
int32_t *sample_offsets = int32_t *sample_offsets =
game_malloc(sizeof(int32_t) * NumSamples, GBUF_SAMPLE_OFFSETS); game_malloc(sizeof(int32_t) * num_samples, GBUF_SAMPLE_OFFSETS);
FileRead(sample_offsets, sizeof(int32_t), NumSamples, fp); FileRead(sample_offsets, sizeof(int32_t), num_samples, fp);
char **sample_pointers = char **sample_pointers =
game_malloc(sizeof(char *) * NumSamples, GBUF_SAMPLE_OFFSETS); game_malloc(sizeof(char *) * num_samples, GBUF_SAMPLE_OFFSETS);
for (int i = 0; i < NumSamples; i++) { for (int i = 0; i < num_samples; i++) {
sample_pointers[i] = sample_data + sample_offsets[i]; sample_pointers[i] = sample_data + sample_offsets[i];
} }
SoundLoadSamples(sample_pointers, NumSamples); SoundLoadSamples(sample_pointers, num_samples);
game_free(sizeof(char *) * NumSamples, GBUF_SAMPLE_OFFSETS); game_free(sizeof(char *) * num_samples, GBUF_SAMPLE_OFFSETS);
return 1; return 1;
} }

View file

@ -46,6 +46,7 @@ typedef struct WAVE_FILE_HEADER {
#pragma pack(pop) #pragma pack(pop)
static DUPE_SOUND_BUFFER *DupeSoundBufferList = NULL; static DUPE_SOUND_BUFFER *DupeSoundBufferList = NULL;
static int32_t DecibelLUT[DECIBEL_LUT_SIZE];
int32_t ConvertVolumeToDecibel(int32_t volume) int32_t ConvertVolumeToDecibel(int32_t volume)
{ {