123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440 |
- /* Header File for Actua Soccer Audio */
- #if !defined(__AUDIO_H)
- #define __AUDIO_H
- //************************************************************************************************
- // General
- //************************************************************************************************
- extern short int CrowdVolume;
- extern short int PitchVolume;
- extern short int CommentaryVolume;
- extern short int MusicVolume;
- extern short int MasterVolume;
- typedef struct tagmadfile
- {
- char name[16];
- unsigned long int offset;
- unsigned long int length;
- }madfile;
- enum // Team names
- {
- HOME_TEAM,
- AWAY_TEAM
- };
- struct memstatus
- {
- unsigned long int ext; // Running total for Extended memory allocations
- unsigned long int base; // Running total for Base memory allocations
- unsigned long int fail; // Running total for Failed memory allocations
- };
- // Structure for storing a sample in memory
- typedef struct tagmemsam
- {
- char *name; // Name of the samples disk file
- unsigned char *mem; // Pointer to the sample when in memory
- long int size; // Length of the sample when in memory
- unsigned short int flags;
- }memsam;
- // Memory Sample Flags
- #define MSF_LOADING 0x01 // Sample is currently loading (ie dont play)
- #define MSF_DONTKEEP 0x02 // Sample should not be kept in memory after use (ie free it)
- #define MSF_PLAYED 0x04 // Sample has already been played.
- //************************************************************************************************
- // Front End
- //************************************************************************************************
- #define MAX_FRONTEND_SAMPLES 4
- enum
- {
- FS_CROWD, // Crowd sample
- FS_PITCH, // Pitch Sample
- FS_COMMENT, // Commetary
- FS_CHEAT // Cheat Sample
- };
- //************************************************************************************************
- // Pitch
- //************************************************************************************************
- #define MAX_PITCH_SAMPLES 20
- enum
- {
- MS_AMBI2, // Low Crowd Ambience
- MS_AMBI4, // Low Crowd Ambience (Alternative)
- MS_AMBI6, // Low Crowd Ambience (Alternative)
- MS_AMBI8, // Low Crowd Ambience (Alternative)
- MS_GOAL, // Crowd Cheers for a goal
- MS_MISS, // Crowd Just Missed (Ooooh)
- MS_SAVE, // Great Save (Claps)
- MS_LAUGH, // Fluff (Laughs)
- MS_FOWL,
- MS_RESTLESS, // Crowd Cheers for a goal
- MS_LNGREF, // Long referee whistle
- MS_SHRTREF, // Short referee whistle
- MS_HRDKICK, // Hard Kick
- MS_KICK1, // Kick
- MS_PASS1, // Kick
- MS_BOOT, // Kick
- MS_BOUNCE, // Bounce
- MS_FALL, // Sliding Tackle
- MS_FULL, // Full time whistle
- MS_HALF // Half time whistle
- // MS_C_FOWL,
- // MS_C_MISS,
- // MS_CHANT0, // Random Chant for Variety
- // MS_CHANT1, // Random Chant for Variety
- // MS_CHANT2, // Random Chant for Variety
- // MS_CHANT3, // Random Chant for Variety
- // MS_CHANT4, // Random Chant for Variety
- // MS_CHANT5 // Random Chant for Variety
- };
- // Sound effects for on the pitch, The frequency will be altered slightly for variety
- enum
- {
- PS_NULL, // Diddly Squat
- PS_LONGWHISTLE, // Various Whistles
- PS_SHORTWHISTLE,
- PS_HALFTIMEWHISTLE,
- PS_FULLTIMEWHISTLE,
- PS_SOFTKICK, // Various Ball Kicks
- PS_MEDKICK,
- PS_HARDKICK,
- PS_SOFTHEAD, // Various Headers
- PS_HARDHEAD,
- PS_SOFTCATCH, // Various Handling of the Ball
- PS_HARDCATCH,
- PS_PUNCH,
- PS_SOFTBOUNCE, // Various Ball Bounces
- PS_HARDBOUNCE,
- PS_SOFTWOOD, // Various Ball Rebounds off the Woodwork
- PS_HARDWOOD,
- // PS_SOFTFOUL, // Various Fouls
- // PS_MEDFOUL,
- // PS_HARDFOUL,
- PS_SLIDING, // Sliding Tackle
- PS_SOFTGOAL, // Various Balls Hitting the back of the net
- PS_HARDGOAL
- };
- typedef struct tagpitchsam
- {
- memsam *info;
- short int amp; // Amplitude of Sample (volume 0x0 - 0x7fff)
- long int freq; // Frequency Divider (typically 0x8000 - half)
- unsigned short int flags;
- }pitchsam;
- #define PSF_THREED 0x01 // Use Pan and Volume from the call (3D Sound)
- #define PSF_APPROX 0x02 // Play the sample at approximately the correct freqeuncy for Variety
- //************************************************************************************************
- // Crowd
- //************************************************************************************************
- enum
- {
- CS_NULL, // Diddly Squat
- CS_AMBIENCE1, // Various Ambience levels
- CS_AMBIENCE2,
- CS_AMBIENCE3,
- CS_AMBIENCE4,
- CS_GOAL, // Triggerd cheers
- CS_RESTLESS,
- CS_MISS,
- CS_SAVE,
- CS_LAUGH,
- CS_FOWL
- // CS_CHANT0, // Crowd Chants
- // CS_CHANT1, // Crowd Chants
- // CS_CHANT2, // Crowd Chants
- // CS_CHANT3, // Crowd Chants
- // CS_CHANT4, // Crowd Chants
- // CS_CHANT5 // Crowd Chants
- };
- // Crowd noise definitions... (mood)
- enum
- {
- CN_OFF,
- CN_NORMAL,
- CN_PENSIVE,
- CN_ENCOURAGING,
- CN_EXCITED,
- CN_CELEBRATE,
- CN_BOO,
- CN_SAVE,
- CN_MISS,
- CN_LAUGH,
- CN_FOWL
- };
- struct crowdsam
- {
- long int mood; // Current mood of Crowd
- long int tranmood; // Mood in for transition to
- long int mainhandle; // Main sample handle of crowd sample
- long int mainvol; // Volume of main crowd sample
- long int maindelta; // Volume difference of main crowd sample
- long int mergehandle; // Sample handle of Merging Crowd Sample
- long int mergevol; // Volume of Merging Crowd Sample
- long int mergedelta; // Volume Difference of Merging Sample
- long int volmax; // Maximum volume crowd can reach
- long int pan; // Pan Position of Crowd Sample
- long int pandelta; // Pan Difference of Crowd Sample
- long int ticks; // Number of Ticks since last random event
- long int nextevent; // Number of Ticks to next event
- short int flags; // Flags to control the above
- };
- // Events currently happening in the Crowd Update
- #define CF_PAN 0x01
- #define CF_TRAN 0x02
- //************************************************************************************************
- // Commentary
- //************************************************************************************************
- #define MAX_REPEAT_BUFFER 64 // Amount of samples that must be played before a repeat
- #define MAX_REPEAT_ATTEMPTS 4 // Amount of attempts to find a sample that does not repeat
- #define MAX_LINKS 4 // Maximum amount of samples that can be load into link buffer
- #define MAX_COMMENTARY_CATEGORIES 35
- // Maximum Samples for each commentary category
- enum // Team Intonation
- {
- TI_WELCOME,
- TI_AND_NAME,
- TI_NAME
- };
- enum // Player Intonation
- {
- PI_OWN_HALF,
- PI_OPPONENTS_HALF,
- PI_SHOOTING
- };
- enum
- {
- CM_NULL,
- SP_CORNER, // Set piece
- SP_GOALKICK,
- SP_THROWIN,
- SP_LONGTHROWIN,
- SP_PENALTY,
- FU_FREEKICK, // Foul
- FU_WALL,
- FU_BADFOUL,
- FU_YELLOWCARD,
- FU_REDCARD,
- FU_INJURY,
- FU_DIVE,
- CP_LONG, // Completed pass
- CP_SHORT,
- CP_TARGET,
- CP_HEAD,
- CP_NICEMOVE,
- CP_SETPIECE,
- FP_LONG, // Failed Pass
- FP_SHORT,
- FP_LOOSE,
- GL_GENERIC, // Goal
- GL_DEFLECT,
- GL_HARDKICK,
- GL_HEADER,
- GL_KEEPER,
- GL_POST,
- GL_CURVE,
- GL_CURVEWALL,
- PM_CATCH, // Player missed goal attempt
- PM_BLOCK,
- PM_WIDE,
- PM_CLOSE,
- PM_POST,
- PM_CROSSBAR,
- MC_PREMATCH,
- OT_GOODPLAY,
- OT_POORPLAY,
- SU_ONFOR,
- SU_TEAM,
- SU_INJURED,
- TI_HALFTIME,
- TI_FULLTIME,
- CM_LINKBANK
- };
- #define MAX_SP_CORNER 12
- #define MAX_SP_GOALKICK 8
- #define MAX_SP_THROWIN 5
- #define MAX_SP_LONGTHROWIN 6
- #define MAX_SP_PENALTY 24
- #define MAX_FU_FREEKICK 9
- #define MAX_FU_WALL 9
- #define MAX_FU_BADFOUL 15
- #define MAX_FU_YELLOWCARD 8
- #define MAX_FU_REDCARD 9
- #define MAX_FU_INJURY 8
- #define MAX_FU_DIVE 8
- #define MAX_CP_LONG 6
- #define MAX_CP_SHORT 4
- #define MAX_CP_TARGET 20
- #define MAX_CP_HEAD 2
- #define MAX_CP_NICEMOVE 7
- #define MAX_CP_SETPIECE 13
- #define MAX_FP_LONG 3
- #define MAX_FP_SHORT 2
- #define MAX_FP_LOOSE 8
- #define MAX_GL_GENERIC 36
- #define MAX_GL_DEFLECT 8
- #define MAX_GL_HARDKICK 8
- #define MAX_GL_HEADER 15
- #define MAX_GL_KEEPER 9
- #define MAX_GL_POST 8
- #define MAX_GL_CURVE 7
- #define MAX_GL_CURVEWALL 4
- #define MAX_PM_CATCH 21
- #define MAX_PM_BLOCK 14
- #define MAX_PM_WIDE 21
- #define MAX_PM_CLOSE 16
- #define MAX_PM_POST 8
- #define MAX_PM_CROSSBAR 11
- #define MAX_MC_PREMATCH 19
- #define MAX_OT_GOODPLAY 26
- #define MAX_OT_POORPLAY 13
- #define MAX_SU_ONFOR 4
- #define MAX_SU_TEAM 5
- #define MAX_SU_INJURED 4
- struct commcat
- {
- char name[4];
- short int count;
- };
- typedef struct tagintonsam
- {
- memsam x; // x,y,z are types of Intonation
- memsam y;
- memsam z;
- }intonsam;
- typedef struct tagteamsam
- {
- int team; // Number of team in game data
- intonsam country;
- intonsam manager;
- intonsam players[11];
- }teamsam;
- //************************************************************************************************
- // External Functions
- //************************************************************************************************
- extern unsigned long int InitMatchAudio(unsigned long int seed);
- extern void UpdateVolumeLevels(void);
- extern long int StartMusic(char *name,int volume);
- extern void StopMusic(void);
- extern long int UpdateMusic(void);
- extern int CheckMusic(void);
- extern unsigned long int LoadPitchSamples(void);
- extern void FreePitchSamples(void);
- extern long int PlayPitchSample(int sam,short int amp,short int pan);
- extern void StartCrowd(int team);
- extern void StopAudio(void);
- extern long int PlayCrowdSample(int sam);
- extern void UpdateCrowd(int mood,int team);
- extern unsigned long int LoadTeamSamples(int team_num,int team);
- extern void FreeTeamSamples(int team);
- extern unsigned long int LoadFrontEndSamples(void);
- extern void FreeFrontEndSamples(void);
- extern unsigned long int LoadCommentarySamples(void);
- extern void FreeCommentarySamples(void);
- extern void UpdateCommentary(void);
- extern void PauseCommentary(void);
- extern void ResumeCommentary(void);
- extern long int PlayTeamSample(int player,int intonation);
- extern void PlayWelcomeMessage(void);
- extern void PlaySubstitutionMessage(int team,int player_off,int player_on,int injured);
- extern void PlayScoreSample(int home,int away);
- extern void PlayCommentaryMessage(int type);
- extern void PlayPossessionSample(int team);
- extern long int PlayFrontEndSample(int sam,int amp);
- //************************************************************************************************
- // Internal Functions
- //************************************************************************************************
- void FreeLinkBank(void);
- short int CheckCommentary(void);
- void CreateMusicFileName(char *name,char *dest);
- void CreateScoreFileName(char *home,char *away,char *mad,char *dest);
- void CreatePitchFileName(char *name,char *mad,char *dest);
- void CreatePlayerFileName(char *country,char *number,char *intonation,char *mad,char *dest);
- void CreateCommentaryFileName(char *category,char *number,char *mad,char *dest);
- void CreateFrontEndFileName(char *category,char *name,char *mad,char *dest);
- int LoadSample(char *mad,char *name,memsam *bank,struct memstatus *MemStatus);
- void FreeSample(memsam *bank);
- void LoadCommentarySample(char *category,int samples,memsam *bank);
- int MADFindFile(FILE *fp,char *name);
- int CheckRepeatBuffer(char *category,int num);
- void ShowMemoryUsage(memstatus MemStatus,char *title);
- void LogText(char *format,...);
- #endif /* __AUDIO_H */
|