diff --git a/Source/Core/Core/Src/PowerPC/PowerPC.cpp b/Source/Core/Core/Src/PowerPC/PowerPC.cpp index 35fd413aed..a62f0f12b6 100644 --- a/Source/Core/Core/Src/PowerPC/PowerPC.cpp +++ b/Source/Core/Core/Src/PowerPC/PowerPC.cpp @@ -35,280 +35,280 @@ namespace PowerPC { - // STATE_TO_SAVE - PowerPCState GC_ALIGNED16(ppcState); - volatile CPUState state = CPU_STEPPING; +// STATE_TO_SAVE +PowerPCState GC_ALIGNED16(ppcState); +volatile CPUState state = CPU_STEPPING; - static CoreMode mode; +static CoreMode mode; - void CompactCR() +void CompactCR() +{ + ppcState.cr = 0; + for (int i = 0; i < 8; i++) { + ppcState.cr |= ppcState.cr_fast[i] << (28 - i * 4); + } +} + +void ExpandCR() +{ + for (int i = 0; i < 8; i++) { + ppcState.cr_fast[i] = (ppcState.cr >> (28 - i * 4)) & 0xF; + } +} + + +void DoState(PointerWrap &p) +{ + p.Do(ppcState); +} + +void ResetRegisters() +{ + for (int i = 0; i < 32; i++) { - ppcState.cr = 0; - for (int i = 0; i < 8; i++) { - ppcState.cr |= ppcState.cr_fast[i] << (28 - i * 4); - } + ppcState.gpr[i] = 0; + riPS0(i) = 0; + riPS1(i) = 0; } - void ExpandCR() - { - for (int i = 0; i < 8; i++) { - ppcState.cr_fast[i] = (ppcState.cr >> (28 - i * 4)) & 0xF; - } - } + memset(ppcState.spr, 0, sizeof(ppcState.spr)); + ppcState.cr = 0; + ppcState.fpscr = 0; + ppcState.pc = 0; + ppcState.npc = 0; + ppcState.Exceptions = 0; - void DoState(PointerWrap &p) - { - p.Do(ppcState); - } + TL = 0; + TU = 0; - void ResetRegisters() - { - for (int i = 0; i < 32; i++) - { - ppcState.gpr[i] = 0; - riPS0(i) = 0; - riPS1(i) = 0; - } + ppcState.msr = 0; + rDEC = 0xFFFFFFFF; +} - memset(ppcState.spr, 0, sizeof(ppcState.spr)); - - ppcState.cr = 0; - ppcState.fpscr = 0; - ppcState.pc = 0; - ppcState.npc = 0; - ppcState.Exceptions = 0; - - TL = 0; - TU = 0; - - ppcState.msr = 0; - rDEC = 0xFFFFFFFF; - } - - void Init() - { - enum { - FPU_PREC_24 = 0 << 8, - FPU_PREC_53 = 2 << 8, - FPU_PREC_64 = 3 << 8, - FPU_PREC_MASK = 3 << 8, - }; +void Init() +{ + enum { + FPU_PREC_24 = 0 << 8, + FPU_PREC_53 = 2 << 8, + FPU_PREC_64 = 3 << 8, + FPU_PREC_MASK = 3 << 8, + }; #ifdef _M_IX86 - // sets the floating-point lib to 53-bit - // PowerPC has a 53bit floating pipeline only - // eg: sscanf is very sensitive + // sets the floating-point lib to 53-bit + // PowerPC has a 53bit floating pipeline only + // eg: sscanf is very sensitive #ifdef _WIN32 - _control87(_PC_53, MCW_PC); + _control87(_PC_53, MCW_PC); #else - unsigned short _mode; - asm ("fstcw %0" : : "m" (_mode)); - _mode = (_mode & ~FPU_PREC_MASK) | FPU_PREC_53; - asm ("fldcw %0" : : "m" (_mode)); + unsigned short _mode; + asm ("fstcw %0" : : "m" (_mode)); + _mode = (_mode & ~FPU_PREC_MASK) | FPU_PREC_53; + asm ("fldcw %0" : : "m" (_mode)); #endif #else - //x64 doesn't need this - fpu is done with SSE - //but still - set any useful sse options here + //x64 doesn't need this - fpu is done with SSE + //but still - set any useful sse options here #endif - ResetRegisters(); - PPCTables::InitTables(); + ResetRegisters(); + PPCTables::InitTables(); - // Initialize both execution engines ... - Interpreter::Init(); - jit.Init(); - // ... but start as interpreter by default. - mode = MODE_INTERPRETER; - state = CPU_STEPPING; + // Initialize both execution engines ... + Interpreter::Init(); + jit.Init(); + // ... but start as interpreter by default. + mode = MODE_INTERPRETER; + state = CPU_STEPPING; +} + +void Shutdown() +{ + // Shutdown both execution engines. Doesn't matter which one is active. + jit.Shutdown(); + Interpreter::Shutdown(); +} + +void SetMode(CoreMode new_mode) +{ + if (new_mode == mode) + return; // We don't need to do anything. + + mode = new_mode; + switch (mode) + { + case MODE_INTERPRETER: // Switching from JIT to interpreter + jit.ClearCache(); // Remove all those nasty JIT patches. + break; + + case MODE_JIT: // Switching from interpreter to JIT. + // Don't really need to do much. It'll work, the cache will refill itself. + break; + } +} + +void SingleStep() +{ + switch (mode) + { + case MODE_INTERPRETER: + Interpreter::SingleStep(); + break; + case MODE_JIT: + jit.SingleStep(); + break; + } +} + +void RunLoop() +{ + state = CPU_RUNNING; + switch (mode) + { + case MODE_INTERPRETER: + Interpreter::Run(); + break; + case MODE_JIT: + jit.Run(); + break; + } + Host_UpdateDisasmDialog(); +} + +CPUState GetState() +{ + return state; +} + +volatile CPUState *GetStatePtr() +{ + return &state; +} + +void Start() +{ + state = CPU_RUNNING; + Host_UpdateDisasmDialog(); +} + +void Pause() +{ + state = CPU_STEPPING; + Host_UpdateDisasmDialog(); +} + +void Stop() +{ + state = CPU_POWERDOWN; + Host_UpdateDisasmDialog(); +} + +void CheckExceptions() +{ + // This check is unnecessary in JIT mode. However, it probably doesn't really hurt. + if (!ppcState.Exceptions) + return; + + // TODO(ector): + // gcemu uses the mask 0x87C0FFFF instead of 0x0780FF77 + // Investigate! + + if (ppcState.Exceptions & EXCEPTION_FPU_UNAVAILABLE) + { + //This happens a lot - Gamecube OS uses deferred FPU context switching + SRR0 = PC; // re-execute the instruction + SRR1 = MSR & 0x0780FF77; + NPC = 0x80000800; + + INFO_LOG(GEKKO, "EXCEPTION_FPU_UNAVAILABLE"); + ppcState.Exceptions &= ~EXCEPTION_FPU_UNAVAILABLE; + SRR1 |= 0x02; //recoverable + } + else if (ppcState.Exceptions & EXCEPTION_SYSCALL) + { + SRR0 = NPC; // execute next instruction when we come back from handler + SRR1 = MSR & 0x0780FF77; + NPC = 0x80000C00; + + INFO_LOG(GEKKO, "EXCEPTION_SYSCALL (PC=%08x)", PC); + ppcState.Exceptions &= ~EXCEPTION_SYSCALL; + SRR1 |= 0x02; //recoverable + } + else if (ppcState.Exceptions & EXCEPTION_DSI) + { + SRR0 = PC; // re-execute the instruction + SRR1 = MSR & 0x0780FF77; + NPC = 0x80000300; + + INFO_LOG(GEKKO, "EXCEPTION_DSI"); + ppcState.Exceptions &= ~EXCEPTION_DSI; + //SRR1 |= 0x02; //make recoverable ? + } + else if (ppcState.Exceptions & EXCEPTION_ISI) + { + SRR0 = PC; + SRR1 = (MSR & 0x0780FF77) | 0x40000000; + NPC = 0x80000400; + + INFO_LOG(GEKKO, "EXCEPTION_ISI"); + ppcState.Exceptions &= ~EXCEPTION_ISI; + //SRR1 |= 0x02; //make recoverable ? + } + else if (ppcState.Exceptions & EXCEPTION_ALIGNMENT) + { + //This never happens ATM + SRR0 = NPC; + SRR1 = MSR & 0x0780FF77; + NPC = 0x80000600; + + INFO_LOG(GEKKO, "EXCEPTION_ALIGNMENT"); + ppcState.Exceptions &= ~EXCEPTION_ALIGNMENT; + //SRR1 |= 0x02; //make recoverable ? } - void Shutdown() + // EXTERNAL INTTERUPT + else if (MSR & 0x0008000) { - // Shutdown both execution engines. Doesn't matter which one is active. - jit.Shutdown(); - Interpreter::Shutdown(); - } - - void SetMode(CoreMode new_mode) - { - if (new_mode == mode) - return; // We don't need to do anything. - - mode = new_mode; - switch (mode) + if (ppcState.Exceptions & EXCEPTION_EXTERNAL_INT) { - case MODE_INTERPRETER: // Switching from JIT to interpreter - jit.ClearCache(); // Remove all those nasty JIT patches. - break; + // Pokemon gets this "too early", it hasn't a handler yet + ppcState.Exceptions &= ~EXCEPTION_EXTERNAL_INT; // clear exception - case MODE_JIT: // Switching from interpreter to JIT. - // Don't really need to do much. It'll work, the cache will refill itself. - break; - } - } - - void SingleStep() - { - switch (mode) - { - case MODE_INTERPRETER: - Interpreter::SingleStep(); - break; - case MODE_JIT: - jit.SingleStep(); - break; - } - } - - void RunLoop() - { - state = CPU_RUNNING; - switch (mode) - { - case MODE_INTERPRETER: - Interpreter::Run(); - break; - case MODE_JIT: - jit.Run(); - break; - } - Host_UpdateDisasmDialog(); - } - - CPUState GetState() - { - return state; - } - - volatile CPUState *GetStatePtr() - { - return &state; - } - - void Start() - { - state = CPU_RUNNING; - Host_UpdateDisasmDialog(); - } - - void Pause() - { - state = CPU_STEPPING; - Host_UpdateDisasmDialog(); - } - - void Stop() - { - state = CPU_POWERDOWN; - Host_UpdateDisasmDialog(); - } - - void CheckExceptions() - { - // This check is unnecessary in JIT mode. However, it probably doesn't really hurt. - if (!ppcState.Exceptions) - return; - - // TODO(ector): - // gcemu uses the mask 0x87C0FFFF instead of 0x0780FF77 - // Investigate! - - if (ppcState.Exceptions & EXCEPTION_FPU_UNAVAILABLE) - { - //This happens a lot - Gamecube OS uses deferred FPU context switching - SRR0 = PC; // re-execute the instruction - SRR1 = MSR & 0x0780FF77; - NPC = 0x80000800; - - INFO_LOG(GEKKO, "EXCEPTION_FPU_UNAVAILABLE"); - ppcState.Exceptions &= ~EXCEPTION_FPU_UNAVAILABLE; - SRR1 |= 0x02; //recoverable - } - else if (ppcState.Exceptions & EXCEPTION_SYSCALL) - { - SRR0 = NPC; // execute next instruction when we come back from handler - SRR1 = MSR & 0x0780FF77; - NPC = 0x80000C00; - - INFO_LOG(GEKKO, "EXCEPTION_SYSCALL (PC=%08x)", PC); - ppcState.Exceptions &= ~EXCEPTION_SYSCALL; - SRR1 |= 0x02; //recoverable - } - else if (ppcState.Exceptions & EXCEPTION_DSI) - { - SRR0 = PC; // re-execute the instruction - SRR1 = MSR & 0x0780FF77; - NPC = 0x80000300; - - INFO_LOG(GEKKO, "EXCEPTION_DSI"); - ppcState.Exceptions &= ~EXCEPTION_DSI; - //SRR1 |= 0x02; //make recoverable ? - } - else if (ppcState.Exceptions & EXCEPTION_ISI) - { - SRR0 = PC; - SRR1 = (MSR & 0x0780FF77) | 0x40000000; - NPC = 0x80000400; - - INFO_LOG(GEKKO, "EXCEPTION_ISI"); - ppcState.Exceptions &= ~EXCEPTION_ISI; - //SRR1 |= 0x02; //make recoverable ? - } - else if (ppcState.Exceptions & EXCEPTION_ALIGNMENT) - { - //This never happens ATM SRR0 = NPC; - SRR1 = MSR & 0x0780FF77; - NPC = 0x80000600; + NPC = 0x80000500; + SRR1 = (MSR & 0x0780FF77); - INFO_LOG(GEKKO, "EXCEPTION_ALIGNMENT"); - ppcState.Exceptions &= ~EXCEPTION_ALIGNMENT; - //SRR1 |= 0x02; //make recoverable ? + INFO_LOG(GEKKO, "EXCEPTION_EXTERNAL_INT"); + + SRR1 |= 0x02; //set it to recoverable + _dbg_assert_msg_(GEKKO, (SRR1 & 0x02) != 0, "GEKKO", "EXTERNAL_INT unrecoverable???"); // unrecoverable exception !?! } - - // EXTERNAL INTTERUPT - else if (MSR & 0x0008000) + else if (ppcState.Exceptions & EXCEPTION_DECREMENTER) { - if (ppcState.Exceptions & EXCEPTION_EXTERNAL_INT) - { - // Pokemon gets this "too early", it hasn't a handler yet - ppcState.Exceptions &= ~EXCEPTION_EXTERNAL_INT; // clear exception + SRR0 = NPC; + SRR1 = MSR & 0x0000FF77; + NPC = 0x80000900; - SRR0 = NPC; - NPC = 0x80000500; - SRR1 = (MSR & 0x0780FF77); + ppcState.Exceptions &= ~EXCEPTION_DECREMENTER; - INFO_LOG(GEKKO, "EXCEPTION_EXTERNAL_INT"); - - SRR1 |= 0x02; //set it to recoverable - _dbg_assert_msg_(GEKKO, (SRR1 & 0x02) != 0, "GEKKO", "EXTERNAL_INT unrecoverable???"); // unrecoverable exception !?! - } - else if (ppcState.Exceptions & EXCEPTION_DECREMENTER) - { - SRR0 = NPC; - SRR1 = MSR & 0x0000FF77; - NPC = 0x80000900; - - ppcState.Exceptions &= ~EXCEPTION_DECREMENTER; - - INFO_LOG(GEKKO, "EXCEPTION_DECREMENTER"); - SRR1 |= 0x02; //make recoverable - } - else - { - _dbg_assert_msg_(GEKKO, 0, "Unknown EXT interrupt: Exceptions == %08x", ppcState.Exceptions); - ERROR_LOG(GEKKO, "Unknown EXTERNAL INTERRUPT exception: Exceptions == %08x", ppcState.Exceptions); - } + INFO_LOG(GEKKO, "EXCEPTION_DECREMENTER"); + SRR1 |= 0x02; //make recoverable + } + else + { + _dbg_assert_msg_(GEKKO, 0, "Unknown EXT interrupt: Exceptions == %08x", ppcState.Exceptions); + ERROR_LOG(GEKKO, "Unknown EXTERNAL INTERRUPT exception: Exceptions == %08x", ppcState.Exceptions); } - MSR &= ~0x0008000; // clear EE-bit so interrupts aren't possible anymore } + MSR &= ~0x0008000; // clear EE-bit so interrupts aren't possible anymore +} - void OnIdle(u32 _uThreadAddr) - { - u32 nextThread = Memory::Read_U32(_uThreadAddr); - //do idle skipping - if (nextThread == 0) - CoreTiming::Idle(); - } +void OnIdle(u32 _uThreadAddr) +{ + u32 nextThread = Memory::Read_U32(_uThreadAddr); + //do idle skipping + if (nextThread == 0) + CoreTiming::Idle(); +} } // namespace \ No newline at end of file diff --git a/Source/Core/DolphinWX/Src/GameListCtrl.cpp b/Source/Core/DolphinWX/Src/GameListCtrl.cpp index 53f5681813..878b59493b 100644 --- a/Source/Core/DolphinWX/Src/GameListCtrl.cpp +++ b/Source/Core/DolphinWX/Src/GameListCtrl.cpp @@ -94,13 +94,14 @@ EVT_MENU(IDM_DELETEGCM, CGameListCtrl::OnDeleteGCM) END_EVENT_TABLE() CGameListCtrl::CGameListCtrl(wxWindow* parent, const wxWindowID id, const wxPoint& pos, const wxSize& size, long style) - : wxListCtrl(parent, id, pos, size, style) // | wxLC_VIRTUAL) + : wxListCtrl(parent, id, pos, size, style) { } CGameListCtrl::~CGameListCtrl() { - if (m_imageListSmall) delete m_imageListSmall; + if (m_imageListSmall) + delete m_imageListSmall; } void CGameListCtrl::InitBitmaps() @@ -234,6 +235,11 @@ wxString NiceSizeFormat(s64 _size) void CGameListCtrl::InsertItemInReportView(long _Index) { + // When using wxListCtrl, there is no hope of per-column text colors. + // But for reference, here are the old colors that were used: (BGR) + // title: 0xFF0000 + // company: 0x007030 + GameListItem& rISOFile = m_ISOFiles[_Index]; int ImageIndex = -1; @@ -246,34 +252,26 @@ void CGameListCtrl::InsertItemInReportView(long _Index) // Insert a row with the banner image long ItemIndex = InsertItem(_Index, wxEmptyString, ImageIndex); - // Background color - SetBackgroundColor(); - - // When using wxListCtrl, there is no hope of per-column text colors. - // But for reference, here are the old colors that were used: (BGR) - // title: 0xFF0000 - // company: 0x007030 - switch (rISOFile.GetCountry()) { case DiscIO::IVolume::COUNTRY_JAP: { - // keep these codes, when we move to wx unicode... - //wxCSConv convFrom(wxFontMapper::GetEncodingName(wxFONTENCODING_SHIFT_JIS)); - //wxCSConv convTo(wxFontMapper::GetEncodingName(wxFONTENCODING_DEFAULT)); - //SetItem(_Index, COLUMN_TITLE, wxString(wxString(rISOFile.GetName()).wc_str(convFrom) , convTo), -1); - //SetItem(_Index, COLUMN_NOTES, wxString(wxString(rISOFile.GetDescription()).wc_str(convFrom) , convTo), -1); - wxString name; - if (CopySJISToString(name, rISOFile.GetName(0).c_str())) - { - SetItem(_Index, COLUMN_TITLE, name, -1); - } + // keep these codes, when we move to wx unicode... + //wxCSConv convFrom(wxFontMapper::GetEncodingName(wxFONTENCODING_SHIFT_JIS)); + //wxCSConv convTo(wxFontMapper::GetEncodingName(wxFONTENCODING_DEFAULT)); + //SetItem(_Index, COLUMN_TITLE, wxString(wxString(rISOFile.GetName()).wc_str(convFrom) , convTo), -1); + //SetItem(_Index, COLUMN_NOTES, wxString(wxString(rISOFile.GetDescription()).wc_str(convFrom) , convTo), -1); + wxString name; + if (CopySJISToString(name, rISOFile.GetName(0).c_str())) + { + SetItem(_Index, COLUMN_TITLE, name, -1); + } - wxString description; - if (CopySJISToString(description, rISOFile.GetDescription(0).c_str())) - { - SetItem(_Index, COLUMN_NOTES, description, -1); - } + wxString description; + if (CopySJISToString(description, rISOFile.GetDescription(0).c_str())) + { + SetItem(_Index, COLUMN_NOTES, description, -1); + } } break; case DiscIO::IVolume::COUNTRY_USA: @@ -344,19 +342,10 @@ void CGameListCtrl::InsertItemInReportView(long _Index) } // Country - { - wxListItem item; - item.m_itemId = ItemIndex; - item.SetColumn(COLUMN_COUNTRY); - DiscIO::IVolume::ECountry Country = rISOFile.GetCountry(); + SetItemColumnImage(_Index, COLUMN_COUNTRY, m_FlagImageIndex[rISOFile.GetCountry()]); - if (size_t(Country) < m_FlagImageIndex.size()) - { - item.SetImage(m_FlagImageIndex[rISOFile.GetCountry()]); - } - - SetItem(item); - } + // Background color + SetBackgroundColor(); // Item data SetItemData(_Index, ItemIndex); diff --git a/Source/Dolphin.sln b/Source/Dolphin.sln index 53fec0594b..36dc6bb863 100644 --- a/Source/Dolphin.sln +++ b/Source/Dolphin.sln @@ -152,6 +152,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxCore28", "..\Externals\wx EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AudioCommon", "Core\AudioCommon\AudioCommon.vcproj", "{FBAFB369-07EB-4460-9CAD-08BE5789DAB6}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_DSP_LLE_Test", "Plugins\Plugin_DSP_LLE-testing\Plugin_DSP_LLE_Test.vcproj", "{3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}" + ProjectSection(ProjectDependencies) = postProject + {FBAFB369-07EB-4460-9CAD-08BE5789DAB6} = {FBAFB369-07EB-4460-9CAD-08BE5789DAB6} + {C573CAF7-EE6A-458E-8049-16C0BF34C2E9} = {C573CAF7-EE6A-458E-8049-16C0BF34C2E9} + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -504,17 +510,27 @@ Global {11F55366-12EC-4C44-A8CB-1D4E315D61ED}.Release|x64.Build.0 = Release|x64 {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Debug|Win32.ActiveCfg = Debug|Win32 {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Debug|Win32.Build.0 = Debug|Win32 - {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Debug|x64.ActiveCfg = Debug|Win32 + {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Debug|x64.ActiveCfg = Debug|x64 + {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Debug|x64.Build.0 = Debug|x64 {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.DebugFast|Win32.ActiveCfg = Debug|Win32 {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.DebugFast|Win32.Build.0 = Debug|Win32 - {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.DebugFast|x64.ActiveCfg = Debug|Win32 + {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.DebugFast|x64.ActiveCfg = Debug|x64 + {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.DebugFast|x64.Build.0 = Debug|x64 {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Release_JITIL|Win32.ActiveCfg = Release|Win32 {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Release_JITIL|Win32.Build.0 = Release|Win32 - {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Release_JITIL|x64.ActiveCfg = Release|Win32 + {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Release_JITIL|x64.ActiveCfg = Release|x64 {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Release|Win32.ActiveCfg = Release|Win32 {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Release|Win32.Build.0 = Release|Win32 {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Release|x64.ActiveCfg = Release|x64 {FBAFB369-07EB-4460-9CAD-08BE5789DAB6}.Release|x64.Build.0 = Release|x64 + {3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.Debug|Win32.ActiveCfg = Debug|Win32 + {3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.Debug|x64.ActiveCfg = Debug|x64 + {3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.DebugFast|Win32.ActiveCfg = DebugFast|Win32 + {3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.DebugFast|x64.ActiveCfg = DebugFast|x64 + {3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.Release_JITIL|Win32.ActiveCfg = Release|Win32 + {3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.Release_JITIL|x64.ActiveCfg = Release|x64 + {3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.Release|Win32.ActiveCfg = Release|Win32 + {3D8156A9-64D1-4C8E-ADBE-1B319030E4A4}.Release|x64.ActiveCfg = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Source/Plugins/Plugin_DSP_HLE/Plugin_DSP_HLE.vcproj b/Source/Plugins/Plugin_DSP_HLE/Plugin_DSP_HLE.vcproj index 902c0c6da9..9ec4ae029a 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Plugin_DSP_HLE.vcproj +++ b/Source/Plugins/Plugin_DSP_HLE/Plugin_DSP_HLE.vcproj @@ -78,7 +78,7 @@ SubSystem="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" - ImportLibrary="$(OutDir)/DSP_HLE.lib" + ImportLibrary="$(TargetDir)$(TargetName).lib" TargetMachine="1" /> - - - - - - @@ -771,6 +765,18 @@ > + + + + + +