mirror of
https://github.com/PCSX2/pcsx2.git
synced 2026-08-24 22:54:37 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fac171fa95 | ||
|
|
fa1b6493da | ||
|
|
e58766745c | ||
|
|
d8a9c5b479 | ||
|
|
9a4d8ba934 | ||
|
|
ab816543c8 | ||
|
|
37ccd81985 | ||
|
|
42dad4ade8 | ||
|
|
b2ac035862 | ||
|
|
f42d7eec74 | ||
|
|
e4ef41f86a | ||
|
|
103dd3954a | ||
|
|
2f9577a28e | ||
|
|
33ec4d9430 | ||
|
|
209f09ca7a | ||
|
|
2e6af75f1d | ||
|
|
f68122a380 |
@@ -9502,6 +9502,8 @@ SLES-51145:
|
||||
SLES-51150:
|
||||
name: "Scrabble Interactive - 2003 Edition"
|
||||
region: "PAL-M3"
|
||||
clampModes:
|
||||
vuClampMode: 0 # Fixes missing UI and game elements.
|
||||
SLES-51151:
|
||||
name: "NHL 2003"
|
||||
region: "PAL-M6"
|
||||
@@ -12448,6 +12450,8 @@ SLES-52710:
|
||||
SLES-52711:
|
||||
name: "Titeuf Mega Compet"
|
||||
region: "PAL-F"
|
||||
gameFixes:
|
||||
- GIFFIFOHack # Fixes corrupted textures.
|
||||
patches:
|
||||
958e5086:
|
||||
content: |-
|
||||
@@ -13131,6 +13135,14 @@ SLES-53021:
|
||||
SLES-53022:
|
||||
name: "ESPN NBA 2K5"
|
||||
region: "PAL-E"
|
||||
gameFixes:
|
||||
- SkipMPEGHack # Fixes videos.
|
||||
patches:
|
||||
CA37B42E:
|
||||
content: |-
|
||||
author=Prafull
|
||||
comment=fixes hang at start
|
||||
patch=1,EE,0034DA98,word,00000000
|
||||
SLES-53023:
|
||||
name: "RTL Ski Jump 2005"
|
||||
region: "PAL-E-G"
|
||||
@@ -14549,6 +14561,12 @@ SLES-53686:
|
||||
SLES-53687:
|
||||
name: "NBA 2K6"
|
||||
region: "PAL-M5"
|
||||
patches:
|
||||
04808D11:
|
||||
content: |-
|
||||
author=Prafull
|
||||
comment=fixes hang at start
|
||||
patch=1,EE,00441ff8,word,00000000
|
||||
SLES-53689:
|
||||
name: "World Poker Tour 2K6"
|
||||
region: "PAL-M3"
|
||||
@@ -15650,6 +15668,12 @@ SLES-54209:
|
||||
SLES-54210:
|
||||
name: "NBA 2K7"
|
||||
region: "PAL-M5"
|
||||
patches:
|
||||
04808D11:
|
||||
content: |-
|
||||
author=Prafull
|
||||
comment=fixes hang at start
|
||||
patch=1,EE,0044f0f8,word,00000000
|
||||
SLES-54211:
|
||||
name: "NHL 2K7"
|
||||
region: "PAL-M5"
|
||||
@@ -19635,6 +19659,9 @@ SLPM-55131:
|
||||
SLPM-55138:
|
||||
name: "Harukanaru Toki no Naka de - Yume no Ukihashi Special"
|
||||
region: "NTSC-J"
|
||||
SLPM-55146:
|
||||
name: "Jikkyou Powerful Pro Yakyuu 2009"
|
||||
region: "NTSC-J"
|
||||
SLPM-55148:
|
||||
name: "007: Nagusame no Houshuu"
|
||||
region: "NTSC-J"
|
||||
@@ -25753,6 +25780,13 @@ SLPM-66294:
|
||||
SLPM-66295:
|
||||
name: "Yamiyo ni Sasayaku - Tantei Sagara Kyouichirou [Limited Edition]"
|
||||
region: "NTSC-J"
|
||||
patches:
|
||||
23A9A026:
|
||||
content: |-
|
||||
author=PSI, Jelta
|
||||
// Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled.
|
||||
// This patch skips over the stack code, allowing the game to boot.
|
||||
patch=1,EE,00156888,word,10000003
|
||||
SLPM-66296:
|
||||
name: "Yamiyo ni Sasayaku - Tantei Sagara Kyouichirou"
|
||||
region: "NTSC-J"
|
||||
@@ -26239,6 +26273,12 @@ SLPM-66450:
|
||||
SLPM-66451:
|
||||
name: "Major League Baseball 2K6"
|
||||
region: "NTSC-J"
|
||||
patches:
|
||||
F0393708:
|
||||
content: |-
|
||||
author=Prafull
|
||||
comment=fixes hang at start
|
||||
patch=1,EE,0035d8b8,word,00000000
|
||||
SLPM-66452:
|
||||
name: "Kamaitachi no Yoru 3"
|
||||
region: "NTSC-J"
|
||||
@@ -39431,6 +39471,12 @@ SLUS-21560:
|
||||
SLUS-21561:
|
||||
name: "Major League Baseball 2K7"
|
||||
region: "NTSC-U"
|
||||
patches:
|
||||
73D6D171:
|
||||
content: |-
|
||||
author=Prafull
|
||||
comment=fixes hang at start
|
||||
patch=1,EE,003CDE10,word,00000000
|
||||
SLUS-21563:
|
||||
name: "Horsez"
|
||||
region: "NTSC-U"
|
||||
@@ -40729,6 +40775,12 @@ SLUS-21870:
|
||||
SLUS-21871:
|
||||
name: "Major League Baseball 2K9"
|
||||
region: "NTSC-U"
|
||||
patches:
|
||||
72905002:
|
||||
content: |-
|
||||
author=Prafull
|
||||
comment=fixes hang at start
|
||||
patch=1,EE,003CC5D8,word,00000000
|
||||
SLUS-21872:
|
||||
name: "MTV Pimp my Ride - Street Racing"
|
||||
region: "NTSC-U"
|
||||
@@ -41007,6 +41059,12 @@ SLUS-21944:
|
||||
SLUS-21945:
|
||||
name: "Major League Baseball 2K11"
|
||||
region: "NTSC-U"
|
||||
patches:
|
||||
3D621C56:
|
||||
content: |-
|
||||
author=By Prafull
|
||||
comment=fixes hang at start
|
||||
patch=1,EE,003CFE58,word,00000000
|
||||
SLUS-21946:
|
||||
name: "Madden NFL 12"
|
||||
region: "NTSC-U"
|
||||
@@ -41029,6 +41087,12 @@ SLUS-21950:
|
||||
SLUS-21951:
|
||||
name: "Major League Baseball 2K12"
|
||||
region: "NTSC-U"
|
||||
patches:
|
||||
C26C70A9:
|
||||
content: |-
|
||||
author=By Prafull
|
||||
comment=fixes hang at start
|
||||
patch=1,EE,003D4098,word,00000000
|
||||
SLUS-21954:
|
||||
name: "FIFA 13"
|
||||
region: "NTSC-U" # Latin America with En,Fr,Es
|
||||
|
||||
+19
-42
@@ -1038,7 +1038,7 @@ __fi void cdvdActionInterrupt()
|
||||
cdvd.Spinning = true;
|
||||
cdvd.Ready |= CDVD_DRIVE_READY; //check (rama)
|
||||
cdvd.Sector = cdvd.SeekToSector;
|
||||
cdvd.Status = CDVD_STATUS_READ;
|
||||
cdvd.Status = CDVD_STATUS_PAUSE;
|
||||
cdvd.nextSectorsBuffered = 0;
|
||||
cdvd.triggerDataReady = true;
|
||||
CDVDSECTORREADY_INT(cdvd.ReadTime);
|
||||
@@ -1049,7 +1049,7 @@ __fi void cdvdActionInterrupt()
|
||||
cdvd.Spinning = true; //check (rama)
|
||||
cdvd.Ready |= CDVD_DRIVE_READY; //check (rama)
|
||||
cdvd.Sector = cdvd.SeekToSector;
|
||||
cdvd.Status = CDVD_STATUS_READ;
|
||||
cdvd.Status = CDVD_STATUS_PAUSE;
|
||||
cdvd.nextSectorsBuffered = 0;
|
||||
cdvd.triggerDataReady = true;
|
||||
CDVDSECTORREADY_INT(cdvd.ReadTime);
|
||||
@@ -1103,18 +1103,8 @@ __fi void cdvdSectorReady()
|
||||
}
|
||||
}
|
||||
|
||||
if (cdvd.nextSectorsBuffered == 16 && (cdvd.Ready & CDVD_DRIVE_READY))
|
||||
{
|
||||
cdvd.Status = CDVD_STATUS_PAUSE; // Needed here but could be smth else than Pause (rama)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cdvd.nextSectorsBuffered < 16)
|
||||
{
|
||||
CDVDSECTORREADY_INT(cdvd.ReadTime);
|
||||
cdvd.Status = CDVD_STATUS_READ;
|
||||
}
|
||||
}
|
||||
if (cdvd.nextSectorsBuffered < 16)
|
||||
CDVDSECTORREADY_INT(cdvd.ReadTime);
|
||||
}
|
||||
|
||||
// inlined due to being referenced in only one place.
|
||||
@@ -1139,14 +1129,10 @@ __fi void cdvdReadInterrupt()
|
||||
cdvd.Reading = 1;
|
||||
cdvd.Readed = 1;
|
||||
cdvd.Sector = cdvd.SeekToSector;
|
||||
CDVD_LOG("Cdvd Seek Complete > Scheduling block read interrupt at iopcycle=%8.8x.",
|
||||
psxRegs.cycle + cdvd.ReadTime);
|
||||
|
||||
CDVDREAD_INT(cdvd.ReadTime);
|
||||
cdvd.Status = CDVD_STATUS_READ;
|
||||
return;
|
||||
CDVD_LOG("Cdvd Seek Complete at iopcycle=%8.8x.", psxRegs.cycle);
|
||||
}
|
||||
else if (cdvd.Reading)
|
||||
|
||||
if (cdvd.Reading)
|
||||
{
|
||||
if (cdvd.RErr == 0)
|
||||
{
|
||||
@@ -1217,10 +1203,7 @@ __fi void cdvdReadInterrupt()
|
||||
iopIntcIrq(2);
|
||||
cdvd.Ready |= CDVD_DRIVE_READY;
|
||||
|
||||
if (cdvd.nextSectorsBuffered < 16)
|
||||
cdvd.Status = CDVD_STATUS_READ;
|
||||
else
|
||||
cdvd.Status = CDVD_STATUS_PAUSE;
|
||||
cdvd.Status = CDVD_STATUS_PAUSE;
|
||||
|
||||
cdvd.nCommand = 0;
|
||||
//DevCon.Warning("Scheduling interrupt in %d cycles", cdvd.ReadTime - ((cdvd.BlockSize / 4) * 12));
|
||||
@@ -1300,6 +1283,7 @@ static uint cdvdStartSeek(uint newsector, CDVD_MODE_TYPE mode)
|
||||
|
||||
// if delta > 0 it will read a new sector so the readInterrupt will account for this.
|
||||
seektime = 0;
|
||||
isSeeking = false;
|
||||
|
||||
if (delta == 0)
|
||||
{
|
||||
@@ -1324,24 +1308,16 @@ static uint cdvdStartSeek(uint newsector, CDVD_MODE_TYPE mode)
|
||||
}
|
||||
else
|
||||
{
|
||||
CDVDSECTORREADY_INT(cdvd.ReadTime);
|
||||
seektime = cdvd.ReadTime + ((cdvd.BlockSize / 4) * 12);
|
||||
delta = 1; // Forces it to use the rotational delay since we have no sectors buffered and it isn't buffering any.
|
||||
}
|
||||
}
|
||||
else
|
||||
seektime = (cdvd.BlockSize / 4) * 12;
|
||||
return (cdvd.BlockSize / 4) * 12;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (delta < cdvd.nextSectorsBuffered)
|
||||
{
|
||||
isSeeking = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
psxRegs.interrupt &= ~(1 << IopEvt_CdvdSectorReady);
|
||||
cdvd.nextSectorsBuffered = 0;
|
||||
}
|
||||
psxRegs.interrupt &= ~(1 << IopEvt_CdvdSectorReady);
|
||||
cdvd.nextSectorsBuffered = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1354,8 +1330,9 @@ static uint cdvdStartSeek(uint newsector, CDVD_MODE_TYPE mode)
|
||||
CDVDSECTORREADY_INT(seektime);
|
||||
seektime += (cdvd.BlockSize / 4) * 12;
|
||||
}
|
||||
else if(cdvd.nCommand != N_CD_SEEK)
|
||||
CDVDSECTORREADY_INT(seektime + ((cdvd.BlockSize / 4) * 12));
|
||||
else
|
||||
CDVDSECTORREADY_INT(seektime);
|
||||
|
||||
return seektime;
|
||||
}
|
||||
|
||||
@@ -1633,7 +1610,7 @@ static void cdvdWrite04(u8 rt)
|
||||
cdvdSetIrq();
|
||||
cdvd.nCommand = 0;
|
||||
//After Pausing needs to buffer the next sector
|
||||
cdvd.Status = CDVD_STATUS_READ;
|
||||
cdvd.Status = CDVD_STATUS_PAUSE;
|
||||
cdvd.nextSectorsBuffered = 0;
|
||||
cdvd.triggerDataReady = true;
|
||||
CDVDSECTORREADY_INT(cdvd.ReadTime);
|
||||
@@ -1865,7 +1842,7 @@ static void cdvdWrite04(u8 rt)
|
||||
HW_DMA3_CHCR &= ~0x01000000;
|
||||
psxDmaInterrupt(3);
|
||||
//After reading the TOC it needs to go back to buffer the next sector
|
||||
cdvd.Status = CDVD_STATUS_READ;
|
||||
cdvd.Status = CDVD_STATUS_PAUSE;
|
||||
cdvd.nextSectorsBuffered = 0;
|
||||
cdvd.triggerDataReady = true;
|
||||
CDVDSECTORREADY_INT(cdvd.ReadTime);
|
||||
@@ -1882,7 +1859,7 @@ static void cdvdWrite04(u8 rt)
|
||||
cdvdSetIrq();
|
||||
cdvd.nCommand = 0;
|
||||
//After reading the key it needs to go back to buffer the next sector
|
||||
cdvd.Status = CDVD_STATUS_READ;
|
||||
cdvd.Status = CDVD_STATUS_PAUSE;
|
||||
cdvd.nextSectorsBuffered = 0;
|
||||
cdvd.triggerDataReady = true;
|
||||
CDVDSECTORREADY_INT(cdvd.ReadTime);
|
||||
|
||||
@@ -80,7 +80,7 @@ static void WriteIndexToFile(Access* index, const char* filename)
|
||||
return;
|
||||
}
|
||||
|
||||
auto fp = FileSystem::OpenManagedCFile(filename, "rb");
|
||||
auto fp = FileSystem::OpenManagedCFile(filename, "wb");
|
||||
if (!fp)
|
||||
return;
|
||||
|
||||
@@ -300,7 +300,7 @@ bool GzippedFileReader::OkIndex()
|
||||
|
||||
// Try to read index from disk
|
||||
const std::string indexfile(iso2indexname(m_filename));
|
||||
if (indexfile.empty() == 0)
|
||||
if (indexfile.empty())
|
||||
return false; // iso2indexname(...) will print errors if it can't apply the template
|
||||
|
||||
if (FileSystem::FileExists(indexfile.c_str()) && (m_pIndex = ReadIndexFromFile(indexfile.c_str())))
|
||||
|
||||
@@ -221,7 +221,8 @@ bool InputIsoFile::Open(std::string srcfile, bool testOnly)
|
||||
m_reader = new FlatFileReader(EmuConfig.CdvdShareWrite);
|
||||
}
|
||||
|
||||
m_reader->Open(m_filename);
|
||||
if (!m_reader->Open(m_filename))
|
||||
return false;
|
||||
|
||||
// It might actually be a blockdump file.
|
||||
// Check that before continuing with the FlatFileReader.
|
||||
|
||||
@@ -126,7 +126,7 @@ set(pcsx2Sources
|
||||
IopIrq.cpp
|
||||
IopMem.cpp
|
||||
IopSio2.cpp
|
||||
IPC.cpp
|
||||
PINE.cpp
|
||||
Mdec.cpp
|
||||
Memory.cpp
|
||||
MemoryCardFile.cpp
|
||||
@@ -201,7 +201,7 @@ set(pcsx2Headers
|
||||
IopHw.h
|
||||
IopMem.h
|
||||
IopSio2.h
|
||||
IPC.h
|
||||
PINE.h
|
||||
Mdec.h
|
||||
MTVU.h
|
||||
Memory.h
|
||||
@@ -904,7 +904,7 @@ set(pcsx2GuiSources
|
||||
gui/Dialogs/McdConfigDialog.cpp
|
||||
gui/Dialogs/PickUserModeDialog.cpp
|
||||
gui/Dialogs/SysConfigDialog.cpp
|
||||
gui/Dialogs/IPCDialog.cpp
|
||||
gui/Dialogs/PINEDialog.cpp
|
||||
gui/Debugger/BreakpointWindow.cpp
|
||||
gui/Debugger/CtrlDisassemblyView.cpp
|
||||
gui/Debugger/CtrlRegisterList.cpp
|
||||
|
||||
+1
-1
@@ -545,7 +545,7 @@ struct Pcsx2Config
|
||||
CdvdShareWrite : 1, // allows the iso to be modified while it's loaded
|
||||
EnablePatches : 1, // enables patch detection and application
|
||||
EnableCheats : 1, // enables cheat detection and application
|
||||
EnableIPC : 1, // enables inter-process communication
|
||||
EnablePINE : 1, // enables inter-process communication
|
||||
EnableWideScreenPatches : 1,
|
||||
#ifndef DISABLE_RECORDING
|
||||
EnableRecordingTools : 1,
|
||||
|
||||
+4
-3
@@ -148,16 +148,17 @@ bool GSClut::WriteTest(const GIFRegTEX0& TEX0, const GIFRegTEXCLUT& TEXCLUT)
|
||||
__assume(0);
|
||||
}
|
||||
|
||||
return m_write.IsDirty(TEX0, TEXCLUT);
|
||||
// CLUT only reloads if PSM is a valid index type, avoid unnecessary flushes
|
||||
return ((TEX0.PSM & 0x7) >= 3) && m_write.IsDirty(TEX0, TEXCLUT);
|
||||
}
|
||||
|
||||
void GSClut::Write(const GIFRegTEX0& TEX0, const GIFRegTEXCLUT& TEXCLUT)
|
||||
{
|
||||
m_write.TEX0 = TEX0;
|
||||
m_write.TEXCLUT = TEXCLUT;
|
||||
m_write.dirty = false;
|
||||
m_read.dirty = true;
|
||||
|
||||
m_write.dirty = false;
|
||||
|
||||
(this->*m_wc[TEX0.CSM][TEX0.CPSM][TEX0.PSM])(TEX0, TEXCLUT);
|
||||
}
|
||||
|
||||
|
||||
@@ -2546,8 +2546,13 @@ __forceinline void GSState::VertexKick(u32 skip)
|
||||
__assume(0);
|
||||
}
|
||||
|
||||
if (auto_flush && PRIM->TME && (m_context->FRAME.Block() == m_context->TEX0.TBP0))
|
||||
FlushPrim();
|
||||
if (m_context->FRAME.FBMSK != 0xFFFFFFFF)
|
||||
{
|
||||
m_mem.m_clut.Invalidate(m_context->FRAME.Block());
|
||||
|
||||
if (auto_flush && PRIM->TME && (m_context->FRAME.Block() == m_context->TEX0.TBP0))
|
||||
FlushPrim();
|
||||
}
|
||||
}
|
||||
|
||||
void GSState::GetTextureMinMax(GSVector4i& r, const GIFRegTEX0& TEX0, const GIFRegCLAMP& CLAMP, bool linear)
|
||||
|
||||
@@ -1009,7 +1009,6 @@ void GSRendererHW::SwSpriteRender()
|
||||
}
|
||||
|
||||
m_tc->InvalidateVideoMem(dpo, m_r);
|
||||
m_mem.m_clut.Invalidate();
|
||||
}
|
||||
|
||||
bool GSRendererHW::CanUseSwSpriteRender()
|
||||
@@ -2279,7 +2278,6 @@ bool GSRendererHW::OI_PointListPalette(GSTexture* rt, GSTexture* ds, GSTextureCa
|
||||
m_mem.WritePixel32(x, y, c, FBP, FBW);
|
||||
}
|
||||
m_tc->InvalidateVideoMem(m_context->offset.fb, m_r);
|
||||
m_mem.m_clut.Invalidate();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -578,8 +578,6 @@ void GSRendererSW::Queue(GSRingHeap::SharedPtr<GSRasterizerData>& item)
|
||||
if (sd->global.sel.fwrite)
|
||||
{
|
||||
m_tc->InvalidatePages(sd->m_fb_pages, sd->m_fpsm);
|
||||
|
||||
m_mem.m_clut.Invalidate(m_context->FRAME.Block());
|
||||
}
|
||||
|
||||
if (sd->global.sel.zwrite)
|
||||
|
||||
@@ -40,10 +40,10 @@
|
||||
#include "gui/AppCoreThread.h"
|
||||
#include "System/SysThreads.h"
|
||||
#include "svnrev.h"
|
||||
#include "IPC.h"
|
||||
#include "PINE.h"
|
||||
|
||||
SocketIPC::SocketIPC(SysCoreThread* vm, unsigned int slot)
|
||||
: pxThread("IPC_Socket")
|
||||
PINEServer::PINEServer(SysCoreThread* vm, unsigned int slot)
|
||||
: pxThread("PINE_Server")
|
||||
{
|
||||
#ifdef _WIN32
|
||||
WSADATA wsa;
|
||||
@@ -52,14 +52,14 @@ SocketIPC::SocketIPC(SysCoreThread* vm, unsigned int slot)
|
||||
|
||||
if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
|
||||
{
|
||||
Console.WriteLn(Color_Red, "IPC: Cannot initialize winsock! Shutting down...");
|
||||
Console.WriteLn(Color_Red, "PINE: Cannot initialize winsock! Shutting down...");
|
||||
return;
|
||||
}
|
||||
|
||||
m_sock = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if ((m_sock == INVALID_SOCKET) || slot > 65536)
|
||||
{
|
||||
Console.WriteLn(Color_Red, "IPC: Cannot open socket! Shutting down...");
|
||||
Console.WriteLn(Color_Red, "PINE: Cannot open socket! Shutting down...");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ SocketIPC::SocketIPC(SysCoreThread* vm, unsigned int slot)
|
||||
|
||||
if (bind(m_sock, (struct sockaddr*)&server, sizeof(server)) == SOCKET_ERROR)
|
||||
{
|
||||
Console.WriteLn(Color_Red, "IPC: Error while binding to socket! Shutting down...");
|
||||
Console.WriteLn(Color_Red, "PINE: Error while binding to socket! Shutting down...");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -85,14 +85,14 @@ SocketIPC::SocketIPC(SysCoreThread* vm, unsigned int slot)
|
||||
// fallback in case macOS or other OSes don't implement the XDG base
|
||||
// spec
|
||||
if (runtime_dir == nullptr)
|
||||
m_socket_name = "/tmp/" IPC_EMULATOR_NAME ".sock";
|
||||
m_socket_name = "/tmp/" PINE_EMULATOR_NAME ".sock";
|
||||
else
|
||||
{
|
||||
m_socket_name = runtime_dir;
|
||||
m_socket_name += "/" IPC_EMULATOR_NAME ".sock";
|
||||
m_socket_name += "/" PINE_EMULATOR_NAME ".sock";
|
||||
}
|
||||
|
||||
if (slot != IPC_DEFAULT_SLOT)
|
||||
if (slot != PINE_DEFAULT_SLOT)
|
||||
m_socket_name += "." + std::to_string(slot);
|
||||
|
||||
struct sockaddr_un server;
|
||||
@@ -100,7 +100,7 @@ SocketIPC::SocketIPC(SysCoreThread* vm, unsigned int slot)
|
||||
m_sock = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||
if (m_sock < 0)
|
||||
{
|
||||
Console.WriteLn(Color_Red, "IPC: Cannot open socket! Shutting down...");
|
||||
Console.WriteLn(Color_Red, "PINE: Cannot open socket! Shutting down...");
|
||||
return;
|
||||
}
|
||||
server.sun_family = AF_UNIX;
|
||||
@@ -111,7 +111,7 @@ SocketIPC::SocketIPC(SysCoreThread* vm, unsigned int slot)
|
||||
unlink(m_socket_name.c_str());
|
||||
if (bind(m_sock, (struct sockaddr*)&server, sizeof(struct sockaddr_un)))
|
||||
{
|
||||
Console.WriteLn(Color_Red, "IPC: Error while binding to socket! Shutting down...");
|
||||
Console.WriteLn(Color_Red, "PINE: Error while binding to socket! Shutting down...");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
@@ -128,21 +128,21 @@ SocketIPC::SocketIPC(SysCoreThread* vm, unsigned int slot)
|
||||
Start();
|
||||
}
|
||||
|
||||
char* SocketIPC::MakeOkIPC(char* ret_buffer, uint32_t size = 5)
|
||||
char* PINEServer::MakeOkIPC(char* ret_buffer, uint32_t size = 5)
|
||||
{
|
||||
ToArray<uint32_t>(ret_buffer, size, 0);
|
||||
ret_buffer[4] = IPC_OK;
|
||||
return ret_buffer;
|
||||
}
|
||||
|
||||
char* SocketIPC::MakeFailIPC(char* ret_buffer, uint32_t size = 5)
|
||||
char* PINEServer::MakeFailIPC(char* ret_buffer, uint32_t size = 5)
|
||||
{
|
||||
ToArray<uint32_t>(ret_buffer, size, 0);
|
||||
ret_buffer[4] = IPC_FAIL;
|
||||
return ret_buffer;
|
||||
}
|
||||
|
||||
int SocketIPC::StartSocket()
|
||||
int PINEServer::StartSocket()
|
||||
{
|
||||
m_msgsock = accept(m_sock, 0, 0);
|
||||
|
||||
@@ -160,7 +160,7 @@ int SocketIPC::StartSocket()
|
||||
if (!(errno == ECONNABORTED || errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK))
|
||||
{
|
||||
#endif
|
||||
fprintf(stderr, "IPC: An unrecoverable error happened! Shutting down...\n");
|
||||
fprintf(stderr, "PINE: An unrecoverable error happened! Shutting down...\n");
|
||||
m_end = true;
|
||||
return -1;
|
||||
}
|
||||
@@ -168,7 +168,7 @@ int SocketIPC::StartSocket()
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SocketIPC::ExecuteTaskInThread()
|
||||
void PINEServer::ExecuteTaskInThread()
|
||||
{
|
||||
m_end = false;
|
||||
|
||||
@@ -216,7 +216,7 @@ void SocketIPC::ExecuteTaskInThread()
|
||||
}
|
||||
}
|
||||
}
|
||||
SocketIPC::IPCBuffer res;
|
||||
PINEServer::IPCBuffer res;
|
||||
|
||||
// we remove 4 bytes to get the message size out of the IPC command
|
||||
// size in ParseCommand.
|
||||
@@ -238,7 +238,7 @@ void SocketIPC::ExecuteTaskInThread()
|
||||
return;
|
||||
}
|
||||
|
||||
SocketIPC::~SocketIPC()
|
||||
PINEServer::~PINEServer()
|
||||
{
|
||||
m_end = true;
|
||||
#ifdef _WIN32
|
||||
@@ -258,7 +258,7 @@ SocketIPC::~SocketIPC()
|
||||
DESTRUCTOR_CATCHALL
|
||||
}
|
||||
|
||||
SocketIPC::IPCBuffer SocketIPC::ParseCommand(char* buf, char* ret_buffer, u32 buf_size)
|
||||
PINEServer::IPCBuffer PINEServer::ParseCommand(char* buf, char* ret_buffer, u32 buf_size)
|
||||
{
|
||||
u32 ret_cnt = 5;
|
||||
u32 buf_cnt = 0;
|
||||
@@ -380,6 +380,8 @@ SocketIPC::IPCBuffer SocketIPC::ParseCommand(char* buf, char* ret_buffer, u32 bu
|
||||
}
|
||||
case MsgVersion:
|
||||
{
|
||||
if (!m_vm->HasActiveMachine())
|
||||
goto error;
|
||||
char version[256] = {};
|
||||
if (GIT_TAGGED_COMMIT) // Nightly builds
|
||||
{
|
||||
@@ -391,11 +393,14 @@ SocketIPC::IPCBuffer SocketIPC::ParseCommand(char* buf, char* ret_buffer, u32 bu
|
||||
{
|
||||
sprintf(version, "PCSX2 %u.%u.%u-%lld", PCSX2_VersionHi, PCSX2_VersionMid, PCSX2_VersionLo, SVN_REV);
|
||||
}
|
||||
version[255] = 0x00;
|
||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, 256, buf_size))
|
||||
const u32 size = strlen(version) + 1;
|
||||
version[size] = 0x00;
|
||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, size + 4, buf_size))
|
||||
goto error;
|
||||
memcpy(&ret_buffer[ret_cnt], version, 256);
|
||||
ret_cnt += 256;
|
||||
ToArray(ret_buffer, size, ret_cnt);
|
||||
ret_cnt += 4;
|
||||
memcpy(&ret_buffer[ret_cnt], version, size);
|
||||
ret_cnt += size;
|
||||
break;
|
||||
}
|
||||
case MsgSaveState:
|
||||
@@ -422,52 +427,68 @@ SocketIPC::IPCBuffer SocketIPC::ParseCommand(char* buf, char* ret_buffer, u32 bu
|
||||
{
|
||||
if (!m_vm->HasActiveMachine())
|
||||
goto error;
|
||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, 256, buf_size))
|
||||
goto error;
|
||||
char title[256] = {};
|
||||
char* title = new char[GameInfo::gameName.size() + 1];
|
||||
sprintf(title, "%s", GameInfo::gameName.ToUTF8().data());
|
||||
title[255] = 0x00;
|
||||
memcpy(&ret_buffer[ret_cnt], title, 256);
|
||||
ret_cnt += 256;
|
||||
const u32 size = strlen(title) + 1;
|
||||
title[size] = 0x00;
|
||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, size + 4, buf_size))
|
||||
goto error;
|
||||
ToArray(ret_buffer, size, ret_cnt);
|
||||
ret_cnt += 4;
|
||||
memcpy(&ret_buffer[ret_cnt], title, size);
|
||||
ret_cnt += size;
|
||||
delete[] title;
|
||||
break;
|
||||
}
|
||||
case MsgID:
|
||||
{
|
||||
if (!m_vm->HasActiveMachine())
|
||||
goto error;
|
||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, 256, buf_size))
|
||||
char* title = new char[GameInfo::gameSerial.size() + 1];
|
||||
sprintf(title, "%s", GameInfo::gameSerial.ToUTF8().data());
|
||||
const u32 size = strlen(title) + 1;
|
||||
title[size] = 0x00;
|
||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, size + 4, buf_size))
|
||||
goto error;
|
||||
char id[256] = {};
|
||||
sprintf(id, "%s", GameInfo::gameSerial.ToUTF8().data());
|
||||
id[255] = 0x00;
|
||||
memcpy(&ret_buffer[ret_cnt], id, 256);
|
||||
ret_cnt += 256;
|
||||
ToArray(ret_buffer, size, ret_cnt);
|
||||
ret_cnt += 4;
|
||||
memcpy(&ret_buffer[ret_cnt], title, size);
|
||||
ret_cnt += size;
|
||||
delete[] title;
|
||||
break;
|
||||
}
|
||||
case MsgUUID:
|
||||
{
|
||||
if (!m_vm->HasActiveMachine())
|
||||
goto error;
|
||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, 256, buf_size))
|
||||
char* title = new char[GameInfo::gameCRC.size() + 1];
|
||||
sprintf(title, "%s", GameInfo::gameCRC.ToUTF8().data());
|
||||
const u32 size = strlen(title) + 1;
|
||||
title[size] = 0x00;
|
||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, size + 4, buf_size))
|
||||
goto error;
|
||||
char uuid[256] = {};
|
||||
sprintf(uuid, "%s", GameInfo::gameCRC.ToUTF8().data());
|
||||
uuid[255] = 0x00;
|
||||
memcpy(&ret_buffer[ret_cnt], uuid, 256);
|
||||
ret_cnt += 256;
|
||||
ToArray(ret_buffer, size, ret_cnt);
|
||||
ret_cnt += 4;
|
||||
memcpy(&ret_buffer[ret_cnt], title, size);
|
||||
ret_cnt += size;
|
||||
delete[] title;
|
||||
break;
|
||||
}
|
||||
case MsgGameVersion:
|
||||
{
|
||||
if (!m_vm->HasActiveMachine())
|
||||
goto error;
|
||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, 256, buf_size))
|
||||
char* title = new char[GameInfo::gameVersion.size() + 1];
|
||||
sprintf(title, "%s", GameInfo::gameVersion.ToUTF8().data());
|
||||
const u32 size = strlen(title) + 1;
|
||||
title[size] = 0x00;
|
||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, size + 4, buf_size))
|
||||
goto error;
|
||||
char version[256] = {};
|
||||
sprintf(version, "%s", GameInfo::gameVersion.ToUTF8().data());
|
||||
version[255] = 0x00;
|
||||
memcpy(&ret_buffer[ret_cnt], version, 256);
|
||||
ret_cnt += 256;
|
||||
ToArray(ret_buffer, size, ret_cnt);
|
||||
ret_cnt += 4;
|
||||
memcpy(&ret_buffer[ret_cnt], title, size);
|
||||
ret_cnt += size;
|
||||
delete[] title;
|
||||
break;
|
||||
}
|
||||
case MsgStatus:
|
||||
+27
-27
@@ -13,17 +13,17 @@
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* Client code example for interfacing with the IPC interface is available
|
||||
* here: https://code.govanify.com/govanify/pcsx2_ipc/ */
|
||||
/* A reference client implementation for interfacing with PINE is available
|
||||
* here: https://code.govanify.com/govanify/pine/ */
|
||||
|
||||
#pragma once
|
||||
|
||||
// IPC uses a concept of "slot" to be able to communicate with multiple
|
||||
// PINE uses a concept of "slot" to be able to communicate with multiple
|
||||
// emulators at the same time, each slot should be unique to each emulator to
|
||||
// allow PnP and configurable by the end user so that several runs don't
|
||||
// conflict with each others
|
||||
#define IPC_DEFAULT_SLOT 28011
|
||||
#define IPC_EMULATOR_NAME "pcsx2"
|
||||
#define PINE_DEFAULT_SLOT 28011
|
||||
#define PINE_EMULATOR_NAME "pcsx2"
|
||||
|
||||
#include "common/PersistentThread.h"
|
||||
#include "System/SysThreads.h"
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
using namespace Threading;
|
||||
|
||||
class SocketIPC : public pxThread
|
||||
class PINEServer : public pxThread
|
||||
{
|
||||
// parent thread
|
||||
typedef pxThread _parent;
|
||||
@@ -89,22 +89,22 @@ protected:
|
||||
*/
|
||||
enum IPCCommand : unsigned char
|
||||
{
|
||||
MsgRead8 = 0, /**< Read 8 bit value to memory. */
|
||||
MsgRead16 = 1, /**< Read 16 bit value to memory. */
|
||||
MsgRead32 = 2, /**< Read 32 bit value to memory. */
|
||||
MsgRead64 = 3, /**< Read 64 bit value to memory. */
|
||||
MsgWrite8 = 4, /**< Write 8 bit value to memory. */
|
||||
MsgWrite16 = 5, /**< Write 16 bit value to memory. */
|
||||
MsgWrite32 = 6, /**< Write 32 bit value to memory. */
|
||||
MsgWrite64 = 7, /**< Write 64 bit value to memory. */
|
||||
MsgVersion = 8, /**< Returns PCSX2 version. */
|
||||
MsgSaveState = 9, /**< Saves a savestate. */
|
||||
MsgLoadState = 0xA, /**< Loads a savestate. */
|
||||
MsgTitle = 0xB, /**< Returns the game title. */
|
||||
MsgID = 0xC, /**< Returns the game ID. */
|
||||
MsgUUID = 0xD, /**< Returns the game UUID. */
|
||||
MsgGameVersion = 0xE, /**< Returns the game verion. */
|
||||
MsgStatus = 0xF, /**< Returns the emulator status. */
|
||||
MsgRead8 = 0, /**< Read 8 bit value to memory. */
|
||||
MsgRead16 = 1, /**< Read 16 bit value to memory. */
|
||||
MsgRead32 = 2, /**< Read 32 bit value to memory. */
|
||||
MsgRead64 = 3, /**< Read 64 bit value to memory. */
|
||||
MsgWrite8 = 4, /**< Write 8 bit value to memory. */
|
||||
MsgWrite16 = 5, /**< Write 16 bit value to memory. */
|
||||
MsgWrite32 = 6, /**< Write 32 bit value to memory. */
|
||||
MsgWrite64 = 7, /**< Write 64 bit value to memory. */
|
||||
MsgVersion = 8, /**< Returns PCSX2 version. */
|
||||
MsgSaveState = 9, /**< Saves a savestate. */
|
||||
MsgLoadState = 0xA, /**< Loads a savestate. */
|
||||
MsgTitle = 0xB, /**< Returns the game title. */
|
||||
MsgID = 0xC, /**< Returns the game ID. */
|
||||
MsgUUID = 0xD, /**< Returns the game UUID. */
|
||||
MsgGameVersion = 0xE, /**< Returns the game verion. */
|
||||
MsgStatus = 0xF, /**< Returns the emulator status. */
|
||||
MsgUnimplemented = 0xFF /**< Unimplemented IPC message. */
|
||||
};
|
||||
|
||||
@@ -115,7 +115,7 @@ protected:
|
||||
enum EmuStatus : uint32_t
|
||||
{
|
||||
Running = 0, /**< Game is running */
|
||||
Paused = 1, /**< Game is paused */
|
||||
Paused = 1, /**< Game is paused */
|
||||
Shutdown = 2 /**< Game is shutdown */
|
||||
};
|
||||
|
||||
@@ -125,7 +125,7 @@ protected:
|
||||
*/
|
||||
struct IPCBuffer
|
||||
{
|
||||
int size; /**< Size of the buffer. */
|
||||
int size; /**< Size of the buffer. */
|
||||
char* buffer; /**< Buffer. */
|
||||
};
|
||||
|
||||
@@ -137,7 +137,7 @@ protected:
|
||||
*/
|
||||
enum IPCResult : unsigned char
|
||||
{
|
||||
IPC_OK = 0, /**< IPC command successfully completed. */
|
||||
IPC_OK = 0, /**< IPC command successfully completed. */
|
||||
IPC_FAIL = 0xFF /**< IPC command failed to complete. */
|
||||
};
|
||||
|
||||
@@ -218,7 +218,7 @@ public:
|
||||
bool m_end = true;
|
||||
|
||||
/* Initializers */
|
||||
SocketIPC(SysCoreThread* vm, unsigned int slot = IPC_DEFAULT_SLOT);
|
||||
virtual ~SocketIPC();
|
||||
PINEServer(SysCoreThread* vm, unsigned int slot = PINE_DEFAULT_SLOT);
|
||||
virtual ~PINEServer();
|
||||
|
||||
}; // class SocketIPC
|
||||
@@ -572,7 +572,7 @@ void Pcsx2Config::LoadSave(SettingsWrapper& wrap)
|
||||
SettingsWrapBitBool(CdvdShareWrite);
|
||||
SettingsWrapBitBool(EnablePatches);
|
||||
SettingsWrapBitBool(EnableCheats);
|
||||
SettingsWrapBitBool(EnableIPC);
|
||||
SettingsWrapBitBool(EnablePINE);
|
||||
SettingsWrapBitBool(EnableWideScreenPatches);
|
||||
#ifndef DISABLE_RECORDING
|
||||
SettingsWrapBitBool(EnableRecordingTools);
|
||||
@@ -708,7 +708,7 @@ void Pcsx2Config::CopyConfig(const Pcsx2Config& cfg)
|
||||
CdvdShareWrite = cfg.CdvdShareWrite;
|
||||
EnablePatches = cfg.EnablePatches;
|
||||
EnableCheats = cfg.EnableCheats;
|
||||
EnableIPC = cfg.EnableIPC;
|
||||
EnablePINE = cfg.EnablePINE;
|
||||
EnableWideScreenPatches = cfg.EnableWideScreenPatches;
|
||||
#ifndef DISABLE_RECORDING
|
||||
EnableRecordingTools = cfg.EnableRecordingTools;
|
||||
|
||||
@@ -29,7 +29,7 @@ extern WindowInfo g_gs_window_info;
|
||||
#include "Patch.h"
|
||||
#include "SysThreads.h"
|
||||
#include "MTVU.h"
|
||||
#include "IPC.h"
|
||||
#include "PINE.h"
|
||||
#include "FW.h"
|
||||
#include "SPU2/spu2.h"
|
||||
#include "DEV9/DEV9.h"
|
||||
@@ -53,9 +53,9 @@ extern WindowInfo g_gs_window_info;
|
||||
|
||||
bool g_CDVDReset = false;
|
||||
|
||||
namespace IPCSettings
|
||||
namespace PINESettings
|
||||
{
|
||||
unsigned int slot = IPC_DEFAULT_SLOT;
|
||||
unsigned int slot = PINE_DEFAULT_SLOT;
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------------------
|
||||
@@ -267,13 +267,13 @@ void SysCoreThread::GameStartingInThread()
|
||||
#ifdef USE_SAVESLOT_UI_UPDATES
|
||||
UI_UpdateSysControls();
|
||||
#endif
|
||||
if (EmuConfig.EnableIPC && m_IpcState == OFF)
|
||||
if (EmuConfig.EnablePINE && m_PineState == OFF)
|
||||
{
|
||||
m_IpcState = ON;
|
||||
m_socketIpc = std::make_unique<SocketIPC>(this, IPCSettings::slot);
|
||||
m_PineState = ON;
|
||||
m_pineServer = std::make_unique<PINEServer>(this, PINESettings::slot);
|
||||
}
|
||||
if (m_IpcState == ON && m_socketIpc->m_end)
|
||||
m_socketIpc->Start();
|
||||
if (m_PineState == ON && m_pineServer->m_end)
|
||||
m_pineServer->Start();
|
||||
}
|
||||
|
||||
bool SysCoreThread::StateCheckInThread()
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
#include "common/PersistentThread.h"
|
||||
#include "common/emitter/tools.h"
|
||||
#include "IPC.h"
|
||||
#include "PINE.h"
|
||||
|
||||
|
||||
using namespace Threading;
|
||||
@@ -185,16 +185,16 @@ protected:
|
||||
bool m_resetVsyncTimers;
|
||||
bool m_resetVirtualMachine;
|
||||
|
||||
// Stores the state of the socket IPC thread.
|
||||
std::unique_ptr<SocketIPC> m_socketIpc;
|
||||
// Stores the state of the PINE thread.
|
||||
std::unique_ptr<PINEServer> m_pineServer;
|
||||
|
||||
// Current state of the IPC thread
|
||||
enum StateIPC
|
||||
// Current state of the PINE thread
|
||||
enum StatePINE
|
||||
{
|
||||
OFF,
|
||||
ON
|
||||
};
|
||||
StateIPC m_IpcState = OFF;
|
||||
StatePINE m_PineState = OFF;
|
||||
|
||||
// Indicates if the system has an active virtual machine state. Pretty much always
|
||||
// true anytime between subcomponents being initialized and being shutdown. Gets
|
||||
@@ -284,7 +284,7 @@ extern SysCoreThread& GetCoreThread();
|
||||
|
||||
extern bool g_CDVDReset;
|
||||
|
||||
namespace IPCSettings
|
||||
namespace PINESettings
|
||||
{
|
||||
extern unsigned int slot;
|
||||
};
|
||||
|
||||
+4
-4
@@ -199,10 +199,10 @@ enum MenuIdentifiers
|
||||
MenuId_Recording_VirtualPad_Port1,
|
||||
#endif
|
||||
|
||||
// IPC Subsection
|
||||
MenuId_IPC,
|
||||
MenuId_IPC_Enable,
|
||||
MenuId_IPC_Settings,
|
||||
// Subsection
|
||||
MenuId_PINE,
|
||||
MenuId_PINE_Enable,
|
||||
MenuId_PINE_Settings,
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -424,7 +424,7 @@ static void _ApplySettings(const Pcsx2Config& src, Pcsx2Config& fixup)
|
||||
GameInfo::gameCRC = L""; // Needs to be reset when rebooting otherwise previously loaded patches may load
|
||||
|
||||
if (ingame && !DiscSerial.IsEmpty())
|
||||
GameInfo::gameSerial = L" [" + DiscSerial + L"]";
|
||||
GameInfo::gameSerial = DiscSerial;
|
||||
|
||||
const wxString newGameKey(ingame ? SysGetDiscID() : SysGetBiosDiscID());
|
||||
const bool verbose(newGameKey != curGameKey && ingame);
|
||||
@@ -512,7 +512,7 @@ static void _ApplySettings(const Pcsx2Config& src, Pcsx2Config& fixup)
|
||||
// When we're booting, the bios loader will set a a title which would be more interesting than this
|
||||
// to most users - with region, version, etc, so don't overwrite it with patch info. That's OK. Those
|
||||
// users which want to know the status of the patches at the bios can check the console content.
|
||||
wxString consoleTitle = GameInfo::gameName + GameInfo::gameSerial;
|
||||
wxString consoleTitle = GameInfo::gameName + L" [" + GameInfo::gameSerial + L"]";
|
||||
consoleTitle += L" [" + GameInfo::gameCRC.MakeUpper() + L"]" + gameCompat + gameFixes + gamePatch + gameCheats + gameWsHacks;
|
||||
if (ingame)
|
||||
Console.SetTitle(consoleTitle);
|
||||
|
||||
@@ -400,14 +400,14 @@ namespace Dialogs
|
||||
virtual ~AssertionDialog() = default;
|
||||
};
|
||||
|
||||
class IPCDialog : public wxDialogWithHelpers
|
||||
class PINEDialog : public wxDialogWithHelpers
|
||||
{
|
||||
public:
|
||||
IPCDialog(wxWindow* parent = NULL);
|
||||
virtual ~IPCDialog() = default;
|
||||
PINEDialog(wxWindow* parent = NULL);
|
||||
virtual ~PINEDialog() = default;
|
||||
|
||||
void OnConfirm(wxCommandEvent& evt);
|
||||
static wxString GetNameStatic() { return L"IPCSettings"; }
|
||||
static wxString GetNameStatic() { return L"PINESettings"; }
|
||||
wxString GetDialogName() const { return GetNameStatic(); }
|
||||
};
|
||||
} // namespace Dialogs
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
#include "gui/AppConfig.h"
|
||||
|
||||
using namespace pxSizerFlags;
|
||||
/* This dialog currently assumes the IPC server is started when launching a
|
||||
/* This dialog currently assumes the PINE server is started when launching a
|
||||
* game, as such we can allow the IPC Settings window to change the slot in a
|
||||
* volatile fashion so that it returns to the default but you can change it at
|
||||
* each restart of the emulator to allow for multiple emulator sessions.
|
||||
@@ -34,25 +34,25 @@ using namespace pxSizerFlags;
|
||||
*/
|
||||
|
||||
// --------------------------------------------------------------------------------------
|
||||
// IPCDialog Implementation
|
||||
// PINEDialog Implementation
|
||||
// --------------------------------------------------------------------------------------
|
||||
|
||||
Dialogs::IPCDialog::IPCDialog(wxWindow* parent)
|
||||
: wxDialogWithHelpers(parent, _("IPC Settings"), pxDialogFlags())
|
||||
Dialogs::PINEDialog::PINEDialog(wxWindow* parent)
|
||||
: wxDialogWithHelpers(parent, _("PINE Settings"), pxDialogFlags())
|
||||
{
|
||||
wxTextCtrl* ipc_slot = new wxTextCtrl(this, wxID_ANY, wxString::Format(wxT("%u"), IPCSettings::slot), wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER);
|
||||
ipc_slot->Bind(wxEVT_TEXT_ENTER, &Dialogs::IPCDialog::OnConfirm, this);
|
||||
wxTextCtrl* ipc_slot = new wxTextCtrl(this, wxID_ANY, wxString::Format(wxT("%u"), PINESettings::slot), wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER);
|
||||
ipc_slot->Bind(wxEVT_TEXT_ENTER, &Dialogs::PINEDialog::OnConfirm, this);
|
||||
|
||||
*this += new wxStaticText(this, wxID_ANY, _("IPC Slot"));
|
||||
*this += new wxStaticText(this, wxID_ANY, _("PINE Slot"));
|
||||
*this += ipc_slot;
|
||||
}
|
||||
|
||||
void Dialogs::IPCDialog::OnConfirm(wxCommandEvent& evt)
|
||||
void Dialogs::PINEDialog::OnConfirm(wxCommandEvent& evt)
|
||||
{
|
||||
wxTextCtrl* obj = static_cast<wxTextCtrl*>(evt.GetEventObject());
|
||||
if (obj != nullptr)
|
||||
{
|
||||
IPCSettings::slot = (unsigned int)atoi(obj->GetValue().ToUTF8().data());
|
||||
PINESettings::slot = (unsigned int)atoi(obj->GetValue().ToUTF8().data());
|
||||
Destroy();
|
||||
}
|
||||
}
|
||||
@@ -262,8 +262,8 @@ void MainEmuFrame::ConnectMenus()
|
||||
|
||||
Bind(wxEVT_MENU, &MainEmuFrame::Menu_EnablePatches_Click, this, MenuId_EnablePatches);
|
||||
Bind(wxEVT_MENU, &MainEmuFrame::Menu_EnableCheats_Click, this, MenuId_EnableCheats);
|
||||
Bind(wxEVT_MENU, &MainEmuFrame::Menu_IPC_Enable_Click, this, MenuId_IPC_Enable);
|
||||
Bind(wxEVT_MENU, &MainEmuFrame::Menu_IPC_Settings_Click, this, MenuId_IPC_Settings);
|
||||
Bind(wxEVT_MENU, &MainEmuFrame::Menu_PINE_Enable_Click, this, MenuId_PINE_Enable);
|
||||
Bind(wxEVT_MENU, &MainEmuFrame::Menu_PINE_Settings_Click, this, MenuId_PINE_Settings);
|
||||
Bind(wxEVT_MENU, &MainEmuFrame::Menu_EnableWideScreenPatches_Click, this, MenuId_EnableWideScreenPatches);
|
||||
#ifndef DISABLE_RECORDING
|
||||
Bind(wxEVT_MENU, &MainEmuFrame::Menu_EnableRecordingTools_Click, this, MenuId_EnableInputRecording);
|
||||
@@ -395,12 +395,12 @@ void MainEmuFrame::CreatePcsx2Menu()
|
||||
m_GameSettingsSubmenu.Append(MenuId_EnableCheats, _("Enable &Cheats"),
|
||||
_("Use cheats otherwise known as pnachs from the cheats folder."), wxITEM_CHECK);
|
||||
|
||||
m_GameSettingsSubmenu.Append(MenuId_IPC, _("Configure &IPC"), &m_submenuIPC);
|
||||
m_GameSettingsSubmenu.Append(MenuId_PINE, _("Configure &PINE"), &m_submenuPINE);
|
||||
|
||||
m_submenuIPC.Append(MenuId_IPC_Enable, _("&Enable IPC"),
|
||||
m_submenuPINE.Append(MenuId_PINE_Enable, _("&Enable PINE"),
|
||||
wxEmptyString, wxITEM_CHECK);
|
||||
|
||||
m_submenuIPC.Append(MenuId_IPC_Settings, _("IPC &Settings"));
|
||||
m_submenuPINE.Append(MenuId_PINE_Settings, _("PINE &Settings"));
|
||||
|
||||
m_GameSettingsSubmenu.Append(MenuId_EnableWideScreenPatches, _("Enable &Widescreen Patches"),
|
||||
_("Enabling Widescreen Patches may occasionally cause issues."), wxITEM_CHECK);
|
||||
@@ -568,7 +568,7 @@ MainEmuFrame::MainEmuFrame(wxWindow* parent, const wxString& title)
|
||||
, m_menuWindow(*new wxMenu())
|
||||
, m_menuCapture(*new wxMenu())
|
||||
, m_submenuVideoCapture(*new wxMenu())
|
||||
, m_submenuIPC(*new wxMenu())
|
||||
, m_submenuPINE(*new wxMenu())
|
||||
, m_submenuScreenshot(*new wxMenu())
|
||||
#ifndef DISABLE_RECORDING
|
||||
, m_menuRecording(*new wxMenu())
|
||||
@@ -830,7 +830,7 @@ void MainEmuFrame::ApplyConfigToGui(AppConfig& configToApply, int flags)
|
||||
{ //these should not be affected by presets
|
||||
menubar.Check(MenuId_EnableBackupStates, configToApply.EmuOptions.BackupSavestate);
|
||||
menubar.Check(MenuId_EnableCheats, configToApply.EmuOptions.EnableCheats);
|
||||
menubar.Check(MenuId_IPC_Enable, configToApply.EmuOptions.EnableIPC);
|
||||
menubar.Check(MenuId_PINE_Enable, configToApply.EmuOptions.EnablePINE);
|
||||
menubar.Check(MenuId_EnableWideScreenPatches, configToApply.EmuOptions.EnableWideScreenPatches);
|
||||
menubar.Check(MenuId_Capture_Video_IncludeAudio, configToApply.AudioCapture.EnableAudio);
|
||||
#ifndef DISABLE_RECORDING
|
||||
|
||||
@@ -69,7 +69,7 @@ protected:
|
||||
|
||||
wxMenu& m_menuCapture;
|
||||
wxMenu& m_submenuVideoCapture;
|
||||
wxMenu& m_submenuIPC;
|
||||
wxMenu& m_submenuPINE;
|
||||
wxMenu& m_submenuScreenshot;
|
||||
|
||||
#ifndef DISABLE_RECORDING
|
||||
@@ -165,8 +165,8 @@ protected:
|
||||
void Menu_EnableBackupStates_Click(wxCommandEvent& event);
|
||||
void Menu_EnablePatches_Click(wxCommandEvent& event);
|
||||
void Menu_EnableCheats_Click(wxCommandEvent& event);
|
||||
void Menu_IPC_Enable_Click(wxCommandEvent& event);
|
||||
void Menu_IPC_Settings_Click(wxCommandEvent& event);
|
||||
void Menu_PINE_Enable_Click(wxCommandEvent& event);
|
||||
void Menu_PINE_Settings_Click(wxCommandEvent& event);
|
||||
void Menu_EnableWideScreenPatches_Click(wxCommandEvent& event);
|
||||
#ifndef DISABLE_RECORDING
|
||||
void Menu_EnableRecordingTools_Click(wxCommandEvent& event);
|
||||
|
||||
@@ -54,9 +54,9 @@ void MainEmuFrame::Menu_SysSettings_Click(wxCommandEvent& event)
|
||||
AppOpenModalDialog<SysConfigDialog>(wxEmptyString, this);
|
||||
}
|
||||
|
||||
void MainEmuFrame::Menu_IPC_Settings_Click(wxCommandEvent& event)
|
||||
void MainEmuFrame::Menu_PINE_Settings_Click(wxCommandEvent& event)
|
||||
{
|
||||
AppOpenDialog<IPCDialog>(this);
|
||||
AppOpenDialog<PINEDialog>(this);
|
||||
}
|
||||
|
||||
void MainEmuFrame::Menu_AudioSettings_Click(wxCommandEvent& event)
|
||||
@@ -634,9 +634,9 @@ void MainEmuFrame::Menu_EnableCheats_Click(wxCommandEvent&)
|
||||
AppSaveSettings();
|
||||
}
|
||||
|
||||
void MainEmuFrame::Menu_IPC_Enable_Click(wxCommandEvent&)
|
||||
void MainEmuFrame::Menu_PINE_Enable_Click(wxCommandEvent&)
|
||||
{
|
||||
g_Conf->EmuOptions.EnableIPC = GetMenuBar()->IsChecked(MenuId_IPC_Enable);
|
||||
g_Conf->EmuOptions.EnablePINE = GetMenuBar()->IsChecked(MenuId_PINE_Enable);
|
||||
AppApplySettings();
|
||||
AppSaveSettings();
|
||||
}
|
||||
|
||||
+17
-17
@@ -71,19 +71,19 @@
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<None Include="GS\res\glsl\common_header.glsl" />
|
||||
<None Include="GS\res\glsl\convert.glsl" />
|
||||
<None Include="GS\res\glsl\interlace.glsl" />
|
||||
<None Include="GS\res\glsl\merge.glsl" />
|
||||
<None Include="GS\res\glsl\shadeboost.glsl" />
|
||||
<None Include="GS\res\glsl\tfx_fs.glsl" />
|
||||
<None Include="GS\res\glsl\tfx_vgs.glsl" />
|
||||
<None Include="GS\res\convert.fx" />
|
||||
<None Include="GS\res\fxaa.fx" />
|
||||
<None Include="GS\res\interlace.fx" />
|
||||
<None Include="GS\res\merge.fx" />
|
||||
<None Include="GS\res\shadeboost.fx" />
|
||||
<None Include="GS\res\tfx.fx" />
|
||||
<None Include="..\bin\resources\shaders\opengl\common_header.glsl" />
|
||||
<None Include="..\bin\resources\shaders\opengl\convert.glsl" />
|
||||
<None Include="..\bin\resources\shaders\opengl\interlace.glsl" />
|
||||
<None Include="..\bin\resources\shaders\opengl\merge.glsl" />
|
||||
<None Include="..\bin\resources\shaders\opengl\shadeboost.glsl" />
|
||||
<None Include="..\bin\resources\shaders\opengl\tfx_fs.glsl" />
|
||||
<None Include="..\bin\resources\shaders\opengl\tfx_vgs.glsl" />
|
||||
<None Include="..\bin\resources\shaders\dx11\convert.fx" />
|
||||
<None Include="..\bin\resources\shaders\common\fxaa.fx" />
|
||||
<None Include="..\bin\resources\shaders\dx11\interlace.fx" />
|
||||
<None Include="..\bin\resources\shaders\dx11\merge.fx" />
|
||||
<None Include="..\bin\resources\shaders\dx11\shadeboost.fx" />
|
||||
<None Include="..\bin\resources\shaders\dx11\tfx.fx" />
|
||||
<None Include="PAD\Windows\Default.ini" />
|
||||
<None Include="Utilities\folderdesc.txt" />
|
||||
<None Include="Docs\License.txt" />
|
||||
@@ -318,7 +318,7 @@
|
||||
<ClCompile Include="gui\Debugger\DebugEvents.cpp" />
|
||||
<ClCompile Include="gui\Debugger\DebuggerLists.cpp" />
|
||||
<ClCompile Include="gui\Debugger\DisassemblyDialog.cpp" />
|
||||
<ClCompile Include="gui\Dialogs\IPCDialog.cpp" />
|
||||
<ClCompile Include="gui\Dialogs\PINEDialog.cpp" />
|
||||
<ClCompile Include="gui\Dialogs\GSDumpDialog.cpp" />
|
||||
<ClCompile Include="gui\Dialogs\McdConfigDialog.cpp" />
|
||||
<ClCompile Include="gui\DriveList.cpp" />
|
||||
@@ -331,7 +331,7 @@
|
||||
<ClCompile Include="gui\wxAppWithHelpers.cpp" />
|
||||
<ClCompile Include="gui\wxSettingsInterface.cpp" />
|
||||
<ClCompile Include="IopGte.cpp" />
|
||||
<ClCompile Include="IPC.cpp" />
|
||||
<ClCompile Include="PINE.cpp" />
|
||||
<ClCompile Include="FW.cpp" />
|
||||
<ClCompile Include="MemoryCardFile.cpp" />
|
||||
<ClCompile Include="MemoryCardFolder.cpp" />
|
||||
@@ -767,7 +767,7 @@
|
||||
<ClInclude Include="gui\wxSettingsInterface.h" />
|
||||
<ClInclude Include="Host.h" />
|
||||
<ClInclude Include="IopGte.h" />
|
||||
<ClInclude Include="IPC.h" />
|
||||
<ClInclude Include="PINE.h" />
|
||||
<ClInclude Include="FW.h" />
|
||||
<ClInclude Include="MemoryCardFile.h" />
|
||||
<ClInclude Include="MemoryCardFolder.h" />
|
||||
@@ -1169,4 +1169,4 @@
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets" />
|
||||
</Project>
|
||||
</Project>
|
||||
|
||||
+16
-16
@@ -330,43 +330,43 @@
|
||||
<None Include="PAD\Windows\Default.ini">
|
||||
<Filter>System\Ps2\PAD</Filter>
|
||||
</None>
|
||||
<None Include="GS\res\glsl\common_header.glsl">
|
||||
<None Include="..\bin\resources\shaders\opengl\common_header.glsl">
|
||||
<Filter>System\Ps2\GS\Shaders</Filter>
|
||||
</None>
|
||||
<None Include="GS\res\glsl\convert.glsl">
|
||||
<None Include="..\bin\resources\shaders\opengl\convert.glsl">
|
||||
<Filter>System\Ps2\GS\Shaders</Filter>
|
||||
</None>
|
||||
<None Include="GS\res\glsl\interlace.glsl">
|
||||
<None Include="..\bin\resources\shaders\opengl\interlace.glsl">
|
||||
<Filter>System\Ps2\GS\Shaders</Filter>
|
||||
</None>
|
||||
<None Include="GS\res\glsl\merge.glsl">
|
||||
<None Include="..\bin\resources\shaders\opengl\merge.glsl">
|
||||
<Filter>System\Ps2\GS\Shaders</Filter>
|
||||
</None>
|
||||
<None Include="GS\res\glsl\shadeboost.glsl">
|
||||
<None Include="..\bin\resources\shaders\opengl\shadeboost.glsl">
|
||||
<Filter>System\Ps2\GS\Shaders</Filter>
|
||||
</None>
|
||||
<None Include="GS\res\glsl\tfx_fs.glsl">
|
||||
<None Include="..\bin\resources\shaders\opengl\tfx_fs.glsl">
|
||||
<Filter>System\Ps2\GS\Shaders</Filter>
|
||||
</None>
|
||||
<None Include="GS\res\glsl\tfx_vgs.glsl">
|
||||
<None Include="..\bin\resources\shaders\opengl\tfx_vgs.glsl">
|
||||
<Filter>System\Ps2\GS\Shaders</Filter>
|
||||
</None>
|
||||
<None Include="GS\res\convert.fx">
|
||||
<None Include="..\bin\resources\shaders\dx11\convert.fx">
|
||||
<Filter>System\Ps2\GS\Shaders</Filter>
|
||||
</None>
|
||||
<None Include="GS\res\fxaa.fx">
|
||||
<None Include="..\bin\resources\shaders\common\fxaa.fx">
|
||||
<Filter>System\Ps2\GS\Shaders</Filter>
|
||||
</None>
|
||||
<None Include="GS\res\interlace.fx">
|
||||
<None Include="..\bin\resources\shaders\dx11\interlace.fx">
|
||||
<Filter>System\Ps2\GS\Shaders</Filter>
|
||||
</None>
|
||||
<None Include="GS\res\merge.fx">
|
||||
<None Include="..\bin\resources\shaders\dx11\merge.fx">
|
||||
<Filter>System\Ps2\GS\Shaders</Filter>
|
||||
</None>
|
||||
<None Include="GS\res\shadeboost.fx">
|
||||
<None Include="..\bin\resources\shaders\dx11\shadeboost.fx">
|
||||
<Filter>System\Ps2\GS\Shaders</Filter>
|
||||
</None>
|
||||
<None Include="GS\res\tfx.fx">
|
||||
<None Include="..\bin\resources\shaders\dx11\tfx.fx">
|
||||
<Filter>System\Ps2\GS\Shaders</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
@@ -1052,7 +1052,7 @@
|
||||
<ClCompile Include="gui\DriveList.cpp">
|
||||
<Filter>AppHost</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="IPC.cpp">
|
||||
<ClCompile Include="PINE.cpp">
|
||||
<Filter>System</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="FW.cpp">
|
||||
@@ -1466,7 +1466,7 @@
|
||||
<ClCompile Include="GS\GSLzma.cpp">
|
||||
<Filter>System\Ps2\GS</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="gui\Dialogs\IPCDialog.cpp">
|
||||
<ClCompile Include="gui\Dialogs\PINEDialog.cpp">
|
||||
<Filter>AppHost\Dialogs</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="gui\Dialogs\GSDumpDialog.cpp">
|
||||
@@ -2141,7 +2141,7 @@
|
||||
<ClInclude Include="gui\DriveList.h">
|
||||
<Filter>AppHost\Include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="IPC.h">
|
||||
<ClInclude Include="PINE.h">
|
||||
<Filter>System\Include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="FW.h">
|
||||
|
||||
@@ -119,6 +119,8 @@ static bool LoadBiosVersion(std::FILE* fp, u32& version, std::string& descriptio
|
||||
version = strtol(vermaj, (char**)NULL, 0) << 8;
|
||||
version |= strtol(vermin, (char**)NULL, 0);
|
||||
foundRomVer = true;
|
||||
|
||||
Console.WriteLn("Bios Found: %s", description.c_str());
|
||||
}
|
||||
|
||||
if ((rd.fileSize % 0x10) == 0)
|
||||
|
||||
Reference in New Issue
Block a user