workaround msvc optimizer bug

This commit is contained in:
Shawn Hoffman 2023-02-25 23:26:27 -08:00
parent c0d0a04b8f
commit 28956cc6c2
1 changed files with 3 additions and 1 deletions

View File

@ -1354,7 +1354,9 @@ void ZeldaAudioRenderer::FetchVPB(u16 voice_id, VPB* vpb)
void ZeldaAudioRenderer::StoreVPB(u16 voice_id, VPB* vpb) void ZeldaAudioRenderer::StoreVPB(u16 voice_id, VPB* vpb)
{ {
u16* vpb_words = (u16*)vpb; u16* vpb_words = (u16*)vpb;
u16* ram_vpbs = (u16*)HLEMemory_Get_Pointer(m_vpb_base_addr); // volatile is a workaround for msvc optimizer bug, see
// https://developercommunity.visualstudio.com/t/VS-175-bad-codegen-optimizing-loop-with/10291620
volatile u16* ram_vpbs = (u16*)HLEMemory_Get_Pointer(m_vpb_base_addr);
size_t vpb_size = (m_flags & TINY_VPB) ? 0x80 : 0xC0; size_t vpb_size = (m_flags & TINY_VPB) ? 0x80 : 0xC0;
size_t base_idx = voice_id * vpb_size; size_t base_idx = voice_id * vpb_size;