diff --git a/pcsx2/CMakeLists.txt b/pcsx2/CMakeLists.txt
index afac85d241..b2d9163e97 100644
--- a/pcsx2/CMakeLists.txt
+++ b/pcsx2/CMakeLists.txt
@@ -254,7 +254,6 @@ set(pcsx2SPU2Sources
SPU2/SndOut.cpp
SPU2/SndOut_SDL.cpp
SPU2/spu2freeze.cpp
- SPU2/spu2replay.cpp
SPU2/spu2sys.cpp
SPU2/Timestretcher.cpp
SPU2/Wavedump_wav.cpp
@@ -286,7 +285,6 @@ set(pcsx2SPU2Headers
SPU2/regs.h
SPU2/SndOut.h
SPU2/spdif.h
- SPU2/spu2replay.h
SPU2/WavFile.h
SPU2/Linux/Alsa.h
SPU2/Linux/Config.h
diff --git a/pcsx2/SPU2/ReadInput.cpp b/pcsx2/SPU2/ReadInput.cpp
index f77e81a9c5..645c0f6f97 100644
--- a/pcsx2/SPU2/ReadInput.cpp
+++ b/pcsx2/SPU2/ReadInput.cpp
@@ -118,19 +118,9 @@ StereoOut32 V_Core::ReadInput()
if (!InputDataTransferred && !InputDataLeft)
{
if (Index == 0)
- {
- if (!SPU2_dummy_callback)
- spu2DMA4Irq();
- else
- SPU2interruptDMA4();
- }
+ spu2DMA4Irq();
else
- {
- if (!SPU2_dummy_callback)
- spu2DMA7Irq();
- else
- SPU2interruptDMA7();
- }
+ spu2DMA7Irq();
}
}
diff --git a/pcsx2/SPU2/spu2.cpp b/pcsx2/SPU2/spu2.cpp
index 6ffad217bf..375c901660 100644
--- a/pcsx2/SPU2/spu2.cpp
+++ b/pcsx2/SPU2/spu2.cpp
@@ -30,7 +30,6 @@
using namespace Threading;
MutexRecursive mtx_SPU2Status;
-bool SPU2_dummy_callback = false;
#include "svnrev.h"
@@ -122,10 +121,7 @@ void SPU2writeDMA4Mem(u16* pMem, u32 size) // size now in 16bit units
TimeUpdate(*cyclePtr);
FileLog("[%10d] SPU2 writeDMA4Mem size %x at address %x\n", Cycles, size << 1, Cores[0].TSA);
-#ifdef S2R_ENABLE
- if (!replay_mode)
- s2r_writedma4(Cycles, pMem, size);
-#endif
+
Cores[0].DoDMAwrite(pMem, size);
}
@@ -162,10 +158,7 @@ void SPU2writeDMA7Mem(u16* pMem, u32 size)
TimeUpdate(*cyclePtr);
FileLog("[%10d] SPU2 writeDMA7Mem size %x at address %x\n", Cycles, size << 1, Cores[1].TSA);
-#ifdef S2R_ENABLE
- if (!replay_mode)
- s2r_writedma7(Cycles, pMem, size);
-#endif
+
Cores[1].DoDMAwrite(pMem, size);
}
@@ -240,7 +233,6 @@ s32 SPU2init()
return 0;
IsInitialized = true;
- SPU2_dummy_callback = false;
ReadSettings();
@@ -290,10 +282,6 @@ s32 SPU2init()
DMALogOpen();
InitADSR();
-#ifdef S2R_ENABLE
- if (!replay_mode)
- s2r_open(Cycles, "replay_dump.s2r");
-#endif
return 0;
}
@@ -415,17 +403,11 @@ void SPU2shutdown()
if (!IsInitialized)
return;
IsInitialized = false;
- SPU2_dummy_callback = false;
ConLog("* SPU2: Shutting down.\n");
SPU2close();
-#ifdef S2R_ENABLE
- if (!replay_mode)
- s2r_close();
-#endif
-
DoFullDump();
#ifdef STREAM_DUMP
fclose(il0);
@@ -532,11 +514,9 @@ void SPU2async(u32 cycles)
u16 SPU2read(u32 rmem)
{
- // if(!replay_mode)
- // s2r_readreg(Cycles,rmem);
-
u16 ret = 0xDEAD;
u32 core = 0, mem = rmem & 0xFFFF, omem = mem;
+
if (mem & 0x400)
{
omem ^= 0x400;
@@ -582,11 +562,6 @@ u16 SPU2read(u32 rmem)
void SPU2write(u32 rmem, u16 value)
{
-#ifdef S2R_ENABLE
- if (!replay_mode)
- s2r_writereg(Cycles, rmem, value);
-#endif
-
// Note: Reverb/Effects are very sensitive to having precise update timings.
// If the SPU2 isn't in in sync with the IOP, samples can end up playing at rather
// incorrect pitches and loop lengths.
diff --git a/pcsx2/SPU2/spu2.h b/pcsx2/SPU2/spu2.h
index 0c2b416df0..829cccbdf7 100644
--- a/pcsx2/SPU2/spu2.h
+++ b/pcsx2/SPU2/spu2.h
@@ -21,8 +21,6 @@
extern Threading::MutexRecursive mtx_SPU2Status;
-extern bool SPU2_dummy_callback;
-
s32 SPU2init();
s32 SPU2reset();
s32 SPU2ps1reset();
@@ -58,16 +56,9 @@ void SPU2interruptDMA4();
void SPU2interruptDMA7();
void SPU2readDMA7Mem(u16* pMem, u32 size);
void SPU2writeDMA7Mem(u16* pMem, u32 size);
-#include "spu2replay.h"
extern u8 callirq;
-extern s16* input_data;
-extern u32 input_data_ptr;
-
-extern double srate_pv;
-
-extern int recording;
extern u32 lClocks;
extern u32* cyclePtr;
diff --git a/pcsx2/SPU2/spu2replay.cpp b/pcsx2/SPU2/spu2replay.cpp
deleted file mode 100644
index 74a13f8903..0000000000
--- a/pcsx2/SPU2/spu2replay.cpp
+++ /dev/null
@@ -1,309 +0,0 @@
-/* PCSX2 - PS2 Emulator for PCs
- * Copyright (C) 2002-2020 PCSX2 Dev Team
- *
- * PCSX2 is free software: you can redistribute it and/or modify it under the terms
- * of the GNU Lesser General Public License as published by the Free Software Found-
- * ation, either version 3 of the License, or (at your option) any later version.
- *
- * PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with PCSX2.
- * If not, see .
- */
-
-#include "PrecompiledHeader.h"
-#include "Global.h"
-#include "spu2.h"
-
-#ifdef _MSC_VER
-#include "Windows.h"
-#endif
-
-FILE* s2rfile;
-
-void s2r_write16(s16 data)
-{
- fwrite(&data, 2, 1, s2rfile);
-}
-
-void s2r_write32(u32 data)
-{
- fwrite(&data, 4, 1, s2rfile);
-}
-
-static void EMITC(u32 i, u32 a)
-{
- s2r_write32(((i & 0x7u) << 29u) | (a & 0x1FFFFFFFu));
-}
-
-int s2r_open(u32 ticks, char* filename)
-{
- s2rfile = fopen(filename, "wb");
- if (s2rfile)
- s2r_write32(ticks);
- return s2rfile ? 0 : -1;
-}
-
-void s2r_readreg(u32 ticks, u32 addr)
-{
- if (!s2rfile)
- return;
- s2r_write32(ticks);
- EMITC(0, addr);
-}
-
-void s2r_writereg(u32 ticks, u32 addr, s16 value)
-{
- if (!s2rfile)
- return;
- s2r_write32(ticks);
- EMITC(1, addr);
- s2r_write16(value);
-}
-
-void s2r_writedma4(u32 ticks, u16* data, u32 len)
-{
- u32 i;
- if (!s2rfile)
- return;
- s2r_write32(ticks);
- EMITC(2, len);
- for (i = 0; i < len; i++, data++)
- s2r_write16(*data);
-}
-
-void s2r_writedma7(u32 ticks, u16* data, u32 len)
-{
- u32 i;
- if (!s2rfile)
- return;
- s2r_write32(ticks);
- EMITC(3, len);
- for (i = 0; i < len; i++, data++)
- s2r_write16(*data);
-}
-
-void s2r_close()
-{
- if (!s2rfile)
- return;
- fclose(s2rfile);
-}
-
-///////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////
-// replay code
-
-bool replay_mode = false;
-
-u16 dmabuffer[0xFFFFF];
-
-[[maybe_unused]]const u32 IOP_CLK = 768 * 48000;
-[[maybe_unused]]const u32 IOPCiclesPerMS = 768 * 48;
-u32 CurrentIOPCycle = 0;
-
-u64 HighResFreq;
-u64 HighResPrev;
-double HighResScale;
-
-bool Running = false;
-
-#ifdef _MSC_VER
-
-int conprintf(const char* fmt, ...)
-{
-#ifdef _WIN32
- char s[1024];
- va_list list;
-
- va_start(list, fmt);
- vsprintf(s, fmt, list);
- va_end(list);
-
- HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
- if (handle == INVALID_HANDLE_VALUE)
- return 0;
-
- DWORD written = 0;
- WriteConsoleA(handle, s, strlen(s), &written, 0);
- FlushFileBuffers(handle);
-
- return written;
-#else
- va_list list;
- va_start(list, fmt);
- int ret = vsprintf(stderr, fmt, list);
- va_end(list);
- return ret;
-#endif
-}
-
-u64 HighResFrequency()
-{
- u64 freq;
-#ifdef _WIN32
- QueryPerformanceFrequency((LARGE_INTEGER*)&freq);
-#else
-// TODO
-#endif
- return freq;
-}
-
-u64 HighResCounter()
-{
- u64 time;
-#ifdef _WIN32
- QueryPerformanceCounter((LARGE_INTEGER*)&time);
-#else
-// TODO
-#endif
- return time;
-}
-
-void InitWaitSync() // not extremely accurate but enough.
-{
- HighResFreq = HighResFrequency();
- HighResPrev = HighResCounter();
- HighResScale = (double)HighResFreq / (double)IOP_CLK;
-}
-
-u32 WaitSync(u32 TargetCycle)
-{
- u32 WaitCycles = (TargetCycle - CurrentIOPCycle);
- u32 WaitTime = WaitCycles / IOPCiclesPerMS;
- if (WaitTime > 10)
- WaitTime = 10;
- if (WaitTime == 0)
- WaitTime = 1;
- SleepEx(WaitTime, TRUE);
-
- // Refresh current time after sleeping
- u64 Current = HighResCounter();
- u32 delta = (u32)floor((Current - HighResPrev) / HighResScale + 0.5); // We lose some precision here, cycles might drift away over long periods of time ;P
-
- // Calculate time delta
- CurrentIOPCycle += delta;
- HighResPrev += (u64)floor(delta * HighResScale + 0.5); // Trying to compensate drifting mentioned above, not necessarily useful.
-
- return delta;
-}
-
-#ifdef _WIN32
-BOOL WINAPI HandlerRoutine(DWORD dwCtrlType)
-{
- Running = false;
- return TRUE;
-}
-#endif
-
-#include "Windows/Dialogs.h"
-void s2r_replay(HWND hwnd, HINSTANCE hinst, LPSTR filename, int nCmdShow)
-{
- int events = 0;
-
- Running = true;
-
-#ifdef _WIN32
- AllocConsole();
- SetConsoleCtrlHandler(HandlerRoutine, TRUE);
-
- conprintf("Playing %s file on %x...", filename, hwnd);
-#endif
-
- // load file
- FILE* file = fopen(filename, "rb");
-
- if (!file)
- {
- conprintf("Could not open the replay file.");
- return;
- }
- // if successful, init the plugin
-
-#define TryRead(dest, size, count, file) \
- if (fread(dest, size, count, file) < count) \
- { \
- conprintf("Error reading from file."); \
- goto Finish; /* Need to exit the while() loop and maybe also the switch */ \
- }
-
- TryRead(&CurrentIOPCycle, 4, 1, file);
-
- replay_mode = true;
-
- InitWaitSync(); // Initialize the WaitSync stuff
-
- SPU2init();
- SPU2_dummy_callback = true;
- SPU2setClockPtr(&CurrentIOPCycle);
- SPU2open(&hwnd);
-
- CurrentIOPCycle = 0;
-
- SPU2async(0);
-
- while (!feof(file) && Running)
- {
- u32 ccycle = 0;
- u32 evid = 0;
- u32 sval = 0;
- u32 tval = 0;
-
- TryRead(&ccycle, 4, 1, file);
- TryRead(&sval, 4, 1, file);
-
- evid = sval >> 29;
- sval &= 0x1FFFFFFF;
-
- u32 TargetCycle = ccycle * 768;
-
- while (TargetCycle > CurrentIOPCycle)
- {
- u32 delta = WaitSync(TargetCycle);
- SPU2async(delta);
- }
-
- switch (evid)
- {
- case 0:
- SPU2read(sval);
- break;
- case 1:
- TryRead(&tval, 2, 1, file);
- SPU2write(sval, tval);
- break;
- case 2:
- TryRead(dmabuffer, sval, 2, file);
- SPU2writeDMA4Mem(dmabuffer, sval);
- break;
- case 3:
- TryRead(dmabuffer, sval, 2, file);
- SPU2writeDMA7Mem(dmabuffer, sval);
- break;
- default:
- // not implemented
- return;
- break;
- }
- events++;
- }
-
-Finish:
-
- //shutdown
- SPU2close();
- SPU2shutdown();
- fclose(file);
-
- conprintf("Finished playing %s file (%d cycles, %d events).", filename, CurrentIOPCycle, events);
-
-#ifdef _WIN32
- FreeConsole();
-#endif
-
- replay_mode = false;
-}
-#endif
diff --git a/pcsx2/SPU2/spu2replay.h b/pcsx2/SPU2/spu2replay.h
deleted file mode 100644
index b07e2bf510..0000000000
--- a/pcsx2/SPU2/spu2replay.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* PCSX2 - PS2 Emulator for PCs
- * Copyright (C) 2002-2020 PCSX2 Dev Team
- *
- * PCSX2 is free software: you can redistribute it and/or modify it under the terms
- * of the GNU Lesser General Public License as published by the Free Software Found-
- * ation, either version 3 of the License, or (at your option) any later version.
- *
- * PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with PCSX2.
- * If not, see .
- */
-
-#pragma once
-
-//#define S2R_ENABLE
-
-// s2r dumping
-int s2r_open(u32 ticks, char* filename);
-void s2r_readreg(u32 ticks, u32 addr);
-void s2r_writereg(u32 ticks, u32 addr, s16 value);
-void s2r_writedma4(u32 ticks, u16* data, u32 len);
-void s2r_writedma7(u32 ticks, u16* data, u32 len);
-void s2r_close();
-
-extern bool replay_mode;
diff --git a/pcsx2/SPU2/spu2sys.cpp b/pcsx2/SPU2/spu2sys.cpp
index 9b4ebc9e1f..18c1c4e4de 100644
--- a/pcsx2/SPU2/spu2sys.cpp
+++ b/pcsx2/SPU2/spu2sys.cpp
@@ -429,8 +429,7 @@ __forceinline void TimeUpdate(u32 cClocks)
if (!(Spdif.Info & (4 << i)) && Cores[i].IRQEnable)
{
Spdif.Info |= (4 << i);
- if (!SPU2_dummy_callback)
- spu2Irq();
+ spu2Irq();
}
}
}
@@ -479,18 +478,14 @@ __forceinline void TimeUpdate(u32 cClocks)
if (!(Spdif.Info & (4 << i)) && Cores[i].IRQEnable)
{
Spdif.Info |= (4 << i);
- if (!SPU2_dummy_callback)
- spu2Irq();
+ spu2Irq();
}
}
}
if (Cores[0].DMAICounter <= 0)
{
Cores[0].MADR = Cores[0].TADR;
- if (!SPU2_dummy_callback)
- spu2DMA4Irq();
- else
- SPU2interruptDMA4();
+ spu2DMA4Irq();
}
}
else
@@ -535,8 +530,7 @@ __forceinline void TimeUpdate(u32 cClocks)
if (!(Spdif.Info & (4 << i)) && Cores[i].IRQEnable)
{
Spdif.Info |= (4 << i);
- if (!SPU2_dummy_callback)
- spu2Irq();
+ spu2Irq();
}
}
}
@@ -544,10 +538,7 @@ __forceinline void TimeUpdate(u32 cClocks)
if (Cores[1].DMAICounter <= 0)
{
Cores[1].MADR = Cores[1].TADR;
- if (!SPU2_dummy_callback)
- spu2DMA7Irq();
- else
- SPU2interruptDMA7();
+ spu2DMA7Irq();
}
}
else
@@ -815,8 +806,7 @@ void V_Core::WriteRegPS1(u32 mem, u16 value)
if (Cores[0].IRQEnable && (Cores[0].IRQA <= Cores[0].ActiveTSA))
{
SetIrqCall(0);
- if (!SPU2_dummy_callback)
- spu2Irq();
+ spu2Irq();
}
DmaWrite(value);
show = false;
diff --git a/pcsx2/windows/VCprojects/pcsx2.vcxproj b/pcsx2/windows/VCprojects/pcsx2.vcxproj
index 2a64f2e61b..8bf134ef59 100644
--- a/pcsx2/windows/VCprojects/pcsx2.vcxproj
+++ b/pcsx2/windows/VCprojects/pcsx2.vcxproj
@@ -327,7 +327,6 @@
-
@@ -688,7 +687,6 @@
-
@@ -967,4 +965,4 @@
-
+
\ No newline at end of file
diff --git a/pcsx2/windows/VCprojects/pcsx2.vcxproj.filters b/pcsx2/windows/VCprojects/pcsx2.vcxproj.filters
index ef946f4a65..f5746afbb5 100644
--- a/pcsx2/windows/VCprojects/pcsx2.vcxproj.filters
+++ b/pcsx2/windows/VCprojects/pcsx2.vcxproj.filters
@@ -979,9 +979,6 @@
System\Ps2\SPU2
-
- System\Ps2\SPU2
-
System\Ps2\SPU2
@@ -1779,9 +1776,6 @@
System\Ps2\SPU2
-
- System\Ps2\SPU2
-
System\Ps2\SPU2