mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-24 10:40:46 +00:00
sound patch from stephen anthony
git-svn-id: https://svn.eduke32.com/eduke32@585 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
31a901b7eb
commit
717d839815
20 changed files with 1975 additions and 1591 deletions
|
@ -71,20 +71,14 @@ JMACTOBJ=$(OBJ)/util_lib.$o \
|
||||||
AUDIOLIB_FX_STUB=$(OBJ)/audiolib_fxstub.$o
|
AUDIOLIB_FX_STUB=$(OBJ)/audiolib_fxstub.$o
|
||||||
AUDIOLIB_MUSIC_STUB=$(OBJ)/audiolib_musicstub.$o
|
AUDIOLIB_MUSIC_STUB=$(OBJ)/audiolib_musicstub.$o
|
||||||
|
|
||||||
AUDIOLIB_FX_SDL=$(OBJ)/mv_mix.$o \
|
AUDIOLIB_FX_SDL=$(OBJ)/ll_man.$o \
|
||||||
$(OBJ)/mv_mix16.$o \
|
|
||||||
$(OBJ)/mvreverb.$o \
|
|
||||||
$(OBJ)/ll_man.$o \
|
|
||||||
$(OBJ)/fx_man.$o \
|
$(OBJ)/fx_man.$o \
|
||||||
$(OBJ)/dsl.$o \
|
$(OBJ)/dsl.$o \
|
||||||
$(OBJ)/pitch.$o \
|
$(OBJ)/pitch.$o \
|
||||||
$(OBJ)/multivoc.$o
|
$(OBJ)/multivoc.$o
|
||||||
AUDIOLIB_MUSIC_SDL=$(OBJ)/sdlmusic.$o
|
AUDIOLIB_MUSIC_SDL=$(OBJ)/sdlmusic.$o
|
||||||
|
|
||||||
AUDIOLIB_FX=$(OBJ)/mv_mix.$o \
|
AUDIOLIB_FX=$(OBJ)/pitch.$o \
|
||||||
$(OBJ)/mv_mix16.$o \
|
|
||||||
$(OBJ)/mvreverb.$o \
|
|
||||||
$(OBJ)/pitch.$o \
|
|
||||||
$(OBJ)/multivoc.$o \
|
$(OBJ)/multivoc.$o \
|
||||||
$(OBJ)/ll_man.$o \
|
$(OBJ)/ll_man.$o \
|
||||||
$(OBJ)/fx_man.$o \
|
$(OBJ)/fx_man.$o \
|
||||||
|
@ -93,6 +87,17 @@ AUDIOLIB_MUSIC=$(OBJ)/midi.$o \
|
||||||
$(OBJ)/mpu401.$o \
|
$(OBJ)/mpu401.$o \
|
||||||
$(OBJ)/music.$o
|
$(OBJ)/music.$o
|
||||||
|
|
||||||
|
ifeq (0,$(NOASM))
|
||||||
|
# Assembly sound mixing code
|
||||||
|
AUDIOLIB_FX_SDL += $(OBJ)/mv_mix.$o $(OBJ)/mv_mix16.$o $(OBJ)/mvreverb.$o
|
||||||
|
AUDIOLIB_FX += $(OBJ)/mv_mix.$o $(OBJ)/mv_mix16.$o $(OBJ)/mvreverb.$o
|
||||||
|
else
|
||||||
|
# C fallbacks for sound mixing code
|
||||||
|
AUDIOLIB_FX_SDL += $(OBJ)/mv_mix-c.$o $(OBJ)/mvreverb-c.$o
|
||||||
|
AUDIOLIB_FX += $(OBJ)/mv_mix-c.$o $(OBJ)/mvreverb-c.$o
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
GAMEOBJS=$(OBJ)/game.$o \
|
GAMEOBJS=$(OBJ)/game.$o \
|
||||||
$(OBJ)/actors.$o \
|
$(OBJ)/actors.$o \
|
||||||
$(OBJ)/anim.$o \
|
$(OBJ)/anim.$o \
|
||||||
|
|
|
@ -54,6 +54,8 @@ $(OBJ)/audiolib_fx_fmod.$o: $(SRC)/jaudiolib/audiolib_fx_fmod.c $(SRC)/jaudiolib
|
||||||
$(OBJ)/mv_mix.$o: $(SRC)/jaudiolib/mv_mix.nasm
|
$(OBJ)/mv_mix.$o: $(SRC)/jaudiolib/mv_mix.nasm
|
||||||
$(OBJ)/mv_mix16.$o: $(SRC)/jaudiolib/mv_mix16.nasm
|
$(OBJ)/mv_mix16.$o: $(SRC)/jaudiolib/mv_mix16.nasm
|
||||||
$(OBJ)/mvreverb.$o: $(SRC)/jaudiolib/mvreverb.nasm
|
$(OBJ)/mvreverb.$o: $(SRC)/jaudiolib/mvreverb.nasm
|
||||||
|
$(OBJ)/mv_mix-c.$o: $(SRC)/jaudiolib/mv_mix-c.c
|
||||||
|
$(OBJ)/mvreverb-c.$o: $(SRC)/jaudiolib/mvreverb-c.c
|
||||||
$(OBJ)/pitch.$o: $(SRC)/jaudiolib/pitch.c $(SRC)/jaudiolib/pitch.h
|
$(OBJ)/pitch.$o: $(SRC)/jaudiolib/pitch.c $(SRC)/jaudiolib/pitch.h
|
||||||
$(OBJ)/multivoc.$o: $(SRC)/jaudiolib/multivoc.c $(SRC)/jaudiolib/usrhooks.h $(SRC)/jaudiolib/linklist.h $(SRC)/jaudiolib/pitch.h $(SRC)/jaudiolib/multivoc.h $(SRC)/jaudiolib/_multivc.h
|
$(OBJ)/multivoc.$o: $(SRC)/jaudiolib/multivoc.c $(SRC)/jaudiolib/usrhooks.h $(SRC)/jaudiolib/linklist.h $(SRC)/jaudiolib/pitch.h $(SRC)/jaudiolib/multivoc.h $(SRC)/jaudiolib/_multivc.h
|
||||||
$(OBJ)/fx_man.$o: $(SRC)/jaudiolib/fx_man.c $(SRC)/jaudiolib/multivoc.h $(SRC)/jaudiolib/ll_man.h $(SRC)/jaudiolib/fx_man.h
|
$(OBJ)/fx_man.$o: $(SRC)/jaudiolib/fx_man.c $(SRC)/jaudiolib/multivoc.h $(SRC)/jaudiolib/ll_man.h $(SRC)/jaudiolib/fx_man.h
|
||||||
|
|
|
@ -1,281 +1,281 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
||||||
|
|
||||||
*/
|
*/
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
module: _MIDI.H
|
module: _MIDI.H
|
||||||
|
|
||||||
author: James R. Dose
|
author: James R. Dose
|
||||||
date: May 25, 1994
|
date: May 25, 1994
|
||||||
|
|
||||||
Private header for MIDI.C. Midi song file playback routines.
|
Private header for MIDI.C. Midi song file playback routines.
|
||||||
|
|
||||||
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
#ifndef ___MIDI_H
|
#ifndef ___MIDI_H
|
||||||
#define ___MIDI_H
|
#define ___MIDI_H
|
||||||
|
|
||||||
#define RELATIVE_BEAT( measure, beat, tick ) \
|
#define RELATIVE_BEAT( measure, beat, tick ) \
|
||||||
( ( tick ) + ( ( beat ) << 9 ) + ( ( measure ) << 16 ) )
|
( ( tick ) + ( ( beat ) << 9 ) + ( ( measure ) << 16 ) )
|
||||||
|
|
||||||
//Bobby Prince thinks this may be 100
|
//Bobby Prince thinks this may be 100
|
||||||
//#define GENMIDI_DefaultVolume 100
|
//#define GENMIDI_DefaultVolume 100
|
||||||
#define GENMIDI_DefaultVolume 90
|
#define GENMIDI_DefaultVolume 90
|
||||||
|
|
||||||
#define MAX_FORMAT 1
|
#define MAX_FORMAT 1
|
||||||
|
|
||||||
#define NUM_MIDI_CHANNELS 16
|
#define NUM_MIDI_CHANNELS 16
|
||||||
|
|
||||||
#define TIME_PRECISION 16
|
#define TIME_PRECISION 16
|
||||||
|
|
||||||
#define MIDI_HEADER_SIGNATURE 0x6468544d // "MThd"
|
#define MIDI_HEADER_SIGNATURE 0x6468544d // "MThd"
|
||||||
#define MIDI_TRACK_SIGNATURE 0x6b72544d // "MTrk"
|
#define MIDI_TRACK_SIGNATURE 0x6b72544d // "MTrk"
|
||||||
|
|
||||||
#define MIDI_VOLUME 7
|
#define MIDI_VOLUME 7
|
||||||
#define MIDI_PAN 10
|
#define MIDI_PAN 10
|
||||||
#define MIDI_DETUNE 94
|
#define MIDI_DETUNE 94
|
||||||
#define MIDI_RHYTHM_CHANNEL 9
|
#define MIDI_RHYTHM_CHANNEL 9
|
||||||
#define MIDI_RPN_MSB 100
|
#define MIDI_RPN_MSB 100
|
||||||
#define MIDI_RPN_LSB 101
|
#define MIDI_RPN_LSB 101
|
||||||
#define MIDI_DATAENTRY_MSB 6
|
#define MIDI_DATAENTRY_MSB 6
|
||||||
#define MIDI_DATAENTRY_LSB 38
|
#define MIDI_DATAENTRY_LSB 38
|
||||||
#define MIDI_PITCHBEND_MSB 0
|
#define MIDI_PITCHBEND_MSB 0
|
||||||
#define MIDI_PITCHBEND_LSB 0
|
#define MIDI_PITCHBEND_LSB 0
|
||||||
#define MIDI_RUNNING_STATUS 0x80
|
#define MIDI_RUNNING_STATUS 0x80
|
||||||
#define MIDI_NOTE_OFF 0x8
|
#define MIDI_NOTE_OFF 0x8
|
||||||
#define MIDI_NOTE_ON 0x9
|
#define MIDI_NOTE_ON 0x9
|
||||||
#define MIDI_POLY_AFTER_TCH 0xA
|
#define MIDI_POLY_AFTER_TCH 0xA
|
||||||
#define MIDI_CONTROL_CHANGE 0xB
|
#define MIDI_CONTROL_CHANGE 0xB
|
||||||
#define MIDI_PROGRAM_CHANGE 0xC
|
#define MIDI_PROGRAM_CHANGE 0xC
|
||||||
#define MIDI_AFTER_TOUCH 0xD
|
#define MIDI_AFTER_TOUCH 0xD
|
||||||
#define MIDI_PITCH_BEND 0xE
|
#define MIDI_PITCH_BEND 0xE
|
||||||
#define MIDI_SPECIAL 0xF
|
#define MIDI_SPECIAL 0xF
|
||||||
#define MIDI_SYSEX 0xF0
|
#define MIDI_SYSEX 0xF0
|
||||||
#define MIDI_SYSEX_CONTINUE 0xF7
|
#define MIDI_SYSEX_CONTINUE 0xF7
|
||||||
#define MIDI_META_EVENT 0xFF
|
#define MIDI_META_EVENT 0xFF
|
||||||
#define MIDI_END_OF_TRACK 0x2F
|
#define MIDI_END_OF_TRACK 0x2F
|
||||||
#define MIDI_TEMPO_CHANGE 0x51
|
#define MIDI_TEMPO_CHANGE 0x51
|
||||||
#define MIDI_TIME_SIGNATURE 0x58
|
#define MIDI_TIME_SIGNATURE 0x58
|
||||||
#define MIDI_RESET_ALL_CONTROLLERS 0x79
|
#define MIDI_RESET_ALL_CONTROLLERS 0x79
|
||||||
#define MIDI_ALL_NOTES_OFF 0x7b
|
#define MIDI_ALL_NOTES_OFF 0x7b
|
||||||
#define MIDI_MONO_MODE_ON 0x7E
|
#define MIDI_MONO_MODE_ON 0x7E
|
||||||
#define MIDI_SYSTEM_RESET 0xFF
|
#define MIDI_SYSTEM_RESET 0xFF
|
||||||
|
|
||||||
#define GET_NEXT_EVENT( track, data ) \
|
#define GET_NEXT_EVENT( track, data ) \
|
||||||
( data ) = *( track )->pos; \
|
( data ) = *( track )->pos; \
|
||||||
( track )->pos += 1
|
( track )->pos += 1
|
||||||
|
|
||||||
#define GET_MIDI_CHANNEL( event ) ( ( event ) & 0xf )
|
#define GET_MIDI_CHANNEL( event ) ( ( event ) & 0xf )
|
||||||
#define GET_MIDI_COMMAND( event ) ( ( event ) >> 4 )
|
#define GET_MIDI_COMMAND( event ) ( ( event ) >> 4 )
|
||||||
|
|
||||||
#define EMIDI_INFINITE -1
|
#define EMIDI_INFINITE -1
|
||||||
#define EMIDI_END_LOOP_VALUE 127
|
#define EMIDI_END_LOOP_VALUE 127
|
||||||
#define EMIDI_ALL_CARDS 127
|
#define EMIDI_ALL_CARDS 127
|
||||||
#define EMIDI_INCLUDE_TRACK 110
|
#define EMIDI_INCLUDE_TRACK 110
|
||||||
#define EMIDI_EXCLUDE_TRACK 111
|
#define EMIDI_EXCLUDE_TRACK 111
|
||||||
#define EMIDI_PROGRAM_CHANGE 112
|
#define EMIDI_PROGRAM_CHANGE 112
|
||||||
#define EMIDI_VOLUME_CHANGE 113
|
#define EMIDI_VOLUME_CHANGE 113
|
||||||
#define EMIDI_CONTEXT_START 114
|
#define EMIDI_CONTEXT_START 114
|
||||||
#define EMIDI_CONTEXT_END 115
|
#define EMIDI_CONTEXT_END 115
|
||||||
#define EMIDI_LOOP_START 116
|
#define EMIDI_LOOP_START 116
|
||||||
#define EMIDI_LOOP_END 117
|
#define EMIDI_LOOP_END 117
|
||||||
#define EMIDI_SONG_LOOP_START 118
|
#define EMIDI_SONG_LOOP_START 118
|
||||||
#define EMIDI_SONG_LOOP_END 119
|
#define EMIDI_SONG_LOOP_END 119
|
||||||
|
|
||||||
#define EMIDI_GeneralMIDI 0
|
#define EMIDI_GeneralMIDI 0
|
||||||
|
|
||||||
#define EMIDI_AffectsCurrentCard( c, type ) \
|
#define EMIDI_AffectsCurrentCard( c, type ) \
|
||||||
( ( ( c ) == EMIDI_ALL_CARDS ) || ( ( c ) == ( type ) ) )
|
( ( ( c ) == EMIDI_ALL_CARDS ) || ( ( c ) == ( type ) ) )
|
||||||
|
|
||||||
|
|
||||||
#define EMIDI_NUM_CONTEXTS 7
|
#define EMIDI_NUM_CONTEXTS 7
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
unsigned char *pos;
|
unsigned char *pos;
|
||||||
unsigned char *loopstart;
|
unsigned char *loopstart;
|
||||||
short loopcount;
|
short loopcount;
|
||||||
short RunningStatus;
|
short RunningStatus;
|
||||||
unsigned time;
|
unsigned time;
|
||||||
int FPSecondsPerTick;
|
int FPSecondsPerTick;
|
||||||
short tick;
|
short tick;
|
||||||
short beat;
|
short beat;
|
||||||
short measure;
|
short measure;
|
||||||
short BeatsPerMeasure;
|
short BeatsPerMeasure;
|
||||||
short TicksPerBeat;
|
short TicksPerBeat;
|
||||||
short TimeBase;
|
short TimeBase;
|
||||||
int delay;
|
int delay;
|
||||||
short active;
|
short active;
|
||||||
} songcontext;
|
} songcontext;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
unsigned char *start;
|
unsigned char *start;
|
||||||
unsigned char *pos;
|
unsigned char *pos;
|
||||||
|
|
||||||
int delay;
|
int delay;
|
||||||
short active;
|
short active;
|
||||||
short RunningStatus;
|
short RunningStatus;
|
||||||
|
|
||||||
short currentcontext;
|
short currentcontext;
|
||||||
songcontext context[ EMIDI_NUM_CONTEXTS ];
|
songcontext context[ EMIDI_NUM_CONTEXTS ];
|
||||||
|
|
||||||
char EMIDI_IncludeTrack;
|
char EMIDI_IncludeTrack;
|
||||||
char EMIDI_ProgramChange;
|
char EMIDI_ProgramChange;
|
||||||
char EMIDI_VolumeChange;
|
char EMIDI_VolumeChange;
|
||||||
} track;
|
} track;
|
||||||
|
|
||||||
static int _MIDI_ReadNumber( void *from, size_t size );
|
static int _MIDI_ReadNumber( void *from, size_t size );
|
||||||
static int _MIDI_ReadDelta( track *ptr );
|
static int _MIDI_ReadDelta( track *ptr );
|
||||||
static void _MIDI_ResetTracks( void );
|
static void _MIDI_ResetTracks( void );
|
||||||
static void _MIDI_AdvanceTick( void );
|
static void _MIDI_AdvanceTick( void );
|
||||||
static void _MIDI_MetaEvent( track *Track );
|
static void _MIDI_MetaEvent( track *Track );
|
||||||
static void _MIDI_SysEx( track *Track );
|
static void _MIDI_SysEx( track *Track );
|
||||||
static int _MIDI_InterpretControllerInfo( track *Track, int TimeSet,
|
static int _MIDI_InterpretControllerInfo( track *Track, int TimeSet,
|
||||||
int channel, int c1, int c2 );
|
int channel, int c1, int c2 );
|
||||||
static int _MIDI_SendControlChange( int channel, int c1, int c2 );
|
static int _MIDI_SendControlChange( int channel, int c1, int c2 );
|
||||||
static void _MIDI_SetChannelVolume( int channel, int volume );
|
static void _MIDI_SetChannelVolume( int channel, int volume );
|
||||||
static void _MIDI_SendChannelVolumes( void );
|
static void _MIDI_SendChannelVolumes( void );
|
||||||
static int _MIDI_ProcessNextTick( void );
|
static int _MIDI_ProcessNextTick( void );
|
||||||
static void _MIDI_InitEMIDI( void );
|
static void _MIDI_InitEMIDI( void );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if ( c1 == EMIDI_LOOP_START )
|
if ( c1 == EMIDI_LOOP_START )
|
||||||
{
|
{
|
||||||
if ( c2 == 0 )
|
if ( c2 == 0 )
|
||||||
{
|
{
|
||||||
Track->context[ 0 ].loopcount = EMIDI_INFINITE;
|
Track->context[ 0 ].loopcount = EMIDI_INFINITE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Track->context[ 0 ].loopcount = c2;
|
Track->context[ 0 ].loopcount = c2;
|
||||||
}
|
}
|
||||||
|
|
||||||
Track->context[ 0 ].pos = Track->pos;
|
Track->context[ 0 ].pos = Track->pos;
|
||||||
Track->context[ 0 ].loopstart = Track->pos;
|
Track->context[ 0 ].loopstart = Track->pos;
|
||||||
Track->context[ 0 ].RunningStatus = Track->RunningStatus;
|
Track->context[ 0 ].RunningStatus = Track->RunningStatus;
|
||||||
Track->context[ 0 ].time = _MIDI_Time;
|
Track->context[ 0 ].time = _MIDI_Time;
|
||||||
Track->context[ 0 ].FPSecondsPerTick = _MIDI_FPSecondsPerTick;
|
Track->context[ 0 ].FPSecondsPerTick = _MIDI_FPSecondsPerTick;
|
||||||
Track->context[ 0 ].tick = _MIDI_Tick;
|
Track->context[ 0 ].tick = _MIDI_Tick;
|
||||||
Track->context[ 0 ].beat = _MIDI_Beat;
|
Track->context[ 0 ].beat = _MIDI_Beat;
|
||||||
Track->context[ 0 ].measure = _MIDI_Measure;
|
Track->context[ 0 ].measure = _MIDI_Measure;
|
||||||
Track->context[ 0 ].BeatsPerMeasure = _MIDI_BeatsPerMeasure;
|
Track->context[ 0 ].BeatsPerMeasure = _MIDI_BeatsPerMeasure;
|
||||||
Track->context[ 0 ].TicksPerBeat = _MIDI_TicksPerBeat;
|
Track->context[ 0 ].TicksPerBeat = _MIDI_TicksPerBeat;
|
||||||
Track->context[ 0 ].TimeBase = _MIDI_TimeBase;
|
Track->context[ 0 ].TimeBase = _MIDI_TimeBase;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ( c1 == EMIDI_LOOP_END ) &&
|
if ( ( c1 == EMIDI_LOOP_END ) &&
|
||||||
( c2 == EMIDI_END_LOOP_VALUE ) )
|
( c2 == EMIDI_END_LOOP_VALUE ) )
|
||||||
{
|
{
|
||||||
if ( ( Track->context[ 0 ].loopstart != NULL ) &&
|
if ( ( Track->context[ 0 ].loopstart != NULL ) &&
|
||||||
( Track->context[ 0 ].loopcount != 0 ) )
|
( Track->context[ 0 ].loopcount != 0 ) )
|
||||||
{
|
{
|
||||||
if ( Track->context[ 0 ].loopcount != EMIDI_INFINITE )
|
if ( Track->context[ 0 ].loopcount != EMIDI_INFINITE )
|
||||||
{
|
{
|
||||||
Track->context[ 0 ].loopcount--;
|
Track->context[ 0 ].loopcount--;
|
||||||
}
|
}
|
||||||
|
|
||||||
Track->pos = Track->context[ 0 ].loopstart;
|
Track->pos = Track->context[ 0 ].loopstart;
|
||||||
Track->RunningStatus = Track->context[ 0 ].RunningStatus;
|
Track->RunningStatus = Track->context[ 0 ].RunningStatus;
|
||||||
|
|
||||||
if ( !TimeSet )
|
if ( !TimeSet )
|
||||||
{
|
{
|
||||||
_MIDI_Time = Track->context[ 0 ].time;
|
_MIDI_Time = Track->context[ 0 ].time;
|
||||||
_MIDI_FPSecondsPerTick = Track->context[ 0 ].FPSecondsPerTick;
|
_MIDI_FPSecondsPerTick = Track->context[ 0 ].FPSecondsPerTick;
|
||||||
_MIDI_Tick = Track->context[ 0 ].tick;
|
_MIDI_Tick = Track->context[ 0 ].tick;
|
||||||
_MIDI_Beat = Track->context[ 0 ].beat;
|
_MIDI_Beat = Track->context[ 0 ].beat;
|
||||||
_MIDI_Measure = Track->context[ 0 ].measure;
|
_MIDI_Measure = Track->context[ 0 ].measure;
|
||||||
_MIDI_BeatsPerMeasure = Track->context[ 0 ].BeatsPerMeasure;
|
_MIDI_BeatsPerMeasure = Track->context[ 0 ].BeatsPerMeasure;
|
||||||
_MIDI_TicksPerBeat = Track->context[ 0 ].TicksPerBeat;
|
_MIDI_TicksPerBeat = Track->context[ 0 ].TicksPerBeat;
|
||||||
_MIDI_TimeBase = Track->context[ 0 ].TimeBase;
|
_MIDI_TimeBase = Track->context[ 0 ].TimeBase;
|
||||||
TimeSet = TRUE;
|
TimeSet = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( c1 == MIDI_MONO_MODE_ON )
|
if ( c1 == MIDI_MONO_MODE_ON )
|
||||||
{
|
{
|
||||||
Track->pos++;
|
Track->pos++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ( c1 == MIDI_VOLUME ) && ( !Track->EMIDI_VolumeChange ) )
|
if ( ( c1 == MIDI_VOLUME ) && ( !Track->EMIDI_VolumeChange ) )
|
||||||
{
|
{
|
||||||
_MIDI_SetChannelVolume( channel, c2 );
|
_MIDI_SetChannelVolume( channel, c2 );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if ( ( c1 == EMIDI_VOLUME_CHANGE ) &&
|
else if ( ( c1 == EMIDI_VOLUME_CHANGE ) &&
|
||||||
( Track->EMIDI_VolumeChange ) )
|
( Track->EMIDI_VolumeChange ) )
|
||||||
{
|
{
|
||||||
_MIDI_SetChannelVolume( channel, c2 );
|
_MIDI_SetChannelVolume( channel, c2 );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ( c1 == EMIDI_PROGRAM_CHANGE ) &&
|
if ( ( c1 == EMIDI_PROGRAM_CHANGE ) &&
|
||||||
( Track->EMIDI_ProgramChange ) )
|
( Track->EMIDI_ProgramChange ) )
|
||||||
{
|
{
|
||||||
_MIDI_Funcs->ProgramChange( channel, MIDI_PatchMap[ c2 & 0x7f ] );
|
_MIDI_Funcs->ProgramChange( channel, MIDI_PatchMap[ c2 & 0x7f ] );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( c1 == EMIDI_CONTEXT_START )
|
if ( c1 == EMIDI_CONTEXT_START )
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( c1 == EMIDI_CONTEXT_END )
|
if ( c1 == EMIDI_CONTEXT_END )
|
||||||
{
|
{
|
||||||
if ( ( Track->currentcontext != _MIDI_Context ) ||
|
if ( ( Track->currentcontext != _MIDI_Context ) ||
|
||||||
( Track->context[ _MIDI_Context ].pos == NULL )
|
( Track->context[ _MIDI_Context ].pos == NULL )
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Track->currentcontext = _MIDI_Context;
|
Track->currentcontext = _MIDI_Context;
|
||||||
Track->context[ 0 ].loopstart = Track->context[ _MIDI_Context ].loopstart;
|
Track->context[ 0 ].loopstart = Track->context[ _MIDI_Context ].loopstart;
|
||||||
Track->context[ 0 ].loopcount = Track->context[ _MIDI_Context ].loopcount;
|
Track->context[ 0 ].loopcount = Track->context[ _MIDI_Context ].loopcount;
|
||||||
Track->pos = Track->context[ _MIDI_Context ].pos;
|
Track->pos = Track->context[ _MIDI_Context ].pos;
|
||||||
Track->RunningStatus = Track->context[ _MIDI_Context ].RunningStatus;
|
Track->RunningStatus = Track->context[ _MIDI_Context ].RunningStatus;
|
||||||
|
|
||||||
if ( TimeSet )
|
if ( TimeSet )
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
_MIDI_Time = Track->context[ _MIDI_Context ].time;
|
_MIDI_Time = Track->context[ _MIDI_Context ].time;
|
||||||
_MIDI_FPSecondsPerTick = Track->context[ _MIDI_Context ].FPSecondsPerTick;
|
_MIDI_FPSecondsPerTick = Track->context[ _MIDI_Context ].FPSecondsPerTick;
|
||||||
_MIDI_Tick = Track->context[ _MIDI_Context ].tick;
|
_MIDI_Tick = Track->context[ _MIDI_Context ].tick;
|
||||||
_MIDI_Beat = Track->context[ _MIDI_Context ].beat;
|
_MIDI_Beat = Track->context[ _MIDI_Context ].beat;
|
||||||
_MIDI_Measure = Track->context[ _MIDI_Context ].measure;
|
_MIDI_Measure = Track->context[ _MIDI_Context ].measure;
|
||||||
_MIDI_BeatsPerMeasure = Track->context[ _MIDI_Context ].BeatsPerMeasure;
|
_MIDI_BeatsPerMeasure = Track->context[ _MIDI_Context ].BeatsPerMeasure;
|
||||||
_MIDI_TicksPerBeat = Track->context[ _MIDI_Context ].TicksPerBeat;
|
_MIDI_TicksPerBeat = Track->context[ _MIDI_Context ].TicksPerBeat;
|
||||||
_MIDI_TimeBase = Track->context[ _MIDI_Context ].TimeBase;
|
_MIDI_TimeBase = Track->context[ _MIDI_Context ].TimeBase;
|
||||||
TimeSet = TRUE;
|
TimeSet = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( _MIDI_Funcs->ControlChange )
|
if ( _MIDI_Funcs->ControlChange )
|
||||||
{
|
{
|
||||||
_MIDI_Funcs->ControlChange( channel, c1, c2 );
|
_MIDI_Funcs->ControlChange( channel, c1, c2 );
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,317 +1,313 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
||||||
*/
|
*/
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
file: _MULTIVC.H
|
file: _MULTIVC.H
|
||||||
|
|
||||||
author: James R. Dose
|
author: James R. Dose
|
||||||
date: December 20, 1993
|
date: December 20, 1993
|
||||||
|
|
||||||
Private header for MULTIVOC.C
|
Private header for MULTIVOC.C
|
||||||
|
|
||||||
(c) Copyright 1993 James R. Dose. All Rights Reserved.
|
(c) Copyright 1993 James R. Dose. All Rights Reserved.
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
#ifndef ___MULTIVC_H
|
#ifndef ___MULTIVC_H
|
||||||
#define ___MULTIVC_H
|
#define ___MULTIVC_H
|
||||||
|
|
||||||
#define TRUE ( 1 == 1 )
|
#define TRUE ( 1 == 1 )
|
||||||
#define FALSE ( !TRUE )
|
#define FALSE ( !TRUE )
|
||||||
|
|
||||||
#define VOC_8BIT 0x0
|
#define VOC_8BIT 0x0
|
||||||
#define VOC_CT4_ADPCM 0x1
|
#define VOC_CT4_ADPCM 0x1
|
||||||
#define VOC_CT3_ADPCM 0x2
|
#define VOC_CT3_ADPCM 0x2
|
||||||
#define VOC_CT2_ADPCM 0x3
|
#define VOC_CT2_ADPCM 0x3
|
||||||
#define VOC_16BIT 0x4
|
#define VOC_16BIT 0x4
|
||||||
#define VOC_ALAW 0x6
|
#define VOC_ALAW 0x6
|
||||||
#define VOC_MULAW 0x7
|
#define VOC_MULAW 0x7
|
||||||
#define VOC_CREATIVE_ADPCM 0x200
|
#define VOC_CREATIVE_ADPCM 0x200
|
||||||
|
|
||||||
#define T_SIXTEENBIT_STEREO 0
|
#define T_SIXTEENBIT_STEREO 0
|
||||||
#define T_8BITS 1
|
#define T_8BITS 1
|
||||||
#define T_MONO 2
|
#define T_MONO 2
|
||||||
#define T_16BITSOURCE 4
|
#define T_16BITSOURCE 4
|
||||||
#define T_LEFTQUIET 8
|
#define T_LEFTQUIET 8
|
||||||
#define T_RIGHTQUIET 16
|
#define T_RIGHTQUIET 16
|
||||||
#define T_DEFAULT T_SIXTEENBIT_STEREO
|
#define T_DEFAULT T_SIXTEENBIT_STEREO
|
||||||
|
|
||||||
#define MV_MaxPanPosition 31
|
#define MV_MaxPanPosition 31
|
||||||
#define MV_NumPanPositions ( MV_MaxPanPosition + 1 )
|
#define MV_NumPanPositions ( MV_MaxPanPosition + 1 )
|
||||||
#define MV_MaxTotalVolume 255
|
#define MV_MaxTotalVolume 255
|
||||||
//#define MV_MaxVolume 63
|
//#define MV_MaxVolume 63
|
||||||
#define MV_NumVoices 8
|
#define MV_NumVoices 8
|
||||||
|
|
||||||
#define MIX_VOLUME( volume ) \
|
#define MIX_VOLUME( volume ) \
|
||||||
( ( max( 0, min( ( volume ), 255 ) ) * ( MV_MaxVolume + 1 ) ) >> 8 )
|
( ( max( 0, min( ( volume ), 255 ) ) * ( MV_MaxVolume + 1 ) ) >> 8 )
|
||||||
// ( ( max( 0, min( ( volume ), 255 ) ) ) >> 2 )
|
// ( ( max( 0, min( ( volume ), 255 ) ) ) >> 2 )
|
||||||
|
|
||||||
//#define SILENCE_16BIT 0x80008000
|
//#define SILENCE_16BIT 0x80008000
|
||||||
#define SILENCE_16BIT 0
|
#define SILENCE_16BIT 0
|
||||||
#define SILENCE_8BIT 0x80808080
|
#define SILENCE_8BIT 0x80808080
|
||||||
//#define SILENCE_16BIT_PAS 0
|
//#define SILENCE_16BIT_PAS 0
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#define MixBufferSize (MV_GetBufferSize(MV_RequestedMixRate))
|
#define MixBufferSize (MV_GetBufferSize(MV_RequestedMixRate))
|
||||||
#else
|
#else
|
||||||
#define MixBufferSize 512
|
#define MixBufferSize 512
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define NumberOfBuffers 16
|
#define NumberOfBuffers 16
|
||||||
#define TotalBufferSize ( MixBufferSize * NumberOfBuffers )
|
#define TotalBufferSize ( MixBufferSize * NumberOfBuffers )
|
||||||
|
|
||||||
#define PI 3.1415926536
|
#define PI 3.1415926536
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Raw,
|
Raw,
|
||||||
VOC,
|
VOC,
|
||||||
DemandFeed,
|
DemandFeed,
|
||||||
WAV
|
WAV
|
||||||
} wavedata;
|
} wavedata;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
NoMoreData,
|
NoMoreData,
|
||||||
KeepPlaying
|
KeepPlaying
|
||||||
} playbackstatus;
|
} playbackstatus;
|
||||||
|
|
||||||
|
|
||||||
typedef struct VoiceNode
|
typedef struct VoiceNode
|
||||||
{
|
{
|
||||||
struct VoiceNode *next;
|
struct VoiceNode *next;
|
||||||
struct VoiceNode *prev;
|
struct VoiceNode *prev;
|
||||||
|
|
||||||
wavedata wavetype;
|
wavedata wavetype;
|
||||||
char bits;
|
char bits;
|
||||||
|
|
||||||
playbackstatus ( *GetSound )( struct VoiceNode *voice );
|
playbackstatus ( *GetSound )( struct VoiceNode *voice );
|
||||||
|
|
||||||
void ( *mix )( unsigned int position, unsigned int rate,
|
void ( *mix )( unsigned int position, unsigned int rate,
|
||||||
char *start, unsigned int length );
|
char *start, unsigned int length );
|
||||||
|
|
||||||
char *NextBlock;
|
char *NextBlock;
|
||||||
char *LoopStart;
|
char *LoopStart;
|
||||||
char *LoopEnd;
|
char *LoopEnd;
|
||||||
unsigned LoopCount;
|
unsigned LoopCount;
|
||||||
unsigned int LoopSize;
|
unsigned int LoopSize;
|
||||||
unsigned int BlockLength;
|
unsigned int BlockLength;
|
||||||
|
|
||||||
unsigned int PitchScale;
|
unsigned int PitchScale;
|
||||||
unsigned int FixedPointBufferSize;
|
unsigned int FixedPointBufferSize;
|
||||||
|
|
||||||
char *sound;
|
char *sound;
|
||||||
unsigned int length;
|
unsigned int length;
|
||||||
unsigned int SamplingRate;
|
unsigned int SamplingRate;
|
||||||
unsigned int RateScale;
|
unsigned int RateScale;
|
||||||
unsigned int position;
|
unsigned int position;
|
||||||
int Playing;
|
int Playing;
|
||||||
|
|
||||||
int handle;
|
int handle;
|
||||||
int priority;
|
int priority;
|
||||||
|
|
||||||
void ( *DemandFeed )( char **ptr, unsigned int *length );
|
void ( *DemandFeed )( char **ptr, unsigned int *length );
|
||||||
|
|
||||||
short *LeftVolume;
|
short *LeftVolume;
|
||||||
short *RightVolume;
|
short *RightVolume;
|
||||||
|
|
||||||
unsigned int callbackval;
|
unsigned int callbackval;
|
||||||
|
|
||||||
} VoiceNode;
|
} VoiceNode;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
VoiceNode *start;
|
VoiceNode *start;
|
||||||
VoiceNode *end;
|
VoiceNode *end;
|
||||||
} VList;
|
} VList;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
char left;
|
char left;
|
||||||
char right;
|
char right;
|
||||||
} Pan;
|
} Pan;
|
||||||
|
|
||||||
typedef signed short MONO16;
|
typedef signed short MONO16;
|
||||||
typedef signed char MONO8;
|
typedef signed char MONO8;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
MONO16 left;
|
MONO16 left;
|
||||||
MONO16 right;
|
MONO16 right;
|
||||||
// unsigned short left;
|
// unsigned short left;
|
||||||
// unsigned short right;
|
// unsigned short right;
|
||||||
} STEREO16;
|
} STEREO16;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
MONO16 left;
|
MONO16 left;
|
||||||
MONO16 right;
|
MONO16 right;
|
||||||
} SIGNEDSTEREO16;
|
} SIGNEDSTEREO16;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
// MONO8 left;
|
// MONO8 left;
|
||||||
// MONO8 right;
|
// MONO8 right;
|
||||||
char left;
|
char left;
|
||||||
char right;
|
char right;
|
||||||
} STEREO8;
|
} STEREO8;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
char RIFF[ 4 ];
|
char RIFF[ 4 ];
|
||||||
unsigned int file_size;
|
unsigned int file_size;
|
||||||
char WAVE[ 4 ];
|
char WAVE[ 4 ];
|
||||||
char fmt[ 4 ];
|
char fmt[ 4 ];
|
||||||
unsigned int format_size;
|
unsigned int format_size;
|
||||||
} riff_header;
|
} riff_header;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
unsigned short wFormatTag;
|
unsigned short wFormatTag;
|
||||||
unsigned short nChannels;
|
unsigned short nChannels;
|
||||||
unsigned int nSamplesPerSec;
|
unsigned int nSamplesPerSec;
|
||||||
unsigned int nAvgBytesPerSec;
|
unsigned int nAvgBytesPerSec;
|
||||||
unsigned short nBlockAlign;
|
unsigned short nBlockAlign;
|
||||||
unsigned short nBitsPerSample;
|
unsigned short nBitsPerSample;
|
||||||
} format_header;
|
} format_header;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
unsigned char DATA[ 4 ];
|
unsigned char DATA[ 4 ];
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
} data_header;
|
} data_header;
|
||||||
|
|
||||||
typedef MONO8 VOLUME8[ 256 ];
|
typedef MONO8 VOLUME8[ 256 ];
|
||||||
typedef MONO16 VOLUME16[ 256 ];
|
typedef MONO16 VOLUME16[ 256 ];
|
||||||
|
|
||||||
typedef char HARSH_CLIP_TABLE_8[ MV_NumVoices * 256 ];
|
typedef char HARSH_CLIP_TABLE_8[ MV_NumVoices * 256 ];
|
||||||
|
|
||||||
static unsigned MV_GetBufferSize(unsigned);
|
static unsigned MV_GetBufferSize(unsigned);
|
||||||
|
|
||||||
static void MV_Mix( VoiceNode *voice, int buffer );
|
static void MV_Mix( VoiceNode *voice, int buffer );
|
||||||
static void MV_PlayVoice( VoiceNode *voice );
|
static void MV_PlayVoice( VoiceNode *voice );
|
||||||
static void MV_StopVoice( VoiceNode *voice );
|
static void MV_StopVoice( VoiceNode *voice );
|
||||||
static int MV_ServiceVoc( int );
|
static int MV_ServiceVoc( int );
|
||||||
|
|
||||||
static playbackstatus MV_GetNextVOCBlock( VoiceNode *voice );
|
static playbackstatus MV_GetNextVOCBlock( VoiceNode *voice );
|
||||||
static playbackstatus MV_GetNextDemandFeedBlock( VoiceNode *voice );
|
static playbackstatus MV_GetNextDemandFeedBlock( VoiceNode *voice );
|
||||||
static playbackstatus MV_GetNextRawBlock( VoiceNode *voice );
|
static playbackstatus MV_GetNextRawBlock( VoiceNode *voice );
|
||||||
static playbackstatus MV_GetNextWAVBlock( VoiceNode *voice );
|
static playbackstatus MV_GetNextWAVBlock( VoiceNode *voice );
|
||||||
|
|
||||||
|
// static void MV_ServiceRecord( void );
|
||||||
|
static VoiceNode *MV_GetVoice( int handle );
|
||||||
|
static VoiceNode *MV_AllocVoice( int priority );
|
||||||
|
|
||||||
|
static short *MV_GetVolumeTable( int vol );
|
||||||
|
|
||||||
|
static void MV_SetVoiceMixMode( VoiceNode *voice );
|
||||||
|
|
||||||
|
static void MV_SetVoicePitch( VoiceNode *voice, unsigned int rate, int pitchoffset );
|
||||||
|
static void MV_CalcVolume( int MaxLevel );
|
||||||
|
static void MV_CalcPanTable( void );
|
||||||
|
|
||||||
|
static void ClearBuffer_DW(void *ptr, int data, int length);
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define ClearBuffer_DW( ptr, data, length ) \
|
||||||
|
({ void *__ptr=(ptr); unsigned __data=(data); int __length=(length); \
|
||||||
|
__asm__ __volatile__ ("rep; stosl" \
|
||||||
|
: "+c" (__length), "+D" (__ptr) : "a" (__data) : "memory", "cc"); \
|
||||||
|
0; })
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
#pragma aux ClearBuffer_DW = \
|
||||||
|
"cld", \
|
||||||
|
"push es", \
|
||||||
|
"push ds", \
|
||||||
|
"pop es", \
|
||||||
|
"rep stosd", \
|
||||||
|
"pop es", \
|
||||||
|
parm [ edi ] [ eax ] [ ecx ] modify exact [ ecx edi ];
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(__WATCOMC__)
|
||||||
|
|
||||||
|
#pragma aux MV_Mix8BitMono parm [eax] [edx] [ebx] [ecx]
|
||||||
|
#pragma aux MV_Mix8BitStereo parm [eax] [edx] [ebx] [ecx]
|
||||||
|
#pragma aux MV_Mix16BitMono parm [eax] [edx] [ebx] [ecx]
|
||||||
|
#pragma aux MV_Mix16BitStereo parm [eax] [edx] [ebx] [ecx]
|
||||||
|
#pragma aux MV_Mix16BitMono16 parm [eax] [edx] [ebx] [ecx]
|
||||||
|
#pragma aux MV_Mix8BitMono16 parm [eax] [edx] [ebx] [ecx]
|
||||||
|
#pragma aux MV_Mix8BitStereo16 parm [eax] [edx] [ebx] [ecx]
|
||||||
|
#pragma aux MV_Mix16BitStereo16 parm [eax] [edx] [ebx] [ecx]
|
||||||
|
|
||||||
|
#pragma aux MV_16BitReverb parm [eax] [edx] [ebx] [ecx] modify exact [eax ebx ecx edx esi edi]
|
||||||
|
#pragma aux MV_8BitReverb parm [eax] [edx] [ebx] [ecx] modify exact [eax ebx ecx edx esi edi]
|
||||||
|
#pragma aux MV_16BitReverbFast parm [eax] [edx] [ebx] [ecx] modify exact [eax ebx ecx edx esi edi]
|
||||||
|
#pragma aux MV_8BitReverbFast parm [eax] [edx] [ebx] [ecx] modify exact [eax ebx ecx edx esi edi]
|
||||||
|
|
||||||
|
#define CDEC
|
||||||
|
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
|
||||||
|
#define CDEC _cdecl
|
||||||
|
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
|
||||||
// static void MV_ServiceRecord( void );
|
|
||||||
static VoiceNode *MV_GetVoice( int handle );
|
|
||||||
static VoiceNode *MV_AllocVoice( int priority );
|
|
||||||
|
|
||||||
static short *MV_GetVolumeTable( int vol );
|
|
||||||
|
|
||||||
static void MV_SetVoiceMixMode( VoiceNode *voice );
|
|
||||||
|
|
||||||
static void MV_SetVoicePitch( VoiceNode *voice, unsigned int rate, int pitchoffset );
|
|
||||||
static void MV_CalcVolume( int MaxLevel );
|
|
||||||
static void MV_CalcPanTable( void );
|
|
||||||
|
|
||||||
void ClearBuffer_DW(void *ptr, int data, int length)
|
|
||||||
{
|
|
||||||
int *pptr = ptr;
|
|
||||||
for (; length>0; length--) *(pptr++) = data;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
#define ClearBuffer_DW( ptr, data, length ) \
|
|
||||||
({ void *__ptr=(ptr); unsigned __data=(data); int __length=(length); \
|
|
||||||
__asm__ __volatile__ ("rep; stosl" \
|
|
||||||
: "+c" (__length), "+D" (__ptr) : "a" (__data) : "memory", "cc"); \
|
|
||||||
0; })
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
#pragma aux ClearBuffer_DW = \
|
|
||||||
"cld", \
|
|
||||||
"push es", \
|
|
||||||
"push ds", \
|
|
||||||
"pop es", \
|
|
||||||
"rep stosd", \
|
|
||||||
"pop es", \
|
|
||||||
parm [ edi ] [ eax ] [ ecx ] modify exact [ ecx edi ];
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if defined(__WATCOMC__)
|
|
||||||
|
|
||||||
#pragma aux MV_Mix8BitMono parm [eax] [edx] [ebx] [ecx]
|
|
||||||
#pragma aux MV_Mix8BitStereo parm [eax] [edx] [ebx] [ecx]
|
|
||||||
#pragma aux MV_Mix16BitMono parm [eax] [edx] [ebx] [ecx]
|
|
||||||
#pragma aux MV_Mix16BitStereo parm [eax] [edx] [ebx] [ecx]
|
|
||||||
#pragma aux MV_Mix16BitMono16 parm [eax] [edx] [ebx] [ecx]
|
|
||||||
#pragma aux MV_Mix8BitMono16 parm [eax] [edx] [ebx] [ecx]
|
|
||||||
#pragma aux MV_Mix8BitStereo16 parm [eax] [edx] [ebx] [ecx]
|
|
||||||
#pragma aux MV_Mix16BitStereo16 parm [eax] [edx] [ebx] [ecx]
|
|
||||||
|
|
||||||
#pragma aux MV_16BitReverb parm [eax] [edx] [ebx] [ecx] modify exact [eax ebx ecx edx esi edi]
|
|
||||||
#pragma aux MV_8BitReverb parm [eax] [edx] [ebx] [ecx] modify exact [eax ebx ecx edx esi edi]
|
|
||||||
#pragma aux MV_16BitReverbFast parm [eax] [edx] [ebx] [ecx] modify exact [eax ebx ecx edx esi edi]
|
|
||||||
#pragma aux MV_8BitReverbFast parm [eax] [edx] [ebx] [ecx] modify exact [eax ebx ecx edx esi edi]
|
|
||||||
|
|
||||||
#define CDEC
|
|
||||||
|
|
||||||
#elif defined(_MSC_VER)
|
|
||||||
|
|
||||||
#define CDEC _cdecl
|
|
||||||
|
|
||||||
#elif defined(_WIN32)
|
|
||||||
|
|
||||||
#define CDEC __cdecl
|
#define CDEC __cdecl
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#define CDEC
|
#define CDEC
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
void CDEC MV_Mix8BitMono( unsigned int position, unsigned int rate,
|
void CDEC MV_Mix8BitMono( unsigned int position, unsigned int rate,
|
||||||
char *start, unsigned int length );
|
char *start, unsigned int length );
|
||||||
|
|
||||||
void CDEC MV_Mix8BitStereo( unsigned int position,
|
void CDEC MV_Mix8BitStereo( unsigned int position,
|
||||||
unsigned int rate, char *start, unsigned int length );
|
unsigned int rate, char *start, unsigned int length );
|
||||||
|
|
||||||
void CDEC MV_Mix16BitMono( unsigned int position,
|
void CDEC MV_Mix16BitMono( unsigned int position,
|
||||||
unsigned int rate, char *start, unsigned int length );
|
unsigned int rate, char *start, unsigned int length );
|
||||||
|
|
||||||
void CDEC MV_Mix16BitStereo( unsigned int position,
|
void CDEC MV_Mix16BitStereo( unsigned int position,
|
||||||
unsigned int rate, char *start, unsigned int length );
|
unsigned int rate, char *start, unsigned int length );
|
||||||
|
|
||||||
void CDEC MV_Mix16BitMono16( unsigned int position,
|
void CDEC MV_Mix16BitMono16( unsigned int position,
|
||||||
unsigned int rate, char *start, unsigned int length );
|
unsigned int rate, char *start, unsigned int length );
|
||||||
|
|
||||||
void CDEC MV_Mix8BitMono16( unsigned int position, unsigned int rate,
|
void CDEC MV_Mix8BitMono16( unsigned int position, unsigned int rate,
|
||||||
char *start, unsigned int length );
|
char *start, unsigned int length );
|
||||||
|
|
||||||
void CDEC MV_Mix8BitStereo16( unsigned int position,
|
void CDEC MV_Mix8BitStereo16( unsigned int position,
|
||||||
unsigned int rate, char *start, unsigned int length );
|
unsigned int rate, char *start, unsigned int length );
|
||||||
|
|
||||||
void CDEC MV_Mix16BitStereo16( unsigned int position,
|
void CDEC MV_Mix16BitStereo16( unsigned int position,
|
||||||
unsigned int rate, char *start, unsigned int length );
|
unsigned int rate, char *start, unsigned int length );
|
||||||
|
|
||||||
void CDEC MV_16BitReverb( char *src, char *dest, VOLUME16 *volume, int count );
|
void CDEC MV_16BitReverb( char *src, char *dest, VOLUME16 *volume, int count );
|
||||||
void CDEC MV_8BitReverb( signed char *src, signed char *dest, VOLUME16 *volume, int count );
|
void CDEC MV_8BitReverb( signed char *src, signed char *dest, VOLUME16 *volume, int count );
|
||||||
void CDEC MV_16BitReverbFast( char *src, char *dest, int count, int shift );
|
void CDEC MV_16BitReverbFast( char *src, char *dest, int count, int shift );
|
||||||
void CDEC MV_8BitReverbFast( signed char *src, signed char *dest, int count, int shift );
|
void CDEC MV_8BitReverbFast( signed char *src, signed char *dest, int count, int shift );
|
||||||
|
|
||||||
#undef CDEC
|
#undef CDEC
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -37,11 +37,11 @@ enum DSL_ERRORS
|
||||||
DSL_MixerInitFailure
|
DSL_MixerInitFailure
|
||||||
};
|
};
|
||||||
|
|
||||||
extern int DSL_ErrorCode;
|
extern int DSL_ErrorCode;
|
||||||
char *DSL_ErrorString( int ErrorNumber );
|
char *DSL_ErrorString( int ErrorNumber );
|
||||||
|
|
||||||
int DisableInterrupts(void); // simulated using critical sections
|
int DisableInterrupts(void); // simulated using critical sections
|
||||||
int RestoreInterrupts(int);
|
int RestoreInterrupts(int);
|
||||||
|
|
||||||
int DSL_Init( void );
|
int DSL_Init( void );
|
||||||
void DSL_StopPlayback( void );
|
void DSL_StopPlayback( void );
|
||||||
|
|
|
@ -1,62 +1,62 @@
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
/*
|
/*
|
||||||
Duke Nukem Copyright (C) 1996, 2003 3D Realms Entertainment
|
Duke Nukem Copyright (C) 1996, 2003 3D Realms Entertainment
|
||||||
|
|
||||||
This file is part of Duke Nukem 3D version 1.5 - Atomic Edition
|
This file is part of Duke Nukem 3D version 1.5 - Atomic Edition
|
||||||
|
|
||||||
Duke Nukem 3D is free software; you can redistribute it and/or
|
Duke Nukem 3D is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
#ifndef __dsoundout_h__
|
#ifndef __dsoundout_h__
|
||||||
#define __dsoundout_h__
|
#define __dsoundout_h__
|
||||||
|
|
||||||
enum DSOUND_ERRORS {
|
enum DSOUND_ERRORS {
|
||||||
DSOUND_Warning = -2,
|
DSOUND_Warning = -2,
|
||||||
DSOUND_Error = -1,
|
DSOUND_Error = -1,
|
||||||
DSOUND_Ok = 0,
|
DSOUND_Ok = 0,
|
||||||
DSOUND_NoDLL,
|
DSOUND_NoDLL,
|
||||||
DSOUND_NoDirectSoundCreate,
|
DSOUND_NoDirectSoundCreate,
|
||||||
DSOUND_FailedDSC,
|
DSOUND_FailedDSC,
|
||||||
DSOUND_FailedSetCoopLevel,
|
DSOUND_FailedSetCoopLevel,
|
||||||
DSOUND_FailedCreatePrimary,
|
DSOUND_FailedCreatePrimary,
|
||||||
DSOUND_FailedSetFormat,
|
DSOUND_FailedSetFormat,
|
||||||
DSOUND_FailedCreateSecondary,
|
DSOUND_FailedCreateSecondary,
|
||||||
DSOUND_FailedCreateNotifyEvent,
|
DSOUND_FailedCreateNotifyEvent,
|
||||||
DSOUND_FailedQueryNotify,
|
DSOUND_FailedQueryNotify,
|
||||||
DSOUND_FailedSetNotify,
|
DSOUND_FailedSetNotify,
|
||||||
DSOUND_FailedCreateFinishEvent,
|
DSOUND_FailedCreateFinishEvent,
|
||||||
DSOUND_FailedCreateThread,
|
DSOUND_FailedCreateThread,
|
||||||
DSOUND_FailedPlaySecondary,
|
DSOUND_FailedPlaySecondary,
|
||||||
DSOUND_FailedGetExitCode
|
DSOUND_FailedGetExitCode
|
||||||
};
|
};
|
||||||
|
|
||||||
extern int DSOUND_ErrorCode;
|
extern int DSOUND_ErrorCode;
|
||||||
|
|
||||||
char *DSOUND_ErrorString(int);
|
char *DSOUND_ErrorString(int);
|
||||||
|
|
||||||
int DisableInterrupts(void); // simulated using critical sections
|
int DisableInterrupts(void); // simulated using critical sections
|
||||||
int RestoreInterrupts(int);
|
int RestoreInterrupts(int);
|
||||||
|
|
||||||
int DSOUND_Init(int soundcard, int mixrate, int numchannels, int samplebits, int buffersize);
|
int DSOUND_Init(int soundcard, int mixrate, int numchannels, int samplebits, int buffersize);
|
||||||
int DSOUND_Shutdown(void);
|
int DSOUND_Shutdown(void);
|
||||||
|
|
||||||
int DSOUND_SetMixMode(int mode);
|
int DSOUND_SetMixMode(int mode);
|
||||||
int DSOUND_BeginBufferedPlayback(char *BufferStart, int (*CallBackFunc)(int), int buffersize, int numdivisions);
|
int DSOUND_BeginBufferedPlayback(char *BufferStart, int (*CallBackFunc)(int), int buffersize, int numdivisions);
|
||||||
int DSOUND_StopPlayback(void);
|
int DSOUND_StopPlayback(void);
|
||||||
|
|
||||||
#endif // __dsoundout_h__
|
#endif // __dsoundout_h__
|
||||||
|
|
||||||
|
|
|
@ -1,137 +1,137 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
||||||
*/
|
*/
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
module: FX_MAN.H
|
module: FX_MAN.H
|
||||||
|
|
||||||
author: James R. Dose
|
author: James R. Dose
|
||||||
date: March 17, 1994
|
date: March 17, 1994
|
||||||
|
|
||||||
Public header for FX_MAN.C
|
Public header for FX_MAN.C
|
||||||
|
|
||||||
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
#ifndef __FX_MAN_H
|
#ifndef __FX_MAN_H
|
||||||
#define __FX_MAN_H
|
#define __FX_MAN_H
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
int MaxVoices;
|
int MaxVoices;
|
||||||
int MaxSampleBits;
|
int MaxSampleBits;
|
||||||
int MaxChannels;
|
int MaxChannels;
|
||||||
} fx_device;
|
} fx_device;
|
||||||
|
|
||||||
#define MonoFx 1
|
#define MonoFx 1
|
||||||
#define StereoFx 2
|
#define StereoFx 2
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
unsigned int Address;
|
unsigned int Address;
|
||||||
unsigned int Type;
|
unsigned int Type;
|
||||||
unsigned int Interrupt;
|
unsigned int Interrupt;
|
||||||
unsigned int Dma8;
|
unsigned int Dma8;
|
||||||
unsigned int Dma16;
|
unsigned int Dma16;
|
||||||
unsigned int Midi;
|
unsigned int Midi;
|
||||||
unsigned int Emu;
|
unsigned int Emu;
|
||||||
} fx_blaster_config;
|
} fx_blaster_config;
|
||||||
|
|
||||||
enum FX_ERRORS
|
enum FX_ERRORS
|
||||||
{
|
{
|
||||||
FX_Warning = -2,
|
FX_Warning = -2,
|
||||||
FX_Error = -1,
|
FX_Error = -1,
|
||||||
FX_Ok = 0,
|
FX_Ok = 0,
|
||||||
FX_ASSVersion,
|
FX_ASSVersion,
|
||||||
FX_BlasterError,
|
FX_BlasterError,
|
||||||
FX_SoundCardError,
|
FX_SoundCardError,
|
||||||
FX_InvalidCard,
|
FX_InvalidCard,
|
||||||
FX_MultiVocError,
|
FX_MultiVocError,
|
||||||
FX_DPMI_Error
|
FX_DPMI_Error
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
enum fx_BLASTER_Types
|
enum fx_BLASTER_Types
|
||||||
{
|
{
|
||||||
fx_SB = 1,
|
fx_SB = 1,
|
||||||
fx_SBPro = 2,
|
fx_SBPro = 2,
|
||||||
fx_SB20 = 3,
|
fx_SB20 = 3,
|
||||||
fx_SBPro2 = 4,
|
fx_SBPro2 = 4,
|
||||||
fx_SB16 = 6
|
fx_SB16 = 6
|
||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *FX_ErrorString( int ErrorNumber );
|
char *FX_ErrorString( int ErrorNumber );
|
||||||
//int FX_SetupCard( int SoundCard, fx_device *device );
|
//int FX_SetupCard( int SoundCard, fx_device *device );
|
||||||
//int FX_GetBlasterSettings( fx_blaster_config *blaster );
|
//int FX_GetBlasterSettings( fx_blaster_config *blaster );
|
||||||
//int FX_SetupSoundBlaster( fx_blaster_config blaster, int *MaxVoices, int *MaxSampleBits, int *MaxChannels );
|
//int FX_SetupSoundBlaster( fx_blaster_config blaster, int *MaxVoices, int *MaxSampleBits, int *MaxChannels );
|
||||||
int FX_Init( int SoundCard, int numvoices, int numchannels, int samplebits, unsigned mixrate );
|
int FX_Init( int SoundCard, int numvoices, int numchannels, int samplebits, unsigned mixrate );
|
||||||
int FX_Shutdown( void );
|
int FX_Shutdown( void );
|
||||||
int FX_SetCallBack( void ( *function )( unsigned int ) );
|
int FX_SetCallBack( void ( *function )( unsigned int ) );
|
||||||
void FX_SetVolume( int volume );
|
void FX_SetVolume( int volume );
|
||||||
int FX_GetVolume( void );
|
int FX_GetVolume( void );
|
||||||
|
|
||||||
void FX_SetReverseStereo( int setting );
|
void FX_SetReverseStereo( int setting );
|
||||||
int FX_GetReverseStereo( void );
|
int FX_GetReverseStereo( void );
|
||||||
void FX_SetReverb( int reverb );
|
void FX_SetReverb( int reverb );
|
||||||
void FX_SetFastReverb( int reverb );
|
void FX_SetFastReverb( int reverb );
|
||||||
int FX_GetMaxReverbDelay( void );
|
int FX_GetMaxReverbDelay( void );
|
||||||
int FX_GetReverbDelay( void );
|
int FX_GetReverbDelay( void );
|
||||||
void FX_SetReverbDelay( int delay );
|
void FX_SetReverbDelay( int delay );
|
||||||
|
|
||||||
int FX_VoiceAvailable( int priority );
|
int FX_VoiceAvailable( int priority );
|
||||||
int FX_EndLooping( int handle );
|
int FX_EndLooping( int handle );
|
||||||
int FX_SetPan( int handle, int vol, int left, int right );
|
int FX_SetPan( int handle, int vol, int left, int right );
|
||||||
int FX_SetPitch( int handle, int pitchoffset );
|
int FX_SetPitch( int handle, int pitchoffset );
|
||||||
int FX_SetFrequency( int handle, int frequency );
|
int FX_SetFrequency( int handle, int frequency );
|
||||||
|
|
||||||
int FX_PlayVOC( char *ptr, int pitchoffset, int vol, int left, int right,
|
int FX_PlayVOC( char *ptr, int pitchoffset, int vol, int left, int right,
|
||||||
int priority, unsigned int callbackval );
|
int priority, unsigned int callbackval );
|
||||||
int FX_PlayLoopedVOC( char *ptr, int loopstart, int loopend,
|
int FX_PlayLoopedVOC( char *ptr, int loopstart, int loopend,
|
||||||
int pitchoffset, int vol, int left, int right, int priority,
|
int pitchoffset, int vol, int left, int right, int priority,
|
||||||
unsigned int callbackval );
|
unsigned int callbackval );
|
||||||
int FX_PlayWAV( char *ptr, int pitchoffset, int vol, int left, int right,
|
int FX_PlayWAV( char *ptr, int pitchoffset, int vol, int left, int right,
|
||||||
int priority, unsigned int callbackval );
|
int priority, unsigned int callbackval );
|
||||||
int FX_PlayLoopedWAV( char *ptr, int loopstart, int loopend,
|
int FX_PlayLoopedWAV( char *ptr, int loopstart, int loopend,
|
||||||
int pitchoffset, int vol, int left, int right, int priority,
|
int pitchoffset, int vol, int left, int right, int priority,
|
||||||
unsigned int callbackval );
|
unsigned int callbackval );
|
||||||
int FX_PlayVOC3D( char *ptr, int pitchoffset, int angle, int distance,
|
int FX_PlayVOC3D( char *ptr, int pitchoffset, int angle, int distance,
|
||||||
int priority, unsigned int callbackval );
|
int priority, unsigned int callbackval );
|
||||||
int FX_PlayWAV3D( char *ptr, int pitchoffset, int angle, int distance,
|
int FX_PlayWAV3D( char *ptr, int pitchoffset, int angle, int distance,
|
||||||
int priority, unsigned int callbackval );
|
int priority, unsigned int callbackval );
|
||||||
int FX_PlayRaw( char *ptr, unsigned int length, unsigned rate,
|
int FX_PlayRaw( char *ptr, unsigned int length, unsigned rate,
|
||||||
int pitchoffset, int vol, int left, int right, int priority,
|
int pitchoffset, int vol, int left, int right, int priority,
|
||||||
unsigned int callbackval );
|
unsigned int callbackval );
|
||||||
int FX_PlayLoopedRaw( char *ptr, unsigned int length, char *loopstart,
|
int FX_PlayLoopedRaw( char *ptr, unsigned int length, char *loopstart,
|
||||||
char *loopend, unsigned rate, int pitchoffset, int vol, int left,
|
char *loopend, unsigned rate, int pitchoffset, int vol, int left,
|
||||||
int right, int priority, unsigned int callbackval );
|
int right, int priority, unsigned int callbackval );
|
||||||
int FX_Pan3D( int handle, int angle, int distance );
|
int FX_Pan3D( int handle, int angle, int distance );
|
||||||
int FX_SoundActive( int handle );
|
int FX_SoundActive( int handle );
|
||||||
int FX_SoundsPlaying( void );
|
int FX_SoundsPlaying( void );
|
||||||
int FX_StopSound( int handle );
|
int FX_StopSound( int handle );
|
||||||
int FX_StopAllSounds( void );
|
int FX_StopAllSounds( void );
|
||||||
int FX_StartDemandFeedPlayback( void ( *function )( char **ptr, unsigned int *length ),
|
int FX_StartDemandFeedPlayback( void ( *function )( char **ptr, unsigned int *length ),
|
||||||
int rate, int pitchoffset, int vol, int left, int right,
|
int rate, int pitchoffset, int vol, int left, int right,
|
||||||
int priority, unsigned int callbackval );
|
int priority, unsigned int callbackval );
|
||||||
int FX_StartRecording( int MixRate, void ( *function )( char *ptr, int length ) );
|
int FX_StartRecording( int MixRate, void ( *function )( char *ptr, int length ) );
|
||||||
void FX_StopRecord( void );
|
void FX_StopRecord( void );
|
||||||
|
|
||||||
void FX_Update(void);
|
void FX_Update(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,119 +1,119 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
||||||
*/
|
*/
|
||||||
#ifndef __linklist_h
|
#ifndef __linklist_h
|
||||||
#define __linklist_h
|
#define __linklist_h
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define NewNode(type) ((type*)SafeMalloc(sizeof(type)))
|
#define NewNode(type) ((type*)SafeMalloc(sizeof(type)))
|
||||||
|
|
||||||
|
|
||||||
#define LL_CreateNewLinkedList(rootnode,type,next,prev) \
|
#define LL_CreateNewLinkedList(rootnode,type,next,prev) \
|
||||||
{ \
|
{ \
|
||||||
(rootnode) = NewNode(type); \
|
(rootnode) = NewNode(type); \
|
||||||
(rootnode)->prev = (rootnode); \
|
(rootnode)->prev = (rootnode); \
|
||||||
(rootnode)->next = (rootnode); \
|
(rootnode)->next = (rootnode); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define LL_AddNode(rootnode, newnode, next, prev) \
|
#define LL_AddNode(rootnode, newnode, next, prev) \
|
||||||
{ \
|
{ \
|
||||||
(newnode)->next = (rootnode); \
|
(newnode)->next = (rootnode); \
|
||||||
(newnode)->prev = (rootnode)->prev; \
|
(newnode)->prev = (rootnode)->prev; \
|
||||||
(rootnode)->prev->next = (newnode); \
|
(rootnode)->prev->next = (newnode); \
|
||||||
(rootnode)->prev = (newnode); \
|
(rootnode)->prev = (newnode); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LL_TransferList(oldroot,newroot,next,prev) \
|
#define LL_TransferList(oldroot,newroot,next,prev) \
|
||||||
{ \
|
{ \
|
||||||
if ((oldroot)->prev != (oldroot)) \
|
if ((oldroot)->prev != (oldroot)) \
|
||||||
{ \
|
{ \
|
||||||
(oldroot)->prev->next = (newroot); \
|
(oldroot)->prev->next = (newroot); \
|
||||||
(oldroot)->next->prev = (newroot)->prev; \
|
(oldroot)->next->prev = (newroot)->prev; \
|
||||||
(newroot)->prev->next = (oldroot)->next; \
|
(newroot)->prev->next = (oldroot)->next; \
|
||||||
(newroot)->prev = (oldroot)->prev; \
|
(newroot)->prev = (oldroot)->prev; \
|
||||||
(oldroot)->next = (oldroot); \
|
(oldroot)->next = (oldroot); \
|
||||||
(oldroot)->prev = (oldroot); \
|
(oldroot)->prev = (oldroot); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LL_ReverseList(root,type,next,prev) \
|
#define LL_ReverseList(root,type,next,prev) \
|
||||||
{ \
|
{ \
|
||||||
type *newend,*trav,*tprev; \
|
type *newend,*trav,*tprev; \
|
||||||
\
|
\
|
||||||
newend = (root)->next; \
|
newend = (root)->next; \
|
||||||
for(trav = (root)->prev; trav != newend; trav = tprev) \
|
for(trav = (root)->prev; trav != newend; trav = tprev) \
|
||||||
{ \
|
{ \
|
||||||
tprev = trav->prev; \
|
tprev = trav->prev; \
|
||||||
LL_MoveNode(trav,newend,next,prev); \
|
LL_MoveNode(trav,newend,next,prev); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define LL_RemoveNode(node,next,prev) \
|
#define LL_RemoveNode(node,next,prev) \
|
||||||
{ \
|
{ \
|
||||||
(node)->prev->next = (node)->next; \
|
(node)->prev->next = (node)->next; \
|
||||||
(node)->next->prev = (node)->prev; \
|
(node)->next->prev = (node)->prev; \
|
||||||
(node)->next = (node); \
|
(node)->next = (node); \
|
||||||
(node)->prev = (node); \
|
(node)->prev = (node); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define LL_SortedInsertion(rootnode,insertnode,next,prev,type,sortparm) \
|
#define LL_SortedInsertion(rootnode,insertnode,next,prev,type,sortparm) \
|
||||||
{ \
|
{ \
|
||||||
type *hoya; \
|
type *hoya; \
|
||||||
\
|
\
|
||||||
hoya = (rootnode)->next; \
|
hoya = (rootnode)->next; \
|
||||||
while((hoya != (rootnode)) && ((insertnode)->sortparm > hoya->sortparm)) \
|
while((hoya != (rootnode)) && ((insertnode)->sortparm > hoya->sortparm)) \
|
||||||
{ \
|
{ \
|
||||||
hoya = hoya->next; \
|
hoya = hoya->next; \
|
||||||
} \
|
} \
|
||||||
LL_AddNode(hoya,(insertnode),next,prev); \
|
LL_AddNode(hoya,(insertnode),next,prev); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LL_MoveNode(node,newroot,next,prev) \
|
#define LL_MoveNode(node,newroot,next,prev) \
|
||||||
{ \
|
{ \
|
||||||
LL_RemoveNode((node),next,prev); \
|
LL_RemoveNode((node),next,prev); \
|
||||||
LL_AddNode((newroot),(node),next,prev); \
|
LL_AddNode((newroot),(node),next,prev); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LL_ListEmpty(list,next,prev) \
|
#define LL_ListEmpty(list,next,prev) \
|
||||||
( \
|
( \
|
||||||
((list)->next == (list)) && \
|
((list)->next == (list)) && \
|
||||||
((list)->prev == (list)) \
|
((list)->prev == (list)) \
|
||||||
)
|
)
|
||||||
|
|
||||||
#define LL_Free(list) SafeFree(list)
|
#define LL_Free(list) SafeFree(list)
|
||||||
#define LL_Reset(list,next,prev) (list)->next = (list)->prev = (list)
|
#define LL_Reset(list,next,prev) (list)->next = (list)->prev = (list)
|
||||||
#define LL_New LL_CreateNewLinkedList
|
#define LL_New LL_CreateNewLinkedList
|
||||||
#define LL_Remove LL_RemoveNode
|
#define LL_Remove LL_RemoveNode
|
||||||
#define LL_Add LL_AddNode
|
#define LL_Add LL_AddNode
|
||||||
#define LL_Empty LL_ListEmpty
|
#define LL_Empty LL_ListEmpty
|
||||||
#define LL_Move LL_MoveNode
|
#define LL_Move LL_MoveNode
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,75 +1,75 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
||||||
*/
|
*/
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
module: LL_MAN.H
|
module: LL_MAN.H
|
||||||
|
|
||||||
author: James R. Dose
|
author: James R. Dose
|
||||||
date: February 4, 1994
|
date: February 4, 1994
|
||||||
|
|
||||||
Public header for LL_MAN.C. Linked list management routines.
|
Public header for LL_MAN.C. Linked list management routines.
|
||||||
|
|
||||||
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
#ifndef __LL_MAN_H
|
#ifndef __LL_MAN_H
|
||||||
#define __LL_MAN_H
|
#define __LL_MAN_H
|
||||||
|
|
||||||
enum LL_Errors
|
enum LL_Errors
|
||||||
{
|
{
|
||||||
LL_Warning = -2,
|
LL_Warning = -2,
|
||||||
LL_Error = -1,
|
LL_Error = -1,
|
||||||
LL_Ok = 0
|
LL_Ok = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct list
|
typedef struct list
|
||||||
{
|
{
|
||||||
void *start;
|
void *start;
|
||||||
void *end;
|
void *end;
|
||||||
} list;
|
} list;
|
||||||
|
|
||||||
void LL_AddNode( char *node, char **head, char **tail, int next, int prev );
|
void LL_AddNode( char *node, char **head, char **tail, int next, int prev );
|
||||||
void LL_RemoveNode( char *node, char **head, char **tail, int next, int prev );
|
void LL_RemoveNode( char *node, char **head, char **tail, int next, int prev );
|
||||||
|
|
||||||
#define LL_AddToHead( type, listhead, node ) \
|
#define LL_AddToHead( type, listhead, node ) \
|
||||||
LL_AddNode( ( char * )( node ), \
|
LL_AddNode( ( char * )( node ), \
|
||||||
( char ** )&( ( listhead )->start ), \
|
( char ** )&( ( listhead )->start ), \
|
||||||
( char ** )&( ( listhead )->end ), \
|
( char ** )&( ( listhead )->end ), \
|
||||||
( int )&( ( type * ) 0 )->next, \
|
( int )&( ( type * ) 0 )->next, \
|
||||||
( int )&( ( type * ) 0 )->prev )
|
( int )&( ( type * ) 0 )->prev )
|
||||||
|
|
||||||
#define LL_AddToTail( type, listhead, node ) \
|
#define LL_AddToTail( type, listhead, node ) \
|
||||||
LL_AddNode( ( char * )( node ), \
|
LL_AddNode( ( char * )( node ), \
|
||||||
( char ** )&( ( listhead )->end ), \
|
( char ** )&( ( listhead )->end ), \
|
||||||
( char ** )&( ( listhead )->start ), \
|
( char ** )&( ( listhead )->start ), \
|
||||||
( int )&( ( type * ) 0 )->prev, \
|
( int )&( ( type * ) 0 )->prev, \
|
||||||
( int )&( ( type * ) 0 )->next )
|
( int )&( ( type * ) 0 )->next )
|
||||||
|
|
||||||
#define LL_Remove( type, listhead, node ) \
|
#define LL_Remove( type, listhead, node ) \
|
||||||
LL_RemoveNode( ( char * )( node ), \
|
LL_RemoveNode( ( char * )( node ), \
|
||||||
( char ** )&( ( listhead )->start ), \
|
( char ** )&( ( listhead )->start ), \
|
||||||
( char ** )&( ( listhead )->end ), \
|
( char ** )&( ( listhead )->end ), \
|
||||||
( int )&( ( type * ) 0 )->next, \
|
( int )&( ( type * ) 0 )->next, \
|
||||||
( int )&( ( type * ) 0 )->prev )
|
( int )&( ( type * ) 0 )->prev )
|
||||||
|
|
||||||
#define LL_NextNode( node ) ( ( node )->next )
|
#define LL_NextNode( node ) ( ( node )->next )
|
||||||
#define LL_PreviousNode( node ) ( ( node )->prev )
|
#define LL_PreviousNode( node ) ( ( node )->prev )
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,100 +1,100 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
||||||
*/
|
*/
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
module: MIDI.H
|
module: MIDI.H
|
||||||
|
|
||||||
author: James R. Dose
|
author: James R. Dose
|
||||||
date: May 25, 1994
|
date: May 25, 1994
|
||||||
|
|
||||||
Public header for MIDI.C. Midi song file playback routines.
|
Public header for MIDI.C. Midi song file playback routines.
|
||||||
|
|
||||||
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
#ifndef __MIDI_H
|
#ifndef __MIDI_H
|
||||||
#define __MIDI_H
|
#define __MIDI_H
|
||||||
|
|
||||||
enum MIDI_Errors
|
enum MIDI_Errors
|
||||||
{
|
{
|
||||||
MIDI_Warning = -2,
|
MIDI_Warning = -2,
|
||||||
MIDI_Error = -1,
|
MIDI_Error = -1,
|
||||||
MIDI_Ok = 0,
|
MIDI_Ok = 0,
|
||||||
MIDI_NullMidiModule,
|
MIDI_NullMidiModule,
|
||||||
MIDI_InvalidMidiFile,
|
MIDI_InvalidMidiFile,
|
||||||
MIDI_UnknownMidiFormat,
|
MIDI_UnknownMidiFormat,
|
||||||
MIDI_NoTracks,
|
MIDI_NoTracks,
|
||||||
MIDI_InvalidTrack,
|
MIDI_InvalidTrack,
|
||||||
MIDI_NoMemory,
|
MIDI_NoMemory,
|
||||||
MIDI_DPMI_Error
|
MIDI_DPMI_Error
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#define MIDI_PASS_THROUGH 1
|
#define MIDI_PASS_THROUGH 1
|
||||||
#define MIDI_DONT_PLAY 0
|
#define MIDI_DONT_PLAY 0
|
||||||
|
|
||||||
#define MIDI_MaxVolume 255
|
#define MIDI_MaxVolume 255
|
||||||
|
|
||||||
extern char MIDI_PatchMap[ 128 ];
|
extern char MIDI_PatchMap[ 128 ];
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
void ( *NoteOff )( int channel, int key, int velocity );
|
void ( *NoteOff )( int channel, int key, int velocity );
|
||||||
void ( *NoteOn )( int channel, int key, int velocity );
|
void ( *NoteOn )( int channel, int key, int velocity );
|
||||||
void ( *PolyAftertouch )( int channel, int key, int pressure );
|
void ( *PolyAftertouch )( int channel, int key, int pressure );
|
||||||
void ( *ControlChange )( int channel, int number, int value );
|
void ( *ControlChange )( int channel, int number, int value );
|
||||||
void ( *ProgramChange )( int channel, int program );
|
void ( *ProgramChange )( int channel, int program );
|
||||||
void ( *ChannelAftertouch )( int channel, int pressure );
|
void ( *ChannelAftertouch )( int channel, int pressure );
|
||||||
void ( *PitchBend )( int channel, int lsb, int msb );
|
void ( *PitchBend )( int channel, int lsb, int msb );
|
||||||
void ( *ReleasePatches )( void );
|
void ( *ReleasePatches )( void );
|
||||||
void ( *LoadPatch )( int number );
|
void ( *LoadPatch )( int number );
|
||||||
void ( *SetVolume )( int volume );
|
void ( *SetVolume )( int volume );
|
||||||
int ( *GetVolume )( void );
|
int ( *GetVolume )( void );
|
||||||
void ( *FinishBuffer )( void );
|
void ( *FinishBuffer )( void );
|
||||||
} midifuncs;
|
} midifuncs;
|
||||||
|
|
||||||
void MIDI_RerouteMidiChannel( int channel, int ( *function )( int event, int c1, int c2 ) );
|
void MIDI_RerouteMidiChannel( int channel, int ( *function )( int event, int c1, int c2 ) );
|
||||||
int MIDI_AllNotesOff( void );
|
int MIDI_AllNotesOff( void );
|
||||||
void MIDI_SetUserChannelVolume( int channel, int volume );
|
void MIDI_SetUserChannelVolume( int channel, int volume );
|
||||||
void MIDI_ResetUserChannelVolume( void );
|
void MIDI_ResetUserChannelVolume( void );
|
||||||
int MIDI_Reset( void );
|
int MIDI_Reset( void );
|
||||||
int MIDI_SetVolume( int volume );
|
int MIDI_SetVolume( int volume );
|
||||||
int MIDI_GetVolume( void );
|
int MIDI_GetVolume( void );
|
||||||
void MIDI_SetMidiFuncs( midifuncs *funcs );
|
void MIDI_SetMidiFuncs( midifuncs *funcs );
|
||||||
void MIDI_SetContext( int context );
|
void MIDI_SetContext( int context );
|
||||||
int MIDI_GetContext( void );
|
int MIDI_GetContext( void );
|
||||||
void MIDI_SetLoopFlag( int loopflag );
|
void MIDI_SetLoopFlag( int loopflag );
|
||||||
void MIDI_ContinueSong( void );
|
void MIDI_ContinueSong( void );
|
||||||
void MIDI_PauseSong( void );
|
void MIDI_PauseSong( void );
|
||||||
int MIDI_SongPlaying( void );
|
int MIDI_SongPlaying( void );
|
||||||
void MIDI_StopSong( void );
|
void MIDI_StopSong( void );
|
||||||
int MIDI_PlaySong( unsigned char *song, int loopflag );
|
int MIDI_PlaySong( unsigned char *song, int loopflag );
|
||||||
void MIDI_SetTempo( int tempo );
|
void MIDI_SetTempo( int tempo );
|
||||||
int MIDI_GetTempo( void );
|
int MIDI_GetTempo( void );
|
||||||
void MIDI_SetSongTick( unsigned int PositionInTicks );
|
void MIDI_SetSongTick( unsigned int PositionInTicks );
|
||||||
void MIDI_SetSongTime( unsigned int milliseconds );
|
void MIDI_SetSongTime( unsigned int milliseconds );
|
||||||
void MIDI_SetSongPosition( int measure, int beat, int tick );
|
void MIDI_SetSongPosition( int measure, int beat, int tick );
|
||||||
void MIDI_GetSongPosition( songposition *pos );
|
void MIDI_GetSongPosition( songposition *pos );
|
||||||
void MIDI_GetSongLength( songposition *pos );
|
void MIDI_GetSongLength( songposition *pos );
|
||||||
void MIDI_LoadTimbres( void );
|
void MIDI_LoadTimbres( void );
|
||||||
void MIDI_UpdateMusic(void);
|
void MIDI_UpdateMusic(void);
|
||||||
void MIDI_SetDivision( int division );
|
void MIDI_SetDivision( int division );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,66 +1,66 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
||||||
*/
|
*/
|
||||||
#ifndef __MPU401_H
|
#ifndef __MPU401_H
|
||||||
#define __MPU401_H
|
#define __MPU401_H
|
||||||
|
|
||||||
#define MPU_DefaultAddress 0x330
|
#define MPU_DefaultAddress 0x330
|
||||||
|
|
||||||
enum MPU_ERRORS
|
enum MPU_ERRORS
|
||||||
{
|
{
|
||||||
MPU_Warning = -2,
|
MPU_Warning = -2,
|
||||||
MPU_Error = -1,
|
MPU_Error = -1,
|
||||||
MPU_Ok = 0
|
MPU_Ok = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MPU_NotFound -1
|
#define MPU_NotFound -1
|
||||||
#define MPU_UARTFailed -2
|
#define MPU_UARTFailed -2
|
||||||
|
|
||||||
#define MPU_ReadyToWrite 0x40
|
#define MPU_ReadyToWrite 0x40
|
||||||
#define MPU_ReadyToRead 0x80
|
#define MPU_ReadyToRead 0x80
|
||||||
#define MPU_CmdEnterUART 0x3f
|
#define MPU_CmdEnterUART 0x3f
|
||||||
#define MPU_CmdReset 0xff
|
#define MPU_CmdReset 0xff
|
||||||
#define MPU_CmdAcknowledge 0xfe
|
#define MPU_CmdAcknowledge 0xfe
|
||||||
|
|
||||||
extern int _MPU_CurrentBuffer;
|
extern int _MPU_CurrentBuffer;
|
||||||
extern int _MPU_BuffersWaiting;
|
extern int _MPU_BuffersWaiting;
|
||||||
|
|
||||||
void MPU_SendMidi( char *data, int count );
|
void MPU_SendMidi( char *data, int count );
|
||||||
void MPU_SendMidiImmediate( char *data, int count );
|
void MPU_SendMidiImmediate( char *data, int count );
|
||||||
int MPU_Reset( void );
|
int MPU_Reset( void );
|
||||||
int MPU_Init( int addr );
|
int MPU_Init( int addr );
|
||||||
void MPU_NoteOff( int channel, int key, int velocity );
|
void MPU_NoteOff( int channel, int key, int velocity );
|
||||||
void MPU_NoteOn( int channel, int key, int velocity );
|
void MPU_NoteOn( int channel, int key, int velocity );
|
||||||
void MPU_PolyAftertouch( int channel, int key, int pressure );
|
void MPU_PolyAftertouch( int channel, int key, int pressure );
|
||||||
void MPU_ControlChange( int channel, int number, int value );
|
void MPU_ControlChange( int channel, int number, int value );
|
||||||
void MPU_ProgramChange( int channel, int program );
|
void MPU_ProgramChange( int channel, int program );
|
||||||
void MPU_ChannelAftertouch( int channel, int pressure );
|
void MPU_ChannelAftertouch( int channel, int pressure );
|
||||||
void MPU_PitchBend( int channel, int lsb, int msb );
|
void MPU_PitchBend( int channel, int lsb, int msb );
|
||||||
|
|
||||||
void MPU_SetTempo(int tempo);
|
void MPU_SetTempo(int tempo);
|
||||||
void MPU_SetDivision(int division);
|
void MPU_SetDivision(int division);
|
||||||
void MPU_SetVolume(int volume);
|
void MPU_SetVolume(int volume);
|
||||||
int MPU_GetVolume(void);
|
int MPU_GetVolume(void);
|
||||||
|
|
||||||
void MPU_BeginPlayback( void );
|
void MPU_BeginPlayback( void );
|
||||||
void MPU_Pause(void);
|
void MPU_Pause(void);
|
||||||
void MPU_Unpause(void);
|
void MPU_Unpause(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -126,6 +126,19 @@ int MV_ErrorCode = MV_Ok;
|
||||||
MV_ErrorCode = (status);
|
MV_ErrorCode = (status);
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: ClearBuffer_DW
|
||||||
|
|
||||||
|
Function code relocated from _multivc.h due to linking issues.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void ClearBuffer_DW(void *ptr, int data, int length)
|
||||||
|
{
|
||||||
|
int *pptr = ptr;
|
||||||
|
for (; length>0; length--) *(pptr++) = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------
|
/*---------------------------------------------------------------------
|
||||||
Function: MV_ErrorString
|
Function: MV_ErrorString
|
||||||
|
|
||||||
|
|
|
@ -1,117 +1,117 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
||||||
*/
|
*/
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
file: MULTIVOC.H
|
file: MULTIVOC.H
|
||||||
|
|
||||||
author: James R. Dose
|
author: James R. Dose
|
||||||
date: December 20, 1993
|
date: December 20, 1993
|
||||||
|
|
||||||
Public header for MULTIVOC.C
|
Public header for MULTIVOC.C
|
||||||
|
|
||||||
(c) Copyright 1993 James R. Dose. All Rights Reserved.
|
(c) Copyright 1993 James R. Dose. All Rights Reserved.
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
#ifndef __MULTIVOC_H
|
#ifndef __MULTIVOC_H
|
||||||
#define __MULTIVOC_H
|
#define __MULTIVOC_H
|
||||||
|
|
||||||
#define MV_MinVoiceHandle 1
|
#define MV_MinVoiceHandle 1
|
||||||
|
|
||||||
extern int MV_ErrorCode;
|
extern int MV_ErrorCode;
|
||||||
|
|
||||||
enum MV_Errors
|
enum MV_Errors
|
||||||
{
|
{
|
||||||
MV_Warning = -2,
|
MV_Warning = -2,
|
||||||
MV_Error = -1,
|
MV_Error = -1,
|
||||||
MV_Ok = 0,
|
MV_Ok = 0,
|
||||||
MV_UnsupportedCard,
|
MV_UnsupportedCard,
|
||||||
MV_NotInstalled,
|
MV_NotInstalled,
|
||||||
MV_NoVoices,
|
MV_NoVoices,
|
||||||
MV_NoMem,
|
MV_NoMem,
|
||||||
MV_VoiceNotFound,
|
MV_VoiceNotFound,
|
||||||
MV_BlasterError,
|
MV_BlasterError,
|
||||||
MV_DPMI_Error,
|
MV_DPMI_Error,
|
||||||
MV_InvalidVOCFile,
|
MV_InvalidVOCFile,
|
||||||
MV_InvalidWAVFile,
|
MV_InvalidWAVFile,
|
||||||
MV_InvalidMixMode,
|
MV_InvalidMixMode,
|
||||||
MV_IrqFailure,
|
MV_IrqFailure,
|
||||||
MV_DMAFailure,
|
MV_DMAFailure,
|
||||||
MV_DMA16Failure,
|
MV_DMA16Failure,
|
||||||
MV_NullRecordFunction
|
MV_NullRecordFunction
|
||||||
};
|
};
|
||||||
|
|
||||||
char *MV_ErrorString( int ErrorNumber );
|
char *MV_ErrorString( int ErrorNumber );
|
||||||
int MV_VoicePlaying( int handle );
|
int MV_VoicePlaying( int handle );
|
||||||
int MV_KillAllVoices( void );
|
int MV_KillAllVoices( void );
|
||||||
int MV_Kill( int handle );
|
int MV_Kill( int handle );
|
||||||
int MV_VoicesPlaying( void );
|
int MV_VoicesPlaying( void );
|
||||||
int MV_VoiceAvailable( int priority );
|
int MV_VoiceAvailable( int priority );
|
||||||
int MV_SetPitch( int handle, int pitchoffset );
|
int MV_SetPitch( int handle, int pitchoffset );
|
||||||
int MV_SetFrequency( int handle, int frequency );
|
int MV_SetFrequency( int handle, int frequency );
|
||||||
int MV_EndLooping( int handle );
|
int MV_EndLooping( int handle );
|
||||||
int MV_SetPan( int handle, int vol, int left, int right );
|
int MV_SetPan( int handle, int vol, int left, int right );
|
||||||
int MV_Pan3D( int handle, int angle, int distance );
|
int MV_Pan3D( int handle, int angle, int distance );
|
||||||
void MV_SetReverb( int reverb );
|
void MV_SetReverb( int reverb );
|
||||||
void MV_SetFastReverb( int reverb );
|
void MV_SetFastReverb( int reverb );
|
||||||
int MV_GetMaxReverbDelay( void );
|
int MV_GetMaxReverbDelay( void );
|
||||||
int MV_GetReverbDelay( void );
|
int MV_GetReverbDelay( void );
|
||||||
void MV_SetReverbDelay( int delay );
|
void MV_SetReverbDelay( int delay );
|
||||||
int MV_SetMixMode( int numchannels, int samplebits );
|
int MV_SetMixMode( int numchannels, int samplebits );
|
||||||
int MV_StartPlayback( void );
|
int MV_StartPlayback( void );
|
||||||
void MV_StopPlayback( void );
|
void MV_StopPlayback( void );
|
||||||
int MV_StartRecording( int MixRate, void ( *function )( char *ptr, int length ) );
|
int MV_StartRecording( int MixRate, void ( *function )( char *ptr, int length ) );
|
||||||
void MV_StopRecord( void );
|
void MV_StopRecord( void );
|
||||||
int MV_StartDemandFeedPlayback( void ( *function )( char **ptr, unsigned int *length ),
|
int MV_StartDemandFeedPlayback( void ( *function )( char **ptr, unsigned int *length ),
|
||||||
int rate, int pitchoffset, int vol, int left, int right,
|
int rate, int pitchoffset, int vol, int left, int right,
|
||||||
int priority, unsigned int callbackval );
|
int priority, unsigned int callbackval );
|
||||||
int MV_PlayRaw( char *ptr, unsigned int length,
|
int MV_PlayRaw( char *ptr, unsigned int length,
|
||||||
unsigned rate, int pitchoffset, int vol, int left,
|
unsigned rate, int pitchoffset, int vol, int left,
|
||||||
int right, int priority, unsigned int callbackval );
|
int right, int priority, unsigned int callbackval );
|
||||||
int MV_PlayLoopedRaw( char *ptr, int length,
|
int MV_PlayLoopedRaw( char *ptr, int length,
|
||||||
char *loopstart, char *loopend, unsigned rate, int pitchoffset,
|
char *loopstart, char *loopend, unsigned rate, int pitchoffset,
|
||||||
int vol, int left, int right, int priority,
|
int vol, int left, int right, int priority,
|
||||||
unsigned int callbackval );
|
unsigned int callbackval );
|
||||||
int MV_PlayWAV( char *ptr, int pitchoffset, int vol, int left,
|
int MV_PlayWAV( char *ptr, int pitchoffset, int vol, int left,
|
||||||
int right, int priority, unsigned int callbackval );
|
int right, int priority, unsigned int callbackval );
|
||||||
int MV_PlayWAV3D( char *ptr, int pitchoffset, int angle, int distance,
|
int MV_PlayWAV3D( char *ptr, int pitchoffset, int angle, int distance,
|
||||||
int priority, unsigned int callbackval );
|
int priority, unsigned int callbackval );
|
||||||
int MV_PlayLoopedWAV( char *ptr, int loopstart, int loopend,
|
int MV_PlayLoopedWAV( char *ptr, int loopstart, int loopend,
|
||||||
int pitchoffset, int vol, int left, int right, int priority,
|
int pitchoffset, int vol, int left, int right, int priority,
|
||||||
unsigned int callbackval );
|
unsigned int callbackval );
|
||||||
int MV_PlayVOC3D( char *ptr, int pitchoffset, int angle, int distance,
|
int MV_PlayVOC3D( char *ptr, int pitchoffset, int angle, int distance,
|
||||||
int priority, unsigned int callbackval );
|
int priority, unsigned int callbackval );
|
||||||
int MV_PlayVOC( char *ptr, int pitchoffset, int vol, int left, int right,
|
int MV_PlayVOC( char *ptr, int pitchoffset, int vol, int left, int right,
|
||||||
int priority, unsigned int callbackval );
|
int priority, unsigned int callbackval );
|
||||||
int MV_PlayLoopedVOC( char *ptr, int loopstart, int loopend,
|
int MV_PlayLoopedVOC( char *ptr, int loopstart, int loopend,
|
||||||
int pitchoffset, int vol, int left, int right, int priority,
|
int pitchoffset, int vol, int left, int right, int priority,
|
||||||
unsigned int callbackval );
|
unsigned int callbackval );
|
||||||
void MV_CreateVolumeTable( int index, int volume, int MaxVolume );
|
void MV_CreateVolumeTable( int index, int volume, int MaxVolume );
|
||||||
void MV_SetVolume( int volume );
|
void MV_SetVolume( int volume );
|
||||||
int MV_GetVolume( void );
|
int MV_GetVolume( void );
|
||||||
void MV_SetCallBack( void ( *function )( unsigned int ) );
|
void MV_SetCallBack( void ( *function )( unsigned int ) );
|
||||||
void MV_SetReverseStereo( int setting );
|
void MV_SetReverseStereo( int setting );
|
||||||
int MV_GetReverseStereo( void );
|
int MV_GetReverseStereo( void );
|
||||||
int MV_Init( int soundcard, int MixRate, int Voices, int numchannels,
|
int MV_Init( int soundcard, int MixRate, int Voices, int numchannels,
|
||||||
int samplebits );
|
int samplebits );
|
||||||
int MV_Shutdown( void );
|
int MV_Shutdown( void );
|
||||||
|
|
||||||
void MV_Update(void);
|
void MV_Update(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,90 +1,90 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
||||||
*/
|
*/
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
module: MUSIC.H
|
module: MUSIC.H
|
||||||
|
|
||||||
author: James R. Dose
|
author: James R. Dose
|
||||||
date: March 25, 1994
|
date: March 25, 1994
|
||||||
|
|
||||||
Public header for MUSIC.C
|
Public header for MUSIC.C
|
||||||
|
|
||||||
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
#ifndef __MUSIC_H
|
#ifndef __MUSIC_H
|
||||||
#define __MUSIC_H
|
#define __MUSIC_H
|
||||||
|
|
||||||
extern int MUSIC_ErrorCode;
|
extern int MUSIC_ErrorCode;
|
||||||
|
|
||||||
enum MUSIC_ERRORS
|
enum MUSIC_ERRORS
|
||||||
{
|
{
|
||||||
MUSIC_Warning = -2,
|
MUSIC_Warning = -2,
|
||||||
MUSIC_Error = -1,
|
MUSIC_Error = -1,
|
||||||
MUSIC_Ok = 0,
|
MUSIC_Ok = 0,
|
||||||
MUSIC_ASSVersion,
|
MUSIC_ASSVersion,
|
||||||
MUSIC_SoundCardError,
|
MUSIC_SoundCardError,
|
||||||
MUSIC_MPU401Error,
|
MUSIC_MPU401Error,
|
||||||
MUSIC_InvalidCard,
|
MUSIC_InvalidCard,
|
||||||
MUSIC_MidiError,
|
MUSIC_MidiError,
|
||||||
MUSIC_TaskManError,
|
MUSIC_TaskManError,
|
||||||
MUSIC_DPMI_Error
|
MUSIC_DPMI_Error
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
unsigned int tickposition;
|
unsigned int tickposition;
|
||||||
unsigned int milliseconds;
|
unsigned int milliseconds;
|
||||||
unsigned int measure;
|
unsigned int measure;
|
||||||
unsigned int beat;
|
unsigned int beat;
|
||||||
unsigned int tick;
|
unsigned int tick;
|
||||||
} songposition;
|
} songposition;
|
||||||
|
|
||||||
#define MUSIC_LoopSong ( 1 == 1 )
|
#define MUSIC_LoopSong ( 1 == 1 )
|
||||||
#define MUSIC_PlayOnce ( !MUSIC_LoopSong )
|
#define MUSIC_PlayOnce ( !MUSIC_LoopSong )
|
||||||
|
|
||||||
char *MUSIC_ErrorString( int ErrorNumber );
|
char *MUSIC_ErrorString( int ErrorNumber );
|
||||||
int MUSIC_Init( int SoundCard, int Address );
|
int MUSIC_Init( int SoundCard, int Address );
|
||||||
int MUSIC_Shutdown( void );
|
int MUSIC_Shutdown( void );
|
||||||
void MUSIC_SetVolume( int volume );
|
void MUSIC_SetVolume( int volume );
|
||||||
void MUSIC_SetMidiChannelVolume( int channel, int volume );
|
void MUSIC_SetMidiChannelVolume( int channel, int volume );
|
||||||
void MUSIC_ResetMidiChannelVolumes( void );
|
void MUSIC_ResetMidiChannelVolumes( void );
|
||||||
int MUSIC_GetVolume( void );
|
int MUSIC_GetVolume( void );
|
||||||
void MUSIC_SetLoopFlag( int loopflag );
|
void MUSIC_SetLoopFlag( int loopflag );
|
||||||
int MUSIC_SongPlaying( void );
|
int MUSIC_SongPlaying( void );
|
||||||
void MUSIC_Continue( void );
|
void MUSIC_Continue( void );
|
||||||
void MUSIC_Pause( void );
|
void MUSIC_Pause( void );
|
||||||
int MUSIC_StopSong( void );
|
int MUSIC_StopSong( void );
|
||||||
int MUSIC_PlaySong( unsigned char *song, int loopflag );
|
int MUSIC_PlaySong( unsigned char *song, int loopflag );
|
||||||
void MUSIC_SetContext( int context );
|
void MUSIC_SetContext( int context );
|
||||||
int MUSIC_GetContext( void );
|
int MUSIC_GetContext( void );
|
||||||
void MUSIC_SetSongTick( unsigned int PositionInTicks );
|
void MUSIC_SetSongTick( unsigned int PositionInTicks );
|
||||||
void MUSIC_SetSongTime( unsigned int milliseconds );
|
void MUSIC_SetSongTime( unsigned int milliseconds );
|
||||||
void MUSIC_SetSongPosition( int measure, int beat, int tick );
|
void MUSIC_SetSongPosition( int measure, int beat, int tick );
|
||||||
void MUSIC_GetSongPosition( songposition *pos );
|
void MUSIC_GetSongPosition( songposition *pos );
|
||||||
void MUSIC_GetSongLength( songposition *pos );
|
void MUSIC_GetSongLength( songposition *pos );
|
||||||
int MUSIC_FadeVolume( int tovolume, int milliseconds );
|
int MUSIC_FadeVolume( int tovolume, int milliseconds );
|
||||||
int MUSIC_FadeActive( void );
|
int MUSIC_FadeActive( void );
|
||||||
void MUSIC_StopFade( void );
|
void MUSIC_StopFade( void );
|
||||||
void MUSIC_RerouteMidiChannel( int channel, int ( *function )( int event, int c1, int c2 ) );
|
void MUSIC_RerouteMidiChannel( int channel, int ( *function )( int event, int c1, int c2 ) );
|
||||||
void MUSIC_RegisterTimbreBank( unsigned char *timbres );
|
void MUSIC_RegisterTimbreBank( unsigned char *timbres );
|
||||||
void MUSIC_Update(void);
|
void MUSIC_Update(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
301
polymer/eduke32/source/jaudiolib/mv_mix-c.c
Normal file
301
polymer/eduke32/source/jaudiolib/mv_mix-c.c
Normal file
|
@ -0,0 +1,301 @@
|
||||||
|
#include "multivoc.h"
|
||||||
|
|
||||||
|
extern char *MV_MixDestination;
|
||||||
|
extern unsigned int MV_MixPosition;
|
||||||
|
|
||||||
|
extern char *MV_LeftVolume;
|
||||||
|
extern char *MV_RightVolume;
|
||||||
|
|
||||||
|
extern unsigned char *MV_HarshClipTable;
|
||||||
|
|
||||||
|
extern int MV_RightChannelOffset;
|
||||||
|
extern int MV_SampleSize;
|
||||||
|
|
||||||
|
void MV_Mix8BitMono(unsigned int position, unsigned int rate,
|
||||||
|
const char *start, unsigned int length)
|
||||||
|
{
|
||||||
|
const unsigned char *src;
|
||||||
|
unsigned char *dest;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
src = (const unsigned char *)start;
|
||||||
|
dest = (unsigned char *)MV_MixDestination;
|
||||||
|
|
||||||
|
for (i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
int s = src[position >> 16];
|
||||||
|
int d = *dest;
|
||||||
|
|
||||||
|
s = MV_LeftVolume[s * 2];
|
||||||
|
|
||||||
|
s += d;
|
||||||
|
|
||||||
|
s = MV_HarshClipTable[s + 0x80];
|
||||||
|
|
||||||
|
*dest = (s & 0xff);
|
||||||
|
|
||||||
|
position += rate;
|
||||||
|
dest += MV_SampleSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
MV_MixPosition = position;
|
||||||
|
MV_MixDestination = (char *)dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MV_Mix8BitStereo(unsigned int position,
|
||||||
|
unsigned int rate, const char *start, unsigned int length)
|
||||||
|
{
|
||||||
|
const unsigned char *src;
|
||||||
|
unsigned char *dest;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
src = (const unsigned char *)start;
|
||||||
|
dest = (unsigned char *)MV_MixDestination;
|
||||||
|
|
||||||
|
for (i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
int s = src[(position >> 16)];
|
||||||
|
int dl = dest[0];
|
||||||
|
int dr = dest[MV_RightChannelOffset];
|
||||||
|
|
||||||
|
dl += MV_LeftVolume[s * 2];
|
||||||
|
dr += MV_RightVolume[s * 2];
|
||||||
|
|
||||||
|
dl = MV_HarshClipTable[dl + 0x80];
|
||||||
|
dr = MV_HarshClipTable[dr + 0x80];
|
||||||
|
|
||||||
|
dest[0] = (dl & 0xff);
|
||||||
|
dest[MV_RightChannelOffset] = (dr & 0xff);
|
||||||
|
|
||||||
|
position += rate;
|
||||||
|
dest += MV_SampleSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
MV_MixPosition = position;
|
||||||
|
MV_MixDestination = (char *)dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MV_Mix16BitMono(unsigned int position,
|
||||||
|
unsigned int rate, const char *start, unsigned int length)
|
||||||
|
{
|
||||||
|
const short *MV_LeftVolumeS;
|
||||||
|
const unsigned char *src;
|
||||||
|
short *dest;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
src = (const unsigned char *)start;
|
||||||
|
dest = (short *)MV_MixDestination;
|
||||||
|
|
||||||
|
MV_LeftVolumeS = (const short *)MV_LeftVolume;
|
||||||
|
|
||||||
|
for (i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
int s = src[position >> 16];
|
||||||
|
int d = dest[0];
|
||||||
|
|
||||||
|
s = MV_LeftVolumeS[s];
|
||||||
|
|
||||||
|
s += d;
|
||||||
|
|
||||||
|
if (s < -32768) s = -32768;
|
||||||
|
if (s > 32767) s = 32767;
|
||||||
|
|
||||||
|
*dest = (short) s;
|
||||||
|
|
||||||
|
position += rate;
|
||||||
|
dest += MV_SampleSize/2;
|
||||||
|
}
|
||||||
|
|
||||||
|
MV_MixPosition = position;
|
||||||
|
MV_MixDestination = (char *)dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MV_Mix16BitStereo(unsigned int position,
|
||||||
|
unsigned int rate, const char *start, unsigned int length)
|
||||||
|
{
|
||||||
|
const short *MV_LeftVolumeS;
|
||||||
|
const short *MV_RightVolumeS;
|
||||||
|
const unsigned char *src;
|
||||||
|
short *dest;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
src = (unsigned char *)start;
|
||||||
|
dest = (short *)MV_MixDestination;
|
||||||
|
|
||||||
|
MV_LeftVolumeS = (const short *)MV_LeftVolume;
|
||||||
|
MV_RightVolumeS = (const short *)MV_RightVolume;
|
||||||
|
|
||||||
|
for (i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
int s = src[position >> 16];
|
||||||
|
int dl = dest[0];
|
||||||
|
int dr = dest[MV_RightChannelOffset/2];
|
||||||
|
|
||||||
|
dl += MV_LeftVolumeS[s];
|
||||||
|
dr += MV_RightVolumeS[s];
|
||||||
|
|
||||||
|
if (dl < -32768) dl = -32768;
|
||||||
|
if (dl > 32767) dl = 32767;
|
||||||
|
if (dr < -32768) dr = -32768;
|
||||||
|
if (dr > 32767) dr = 32767;
|
||||||
|
|
||||||
|
dest[0] = (short) dl;
|
||||||
|
dest[MV_RightChannelOffset/2] = (short) dr;
|
||||||
|
|
||||||
|
position += rate;
|
||||||
|
dest += MV_SampleSize/2;
|
||||||
|
}
|
||||||
|
|
||||||
|
MV_MixPosition = position;
|
||||||
|
MV_MixDestination = (char *)dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MV_Mix8BitMono16(unsigned int position, unsigned int rate,
|
||||||
|
const char *start, unsigned int length)
|
||||||
|
{
|
||||||
|
const char *src;
|
||||||
|
unsigned char *dest;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
src = (const char *)start + 1;
|
||||||
|
dest = (unsigned char *)MV_MixDestination;
|
||||||
|
|
||||||
|
for (i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
int s = (int)src[(position >> 16) * 2] + 0x80;
|
||||||
|
int d = *dest;
|
||||||
|
|
||||||
|
s = MV_LeftVolume[s * 2];
|
||||||
|
|
||||||
|
s += d;
|
||||||
|
|
||||||
|
s = MV_HarshClipTable[s + 0x80];
|
||||||
|
|
||||||
|
*dest = (s & 0xff);
|
||||||
|
|
||||||
|
position += rate;
|
||||||
|
dest += MV_SampleSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
MV_MixPosition = position;
|
||||||
|
MV_MixDestination = (char *)dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MV_Mix8BitStereo16(unsigned int position,
|
||||||
|
unsigned int rate, const char *start, unsigned int length)
|
||||||
|
{
|
||||||
|
const char *src;
|
||||||
|
unsigned char *dest;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
src = (const char *)start + 1;
|
||||||
|
dest = (unsigned char *)MV_MixDestination;
|
||||||
|
|
||||||
|
for (i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
int s = src[(position >> 16) * 2] + 0x80;
|
||||||
|
int dl = dest[0];
|
||||||
|
int dr = dest[MV_RightChannelOffset];
|
||||||
|
|
||||||
|
dl += MV_LeftVolume[s * 2];
|
||||||
|
dr += MV_RightVolume[s * 2];
|
||||||
|
|
||||||
|
dl = MV_HarshClipTable[dl + 0x80];
|
||||||
|
dr = MV_HarshClipTable[dr + 0x80];
|
||||||
|
|
||||||
|
dest[0] = (dl & 0xff);
|
||||||
|
dest[MV_RightChannelOffset] = (dr & 0xff);
|
||||||
|
|
||||||
|
position += rate;
|
||||||
|
dest += MV_SampleSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
MV_MixPosition = position;
|
||||||
|
MV_MixDestination = (char *)dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MV_Mix16BitMono16(unsigned int position,
|
||||||
|
unsigned int rate, const char *start, unsigned int length)
|
||||||
|
{
|
||||||
|
const short *MV_LeftVolumeS;
|
||||||
|
const unsigned char *src;
|
||||||
|
short *dest;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
src = (const unsigned char *)start;
|
||||||
|
dest = (short *)MV_MixDestination;
|
||||||
|
|
||||||
|
MV_LeftVolumeS = (const short *)MV_LeftVolume;
|
||||||
|
|
||||||
|
for (i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
int sl = src[(position >> 16) * 2 + 0];
|
||||||
|
int sh = src[(position >> 16) * 2 + 1] ^ 0x80;
|
||||||
|
|
||||||
|
int d = *dest;
|
||||||
|
|
||||||
|
sl = MV_LeftVolume[sl * 2 + 1];
|
||||||
|
sh = MV_LeftVolumeS[sh];
|
||||||
|
|
||||||
|
d = sl + sh + 0x80 + d;
|
||||||
|
|
||||||
|
if (d < -32768) d = -32768;
|
||||||
|
if (d > 32767) d = 32767;
|
||||||
|
|
||||||
|
*dest = (short) d;
|
||||||
|
|
||||||
|
position += rate;
|
||||||
|
dest += MV_SampleSize/2;
|
||||||
|
}
|
||||||
|
|
||||||
|
MV_MixPosition = position;
|
||||||
|
MV_MixDestination = (char *)dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MV_Mix16BitStereo16(unsigned int position,
|
||||||
|
unsigned int rate, const char *start, unsigned int length)
|
||||||
|
{
|
||||||
|
const short *MV_LeftVolumeS;
|
||||||
|
const short *MV_RightVolumeS;
|
||||||
|
const unsigned char *src;
|
||||||
|
short *dest;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
src = (const unsigned char *)start;
|
||||||
|
dest = (short *)MV_MixDestination;
|
||||||
|
|
||||||
|
MV_LeftVolumeS = (const short *)MV_LeftVolume;
|
||||||
|
MV_RightVolumeS = (const short *)MV_RightVolume;
|
||||||
|
|
||||||
|
for (i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
int sl = src[(position >> 16) * 2 + 0];
|
||||||
|
int sh = src[(position >> 16) * 2 + 1] ^ 0x80;
|
||||||
|
|
||||||
|
int dl = dest[0];
|
||||||
|
int dr = dest[MV_RightChannelOffset/2];
|
||||||
|
|
||||||
|
int sll = MV_LeftVolume[sl * 2 + 1];
|
||||||
|
int slh = MV_LeftVolumeS[sh];
|
||||||
|
|
||||||
|
int srl = MV_RightVolume[sl * 2 + 1];
|
||||||
|
int srh = MV_RightVolumeS[sh];
|
||||||
|
|
||||||
|
dl = sll + slh + 0x80 + dl;
|
||||||
|
dr = srl + srh + 0x80 + dr;
|
||||||
|
|
||||||
|
if (dl < -32768) dl = -32768;
|
||||||
|
if (dl > 32767) dl = 32767;
|
||||||
|
if (dr < -32768) dr = -32768;
|
||||||
|
if (dr > 32767) dr = 32767;
|
||||||
|
|
||||||
|
dest[0] = (short) dl;
|
||||||
|
dest[MV_RightChannelOffset/2] = (short) dr;
|
||||||
|
|
||||||
|
position += rate;
|
||||||
|
dest += MV_SampleSize/2;
|
||||||
|
}
|
||||||
|
|
||||||
|
MV_MixPosition = position;
|
||||||
|
MV_MixDestination = (char *)dest;
|
||||||
|
}
|
67
polymer/eduke32/source/jaudiolib/mvreverb-c.c
Normal file
67
polymer/eduke32/source/jaudiolib/mvreverb-c.c
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
#include "multivoc.h"
|
||||||
|
#include "_multivc.h"
|
||||||
|
|
||||||
|
void MV_16BitReverb(char *src, char *dest, VOLUME16 *volume, int count)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
short *pdest = (short *)dest;
|
||||||
|
|
||||||
|
for (i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
#if PLATFORM_BIGENDIAN
|
||||||
|
int sl = src[i*2+1];
|
||||||
|
int sh = src[i*2+0] ^ 0x80;
|
||||||
|
#else
|
||||||
|
int sl = src[i*2+0];
|
||||||
|
int sh = src[i*2+1] ^ 0x80;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
sl = (*volume)[sl] >> 8;
|
||||||
|
sh = (*volume)[sh];
|
||||||
|
|
||||||
|
pdest[i] = (short)(sl + sh + 0x80);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MV_8BitReverb(signed char *src, signed char *dest, VOLUME16 *volume, int count)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
unsigned char s = (unsigned char) src[i];
|
||||||
|
|
||||||
|
s = (*volume)[s] & 0xff;
|
||||||
|
|
||||||
|
dest[i] = (char)(s + 0x80);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MV_16BitReverbFast(char *src, char *dest, int count, int shift)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
short *pdest = (short *)dest;
|
||||||
|
const short *psrc = (const short *)src;
|
||||||
|
|
||||||
|
for (i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
pdest[i] = psrc[i] >> shift;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MV_8BitReverbFast(signed char *src, signed char *dest, int count, int shift)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
unsigned char sh = 0x80 - (0x80 >> shift);
|
||||||
|
|
||||||
|
for (i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
unsigned char a = ((unsigned char) src[i]) >> shift;
|
||||||
|
unsigned char c = (((unsigned char) src[i]) ^ 0x80) >> 7;
|
||||||
|
|
||||||
|
dest[i] = (signed char)(a + sh + c);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,44 +1,44 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
||||||
*/
|
*/
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
module: PITCH.H
|
module: PITCH.H
|
||||||
|
|
||||||
author: James R. Dose
|
author: James R. Dose
|
||||||
date: June 14, 1994
|
date: June 14, 1994
|
||||||
|
|
||||||
Public header for PITCH.C
|
Public header for PITCH.C
|
||||||
|
|
||||||
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
#ifndef __PITCH_H
|
#ifndef __PITCH_H
|
||||||
#define __PITCH_H
|
#define __PITCH_H
|
||||||
|
|
||||||
enum PITCH_ERRORS
|
enum PITCH_ERRORS
|
||||||
{
|
{
|
||||||
PITCH_Warning = -2,
|
PITCH_Warning = -2,
|
||||||
PITCH_Error = -1,
|
PITCH_Error = -1,
|
||||||
PITCH_Ok = 0,
|
PITCH_Ok = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
//void PITCH_Init( void );
|
//void PITCH_Init( void );
|
||||||
unsigned int PITCH_GetScale( int pitchoffset );
|
unsigned int PITCH_GetScale( int pitchoffset );
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,48 +1,48 @@
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
/*
|
/*
|
||||||
Duke Nukem Copyright (C) 1996, 2003 3D Realms Entertainment
|
Duke Nukem Copyright (C) 1996, 2003 3D Realms Entertainment
|
||||||
|
|
||||||
This file is part of Duke Nukem 3D version 1.5 - Atomic Edition
|
This file is part of Duke Nukem 3D version 1.5 - Atomic Edition
|
||||||
|
|
||||||
Duke Nukem 3D is free software; you can redistribute it and/or
|
Duke Nukem 3D is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
#ifndef __sdlout_h__
|
#ifndef __sdlout_h__
|
||||||
#define __sdlout_h__
|
#define __sdlout_h__
|
||||||
|
|
||||||
enum SDLSOUND_ERRORS {
|
enum SDLSOUND_ERRORS {
|
||||||
SDLSOUND_Warning = -2,
|
SDLSOUND_Warning = -2,
|
||||||
SDLSOUND_Error = -1,
|
SDLSOUND_Error = -1,
|
||||||
SDLSOUND_Ok = 0
|
SDLSOUND_Ok = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
extern int SDLSOUND_ErrorCode;
|
extern int SDLSOUND_ErrorCode;
|
||||||
|
|
||||||
char *SDLSOUND_ErrorString(int);
|
char *SDLSOUND_ErrorString(int);
|
||||||
|
|
||||||
int DisableInterrupts(void); // simulated using critical sections
|
int DisableInterrupts(void); // simulated using critical sections
|
||||||
int RestoreInterrupts(int);
|
int RestoreInterrupts(int);
|
||||||
|
|
||||||
int SDLSOUND_Init(int soundcard, int mixrate, int numchannels, int samplebits, int buffersize);
|
int SDLSOUND_Init(int soundcard, int mixrate, int numchannels, int samplebits, int buffersize);
|
||||||
int SDLSOUND_Shutdown(void);
|
int SDLSOUND_Shutdown(void);
|
||||||
|
|
||||||
int SDLSOUND_SetMixMode(int mode);
|
int SDLSOUND_SetMixMode(int mode);
|
||||||
int SDLSOUND_BeginBufferedPlayback(char *BufferStart, int (*CallBackFunc)(int), int buffersize, int numdivisions);
|
int SDLSOUND_BeginBufferedPlayback(char *BufferStart, int (*CallBackFunc)(int), int buffersize, int numdivisions);
|
||||||
int SDLSOUND_StopPlayback(void);
|
int SDLSOUND_StopPlayback(void);
|
||||||
|
|
||||||
#endif // __sdlout_h__
|
#endif // __sdlout_h__
|
||||||
|
|
||||||
|
|
|
@ -1,73 +1,73 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
||||||
*/
|
*/
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
module: STANDARD.H
|
module: STANDARD.H
|
||||||
|
|
||||||
author: James R. Dose
|
author: James R. Dose
|
||||||
date: May 25, 1994
|
date: May 25, 1994
|
||||||
|
|
||||||
Header containing standard definitions.
|
Header containing standard definitions.
|
||||||
|
|
||||||
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
#ifndef __STANDARD_H
|
#ifndef __STANDARD_H
|
||||||
#define __STANDARD_H
|
#define __STANDARD_H
|
||||||
|
|
||||||
typedef int boolean;
|
typedef int boolean;
|
||||||
typedef int errorcode;
|
typedef int errorcode;
|
||||||
|
|
||||||
#ifndef TRUE
|
#ifndef TRUE
|
||||||
#define TRUE ( 1 == 1 )
|
#define TRUE ( 1 == 1 )
|
||||||
#define FALSE ( !TRUE )
|
#define FALSE ( !TRUE )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum STANDARD_ERRORS
|
enum STANDARD_ERRORS
|
||||||
{
|
{
|
||||||
Warning = -2,
|
Warning = -2,
|
||||||
FatalError = -1,
|
FatalError = -1,
|
||||||
Success = 0
|
Success = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
#define BITSET( data, bit ) \
|
#define BITSET( data, bit ) \
|
||||||
( ( ( data ) & ( bit ) ) == ( bit ) )
|
( ( ( data ) & ( bit ) ) == ( bit ) )
|
||||||
|
|
||||||
#define ARRAY_LENGTH( array ) \
|
#define ARRAY_LENGTH( array ) \
|
||||||
( sizeof( array ) / sizeof( ( array )[ 0 ] ) )
|
( sizeof( array ) / sizeof( ( array )[ 0 ] ) )
|
||||||
|
|
||||||
#define WITHIN_BOUNDS( array, index ) \
|
#define WITHIN_BOUNDS( array, index ) \
|
||||||
( ( 0 <= ( index ) ) && ( ( index ) < ARRAY_LENGTH( array ) ) )
|
( ( 0 <= ( index ) ) && ( ( index ) < ARRAY_LENGTH( array ) ) )
|
||||||
|
|
||||||
#define FOREVER for( ; ; )
|
#define FOREVER for( ; ; )
|
||||||
|
|
||||||
#ifdef NDEBUG
|
#ifdef NDEBUG
|
||||||
#define DEBUGGING 0
|
#define DEBUGGING 0
|
||||||
#else
|
#else
|
||||||
#define DEBUGGING 1
|
#define DEBUGGING 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define DEBUG_CODE \
|
#define DEBUG_CODE \
|
||||||
if ( DEBUGGING == 0 ) \
|
if ( DEBUGGING == 0 ) \
|
||||||
{ \
|
{ \
|
||||||
} \
|
} \
|
||||||
else
|
else
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,56 +1,56 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
|
||||||
*/
|
*/
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
module: USRHOOKS.H
|
module: USRHOOKS.H
|
||||||
|
|
||||||
author: James R. Dose
|
author: James R. Dose
|
||||||
date: July 26, 1994
|
date: July 26, 1994
|
||||||
|
|
||||||
Public header file for USRHOOKS.C.
|
Public header file for USRHOOKS.C.
|
||||||
|
|
||||||
This module contains cover functions for operations the library
|
This module contains cover functions for operations the library
|
||||||
needs that may be restricted by the calling program. The function
|
needs that may be restricted by the calling program. The function
|
||||||
prototypes in this header should not be modified.
|
prototypes in this header should not be modified.
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
#ifndef __USRHOOKS_H
|
#ifndef __USRHOOKS_H
|
||||||
#define __USRHOOKS_H
|
#define __USRHOOKS_H
|
||||||
|
|
||||||
/*---------------------------------------------------------------------
|
/*---------------------------------------------------------------------
|
||||||
Error definitions
|
Error definitions
|
||||||
---------------------------------------------------------------------*/
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
enum USRHOOKS_Errors
|
enum USRHOOKS_Errors
|
||||||
{
|
{
|
||||||
USRHOOKS_Warning = -2,
|
USRHOOKS_Warning = -2,
|
||||||
USRHOOKS_Error = -1,
|
USRHOOKS_Error = -1,
|
||||||
USRHOOKS_Ok = 0
|
USRHOOKS_Ok = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------
|
/*---------------------------------------------------------------------
|
||||||
Function Prototypes
|
Function Prototypes
|
||||||
---------------------------------------------------------------------*/
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
int USRHOOKS_GetMem( void **ptr, unsigned int size );
|
int USRHOOKS_GetMem( void **ptr, unsigned int size );
|
||||||
int USRHOOKS_FreeMem( void *ptr );
|
int USRHOOKS_FreeMem( void *ptr );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue