# HG changeset patch # User Nomad # Date 1362578135 -7200 # Node ID 96f48cfdd657419271363495fbebb6a83eaab97d # Parent f90753ebabe3a57ec8ad855c31306b4d6f43880a some flags diff -r f90753ebabe3 -r 96f48cfdd657 AudioPlayer.cpp --- a/AudioPlayer.cpp Wed Mar 06 06:41:36 2013 +0200 +++ b/AudioPlayer.cpp Wed Mar 06 15:55:35 2013 +0200 @@ -90,7 +90,7 @@ if ( pSoundList->pSounds[v2].eType != SOUND_DESC_SYSTEM || (sprintf(pSoundName, "%s", pSounds[v2].pSoundName), pSoundList->pSounds[v2].pSoundData[0] = ::LoadSound(pSoundName, (SoundData *)0xFFFFFFFF, pSounds[v2].uSoundID), !pAudioPlayer->b3DSoundInitialized) - || (pSoundDesc = &pSoundList->pSounds[v2], !(pSoundDesc->uFlags & 2)) + || (pSoundDesc = &pSoundList->pSounds[v2], !(pSoundDesc->uFlags & SOUND_DESC_SWAP)) || !pSoundDesc->pSoundData[0] ) // нужно перевернуть goto LABEL_17; pSoundData = pSoundDesc->pSoundData[0]; @@ -163,8 +163,8 @@ if (!pSound) return 0; - if (pSound->uFlags & 2 && pSound->p3DSound || - ~pSound->uFlags & 2 && pSound->pSoundData[0]) + if (pSound->uFlags & SOUND_DESC_SWAP && pSound->p3DSound || + ~pSound->uFlags & SOUND_DESC_SWAP && pSound->pSoundData[0]) return uSoundIdx; if (!pSound->pSoundData[0]) @@ -174,12 +174,12 @@ return 0; if (a3) - pSound->uFlags |= 1u; + pSound->uFlags |= SOUND_DESC_SYSTEM; if (!pAudioPlayer->b3DSoundInitialized) return uSoundIdx; - if (~pSound->uFlags & 2 || !pSound->pSoundData[0]) + if (~pSound->uFlags & SOUND_DESC_SWAP || !pSound->pSoundData[0]) return uSoundIdx; @@ -368,7 +368,7 @@ ReleaseSoundData(v7); v2->pSounds[v3].pSoundData[0] = 0; } - v2->pSounds[v3].uFlags &= 0xFFFFFFFEu; + v2->pSounds[v3].uFlags &= ~SOUND_DESC_SYSTEM; } ++i; } @@ -387,19 +387,19 @@ v5 = &this->pSounds[uSoundID]; if ( v5->eType != SOUND_DESC_SYSTEM ) { - if ( v5->uFlags & 2 && v5->p3DSound && a3 ) + if ( v5->uFlags & SOUND_DESC_SWAP && v5->p3DSound && a3 ) { if ( LOBYTE(v5->bDecompressed) ) AIL_mem_free_lock(v5->p3DSound); pSounds[v3].p3DSound = 0; - pSounds[v3].uFlags &= 0xFFFFFFFEu; + pSounds[v3].uFlags &= ~SOUND_DESC_SYSTEM; } v6 = pSounds[v3].pSoundData[0]; if ( v6 ) { ReleaseSoundData(v6); pSounds[v3].pSoundData[0] = 0; - pSounds[v3].uFlags &= 0xFFFFFFFEu; + pSounds[v3].uFlags &= ~SOUND_DESC_SYSTEM; } } } @@ -521,7 +521,7 @@ if ( v19.field_0 >= 4 && !_strcmpi(v19.pProperties[3], "3D") ) { v15 = (int)&v2->pSounds[v2->uNumSounds].uFlags; - *(int *)v15 |= 2u; + *(int *)v15 |= SOUND_DESC_SWAP; } ++v2->uNumSounds; } @@ -1743,7 +1743,7 @@ auto decor_desc = &pDecorationList->pDecorations[decor->uDecorationDescID]; //v48 = &pDecorationList->pDecorations[decor->uDecorationDescID]; //v49 = v48->uFlags; - uNumRepeats = (~(unsigned __int8)decor_desc->uFlags & 0x40) >> 6; + uNumRepeats = (~(unsigned __int8)decor_desc->uFlags & DECORATION_SLOW_LOOP) >> 6; if (decor_desc->SoundOnDawn() || decor_desc->SoundOnDusk()) { @@ -2231,7 +2231,7 @@ v4 = &pSoundList->pSounds[pChannel->uSourceTrackIdx]; if ( v4->eType == SOUND_DESC_SWAP) { - if ( v4->pSoundData[0] && !(v4->uFlags & 1) ) + if ( v4->pSoundData[0] && !(v4->uFlags & SOUND_DESC_SYSTEM) ) { v5 = this->uMixerChannels == 0; v6 = this->uMixerChannels < 0; @@ -2371,7 +2371,7 @@ v4 = &pSoundList->pSounds[a2->field_8]; if ( v4->eType == SOUND_DESC_SWAP) { - if ( v4->p3DSound && !(v4->uFlags & 1) ) + if ( v4->p3DSound && !(v4->uFlags & SOUND_DESC_SYSTEM) ) { v5 = this->uNum3DSamples == 0; v6 = this->uNum3DSamples < 0; diff -r f90753ebabe3 -r 96f48cfdd657 Chest.cpp --- a/Chest.cpp Wed Mar 06 06:41:36 2013 +0200 +++ b/Chest.cpp Wed Mar 06 15:55:35 2013 +0200 @@ -613,7 +613,7 @@ if(test_positionuAnimTime = 0; pParty->uNumFoodRations = uNumFood; - result = 8 * pIconsFrameTable->pIcons[(signed __int16)pUIAnim_Food->uIconID].uAnimLength; - pUIAnim_Food->uAnimLength = 8 * pIconsFrameTable->pIcons[(signed __int16)pUIAnim_Food->uIconID].uAnimLength; - return result; + pUIAnim_Food->uAnimLength = 8 * pIconsFrameTable->pIcons[pUIAnim_Food->uIconID].uAnimLength; } //----- (00492B03) -------------------------------------------------------- void Party::TakeFood(unsigned int uNumFood) { - if ( ((pParty->uNumFoodRations - uNumFood) & 0x80000000u) == 0 ) - pParty->uNumFoodRations -= uNumFood; + if (pParty->uNumFoodRations <= uNumFood) + pParty->uNumFoodRations = 0; else - pParty->uNumFoodRations = 0; + pParty->uNumFoodRations -= uNumFood; + pUIAnim_Food->uAnimTime = 0; - pUIAnim_Food->uAnimLength = 8 * pIconsFrameTable->pIcons[(signed __int16)pUIAnim_Food->uIconID].uAnimLength; + pUIAnim_Food->uAnimLength = 8 * pIconsFrameTable->pIcons[pUIAnim_Food->uIconID].uAnimLength; } //----- (00492B42) -------------------------------------------------------- -__int16 Party::GiveFood(unsigned int _this) +void Party::GiveFood(unsigned int _this) { - __int16 result; // ax@1 - pParty->uNumFoodRations += _this; pUIAnim_Food->uAnimTime = 0; - result = 8 * pIconsFrameTable->pIcons[(signed __int16)pUIAnim_Food->uIconID].uAnimLength; - pUIAnim_Food->uAnimLength = 8 * pIconsFrameTable->pIcons[(signed __int16)pUIAnim_Food->uIconID].uAnimLength; - return result; + pUIAnim_Food->uAnimLength = 8 * pIconsFrameTable->pIcons[pUIAnim_Food->uIconID].uAnimLength; } //----- (00492B70) -------------------------------------------------------- @@ -237,7 +230,7 @@ { pParty->uNumGold = uNumGold; pUIAnim_Gold->uAnimTime = 0; - pUIAnim_Gold->uAnimLength = 8 * pIconsFrameTable->pIcons[(signed __int16)pUIAnim_Gold->uIconID].uAnimLength; + pUIAnim_Gold->uAnimLength = 8 * pIconsFrameTable->pIcons[pUIAnim_Gold->uIconID].uAnimLength; pAudioPlayer->PlaySound(SOUND_GoldReceived, 0, 0, -1, 0, 0, 0, 0); } @@ -249,7 +242,7 @@ else pParty->uNumGold = 0; pUIAnim_Gold->uAnimTime = 0; - pUIAnim_Gold->uAnimLength = 8 * pIconsFrameTable->pIcons[(signed __int16)pUIAnim_Gold->uIconID].uAnimLength; + pUIAnim_Gold->uAnimLength = 8 * pIconsFrameTable->pIcons[pUIAnim_Gold->uIconID].uAnimLength; pAudioPlayer->PlaySound(SOUND_GoldReceived, 0, 0, -1, 0, 0, 0, 0); } diff -r f90753ebabe3 -r 96f48cfdd657 Party.h --- a/Party.h Wed Mar 06 06:41:36 2013 +0200 +++ b/Party.h Wed Mar 06 15:55:35 2013 +0200 @@ -182,7 +182,7 @@ static void TakeGold(unsigned int uNumGold); static __int16 SetFood(unsigned int uNumFood); static void TakeFood(unsigned int uNumFood); - static __int16 GiveFood(unsigned int _this); + static void GiveFood(unsigned int _this); inline bool WizardEyeActive() {return pPartyBuffs[PARTY_BUFF_WIZARD_EYE].uExpireTime > 0;} inline int WizardEyeSkillLevel() {return pPartyBuffs[PARTY_BUFF_WIZARD_EYE].uSkill;} diff -r f90753ebabe3 -r 96f48cfdd657 mm7_5.cpp --- a/mm7_5.cpp Wed Mar 06 06:41:36 2013 +0200 +++ b/mm7_5.cpp Wed Mar 06 15:55:35 2013 +0200 @@ -15978,6 +15978,8 @@ v9 = pX + pSRZBufferLineOffsets[pY]; if ( pRenderer->pActiveZBuffer[v9] & 0xFFFF ) { + + __debugbreak(); // invalid indexing will result in invalid object ptr v8 = (ItemGen *)(&pOtherOverlayList->pOverlays[49].field_4 + 2662 * (unsigned int)pChestWindow->ptr_1C + 18* *((short *)&pChests[0].igChestItems[139].uExpireTime + (pRenderer->pActiveZBuffer[v9] & 0xFFFF) + 2662 * (unsigned int)pChestWindow->ptr_1C + 3)); GameUI_DrawItemInfo(v8);