mirror of https://github.com/PCSX2/pcsx2.git
parent
513f377a8f
commit
7295837135
|
@ -82,14 +82,6 @@ endif()
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------
|
|
||||||
# GSnull
|
|
||||||
#---------------------------------------
|
|
||||||
if(GTKn_FOUND AND EXTRA_PLUGINS)
|
|
||||||
set(GSnull TRUE)
|
|
||||||
endif()
|
|
||||||
#---------------------------------------
|
|
||||||
|
|
||||||
#---------------------------------------
|
#---------------------------------------
|
||||||
# GSdx
|
# GSdx
|
||||||
#---------------------------------------
|
#---------------------------------------
|
||||||
|
|
|
@ -8,11 +8,11 @@ Copyright:
|
||||||
2010-2012 Miguel Colon <debian.micove@gmail.com>
|
2010-2012 Miguel Colon <debian.micove@gmail.com>
|
||||||
License: LGPL-3
|
License: LGPL-3
|
||||||
|
|
||||||
Files: pcsx2/* common/* plugins/GSnull/*
|
Files: pcsx2/* common/*
|
||||||
Copyright: 2002-2012 PCSX2 Dev Team
|
Copyright: 2002-2012 PCSX2 Dev Team
|
||||||
License: LGPL-3+
|
License: LGPL-3+
|
||||||
|
|
||||||
Files: pcsx2/Mdec.cpp pcsx2/Mdec.h pcsx2/RDebug/deci2_drfp.cpp pcsx2/IPU/mpeg2lib/* pcsx2/cheatscpp.h common/include/api/* plugins/GSnull/Registers.h plugins/GSnull/Linux/Linux* plugins/GSnull/Linux/Config*
|
Files: pcsx2/Mdec.cpp pcsx2/Mdec.h pcsx2/RDebug/deci2_drfp.cpp pcsx2/IPU/mpeg2lib/* pcsx2/cheatscpp.h common/include/api/*
|
||||||
Copyright: 2002-2012 PCSX2 Dev Team
|
Copyright: 2002-2012 PCSX2 Dev Team
|
||||||
License: GPL-2+
|
License: GPL-2+
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ PARSE_EXTS=true
|
||||||
# file types to parse. Only effective when PARSE_EXTS is true.
|
# file types to parse. Only effective when PARSE_EXTS is true.
|
||||||
FILE_EXTS=".c .h .cpp .hpp .inl"
|
FILE_EXTS=".c .h .cpp .hpp .inl"
|
||||||
|
|
||||||
ALLOWED_ROOT_DIR="./plugins/GSnull ./common"
|
ALLOWED_ROOT_DIR="./common"
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
# There should be no need to change anything below this line.
|
# There should be no need to change anything below this line.
|
||||||
|
|
|
@ -10,6 +10,3 @@ if(EXISTS "${CMAKE_SOURCE_DIR}/plugins/GSdx" AND GSdx)
|
||||||
add_subdirectory(GSdx)
|
add_subdirectory(GSdx)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(EXISTS "${CMAKE_SOURCE_DIR}/plugins/GSnull" AND GSnull)
|
|
||||||
add_subdirectory(GSnull)
|
|
||||||
endif()
|
|
||||||
|
|
|
@ -1,78 +0,0 @@
|
||||||
# Check that people use the good file
|
|
||||||
if(NOT TOP_CMAKE_WAS_SOURCED)
|
|
||||||
message(FATAL_ERROR "
|
|
||||||
You did not 'cmake' the good CMakeLists.txt file. Use the one in the top dir.
|
|
||||||
It is advice to delete all wrongly generated cmake stuff => CMakeFiles & CMakeCache.txt")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
# plugin name
|
|
||||||
set(Output GSnull)
|
|
||||||
|
|
||||||
set(GSnullFinalFlags
|
|
||||||
-fvisibility=hidden
|
|
||||||
-Wall
|
|
||||||
-Wno-parentheses
|
|
||||||
)
|
|
||||||
|
|
||||||
# GSnull sources
|
|
||||||
set(GSnullSources
|
|
||||||
GifTransfer.cpp
|
|
||||||
GS.cpp
|
|
||||||
GSLog.cpp
|
|
||||||
Registers.cpp)
|
|
||||||
|
|
||||||
# GSnull headers
|
|
||||||
set(GSnullHeaders
|
|
||||||
GifTransfer.h
|
|
||||||
GS.h
|
|
||||||
Registers.h)
|
|
||||||
|
|
||||||
# GSnull Linux sources
|
|
||||||
set(GSnullLinuxSources
|
|
||||||
Linux/Config.cpp
|
|
||||||
Linux/GSLinux.cpp
|
|
||||||
Linux/Linux.cpp)
|
|
||||||
|
|
||||||
# GSnull Linux headers
|
|
||||||
set(GSnullLinuxHeaders
|
|
||||||
Linux/Config.h
|
|
||||||
Linux/GSLinux.h
|
|
||||||
Linux/Linux.h)
|
|
||||||
|
|
||||||
# GSnull null sources
|
|
||||||
set(GSnullnullSources
|
|
||||||
null/GSnull.cpp)
|
|
||||||
|
|
||||||
# GSnull null headers
|
|
||||||
set(GSnullnullHeaders
|
|
||||||
null/GSnull.h)
|
|
||||||
|
|
||||||
# GSnull Windows sources
|
|
||||||
set(GSnullWindowsSources
|
|
||||||
Windows/Config.cpp
|
|
||||||
Windows/GS.def
|
|
||||||
Windows/GS.rc
|
|
||||||
Windows/GSwin.cpp
|
|
||||||
Windows/Win32.cpp)
|
|
||||||
|
|
||||||
# GSnull Windows headers
|
|
||||||
set(GSnullWindowsHeaders
|
|
||||||
)
|
|
||||||
|
|
||||||
set(GSnullFinalSources
|
|
||||||
${GSnullSources}
|
|
||||||
${GSnullHeaders}
|
|
||||||
${GSnullnullSources}
|
|
||||||
${GSnullnullHeaders}
|
|
||||||
${GSnullLinuxSources}
|
|
||||||
${GSnullLinuxHeaders}
|
|
||||||
)
|
|
||||||
|
|
||||||
set(GSnullFinalLibs
|
|
||||||
${GTK2_LIBRARIES}
|
|
||||||
${X11_LIBRARIES}
|
|
||||||
)
|
|
||||||
|
|
||||||
add_pcsx2_plugin(${Output} "${GSnullFinalSources}" "${GSnullFinalLibs}" "${GSnullFinalFlags}")
|
|
||||||
target_compile_features(${Output} PRIVATE cxx_std_17)
|
|
|
@ -1,290 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2002-2010 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
#include "GS.h"
|
|
||||||
#include "GifTransfer.h"
|
|
||||||
#include "null/GSnull.h"
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#include "svnrev.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const unsigned char version = PS2E_GS_VERSION;
|
|
||||||
const unsigned char revision = 0;
|
|
||||||
const unsigned char build = 1; // increase that with each version
|
|
||||||
|
|
||||||
Config conf;
|
|
||||||
u32 GSKeyEvent = 0;
|
|
||||||
bool GSShift = false, GSAlt = false;
|
|
||||||
|
|
||||||
string s_strIniPath = "inis";
|
|
||||||
extern std::string s_strLogPath;
|
|
||||||
const char *s_iniFilename = "GSnull.ini";
|
|
||||||
GSVars gs;
|
|
||||||
|
|
||||||
// Because I haven't bothered to get GSOpen2 working in Windows yet in GSNull.
|
|
||||||
#ifdef __linux__
|
|
||||||
#define USE_GSOPEN2
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void (*GSirq)();
|
|
||||||
extern void ResetRegs();
|
|
||||||
extern void SetMultithreaded();
|
|
||||||
extern void SetFrameSkip(bool skip);
|
|
||||||
extern void InitPath();
|
|
||||||
|
|
||||||
EXPORT_C_(u32)
|
|
||||||
PS2EgetLibType()
|
|
||||||
{
|
|
||||||
return PS2E_LT_GS;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
static char libraryName[256];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
EXPORT_C_(const char *)
|
|
||||||
PS2EgetLibName()
|
|
||||||
{
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
sprintf_s(libraryName, "GSnull Driver %lld%s", SVN_REV, SVN_MODS ? "m" : "");
|
|
||||||
return libraryName;
|
|
||||||
#else
|
|
||||||
return "GSnull Driver";
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(u32)
|
|
||||||
PS2EgetLibVersion2(u32 type)
|
|
||||||
{
|
|
||||||
return (version << 16) | (revision << 8) | build;
|
|
||||||
}
|
|
||||||
|
|
||||||
// basic funcs
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSsetSettingsDir(const char *dir)
|
|
||||||
{
|
|
||||||
s_strIniPath = (dir == NULL) ? "inis" : dir;
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSsetLogDir(const char *dir)
|
|
||||||
{
|
|
||||||
// Get the path to the log directory.
|
|
||||||
s_strLogPath = (dir == NULL) ? "logs" : dir;
|
|
||||||
|
|
||||||
// Reload the log file after updated the path
|
|
||||||
GSLog::Close();
|
|
||||||
GSLog::Open();
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(s32)
|
|
||||||
GSinit()
|
|
||||||
{
|
|
||||||
LoadConfig();
|
|
||||||
|
|
||||||
GSLog::Open();
|
|
||||||
|
|
||||||
GSLog::WriteLn("Initializing GSnull.");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSshutdown()
|
|
||||||
{
|
|
||||||
GSLog::WriteLn("Shutting down GSnull.");
|
|
||||||
GSCloseWindow();
|
|
||||||
GSLog::Close();
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(s32)
|
|
||||||
GSopen(void *pDsp, const char *Title, int multithread)
|
|
||||||
{
|
|
||||||
int err = 0;
|
|
||||||
GSLog::WriteLn("GS open.");
|
|
||||||
//assert( GSirq != NULL );
|
|
||||||
|
|
||||||
err = GSOpenWindow(pDsp, Title);
|
|
||||||
gs.MultiThreaded = multithread;
|
|
||||||
|
|
||||||
ResetRegs();
|
|
||||||
SetMultithreaded();
|
|
||||||
InitPath();
|
|
||||||
GSLog::WriteLn("Opening GSnull.");
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef USE_GSOPEN2
|
|
||||||
EXPORT_C_(s32)
|
|
||||||
GSopen2(void *pDsp, u32 flags)
|
|
||||||
{
|
|
||||||
GSLog::WriteLn("GS open2.");
|
|
||||||
|
|
||||||
GSOpenWindow2(pDsp, flags);
|
|
||||||
|
|
||||||
gs.MultiThreaded = true;
|
|
||||||
|
|
||||||
ResetRegs();
|
|
||||||
SetMultithreaded();
|
|
||||||
InitPath();
|
|
||||||
GSLog::WriteLn("Opening GSnull (2).");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSclose()
|
|
||||||
{
|
|
||||||
GSLog::WriteLn("Closing GSnull.");
|
|
||||||
|
|
||||||
// Better to only close the window on Shutdown. All the other plugins
|
|
||||||
// pretty much worked that way, and all old PCSX2 versions expect it as well.
|
|
||||||
//GSCloseWindow();
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSirqCallback(void (*callback)())
|
|
||||||
{
|
|
||||||
GSirq = callback;
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(s32)
|
|
||||||
GSfreeze(int mode, freezeData *data)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(s32)
|
|
||||||
GStest()
|
|
||||||
{
|
|
||||||
GSLog::WriteLn("Testing GSnull.");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSvsync(int field)
|
|
||||||
{
|
|
||||||
GSProcessMessages();
|
|
||||||
}
|
|
||||||
|
|
||||||
// returns the last tag processed (64 bits)
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSgetLastTag(u64 *ptag)
|
|
||||||
{
|
|
||||||
*(u32 *)ptag = gs.nPath3Hack;
|
|
||||||
gs.nPath3Hack = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSgifSoftReset(u32 mask)
|
|
||||||
{
|
|
||||||
GSLog::WriteLn("Doing a soft reset of the GS plugin.");
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSreadFIFO(u64 *mem)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSreadFIFO2(u64 *mem, int qwc)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// extended funcs
|
|
||||||
|
|
||||||
// GSkeyEvent gets called when there is a keyEvent from the PAD plugin
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSkeyEvent(keyEvent *ev)
|
|
||||||
{
|
|
||||||
HandleKeyEvent(ev);
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSchangeSaveState(int, const char *filename)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSmakeSnapshot(char *path)
|
|
||||||
{
|
|
||||||
|
|
||||||
GSLog::WriteLn("Taking a snapshot.");
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSmakeSnapshot2(char *pathname, int *snapdone, int savejpg)
|
|
||||||
{
|
|
||||||
GSLog::WriteLn("Taking a snapshot to %s.", pathname);
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSsetBaseMem(void *)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSsetGameCRC(int crc, int gameoptions)
|
|
||||||
{
|
|
||||||
GSLog::WriteLn("Setting the crc to '%x' with 0x%x for options.", crc, gameoptions);
|
|
||||||
}
|
|
||||||
|
|
||||||
// controls frame skipping in the GS, if this routine isn't present, frame skipping won't be done
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSsetFrameSkip(int frameskip)
|
|
||||||
{
|
|
||||||
SetFrameSkip(frameskip != 0);
|
|
||||||
GSLog::WriteLn("Frameskip set to %d.", frameskip);
|
|
||||||
}
|
|
||||||
|
|
||||||
// if start is 1, starts recording spu2 data, else stops
|
|
||||||
// returns a non zero value if successful
|
|
||||||
// for now, pData is not used
|
|
||||||
EXPORT_C_(int)
|
|
||||||
GSsetupRecording(int start, void *pData)
|
|
||||||
{
|
|
||||||
if (start)
|
|
||||||
GSLog::WriteLn("Pretending to record.");
|
|
||||||
else
|
|
||||||
GSLog::WriteLn("Pretending to stop recording.");
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSreset()
|
|
||||||
{
|
|
||||||
GSLog::WriteLn("Doing a reset of the GS plugin.");
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSwriteCSR(u32 value)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSgetDriverInfo(GSdriverInfo *info)
|
|
||||||
{
|
|
||||||
}
|
|
|
@ -1,93 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2002-2010 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __GS_H__
|
|
||||||
#define __GS_H__
|
|
||||||
|
|
||||||
struct _keyEvent;
|
|
||||||
typedef struct _keyEvent keyEvent;
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "Pcsx2Defs.h"
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#include "Windows/GSwin.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __linux__
|
|
||||||
#include "Linux/GSLinux.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define GSdefs
|
|
||||||
#include "PS2Edefs.h"
|
|
||||||
#include "PS2Eext.h"
|
|
||||||
|
|
||||||
#include "GifTransfer.h"
|
|
||||||
#include "null/GSnull.h"
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#define EXPORT_C_(type) extern "C" type CALLBACK
|
|
||||||
#else
|
|
||||||
#define EXPORT_C_(type) extern "C" __attribute__((stdcall, externally_visible, visibility("default"))) type
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//#define GS_LOG GSLog::Log
|
|
||||||
|
|
||||||
extern const unsigned char version;
|
|
||||||
extern const unsigned char revision;
|
|
||||||
extern const unsigned char build;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int Log;
|
|
||||||
bool path3;
|
|
||||||
} Config;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
u32 CSRw;
|
|
||||||
pathInfo path[4];
|
|
||||||
bool Path3transfer;
|
|
||||||
float q;
|
|
||||||
u32 imageTransfer;
|
|
||||||
int MultiThreaded;
|
|
||||||
int nPath3Hack;
|
|
||||||
|
|
||||||
GIFReg regs;
|
|
||||||
GIFCTXTReg ctxt_regs[2];
|
|
||||||
} GSVars;
|
|
||||||
|
|
||||||
extern GSVars gs;
|
|
||||||
|
|
||||||
extern Config conf;
|
|
||||||
extern u32 GSKeyEvent;
|
|
||||||
extern bool GSShift, GSAlt;
|
|
||||||
|
|
||||||
extern void (*GSirq)();
|
|
||||||
|
|
||||||
namespace GSLog
|
|
||||||
{
|
|
||||||
extern bool Open();
|
|
||||||
extern void Close();
|
|
||||||
extern void Log(const char *fmt, ...);
|
|
||||||
extern void Message(const char *fmt, ...);
|
|
||||||
extern void Print(const char *fmt, ...);
|
|
||||||
extern void WriteLn(const char *fmt, ...);
|
|
||||||
};
|
|
||||||
|
|
||||||
extern void SaveConfig();
|
|
||||||
extern void LoadConfig();
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,116 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2002-2010 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
#include "GS.h"
|
|
||||||
#include "GifTransfer.h"
|
|
||||||
#include "null/GSnull.h"
|
|
||||||
|
|
||||||
std::string s_strLogPath("logs");
|
|
||||||
|
|
||||||
namespace GSLog
|
|
||||||
{
|
|
||||||
FILE *gsLog;
|
|
||||||
|
|
||||||
bool Open()
|
|
||||||
{
|
|
||||||
bool result = true;
|
|
||||||
|
|
||||||
const std::string LogFile(s_strLogPath + "/GSnull.log");
|
|
||||||
|
|
||||||
gsLog = fopen(LogFile.c_str(), "w");
|
|
||||||
|
|
||||||
if (gsLog != NULL) {
|
|
||||||
setvbuf(gsLog, NULL, _IONBF, 0);
|
|
||||||
} else {
|
|
||||||
Message("Can't create log file %s.", LogFile.c_str());
|
|
||||||
result = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
WriteLn("GSnull plugin version %d,%d", revision, build);
|
|
||||||
WriteLn("GS init.");
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Close()
|
|
||||||
{
|
|
||||||
if (gsLog) {
|
|
||||||
fclose(gsLog);
|
|
||||||
gsLog = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Log(const char *fmt, ...)
|
|
||||||
{
|
|
||||||
va_list list;
|
|
||||||
|
|
||||||
if (!conf.Log || gsLog == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
va_start(list, fmt);
|
|
||||||
vfprintf(gsLog, fmt, list);
|
|
||||||
va_end(list);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Message(const char *fmt, ...)
|
|
||||||
{
|
|
||||||
va_list list;
|
|
||||||
char msg[512];
|
|
||||||
|
|
||||||
va_start(list, fmt);
|
|
||||||
vsprintf(msg, fmt, list);
|
|
||||||
va_end(list);
|
|
||||||
|
|
||||||
SysMessage("%s\n", msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Print(const char *fmt, ...)
|
|
||||||
{
|
|
||||||
va_list list;
|
|
||||||
char msg[512];
|
|
||||||
|
|
||||||
va_start(list, fmt);
|
|
||||||
vsprintf(msg, fmt, list);
|
|
||||||
va_end(list);
|
|
||||||
|
|
||||||
Log(msg);
|
|
||||||
fprintf(stderr, "GSnull:%s", msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void WriteLn(const char *fmt, ...)
|
|
||||||
{
|
|
||||||
va_list list;
|
|
||||||
char msg[512];
|
|
||||||
|
|
||||||
va_start(list, fmt);
|
|
||||||
vsprintf(msg, fmt, list);
|
|
||||||
va_end(list);
|
|
||||||
|
|
||||||
Log("%s\n", msg);
|
|
||||||
fprintf(stderr, "GSnull:%s\n", msg);
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,187 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2002-2010 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
// Processes a GIFtag & packet, and throws out some gsIRQs as needed.
|
|
||||||
// Used to keep interrupts in sync with the EE, while the GS itself
|
|
||||||
// runs potentially several frames behind.
|
|
||||||
// size - size of the packet in simd128's
|
|
||||||
|
|
||||||
#include "GS.h"
|
|
||||||
#include "GifTransfer.h"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
extern GSVars gs;
|
|
||||||
|
|
||||||
PCSX2_ALIGNED16(u8 g_RealGSMem[0x2000]);
|
|
||||||
|
|
||||||
template <int index>
|
|
||||||
void _GSgifTransfer(const u32 *pMem, u32 size)
|
|
||||||
{
|
|
||||||
// FUNCLOG
|
|
||||||
|
|
||||||
pathInfo *path = &gs.path[index];
|
|
||||||
|
|
||||||
while (size > 0) {
|
|
||||||
//GSLog::Writeln(_T("Transfer(%08x, %d) START\n"), pMem, size);
|
|
||||||
if (path->nloop == 0) {
|
|
||||||
path->setTag(pMem);
|
|
||||||
pMem += 4;
|
|
||||||
size--;
|
|
||||||
|
|
||||||
// eeuser 7.2.2. GIFtag: "... when NLOOP is 0, the GIF does not output anything, and
|
|
||||||
// values other than the EOP field are disregarded."
|
|
||||||
if (path->nloop > 0) {
|
|
||||||
gs.q = 1.0f;
|
|
||||||
|
|
||||||
if (path->tag.PRE && (path->tag.FLG == GIF_FLG_PACKED)) {
|
|
||||||
u32 tagprim = path->tag.PRIM;
|
|
||||||
GIFRegHandlerPRIM((u32 *)&tagprim);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
switch (path->mode) {
|
|
||||||
case GIF_FLG_PACKED: {
|
|
||||||
// first try a shortcut for a very common case
|
|
||||||
|
|
||||||
if (path->adonly && size >= path->nloop) {
|
|
||||||
size -= path->nloop;
|
|
||||||
|
|
||||||
do {
|
|
||||||
GIFPackedRegHandlerA_D(pMem);
|
|
||||||
|
|
||||||
pMem += 4; //sizeof(GIFPackedReg)/4;
|
|
||||||
} while (--path->nloop > 0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
do {
|
|
||||||
u32 reg = path->GetReg();
|
|
||||||
GIFPackedRegHandlers[reg](pMem);
|
|
||||||
|
|
||||||
pMem += 4; //sizeof(GIFPackedReg)/4;
|
|
||||||
size--;
|
|
||||||
} while (path->StepReg() && (size > 0));
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case GIF_FLG_REGLIST: {
|
|
||||||
//GSLog::Writeln("%8.8x%8.8x %d L", ((u32*)&gs.regs)[1], *(u32*)&gs.regs, path->tag.nreg/4);
|
|
||||||
|
|
||||||
size *= 2;
|
|
||||||
|
|
||||||
do {
|
|
||||||
GIFRegHandlers[path->GetReg()](pMem);
|
|
||||||
|
|
||||||
pMem += 2;
|
|
||||||
size--;
|
|
||||||
} while (path->StepReg() && (size > 0));
|
|
||||||
|
|
||||||
if (size & 1)
|
|
||||||
pMem += 2;
|
|
||||||
size /= 2;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case GIF_FLG_IMAGE: // FROM_VFRAM
|
|
||||||
case GIF_FLG_IMAGE2: // Used in the DirectX version, so we'll use it here too.
|
|
||||||
{
|
|
||||||
int len = min(size, path->nloop);
|
|
||||||
//GSLog::Writeln("GIF_FLG_IMAGE(%d)=%d", gs.imageTransfer, len);
|
|
||||||
|
|
||||||
switch (gs.imageTransfer) {
|
|
||||||
case 0:
|
|
||||||
//TransferHostLocal(pMem, len * 4);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
// This can't happen; downloads can not be started or performed as part of
|
|
||||||
// a GIFtag operation. They're an entirely separate process that can only be
|
|
||||||
// done through the ReverseFIFO transfer (aka ReadFIFO). --air
|
|
||||||
assert(0);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
// //TransferLocalLocal();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
//assert(0);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
//assert(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
pMem += len * 4;
|
|
||||||
|
|
||||||
path->nloop -= len;
|
|
||||||
size -= len;
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
default: // GIF_IMAGE
|
|
||||||
GSLog::WriteLn("*** WARNING **** Unexpected GIFTag flag.");
|
|
||||||
assert(0);
|
|
||||||
path->nloop = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#define DO_GIF_TRANSFERS
|
|
||||||
|
|
||||||
// Obsolete. Included because it's still in GSdef.
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSgifTransfer1(u32 *pMem, u32 addr)
|
|
||||||
{
|
|
||||||
#ifdef DO_GIF_TRANSFERS
|
|
||||||
_GSgifTransfer<0>((u32 *)((u8 *)pMem + addr), (0x4000 - addr) / 16);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSgifTransfer(const u32 *pMem, u32 size)
|
|
||||||
{
|
|
||||||
#ifdef DO_GIF_TRANSFERS
|
|
||||||
_GSgifTransfer<3>(const_cast<u32 *>(pMem), size);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSgifTransfer2(u32 *pMem, u32 size)
|
|
||||||
{
|
|
||||||
#ifdef DO_GIF_TRANSFERS
|
|
||||||
_GSgifTransfer<1>(const_cast<u32 *>(pMem), size);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSgifTransfer3(u32 *pMem, u32 size)
|
|
||||||
{
|
|
||||||
#ifdef DO_GIF_TRANSFERS
|
|
||||||
_GSgifTransfer<2>(const_cast<u32 *>(pMem), size);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void InitPath()
|
|
||||||
{
|
|
||||||
gs.path[0].mode = gs.path[1].mode = gs.path[2].mode = gs.path[3].mode = 0;
|
|
||||||
}
|
|
|
@ -1,132 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2002-2010 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __GIF_TRANSFER_H__
|
|
||||||
#define __GIF_TRANSFER_H__
|
|
||||||
|
|
||||||
#include <assert.h>
|
|
||||||
#include <algorithm>
|
|
||||||
#include "Registers.h"
|
|
||||||
|
|
||||||
enum GIF_FLG {
|
|
||||||
GIF_FLG_PACKED = 0,
|
|
||||||
GIF_FLG_REGLIST = 1,
|
|
||||||
GIF_FLG_IMAGE = 2,
|
|
||||||
GIF_FLG_IMAGE2 = 3
|
|
||||||
};
|
|
||||||
|
|
||||||
//
|
|
||||||
// GIFTag
|
|
||||||
union GIFTag
|
|
||||||
{
|
|
||||||
u64 ai64[2];
|
|
||||||
u32 ai32[4];
|
|
||||||
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
u32 NLOOP : 15;
|
|
||||||
u32 EOP : 1;
|
|
||||||
u32 _PAD1 : 16;
|
|
||||||
u32 _PAD2 : 14;
|
|
||||||
u32 PRE : 1;
|
|
||||||
u32 PRIM : 11;
|
|
||||||
u32 FLG : 2; // enum GIF_FLG
|
|
||||||
u32 NREG : 4;
|
|
||||||
u64 REGS : 64;
|
|
||||||
};
|
|
||||||
|
|
||||||
void set(const u32 *data)
|
|
||||||
{
|
|
||||||
for (int i = 0; i <= 3; i++) {
|
|
||||||
ai32[i] = data[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
GIFTag(u32 *data)
|
|
||||||
{
|
|
||||||
set(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
GIFTag()
|
|
||||||
{
|
|
||||||
ai64[0] = 0;
|
|
||||||
ai64[1] = 0;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// EE part. Data transfer packet description
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
u32 mode;
|
|
||||||
int reg;
|
|
||||||
u64 regs;
|
|
||||||
u32 nloop;
|
|
||||||
int eop;
|
|
||||||
int nreg;
|
|
||||||
u32 adonly;
|
|
||||||
GIFTag tag;
|
|
||||||
|
|
||||||
void setTag(const u32 *data)
|
|
||||||
{
|
|
||||||
tag.set(data);
|
|
||||||
|
|
||||||
nloop = tag.NLOOP;
|
|
||||||
eop = tag.EOP;
|
|
||||||
mode = tag.FLG;
|
|
||||||
//adonly = false;
|
|
||||||
|
|
||||||
// Hmm....
|
|
||||||
nreg = tag.NREG << 2;
|
|
||||||
if (nreg == 0)
|
|
||||||
nreg = 64;
|
|
||||||
regs = tag.REGS;
|
|
||||||
reg = 0;
|
|
||||||
//if ((nreg == 4) && (regs == GIF_REG_A_D)) adonly = true;
|
|
||||||
|
|
||||||
// GSLog::Writeln"GIFtag: %8.8lx_%8.8lx_%8.8lx_%8.8lx: EOP=%d, NLOOP=%x, FLG=%x, NREG=%d, PRE=%d",
|
|
||||||
// data[3], data[2], data[1], data[0],
|
|
||||||
// path->eop, path->nloop, mode, path->nreg, tag.PRE);
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 GetReg()
|
|
||||||
{
|
|
||||||
return (regs >> reg) & 0xf;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool StepReg()
|
|
||||||
{
|
|
||||||
reg += 4;
|
|
||||||
|
|
||||||
if (reg == nreg) {
|
|
||||||
reg = 0;
|
|
||||||
nloop--;
|
|
||||||
|
|
||||||
if (nloop == 0)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
} pathInfo;
|
|
||||||
|
|
||||||
extern void _GSgifPacket(pathInfo *path, const u32 *pMem);
|
|
||||||
extern void _GSgifRegList(pathInfo *path, const u32 *pMem);
|
|
||||||
template <int index>
|
|
||||||
extern void _GSgifTransfer(const u32 *pMem, u32 size);
|
|
||||||
extern GIFRegHandler GIFPackedRegHandlers[];
|
|
||||||
extern GIFRegHandler GIFRegHandlers[];
|
|
||||||
#endif // GIFTRANSFER_H_INCLUDED
|
|
|
@ -1,342 +0,0 @@
|
||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
Version 2, June 1991
|
|
||||||
|
|
||||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
|
||||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The licenses for most software are designed to take away your
|
|
||||||
freedom to share and change it. By contrast, the GNU General Public
|
|
||||||
License is intended to guarantee your freedom to share and change free
|
|
||||||
software--to make sure the software is free for all its users. This
|
|
||||||
General Public License applies to most of the Free Software
|
|
||||||
Foundation's software and to any other program whose authors commit to
|
|
||||||
using it. (Some other Free Software Foundation software is covered by
|
|
||||||
the GNU Library General Public License instead.) You can apply it to
|
|
||||||
your programs, too.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
|
||||||
price. Our General Public Licenses are designed to make sure that you
|
|
||||||
have the freedom to distribute copies of free software (and charge for
|
|
||||||
this service if you wish), that you receive source code or can get it
|
|
||||||
if you want it, that you can change the software or use pieces of it
|
|
||||||
in new free programs; and that you know you can do these things.
|
|
||||||
|
|
||||||
To protect your rights, we need to make restrictions that forbid
|
|
||||||
anyone to deny you these rights or to ask you to surrender the rights.
|
|
||||||
These restrictions translate to certain responsibilities for you if you
|
|
||||||
distribute copies of the software, or if you modify it.
|
|
||||||
|
|
||||||
For example, if you distribute copies of such a program, whether
|
|
||||||
gratis or for a fee, you must give the recipients all the rights that
|
|
||||||
you have. You must make sure that they, too, receive or can get the
|
|
||||||
source code. And you must show them these terms so they know their
|
|
||||||
rights.
|
|
||||||
|
|
||||||
We protect your rights with two steps: (1) copyright the software, and
|
|
||||||
(2) offer you this license which gives you legal permission to copy,
|
|
||||||
distribute and/or modify the software.
|
|
||||||
|
|
||||||
Also, for each author's protection and ours, we want to make certain
|
|
||||||
that everyone understands that there is no warranty for this free
|
|
||||||
software. If the software is modified by someone else and passed on, we
|
|
||||||
want its recipients to know that what they have is not the original, so
|
|
||||||
that any problems introduced by others will not reflect on the original
|
|
||||||
authors' reputations.
|
|
||||||
|
|
||||||
Finally, any free program is threatened constantly by software
|
|
||||||
patents. We wish to avoid the danger that redistributors of a free
|
|
||||||
program will individually obtain patent licenses, in effect making the
|
|
||||||
program proprietary. To prevent this, we have made it clear that any
|
|
||||||
patent must be licensed for everyone's free use or not licensed at all.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
|
||||||
modification follow.
|
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
||||||
|
|
||||||
0. This License applies to any program or other work which contains
|
|
||||||
a notice placed by the copyright holder saying it may be distributed
|
|
||||||
under the terms of this General Public License. The "Program", below,
|
|
||||||
refers to any such program or work, and a "work based on the Program"
|
|
||||||
means either the Program or any derivative work under copyright law:
|
|
||||||
that is to say, a work containing the Program or a portion of it,
|
|
||||||
either verbatim or with modifications and/or translated into another
|
|
||||||
language. (Hereinafter, translation is included without limitation in
|
|
||||||
the term "modification".) Each licensee is addressed as "you".
|
|
||||||
|
|
||||||
Activities other than copying, distribution and modification are not
|
|
||||||
covered by this License; they are outside its scope. The act of
|
|
||||||
running the Program is not restricted, and the output from the Program
|
|
||||||
is covered only if its contents constitute a work based on the
|
|
||||||
Program (independent of having been made by running the Program).
|
|
||||||
Whether that is true depends on what the Program does.
|
|
||||||
|
|
||||||
1. You may copy and distribute verbatim copies of the Program's
|
|
||||||
source code as you receive it, in any medium, provided that you
|
|
||||||
conspicuously and appropriately publish on each copy an appropriate
|
|
||||||
copyright notice and disclaimer of warranty; keep intact all the
|
|
||||||
notices that refer to this License and to the absence of any warranty;
|
|
||||||
and give any other recipients of the Program a copy of this License
|
|
||||||
along with the Program.
|
|
||||||
|
|
||||||
You may charge a fee for the physical act of transferring a copy, and
|
|
||||||
you may at your option offer warranty protection in exchange for a fee.
|
|
||||||
|
|
||||||
2. You may modify your copy or copies of the Program or any portion
|
|
||||||
of it, thus forming a work based on the Program, and copy and
|
|
||||||
distribute such modifications or work under the terms of Section 1
|
|
||||||
above, provided that you also meet all of these conditions:
|
|
||||||
|
|
||||||
a) You must cause the modified files to carry prominent notices
|
|
||||||
stating that you changed the files and the date of any change.
|
|
||||||
|
|
||||||
b) You must cause any work that you distribute or publish, that in
|
|
||||||
whole or in part contains or is derived from the Program or any
|
|
||||||
part thereof, to be licensed as a whole at no charge to all third
|
|
||||||
parties under the terms of this License.
|
|
||||||
|
|
||||||
c) If the modified program normally reads commands interactively
|
|
||||||
when run, you must cause it, when started running for such
|
|
||||||
interactive use in the most ordinary way, to print or display an
|
|
||||||
announcement including an appropriate copyright notice and a
|
|
||||||
notice that there is no warranty (or else, saying that you provide
|
|
||||||
a warranty) and that users may redistribute the program under
|
|
||||||
these conditions, and telling the user how to view a copy of this
|
|
||||||
License. (Exception: if the Program itself is interactive but
|
|
||||||
does not normally print such an announcement, your work based on
|
|
||||||
the Program is not required to print an announcement.)
|
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If
|
|
||||||
identifiable sections of that work are not derived from the Program,
|
|
||||||
and can be reasonably considered independent and separate works in
|
|
||||||
themselves, then this License, and its terms, do not apply to those
|
|
||||||
sections when you distribute them as separate works. But when you
|
|
||||||
distribute the same sections as part of a whole which is a work based
|
|
||||||
on the Program, the distribution of the whole must be on the terms of
|
|
||||||
this License, whose permissions for other licensees extend to the
|
|
||||||
entire whole, and thus to each and every part regardless of who wrote it.
|
|
||||||
|
|
||||||
Thus, it is not the intent of this section to claim rights or contest
|
|
||||||
your rights to work written entirely by you; rather, the intent is to
|
|
||||||
exercise the right to control the distribution of derivative or
|
|
||||||
collective works based on the Program.
|
|
||||||
|
|
||||||
In addition, mere aggregation of another work not based on the Program
|
|
||||||
with the Program (or with a work based on the Program) on a volume of
|
|
||||||
a storage or distribution medium does not bring the other work under
|
|
||||||
the scope of this License.
|
|
||||||
|
|
||||||
3. You may copy and distribute the Program (or a work based on it,
|
|
||||||
under Section 2) in object code or executable form under the terms of
|
|
||||||
Sections 1 and 2 above provided that you also do one of the following:
|
|
||||||
|
|
||||||
a) Accompany it with the complete corresponding machine-readable
|
|
||||||
source code, which must be distributed under the terms of Sections
|
|
||||||
1 and 2 above on a medium customarily used for software interchange; or,
|
|
||||||
|
|
||||||
b) Accompany it with a written offer, valid for at least three
|
|
||||||
years, to give any third party, for a charge no more than your
|
|
||||||
cost of physically performing source distribution, a complete
|
|
||||||
machine-readable copy of the corresponding source code, to be
|
|
||||||
distributed under the terms of Sections 1 and 2 above on a medium
|
|
||||||
customarily used for software interchange; or,
|
|
||||||
|
|
||||||
c) Accompany it with the information you received as to the offer
|
|
||||||
to distribute corresponding source code. (This alternative is
|
|
||||||
allowed only for noncommercial distribution and only if you
|
|
||||||
received the program in object code or executable form with such
|
|
||||||
an offer, in accord with Subsection b above.)
|
|
||||||
|
|
||||||
The source code for a work means the preferred form of the work for
|
|
||||||
making modifications to it. For an executable work, complete source
|
|
||||||
code means all the source code for all modules it contains, plus any
|
|
||||||
associated interface definition files, plus the scripts used to
|
|
||||||
control compilation and installation of the executable. However, as a
|
|
||||||
special exception, the source code distributed need not include
|
|
||||||
anything that is normally distributed (in either source or binary
|
|
||||||
form) with the major components (compiler, kernel, and so on) of the
|
|
||||||
operating system on which the executable runs, unless that component
|
|
||||||
itself accompanies the executable.
|
|
||||||
|
|
||||||
If distribution of executable or object code is made by offering
|
|
||||||
access to copy from a designated place, then offering equivalent
|
|
||||||
access to copy the source code from the same place counts as
|
|
||||||
distribution of the source code, even though third parties are not
|
|
||||||
compelled to copy the source along with the object code.
|
|
||||||
|
|
||||||
4. You may not copy, modify, sublicense, or distribute the Program
|
|
||||||
except as expressly provided under this License. Any attempt
|
|
||||||
otherwise to copy, modify, sublicense or distribute the Program is
|
|
||||||
void, and will automatically terminate your rights under this License.
|
|
||||||
However, parties who have received copies, or rights, from you under
|
|
||||||
this License will not have their licenses terminated so long as such
|
|
||||||
parties remain in full compliance.
|
|
||||||
|
|
||||||
5. You are not required to accept this License, since you have not
|
|
||||||
signed it. However, nothing else grants you permission to modify or
|
|
||||||
distribute the Program or its derivative works. These actions are
|
|
||||||
prohibited by law if you do not accept this License. Therefore, by
|
|
||||||
modifying or distributing the Program (or any work based on the
|
|
||||||
Program), you indicate your acceptance of this License to do so, and
|
|
||||||
all its terms and conditions for copying, distributing or modifying
|
|
||||||
the Program or works based on it.
|
|
||||||
|
|
||||||
6. Each time you redistribute the Program (or any work based on the
|
|
||||||
Program), the recipient automatically receives a license from the
|
|
||||||
original licensor to copy, distribute or modify the Program subject to
|
|
||||||
these terms and conditions. You may not impose any further
|
|
||||||
restrictions on the recipients' exercise of the rights granted herein.
|
|
||||||
You are not responsible for enforcing compliance by third parties to
|
|
||||||
this License.
|
|
||||||
|
|
||||||
7. If, as a consequence of a court judgment or allegation of patent
|
|
||||||
infringement or for any other reason (not limited to patent issues),
|
|
||||||
conditions are imposed on you (whether by court order, agreement or
|
|
||||||
otherwise) that contradict the conditions of this License, they do not
|
|
||||||
excuse you from the conditions of this License. If you cannot
|
|
||||||
distribute so as to satisfy simultaneously your obligations under this
|
|
||||||
License and any other pertinent obligations, then as a consequence you
|
|
||||||
may not distribute the Program at all. For example, if a patent
|
|
||||||
license would not permit royalty-free redistribution of the Program by
|
|
||||||
all those who receive copies directly or indirectly through you, then
|
|
||||||
the only way you could satisfy both it and this License would be to
|
|
||||||
refrain entirely from distribution of the Program.
|
|
||||||
|
|
||||||
If any portion of this section is held invalid or unenforceable under
|
|
||||||
any particular circumstance, the balance of the section is intended to
|
|
||||||
apply and the section as a whole is intended to apply in other
|
|
||||||
circumstances.
|
|
||||||
|
|
||||||
It is not the purpose of this section to induce you to infringe any
|
|
||||||
patents or other property right claims or to contest validity of any
|
|
||||||
such claims; this section has the sole purpose of protecting the
|
|
||||||
integrity of the free software distribution system, which is
|
|
||||||
implemented by public license practices. Many people have made
|
|
||||||
generous contributions to the wide range of software distributed
|
|
||||||
through that system in reliance on consistent application of that
|
|
||||||
system; it is up to the author/donor to decide if he or she is willing
|
|
||||||
to distribute software through any other system and a licensee cannot
|
|
||||||
impose that choice.
|
|
||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to
|
|
||||||
be a consequence of the rest of this License.
|
|
||||||
|
|
||||||
8. If the distribution and/or use of the Program is restricted in
|
|
||||||
certain countries either by patents or by copyrighted interfaces, the
|
|
||||||
original copyright holder who places the Program under this License
|
|
||||||
may add an explicit geographical distribution limitation excluding
|
|
||||||
those countries, so that distribution is permitted only in or among
|
|
||||||
countries not thus excluded. In such case, this License incorporates
|
|
||||||
the limitation as if written in the body of this License.
|
|
||||||
|
|
||||||
9. The Free Software Foundation may publish revised and/or new versions
|
|
||||||
of the General Public License from time to time. Such new versions will
|
|
||||||
be similar in spirit to the present version, but may differ in detail to
|
|
||||||
address new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the Program
|
|
||||||
specifies a version number of this License which applies to it and "any
|
|
||||||
later version", you have the option of following the terms and conditions
|
|
||||||
either of that version or of any later version published by the Free
|
|
||||||
Software Foundation. If the Program does not specify a version number of
|
|
||||||
this License, you may choose any version ever published by the Free Software
|
|
||||||
Foundation.
|
|
||||||
|
|
||||||
10. If you wish to incorporate parts of the Program into other free
|
|
||||||
programs whose distribution conditions are different, write to the author
|
|
||||||
to ask for permission. For software which is copyrighted by the Free
|
|
||||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
|
||||||
make exceptions for this. Our decision will be guided by the two goals
|
|
||||||
of preserving the free status of all derivatives of our free software and
|
|
||||||
of promoting the sharing and reuse of software generally.
|
|
||||||
|
|
||||||
NO WARRANTY
|
|
||||||
|
|
||||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
|
||||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
|
||||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
|
||||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
|
||||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
|
||||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
|
||||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
|
||||||
REPAIR OR CORRECTION.
|
|
||||||
|
|
||||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
||||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
|
||||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
|
||||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
|
||||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
|
||||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
|
||||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
|
||||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGES.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
How to Apply These Terms to Your New Programs
|
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
|
||||||
possible use to the public, the best way to achieve this is to make it
|
|
||||||
free software which everyone can redistribute and change under these terms.
|
|
||||||
|
|
||||||
To do so, attach the following notices to the program. It is safest
|
|
||||||
to attach them to the start of each source file to most effectively
|
|
||||||
convey the exclusion of warranty; and each file should have at least
|
|
||||||
the "copyright" line and a pointer to where the full notice is found.
|
|
||||||
|
|
||||||
<one line to give the program's name and a brief idea of what it does.>
|
|
||||||
Copyright (C) <year> <name of author>
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program 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 this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
If the program is interactive, make it output a short notice like this
|
|
||||||
when it starts in an interactive mode:
|
|
||||||
|
|
||||||
Gnomovision version 69, Copyright (C) year name of author
|
|
||||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
|
||||||
This is free software, and you are welcome to redistribute it
|
|
||||||
under certain conditions; type `show c' for details.
|
|
||||||
|
|
||||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
|
||||||
parts of the General Public License. Of course, the commands you use may
|
|
||||||
be called something other than `show w' and `show c'; they could even be
|
|
||||||
mouse-clicks or menu items--whatever suits your program.
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or your
|
|
||||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
|
||||||
necessary. Here is a sample; alter the names:
|
|
||||||
|
|
||||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
|
||||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
|
||||||
|
|
||||||
<signature of Ty Coon>, 1 April 1989
|
|
||||||
Ty Coon, President of Vice
|
|
||||||
|
|
||||||
This General Public License does not permit incorporating your program into
|
|
||||||
proprietary programs. If your program is a subroutine library, you may
|
|
||||||
consider it more useful to permit linking proprietary applications with the
|
|
||||||
library. If this is what you want to do, use the GNU Library General
|
|
||||||
Public License instead of this License.
|
|
||||||
|
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2004-2009 PCSX2 Team
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program 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 this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
#include "GS.h"
|
|
||||||
#include "Config.h"
|
|
||||||
#include "null/config.inl"
|
|
||||||
|
|
||||||
extern string s_strIniPath;
|
|
||||||
PluginConf Ini;
|
|
||||||
|
|
||||||
void CFGabout()
|
|
||||||
{
|
|
||||||
SysMessage("GSnull: A simple null plugin.");
|
|
||||||
}
|
|
||||||
|
|
||||||
void CFGconfigure()
|
|
||||||
{
|
|
||||||
LoadConfig();
|
|
||||||
ConfigureLogging();
|
|
||||||
SaveConfig();
|
|
||||||
}
|
|
||||||
|
|
||||||
void LoadConfig()
|
|
||||||
{
|
|
||||||
const std::string iniFile(s_strIniPath + "/GSNull.ini");
|
|
||||||
|
|
||||||
if (!Ini.Open(iniFile, READ_FILE)) {
|
|
||||||
g_plugin_log.WriteLn("failed to open %s", iniFile.c_str());
|
|
||||||
SaveConfig(); //save and return
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
conf.Log = Ini.ReadInt("logging", 0);
|
|
||||||
Ini.Close();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SaveConfig()
|
|
||||||
{
|
|
||||||
const std::string iniFile(s_strIniPath + "/GSNull.ini");
|
|
||||||
|
|
||||||
if (!Ini.Open(iniFile, WRITE_FILE)) {
|
|
||||||
g_plugin_log.WriteLn("failed to open %s", iniFile.c_str());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ini.WriteInt("logging", conf.Log);
|
|
||||||
Ini.Close();
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2004-2009 PCSX2 Team
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program 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 this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
void SaveConf();
|
|
||||||
void LoadConf();
|
|
||||||
|
|
||||||
extern long CFGmessage(char *msg);
|
|
||||||
extern void CFGconfigure();
|
|
||||||
extern void CFGabout();
|
|
|
@ -1,112 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2002-2010 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "GS.h"
|
|
||||||
#include "GSLinux.h"
|
|
||||||
|
|
||||||
Display *display;
|
|
||||||
int screen;
|
|
||||||
GtkScrolledWindow *win;
|
|
||||||
|
|
||||||
int GSOpenWindow(void *pDsp, const char *Title)
|
|
||||||
{
|
|
||||||
display = XOpenDisplay(0);
|
|
||||||
screen = DefaultScreen(display);
|
|
||||||
|
|
||||||
if (pDsp != NULL)
|
|
||||||
*(Display **)pDsp = display;
|
|
||||||
else
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int GSOpenWindow2(void *pDsp, u32 flags)
|
|
||||||
{
|
|
||||||
if (pDsp != NULL)
|
|
||||||
win = *(GtkScrolledWindow **)pDsp;
|
|
||||||
else
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSCloseWindow()
|
|
||||||
{
|
|
||||||
if (display != NULL)
|
|
||||||
XCloseDisplay(display);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSProcessMessages()
|
|
||||||
{
|
|
||||||
if (GSKeyEvent) {
|
|
||||||
int myKeyEvent = GSKeyEvent;
|
|
||||||
bool myShift = GSShift;
|
|
||||||
GSKeyEvent = 0;
|
|
||||||
|
|
||||||
switch (myKeyEvent) {
|
|
||||||
case XK_F5:
|
|
||||||
OnKeyboardF5(myShift);
|
|
||||||
break;
|
|
||||||
case XK_F6:
|
|
||||||
OnKeyboardF6(myShift);
|
|
||||||
break;
|
|
||||||
case XK_F7:
|
|
||||||
OnKeyboardF7(myShift);
|
|
||||||
break;
|
|
||||||
case XK_F9:
|
|
||||||
OnKeyboardF9(myShift);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void HandleKeyEvent(keyEvent *ev)
|
|
||||||
{
|
|
||||||
switch (ev->evt) {
|
|
||||||
case KEYPRESS:
|
|
||||||
switch (ev->key) {
|
|
||||||
case XK_F5:
|
|
||||||
case XK_F6:
|
|
||||||
case XK_F7:
|
|
||||||
case XK_F9:
|
|
||||||
GSKeyEvent = ev->key;
|
|
||||||
break;
|
|
||||||
case XK_Escape:
|
|
||||||
break;
|
|
||||||
case XK_Shift_L:
|
|
||||||
case XK_Shift_R:
|
|
||||||
GSShift = true;
|
|
||||||
break;
|
|
||||||
case XK_Alt_L:
|
|
||||||
case XK_Alt_R:
|
|
||||||
GSAlt = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case KEYRELEASE:
|
|
||||||
switch (ev->key) {
|
|
||||||
case XK_Shift_L:
|
|
||||||
case XK_Shift_R:
|
|
||||||
GSShift = false;
|
|
||||||
break;
|
|
||||||
case XK_Alt_L:
|
|
||||||
case XK_Alt_R:
|
|
||||||
GSAlt = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2002-2010 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __GSLINUX_H__
|
|
||||||
#define __GSLINUX_H__
|
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
|
||||||
#include <X11/Xlib.h>
|
|
||||||
#include <X11/keysym.h>
|
|
||||||
|
|
||||||
extern int GSOpenWindow(void *pDsp, const char *Title);
|
|
||||||
extern int GSOpenWindow2(void *pDsp, u32 flags);
|
|
||||||
extern void GSCloseWindow();
|
|
||||||
extern void GSProcessMessages();
|
|
||||||
extern void HandleKeyEvent(keyEvent *ev);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,32 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2004-2009 PCSX2 Team
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program 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 this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "GS.h"
|
|
||||||
#include "Config.h"
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSconfigure()
|
|
||||||
{
|
|
||||||
CFGconfigure();
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSabout()
|
|
||||||
{
|
|
||||||
CFGabout();
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2004-2009 PCSX2 Team
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program 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 this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
||||||
*/
|
|
|
@ -1,27 +0,0 @@
|
||||||
GSnull v0.1
|
|
||||||
-------------
|
|
||||||
|
|
||||||
This is an extension to use with play station2 emulators
|
|
||||||
as PCSX2 (only one right now).
|
|
||||||
The plugin is free open source code.
|
|
||||||
|
|
||||||
Usage:
|
|
||||||
-----
|
|
||||||
Place the file "GSnull.so.x.x.x" (linux) or "GSnull.dll" (win32)
|
|
||||||
at the Plugin directory of the Emulator to use it.
|
|
||||||
|
|
||||||
Changes:
|
|
||||||
-------
|
|
||||||
|
|
||||||
v0.1:
|
|
||||||
* First Release
|
|
||||||
* Tested with Pcsx2
|
|
||||||
* Based off of FWnull.
|
|
||||||
|
|
||||||
Authors:
|
|
||||||
-------
|
|
||||||
arcum42 <arcum42@gmail.com>
|
|
||||||
|
|
||||||
based off work by:
|
|
||||||
shadow <shadow@pcsx2.net>
|
|
||||||
linuzappz <linuzappz@hotmail.com>
|
|
|
@ -1,538 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2004-2009 PCSX2 Team
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program 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 this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "GS.h"
|
|
||||||
#include "Registers.h"
|
|
||||||
|
|
||||||
GIFRegHandler GIFPackedRegHandlers[16];
|
|
||||||
GIFRegHandler GIFRegHandlers[256];
|
|
||||||
|
|
||||||
// For now, I'm just rigging this up to store all the register information coming in, without doing
|
|
||||||
// any of the normal processing.
|
|
||||||
|
|
||||||
void __gifCall GIFPackedRegHandlerNull(const u32 *data)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// All these just call their non-packed equivalent.
|
|
||||||
void __gifCall GIFPackedRegHandlerPRIM(const u32 *data) { GIFRegHandlerPRIM(data); }
|
|
||||||
|
|
||||||
template <u32 i>
|
|
||||||
void __gifCall GIFPackedRegHandlerTEX0(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegHandlerTEX0<i>(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <u32 i>
|
|
||||||
void __gifCall GIFPackedRegHandlerCLAMP(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegHandlerCLAMP<i>(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFPackedRegHandlerTEX0_1(const u32 *data) { GIFRegHandlerTEX0<0>(data); }
|
|
||||||
void __gifCall GIFPackedRegHandlerTEX0_2(const u32 *data) { GIFRegHandlerTEX0<1>(data); }
|
|
||||||
void __gifCall GIFPackedRegHandlerCLAMP_1(const u32 *data) { GIFRegHandlerCLAMP<0>(data); }
|
|
||||||
void __gifCall GIFPackedRegHandlerCLAMP_2(const u32 *data) { GIFRegHandlerCLAMP<1>(data); }
|
|
||||||
void __gifCall GIFPackedRegHandlerXYZF3(const u32 *data) { GIFRegHandlerXYZF3(data); }
|
|
||||||
void __gifCall GIFPackedRegHandlerXYZ3(const u32 *data) { GIFRegHandlerXYZ3(data); }
|
|
||||||
|
|
||||||
void __gifCall GIFPackedRegHandlerRGBA(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFPackedRGBA *r = (GIFPackedRGBA *)(data);
|
|
||||||
gs.regs.RGBAQ.R = r->R;
|
|
||||||
gs.regs.RGBAQ.G = r->G;
|
|
||||||
gs.regs.RGBAQ.B = r->B;
|
|
||||||
gs.regs.RGBAQ.A = r->A;
|
|
||||||
gs.regs.RGBAQ.Q = gs.q;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFPackedRegHandlerSTQ(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFPackedSTQ *r = (GIFPackedSTQ *)(data);
|
|
||||||
gs.regs.ST.S = r->S;
|
|
||||||
gs.regs.ST.T = r->T;
|
|
||||||
gs.q = r->Q;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFPackedRegHandlerUV(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFPackedUV *r = (GIFPackedUV *)(data);
|
|
||||||
gs.regs.UV.U = r->U;
|
|
||||||
gs.regs.UV.V = r->V;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall KickVertex(bool adc)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFPackedRegHandlerXYZF2(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFPackedXYZF2 *r = (GIFPackedXYZF2 *)(data);
|
|
||||||
gs.regs.XYZ.X = r->X;
|
|
||||||
gs.regs.XYZ.Y = r->Y;
|
|
||||||
gs.regs.XYZ.Z = r->Z;
|
|
||||||
gs.regs.FOG.F = r->F;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFPackedRegHandlerXYZ2(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFPackedXYZ2 *r = (GIFPackedXYZ2 *)(data);
|
|
||||||
gs.regs.XYZ.X = r->X;
|
|
||||||
gs.regs.XYZ.Y = r->Y;
|
|
||||||
gs.regs.XYZ.Z = r->Z;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFPackedRegHandlerFOG(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFPackedFOG *r = (GIFPackedFOG *)(data);
|
|
||||||
gs.regs.FOG.F = r->F;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFPackedRegHandlerA_D(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFPackedA_D *r = (GIFPackedA_D *)(data);
|
|
||||||
|
|
||||||
GIFRegHandlers[r->ADDR](data);
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFPackedRegHandlerNOP(const u32 *data)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerNull(const u32 *data)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerRGBAQ(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegRGBAQ *r = (GIFRegRGBAQ *)(data);
|
|
||||||
gs.regs.RGBAQ._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerST(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegST *r = (GIFRegST *)(data);
|
|
||||||
gs.regs.ST._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerUV(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegUV *r = (GIFRegUV *)(data);
|
|
||||||
gs.regs.UV._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerXYZF2(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegXYZF *r = (GIFRegXYZF *)(data);
|
|
||||||
gs.regs.XYZF._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerXYZ2(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegXYZ *r = (GIFRegXYZ *)(data);
|
|
||||||
gs.regs.XYZ._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <u32 i>
|
|
||||||
void __gifCall GIFRegHandlerTEX0(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegTEX0 *r = (GIFRegTEX0 *)(data);
|
|
||||||
gs.ctxt_regs[i].TEX0._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <u32 i>
|
|
||||||
void __gifCall GIFRegHandlerCLAMP(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegCLAMP *r = (GIFRegCLAMP *)(data);
|
|
||||||
gs.ctxt_regs[i].CLAMP._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerFOG(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegFOG *r = (GIFRegFOG *)(data);
|
|
||||||
gs.regs.FOG.F = r->F;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerXYZF3(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegXYZF *r = (GIFRegXYZF *)(data);
|
|
||||||
gs.regs.XYZF._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerXYZ3(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegXYZ *r = (GIFRegXYZ *)(data);
|
|
||||||
gs.regs.XYZ._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerNOP(const u32 *data)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
template <u32 i>
|
|
||||||
void __fastcall GIFRegHandlerTEX1(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegTEX1 *r = (GIFRegTEX1 *)(data);
|
|
||||||
gs.ctxt_regs[i].TEX1._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <u32 i>
|
|
||||||
void __gifCall GIFRegHandlerTEX2(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegTEX2 *r = (GIFRegTEX2 *)(data);
|
|
||||||
gs.ctxt_regs[i].TEX2._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <u32 i>
|
|
||||||
void __gifCall GIFRegHandlerXYOFFSET(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegXYOFFSET *r = (GIFRegXYOFFSET *)(data);
|
|
||||||
gs.ctxt_regs[i].XYOFFSET.OFX = r->OFX;
|
|
||||||
gs.ctxt_regs[i].XYOFFSET.OFY = r->OFY;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fill out the vertex queue(prim) and the attributes.
|
|
||||||
void __gifCall GIFRegHandlerPRIM(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegPRIM *r = (GIFRegPRIM *)(data);
|
|
||||||
gs.regs.PRIM._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fill out an alternate set of attributes.
|
|
||||||
void __gifCall GIFRegHandlerPRMODE(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegPRMODE *r = (GIFRegPRMODE *)(data);
|
|
||||||
gs.regs.PRMODE._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Switch between the primary set of attributes and the secondary.
|
|
||||||
void __gifCall GIFRegHandlerPRMODECONT(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegPRMODECONT *r = (GIFRegPRMODECONT *)(data);
|
|
||||||
gs.regs.PRMODECONT._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerTEXCLUT(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegTEXCLUT *r = (GIFRegTEXCLUT *)(data);
|
|
||||||
gs.regs.TEXCLUT._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerSCANMSK(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegSCANMSK *r = (GIFRegSCANMSK *)(data);
|
|
||||||
gs.regs.SCANMSK._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <u32 i>
|
|
||||||
void __gifCall GIFRegHandlerMIPTBP1(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegMIPTBP1 *r = (GIFRegMIPTBP1 *)(data);
|
|
||||||
gs.ctxt_regs[i].MIPTBP1._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <u32 i>
|
|
||||||
void __gifCall GIFRegHandlerMIPTBP2(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegMIPTBP2 *r = (GIFRegMIPTBP2 *)(data);
|
|
||||||
gs.ctxt_regs[i].MIPTBP2._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerTEXA(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegTEXA *r = (GIFRegTEXA *)(data);
|
|
||||||
gs.regs.TEXA._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerFOGCOL(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegFOGCOL *r = (GIFRegFOGCOL *)(data);
|
|
||||||
gs.regs.FOGCOL._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerTEXFLUSH(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegTEXFLUSH *r = (GIFRegTEXFLUSH *)(data);
|
|
||||||
gs.regs.TEXFLUSH._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <u32 i>
|
|
||||||
void __gifCall GIFRegHandlerSCISSOR(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegSCISSOR *r = (GIFRegSCISSOR *)(data);
|
|
||||||
gs.ctxt_regs[i].SCISSOR._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <u32 i>
|
|
||||||
void __gifCall GIFRegHandlerALPHA(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegALPHA *r = (GIFRegALPHA *)(data);
|
|
||||||
gs.ctxt_regs[i].ALPHA._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerDIMX(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegDIMX *r = (GIFRegDIMX *)(data);
|
|
||||||
gs.regs.DIMX._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerDTHE(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegDTHE *r = (GIFRegDTHE *)(data);
|
|
||||||
gs.regs.DTHE._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerCOLCLAMP(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegCOLCLAMP *r = (GIFRegCOLCLAMP *)(data);
|
|
||||||
gs.regs.COLCLAMP._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <u32 i>
|
|
||||||
void __gifCall GIFRegHandlerTEST(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegTEST *r = (GIFRegTEST *)(data);
|
|
||||||
gs.ctxt_regs[i].TEST._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerPABE(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegPABE *r = (GIFRegPABE *)(data);
|
|
||||||
gs.regs.PABE._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <u32 i>
|
|
||||||
void __gifCall GIFRegHandlerFBA(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegFBA *r = (GIFRegFBA *)(data);
|
|
||||||
gs.ctxt_regs[i].FBA._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <u32 i>
|
|
||||||
void __gifCall GIFRegHandlerFRAME(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegFRAME *r = (GIFRegFRAME *)(data);
|
|
||||||
gs.ctxt_regs[i].FRAME._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <u32 i>
|
|
||||||
void __gifCall GIFRegHandlerZBUF(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegZBUF *r = (GIFRegZBUF *)(data);
|
|
||||||
gs.ctxt_regs[i].ZBUF._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerBITBLTBUF(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegBITBLTBUF *r = (GIFRegBITBLTBUF *)(data);
|
|
||||||
gs.regs.BITBLTBUF._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerTRXPOS(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegTRXPOS *r = (GIFRegTRXPOS *)(data);
|
|
||||||
gs.regs.TRXPOS._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerTRXREG(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegTRXREG *r = (GIFRegTRXREG *)(data);
|
|
||||||
gs.regs.TRXREG._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerTRXDIR(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegTRXDIR *r = (GIFRegTRXDIR *)(data);
|
|
||||||
gs.regs.TRXDIR._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerHWREG(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegHWREG *r = (GIFRegHWREG *)(data);
|
|
||||||
gs.regs.HWREG._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerSIGNAL(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegSIGNAL *r = (GIFRegSIGNAL *)(data);
|
|
||||||
gs.regs.SIGNAL._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerFINISH(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegFINISH *r = (GIFRegFINISH *)(data);
|
|
||||||
gs.regs.FINISH._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __gifCall GIFRegHandlerLABEL(const u32 *data)
|
|
||||||
{
|
|
||||||
GIFRegLABEL *r = (GIFRegLABEL *)(data);
|
|
||||||
gs.regs.LABEL._u64 = r->_u64;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void SetMultithreaded()
|
|
||||||
{
|
|
||||||
// Some older versions of PCSX2 didn't properly set the irq callback to NULL
|
|
||||||
// in multithreaded mode (possibly because ZeroGS itself would assert in such
|
|
||||||
// cases), and didn't bind them to a dummy callback either. PCSX2 handles all
|
|
||||||
// IRQs internally when multithreaded anyway -- so let's ignore them here:
|
|
||||||
|
|
||||||
if (gs.MultiThreaded) {
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_SIGNAL] = &GIFRegHandlerNull;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_FINISH] = &GIFRegHandlerNull;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_LABEL] = &GIFRegHandlerNull;
|
|
||||||
} else {
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_SIGNAL] = &GIFRegHandlerSIGNAL;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_FINISH] = &GIFRegHandlerFINISH;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_LABEL] = &GIFRegHandlerLABEL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ResetRegs()
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 16; i++) {
|
|
||||||
GIFPackedRegHandlers[i] = &GIFPackedRegHandlerNull;
|
|
||||||
}
|
|
||||||
|
|
||||||
GIFPackedRegHandlers[GIF_REG_PRIM] = &GIFPackedRegHandlerPRIM;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_RGBA] = &GIFPackedRegHandlerRGBA;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_STQ] = &GIFPackedRegHandlerSTQ;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_UV] = &GIFPackedRegHandlerUV;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_XYZF2] = &GIFPackedRegHandlerXYZF2;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_XYZ2] = &GIFPackedRegHandlerXYZ2;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_TEX0_1] = &GIFPackedRegHandlerTEX0<0>;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_TEX0_2] = &GIFPackedRegHandlerTEX0<1>;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_CLAMP_1] = &GIFPackedRegHandlerCLAMP<0>;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_CLAMP_2] = &GIFPackedRegHandlerCLAMP<1>;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_FOG] = &GIFPackedRegHandlerFOG;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_XYZF3] = &GIFPackedRegHandlerXYZF3;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_XYZ3] = &GIFPackedRegHandlerXYZ3;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_A_D] = &GIFPackedRegHandlerA_D;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_NOP] = &GIFPackedRegHandlerNOP;
|
|
||||||
|
|
||||||
for (int i = 0; i < 256; i++) {
|
|
||||||
GIFRegHandlers[i] = &GIFRegHandlerNull;
|
|
||||||
}
|
|
||||||
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_PRIM] = &GIFRegHandlerPRIM;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_RGBAQ] = &GIFRegHandlerRGBAQ;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_ST] = &GIFRegHandlerST;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_UV] = &GIFRegHandlerUV;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_XYZF2] = &GIFRegHandlerXYZF2;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_XYZ2] = &GIFRegHandlerXYZ2;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_TEX0_1] = &GIFRegHandlerTEX0<0>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_TEX0_2] = &GIFRegHandlerTEX0<1>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_CLAMP_1] = &GIFRegHandlerCLAMP<0>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_CLAMP_2] = &GIFRegHandlerCLAMP<1>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_FOG] = &GIFRegHandlerFOG;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_XYZF3] = &GIFRegHandlerXYZF3;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_XYZ3] = &GIFRegHandlerXYZ3;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_NOP] = &GIFRegHandlerNOP;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_TEX1_1] = &GIFRegHandlerTEX1<0>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_TEX1_2] = &GIFRegHandlerTEX1<1>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_TEX2_1] = &GIFRegHandlerTEX2<0>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_TEX2_2] = &GIFRegHandlerTEX2<1>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_XYOFFSET_1] = &GIFRegHandlerXYOFFSET<0>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_XYOFFSET_2] = &GIFRegHandlerXYOFFSET<1>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_PRMODECONT] = &GIFRegHandlerPRMODECONT;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_PRMODE] = &GIFRegHandlerPRMODE;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_TEXCLUT] = &GIFRegHandlerTEXCLUT;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_SCANMSK] = &GIFRegHandlerSCANMSK;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_MIPTBP1_1] = &GIFRegHandlerMIPTBP1<0>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_MIPTBP1_2] = &GIFRegHandlerMIPTBP1<1>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_MIPTBP2_1] = &GIFRegHandlerMIPTBP2<0>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_MIPTBP2_2] = &GIFRegHandlerMIPTBP2<1>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_TEXA] = &GIFRegHandlerTEXA;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_FOGCOL] = &GIFRegHandlerFOGCOL;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_TEXFLUSH] = &GIFRegHandlerTEXFLUSH;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_SCISSOR_1] = &GIFRegHandlerSCISSOR<0>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_SCISSOR_2] = &GIFRegHandlerSCISSOR<1>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_ALPHA_1] = &GIFRegHandlerALPHA<0>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_ALPHA_2] = &GIFRegHandlerALPHA<1>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_DIMX] = &GIFRegHandlerDIMX;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_DTHE] = &GIFRegHandlerDTHE;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_COLCLAMP] = &GIFRegHandlerCOLCLAMP;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_TEST_1] = &GIFRegHandlerTEST<0>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_TEST_2] = &GIFRegHandlerTEST<1>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_PABE] = &GIFRegHandlerPABE;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_FBA_1] = &GIFRegHandlerFBA<0>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_FBA_2] = &GIFRegHandlerFBA<1>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_FRAME_1] = &GIFRegHandlerFRAME<0>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_FRAME_2] = &GIFRegHandlerFRAME<1>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_ZBUF_1] = &GIFRegHandlerZBUF<0>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_ZBUF_2] = &GIFRegHandlerZBUF<1>;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_BITBLTBUF] = &GIFRegHandlerBITBLTBUF;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_TRXPOS] = &GIFRegHandlerTRXPOS;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_TRXREG] = &GIFRegHandlerTRXREG;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_TRXDIR] = &GIFRegHandlerTRXDIR;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_HWREG] = &GIFRegHandlerHWREG;
|
|
||||||
SetMultithreaded();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetFrameSkip(bool skip)
|
|
||||||
{
|
|
||||||
if (skip) {
|
|
||||||
GIFPackedRegHandlers[GIF_REG_PRIM] = &GIFPackedRegHandlerNOP;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_RGBA] = &GIFPackedRegHandlerNOP;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_STQ] = &GIFPackedRegHandlerNOP;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_UV] = &GIFPackedRegHandlerNOP;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_XYZF2] = &GIFPackedRegHandlerNOP;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_XYZ2] = &GIFPackedRegHandlerNOP;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_CLAMP_1] = &GIFPackedRegHandlerNOP;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_CLAMP_2] = &GIFPackedRegHandlerNOP;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_FOG] = &GIFPackedRegHandlerNOP;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_XYZF3] = &GIFPackedRegHandlerNOP;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_XYZ3] = &GIFPackedRegHandlerNOP;
|
|
||||||
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_PRIM] = &GIFRegHandlerNOP;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_RGBAQ] = &GIFRegHandlerNOP;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_ST] = &GIFRegHandlerNOP;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_UV] = &GIFRegHandlerNOP;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_XYZF2] = &GIFRegHandlerNOP;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_XYZ2] = &GIFRegHandlerNOP;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_XYZF3] = &GIFRegHandlerNOP;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_XYZ3] = &GIFRegHandlerNOP;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_PRMODECONT] = &GIFRegHandlerNOP;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_PRMODE] = &GIFRegHandlerNOP;
|
|
||||||
} else {
|
|
||||||
GIFPackedRegHandlers[GIF_REG_PRIM] = &GIFPackedRegHandlerPRIM;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_RGBA] = &GIFPackedRegHandlerRGBA;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_STQ] = &GIFPackedRegHandlerSTQ;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_UV] = &GIFPackedRegHandlerUV;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_XYZF2] = &GIFPackedRegHandlerXYZF2;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_XYZ2] = &GIFPackedRegHandlerXYZ2;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_CLAMP_1] = &GIFPackedRegHandlerCLAMP<0>;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_CLAMP_2] = &GIFPackedRegHandlerCLAMP<1>;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_FOG] = &GIFPackedRegHandlerFOG;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_XYZF3] = &GIFPackedRegHandlerXYZF3;
|
|
||||||
GIFPackedRegHandlers[GIF_REG_XYZ3] = &GIFPackedRegHandlerXYZ3;
|
|
||||||
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_PRIM] = &GIFRegHandlerPRIM;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_RGBAQ] = &GIFRegHandlerRGBAQ;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_ST] = &GIFRegHandlerST;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_UV] = &GIFRegHandlerUV;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_XYZF2] = &GIFRegHandlerXYZF2;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_XYZ2] = &GIFRegHandlerXYZ2;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_XYZF3] = &GIFRegHandlerXYZF3;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_XYZ3] = &GIFRegHandlerXYZ3;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_PRMODECONT] = &GIFRegHandlerPRMODECONT;
|
|
||||||
GIFRegHandlers[GIF_A_D_REG_PRMODE] = &GIFRegHandlerPRMODE;
|
|
||||||
}
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,67 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2002-2010 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#include "../GS.h"
|
|
||||||
|
|
||||||
extern HINSTANCE hInst;
|
|
||||||
void SaveConfig()
|
|
||||||
{
|
|
||||||
|
|
||||||
Config *Conf1 = &conf;
|
|
||||||
char *szTemp;
|
|
||||||
char szIniFile[256], szValue[256];
|
|
||||||
|
|
||||||
GetModuleFileName(GetModuleHandle((LPCSTR)hInst), szIniFile, 256);
|
|
||||||
szTemp = strrchr(szIniFile, '\\');
|
|
||||||
|
|
||||||
if (!szTemp)
|
|
||||||
return;
|
|
||||||
strcpy(szTemp, "\\inis\\gsnull.ini");
|
|
||||||
sprintf(szValue, "%u", Conf1->Log);
|
|
||||||
WritePrivateProfileString("Interface", "Logging", szValue, szIniFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LoadConfig()
|
|
||||||
{
|
|
||||||
FILE *fp;
|
|
||||||
|
|
||||||
|
|
||||||
Config *Conf1 = &conf;
|
|
||||||
char *szTemp;
|
|
||||||
char szIniFile[256], szValue[256];
|
|
||||||
|
|
||||||
GetModuleFileName(GetModuleHandle((LPCSTR)hInst), szIniFile, 256);
|
|
||||||
szTemp = strrchr(szIniFile, '\\');
|
|
||||||
|
|
||||||
if (!szTemp)
|
|
||||||
return;
|
|
||||||
strcpy(szTemp, "\\inis\\gsnull.ini");
|
|
||||||
fp = fopen("inis\\gsnull.ini", "rt"); //check if gsnull.ini really exists
|
|
||||||
|
|
||||||
if (!fp) {
|
|
||||||
CreateDirectory("inis", NULL);
|
|
||||||
memset(&conf, 0, sizeof(conf));
|
|
||||||
conf.Log = 0; //default value
|
|
||||||
SaveConfig(); //save and return
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(fp);
|
|
||||||
GetPrivateProfileString("Interface", "Logging", NULL, szValue, 20, szIniFile);
|
|
||||||
Conf1->Log = strtoul(szValue, NULL, 10);
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -1,40 +0,0 @@
|
||||||
; GS.def : Declares the module parameters for the DLL.
|
|
||||||
|
|
||||||
;LIBRARY "GSnull"
|
|
||||||
|
|
||||||
EXPORTS
|
|
||||||
; Explicit exports can go here
|
|
||||||
PS2EgetLibType @2
|
|
||||||
PS2EgetLibName @3
|
|
||||||
PS2EgetLibVersion2 @4
|
|
||||||
GSinit @5
|
|
||||||
GSopen @6
|
|
||||||
GSclose @7
|
|
||||||
GSshutdown @8
|
|
||||||
GSvsync @9
|
|
||||||
GSgifTransfer @10
|
|
||||||
GSgifTransfer1 @11
|
|
||||||
GSgifTransfer2 @12
|
|
||||||
GSgifTransfer3 @13
|
|
||||||
GSgetLastTag @14
|
|
||||||
GSgifSoftReset @15
|
|
||||||
GSreadFIFO @16
|
|
||||||
GSreadFIFO2 @17
|
|
||||||
GSkeyEvent @18
|
|
||||||
GSchangeSaveState @19
|
|
||||||
GSmakeSnapshot @20
|
|
||||||
GSmakeSnapshot2 @21
|
|
||||||
GSirqCallback @22
|
|
||||||
GSsetBaseMem @24
|
|
||||||
GSsetGameCRC @25
|
|
||||||
GSsetFrameSkip @26
|
|
||||||
GSsetupRecording @27
|
|
||||||
GSreset @28
|
|
||||||
GSwriteCSR @29
|
|
||||||
GSgetDriverInfo @30
|
|
||||||
GSfreeze @32
|
|
||||||
GSconfigure @33
|
|
||||||
GSabout @34
|
|
||||||
GStest @35
|
|
||||||
|
|
||||||
|
|
|
@ -1,116 +0,0 @@
|
||||||
// Microsoft Visual C++ generated resource script.
|
|
||||||
//
|
|
||||||
#include "resource.h"
|
|
||||||
|
|
||||||
#define APSTUDIO_READONLY_SYMBOLS
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Generated from the TEXTINCLUDE 2 resource.
|
|
||||||
//
|
|
||||||
#include "afxresmw.h"
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
#undef APSTUDIO_READONLY_SYMBOLS
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Spanish (Argentina) resources
|
|
||||||
|
|
||||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESS)
|
|
||||||
#ifdef _WIN32
|
|
||||||
LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_ARGENTINA
|
|
||||||
#pragma code_page(1252)
|
|
||||||
#endif //_WIN32
|
|
||||||
|
|
||||||
#ifdef APSTUDIO_INVOKED
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// TEXTINCLUDE
|
|
||||||
//
|
|
||||||
|
|
||||||
1 TEXTINCLUDE
|
|
||||||
BEGIN
|
|
||||||
"resource.h\0"
|
|
||||||
END
|
|
||||||
|
|
||||||
2 TEXTINCLUDE
|
|
||||||
BEGIN
|
|
||||||
"#include ""afxresmw.h""\r\0"
|
|
||||||
END
|
|
||||||
|
|
||||||
3 TEXTINCLUDE
|
|
||||||
BEGIN
|
|
||||||
"\r\0"
|
|
||||||
END
|
|
||||||
|
|
||||||
#endif // APSTUDIO_INVOKED
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Dialog
|
|
||||||
//
|
|
||||||
|
|
||||||
IDD_CONFIG DIALOGEX 0, 0, 212, 121
|
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
|
||||||
CAPTION "GSNull Configuration"
|
|
||||||
FONT 8, "MS Sans Serif", 0, 0, 0x0
|
|
||||||
BEGIN
|
|
||||||
DEFPUSHBUTTON "OK",IDOK,48,100,50,14
|
|
||||||
PUSHBUTTON "Cancel",IDCANCEL,113,100,50,14
|
|
||||||
CONTROL "Enable Logging (for develop use only)",IDC_LOGGING,
|
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,187,13
|
|
||||||
END
|
|
||||||
|
|
||||||
IDD_ABOUT DIALOGEX 0, 0, 177, 106
|
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
|
||||||
CAPTION "GSNull About"
|
|
||||||
FONT 8, "MS Sans Serif", 0, 0, 0x0
|
|
||||||
BEGIN
|
|
||||||
DEFPUSHBUTTON "OK",IDOK,65,85,50,14
|
|
||||||
LTEXT "GS Driver",IDC_NAME,70,10,48,8
|
|
||||||
GROUPBOX "",IDC_STATIC,5,35,170,40
|
|
||||||
LTEXT "Author: Shadow and linuzappz",IDC_STATIC,29,19,141,10
|
|
||||||
END
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// DESIGNINFO
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifdef APSTUDIO_INVOKED
|
|
||||||
GUIDELINES DESIGNINFO
|
|
||||||
BEGIN
|
|
||||||
IDD_CONFIG, DIALOG
|
|
||||||
BEGIN
|
|
||||||
LEFTMARGIN, 7
|
|
||||||
RIGHTMARGIN, 205
|
|
||||||
TOPMARGIN, 7
|
|
||||||
BOTTOMMARGIN, 114
|
|
||||||
END
|
|
||||||
|
|
||||||
IDD_ABOUT, DIALOG
|
|
||||||
BEGIN
|
|
||||||
LEFTMARGIN, 7
|
|
||||||
RIGHTMARGIN, 170
|
|
||||||
TOPMARGIN, 7
|
|
||||||
BOTTOMMARGIN, 99
|
|
||||||
END
|
|
||||||
END
|
|
||||||
#endif // APSTUDIO_INVOKED
|
|
||||||
|
|
||||||
#endif // Spanish (Argentina) resources
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef APSTUDIO_INVOKED
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Generated from the TEXTINCLUDE 3 resource.
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
#endif // not APSTUDIO_INVOKED
|
|
||||||
|
|
|
@ -1,107 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Debug|Win32">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectName>GSnull</ProjectName>
|
|
||||||
<ProjectGuid>{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}</ProjectGuid>
|
|
||||||
<RootNamespace>GSnull</RootNamespace>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="..\..\..\common\vsprops\plugin_svnroot.props" />
|
|
||||||
<Import Project="ProjectRootDir.props" />
|
|
||||||
<Import Project="..\..\..\common\vsprops\BaseProperties.props" />
|
|
||||||
<Import Project="..\..\..\common\vsprops\CodeGen_Release.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="..\..\..\common\vsprops\plugin_svnroot.props" />
|
|
||||||
<Import Project="ProjectRootDir.props" />
|
|
||||||
<Import Project="..\..\..\common\vsprops\BaseProperties.props" />
|
|
||||||
<Import Project="..\..\..\common\vsprops\IncrementalLinking.props" />
|
|
||||||
<Import Project="..\..\..\common\vsprops\CodeGen_Debug.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
|
||||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)-dbg</TargetName>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
|
||||||
<ModuleDefinitionFile>GS.def</ModuleDefinitionFile>
|
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<ModuleDefinitionFile>GS.def</ModuleDefinitionFile>
|
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="Config.cpp" />
|
|
||||||
<ClCompile Include="..\GifTransfer.cpp" />
|
|
||||||
<ClCompile Include="..\GS.cpp" />
|
|
||||||
<ClCompile Include="..\GSLog.cpp" />
|
|
||||||
<ClCompile Include="..\Registers.cpp" />
|
|
||||||
<ClCompile Include="..\Linux\GSLinux.cpp">
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\null\GSnull.cpp" />
|
|
||||||
<ClCompile Include="GSwin.cpp" />
|
|
||||||
<ClCompile Include="Win32.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="..\GifTransfer.h" />
|
|
||||||
<ClInclude Include="..\GS.h" />
|
|
||||||
<CustomBuildStep Include="..\Linux\GSLinux.h">
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
|
||||||
</CustomBuildStep>
|
|
||||||
<ClInclude Include="..\null\GSnull.h" />
|
|
||||||
<ClInclude Include="GSwin.h" />
|
|
||||||
<ClInclude Include="resource.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="GS.def" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ResourceCompile Include="GS.rc" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
|
@ -1,78 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<Filter Include="Source Files">
|
|
||||||
<UniqueIdentifier>{c3be7c7d-acc0-4d04-87e2-d8c905f5623d}</UniqueIdentifier>
|
|
||||||
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Header Files">
|
|
||||||
<UniqueIdentifier>{d049a6c7-ffed-4403-8697-c32b110473ec}</UniqueIdentifier>
|
|
||||||
<Extensions>h;hpp;hxx;hm;inl;inc</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Resource Files">
|
|
||||||
<UniqueIdentifier>{43d885bc-a996-4dc7-935e-c5511250143e}</UniqueIdentifier>
|
|
||||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
|
|
||||||
</Filter>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="Config.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\GifTransfer.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\GS.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\GSLog.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\Linux\GSLinux.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\null\GSnull.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="GSwin.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="Win32.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\Registers.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="..\GifTransfer.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\GS.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\null\GSnull.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="GSwin.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="resource.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="GS.def">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</None>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ResourceCompile Include="GS.rc">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</ResourceCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<CustomBuildStep Include="..\Linux\GSLinux.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</CustomBuildStep>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
|
@ -1,20 +0,0 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
|
||||||
# Visual C++ Express 2008
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GSnull", "GSnull_vc2008.vcproj", "{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}"
|
|
||||||
EndProject
|
|
||||||
Global
|
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
|
||||||
Debug|Win32 = Debug|Win32
|
|
||||||
Release|Win32 = Release|Win32
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
|
||||||
{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
|
||||||
HideSolutionNode = FALSE
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
|
|
@ -1,69 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2002-2010 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "../GS.h"
|
|
||||||
|
|
||||||
HINSTANCE HInst;
|
|
||||||
HWND GShwnd = NULL;
|
|
||||||
|
|
||||||
LRESULT CALLBACK MsgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|
||||||
{
|
|
||||||
switch (msg) {
|
|
||||||
case WM_CLOSE:
|
|
||||||
DestroyWindow(hwnd);
|
|
||||||
break;
|
|
||||||
case WM_DESTROY:
|
|
||||||
PostQuitMessage(0);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return DefWindowProc(hwnd, msg, wParam, lParam);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int GSOpenWindow(void *pDsp, const char *Title)
|
|
||||||
{
|
|
||||||
WNDCLASSEX wc = {sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
|
|
||||||
GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
|
|
||||||
"PS2EMU_GSNULL", NULL};
|
|
||||||
RegisterClassEx(&wc);
|
|
||||||
|
|
||||||
GShwnd = CreateWindowEx(WS_EX_CLIENTEDGE, "PS2EMU_GSNULL", Title,
|
|
||||||
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, wc.hInstance, NULL);
|
|
||||||
|
|
||||||
if (GShwnd == NULL) {
|
|
||||||
GSLog::WriteLn("Failed to create window. Exiting...");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pDsp != NULL)
|
|
||||||
*(uptr *)pDsp = (uptr)GShwnd;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSCloseWindow()
|
|
||||||
{
|
|
||||||
DestroyWindow(GShwnd);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSProcessMessages()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// GSkeyEvent gets called when there is a keyEvent from the PAD plugin
|
|
||||||
void HandleKeyEvent(keyEvent *ev)
|
|
||||||
{
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2002-2010 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <windows.h>
|
|
||||||
#include <windowsx.h>
|
|
||||||
|
|
||||||
extern int GSOpenWindow(void *pDsp, const char *Title);
|
|
||||||
extern void GSCloseWindow();
|
|
||||||
extern void GSProcessMessages();
|
|
||||||
extern void HandleKeyEvent(keyEvent *ev);
|
|
|
@ -1,15 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup Label="UserMacros">
|
|
||||||
<SvnRootDir>$(ProjectRootDir)\..\..</SvnRootDir>
|
|
||||||
<SvnCommonDir>$(SvnRootDir)\common</SvnCommonDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<BuildMacro Include="SvnRootDir">
|
|
||||||
<Value>$(SvnRootDir)</Value>
|
|
||||||
</BuildMacro>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
|
@ -1,106 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2002-2010 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <windows.h>
|
|
||||||
#include <windowsx.h>
|
|
||||||
|
|
||||||
|
|
||||||
#include "resource.h"
|
|
||||||
#include "../GS.h"
|
|
||||||
|
|
||||||
HINSTANCE hInst;
|
|
||||||
extern HWND GShwnd;
|
|
||||||
|
|
||||||
void SysMessage(char *fmt, ...)
|
|
||||||
{
|
|
||||||
va_list list;
|
|
||||||
char tmp[512];
|
|
||||||
|
|
||||||
va_start(list, fmt);
|
|
||||||
vsprintf(tmp, fmt, list);
|
|
||||||
va_end(list);
|
|
||||||
MessageBox((GShwnd != NULL) ? GShwnd : GetActiveWindow(), tmp, "GS Plugin Msg", 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL CALLBACK ConfigureDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
||||||
{
|
|
||||||
|
|
||||||
switch (uMsg) {
|
|
||||||
case WM_INITDIALOG:
|
|
||||||
LoadConfig();
|
|
||||||
if (conf.Log)
|
|
||||||
CheckDlgButton(hW, IDC_LOGGING, TRUE);
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
case WM_COMMAND:
|
|
||||||
switch (LOWORD(wParam)) {
|
|
||||||
case IDCANCEL:
|
|
||||||
EndDialog(hW, TRUE);
|
|
||||||
return TRUE;
|
|
||||||
case IDOK:
|
|
||||||
if (IsDlgButtonChecked(hW, IDC_LOGGING))
|
|
||||||
conf.Log = 1;
|
|
||||||
else
|
|
||||||
conf.Log = 0;
|
|
||||||
SaveConfig();
|
|
||||||
EndDialog(hW, FALSE);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL CALLBACK AboutDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
||||||
{
|
|
||||||
switch (uMsg) {
|
|
||||||
case WM_INITDIALOG:
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
case WM_COMMAND:
|
|
||||||
switch (LOWORD(wParam)) {
|
|
||||||
case IDOK:
|
|
||||||
EndDialog(hW, FALSE);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSconfigure()
|
|
||||||
{
|
|
||||||
DialogBox(hInst,
|
|
||||||
MAKEINTRESOURCE(IDD_CONFIG),
|
|
||||||
GetActiveWindow(),
|
|
||||||
(DLGPROC)ConfigureDlgProc);
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_C_(void)
|
|
||||||
GSabout()
|
|
||||||
{
|
|
||||||
DialogBox(hInst,
|
|
||||||
MAKEINTRESOURCE(IDD_ABOUT),
|
|
||||||
GetActiveWindow(),
|
|
||||||
(DLGPROC)AboutDlgProc);
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL APIENTRY DllMain(HANDLE hModule, // DLL INIT
|
|
||||||
DWORD dwReason,
|
|
||||||
LPVOID lpReserved)
|
|
||||||
{
|
|
||||||
hInst = (HINSTANCE)hModule;
|
|
||||||
return TRUE; // very quick :)
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
//{{NO_DEPENDENCIES}}
|
|
||||||
// Microsoft Visual C++ generated include file.
|
|
||||||
// Used by GS.rc
|
|
||||||
//
|
|
||||||
#define IDD_CONFDLG 101
|
|
||||||
#define IDD_CONFIG 101
|
|
||||||
#define IDD_ABOUT 103
|
|
||||||
#define IDC_NAME 1000
|
|
||||||
#define IDC_CHECK1 1007
|
|
||||||
#define IDC_LOGGING 1007
|
|
||||||
|
|
||||||
// Next default values for new objects
|
|
||||||
//
|
|
||||||
#ifdef APSTUDIO_INVOKED
|
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 105
|
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1008
|
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
|
||||||
#endif
|
|
||||||
#endif
|
|
|
@ -1,36 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2002-2010 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "../GS.h"
|
|
||||||
|
|
||||||
void OnKeyboardF5(int myShift)
|
|
||||||
{
|
|
||||||
GSLog::WriteLn("F5 pressed!");
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnKeyboardF6(int myShift)
|
|
||||||
{
|
|
||||||
GSLog::WriteLn("F6 pressed!");
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnKeyboardF7(int myShift)
|
|
||||||
{
|
|
||||||
GSLog::WriteLn("F7 pressed!");
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnKeyboardF9(int myShift)
|
|
||||||
{
|
|
||||||
GSLog::WriteLn("F9 pressed!");
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
/* GSnull
|
|
||||||
* Copyright (C) 2002-2010 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
extern void OnKeyboardF5(int myShift);
|
|
||||||
extern void OnKeyboardF6(int myShift);
|
|
||||||
extern void OnKeyboardF7(int myShift);
|
|
||||||
extern void OnKeyboardF9(int myShift);
|
|
Loading…
Reference in New Issue