Add files via upload

This commit is contained in:
MaZaHa-Ka 2024-09-27 13:11:00 +03:00 committed by GitHub
parent 15582a81ae
commit 17872b8fc9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 138 additions and 51 deletions

View file

@ -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;

View file

@ -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;

View file

@ -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 <iostream>
//__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);

View file

@ -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,

View file

@ -181,6 +181,7 @@ RpAnimBlendClumpInitSkinned(RpClump *clump)
void
RpAnimBlendClumpInitNotSkinned(RpClump *clump)
{
//if(!clump) { return; }
int numFrames = 0;
CAnimBlendClumpData *clumpData;
RwFrame *root;

View file

@ -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;

View file

@ -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;

View file

@ -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,

View file

@ -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()

View file

@ -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",