pcsxr/libpcsxcore/psemu_plugin_defs.h

287 lines
7.4 KiB
C

#ifndef _PSEMU_PLUGIN_DEFS_H
#define _PSEMU_PLUGIN_DEFS_H
#ifdef __cplusplus
extern "C" {
#endif
// header version
#define _PPDK_HEADER_VERSION 3
#define PLUGIN_VERSION 1
// plugin type returned by PSEgetLibType (types can be merged if plugin is multi type!)
#define PSE_LT_CDR 1
#define PSE_LT_GPU 2
#define PSE_LT_SPU 4
#define PSE_LT_PAD 8
#define PSE_LT_NET 16
#define PSE_LT_SIO1 32
// DLL function return codes
#define PSE_ERR_SUCCESS 0 // every function in DLL if completed sucessfully should return this value
#define PSE_ERR_FATAL -1 // undefined error but fatal one, that kills all functionality
// XXX_Init return values
// Those return values apply to all libraries
// currently obsolete - preserved for compatibilty
#define PSE_INIT_ERR_SUCCESS 0 // initialization went OK
#define PSE_INIT_ERR_NOTCONFIGURED -2 // this driver is not configured
#define PSE_INIT_ERR_NOHARDWARE -3 // this driver can not operate properly on this hardware or hardware is not detected
/* GPU PlugIn */
// GPU_Test return values
// sucess, everything configured, and went OK.
#define PSE_GPU_ERR_SUCCESS 0
// ERRORS
// this error might be returned as critical error but none of below
#define PSE_GPU_ERR -20
// this driver is not configured
#define PSE_GPU_ERR_NOTCONFIGURED PSE_GPU_ERR - 1
// this driver failed Init
#define PSE_GPU_ERR_INIT PSE_GPU_ERR - 2
// WARNINGS
// this warning might be returned as undefined warning but allowing driver to continue
#define PSE_GPU_WARN 20
// GPU_Query - will be implemented soon
typedef struct
{
uint32_t flags;
uint32_t status;
void* window;
unsigned char reserved[100];
} gpuQueryS;
// gpuQueryS.flags
// if driver can operate in both modes it must support GPU_changeMode();
#define PSE_GPU_FLAGS_FULLSCREEN 1 // this driver can operate in fullscreen mode
#define PSE_GPU_FLAGS_WINDOWED 2 // this driver can operate in windowed mode
// gpuQueryS.status
#define PSE_GPU_STATUS_WINDOWWRONG 1 // this driver cannot operate in this windowed mode
// GPU_Query End - will be implemented in v2
/* CDR PlugIn */
// CDR_Test return values
// sucess, everything configured, and went OK.
#define PSE_CDR_ERR_SUCCESS 0
// general failure (error undefined)
#define PSE_CDR_ERR_FAILURE -1
// ERRORS
#define PSE_CDR_ERR -40
// this driver is not configured
#define PSE_CDR_ERR_NOTCONFIGURED PSE_CDR_ERR - 0
// if this driver is unable to read data from medium
#define PSE_CDR_ERR_NOREAD PSE_CDR_ERR - 1
// WARNINGS
#define PSE_CDR_WARN 40
// if this driver emulates lame mode ie. can read only 2048 tracks and sector header is emulated
// this might happen to CDROMS that do not support RAW mode reading - surelly it will kill many games
#define PSE_CDR_WARN_LAMECD PSE_CDR_WARN + 0
/* SPU PlugIn */
// some info retricted (now!)
// sucess, everything configured, and went OK.
#define PSE_SPU_ERR_SUCCESS 0
// ERRORS
// this error might be returned as critical error but none of below
#define PSE_SPU_ERR -60
// this driver is not configured
#define PSE_SPU_ERR_NOTCONFIGURED PSE_SPU_ERR - 1
// this driver failed Init
#define PSE_SPU_ERR_INIT PSE_SPU_ERR - 2
// WARNINGS
// this warning might be returned as undefined warning but allowing driver to continue
#define PSE_SPU_WARN 60
/* PAD PlugIn */
/*
functions that must be exported from PAD Plugin
long PADinit(long flags); // called only once when PSEmu Starts
void PADshutdown(void); // called when PSEmu exits
long PADopen(PadInitS *); // called when PSEmu is running program
long PADclose(void);
long PADconfigure(void);
void PADabout(void);
long PADtest(void); // called from Configure Dialog and after PADopen();
long PADquery(void);
unsigned char PADstartPoll(int);
unsigned char PADpoll(unsigned char);
*/
// PADquery responses (notice - values ORed)
// PSEmu will use them also in PADinit to tell Plugin which Ports will use
// notice that PSEmu will call PADinit and PADopen only once when they are from
// same plugin
// might be used in port 1
#define PSE_PAD_USE_PORT1 1
// might be used in port 2
#define PSE_PAD_USE_PORT2 2
// MOUSE SCPH-1030
#define PSE_PAD_TYPE_MOUSE 1
// NEGCON - 16 button analog controller SLPH-00001
#define PSE_PAD_TYPE_NEGCON 2
// GUN CONTROLLER - gun controller SLPH-00014 from Konami
#define PSE_PAD_TYPE_GUN 3
// STANDARD PAD SCPH-1080, SCPH-1150
#define PSE_PAD_TYPE_STANDARD 4
// ANALOG JOYSTICK SCPH-1110
#define PSE_PAD_TYPE_ANALOGJOY 5
// GUNCON - gun controller SLPH-00034 from Namco
#define PSE_PAD_TYPE_GUNCON 6
// ANALOG CONTROLLER SCPH-1150
#define PSE_PAD_TYPE_ANALOGPAD 7
// sucess, everything configured, and went OK.
#define PSE_PAD_ERR_SUCCESS 0
// general plugin failure (undefined error)
#define PSE_PAD_ERR_FAILURE -1
// ERRORS
// this error might be returned as critical error but none of below
#define PSE_PAD_ERR -80
// this driver is not configured
#define PSE_PAD_ERR_NOTCONFIGURED PSE_PAD_ERR - 1
// this driver failed Init
#define PSE_PAD_ERR_INIT PSE_PAD_ERR - 2
// WARNINGS
// this warning might be returned as undefined warning but allowing driver to continue
#define PSE_PAD_WARN 80
typedef struct
{
// controler type - fill it withe predefined values above
unsigned char controllerType;
// status of buttons - every controller fills this field
unsigned short buttonStatus;
// for analog pad fill those next 4 bytes
// values are analog in range 0-255 where 127 is center position
unsigned char rightJoyX, rightJoyY, leftJoyX, leftJoyY;
// for mouse fill those next 2 bytes
// values are in range -128 - 127
unsigned char moveX, moveY;
unsigned char reserved[91];
} PadDataS;
/* NET PlugIn v2 */
/* Added by linuzappz@pcsx.net */
/* Modes bits for NETsendData/NETrecvData */
#define PSE_NET_BLOCKING 0x00000000
#define PSE_NET_NONBLOCKING 0x00000001
/* note: unsupported fields should be zeroed.
typedef struct {
char EmuName[32];
char CdromID[9]; // ie. 'SCPH12345', no \0 trailing character
char CdromLabel[11];
void *psxMem;
GPUshowScreenPic GPU_showScreenPic;
GPUdisplayText GPU_displayText;
PADsetSensitive PAD_setSensitive;
char GPUpath[256];
char SPUpath[256];
char CDRpath[256];
char MCD1path[256];
char MCD2path[256];
char BIOSpath[256]; // 'HLE' for internal bios
char Unused[1024];
} netInfo;
*/
/*
basic funcs:
long NETopen(HWND hWnd)
opens the connection.
shall return 0 on success, else -1.
-1 is also returned if the user selects offline mode.
long NETclose()
closes the connection.
shall return 0 on success, else -1.
void NETpause()
this is called when the user paused the emulator.
void NETresume()
this is called when the user resumed the emulator.
long NETqueryPlayer()
returns player number
long NETsendPadData(void *pData, int Size)
this should be called for the first pad only on each side.
long NETrecvPadData(void *pData, int Pad)
call this for Pad 1/2 to get the data sent by the above func.
extended funcs:
long NETsendData(void *pData, int Size, int Mode)
sends Size bytes from pData to the other side.
long NETrecvData(void *pData, int Size, int Mode)
receives Size bytes from pData to the other side.
void NETsetInfo(netInfo *info);
sets the netInfo struct.
void NETkeypressed(int key) (linux only)
key is a XK_?? (X11) keycode.
*/
#ifdef __cplusplus
}
#endif
#endif // _PSEMU_PLUGIN_DEFS_H