diff options
Diffstat (limited to 'src/audio/sampman_miles.cpp')
-rw-r--r-- | src/audio/sampman_miles.cpp | 623 |
1 files changed, 382 insertions, 241 deletions
diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp index bf91a874..5e2b348b 100644 --- a/src/audio/sampman_miles.cpp +++ b/src/audio/sampman_miles.cpp @@ -28,7 +28,7 @@ char SampleBankDataFilename[] = "AUDIO\\SFX.RAW"; FILE *fpSampleDescHandle; FILE *fpSampleDataHandle; -bool bSampleBankLoaded [MAX_SFX_BANKS]; +bool8 bSampleBankLoaded [MAX_SFX_BANKS]; int32 nSampleBankDiscStartOffset [MAX_SFX_BANKS]; int32 nSampleBankSize [MAX_SFX_BANKS]; int32 nSampleBankMemoryStartAddress[MAX_SFX_BANKS]; @@ -60,14 +60,14 @@ char _mp3DirectoryPath[MAX_PATH]; HSTREAM mp3Stream [MAX_STREAMS]; int8 nStreamPan [MAX_STREAMS]; int8 nStreamVolume[MAX_STREAMS]; -uint8 nStreamLoopedFlag[MAX_STREAMS]; +bool8 nStreamLoopedFlag[MAX_STREAMS]; uint32 _CurMP3Index; int32 _CurMP3Pos; -bool _bIsMp3Active; +bool8 _bIsMp3Active; /////////////////////////////////////////////////////////////// -bool _bSampmanInitialised = false; +bool8 _bSampmanInitialised = FALSE; // // Miscellaneous globals / defines @@ -94,7 +94,7 @@ S32 speaker_type=0; U32 _maxSamples; float _fPrevEaxRatioDestination; -bool _usingMilesFast2D; +bool8 _usingMilesFast2D; float _fEffectsLevel; @@ -166,17 +166,17 @@ release_existing() } _fPrevEaxRatioDestination = 0.0f; - _usingMilesFast2D = false; + _usingMilesFast2D = FALSE; _fEffectsLevel = 0.0f; } -static bool +static bool8 set_new_provider(S32 index) { DWORD result; if ( curprovider == index ) - return true; + return TRUE; //close the already opened provider curprovider = index; @@ -203,7 +203,7 @@ set_new_provider(S32 index) release_existing(); - return false; + return FALSE; } else { @@ -234,7 +234,7 @@ set_new_provider(S32 index) AIL_set_3D_room_type(opened_provider, ENVIRONMENT_CAVE); if ( !strcmp(providers[index].name, "Miles Fast 2D Positional Audio") ) - _usingMilesFast2D = true; + _usingMilesFast2D = TRUE; } AIL_3D_provider_attribute(opened_provider, "Maximum supported samples", &_maxSamples); @@ -252,11 +252,11 @@ set_new_provider(S32 index) AIL_set_3D_sample_effects_level(opened_samples[i], 0.0f); } - return true; + return TRUE; } } - return false; + return FALSE; } U32 RadioHandlers[9]; @@ -323,6 +323,80 @@ cSampleManager::~cSampleManager(void) } +int gBankStartOffset[67]; + +void +SetUpDebugBanksInfo() +{ + gBankStartOffset[3] = SFX_FE_BACK; + gBankStartOffset[4] = SFX_CAR_ACCEL_1; + gBankStartOffset[5] = SFX_CAR_ACCEL_2; + gBankStartOffset[9] = SFX_CAR_ACCEL_6; + gBankStartOffset[10] = SFX_CAR_ACCEL_7; + gBankStartOffset[1] = SFX_EMPTY; + gBankStartOffset[11] = SFX_CAR_ACCEL_8; + gBankStartOffset[7] = SFX_CAR_ACCEL_4; + gBankStartOffset[15] = SFX_CAR_ACCEL_12; + gBankStartOffset[13] = SFX_CAR_ACCEL_10; + gBankStartOffset[16] = SFX_CAR_CHAINSAW_IDLE; + gBankStartOffset[0] = SFX_AIR_BRAKES; + gBankStartOffset[17] = SFX_RC_IDLE; + gBankStartOffset[6] = SFX_CAR_ACCEL_3; + gBankStartOffset[19] = SFX_CAR_ACCEL_16; + gBankStartOffset[12] = SFX_CAR_ACCEL_9; + gBankStartOffset[2] = SFX_AMBULAN_VOICE_1_VAN_1; + gBankStartOffset[21] = SFX_CAR_ACCEL_18; + gBankStartOffset[22] = SFX_CAR_ACCEL_19; + gBankStartOffset[8] = SFX_CAR_ACCEL_5; + gBankStartOffset[23] = SFX_CAR_ACCEL_20; + gBankStartOffset[14] = SFX_CAR_ACCEL_11; + gBankStartOffset[20] = SFX_CAR_ACCEL_17; + gBankStartOffset[18] = SFX_CAR_RC_HELI; + gBankStartOffset[25] = SFX_CAR_AFTER_ACCEL_21; + gBankStartOffset[26] = SFX_CAR_FINGER_OFF_ACCEL_21; + gBankStartOffset[27] = SFX_CAR_ACCEL_22; + gBankStartOffset[28] = SFX_CAR_AFTER_ACCEL_22; + gBankStartOffset[29] = SFX_CAR_FINGER_OFF_ACCEL_22; + gBankStartOffset[24] = SFX_CAR_ACCEL_21; + gBankStartOffset[30] = SFX_HELI_APACHE_1; + gBankStartOffset[31] = SFX_HELI_UNUSED_1; + gBankStartOffset[32] = SFX_HELI_UNUSED_2; + gBankStartOffset[33] = SFX_HELI_UNUSED_3; + gBankStartOffset[34] = SFX_HELI_UNUSED_4; + gBankStartOffset[35] = SFX_SEAPLANE_LOW; + gBankStartOffset[37] = SFX_PLANE_UNUSED_2; + gBankStartOffset[38] = SFX_PLANE_UNUSED_3; + gBankStartOffset[39] = SFX_PLANE_UNUSED_4; + gBankStartOffset[40] = SFX_BUILDINGS_BANK_ALARM; + gBankStartOffset[41] = SFX_BUILDING_SNORE; + gBankStartOffset[36] = SFX_PLANE_UNUSED_1; + gBankStartOffset[43] = SFX_BUILDING_BAR_2; + gBankStartOffset[44] = SFX_BUILDING_BAR_3; + gBankStartOffset[45] = SFX_BUILDING_BAR_4; + gBankStartOffset[46] = SFX_BUILDING_MAL1; + gBankStartOffset[47] = SFX_BUILDING_MAL2; + gBankStartOffset[42] = SFX_BUILDING_BAR_1; + gBankStartOffset[49] = SFX_BUILDING_STR1; + gBankStartOffset[50] = SFX_BUILDING_STR2; + gBankStartOffset[51] = SFX_BUILDING_STR3; + gBankStartOffset[52] = SFX_BUILDING_CHURCH; + gBankStartOffset[53] = SFX_BUILDING_FAN_1; + gBankStartOffset[48] = SFX_BUILDING_MAL3; + gBankStartOffset[55] = SFX_BUILDING_INSECTS_1; + gBankStartOffset[56] = SFX_BUILDING_INSECTS_2; + gBankStartOffset[54] = SFX_BUILDING_FAN_2; + gBankStartOffset[57] = SFX_CLUB_1; + gBankStartOffset[58] = SFX_CLUB_2; + gBankStartOffset[59] = SFX_CLUB_3; + gBankStartOffset[60] = SFX_CLUB_4; + gBankStartOffset[61] = SFX_FOOTSTEP_GRASS_1; + gBankStartOffset[62] = SFX_FOOTSTEP_GRAVEL_1; + gBankStartOffset[63] = SFX_FOOTSTEP_WOOD_1; + gBankStartOffset[64] = SFX_FOOTSTEP_METAL_1; + gBankStartOffset[65] = SFX_FOOTSTEP_WATER_1; + gBankStartOffset[66] = SFX_FOOTSTEP_SAND_1; +} + void cSampleManager::SetSpeakerConfig(int32 which) { @@ -459,7 +533,7 @@ cSampleManager::AutoDetect3DProviders() return -1; } -static bool +static bool8 _ResolveLink(char const *path, char *out) { IShellLink* psl; @@ -495,7 +569,7 @@ _ResolveLink(char const *path, char *out) ppf->Release(); psl->Release(); #endif - return true; + return TRUE; } } } @@ -505,15 +579,15 @@ _ResolveLink(char const *path, char *out) psl->Release(); } - return false; + return FALSE; } static void _FindMP3s(void) { tMP3Entry *pList; - bool bShortcut; - bool bInitFirstEntry; + bool8 bShortcut; + bool8 bInitFirstEntry; HANDLE hFind; char path[MAX_PATH]; char filepath[MAX_PATH*2]; @@ -565,10 +639,10 @@ _FindMP3s(void) OutputDebugString(filepath); } - bShortcut = true; + bShortcut = TRUE; } else - bShortcut = false; + bShortcut = FALSE; } mp3Stream[0] = AIL_open_stream(DIG, filepath, 0); @@ -608,7 +682,7 @@ _FindMP3s(void) { _pMP3List->pLinkPath = NULL; } - bInitFirstEntry = false; + bInitFirstEntry = FALSE; } else { @@ -616,10 +690,10 @@ _FindMP3s(void) OutputDebugString(filepath); - bInitFirstEntry = true; + bInitFirstEntry = TRUE; } - while ( true ) + while ( TRUE ) { if ( !FindNextFile(hFind, &fd) ) break; @@ -643,11 +717,11 @@ _FindMP3s(void) OutputDebugString(filepath); } - bShortcut = true; + bShortcut = TRUE; } else { - bShortcut = false; + bShortcut = FALSE; if ( filepathlen > MAX_PATH ) { @@ -690,7 +764,7 @@ _FindMP3s(void) pList = _pMP3List; - bInitFirstEntry = false; + bInitFirstEntry = FALSE; } else { @@ -718,11 +792,11 @@ _FindMP3s(void) OutputDebugString(filepath); } - bShortcut = true; + bShortcut = TRUE; } else { - bShortcut = false; + bShortcut = FALSE; } } @@ -834,7 +908,7 @@ _GetMP3EntryByIndex(uint32 idx) return NULL; } -static inline bool +static inline bool8 _GetMP3PosFromStreamPos(uint32 *pPosition, tMP3Entry **pEntry) { _CurMP3Index = 0; @@ -847,7 +921,7 @@ _GetMP3PosFromStreamPos(uint32 *pPosition, tMP3Entry **pEntry) *pPosition -= (*pEntry)->nTrackStreamPos; _CurMP3Pos = *pPosition; - return true; + return TRUE; } _CurMP3Index++; @@ -858,10 +932,10 @@ _GetMP3PosFromStreamPos(uint32 *pPosition, tMP3Entry **pEntry) _CurMP3Pos = 0; _CurMP3Index = 0; - return false; + return FALSE; } -bool +bool8 cSampleManager::IsMP3RadioChannelAvailable(void) { return nNumMP3s != 0; @@ -890,13 +964,13 @@ cSampleManager::ReacquireDigitalHandle(void) } } -bool +bool8 cSampleManager::Initialise(void) { TRACE("start"); if ( _bSampmanInitialised ) - return true; + return TRUE; { for ( int32 i = 0; i < TOTAL_AUDIO_SAMPLES; i++ ) @@ -922,7 +996,7 @@ cSampleManager::Initialise(void) curprovider = -1; prevprovider = -1; - _usingMilesFast2D = false; + _usingMilesFast2D = FALSE; usingEAX=0; usingEAX3=0; @@ -947,7 +1021,7 @@ cSampleManager::Initialise(void) for ( int32 i = 0; i < MAX_SFX_BANKS; i++ ) { - bSampleBankLoaded[i] = false; + bSampleBankLoaded[i] = FALSE; nSampleBankDiscStartOffset[i] = 0; nSampleBankSize[i] = 0; nSampleBankMemoryStartAddress[i] = 0; @@ -988,24 +1062,24 @@ cSampleManager::Initialise(void) #ifdef AUDIO_CACHE TRACE("cache"); FILE *cacheFile = fcaseopen("audio\\sound.cache", "rb"); - bool CreateCache = false; + bool8 CreateCache = FALSE; if (cacheFile) { fread(nStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); fclose(cacheFile); }else - CreateCache = true; + CreateCache = TRUE; #endif char filepath[MAX_PATH]; - bool bFileNotFound; + bool8 bFileNotFound; S32 tatalms; TRACE("cdrom"); { - m_bInitialised = false; + m_bInitialised = FALSE; - while (true) + while (TRUE) { // Find path of WAVs (originally in HDD) @@ -1026,9 +1100,18 @@ cSampleManager::Initialise(void) { strcpy(filepath, m_szCDRomRootPath); strcat(filepath, StreamedNameTable[0]); + strcat(filepath, ".VB"); FILE *f = fopen(filepath, "rb"); + if ( !f ) + { + strcpy(filepath, m_szCDRomRootPath); + strcat(filepath, StreamedNameTable[0]); + strcat(filepath, ".MP3"); + f = fopen(filepath, "rb"); + } + if ( f ) { fclose(f); @@ -1046,7 +1129,7 @@ cSampleManager::Initialise(void) { OutputDebugString(AIL_last_error()); Terminate(); - return false; + return FALSE; } add_providers(); @@ -1076,9 +1159,9 @@ cSampleManager::Initialise(void) } else { - m_bInitialised = false; + m_bInitialised = FALSE; Terminate(); - return false; + return FALSE; } } */ @@ -1103,8 +1186,16 @@ cSampleManager::Initialise(void) { strcpy(filepath, m_MP3FilesPath); strcat(filepath, StreamedNameTable[i]); + strcat(filepath, ".VB"); mp3Stream[0] = AIL_open_stream(DIG, filepath, 0); + if (!mp3Stream[0]) + { + strcpy(filepath, m_MP3FilesPath); + strcat(filepath, StreamedNameTable[i]); + strcat(filepath, ".MP3"); + mp3Stream[0] = AIL_open_stream(DIG, filepath, 0); + } if (mp3Stream[0]) { @@ -1113,7 +1204,7 @@ cSampleManager::Initialise(void) AIL_close_stream(mp3Stream[0]); mp3Stream[0] = NULL; - bFileNotFound = false; + bFileNotFound = FALSE; #ifdef AUDIO_CACHE if (!CreateCache) break; @@ -1124,7 +1215,7 @@ cSampleManager::Initialise(void) } else { - bFileNotFound = true; + bFileNotFound = TRUE; break; } } @@ -1159,11 +1250,11 @@ cSampleManager::Initialise(void) mp3Stream[0] = NULL; nStreamLength[i] = tatalms; - bFileNotFound = false; + bFileNotFound = FALSE; } else { - bFileNotFound = true; + bFileNotFound = TRUE; break; } }*/ @@ -1178,11 +1269,11 @@ cSampleManager::Initialise(void) if ( FrontEndMenuManager.m_bQuitGameNoCD ) { Terminate(); - return false; + return FALSE; } continue; #else - m_bInitialised = true; + m_bInitialised = TRUE; #endif } @@ -1201,14 +1292,14 @@ cSampleManager::Initialise(void) if ( !InitialiseSampleBanks() ) { Terminate(); - return false; + return FALSE; } nSampleBankMemoryStartAddress[SFX_BANK_0] = (int32)AIL_mem_alloc_lock(nSampleBankSize[SFX_BANK_0]); if ( !nSampleBankMemoryStartAddress[SFX_BANK_0] ) { Terminate(); - return false; + return FALSE; } nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = (int32)AIL_mem_alloc_lock(PED_BLOCKSIZE*MAX_PEDSFX); @@ -1237,7 +1328,7 @@ cSampleManager::Initialise(void) TRACE("providerset"); { - _bSampmanInitialised = true; + _bSampmanInitialised = TRUE; U32 n = 0; @@ -1254,7 +1345,7 @@ cSampleManager::Initialise(void) if ( n == m_nNumberOfProviders ) { Terminate(); - return false; + return FALSE; } } @@ -1279,13 +1370,13 @@ cSampleManager::Initialise(void) time_t t = time(NULL); tm *localtm; - bool bUseRandomTable; + bool8 bUseRandomTable; if ( t == -1 ) - bUseRandomTable = true; + bUseRandomTable = TRUE; else { - bUseRandomTable = false; + bUseRandomTable = FALSE; localtm = localtime(&t); } @@ -1317,12 +1408,12 @@ cSampleManager::Initialise(void) else _CurMP3Pos = 0; - _bIsMp3Active = false; + _bIsMp3Active = FALSE; } TRACE("end"); - return true; + return TRUE; } void @@ -1371,10 +1462,10 @@ cSampleManager::Terminate(void) AIL_shutdown(); - _bSampmanInitialised = false; + _bSampmanInitialised = FALSE; } -bool +bool8 cSampleManager::CheckForAnAudioFileOnCD(void) { #if !defined(NO_CDCHECK) // TODO: check steam, probably GTAVC_STEAM_PATCH needs to be added @@ -1392,17 +1483,17 @@ cSampleManager::CheckForAnAudioFileOnCD(void) DMAudio.SetEffectsMasterVolume(FrontEndMenuManager.m_PrefsSfxVolume); DMAudio.Service(); - return true; + return TRUE; } DMAudio.SetMusicMasterVolume(0); DMAudio.SetEffectsMasterVolume(0); DMAudio.Service(); - return false; + return FALSE; #else - return true; + return TRUE; #endif // #if !defined(NO_CDCHECK) } @@ -1484,48 +1575,48 @@ cSampleManager::SetMusicFadeVolume(uint8 nVolume) } void -cSampleManager::SetMonoMode(uint8 nMode) +cSampleManager::SetMonoMode(bool8 nMode) { m_nMonoMode = nMode; } -bool +bool8 cSampleManager::LoadSampleBank(uint8 nBank) { if ( CTimer::GetIsCodePaused() ) - return false; + return FALSE; if ( MusicManager.IsInitialised() && MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE && nBank != SFX_BANK_0 ) { - return false; + return FALSE; } if ( fseek(fpSampleDataHandle, nSampleBankDiscStartOffset[nBank], SEEK_SET) != 0 ) - return false; + return FALSE; if ( fread((void *)nSampleBankMemoryStartAddress[nBank], 1, nSampleBankSize[nBank],fpSampleDataHandle) != nSampleBankSize[nBank] ) - return false; + return FALSE; - bSampleBankLoaded[nBank] = true; + bSampleBankLoaded[nBank] = TRUE; - return true; + return TRUE; } void cSampleManager::UnloadSampleBank(uint8 nBank) { - bSampleBankLoaded[nBank] = false; + bSampleBankLoaded[nBank] = FALSE; } -bool +bool8 cSampleManager::IsSampleBankLoaded(uint8 nBank) { return bSampleBankLoaded[nBank]; } -bool +bool8 cSampleManager::IsPedCommentLoaded(uint32 nComment) { int8 slot; @@ -1538,10 +1629,10 @@ cSampleManager::IsPedCommentLoaded(uint32 nComment) slot += ARRAY_SIZE(nPedSlotSfx); #endif if ( nComment == nPedSlotSfx[slot] ) - return true; + return TRUE; } - return false; + return FALSE; } int32 @@ -1563,11 +1654,11 @@ cSampleManager::_GetPedCommentSlot(uint32 nComment) return -1; } -bool +bool8 cSampleManager::LoadPedComment(uint32 nComment) { if ( CTimer::GetIsCodePaused() ) - return false; + return FALSE; // no talking peds during cutsenes or the game end if ( MusicManager.IsInitialised() ) @@ -1576,7 +1667,7 @@ cSampleManager::LoadPedComment(uint32 nComment) { case MUSICMODE_CUTSCENE: { - return false; + return FALSE; break; } @@ -1584,10 +1675,10 @@ cSampleManager::LoadPedComment(uint32 nComment) } if ( fseek(fpSampleDataHandle, m_aSamples[nComment].nOffset, SEEK_SET) != 0 ) - return false; + return FALSE; if ( fread((void *)(nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE*nCurrentPedSlot), 1, m_aSamples[nComment].nSize, fpSampleDataHandle) != m_aSamples[nComment].nSize ) - return false; + return FALSE; nPedSlotSfxAddr[nCurrentPedSlot] = nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE*nCurrentPedSlot; nPedSlotSfx [nCurrentPedSlot] = nComment; @@ -1595,7 +1686,7 @@ cSampleManager::LoadPedComment(uint32 nComment) if ( ++nCurrentPedSlot >= MAX_PEDSFX ) nCurrentPedSlot = 0; - return true; + return TRUE; } int32 @@ -1634,14 +1725,14 @@ cSampleManager::GetSampleLength(uint32 nSample) return m_aSamples[nSample].nSize >> 1; } -bool +bool8 cSampleManager::UpdateReverb(void) { if ( !usingEAX ) - return false; + return FALSE; if ( AudioManager.GetFrameCounter() & 15 ) - return false; + return FALSE; float fRatio = 0.0f; @@ -1662,7 +1753,7 @@ cSampleManager::UpdateReverb(void) fRatio = clamp(fRatio, 0.0f, 0.6f); if ( fRatio == _fPrevEaxRatioDestination ) - return false; + return FALSE; if ( usingEAX3 ) { @@ -1684,26 +1775,28 @@ cSampleManager::UpdateReverb(void) _fPrevEaxRatioDestination = fRatio; - return true; + return TRUE; } void -cSampleManager::SetChannelReverbFlag(uint32 nChannel, uint8 nReverbFlag) +cSampleManager::SetChannelReverbFlag(uint32 nChannel, bool8 nReverbFlag) { - bool b2d = false; + bool8 b2d = FALSE; switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: + case CHANNEL_MISSION_AUDIO_1: + case CHANNEL_MISSION_AUDIO_2: { - b2d = true; + b2d = TRUE; break; } } if ( usingEAX ) { - if ( nReverbFlag != 0 ) + if ( nReverbFlag != FALSE ) { if ( !b2d ) AIL_set_3D_sample_effects_level(opened_samples[nChannel], _fEffectsLevel); @@ -1716,16 +1809,18 @@ cSampleManager::SetChannelReverbFlag(uint32 nChannel, uint8 nReverbFlag) } } -bool +bool8 cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) { - bool b2d = false; + bool8 b2d = FALSE; switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: + case CHANNEL_MISSION_AUDIO_1: + case CHANNEL_MISSION_AUDIO_2: { - b2d = true; + b2d = TRUE; break; } } @@ -1735,14 +1830,14 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) if ( nSfx < SAMPLEBANK_MAX ) { if ( !IsSampleBankLoaded(nBank) ) - return false; + return FALSE; addr = nSampleBankMemoryStartAddress[nBank] + m_aSamples[nSfx].nOffset - m_aSamples[BankStartOffset[nBank]].nOffset; } else { if ( !IsPedCommentLoaded(nSfx) ) - return false; + return FALSE; int32 slot = _GetPedCommentSlot(nSfx); @@ -1754,10 +1849,10 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) if ( opened_2dsamples[nChannel - MAXCHANNELS] ) { AIL_set_sample_address(opened_2dsamples[nChannel - MAXCHANNELS], (void *)addr, m_aSamples[nSfx].nSize); - return true; + return TRUE; } else - return false; + return FALSE; } else { @@ -1773,10 +1868,10 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) if ( AIL_set_3D_sample_info(opened_samples[nChannel], &info) == 0 ) { OutputDebugString(AIL_last_error()); - return false; + return FALSE; } - return true; + return TRUE; } } @@ -1823,7 +1918,9 @@ cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume) switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: + case CHANNEL_MISSION_AUDIO_1: + case CHANNEL_MISSION_AUDIO_2: { nChannelVolume[nChannel] = vol; @@ -1850,7 +1947,9 @@ cSampleManager::SetChannelPan(uint32 nChannel, uint32 nPan) { switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: + case CHANNEL_MISSION_AUDIO_1: + case CHANNEL_MISSION_AUDIO_2: { #ifndef FIX_BUGS if ( opened_samples[nChannel - MAXCHANNELS] ) // BUG @@ -1867,13 +1966,15 @@ cSampleManager::SetChannelPan(uint32 nChannel, uint32 nPan) void cSampleManager::SetChannelFrequency(uint32 nChannel, uint32 nFreq) { - bool b2d = false; + bool8 b2d = FALSE; switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: + case CHANNEL_MISSION_AUDIO_1: + case CHANNEL_MISSION_AUDIO_2: { - b2d = true; + b2d = TRUE; break; } } @@ -1893,13 +1994,15 @@ cSampleManager::SetChannelFrequency(uint32 nChannel, uint32 nFreq) void cSampleManager::SetChannelLoopPoints(uint32 nChannel, uint32 nLoopStart, int32 nLoopEnd) { - bool b2d = false; + bool8 b2d = FALSE; switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: + case CHANNEL_MISSION_AUDIO_1: + case CHANNEL_MISSION_AUDIO_2: { - b2d = true; + b2d = TRUE; break; } } @@ -1919,13 +2022,15 @@ cSampleManager::SetChannelLoopPoints(uint32 nChannel, uint32 nLoopStart, int32 n void cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount) { - bool b2d = false; + bool8 b2d = FALSE; switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: + case CHANNEL_MISSION_AUDIO_1: + case CHANNEL_MISSION_AUDIO_2: { - b2d = true; + b2d = TRUE; break; } } @@ -1942,16 +2047,18 @@ cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount) } } -bool +bool8 cSampleManager::GetChannelUsedFlag(uint32 nChannel) { - bool b2d = false; + bool8 b2d = FALSE; switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: + case CHANNEL_MISSION_AUDIO_1: + case CHANNEL_MISSION_AUDIO_2: { - b2d = true; + b2d = TRUE; break; } } @@ -1961,14 +2068,14 @@ cSampleManager::GetChannelUsedFlag(uint32 nChannel) if ( opened_2dsamples[nChannel - MAXCHANNELS] ) return AIL_sample_status(opened_2dsamples[nChannel - MAXCHANNELS]) == SMP_PLAYING; else - return false; + return FALSE; } else { if ( opened_samples[nChannel] ) return AIL_3D_sample_status(opened_samples[nChannel]) == SMP_PLAYING; else - return false; + return FALSE; } } @@ -1976,13 +2083,15 @@ cSampleManager::GetChannelUsedFlag(uint32 nChannel) void cSampleManager::StartChannel(uint32 nChannel) { - bool b2d = false; + bool8 b2d = FALSE; switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: + case CHANNEL_MISSION_AUDIO_1: + case CHANNEL_MISSION_AUDIO_2: { - b2d = true; + b2d = TRUE; break; } } @@ -2002,13 +2111,15 @@ cSampleManager::StartChannel(uint32 nChannel) void cSampleManager::StopChannel(uint32 nChannel) { - bool b2d = false; + bool8 b2d = FALSE; switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: + case CHANNEL_MISSION_AUDIO_1: + case CHANNEL_MISSION_AUDIO_2: { - b2d = true; + b2d = TRUE; break; } } @@ -2045,8 +2156,17 @@ cSampleManager::PreloadStreamedFile(uint32 nFile, uint8 nStream) strcpy(filepath, m_MP3FilesPath); strcat(filepath, StreamedNameTable[nFile]); + strcat(filepath, ".VB"); mp3Stream[nStream] = AIL_open_stream(DIG, filepath, 0); + + if(!mp3Stream[nStream]) + { + strcpy(filepath, m_MP3FilesPath); + strcat(filepath, StreamedNameTable[nFile]); + strcat(filepath, ".MP3"); + mp3Stream[nStream] = AIL_open_stream(DIG, filepath, 0); + } if ( mp3Stream[nStream] ) { @@ -2060,12 +2180,12 @@ cSampleManager::PreloadStreamedFile(uint32 nFile, uint8 nStream) } void -cSampleManager::PauseStream(uint8 nPauseFlag, uint8 nStream) +cSampleManager::PauseStream(bool8 nPauseFlag, uint8 nStream) { if ( m_bInitialised ) { if ( mp3Stream[nStream] ) - AIL_pause_stream(mp3Stream[nStream], nPauseFlag != 0); + AIL_pause_stream(mp3Stream[nStream], nPauseFlag != FALSE); } } @@ -2079,146 +2199,165 @@ cSampleManager::StartPreloadedStreamedFile(uint8 nStream) } } -bool +bool8 cSampleManager::StartStreamedFile(uint32 nFile, uint32 nPos, uint8 nStream) { + int i = 0; uint32 position = nPos; char filename[MAX_PATH]; - if ( m_bInitialised && nFile < TOTAL_STREAMED_SOUNDS ) + if ( !m_bInitialised || nFile >= TOTAL_STREAMED_SOUNDS ) + return FALSE; + + if ( mp3Stream[nStream] ) { - if ( mp3Stream[nStream] ) - { - AIL_pause_stream(mp3Stream[nStream], 1); - AIL_close_stream(mp3Stream[nStream]); - } - - if ( nFile == STREAMED_SOUND_RADIO_MP3_PLAYER ) + AIL_pause_stream(mp3Stream[nStream], 1); + AIL_close_stream(mp3Stream[nStream]); + } + if ( nFile == STREAMED_SOUND_RADIO_MP3_PLAYER ) + { + do { - uint32 i = 0; - do { - if(i != 0 || _bIsMp3Active) { - if(++_CurMP3Index >= nNumMP3s) _CurMP3Index = 0; - - _CurMP3Pos = 0; - - tMP3Entry *mp3 = _GetMP3EntryByIndex(_CurMP3Index); - - if(mp3) { - mp3 = _pMP3List; - if(mp3 == NULL) { - _bIsMp3Active = false; - nFile = 0; - strcpy(filename, m_MiscomPath); - strcat(filename, StreamedNameTable[nFile]); - - mp3Stream[nStream] = - AIL_open_stream(DIG, filename, 0); - if(mp3Stream[nStream]) { - AIL_set_stream_loop_count( - mp3Stream[nStream], nStreamLoopedFlag[nStream] ? 0 : 1); - nStreamLoopedFlag[nStream] = true; - AIL_set_stream_ms_position( - mp3Stream[nStream], position); - AIL_pause_stream(mp3Stream[nStream], - 0); - return true; - } - - return false; - } + // Just switched to MP3 player + if ( !_bIsMp3Active && i == 0 ) + { + if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] ) + position = 0; + tMP3Entry *e = _pMP3List; + + // Try to continue from previous song, if already started + if(!_GetMP3PosFromStreamPos(&position, &e) && !e) { + nFile = 0; + strcpy(filename, m_MiscomPath); + strcat(filename, StreamedNameTable[nFile]); + strcat(filename, ".VB"); + mp3Stream[nStream] = + AIL_open_stream(DIG, filename, 0); + + if(!mp3Stream[nStream]) + { + strcpy(filename, m_MP3FilesPath); + strcat(filename, StreamedNameTable[nFile]); + strcat(filename, ".MP3"); + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); } + if(mp3Stream[nStream]) { + AIL_set_stream_loop_count(mp3Stream[nStream], nStreamLoopedFlag[nStream] ? 0 : 1); + nStreamLoopedFlag[nStream] = TRUE; + AIL_set_stream_ms_position(mp3Stream[nStream], position); + AIL_pause_stream(mp3Stream[nStream], 0); + return TRUE; + } + return FALSE; - if(mp3->pLinkPath != NULL) - mp3Stream[nStream] = - AIL_open_stream(DIG, mp3->pLinkPath, 0); + } else { + if ( e->pLinkPath != NULL ) + mp3Stream[nStream] = AIL_open_stream(DIG, e->pLinkPath, 0); else { strcpy(filename, _mp3DirectoryPath); - strcat(filename, mp3->aFilename); - - mp3Stream[nStream] = - AIL_open_stream(DIG, filename, 0); + strcat(filename, e->aFilename); + + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); } - - if(mp3Stream[nStream]) { + + if ( mp3Stream[nStream] ) { AIL_set_stream_loop_count(mp3Stream[nStream], 1); - AIL_set_stream_ms_position(mp3Stream[nStream], 0); + AIL_set_stream_ms_position(mp3Stream[nStream], position); AIL_pause_stream(mp3Stream[nStream], 0); - return true; + + _bIsMp3Active = TRUE; + + return TRUE; } - - _bIsMp3Active = false; - continue; + // fall through, start playing from another song } - if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] ) - position = 0; - - tMP3Entry *e; - if ( !_GetMP3PosFromStreamPos(&position, &e) ) + } else { + if(++_CurMP3Index >= nNumMP3s) _CurMP3Index = 0; + + _CurMP3Pos = 0; + + tMP3Entry *mp3 = _GetMP3EntryByIndex(_CurMP3Index); + if ( !mp3 ) { - if ( e == NULL ) + mp3 = _pMP3List; + if ( !_pMP3List ) { nFile = 0; + _bIsMp3Active = 0; strcpy(filename, m_MiscomPath); strcat(filename, StreamedNameTable[nFile]); + strcat(filename, ".VB"); + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + if(!mp3Stream[nStream]) + { + strcpy(filename, m_MiscomPath); + strcat(filename, StreamedNameTable[nFile]); + strcat(filename, ".MP3"); + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + } if(mp3Stream[nStream]) { - AIL_set_stream_loop_count(mp3Stream[nStream], nStreamLoopedFlag[nStream] ? 0 : 1); - nStreamLoopedFlag[nStream] = true; - AIL_set_stream_ms_position(mp3Stream[nStream], position); - AIL_pause_stream(mp3Stream[nStream], 0); - return true; + AIL_set_stream_loop_count( + mp3Stream[nStream], nStreamLoopedFlag[nStream] ? 0 : 1); + nStreamLoopedFlag[nStream] = TRUE; + AIL_set_stream_ms_position( + mp3Stream[nStream], position); + AIL_pause_stream(mp3Stream[nStream], + 0); + return TRUE; } - - return false; + return FALSE; } } - - if ( e->pLinkPath != NULL ) - mp3Stream[nStream] = AIL_open_stream(DIG, e->pLinkPath, 0); - else - { + if(mp3->pLinkPath != NULL) + mp3Stream[nStream] = AIL_open_stream(DIG, mp3->pLinkPath, 0); + else { strcpy(filename, _mp3DirectoryPath); - strcat(filename, e->aFilename); - - mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + strcat(filename, mp3->aFilename); + + mp3Stream[nStream] = + AIL_open_stream(DIG, filename, 0); } - - if ( mp3Stream[nStream] ) - { + + if(mp3Stream[nStream]) { AIL_set_stream_loop_count(mp3Stream[nStream], 1); - AIL_set_stream_ms_position(mp3Stream[nStream], position); + AIL_set_stream_ms_position(mp3Stream[nStream], 0); AIL_pause_stream(mp3Stream[nStream], 0); - - _bIsMp3Active = true; - - return true; +#ifdef FIX_BUGS + _bIsMp3Active = TRUE; +#endif + return TRUE; } - - _bIsMp3Active = false; - - } while(++i < nNumMP3s); - position = 0; - nFile = 0; + } + _bIsMp3Active = 0; } - + while ( ++i < nNumMP3s ); + position = 0; + nFile = 0; + } + strcpy(filename, m_MiscomPath); + strcat(filename, StreamedNameTable[nFile]); + strcat(filename, ".VB"); + + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + if( !mp3Stream[nStream] ) + { strcpy(filename, m_MiscomPath); strcat(filename, StreamedNameTable[nFile]); - + strcat(filename, ".MP3"); mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); - if ( mp3Stream[nStream] ) - { - AIL_set_stream_loop_count(mp3Stream[nStream], nStreamLoopedFlag[nStream] ? 0 : 1); - nStreamLoopedFlag[nStream] = true; - AIL_set_stream_ms_position(mp3Stream[nStream], position); - AIL_pause_stream(mp3Stream[nStream], 0); - return true; - } } - - return false; + if ( mp3Stream[nStream] ) + { + AIL_set_stream_loop_count(mp3Stream[nStream], nStreamLoopedFlag[nStream] ? 0 : 1); + nStreamLoopedFlag[nStream] = TRUE; + AIL_set_stream_ms_position(mp3Stream[nStream], position); + AIL_pause_stream(mp3Stream[nStream], 0); + return TRUE; + } + return FALSE; } void @@ -2234,7 +2373,7 @@ cSampleManager::StopStreamedFile(uint8 nStream) mp3Stream[nStream] = NULL; if ( nStream == 0 ) - _bIsMp3Active = false; + _bIsMp3Active = FALSE; } } } @@ -2272,7 +2411,7 @@ cSampleManager::GetStreamedFilePosition(uint8 nStream) } void -cSampleManager::SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, uint8 nEffectFlag, uint8 nStream) +cSampleManager::SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, bool8 nEffectFlag, uint8 nStream) { uint8 vol = nVolume; float boostMult = 0.0f; @@ -2313,7 +2452,7 @@ cSampleManager::GetStreamedFileLength(uint8 nStream) return 0; } -bool +bool8 cSampleManager::IsStreamPlaying(uint8 nStream) { if ( m_bInitialised ) @@ -2321,23 +2460,25 @@ cSampleManager::IsStreamPlaying(uint8 nStream) if ( mp3Stream[nStream] ) { if ( AIL_stream_status(mp3Stream[nStream]) == SMP_PLAYING ) - return true; + return TRUE; else - return false; + return FALSE; } } - return false; + return FALSE; } -bool +bool8 cSampleManager::InitialiseSampleBanks(void) { + SetUpDebugBanksInfo(); + int32 nBank = SFX_BANK_0; fpSampleDescHandle = fopen(SampleBankDescFilename, "rb"); if ( fpSampleDescHandle == NULL ) - return false; + return FALSE; fpSampleDataHandle = fopen(SampleBankDataFilename, "rb"); if ( fpSampleDataHandle == NULL ) @@ -2345,7 +2486,7 @@ cSampleManager::InitialiseSampleBanks(void) fclose(fpSampleDescHandle); fpSampleDescHandle = NULL; - return false; + return FALSE; } fseek(fpSampleDataHandle, 0, SEEK_END); @@ -2356,7 +2497,7 @@ cSampleManager::InitialiseSampleBanks(void) fclose(fpSampleDescHandle); fpSampleDescHandle = NULL; - + for ( int32 i = 0; i < TOTAL_AUDIO_SAMPLES; i++ ) { #ifdef FIX_BUGS @@ -2372,12 +2513,12 @@ cSampleManager::InitialiseSampleBanks(void) nSampleBankSize[SFX_BANK_0] = nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS] - nSampleBankDiscStartOffset[SFX_BANK_0]; nSampleBankSize[SFX_BANK_PED_COMMENTS] = _nSampleDataEndOffset - nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS]; - return true; + return TRUE; } void -cSampleManager::SetStreamedFileLoopFlag(uint8 nLoopFlag, uint8 nChannel) +cSampleManager::SetStreamedFileLoopFlag(bool8 nLoopFlag, uint8 nChannel) { if (m_bInitialised) nStreamLoopedFlag[nChannel] = nLoopFlag; |