diff --git a/src/animation/AnimBlendAssocGroup.cpp b/src/animation/AnimBlendAssocGroup.cpp index f56e5f20..e1368ea9 100644 --- a/src/animation/AnimBlendAssocGroup.cpp +++ b/src/animation/AnimBlendAssocGroup.cpp @@ -175,6 +175,7 @@ CAnimBlendAssocGroup::CreateAssociations(const char *name) } // Create associations from hierarchies for a given clump +//__declspec(noinline) // 4 debug void CAnimBlendAssocGroup::CreateAssociations(const char *blockName, RpClump *clump, const char **animNames, int numAssocs) { @@ -183,6 +184,11 @@ CAnimBlendAssocGroup::CreateAssociations(const char *blockName, RpClump *clump, DestroyAssociations(); animBlock = CAnimManager::GetAnimationBlock(blockName); + //assert(animBlock); + //if(!animBlock) { + //animBlock = CAnimManager::GetAnimationBlock(blockName); // 4 debug research need name + //} + debug("Loading anim \"%s\"\n", blockName); assocList = new CAnimBlendAssociation[numAssocs]; numAssociations = 0; diff --git a/src/animation/AnimBlendAssociation.cpp b/src/animation/AnimBlendAssociation.cpp index a65f0fc5..4575fffd 100644 --- a/src/animation/AnimBlendAssociation.cpp +++ b/src/animation/AnimBlendAssociation.cpp @@ -59,11 +59,16 @@ CAnimBlendAssociation::FreeAnimBlendNodeArray(void) RwFreeAlign(nodes); } +//__declspec(noinline) // 4 dbg void CAnimBlendAssociation::Init(RpClump *clump, CAnimBlendHierarchy *hier) { int i; AnimBlendFrameData *frame; + assert(hier); + /*if(!hier) { + debug("\n\n\n"); + }*/ CAnimBlendClumpData *clumpData = *RPANIMBLENDCLUMPDATA(clump); numNodes = clumpData->numFrames; diff --git a/src/animation/AnimManager.cpp b/src/animation/AnimManager.cpp index d0763ef7..640cb430 100644 --- a/src/animation/AnimManager.cpp +++ b/src/animation/AnimManager.cpp @@ -80,7 +80,9 @@ AnimAssocDesc aStdAnimDescs[] = { { ANIM_STD_DETONATE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, { ANIM_STD_PUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, { ANIM_STD_PARTIALPUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_STD_KICKGROUND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + + { ANIM_STD_KICKGROUND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, //-------------------------------------------------------- + { ANIM_STD_THROW_UNDER, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, { ANIM_STD_FIGHT_SHUFFLE_B, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, { ANIM_STD_JACKEDCAR_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, @@ -1331,9 +1333,15 @@ CAnimManager::CreateAnimAssociation(AssocGroupId groupId, AnimationId animId) return ms_aAnimAssocGroups[groupId].CopyAnimation(animId); } +//__declspec(noinline) CAnimBlendAssociation* CAnimManager::GetAnimAssociation(AssocGroupId groupId, AnimationId animId) { + /*if(groupId == AssocGroupId::ASSOCGRP_KNIFE) { + // animId = AnimationId::ANIM_BIKE_HIT; + debug("\n\n"); + } + auto b = ms_aAnimAssocGroups[groupId].assocList[animId - ms_aAnimAssocGroups[groupId].firstAnimId];*/ return ms_aAnimAssocGroups[groupId].GetAnimation(animId); } @@ -1383,9 +1391,42 @@ CAnimManager::AddAnimationAndSync(RpClump *clump, CAnimBlendAssociation *syncani return anim; } +__declspec(noinline) +//MAZAHAKA_ANIM_STUFF +//#include "PlayerInfo.h" // find func +//#include "PlayerPed.h" CAnimBlendAssociation* CAnimManager::BlendAnimation(RpClump *clump, AssocGroupId groupId, AnimationId animId, float delta) { + // reVC My dumper Mazahaka anims player + /*if(FindPlayerPed() && FindPlayerPed()->GetClump() == clump) // only player anims debug + { + debug("anim groupId: %d\n", groupId); + debug("anim animId: %d\n\n", animId); + }*/ + + /*if(groupId == AssocGroupId::ASSOCGRP_KNIFE) + { + if(!animId) { animId = (AnimationId)205; } // debug from vice + assert(animId); + //animId = AnimationId::ANIM_BIKE_HIT; + debug("\n\n"); + }*/ + + /*if(animId == 60) { // kickground + debug("groupid: %d\n", groupId); + debug("\n\n"); + //if(animId == 60) { animId = (AnimationId)65; } // reVC + if(animId == 60) { groupId = (AssocGroupId)0; } // reVC kick 0:65 fix 0:60 + } else if(groupId == 7 || groupId == 9) { + debug("groupId: %d\n", groupId); + debug("animId: %d\n", animId); + }*/ + // crash kick+katana + // groupId 7,9 + // animId 60 + + int removePrevAnim = 0; CAnimBlendClumpData *clumpData = *RPANIMBLENDCLUMPDATA(clump); CAnimBlendAssociation *anim = GetAnimAssociation(groupId, animId); @@ -1430,6 +1471,7 @@ CAnimManager::BlendAnimation(RpClump *clump, AssocGroupId groupId, AnimationId a return found; } +//__declspec(noinline) // 4 debug breakpoints void CAnimManager::LoadAnimFiles(void) { @@ -1438,6 +1480,7 @@ CAnimManager::LoadAnimFiles(void) CreateAnimAssocGroups(); } +//__declspec(noinline) // 4 debug breakpoints void CAnimManager::CreateAnimAssocGroups(void) { @@ -1449,6 +1492,7 @@ CAnimManager::CreateAnimAssocGroups(void) continue; CBaseModelInfo *mi = CModelInfo::GetModelInfo(ms_aAnimAssocDefinitions[i].modelIndex); + //if(!mi) { continue; } // mazahaka RpClump *clump = (RpClump*)mi->CreateInstance(); RpAnimBlendClumpInit(clump); CAnimBlendAssocGroup *group = &ms_aAnimAssocGroups[i]; @@ -1465,6 +1509,7 @@ CAnimManager::CreateAnimAssocGroups(void) } } +//__declspec(noinline) // 4 debug breakpoints void CAnimManager::LoadAnimFile(const char *filename) { @@ -1475,6 +1520,8 @@ CAnimManager::LoadAnimFile(const char *filename) RwStreamClose(stream, nil); } +//#include +//__declspec(noinline) // 4 debug breakpoints void CAnimManager::LoadAnimFile(RwStream *stream, bool compress, char (*uncompressedAnims)[32]) { @@ -1511,7 +1558,8 @@ CAnimManager::LoadAnimFile(RwStream *stream, bool compress, char (*uncompressedA animBlock->isLoaded = true; int animIndex = animBlock->firstIndex; - for(j = 0; j < animBlock->numAnims; j++){ + for(j = 0; j < animBlock->numAnims; j++) + { assert(animIndex < ARRAY_SIZE(ms_aAnimations)); CAnimBlendHierarchy *hier = &ms_aAnimations[animIndex++]; @@ -1520,6 +1568,13 @@ CAnimManager::LoadAnimFile(RwStream *stream, bool compress, char (*uncompressedA ROUNDSIZE(name.size); RwStreamRead(stream, buf, name.size); hier->SetName(buf); + //continue; + + //------MAZAHAKA----DUMP-----ANIMS + //std::cout << hier->name << "\n"; + //-------------------------------- + + #ifdef ANIM_COMPRESSION bool compressHier = compress; @@ -1551,7 +1606,8 @@ CAnimManager::LoadAnimFile(RwStream *stream, bool compress, char (*uncompressedA for(k = 0; k < hier->numSequences; k++, seq++){ // Each node has a name and key frames RwStreamRead(stream, &cpan, sizeof(IfpHeader)); - ROUNDSIZE(dgan.size); + //ROUNDSIZE(dgan.size); // bug? + ROUNDSIZE(cpan.size); RwStreamRead(stream, &anim, sizeof(IfpHeader)); ROUNDSIZE(anim.size); RwStreamRead(stream, buf, anim.size); diff --git a/src/animation/AnimationId.h b/src/animation/AnimationId.h index 5a8f7289..05b67036 100644 --- a/src/animation/AnimationId.h +++ b/src/animation/AnimationId.h @@ -2,7 +2,8 @@ enum AnimationId { - ANIM_STD_WALK, + ANIM_STD_NOT_INITED_SLOT_4_FISTFITE = 0, + ANIM_STD_WALK = 0, ANIM_STD_RUN, ANIM_STD_RUNFAST, ANIM_STD_IDLE, @@ -62,6 +63,7 @@ enum AnimationId ANIM_STD_DETONATE, ANIM_STD_PUNCH, ANIM_STD_PARTIALPUNCH, + ANIM_STD_KICKGROUND, ANIM_STD_THROW_UNDER, diff --git a/src/animation/RpAnimBlend.cpp b/src/animation/RpAnimBlend.cpp index 9a11d8bb..12714428 100644 --- a/src/animation/RpAnimBlend.cpp +++ b/src/animation/RpAnimBlend.cpp @@ -181,6 +181,7 @@ RpAnimBlendClumpInitSkinned(RpClump *clump) void RpAnimBlendClumpInitNotSkinned(RpClump *clump) { + //if(!clump) { return; } int numFrames = 0; CAnimBlendClumpData *clumpData; RwFrame *root; diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 90c3fb04..4468a616 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -11928,7 +11928,7 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot) SampleManager.SetChannelVolume(slot + CHANNEL_MISSION_AUDIO_1, Vol); SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, pan); } - SampleManager.StartChannel(slot + CHANNEL_MISSION_AUDIO_1); + SampleManager.StartChannel(slot + CHANNEL_MISSION_AUDIO_1); // mazahakabug crash mono to stereo } m_nMissionAudioPlayStatus[slot] = PLAY_STATUS_PLAYING; nCheckPlayingDelay[slot] = 30; diff --git a/src/audio/MusicManager.cpp b/src/audio/MusicManager.cpp index 623b6ad5..5c549122 100644 --- a/src/audio/MusicManager.cpp +++ b/src/audio/MusicManager.cpp @@ -75,7 +75,7 @@ cMusicManager::ResetMusicAfterReload() float afRadioTime[NUM_RADIOS]; m_bRadioSetByScript = FALSE; - m_nRadioStationScript = WILDSTYLE; + m_nRadioStationScript = FLASH_FM; m_nRadioPosition = -1; m_nAnnouncement = NO_TRACK; m_bAnnouncementInProgress = FALSE; @@ -183,7 +183,7 @@ cMusicManager::Initialise() m_bResetTimers = FALSE; m_nResetTime = 0; m_bRadioSetByScript = FALSE; - m_nRadioStationScript = WILDSTYLE; + m_nRadioStationScript = FLASH_FM; m_nRadioPosition = -1; m_nRadioInCar = NO_TRACK; gRetuneCounter = 0; @@ -258,7 +258,7 @@ cMusicManager::PlayerInCar() uint32 cMusicManager::GetRadioInCar(void) { - if (!m_bIsInitialised) return WILDSTYLE; + if (!m_bIsInitialised) return FLASH_FM; if (PlayerInCar()) { CVehicle* veh = AudioManager.FindVehicleOfPlayer(); if (veh != nil) { @@ -315,7 +315,7 @@ cMusicManager::ChangeMusicMode(uint8 mode) #ifdef PAUSE_RADIO_IN_FRONTEND // rewind those streams we weren't listening right now - for( uint32 i = STREAMED_SOUND_RADIO_HEAD; i < STREAMED_SOUND_CUTSCENE_BIKER; i++ ) { + for( uint32 i = STREAMED_SOUND_RADIO_FLASH_FM; i < STREAMED_SOUND_CUTSCENE_BIKER; i++ ) { m_aTracks[i].m_nPosition = GetTrackStartPos(i); m_aTracks[i].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); } @@ -427,7 +427,7 @@ cMusicManager::ServiceFrontEndMode() #ifdef PAUSE_RADIO_IN_FRONTEND // pause radio - for( uint32 i = STREAMED_SOUND_RADIO_HEAD; i < STREAMED_SOUND_CUTSCENE_BIKER; i++ ) + for( uint32 i = STREAMED_SOUND_RADIO_FLASH_FM; i < STREAMED_SOUND_CUTSCENE_BIKER; i++ ) m_aTracks[i].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); #endif @@ -595,7 +595,7 @@ cMusicManager::ServiceGameMode() if (!m_bRadioStreamReady) { if(vehicle == nil) { - m_nFrontendTrack = STREAMED_SOUND_RADIO_LCFR; // huh? + m_nFrontendTrack = STREAMED_SOUND_RADIO_EMOTION; // huh? return; } if(m_bRadioSetByScript) { @@ -1311,23 +1311,38 @@ cMusicManager::DisplayRadioStationName() #endif wchar* string = nil; switch (track) { - case WILDSTYLE: string = TheText.Get("FEA_FM0"); break; - case FLASH_FM: string = TheText.Get("FEA_FM1"); break; - case KCHAT: string = TheText.Get("FEA_FM2"); break; - case FEVER: string = TheText.Get("FEA_FM3"); break; - case V_ROCK: string = TheText.Get("FEA_FM4"); break; - case VCPR: string = TheText.Get("FEA_FM5"); break; - case RADIO_ESPANTOSO: string = TheText.Get("FEA_FM6"); break; - case EMOTION: string = TheText.Get("FEA_FM7"); break; - case WAVE: string = TheText.Get("FEA_FM8"); break; - case 9: string = TheText.Get("FEA_FM9"); break; - case 10: + case FLASH_FM: string = TheText.Get("FEA_FM0"); break; + case V_ROCK: string = TheText.Get("FEA_FM1"); break; + case PARADISE: string = TheText.Get("FEA_FM2"); break; + case VCPR: string = TheText.Get("FEA_FM3"); break; + case VCFL: string = TheText.Get("FEA_FM4"); break; + case WAVE: string = TheText.Get("FEA_FM5"); break; + case FRESH: string = TheText.Get("FEA_FM6"); break; + case ESPANTOSO: string = TheText.Get("FEA_FM7"); break; + case EMOTION: string = TheText.Get("FEA_FM8"); break; + case USERTRACK: if (!SampleManager.IsMP3RadioChannelAvailable()) return; string = TheText.Get("FEA_MP3"); break; - default: string = TheText.Get("FEA_NON"); break; + case RADIO_OFF: { + // Otherwise RADIO OFF will be seen after pausing-resuming game and Mission Complete text + if (!m_bRadioStreamReady || !m_bGameplayAllowsRadio) + return; + + extern wchar WideErrorString[]; + + string = TheText.Get("FEA_NON"); + if (string == WideErrorString) { + pCurrentStation = nil; + return; + } + break; + } + + default: return; }; + if (pCurrentStation != string) { pCurrentStation = string; cDisplay = 60; diff --git a/src/audio/audio_enums.h b/src/audio/audio_enums.h index a7de4a91..c464cafb 100644 --- a/src/audio/audio_enums.h +++ b/src/audio/audio_enums.h @@ -2,18 +2,18 @@ enum eRadioStation { - WILDSTYLE, FLASH_FM, - KCHAT, - FEVER, V_ROCK, + PARADISE, VCPR, - RADIO_ESPANTOSO, - EMOTION, + VCFL, WAVE, + FRESH, + ESPANTOSO, + EMOTION, USERTRACK, - NUM_RADIOS = 11, - POLICE_RADIO = 11, + NUM_RADIOS = 10, + POLICE_RADIO = 10, RADIO_OFF = 10, //TAXI_RADIO, }; @@ -38,16 +38,15 @@ enum ePlayerMood enum eStreamedSounds { - STREAMED_SOUND_RADIO_HEAD, - STREAMED_SOUND_RADIO_DOUBLE, - STREAMED_SOUND_RADIO_KJAH, - STREAMED_SOUND_RADIO_RISE, - STREAMED_SOUND_RADIO_LIPS, - STREAMED_SOUND_RADIO_MUNDO, - STREAMED_SOUND_RADIO_MSX, - STREAMED_SOUND_RADIO_FLASH, - STREAMED_SOUND_RADIO_LCJ, - STREAMED_SOUND_RADIO_LCFR, + STREAMED_SOUND_RADIO_FLASH_FM, + STREAMED_SOUND_RADIO_V_ROCK, + STREAMED_SOUND_RADIO_PARADISE, + STREAMED_SOUND_RADIO_VCPR, + STREAMED_SOUND_RADIO_VCFL, + STREAMED_SOUND_RADIO_WAVE, + STREAMED_SOUND_RADIO_FRESH, + STREAMED_SOUND_RADIO_ESPANTOSO, + STREAMED_SOUND_RADIO_EMOTION, STREAMED_SOUND_RADIO_MP3_PLAYER, STREAMED_SOUND_CITY_AMBIENT, STREAMED_SOUND_WATER_AMBIENT, diff --git a/src/audio/oal/channel.cpp b/src/audio/oal/channel.cpp index 04e7e529..abb42c4f 100644 --- a/src/audio/oal/channel.cpp +++ b/src/audio/oal/channel.cpp @@ -17,7 +17,11 @@ bool bChannelsCreated = false; int32 CChannel::channelsThatNeedService = 0; -uint8 tempStereoBuffer[PED_BLOCKSIZE * 2]; +#ifdef MAZAHAKA_TRY_SFX_FIX +uint8 tempStereoBuffer[PED_BLOCKSIZE * 2 * 2]; +#else +uint8 tempStereoBuffer[PED_BLOCKSIZE * 2]; // crash vic3 'VIC3_AA' +#endif void CChannel::InitChannels() diff --git a/src/audio/sampman.h b/src/audio/sampman.h index e7fe3e7f..76a52794 100644 --- a/src/audio/sampman.h +++ b/src/audio/sampman.h @@ -262,17 +262,16 @@ public: extern cSampleManager SampleManager; extern uint32 BankStartOffset[MAX_SFX_BANKS]; -static char StreamedNameTable[][40] = { - "AUDIO\\MUSIC\\HEAD", - "AUDIO\\MUSIC\\DOUBLE", - "AUDIO\\MUSIC\\KJAH", - "AUDIO\\MUSIC\\RISE", - "AUDIO\\MUSIC\\LIPS", - "AUDIO\\MUSIC\\MUNDO", - "AUDIO\\MUSIC\\MSX", +static char StreamedNameTable[][39] = { "AUDIO\\MUSIC\\FLASH", - "AUDIO\\MUSIC\\LCJ", - "AUDIO\\MUSIC\\LCFR", + "AUDIO\\MUSIC\\VROCK", + "AUDIO\\MUSIC\\PARADISE", + "AUDIO\\MUSIC\\VCPR", + "AUDIO\\MUSIC\\VCFL", + "AUDIO\\MUSIC\\WAVE", + "AUDIO\\MUSIC\\FRESH", + "AUDIO\\MUSIC\\ESPANT", + "AUDIO\\MUSIC\\EMOTION", "AUDIO\\MUSIC\\MISCOM2", "AUDIO\\MUSIC\\CITY", "AUDIO\\MUSIC\\WATER",